【发布时间】:2019-03-19 16:24:11
【问题描述】:
我目前正在使用 Solidity 开发一个 dApp,并且正在开发一个 web3 库来处理与它的通信。
我在 web3 中创建新帐户和交易签名的过程中遇到了困难。在我继续之前,值得注意的是我正在运行我自己的本地私有区块链(目前使用 Ganache)。
我的代码如下:
try{
let a = web3.eth.accounts.create()
let dataTx = someContract.methods.someMethod().encodeABI()
let rawTx = {
to: someContract._address,
from: account.address,
data: dataTx,
gas: 10000000000
}
const transaction = web3.eth.accounts.signTransaction(rawTx, util.toBuffer(account.privateKey))
web3.eth.sendTransaction(rawTx).then(console.log)
}
catch(e){
console.log(e)
}
这里的问题是web3.eth.sendTransaction() 方法引发了以下异常:Error: Returned error: sender account not recognized。
我的理解是web3.eth.accounts 用于管理本地帐户,web3.eth.personal 用于与客户(例如 Geth)进行通信。我希望将我的应用在本地创建的帐户的私钥保留在 web3 客户端的设备上,但这会引发此异常。
我哪里错了?在与它进行交易之前,我应该在某处注册新创建的帐户吗?我在这里遗漏了一些重要信息吗?
谢谢!
【问题讨论】:
标签: ethereum solidity web3 web3js