def test_adding_signature_to_transaction(wait_for_first_block, web3,
                                         skip_if_testrpc):
    skip_if_testrpc(web3)

    transaction = {
        'nonce': hex(0),
        'to': '0xd3cda913deb6f67967b99d67acdfa1712c293601',
        'value': hex(12345),
        'gas': hex(1200300),
        'gasPrice': hex(54321),
        'data': '0x1234567890abcdef',
    }

    serialized_txn = serialize_transaction(transaction)
    signature_hex = web3.eth.sign(web3.eth.coinbase, serialized_txn)

    signed_transaction = add_signature_to_transaction(
        serialized_txn,
        decode_hex(signature_hex),
    )

    assert is_same_address(signed_transaction.to, transaction['to'])
    assert signed_transaction.startgas == int(transaction['gas'], 16)
    assert signed_transaction.gasprice == int(transaction['gasPrice'], 16)
    assert signed_transaction.nonce == int(transaction['nonce'], 16)
    assert signed_transaction.value == int(transaction['value'], 16)
    assert encode_hex(signed_transaction.data) == transaction['data']
    assert signed_transaction.sender == web3.eth.coinbase
def test_adding_signature_to_transaction(wait_for_first_block,
                                         web3,
                                         skip_if_testrpc):
    skip_if_testrpc(web3)

    transaction = {
        'nonce': hex(0),
        'to': '0xd3cda913deb6f67967b99d67acdfa1712c293601',
        'value': hex(12345),
        'gas': hex(1200300),
        'gasPrice': hex(54321),
        'data': '0x1234567890abcdef',
    }

    serialized_txn = serialize_transaction(transaction)
    signature_hex = web3.eth.sign(web3.eth.coinbase, serialized_txn)

    signed_transaction = add_signature_to_transaction(
        serialized_txn,
        decode_hex(signature_hex),
    )

    assert to_address(signed_transaction.to) == transaction['to']
    assert signed_transaction.startgas == int(transaction['gas'], 16)
    assert signed_transaction.gasprice == int(transaction['gasPrice'], 16)
    assert signed_transaction.nonce == int(transaction['nonce'], 16)
    assert signed_transaction.value == int(transaction['value'], 16)
    assert encode_hex(signed_transaction.data) == transaction['data']
    assert signed_transaction.sender == web3.eth.coinbase
Exemple #3
0
 def sign_and_serialize_transaction(self, transaction):
     serialized_txn = serialize_transaction(transaction)
     signature = self.get_transaction_signature(transaction)
     signed_transaction = add_signature_to_transaction(
         serialized_txn,
         signature,
     )
     signed_and_serialized_txn = rlp.encode(signed_transaction, Transaction)
     return signed_and_serialized_txn
Exemple #4
0
 def sign_and_serialize_transaction(self, transaction):
     serialized_txn = serialize_transaction(transaction)
     signature = self.get_transaction_signature(transaction)
     signed_transaction = add_signature_to_transaction(
         serialized_txn,
         signature,
     )
     signed_and_serialized_txn = rlp.encode(signed_transaction, Transaction)
     return signed_and_serialized_txn
Exemple #5
0
 def get_transaction_signature(self, transaction):
     serialized_txn = serialize_transaction(transaction)
     hash_to_sign = self.signing_manager.request_blocking(
         'web3_sha3', [encode_hex(serialized_txn)],
     )
     signature_hex = self.signing_manager.request_blocking(
         'eth_sign',
         [
             transaction['from'],
             hash_to_sign,
         ],
     )
     signature = decode_hex(signature_hex)
     return signature
Exemple #6
0
 def get_transaction_signature(self, transaction):
     serialized_txn = serialize_transaction(transaction)
     hash_to_sign = self.signing_manager.request_blocking(
         'web3_sha3', [encode_hex(serialized_txn)],
     )
     signature_hex = self.signing_manager.request_blocking(
         'eth_sign',
         [
             transaction['from'],
             hash_to_sign,
         ],
     )
     signature = decode_hex(signature_hex)
     return signature
def test_transaction_serialization():
    transaction = {
        'nonce': hex(0),
        'to': '0xd3cda913deb6f67967b99d67acdfa1712c293601',
        'value': hex(12345),
        'gas': hex(1200300),
        'gasPrice': hex(54321),
        'data': '0x1234567890abcdef',
    }

    serialized_txn = serialize_transaction(transaction)
    unserialized_txn = rlp.decode(serialized_txn, UnsignedTransaction)

    assert is_same_address(unserialized_txn.to, transaction['to'])
    assert unserialized_txn.startgas == int(transaction['gas'], 16)
    assert unserialized_txn.gasprice == int(transaction['gasPrice'], 16)
    assert unserialized_txn.nonce == int(transaction['nonce'], 16)
    assert unserialized_txn.value == int(transaction['value'], 16)
    assert encode_hex(unserialized_txn.data) == transaction['data']
def test_transaction_serialization():
    transaction = {
        'nonce': hex(0),
        'to': '0xd3cda913deb6f67967b99d67acdfa1712c293601',
        'value': hex(12345),
        'gas': hex(1200300),
        'gasPrice': hex(54321),
        'data': '0x1234567890abcdef',
    }

    serialized_txn = serialize_transaction(transaction)
    unserialized_txn = rlp.decode(serialized_txn, UnsignedTransaction)

    assert to_address(unserialized_txn.to) == transaction['to']
    assert unserialized_txn.startgas == int(transaction['gas'], 16)
    assert unserialized_txn.gasprice == int(transaction['gasPrice'], 16)
    assert unserialized_txn.nonce == int(transaction['nonce'], 16)
    assert unserialized_txn.value == int(transaction['value'], 16)
    assert encode_hex(unserialized_txn.data) == transaction['data']