I have simple smart contract
pragma solidity ^0.4.17;
contract Inbox {
string public message;
constructor() public payable {
message = "Hi there!";
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
I've deployed it to my local py-evm instance. I tried to execute message() method. I com do following:
vm = chain.get_vm()
nonce = vm.state.account_db.get_nonce(SENDER)
vm_tx = vm.create_unsigned_transaction(
nonce=nonce,
gas_price=gasprice,
gas=startgas,
to=decode_hex('febb9c06ccc7d378059c03f0c50f848c39d96fb6'),
value=value,
data=payload,
)
signed_tx = vm_tx.as_signed_transaction(SENDER_PRIVATE_KEY)
new_block, receipt, computation = chain.apply_transaction(signed_tx)
and in computation.output I got:
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tHi there!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
I can see "Hi there!" but why there are extra bytes? How to get clean output?