2016-04-12 7 views
0
{ hash: '0xcc871efa64631ff57b6c4cdf9e9c52dce299956cc0bc2cdf6781dbd647a80926', 
    nonce: 34, 
    blockHash: '0xf4e21dabc0d6f99ae9a3fd128b9f25462110ed0e2811c0d5f91ffce9ac85594a', 
    blockNumber: 49, 
    transactionIndex: 0, 
    from: '0x9c3fe8bc6d259d44e80fb728e74727bfbe58e988', 
    to: '0xb22ab8533936d6d75c1ecf229c1ad68410ea8ee3', 
    value: { [String: '0'] s: 1, e: 0, c: [ 0 ] }, 
    gas: 3141592, 
    gasPrice: { [String: '1'] s: 1, e: 0, c: [ 1 ] }, 
    input: '0x1f5c1d9800000000000000000000000000000000000000000000000000000000000000400000000000000000000000007fa543843e2f5766ad623b2155d639d73635824400000000000000000000000000000000000000000000000000000000000000134f70656e20412042616e6b204163636f756e7400000000000000000000000000’ } 

Ich bekomme eine Transaktion zurück von einem x.send (1) dessen JSON wie oben aussieht. Ich kann im Wert des Eingangs Attribut sehen, dass es ein "7fa543843e2f5766ad623b2155d639d736358244" gab, das der Adresse des Kontos entspricht, das ich für x zur Verfügung stellte. Der Solidity Schnipsel ist:Meldet TestRPC bei Transaktionen einen Fehler?

function do(string _description, address x) { 
    if (msg.sender != owner) 
     throw; 
    description = _description; 

    x.send(1); 
} 

jedoch das zu: Attribut im JSON falsch ist. Meine Umgebung verwendet Tests, die in Truffle gegen TestRPC ausgeführt werden. Erkennt jemand das als ein bekanntes Problem oder ein Problem von mir?

Der entsprechende Teil meines Testcode ist:

.then(
    function (_bool0) { 
     assert.isTrue(_bool0,"whoops"); 
     return contract.do("a test", accounts[4], {from: accounts[0]}); 
    }).then(
    function (tx_id) { 
     var transaction = web3.eth.getTransaction(tx_id); 
     /* debugging my test */ 
     console.log(transaction); 

     assert.strictEqual(transaction.to,accounts[4],"transaction \"to:\" was not provided address"); 

     done(); 
    } 
).catch(done); 
+0

Ich denke, das ist ein Problem mit der tx_id im Zusammenhang mit dem Vertrag und nicht die x.send() Ich hatte getan. Ich brauchte die Transaktions-ID der send(). – Interition

+0

Wenn Sie der Meinung sind, dass Ihre Fragen bei stackoverflow nicht ausreichend berücksichtigt werden, können Sie auch versuchen, ethereumspezifische Fragen zur neuen [ethereum stack exchange beta-Website] (http://ethereum.stackexchange.com/) zu stellen. – default

Antwort

0

Das Verhalten tatsächlich konsistent war, wie Astraleum funktioniert. Wenn der Test ruft:

contract.do("a test", accounts[4], {from: accounts[0]}); 

es verursacht eine Transaktion, die auf der Blockchain aufgezeichnet wird. Eine Transaktion aus dem Konto [0] und dem Vertrag: Dies ist auch eine Art von Konto. Das Objekt, das an meinen Test zurückgegeben wird, stellt diese Transaktion dar: als JSON oben gezeigt.

Ich hatte fälschlicherweise gedacht, dass das zurückgegebene Objekt die Transaktion zwischen dem Vertrag mit dem zweiten Konto darstellt.

Um mein Testziel zu erreichen, muss ich vom zweiten Konto aus nach dem Vorhandensein einer Transaktion suchen. Ich werde dies aktualisieren, sobald ich es herausgefunden habe.