Skip to content

Commit a2ec05b

Browse files
authored
Merge branch 'master' into spellingNorm
2 parents b2f94c5 + 39ff62a commit a2ec05b

File tree

9 files changed

+87
-86
lines changed

9 files changed

+87
-86
lines changed

docs/clients/wallet-cli-command.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ Balance = 2665198240
192192
```
193193

194194
### UpdateAccountPermission
195-
该命令用于为其他账户赋予当前账户的部分权限,让其他账户可以在该发起账户下完成多种操作以便实现更复杂的功能及更好的管理账户,经常用于多重签名交易等场景
195+
该命令用于管理账户权限,为其他账户赋予当前账户的部分权限,让其他账户可以在该发起账户下完成多种操作以便实现更复杂的功能及更好的管理账户
196196
```shell
197197
wallet>UpdateAccountPermission [ownerAddress] [permissions]
198198
```
@@ -854,12 +854,12 @@ after sign transaction hex string is 0a85010a029ca12208432ed1fe1357ff7f40a2b3a7f
854854
txid is ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483
855855
Send 10 Sun to TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE successful !!
856856
```
857-
在转账过程中,需要输入`permission_id`,其默认值为0,此时表示该笔交易只需发起人签名即可。 在上面的例子中,我们输入了“2”,表示使用多重签名完成此笔交易,此时需要拥有`actives` 权限的两个账户都签名才能完成交易,请参照[UpdateAccountPermission](#UpdateAccountPermission) 部分的例子,首先由`TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej` 完成签名,此时系统会询问是否继续签名,输入“y”之后,再由`TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE` 完成签名。
857+
在转账过程中,需要输入`permission_id`,其默认值为0,此时表示该笔交易只需发起人签名即可。 在上面的例子中,我们输入了“2”,表示需要具有ID为2的权限的账户来签名完成此笔交易,此时需要拥有`actives` 权限的两个账户都签名才能完成交易,请参照[UpdateAccountPermission](#UpdateAccountPermission) 部分的例子,首先由`TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej` 完成签名,此时系统会询问是否继续签名,输入“y”之后,再由`TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE` 完成签名。
858858
859859
两个账户的权重各为1,完成多签的权重阀值为2,此时签名条件达成,交易成功。这个例子为使用同一客户端时如何完成多重签名交易。当使用多个客户端时,请参考下面这个命令。
860860
861861
### AddTransactionSign
862-
当有多个客户端时,可以使用该命令进行多重签名交易,此时需要交易本体的hex string。
862+
当有多个客户端时,可以使用该命令为交易添加签名,此时需要交易本体的hex string。
863863
864864
示例:
865865
```shell

docs/introduction/overview.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ votewitness SR1 3 SR2 7 # 同时给SR1投了3票,给SR2投了7票
6363
只有超级代表对应账户具有提议权,其他账户无法创建提议。允许修改的网络动态参数以及编号如下( [min,max] ):
6464

6565
- 0: MAINTENANCE_TIME_INTERVAL, [3 * 27* 1000 ,24 * 3600 * 1000] //修改超级代表调整时间间隔,目前为6 * 3600 * 1000ms
66-
- 1: ACCOUNT_UPGRADE_COST, [0,100 000 000 000 000 000] //修改账户升级为超级代表的费用,目前为9999_000_000 Sun
67-
- 2: CREATE_ACCOUNT_FEE, [0,100 000 000 000 000 000] // 修改创建账户费用,目前为100_000Sun
66+
- 1: ACCOUNT_UPGRADE_COST, [0,100 000 000 000 000 000] //修改账户升级为超级代表的费用,目前为9,999,000,000 Sun
67+
- 2: CREATE_ACCOUNT_FEE, [0,100 000 000 000 000 000] // 修改创建账户费用,目前为100,000Sun
6868
- 3: TRANSACTION_FEE, [0,100 000 000 000 000 000] // 修改TRX抵扣带宽的费用,目前为10Sun/byte
69-
- 4: ASSET_ISSUE_FEE, [0,100 000 000 000 000 000] // 修改资产发行费用,目前为1024_000_000 Sun
70-
- 5: WITNESS_PAY_PER_BLOCK, [0,100 000 000 000 000 000] // 修改超级代表出块奖励,目前为32_000_000 Sun
71-
- 6: WITNESS_STANDBY_ALLOWANCE, [0,100 000 000 000 000 000] // 修改分给前127名超级代表候选人的奖励,115_200_000_000 Sun
72-
- 7: CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT, []// 修改系统创建账户的费用,目前为1_000_000 Sun
69+
- 4: ASSET_ISSUE_FEE, [0,100 000 000 000 000 000] // 修改资产发行费用,目前为1,024,000,000 Sun
70+
- 5: WITNESS_PAY_PER_BLOCK, [0,100 000 000 000 000 000] // 修改超级代表出块奖励,目前为32,000,000 Sun
71+
- 6: WITNESS_STANDBY_ALLOWANCE, [0,100 000 000 000 000 000] // 修改分给前127名超级代表候选人的奖励,115,200,000,000 Sun
72+
- 7: CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT, []// 修改系统创建账户的费用,目前为1,000,000 Sun
7373
- 8: CREATE_NEW_ACCOUNT_BANDWIDTH_RATE, // 提议7、8,组合使用,用于修改创建账户时对资源或TRX的消耗
7474
- 9: ALLOW_CREATION_OF_CONTRACTS, // 用于控制虚拟机功能的开启
7575
- 10: REMOVE_THE_POWER_OF_THE_GR // 用于清除GR的创世票数
@@ -90,7 +90,7 @@ id0_N: 参数编号
9090
value0_N: 新参数值
9191
```
9292

93-
注:TRON网络中,1 TRX = 1000_000 Sun。
93+
注:Tron网络中,1 TRX = 1,000,000 Sun。
9494

9595
#### 2.4.3 对提议进行投票
9696

@@ -607,7 +607,7 @@ function assignAddress() public view {
607607
freezeBalancev2 frozen_balance [ResourceCode:0 BANDWIDTH,1 ENERGY]
608608
```
609609

610-
通过质押TRX获取的Energy, 额度 = 为获取Energy质押的TRX / 整个网络为获取Energy质押的TRX 总额 * 50_000_000_000
610+
通过质押TRX获取的Energy, 额度 = 为获取Energy质押的TRX / 整个网络为获取Energy质押的TRX 总额 * 50,000,000,000
611611
也就是所有用户按质押TRX平分固定额度的Energy。
612612

613613
示例:
@@ -617,19 +617,19 @@ freezeBalancev2 frozen_balance [ResourceCode:0 BANDWIDTH,1 ENERGY]
617617
618618
二人质押获得的可用Energy分别是
619619
620-
A: 25_000_000_000 且energy_limit 为25_000_000_000
620+
A: 25,000,000,000 且energy_limit 为25,000,000,000
621621
622-
B: 25_000_000_000 且energy_limit 为25_000_000_000
622+
B: 25,000,000,000 且energy_limit 为25,000,000,000
623623
624624
当第三人C质押1TRX时。
625625
626626
三人质押获得的可用Energy调整为
627627
628-
A: 20_000_000_000 且energy_limit调整为20_000_000_000
628+
A: 20,000,000,000 且energy_limit调整为20,000,000,000
629629
630-
B: 20_000_000_000 且energy_limit调整为20_000_000_000
630+
B: 20,000,000,000 且energy_limit调整为20,000,000,000
631631
632-
B: 10_000_000_000 且energy_limit 为10_000_000_000
632+
C: 10,000,000,000 且energy_limit 为10,000,000,000
633633
634634
```
635635

@@ -640,11 +640,11 @@ B: 10_000_000_000 且energy_limit 为10_000_000_000
640640
示例:
641641

642642
```text
643-
在某一时刻A的Energy已使用量为72_000_000 Energy
643+
在某一时刻A的Energy已使用量为72,000,000 Energy
644644
645645
在没有其他消耗或质押的操作下:
646646
647-
一小时后A的Energy已使用量为 72_000_000 - (72_000_000 * (60*60/60*60*24)) Energy = 69_000_000 Energy
647+
一小时后A的Energy已使用量为 72,000,000 - (72,000,000 * (60*60/60*60*24)) Energy = 69,000,000 Energy
648648
649649
24小时后A的Energy已使用量为 0 Energy。
650650
```
@@ -683,15 +683,15 @@ B: 10_000_000_000 且energy_limit 为10_000_000_000
683683

684684
则,feeLimit的预估方法为:
685685

686-
1). A = 20000 energy * (1 trx / 400 energy) = 50 trx = 50_000_000 sun,
686+
1). A = 20000 energy * (1 trx / 400 energy) = 50 trx = 50,000,000 sun,
687687

688-
2). B = 20000 energy * (1 trx / 10000 energy) = 2 trx = 2_000_000 sun,
688+
2). B = 20000 energy * (1 trx / 10000 energy) = 2 trx = 2,000,000 sun,
689689

