Dies ist ein Treuhand-Smart-Vertrag, der auf Testnet Ropsten bereitgestellt wird: https://testnet.etherscan.io/address/0xd8be8771520addd926a3b454b4ea89a31d753359#code
Beim Aufrufen der Funktion start (Adresse Verkäufer, Adresse Drittanbieter) vom Get-Knoten wie folgt:
sc.start.sendTransaction("0x90e8682b63d7922a3e942d4bbd4c88095634a17b", "0xf28dafbfeb41bf32869c9d498da0d651d0206ed4", {from:"0x3b877e80b5c0b29d88f3768ed4292b35fdd93a9d", value:"0x3b9aca00", gas:1000000});
Es erstellt eine neue Transaktion https://testnet.etherscan.io/tx/0x0fe57a93d9618f915fa822ba1b727147e04c11b23e523d6382ddd879020d98d9 und wirft den folgenden Fehler:
Warning! Error encountered during contract execution [Bad jump destination]
Der Code der Funktion start():
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;
}
Das aufgerufene Ereignis ist:
event escrowStart(address buyer, address seller, address thirdParty);
Seltsamerweise funktioniert derselbe Code gut im Solidity Browser ( https://ethereum.github.io/browser-solidity/ ), aber nicht im Testnet.
Irgendwelche Hilfe/Ideen? Danke!
Es liegt mit ziemlicher Sicherheit daran, dass Sie ETH ohne den payable
Modifikator an eine Funktion senden. Ohne diesen Modifikator geht Solidity davon aus, dass es niemals beabsichtigt ist, ETH zu erhalten, und wird daher kompiliert throw
(was als ungültiger Sprung erscheint), wenn dies der Fall ist.
Juan Ignacio Pérez Sakristán