это ключ в LevelDB базе данных, где лежит сериализированный список (nonce, balance, storage_root, code_hash). Именно эти 4 значения у тебя в строчках ниже.
Сам адрес - это путь по которому ты дошел от корня дерева до листа с этой нодой.
Другой вопрос: почему у меня key не получается, как sha3 от сериализованного списка. В коде pyethereum оно так написано:
def _encode_node(self, node, put_in_db=True):
if node == BLANK_NODE:
return BLANK_NODE
# assert isinstance(node, list)
rlpnode = rlp_encode(node)
if len(rlpnode) < 32:
return node
hashkey = utils.sha3(rlpnode)
if put_in_db:
self.db.put(hashkey, str_to_bytes(rlpnode))
return hashkey
хотя не, вру. sha3 от сериализованных [key, сериализованные данные аккаунта] - это f87...5d0, которые у тебя действительно есть выше в логе оутпута. тогда key это какой-то другой key. Не вижу в коде в какой момент от State.commit до Trie._encode_node сериализированные данные аккаунта превращаются в список [key, сериализованные данные аккаунта]. но тем не менее адрес аккаунта - все еще путь в дереве до листа с нодой, все верно.
Обсуждают сегодня