3

This is an escrow smart contract deployed on testnet Ropsten: https://testnet.etherscan.io/address/0xd8be8771520addd926a3b454b4ea89a31d753359#code

When calling function start(address seller, address thirdParty) from geth node like this:

sc.start.sendTransaction("0x90e8682b63d7922a3e942d4bbd4c88095634a17b", "0xf28dafbfeb41bf32869c9d498da0d651d0206ed4", {from:"0x3b877e80b5c0b29d88f3768ed4292b35fdd93a9d", value:"0x3b9aca00", gas:1000000});

It creates a new transaction https://testnet.etherscan.io/tx/0x0fe57a93d9618f915fa822ba1b727147e04c11b23e523d6382ddd879020d98d9 throwing the following error:

Warning! Error encountered during contract execution [Bad jump destination] 

The code of start() function:

function start(address seller, address thirdParty) returns (uint) {
    uint escrowId = numEscrows;
    numEscrows++;
    escrow memory e;
    e.thirdParty = thirdParty;
    e.seller = seller;
    e.buyer = msg.sender;
    e.amount = msg.value;
    e.recipient = seller;
    e.status = 1; // started
    escrows[escrowId] = e;

    escrowStart(e.buyer, e.seller, e.thirdParty); // Log

    return escrowId;
}

The event called is:

event escrowStart(address buyer, address seller, address thirdParty);

Strange thing is that the same code works well on Solidity Browser ( https://ethereum.github.io/browser-solidity/ ) but not on testnet.

Any help/ideas? Thx!

1 Answer 1

5

It's almost certainly because you're sending ETH to a function without the payable modifier. Without that modifier, solidity assumes that it is never intended to receive ETH and so will compile to throw (which appears as an invalid jump) if it does.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.