Example #1
0
 def transact(this,
              to,
              value=0,
              data='',
              sender=None,
              startgas=25000,
              gasprice=60 * denoms.shannon):
     sender = normalize_address(sender or this.coinbase)
     to = normalize_address(to, allow_blank=True)
     state = State(this.head_candidate.state_root, this.chain.env)
     nonce = state.get_nonce(sender)
     tx = Transaction(nonce, gasprice, startgas, to, value, data)
     this.app.services.accounts.sign_tx(sender, tx)
     assert tx.sender == sender
     this.chainservice.add_transaction(tx)
     return tx
Example #2
0
def test_send_raw_transaction_with_contract(test_app):
    serpent_code = '''
def main(a,b):
    return(a ^ b)
'''
    tx_to = b''
    evm_code = serpent.compile(serpent_code)
    chainservice = test_app.services.chain
    chain = test_app.services.chain.chain
    state = State(chainservice.head_candidate.state_root, chain.env)
    sender = test_app.services.accounts.unlocked_accounts[0].address
    assert state.get_balance(sender) > 0
    nonce = state.get_nonce(sender)
    tx = ethereum.transactions.Transaction(nonce, default_gasprice,
                                           default_startgas, tx_to, 0,
                                           evm_code, 0, 0, 0)
    test_app.services.accounts.sign_tx(sender, tx)
    raw_transaction = data_encoder(
        rlp.codec.encode(tx, ethereum.transactions.Transaction))
    data_decoder(
        test_app.client.call('eth_sendRawTransaction', raw_transaction))
    assert len(chainservice.head_candidate.transactions) == 1
    creates = chainservice.head_candidate.transactions[0].creates

    candidate_state_dict = State(chainservice.head_candidate.state_root,
                                 chain.env).to_dict()
    code = candidate_state_dict[encode_hex(creates)]['code']
    assert len(code) > 2
    assert code != '0x'

    test_app.mine_next_block()

    assert len(chain.head.transactions) == 1
    creates = chain.head.transactions[0].creates
    state_dict = State(chain.head.state_root, chain.env).to_dict()
    code = state_dict[encode_hex(creates)]['code']
    assert len(code) > 2
    assert code != '0x'