Mein Ziel ist es, eine signierte Transaktion zu senden, um einen Smart Contract zu erstellen, aber ich stehe vor einem Problem, das ich seit einigen Tagen nicht lösen konnte:
Wenn ich die Transaktion sende (auf einer privaten Kette), gibt es zwei verschiedene Enden:
- 1 Web3js sagt mir, dass es funktioniert hat, ich kann die Transaktion im Block sehen. Wenn ich jedoch versuche, den Vertrag zu kontaktieren, habe ich die folgende Ausgabe:
Fehler: Uint256 konnte nicht von ABI dekodiert werden: 0x
Wenn ich versuche, eth.getCode(contractAddress)
in Geth zu laufen, kehrt es zurück0x
- 2 Web3js sagt mir, dass die Transaktion nicht für 50 Blöcke abgebaut wurde (der Knoten hatte keine Zeit, 50 Blöcke abzubauen). Aber ich kann die Transaktion im Block (in Geth) sehen.
Hier ist der Code, den ich verwende:
web3g = result;
getContractInstance(function (error, instance) {
if (error) {
console.log(error);
} else {
let newContract = instance;
let deploy = newContract.deploy({
data: bytecode,
arguments: [MY ARGS]
}).encodeABI();
let gas = web3g.utils.toHex(3000000);
let gasPrice = web3g.utils.toHex(21000000000);
let gasLimit = web3g.utils.toHex(4000000);
let nonce;
web3g.eth.getTransactionCount(req.body.sender_address)
.then(function (result) {
nonce = result;
nonce = web3g.utils.toHex(nonce);
let transactionObject = {
gas: gas,
gasPrice: gasPrice,
gasLimit: gasLimit,
data: deploy,
from: req.body.sender_address,
nonce: nonce
};
web3g.eth.accounts.signTransaction(transactionObject, req.body.private_key, function (error, signedTx) {
if (error) {
console.log(error);
} else {
console.log(signedTx);
web3g.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('confirmation', function (number, receipt) {
if (number == 1) {
// do stuff
Kann mir jemand sagen, was ich falsch mache?
Hinweis: Ich kann signierte Transaktionen mit der obigen Methode senden, um Ether zwischen Adressen zu übertragen.
Bearbeiten: Das Schätzen des Gases gibt Folgendes zurück: Fehler: Zurückgegebener Fehler: Das erforderliche Gas überschreitet die Genehmigung oder die Transaktion schlägt immer fehl
Ich hatte ähnliche Probleme beim Erstellen signierter Transaktionen und habe schließlich dieses Paket entwickelt. https://www.npmjs.com/package/web3js-raw . Sollte dein Problem lösen.
Wiederholung 122442
Chim
Wiederholung 122442
Wiederholung 122442
Wiederholung 122442
Chim
Wiederholung 122442
Chim