波场TRON协议怎么样设置多重签名

昕阳小编 96 0

多重签名功能允许权限分级,每个权限可以对应多个私钥。这就使得实现多人共同控制账户成为可能。本指南指导用户完成TRON的多重签名实现和设计。

https://github.com/tronprotocol/tips/issues/16

波场TRON协议怎么样设置多重签名-第1张图片-昕阳网

概念描述该方案包括三个权限级别:所有者权限、见证权限和主动权限,其中所有者权限有权执行所有合同。

结构描述1。账户修改

账户结构中新增三个权限属性,分别是owner_permission、witness_permission和active_permission,其中active_permission为列表,最多可以指定八个。波场TRON协议怎么样设置多重签名-第2张图片-昕阳网

2。ContractType修改

添加一个新的交易类型account permission update contract,用于更新帐户权限。

波场TRON协议怎么样设置多重签名-第3张图片-昕阳网 3。account permission update contract

这个接口覆盖了原始的帐户权限。所以如果只是想修改所有者权限,witness(如果是witnss账号)和actives也需要设置。

波场TRON协议怎么样设置多重签名-第4张图片-昕阳网 4。权限波场TRON协议怎么样设置多重签名-第5张图片-昕阳网

5。键

波场TRON协议怎么样设置多重签名-第6张图片-昕阳网 6。事务修改波场TRON协议怎么样设置多重签名-第7张图片-昕阳网

在事务中添加Permission_id字段,对应Permission.id,波场TRON协议怎么样设置多重签名-第8张图片-昕阳网默认值为0,即所有者权限。1是不允许的,因为见证权限仅用于发出块,而不用于签署事务。波场TRON协议怎么样设置多重签名-第9张图片-昕阳网

Owner permission

波场TRON协议怎么样设置多重签名-第10张图片-昕阳网Owner permission是一个账号的最高权限,用于控制用户的所有权,调整权限结构。所有者权限也可以执行所有合同。

OwnerPermission具有以下特征:1。拥有者权限可以由拥有者权限的地址修改。

2。当ownerPermission为空时,默认情况下假定该帐户的地址具有所有者权限。

3。新创建帐户时,帐户的地址会自动填充到OwnerPermission中,默认的域值为1。keys仅包含权重为1的帐户地址。

4。如果在执行合同时未指定permissionId,则默认采用OwnerPermission。

见证权限

超级代表可以使用该权限管理块节点。非见证帐户没有此权限。

使用场景示例:超级代表在云服务器上部署封锁程序。为了帐户安全,此时可以将封锁权限授予另一个地址。因为这个地址只有屏蔽权,没有转出TRX的权利,所以即使这个服务器上的私钥泄露,也不会有TRX的损失。见证块外节点的配置:

1。不修改见证权限时,不需要特殊配置。

2。修改见证权限后,需要在中重新配置块外节点。配置项如下:

#config.conf//?可选。那个?违约?是吗?空的。//?它?是吗?二手?什么时候?那个?证人?账户?有吗?设置?那个?证人许可。//?什么时候?它?是吗?不是吗?空的,那个?localWitnessAccountAddress?代表着?那个?地址?的?那个?证人?账号,//?然后呢。那个?本地证人?是吗?配置好了?用什么?那个?私人?钥匙?的?那个?witnessPermissionAddress?在?那个?证人?账户。//?什么时候?它?是吗?空的?本地证人?是吗?配置好了?用什么?那个?私人?钥匙?的?那个?证人?账户。//可选,默认为空。//在为见证帐户设置witnessPermission时使用。//当值不为空时,localwitnessAccountAddress表示见证帐户的地址,localwitness是witnessPermission中地址的私钥。//当该值为空时,localwitness被配置为见证帐户的私钥。//localwitnessaccountdress?=localwitness?=?【F4 df 789d 3210 AC 881 CB 90464d 30409453044d 277060 a 0 c 391 CBD f 4c 64 f 57

主动特权

主动特权用于提供特权的组合,例如提供只能执行创建帐户和转账功能的特权。

活动权限具有以下特征:1。拥有OwnerPermission的地址可以修改活动权限

2。具有执行account permission update contract权限的地址也可以修改活动权限

3。最多支持8种组合。

4。权限id自动从2开始递增。

5。当新创建一个帐户时,会自动创建一个活动权限,并在其中填入该帐户的地址。默认的域值是1,键只包含权重为1的帐户地址。

费用

1。当你使用更新账户权限,也就是AccountPermissionUpdate契约时,会被收取100TRX。

2。使用多签名交易时,即交易包含两个或两个以上签名,除交易成本外还将收取1TRX。3。以上费用可通过提案修改。

API

修改权限

账户权限更新契约,修改权限的步骤如下:1 .使用接口getaccount查询账户,获取原始权限

2。修改权限

3。签名

4。send transaction

active 尚力财经小编2022 authority中运算的计算示例:

public static void main(string[]args){

//指定要支持的契约id(参见Transaction的定义。proto中的ContractType),有除account permission update contract(ID=46)以外的所有合约。波场TRON协议怎么样设置多重签名-第11张图片-昕阳网Integer[]?收缩?=?{0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,30,31,32,33,41,42,43,44,45};列表列表?=?新的?ArrayList(arrays . aslist(contract id));byte[]?运营?=?新的?字节[32];list.forEach(e?-?{操作[e?/?8]?|=?(1?e?%?8);});//7 fff 1 fc 0037 e 000000000000000000000000000000000000000000000 system . out . println(bytearray . tohexstring(operations));}

执行合同

1。创建事务,与非多重签名事务

2的构造过程相同。指定Permission_id,默认为0,表示owner-permission

3。用户A签名并通过其他方式将签名后的交易发送给B。4。用户B签名并通过其他方式将签名后的交易发送给C。

n,最后一个完成签名的用户将向节点广播事务。

n 1。验证多个签名的权重之和大于阈值,然后接受交易。否则拒绝交易

代码尚力财经小编2022示例:

https://github.com/tron协议/wallet-CLI/blob/multi _ sign _ v2/src/main/Java/org/Tron/demo/multisigndemo . Java

其他参见Tron-http.md和波场钱包RPC-API.md

1 .添加签名

卷曲?-X?post http://127 . 0 . 0 . 1:8090/wallet/addtransactionsign?-迪?'{'交易& # 039;'转让合同& # 039;'privateKey & # 039:'permissionkey1 & # 039}'rpc?AddSign?(TransactionSign)?退货?(TransactionExtention)?{}

2。查询签约地址

curl?-X?post http://127 . 0 . 0 . 1:8090/wallet/getapprovedlist?-迪?'{'交易& # 039;}'rpc?GetTransactionApprovedList(事务)?退货?(TransactionApprovedList)?{?}

3。查询交易签名权重

curl?-X?post http://127 . 0 . 0 . 1:8090/wallet/getsignwight?-迪?'{'交易& # 039;}'rpc?GetTransactionSignWeight?(交易)?退货?(TransactionSignWeight)?{}

操作是

& quot;7 fff 1 fc 0037 e 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

标签: 2022

抱歉,评论功能暂时关闭!

微信号已复制,请打开微信添加咨询详情!