8

我正在运行一个 RSK 节点,我正在尝试使用发送事务,personal_sendTransaction但出现此错误:

The local wallet feature is disabled

我怎样才能解决这个问题?提前致谢

4

2 回答 2

6

您正在尝试使用personal模块,此功能意味着将您的帐户导入节点。在另一个答案中,通过在 RSKj 配置文件中以纯文本形式添加公钥和私钥来将帐户导入节点,这是不安全的,因为获得对文件系统的访问权足以危及您的私钥。因此,这种方法可能只是为了方便而使用,并且仅用于 Testnet 或 Regtest - 不适用于 Mainnet 上的任何帐户。

另一种方法是personal启用模块,使用personal_importRawKeyRPC 添加新帐户。这种方式更安全一些,因为密码不会持久化到文件系统中。

即使运行节点的机器被攻破,并且攻击者可以读取配置文件,你的私钥也不会因此被攻破。

完整的步骤如下:

(1) 启用personal模块(默认启用):

rpc {
    modules = [
        ...,
        {
            name: "personal",
            version: "1.0",
            enabled: "true"
        },
        ...
    ]
}

(2) 调用personal_importRawKeyRPC添加新账户:

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/
于 2021-03-03T12:31:23.423 回答
4

您正在尝试使用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
于 2021-03-01T10:37:08.270 回答