def test_trace_replay_block_with_transactions(self, web3, block_with_txn, parity_fixture_data): trace = web3.parity.traceReplayBlockTransactions( block_with_txn['number']) assert len(trace) > 0 trace_0_action = trace[0]['trace'][0]['action'] assert trace_0_action['from'] == add_0x_prefix( parity_fixture_data['coinbase'])
def test_trace_replay_transaction(self, web3, parity_fixture_data): trace = web3.parity.traceReplayTransaction( parity_fixture_data['mined_txn_hash']) assert trace['stateDiff'] is None assert trace['vmTrace'] is None assert trace['trace'][0]['action']['from'] == add_0x_prefix( parity_fixture_data['coinbase'])
def soliditySha3(cls, abi_types, values): """ Executes sha3 (keccak256) exactly as Solidity does. Takes list of abi_types as inputs -- `[uint24, int8[], bool]` and list of corresponding values -- `[20, [-1, 5, 0], True]` """ if len(abi_types) != len(values): raise ValueError( "Length mismatch between provided abi types and values. Got " "{0} types and {1} values.".format(len(abi_types), len(values))) if isinstance(cls, type): w3 = None else: w3 = cls normalized_values = map_abi_data([abi_ens_resolver(w3)], abi_types, values) hex_string = add_0x_prefix(''.join( remove_0x_prefix(hex_encode_abi_type(abi_type, value)) for abi_type, value in zip(abi_types, normalized_values))) return cls.sha3(hexstr=hex_string)
def encode_transaction_data(web3, fn_identifier, contract_abi=None, fn_abi=None, vmtype=None, args=None, kwargs=None): if fn_identifier is FallbackFn: fn_abi, fn_selector, fn_arguments = get_fallback_function_info( contract_abi, fn_abi) elif is_text(fn_identifier): fn_abi, fn_selector, fn_arguments = get_function_info( fn_identifier, contract_abi, fn_abi, args, kwargs, ) else: raise TypeError("Unsupported function identifier") return add_0x_prefix( encode_abi(web3, fn_abi, fn_arguments, vmtype, fn_selector, contract_abi))
def test_trace_filter(self, web3, txn_filter_params, parity_fixture_data): trace = web3.parity.traceFilter(txn_filter_params) assert isinstance(trace, list) assert trace[0]['action']['from'] == add_0x_prefix( parity_fixture_data['coinbase'])
def test_trace_transaction(self, web3, parity_fixture_data): trace = web3.parity.traceTransaction( parity_fixture_data['mined_txn_hash']) assert trace[0]['action']['from'] == add_0x_prefix( parity_fixture_data['coinbase'])
def pad_hex(value, bit_size): """ Pads a hex string up to the given bit_size """ value = remove_0x_prefix(value) return add_0x_prefix(value.zfill(int(bit_size / 4)))