690-
3). 取A和B的最大值,为50_000_000 sun,
690+
3). 取A和B的最大值,为50,000,000 sun,
691691

692692
4). 开发者承诺承担90%,用户需要承担10%,
693693

694-
那么,建议用户填写的feeLimit为 50_000_000 sun * 10% = 5_000_000 sun。
694+
那么,建议用户填写的feeLimit为 50,000,000 sun * 10% = 5,000,000 sun。
695695

696696
小节附录:
697697

@@ -1059,7 +1059,7 @@ TRON网络引入了Bandwidth point 和 Energy 两种资源概念。其中Bandwid
10591059

10601060
Bandwidth Points的获取分两种:
10611061

1062-
+ 通过质押TRX获取的Bandwidth Points, 额度 = 为获取Bandwidth Points质押的TRX / 整个网络为获取Bandwidth Points质押的TRX 总额 * 43_200_000_000
1062+
+ 通过质押TRX获取的Bandwidth Points, 额度 = 为获取Bandwidth Points质押的TRX / 整个网络为获取Bandwidth Points质押的TRX 总额 * 43,200,000,000
10631063
也就是所有用户按质押TRX平分固定额度的Bandwidth Points。
10641064

10651065
+ 每个账号每天有固定免费额度的带宽,该额度由波场网络的第#61号参数定义,用户可在tronscan上查看最新的值(https://tronscan.org/#/sr/committee)。
@@ -1244,7 +1244,7 @@ ExchangeWithdraw 1 abc 1000000
12441244

