Home指南API 参考手册
指南API 参考手册社区Discord博客FAQ漏洞赏金公告中心English(英文版)Log In
指南

高级配置:超级代表出块授权

超级代表(SR)的账户权限可通过 账户权限管理 功能进行分组管理。一个常见的应用场景是将出块权授权给其他账户,同时保留自身的其他控制权。这种方式可以提升操作的灵活性,并带来更高的安全性。

本指南将介绍如何修改账户权限,以及在 SR 出块权变更后如何配置产块节点。


修改 SR 账户权限

超级代表(SR)可以通过 Tronscan 网站或 wallet/accountpermissionupdate 接口来管理和修改其账户权限。

❗️

注意

在修改 SR 账户权限之前,请务必确保对应的产块节点已停止运行。

查询 SR 账户权限

使用 wallet/getaccount 接口查询 SR 的权限信息:

curl --location --request POST 'https://api.nileex.io/wallet/getaccount' \
--header 'Content-Type: text/plain' \
--data-raw '{
     "address": "TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ",
     "visible": true
}'

返回:

{
    "address": "TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ",
    ......
    "owner_permission": {
        "permission_name": "owner",
        "threshold": 1,
        "keys": [
            {
                "address": "TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ",
                "weight": 1
            }
        ]
    },
    "witness_permission": {
        "type": "Witness",
        "id": 1,
        "permission_name": "witness",
        "threshold": 1,
        "keys": [
            {
                "address": "TWDTKh7d3LzZhvBCrnWpJwGtsY2yw1NxFo",
                "weight": 1
            }
        ]
    },
    "active_permission": [
        ......
    ],
    ......
}

返回结果显示,SR 账户 TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ 已经把出块权交给了账户 TWDTKh7d3LzZhvBCrnWpJwGtsY2yw1NxFo

配置 SR 节点

SR 的出块权(witness permission)变更后,请按如下方式配置其出块节点:

// Optional.The default is empty.
// It is used when the witness account has set the witnessPermission.
// When it is not empty, the localWitnessAccountAddress represents the address of the witness account,
// and the localwitness is configured with the private key of the witnessPermissionAddress in the witness account.
// When it is empty,the localwitness is configured with the private key of the witness account.

localWitnessAccountAddress = TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ

// the private key of TWDTKh7d3LzZhvBCrnWpJwGtsY2yw1NxFo
localwitness = [ 9191d6......13f818
]

#localwitnesskeystore = [
#  "localwitnesskeystore.json"
#]

其中:

  1. localWitnessAccountAddress:设置为 SR 的账户地址:TUZKijZ9Esy8JEkrqMpaVgtbDKKNA5p5CZ
  2. localwitness:设置为被授权出块的账户的私钥,即 TWDTKh7d3LzZhvBCrnWpJwGtsY2yw1NxFo 的私钥。

请注意:如果 SR 未将其出块权授权给其他账户(即出块权仍归属于其自身),则无需配置 localWitnessAccountAddress,仅需将 localwitness 配置为 SR 账户自身的私钥。

启动节点

若要在全节点上启用出块功能,请在启动命令中加入 --witness 参数。

$ java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar --witness -c config.conf

注:关于节点部署的详细说明,请参阅此文档

节点启动并完成数据同步后,当轮到该节点出块时,它会使用 localwitness 中配置的私钥对区块数据进行签名。签名数据将存储在区块头的 witness_signature 字段中。随后,网络中的其他节点将对该区块进行验证。验证过程中,系统会检查签名私钥对应的地址是否拥有出块权。该出块权归属于 block_header.raw_data.witness_address 字段所记录的 SR 地址。若验证通过,则该区块被确认为合法区块。