Ich bin neu in Smart Contracts und stehe vor einem Problem. Nachdem ich den Vertrag in meinem lokalen Blockchain-Testnetzwerk bereitgestellt habe, versuche ich, den neuen Wert über den Setter festzulegen, danach rufe ich die Vertragsmethode auf und gebe den alten Wert zurück.
Das ist mein Vertrag,
pragma solidity ^0.4.10;
contract Storage {
uint256 storedData;
function set(uint256 data) {
storedData = data;
}
function get() constant returns (uint256) {
return storedData;
}
}
Welche Schritte habe ich gemacht:
- Stellen Sie den Vertrag über web3j in Java-Code bereit. Nach der Bereitstellung sehe ich die Adresse meines Vertrags, sodass er bereitgestellt wird
- Danach erstellen Sie in der Geth-Konsole die Variable abi: var abi = [{"constant":false,"inputs":[{"name":"data","type":"uint256"}],"name":"set ","outputs":[],"payable":false,"statemutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name": "get","outputs":[{"name":"","type":"uint256"}],"payable":false,"statemutability":"view","type":"function"}] ;
- Vertrag laden: var storage = eth.contract(abi)
- Vertrag per Adresse laden: var contractInstance = storage.at("0x45564fe8d90e542f3f896dd43b374210bc109299");
- Versuchen Sie, die Methode get() aufzurufen: var result = contractInstance.get(); es ist Ausgang 0
- Versuchen Sie dann, einen neuen Wert festzulegen: var result = contractInstance.set(566); After that I see something like this: INFO [09-07|08:42:07] Submitted transaction fullhash=0x7110b3fdfc8005187ed367beb8275a6f4b926f4852f726784219a5a3aa9c8d9e recipient=0x45564fe8d90e542f3f896dd43b374210bc109299 "0x7110b3fdfc8005187ed367beb8275a6f4b926f4852f726784219a5a3aa9c8d9e"
- Als nächstes beginne ich mit dem Mining: miner.start(), zu Beginn des Minings ein See-Log wie folgt: INFO [09-07|08:44:15] Commit new mining work number=38 txs=1 uncles=0 elapsed=1.044 ms INFO [09-07|08:44:15] Neue Blocknummer erfolgreich versiegelt = 38 Hash = e62548…39ad89 INFO [09-07|08:44:15] 🔗 Block hat kanonische Kettennummer erreicht = 33 Hash = 9a6ae1…9cb82d INFO [09-07|08:44:15] 🔨 abgebauter potenzieller Block Nummer = 38 Hash = e62548…39ad89 INFO [09-07 | 08:44:15] Commit für neue Mining-Arbeit Nummer = 39 txs = 0 Onkel = 0 abgelaufen =182,5µs INFO [09-07|08:44:15] Neue Blocknummer erfolgreich versiegelt=39 Hash=87b682…f52e39 INFO [09-07|08:44:15] 🔗 Block hat kanonische Kettennummer=34 Hash=cc9a2d erreicht …36838a INFO [09-07|08:44:15] 🔨 abgebaute potenzielle Blocknummer=39 Hash=87b682…f52e39 INFO [09-07|08:44:15] Mining zu weit in der Zukunft warten=2s
- Dann höre ich mit dem Mining auf: miner.stop() 9. Dann rufe contractInstance.get() auf: und sehe denselben Wert 0
Ich bin verwirrt (Danke an alle für die Hilfe!
BinGoBinBin
Müller
wtk219
Müller
Edmund Edgar
storedData
einen Standardwert anzugeben, bevor Sie versuchen, ihn zu ändern, der Ihnen sagt, ob Ihr Problem das Lesen oder das Schreiben ist.Müller
Müller
Nikita Fuchs
constructor()
.