Ich muss eine (zustandsändernde) Funktion für meinen Vertrag aufrufen.
So führe ich diese Transaktion derzeit aus:
let transaction = contract.methods.myFunc();
await web3.eth.personal.unlockAccount(ACCOUNT_ADDRESS, ACCOUNT_PASSWORD);
let gas = await transaction.estimateGas({from: ACCOUNT_ADDRESS, gasPrice: GAS_PRICE});
await transaction.send({from: ACCOUNT_ADDRESS, gasPrice: GAS_PRICE, gas: gas});
Nach meinem Verständnis hinterlässt das Entsperren des Kontos auf meinem Ethereum-Client jedoch viele Sicherheitslücken, mit denen man sich befassen muss.
Gibt es eine Möglichkeit für mich, meine Zugangsdaten (Kontoadresse und Passwort) beim Ausführen der Transaktion weiterzugeben, anstatt das Konto vorher freizuschalten?
Dokumentation für unlockAccount
ist hier .
Dokumentation für send
ist hier .
Vielen Dank!
Sie können die Transaktion einfach auf Ihrer Seite signieren und eine Rohtransaktion senden, Sie werden dies auf Python oder Java oder einer anderen Umgebung tun, aber nicht direkt auf Ihrem Ethereum-Client. Das Risiko wird also minimiert.
Beispiel:
var Tx = require('ethereumjs-tx');
dataTx = myContract.methods.myFunc(params).encodeABI(); //The encoded ABI of the method
var rawTx = {
to: 'yourcantract address',
data:dataTx
}
var tx = new Tx(rawTx);
tx.sign('yourprivateKey');
var serializedTx = tx.serialize();
web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'))
.on('receipt', console.log);
Hoffe das hilft.
gute Stimmung
sign
undsignTransaction
hier an . Aber keiner von ihnen nimmt den privaten Schlüssel / die Passphrase / das Passwort als Eingabe. Wie genau kann es also möglicherweise ersetzenunlockAccount
?gute Stimmung
web3.eth.personal.signTransaction
(nicht functionweb3.eth.signTransaction
).Jaime
gute Stimmung
contract.methods.myFunc()
- ist völlig anders (und ja, beide werden in den Dokumenten als Transaktionsobjekt bezeichnet ).Jaime
gute Stimmung
Returned error: Insufficient funds. The account you tried to send transaction from does not have enough funds
(ein Fehler, den ich nicht bekommen habe, als ich verwendet habeunlockAccount
).Jaime
gute Stimmung
Jaime
gute Stimmung
web3
, ohneethereumjs-tx
). Konnte es nicht zum Laufen bringen, also habe ich hier eine ausführlichere Frage gestellt .