使用 geth 在本地 avalanche 节点上发送交易

Send transaction on local avalanche node using geth

我已经使用 avalanche network runner 启动了一个本地雪崩网络,并且我已经使用 geth 成功连接到它:

 ❮❮❮ geth attach ws://127.0.0.1:35260/ext/bc/C/ws
Welcome to the Geth JavaScript console!

instance: v0.8.4-rc.3
coinbase: 0x0100000000000000000000000000000000000000
at block: 0 (Wed Dec 31 1969 18:00:00 GMT-0600 (CST))
 modules: eth:1.0 net:1.0 rpc:1.0 web3:1.0

To exit, press ctrl-d or type exit

我正在尝试将交易从一个帐户发送到另一个帐户。我发现这个雪崩网络预种子帐户 0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC 有一些基于 this comment 的 ETH,并使用 geth:

确认了它
> eth.getBalance("0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52Fc")
5e+25

但是,当我尝试从此帐户发送交易时,它失败了:

> eth.getBalance("0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52Fc")
5e+25
> eth.sendTransaction({from:"0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC", to:"0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FD", value: web3.toWei(0.05, "ether")})
Error: unknown account
        at web3.js:6365:37(47)
        at send (web3.js:5099:62(35))
        at <eval>:1:20(15)

我怀疑是因为我在帐户列表中没有该帐户:

> eth.accounts
[]

我尝试使用 geth account import <path to keyfile> 导入帐户,但这并没有导致 eth.accounts 有一个条目。

我也尝试过使用 personal.importRawKey 函数,但它也不起作用:

> personal.importRawKey("56289e99c94b6912bfc12adc093c9b51124f0dc54ac7a766b2bc5ccf558d8027", "lol")
Error: the method personal_importRawKey does not exist/is not available
        at web3.js:6365:37(47)
        at send (web3.js:5099:62(35))
        at <eval>:1:22(5)

> personal
{
  listAccounts: undefined,
  ecRecover: function(),
  getListAccounts: function(callback),
  importRawKey: function(),
  lockAccount: function(),
  newAccount: function github.com/ethereum/go-ethereum/internal/jsre.MakeCallback.func1(),
  openWallet: function github.com/ethereum/go-ethereum/internal/jsre.MakeCallback.func1(),
  sendTransaction: function(),
  sign: function github.com/ethereum/go-ethereum/internal/jsre.MakeCallback.func1(),
  unlockAccount: function github.com/ethereum/go-ethereum/internal/jsre.MakeCallback.func1()
}
  1. 我需要导入这个账号吗?如果是,怎么做?
  2. 如何使用 avalanche 网络运行器的默认资助地址在本地 avalanche 网络上使用 geth 发送交易?

事实证明我在导入私钥方面走在了正确的轨道上,但我必须在 avalanche 节点中启用 personal 命名空间。

可以通过将 internal-private-personal 添加到节点正在使用的 C Chain config 来启用个人命名空间。

启用此命名空间后,您可以使用 geth 连接到您的节点并发布

> personal.importRawKey("56289e99c94b6912bfc12adc093c9b51124f0dc54ac7a766b2bc5ccf558d8027", "lol")
"0x8db97c7cece249c2b98bdc0226cc4c2a57bf52fc"
> personal.unlockAccount("0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC", "lol", 300)

然后启用帐户进行支出。