我正在运行一个 RSK 节点,我正在尝试使用发送事务,personal_sendTransaction
但出现此错误:
The local wallet feature is disabled
我怎样才能解决这个问题?提前致谢
您正在尝试使用personal
模块,此功能意味着将您的帐户导入节点。在另一个答案中,通过在 RSKj 配置文件中以纯文本形式添加公钥和私钥来将帐户导入节点,这是不安全的,因为获得对文件系统的访问权足以危及您的私钥。因此,这种方法可能只是为了方便而使用,并且仅用于 Testnet 或 Regtest - 不适用于 Mainnet 上的任何帐户。
另一种方法是personal
启用模块,使用personal_importRawKey
RPC 添加新帐户。这种方式更安全一些,因为密码不会持久化到文件系统中。
即使运行节点的机器被攻破,并且攻击者可以读取配置文件,你的私钥也不会因此被攻破。
完整的步骤如下:
(1) 启用personal
模块(默认启用):
rpc {
modules = [
...,
{
name: "personal",
version: "1.0",
enabled: "true"
},
...
]
}
(2) 调用personal_importRawKey
RPC添加新账户:
curl \
-X POST \
--data '{"jsonrpc":"2.0","method":"personal_importRawKey","params":["YOUR_RAW_KEY", "YOUR_PASSPHRASE"],"id":1}' \
--header "Content-Type:application/json" \
http://localhost:4444/
(3) 在使用该账户签署交易之前,您需要调用personal_unlockAccount
您刚刚创建的账户。请注意,这DURATION
是可选的,默认为300
(5 分钟)。
curl \
-X POST \
--data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["YOUR_ACCOUNT_ADDRESS", "YOUR_PASSPHRASE", DURATION],"id":1}' \
--header "Content-Type:application/json" \
http://localhost:4444/
您正在尝试使用personal
模块,此功能意味着将您的帐户导入节点
注意:出于安全原因,不建议使用此方法,但是可以这样做。
为此,您需要在 RSKj 配置文件中为此配置您的节点。这应该main.conf
适用于 RSK 主网:
(1) 启用personal
模块(默认启用):
rpc {
modules = [
...,
{
name: "personal",
version: "1.0",
enabled: "true"
},
...
]
}
(2) 启用wallet
并添加您的帐户:
wallet {
enabled = true
accounts = [
{
"publicKey" : "<PUBLIC_KEY>"
"privateKey" : "<PRIVATE_KEY>"
}
]
}
在此之后,您将能够使用以下所有 RPC 方法:
personal_sendTransaction
personal_importRawKey
personal_listAccounts
personal_lockAccount
personal_newAccount
personal_unlockAccount
例子:
curl \
-X POST \
--data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}' \
--header "Content-Type:application/json" \
http://localhost:4444