Проверка доказательства работы в транзакции биткойновPython

Программы на Python
Ответить
Anonymous
 Проверка доказательства работы в транзакции биткойнов

Сообщение Anonymous »

Насколько я понимаю, мне нужно хешировать информацию о каждой транзакции и построить дерево Меркла. После этого мы получаем корневой хеш, объединяем его с одноразовым номером и хешируем это значение и проверяем, имеет ли оно определенное количество нулей в начале.
Это набросок этой реализации, однако зачем мне использовать общедоступные параметры для проверки и т. д. Я их не использовал, нужно ли мне также проверять каждую транзакцию? Реализация дерева Меркла правильная, но я не получаю правильное значение хеш-функции из блока, в чем может быть причина?
# Function to check if PoW is valid
def CheckPow(p, q, g, PoWLen, TxCnt, filename):
# Read the transaction file
with open(filename, 'r') as file:
lines = file.readlines()

nonce = lines[0].strip().split(":")[1].strip()
lines = lines[1:]
# Extract transactions from the file
txs = []
for i in range(TxCnt):
# Here you would extract the transaction data and hash it (simplified here)

tx_data = ("".join(lines[i*7+3: i*7+7]))

print(tx_data)
txs.append(tx_data)

# Build the Merkle tree and get the root hash (Hr)

merktree= tree.MerkleTree(txs)
H_r = merktree.get_merkle_root()

print("H_r:",H_r)
print(H_r.hex())

# Convert nonce to bytes and concatenate with Hr
nonce = int(nonce)
nonce_bytes = nonce.to_bytes((nonce.bit_length() + 7) // 8, byteorder='big')
#print(nonce_bytes)
Hr_nonce = H_r + nonce_bytes

# Compute the SHA3-256 hash of the concatenation
hash_value = sha3_256(Hr_nonce).hexdigest()
print(hash_value)

return hash_value


Подробнее здесь: https://stackoverflow.com/questions/793 ... ransaction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»