Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成区块链标头失败,出现错误_Python_Blockchain - Fatal编程技术网

Python 生成区块链标头失败,出现错误

Python 生成区块链标头失败,出现错误,python,blockchain,Python,Blockchain,我一直在尝试处理一个块链头,当代码停止时出现以下错误- 回溯(最近一次调用上次):文件 “C:\Users\SHAHRIAR\AppData\Local\Programs\Python\Python37-32\lib\encodings\utf_8.py”, 第16行,在解码中 return codecs.utf_8_decode(input,errors,True)TypeError:需要类似字节的对象,而不是“str” 上述异常是以下异常的直接原因: 回溯(最近一次调用上次):文件 “f:/

我一直在尝试处理一个块链头,当代码停止时出现以下错误-

回溯(最近一次调用上次):文件 “C:\Users\SHAHRIAR\AppData\Local\Programs\Python\Python37-32\lib\encodings\utf_8.py”, 第16行,在解码中 return codecs.utf_8_decode(input,errors,True)TypeError:需要类似字节的对象,而不是“str”

上述异常是以下异常的直接原因:

回溯(最近一次调用上次):文件 “f:/PYTHON/blockchain/index.py”,第19行
struct.pack(“您必须将
解码
函数的
参数转换为
字节
。此外,struct.pack
返回
字节
编解码器。decode
返回
字符串
,因此还必须将
解码
的结果转换为字节

import hashlib
import codecs
import struct
import sys

blockChainObject = {
    'version':536871426,
    'previousHash': b'aa11661d07d7e13b94403bc00a9786b07fe711140743f0f9d7e35a478d80e840',
    'merkleRoot': b'a41494afe694e450a7163103fd08ea3d4b5fcb30556165f6e567893989c39222',
    'bits': 0x19030d6c,
    'time':1610982871,
    'nonce':3341292488
}


blockChainHeader = (
    struct.pack('<L', blockChainObject['version']) +
    bytes(codecs.decode(blockChainObject['previousHash'])[::-1], 'utf-8') +
    bytes(codecs.decode(blockChainObject['merkleRoot'])[::-1], 'utf-8') +
    struct.pack('<L', blockChainObject['time']) +
    struct.pack('<L', blockChainObject['bits']) +
    struct.pack('<L', blockChainObject['nonce'])
)

blockChainHashObject = hashlib.sha256(blockChainHeader).digest()
blockChainHashDigest = hashlib.sha256(blockChainHashObject).hexdigest()

print(blockChainHashDigest)
导入hashlib
导入编解码器
导入结构
导入系统
区块链对象={
“版本”:536871426,
“previousHash”:b'aa11661d07d7e13b94403bc00a9786b07fe711140743f0f9d7e35a478d80e840',
“merkleRoot”:b'A41494AFE694E450A7163103FD08EA3D4B5FCB30556165F6E56783989C39222',
“位”:0x19030d6c,
“时间”:1610982871,
“暂时”:3341292488
}
区块链头=(

struct.pack(“'我在征求专家的意见,我做错了什么?”-使用区块链?我运行了这段代码,得到了相同的错误消息,但有3行:
codecs.decode(区块链对象['previousHash'])[::-1]+
。尝试将
'previousHash':'aa11…',
更改为
'previousHash':b'aa11…,
@RoyCohen谢谢你的建议。我将其更改为Byte(在数字前面添加一个“b”),但现在它说的是“TypeError:无法将str转换为bytes”谢谢你!!!!它工作得很有魅力。
import hashlib
import codecs
import struct
import sys

blockChainObject = {
    'version':536871426,
    'previousHash': b'aa11661d07d7e13b94403bc00a9786b07fe711140743f0f9d7e35a478d80e840',
    'merkleRoot': b'a41494afe694e450a7163103fd08ea3d4b5fcb30556165f6e567893989c39222',
    'bits': 0x19030d6c,
    'time':1610982871,
    'nonce':3341292488
}


blockChainHeader = (
    struct.pack('<L', blockChainObject['version']) +
    bytes(codecs.decode(blockChainObject['previousHash'])[::-1], 'utf-8') +
    bytes(codecs.decode(blockChainObject['merkleRoot'])[::-1], 'utf-8') +
    struct.pack('<L', blockChainObject['time']) +
    struct.pack('<L', blockChainObject['bits']) +
    struct.pack('<L', blockChainObject['nonce'])
)

blockChainHashObject = hashlib.sha256(blockChainHeader).digest()
blockChainHashDigest = hashlib.sha256(blockChainHashObject).hexdigest()

print(blockChainHashDigest)