2024-04-26 04:03:04 发布
网友
我正在尝试执行pyethereum的代码,但是当我在中分析代码时 pyethereum/Ethereum/hybrid_casper/consenus.py
pyethereum/Ethereum/hybrid_casper/consenus.py
我不明白'NULL_SENDER'值是在哪里定义的,这个state.config['NULL_SENDER]将如何执行。你知道吗
'NULL_SENDER'
state.config['NULL_SENDER]
key, account = state.config['NULL_SENDER'], privtoaddr(state.config['NULL_SENDER'])
让我们看看所有的代码。你知道吗
from ethereum import utils, transactions from ethereum.common import update_block_env_variables from ethereum.messages import apply_transaction from ethereum.hybrid_casper import casper_utils from ethereum.utils import privtoaddr # Block initialization state transition def initialize(state, block=None): config = state.config state.txindex = 0 state.gas_used = 0 state.bloom = 0 state.receipts = [] if block is not None: update_block_env_variables(state, block) # Initalize the next epoch in the Casper contract if state.block_number % state.config['EPOCH_LENGTH'] == 0 and state.block_number != 0: key, account = state.config['NULL_SENDER'], privtoaddr(state.config['NULL_SENDER']) data = casper_utils.casper_translator.encode('initialize_epoch', [state.block_number // state.config['EPOCH_LENGTH']]) transaction = transactions.Transaction(state.get_nonce(account), 0, 3141592, state.config['CASPER_ADDRESS'], 0, data).sign(key) success, output = apply_transaction(state, transaction) assert success if state.is_DAO(at_fork_height=True): for acct in state.config['CHILD_DAO_LIST']: state.transfer_value( acct, state.config['DAO_WITHDRAWER'], state.get_balance(acct)) if state.is_METROPOLIS(at_fork_height=True): state.set_code(utils.normalize_address( config["METROPOLIS_STATEROOT_STORE"]), config["METROPOLIS_GETTER_CODE"]) state.set_code(utils.normalize_address( config["METROPOLIS_BLOCKHASH_STORE"]), config["METROPOLIS_GETTER_CODE"])
我们可以看到,这段代码很可能是由多个程序导入的,的确如此!https://github.com/ethereum/pyethereum/blob/develop/ethereum/hybrid_casper/chain.py
如果我们看到函数的用法链.py,正在用self.state实现state参数,它是self.state = self.mk_poststate_of_blockhash(self.db.get(b'head_hash'))。你知道吗
self.state
state
self.state = self.mk_poststate_of_blockhash(self.db.get(b'head_hash'))
此函数返回一个State对象,由ethereum.state生成,可以将其转换为字典。这很可能意味着它正在获取与名为“NULL\u SENDER”的键对应的值。你知道吗
State
ethereum.state
让我们看看所有的代码。你知道吗
我们可以看到,这段代码很可能是由多个程序导入的,的确如此!https://github.com/ethereum/pyethereum/blob/develop/ethereum/hybrid_casper/chain.py
如果我们看到函数的用法链.py,正在用
self.state
实现state
参数,它是self.state = self.mk_poststate_of_blockhash(self.db.get(b'head_hash'))
。你知道吗此函数返回一个
State
对象,由ethereum.state
生成,可以将其转换为字典。这很可能意味着它正在获取与名为“NULL\u SENDER”的键对应的值。你知道吗相关问题 更多 >
编程相关推荐