gpt4 book ai didi

javascript - 如何使用 web3.js 1.0 认证和发送合约方法

转载 作者:行者123 更新时间:2023-12-04 13:01:27 28 4
gpt4 key购买 nike

我对如何使用 web3 1.0 库执行契约(Contract)方法感到困惑。

此代码有效(只要我先手动解锁帐户):

var contract = new web3.eth.Contract(contractJson, contractAddress);
contract.methods
.transfer("0x0e0479bC23a96F6d701D003c5F004Bb0f28e773C", 1000)
.send({
from: "0x2EBd0A4729129b45b23aAd4656b98026cf67650A"
})
.on('confirmation', (confirmationNumber, receipt) => {
io.emit('confirmation', confirmationNumber);
});

我收到此错误(如果我不先手动解锁):

Returned error: authentication needed: password or unlock



上面的代码是 node.js 中的一个 API 端点,所以我希望它以编程方式解锁或验证。

web3.js 1.0 中没有解锁账户的方法。

我也不认为这是必要的(至少我对此感到困惑)。因为我在管理账户,所以我知道私钥是什么。

我在想交易需要用私钥签名??这个对吗?这实际上与“解锁帐户”相同吗?

我试过这样做:
var contract = new web3.eth.Contract(contractJson, contractAddress);

var tx = {
from: "...{fromAddress -- address that has the private key below}",
to: "...",
value: ...
};

var signed = web3.eth.accounts.signTransaction(tx,
"...{privateKey}");

console.log(signed);

var promise = web3.eth.sendSignedTransaction(signed);

我收到此错误:

Returned error: The method net_version does not exist/is not available



验证和提交交易的最简单方法是什么?

理想情况下,我想在我的代码示例中使用第一种方法,因为它是最干净的。

最佳答案

此代码允许我使用我创建的帐户(使用 web3.eth.accounts.create())中的 privateKey 签署交易服务器端(node.js),并将签署的交易发送到网络 没有 必须解锁帐户。

我正在使用 Geth 1.7.1

  var contract = new web3.eth.Contract(contractJson, contractAddress);
var transfer = contract.methods.transfer("0x...", 490);
var encodedABI = transfer.encodeABI();

var tx = {
from: "0x...",
to: contractAddress,
gas: 2000000,
data: encodedABI
};

web3.eth.accounts.signTransaction(tx, privateKey).then(signed => {
var tran = web3.eth.sendSignedTransaction(signed.rawTransaction);

tran.on('confirmation', (confirmationNumber, receipt) => {
console.log('confirmation: ' + confirmationNumber);
});

tran.on('transactionHash', hash => {
console.log('hash');
console.log(hash);
});

tran.on('receipt', receipt => {
console.log('reciept');
console.log(receipt);
});

tran.on('error', console.error);
});

关于javascript - 如何使用 web3.js 1.0 认证和发送合约方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com