我想通过将随机数更改为1来重新计算哈希,但是self.hash的实例未更改。
我经验不足,也不知道如何解决这类问题
import hashlib
class Block:
def __init__(self, timestamp, transaction, previousHash = ''):
self.timestamp = timestamp
self.transaction = transaction
self.nonce = 0
self.previousHash = previousHash
self.hash = self.calculateHash()
def mineBlock(self):
checkIfTrue = str(self.hash).startswith('0')
while checkIfTrue != True:
self.nonce += 1
self.hash = self.calculateHash()
print(self.hash)
print("block mined")
def calculateHash(self):
h = hashlib.sha256((str(self.timestamp) + str(self.transaction) + str(self.previousHash) + str(self.nonce)).encode('utf-8'))
return h.hexdigest()
答案 0 :(得分:0)
我尝试了您的代码,对我来说很好,self.hash更改了。但是程序陷入了无限循环,因为条件“ while checkIfTrue!= True:”在循环内不会立即改变。更新self.hash之后,您需要退出循环并再次执行“ checkIfTrue = str(self.hash).startswith('0')”。
答案 1 :(得分:0)
您不是在循环内更新checkIfTrue
。
真正不需要此变量,只需将哈希检查放入while
语句中即可。
while not str(self.hash).startswith('0'):
self.nonce += 1
self.hash = self.calculateHash()
print(self.hash)