我正在使用虚拟数据进行示例blockchain
实现。我有一个方法是createGenesisBlock()用于创建第一个块,而其他方法是Makeblock()用于区块链。代码用 python 3.6
在检索Genesis Block中创建的哈希值并存储在文本文件中时,我遇到Makeblock问题。
以下是错误消息:
parentHash=parentBlock[u'hash']
TypeError: string indices must be integers
代码段如下:
*def makeBlock(self,txns, parentBlock):
parentBlock=parentBlock.strip(parentBlock[0])
parentblocklen=len(parentBlock)
parentBlock=parentBlock.strip(parentBlock[parentblocklen-1])
parentHash=parentBlock[u'hash']
blockNumber = parentBlock[u'contents'][u'blockNumber'] + 1
blockContents = {u'blockNumber': blockNumber, u'parentHash': parentHash, u'RCount': len(txns), 'records': txns}
blockHash = hashMe(blockContents)
block = {u'hash': blockHash, u'contents': blockContents}
return block*
上面,方法makeBlock()将字符串作为第二个参数。但是从下面的字符串中获取哈希值会导致错误。
************字符串启动*********
{'hash':'af12f6148f5d328d1272e81393f199a6','contents':{'blockNumber':0,'parentHash':无,'RCount':2,'记录':[{'患者ID':( b '\ xa6 \ xe0<“\ X18 \ x18F〜-.g \ x1cX \ XF3 \ r \ 86 \ XC0 \ x04hUG \ xa7PT \ XA2 \ X85 \'?\ x06S \ xab3 \ xf4T $ I \ XCF \ X94 \ xcc \ xc8 \ x1b \ xfb \ xfe \ nTw !\ x80q \ x1ae1 \ x99 \ x9e \ xbf \ xbc ^ D \ xea \ xe9X \ x06 \ x8f \ x8es \ xb3 \ x02s Adf07 \ xdc \ XDD \ XF0 \ x17M \ XF5 \ xeep \ XBD \ XEB \ x88V \ XD6 \ 86 \ XD4 \ 9E \ XCF \ X93 \ x06p \ XC4 \ X1A \ xe8 \ r \ XC5 \ XA2 \ xd6j \ XC4 \ XFF \ xc7 \ xfb \ x81 \ xfaa_ \ xe0C \ x97#f3Zu7 \ xb2 \ x07YO \ xe3',),'保险ID':( b'\ xaa \ x1bJ \ x84z \ xe9 \ r \ x8e \`IC \ x9f \ xf9 \ X03 \ XF4 \ XF5 / \ x1ceXW \ X01 \ XF3 \ X03 \ R〜YTI \ XFF:\ XA3 \ X05 \ XCF \ x84xl \ xf9r \ x95C \ xc1f \ XE6 \ XEC \ XBC \ TZ版权所有\ xA9 \ xd0J \ XE6# \ XE6 \ XC5 \ XF8 \ XBB \ XB1 \ x05flY \ XC6 \ XA3 \ xfdy + \ xa2Eq \ XBB \ xebe \ x8dm 404T \ xe9 \ XB2 \ x85_ \ X89 \ XC4&安培;?\ XA2< \ XAC \ XBF \ XC2 \ xd8z \ XEE \ x9e \ XD2 \ XFC \ XF8 \ XA2<?(I \ X07 \ x10o \ x9f \ xf9版权所有\ xA9 \ x1bH \ XDA \ XD4 \ xd9 \ 0x7F部分\ xb4G \ XEB \ X15 \ X13 \ xbaW \ x9b \ r \ xc3',),'DOS':“'19 -09-2216'”,“索赔金额”:“'2280.00'”,“索赔ID”:“'9348'”,“提供商ID”:( b “q \ x8a!\ XFCE \ XB7 \ x8e \ xeax \ X图8a \ xc9h \ XD4 \\ x02P \ xb5j \ XDC \ XB2 \ xe5 \ XA4 \ XC6#\ XBD \ XDA \ X1E;)\ X83 \ XE7 \ X98 \ X15 \ XE2 \ XE7 \ xe4c \ XD5 \ x9e \ x99k \ x8a \ X97 \ XDD @ \ x803 \ XC0 \ xbbY3 \ XA7 \ XFE \ XEB&安培; \ X0F \ XA3 / \ X1E \ X96 \ XDF} \ X83 \ x00euX \ xd4J \ r \xd1\xd91\xb3\x89\xc9I\x94L\xf2U3L=\xb2\xa9+43\x95t^\x9a\x85\x02\xea\x16V\xac\xad\xbc"=.i\xab8?7\x1di\x83\x18\xee\x9aM\xae\x84\xf8p\x9ae\xf9\xb0\x82',), 'URL': "'www.yahoo.com'"}, {'Patient ID': (b'\xbf\xec\rk\xaa\x99\xde\t\xfe\xf7R\x0fu6\x0fz\x9e\x01\xa6\xbb\x80\xfeyh\xe7\n\xeb\x03H\x01/ \xfc\xda\x8dH\xc9\x12R\xe1.E\xc3\xb1,\x0b)\x7f\xca\xc73"\xa8\x0c{\xe4Q\x95pi\x97\xfaN\xc3^\xd3\xf1\x0buK\xe3c\x06\xd1\xfe\xa6\xdd\xafO\xfe@\x17\xe9\xe6\xd6\xe1\xb3s@{\x9fV\xba\x13\xae\xa7q\x8b\x08\x9b\xb1\xa0\x0eA\xf3M\x96\xf6\xbbhs[\xbd/Z:\x87Y\xe8\xb9\xe0\xcb\xbb\xfb\x0b\x1d@\xb0',), 'Insurance ID': (b'\x06\x11\xaa\x08\xde9\xbcd\x91\xe28\xd6J[\xf6\x1a\xbb{\xc9f\x8aa\xdd\x86\xbf\x17\xdf\xaaQiZq\x91\xbb\xf1F\x1f[n0i\xc1\x96\xf2\x9f\xf1.\xde\x11P\xb7\xcd\x0e\xab\x97\xd3W\xa6\xd0\xc0\xc7\xbe\xb7\x8a\xd2\xe9\x84\x9bM\xeb\x0e\x8f\x91\t\xd9\xecq\xad\xd8w\r\xc4\x08\x0f\xa5\x99\xc3)\xa7\x8b\xa0\xa5\xc6\xbf\xce\xfa\xe6\x9f9\x81)\xfevJ\xad\x1d\xc9%\xe0\xe1(\xd5\xd7\x19g\x1f\xe1{\x1c\x1e%\x10 \x12\xc6\x03
\ xce',),'DOS':“'10 -11-2012'”,'索赔额':“'1230.00'”,“索赔ID”:“'98009'”,'提供商ID':( b'\ x81 / O \ xddKPk6XD \ x82g \ x97 \ x80 \ x87 \ x92 \ xc5 \ xfa \ x07v \ xf9 \ xe43 \ xd9 \ x00z \ xf8 \ xe9 \ x1e3“\ xa1 \ xeb \ x039 \ xda \ t:K \ r \ n \ XDA \ xbcx \ X84 \ X95 \ XDF \ XA2 \ xe9 \ XDCU \ xd9 \ C41 \ XB7 \ XF0 \ X07 \ xf5euy \ xd3Ab \ x10teE \ XF2 \ XF2 \ X10 \ XC0 \ X1C \ X16 $ V7 \ XF1 \ x8d \ X16 \ x8a \ X14 \ X02 \ X16 \ XFF \ XE3 \ XAD \ XA3 @'\ X13 \ XD0 \ XEF \ X18 \ X83 \ x13D \ X91 \ X05> \ X13 \ x8aY \ XDB \ xfeN \ X99 \ XEF \ x9d> \ xc9 \ xf2 \ xfbMj \ xd1 \ x00E \ xd5 \ xdaYW \ x1d \ x0e \ xca \ xa0',),'URL':“''www.oracle.com'”}]}} *
************字符串结束*********
注意:惊人地在python shell上激活它。我可以将parentHash值提取到任何变量中。
parentHash = parentBlock [u'hash'](在shell上执行会成功返回哈希值:af12f6148f5d328d1272e81393f199a6)
parentHash = parentBlock [u'hash'](通过python脚本执行导致ERROR(TypeError:字符串索引必须是整数)
有人可以帮助解决问题的原因以及为什么相同的代码在python shell中工作正常但在执行时会在Method中引发错误?