Ich sende Daten mit meiner Transaktion auf folgende Weise
var tx = {from: eth.coinbase, to:eth.accounts[1], value: web3.toWei(1, "ether"),data:web3.toHex("Test Data")}
personal.sendTransaction(tx, "password")
Wie wir sehen können, verwende ich einfache Zeichenfolgen in Daten, die in Hex konvertiert werden. Ich habe einige Fragen dazu
(Hinweis: Derzeit sende ich JSON-Daten, indem ich die Daten auf folgende Weise manuell in JSON-Strings konvertieredata:web3.toHex("{\"key1\":\"Data1\",\"key2\":\"Data2\"}"))
Das Codieren einer JSON-Zeichenfolge scheint keine gute Idee zu sein. Siehe das .
Anstatt ein Objekt als Daten bereitzustellen, sollten Sie Ihre Vertragsfunktion so definieren, dass sie die relevanten Eingaben (z. B. function f(string key1, uint key2){}
) entgegennimmt und eine Transaktionsbibliothek wie ethereumjs-tx verwendet, um die Daten gemäß Ihren Parametern zu berechnen. Hier ist ein Beispiel mit nur Web3.
SwapnilKumbhar
Jeff
SwapnilKumbhar
var tx = {from: eth.coinbase, to:eth.accounts[1], value: web3.toWei(10, "ether"),data:web3.toHex("D1:Testing Data")}
SwapnilKumbhar
Jeff
"name: value"
und als Daten einfügen. Wenn Sie dies tun, muss Ihr Vertrag ein komplexes Parsing durchführen, das habe ich als spezielle Software bezeichnet.SwapnilKumbhar
Jeff
SwapnilKumbhar