コード例 #1
0
 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'])
コード例 #2
0
    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'])
コード例 #3
0
    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)
コード例 #4
0
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))
コード例 #5
0
 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'])
コード例 #6
0
 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'])
コード例 #7
0
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)))