12451245
交易中token的当前价格信息的计算过程:
12461246

1247-
假设 first_token 当前的价格为 100 Sun,first_token_balance 为1000_000,second_token_balance 为2000_000
1247+
假设 first_token 当前的价格为 100 Sun,first_token_balance 为1,000,000,second_token_balance 为2,000,000
12481248
second_token 当前的价格为 first_token * first_token_balance/second_token_balance = 50 Sun
12491249
first_token的价格可有"first_token&&TRX"交易对计算获得
12501250

@@ -1254,18 +1254,18 @@ first_token的价格可有"first_token&&TRX"交易对计算获得
12541254

12551255
sellTokenQuant是要卖出的first_token的金额
12561256
buyTokenQuant是要买入的second_token的金额
1257-
supply = 1_000_000_000_000_000_000L
1257+
supply = 1,000,000,000,000,000,000L
12581258
supplyQuant = -supply *(1.0 - Math.pow(1.0 + (double) sellTokenQuant/(firstTokenBalance + sellTokenQuant), 0.0005))
12591259
buyTokenQuant = (long)balance* (Math.pow(1.0 + (double) supplyQuant / supply, 2000.0) - 1.0)
12601260

12611261
注意:由于网络其他账户发生交易,价格可能发生变化。
12621262

12631263
相关api详情,请查询[TRON HTTP API](../api/http.md)
12641264

1265-
## 10. 多重签名
1265+
## 10. 账户权限管理
12661266

12671267
详细信息请参考:
1268-
[波场多重签名](../mechanism-algorithm/multi-signatures.md)
1268+
[账户权限管理](../mechanism-algorithm/multi-signatures.md)
12691269

12701270
## 11. 匿名交易
12711271

docs/mechanism-algorithm/dex.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ ExchangeWithdraw 1 abc 1000000
109109

110110
交易中token的当前价格信息的计算过程:
111111

112-
假设 first_token 当前的价格为 100 Sun,first_token_balance 为1000_000, second_token_balance 为2000_000
112+
假设 first_token 当前的价格为 100 Sun,first_token_balance 为1,000,000, second_token_balance 为2,000,000
113113

114114
second_token 当前的价格为 first_token * first_token_balance/second_token_balance = 50 Sun
115115

@@ -121,7 +121,7 @@ sellTokenQuant是要卖出的first_token的金额
121121

122122
buyTokenQuant是要买入的second_token的金额
123123

124-
supply = 1_000_000_000_000_000_000L
124+
supply = 1,000,000,000,000,000,000L
125125

126126
supplyQuant = -supply * (1.0 - Math.pow(1.0 + (double) sellTokenQuant/(firstTokenBalance + sellTokenQuant), 0.0005))
127127

docs/mechanism-algorithm/multi-signatures.md

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
# 多重签名
1+
# 账户权限管理
22

33
## 背景
44

5-
多重签名功能允许权限分级,每个权限可以对应多个私钥。这使得实现账户的多人联合控制成为可能。
6-
7-
[TRON multi-signatures TIP](https://github.com/tronprotocol/tips/blob/master/tip-16.md)
5+
[账户权限管理](https://github.com/tronprotocol/tips/blob/master/tip-16.md)功能允许权限分级,每个权限可以对应多个私钥。这使得实现账户的多人联合控制成为可能。
86

97
## 概念说明
108

@@ -51,10 +49,10 @@ message AccountPermissionUpdateContract {
5149
}
5250
```
5351

54-
`owner_address`:待修改权限的账户的地址
55-
`owner`:修改后的 owner 权限
56-
`witness`:修改后的 witness 权限
57-
`actives`:修改后的 actives 权限
52+
* `owner_address`:待修改权限的账户的地址
53+
* `owner`:修改后的 owner 权限
54+
* `witness`:修改后的 witness 权限
55+
* `actives`:修改后的 actives 权限
5856

5957
注意:该接口是覆盖原账户权限,因此,如果只想修改owner权限,witness(如果是超级代表账户)及actives的也需要设置。
6058

@@ -77,16 +75,16 @@ message Permission {
7775
}
7876
```
7977

80-
`PermissionType`: 权限类型,目前仅支持三种权限
81-
`id`: 值由系统自动设置,Owner id=0, Witness id=1, Active id 从2开始递增分配。在执行合约时,
78+
* `PermissionType`: 权限类型,目前仅支持三种权限
79+
* `id`: 值由系统自动设置,Owner id=0, Witness id=1, Active id 从2开始递增分配。在执行合约时,
8280
通过该id来指定使用哪个权限,如使用owner权限,即将id设置为0。
83-
`permission_name`: 权限名称,由用户设定,长度限制为32字节
84-
`threshold`: 阈值,只有当参与签名的权重之和超过域值才允许做相应的操作。要求小于Long类型的最大值
85-
`parent_id`:目前只能为0
86-
`operations`:共32字节(256位),每位代表一个合约的权限,为1时表示拥有该合约的权限。
81+
* `permission_name`: 权限名称,由用户设定,长度限制为32字节
82+
* `threshold`: 阈值,只有当参与签名的权重之和超过域值才允许做相应的操作。要求小于Long类型的最大值
83+
* `parent_id`:目前只能为0
84+
* `operations`:共32字节(256位),每位代表一个合约的权限,为1时表示拥有该合约的权限。
8785
`operations=0x0100...00(十六进制),即100...0(二进制)`时,查看proto中Transaction.ContractType定义,合约AccountCreateContract的id为0,
8886
即表示该permission只拥有执行AccountCreateContract的权限,可以使用"active权限中operations的计算示例"计算获得。
89-
`keys`:共同拥有该权限的地址及权重,最多允许5个key。
87+
* `keys`:共同拥有该权限的地址及权重,最多允许5个key。
9088

9189
#### Key
9290

@@ -97,8 +95,8 @@ message Key {
9795
}
9896
```
9997

100-
`address`:拥有该权限的地址
101-
`weight`:该地址对该权限拥有权重
98+
* `address`:拥有该权限的地址
99+
* `weight`:该地址对该权限拥有权重
102100

103101
#### Transaction
104102

@@ -117,10 +115,11 @@ message Transaction {
117115
OwnerPermission是账户的最高权限,用于控制用户的所有权、调整权限结构,Owner权限也可以执行所有合约。
118116

119117
Owner权限具有以下特性:
120-
1、拥有OwnerPermission的地址可以修改OwnerPermission。
121-
2、当OwnerPermission为空时,默认采用该账户的地址具有owner权限。
122-
3、账户新建时,自动将该账户的地址填充到OwnerPermission中,并默认域值为1,keys中仅包含该账户地址且权重为1。
123-
4、当执行合约时未指定permissionId时, 默认采用OwnerPermission。
118+
119+
1. 拥有OwnerPermission的地址可以修改OwnerPermission。
120+
2. 当OwnerPermission为空时,默认采用该账户的地址具有owner权限。
121+
3. 账户新建时,自动将该账户的地址填充到OwnerPermission中,并默认域值为1,keys中仅包含该账户地址且权重为1。
122+
4. 当执行合约时未指定permissionId时, 默认采用OwnerPermission。
124123

125124
### Witness权限
126125

@@ -129,8 +128,9 @@ Owner权限具有以下特性:
129128
使用场景示例:一个超级代表在云服务器上部署出块程序,为了账户安全,此时可以将出块权限赋予另一个地址。由于该地址仅具有出块权限,无TRX转出权限,即使该服务器上私钥被泄密,也不会出现TRX丢失。
130129

131130
出块节点的配置:
132-
1、未修改witness权限时,无需特殊配置。
133-
2、修改witness权限后的出块节点,需要在重新配置,配置项如下:
131+
132+
1. 未修改witness权限时,无需特殊配置。
133+
2. 修改witness权限后的出块节点,需要在重新配置,配置项如下:
134134

135135
```conf
136136
#config.conf
@@ -158,16 +158,17 @@ localwitness = [
158158
Active权限,用于提供一个权限的组合,比如提供一个只能执行创建账户、转账功能的权限。
159159

160160
Active权限有以下特性:
161-
1、拥有OwnerPermission的地址可以修改Active权限
162-
2、拥有执行AccountPermissionUpdateContract权限的地址也能够修改Active权限
163-
3、最多支持8个组合。
164-
4、permission的id从2开始自动递增。
165-
5、账户新建时,自动创建一个Active权限,并将该账户的地址填充到其中,默认域值为1,keys中仅包含该账户地址且权重为1。
161+
162+
1. 拥有OwnerPermission的地址可以修改Active权限
163+
2. 拥有执行AccountPermissionUpdateContract权限的地址也能够修改Active权限
164+
3. 最多支持8个组合。
165+
4. permission的id从2开始自动递增。
166+
5. 账户新建时,自动创建一个Active权限,并将该账户的地址填充到其中,默认域值为1,keys中仅包含该账户地址且权重为1。
166167

167168
### 费用
168169

169170
1. 使用更新账户权限时,即 AccountPermissionUpdate 合约,收取100TRX。
170-
2. 使用多重签名的交易时,即交易中包括两个及两个以上签名的交易,除交易费用外,另收取1TRX。
171+
2. 交易中包括两个及两个以上签名时,除交易费用外,另收取1TRX。
171172
3. 可通过提议,修改以上费用。
172173

173174
## API
@@ -176,10 +177,10 @@ Active权限有以下特性:
176177

177178
`AccountPermissionUpdateContract`,修改权限步骤如下:
178179

179-
1使用接口`getaccount`查询账户,并获取原权限
180-
2修改permission
181-
3创建合约,签名
182-
4发送交易
180+
1. 使用接口`getaccount`查询账户,并获取原权限
181+
2. 修改permission
182+
3. 创建合约,签名
183+
4. 发送交易
183184

184185
### http-demo
185186

@@ -265,17 +266,17 @@ public static void main(String[] args) {
265266

266267
### 执行合约
267268

268-
1、创建交易,与非多重签名交易的构建过程相同
269-
2、指定Permission_id,默认为0,表示owner-permission, [demo](https://github.com/tronprotocol/wallet-cli/commit/ff9122f2236f1ce19cbb9ba9f0494c8923a3d10c#diff-a63fa7484f62fe1d8fb27276c991a4e3R211)
270-
3、用户A签名,将签名后交易通过其他方式发送给B。
271-
4、用户B签名,将签名后交易通过其他方式发送给C。
269+
1. 创建交易,与非多重签名交易的构建过程相同
270+
2. 指定Permission_id,默认为0,表示owner-permission, [demo](https://github.com/tronprotocol/wallet-cli/commit/ff9122f2236f1ce19cbb9ba9f0494c8923a3d10c#diff-a63fa7484f62fe1d8fb27276c991a4e3R211)
271+
3. 用户A签名,将签名后交易通过其他方式发送给B。
272+
4. 用户B签名,将签名后交易通过其他方式发送给C。
273+
272274
273-
n、最后一个完成签名的用户,将交易广播到节点。
274-
n+1、验证多重签名的权重之和大于域值则接受交易,否则拒绝交易
275275

276-
代码示例:
276+
n. 最后一个完成签名的用户,将交易广播到节点。
277+
278+
n+1. 节点验证所有签名的权重之和,如果大于等于域值则接受交易,否则拒绝交易
277279

278-
[多重签名示例](https://github.com/tronprotocol/wallet-cli/blob/multi_sign_V2/src/main/java/org/tron/demo/MultiSignDemo.java)
279280

280281
### 其他相关接口
281282

0 commit comments

Comments
 (0)