diff --git a/developers/governance/index.html b/developers/governance/index.html index 4aed5e3..63a3978 100644 --- a/developers/governance/index.html +++ b/developers/governance/index.html @@ -191,7 +191,7 @@
我们希望TRON生态所有用户都能参与到网络治理中,为了能够在社区进行更好的宣传,建议您为提议投票进行命名,并将名称写在标题的最前面,下面是一个示例: -
Palma Upgrade:proposal to change the unit price of energy to 420 sun
+Palma Upgrade:proposal to change the unit price of energy to 210 sun
主体内容¶
讨论中应详细介绍该提议的内容,包括动机、预估的发起提案的时间及生效时间、如何发起提议投票、该提案的技术规范或背景信息等:
diff --git a/index.html b/index.html
index 8c87ef6..a059d1f 100644
--- a/index.html
+++ b/index.html
@@ -224,5 +224,5 @@ 欢迎访问Java-tron用户手册!
diff --git a/mechanism-algorithm/resource/index.html b/mechanism-algorithm/resource/index.html
index 5f62a11..47f08ea 100644
--- a/mechanism-algorithm/resource/index.html
+++ b/mechanism-algorithm/resource/index.html
@@ -96,16 +96,22 @@
3. Bandwidth Points的计算规则
4. 带宽的自动恢复
+
+ 5. 账户带宽余额查询
能量
- - 1. Energy的获取
+
- 1. Energy的获取与消耗
@@ -115,24 +121,30 @@
+ 动态能量模型
+
+ - 工作原理
+
+
+
在TRON网络上质押
- - 如何质押获取系统资源
+
- 如何质押获取系统资源
- - 如何代理资源
+
- 如何代理资源
- - 如何解质押
+
- 如何解质押
+ - 如何取消全部解质押
+
- API
- 其他交易费
-
智能合约
@@ -228,7 +240,7 @@ 投票权&pa
选民可以分批多次质押,多次质押获取到的投票权会被累加到选民账户内,选民可以通过wallet/getaccountresource
接口查询账户拥有的投票权总数以及已使用的投票权数量。
带宽¶
交易以字节数组的形式在网络中传输及存储,一条交易消耗的 Bandwidth Points = 交易字节数 * Bandwidth Points费率。当前 Bandwidth Points费率 = 1.
-如一条交易的字节数组长度为200,那么该交易需要消耗 200 Bandwidth Points。
+如一条交易的字节数为200,那么该交易需要消耗 200 Bandwidth Points。
Note
由于网络中总质押资金以及账户的质押资金随时可能发生变化,因此账户拥有的 Bandwidth Points 不是固定值。
@@ -236,15 +248,14 @@ 带宽¶
1. Bandwidth Points的来源¶
Bandwidth Points的获取分两种:
-- 通过质押TRX获取的Bandwidth Points, 额度 = 为获取Bandwidth Points质押的TRX / 整个网络为获取Bandwidth Points质押的TRX 总额 * 43_200_000_000. 也就是所有用户按质押TRX平分固定额度的Bandwidth Points.
+- 通过质押TRX获取的Bandwidth Points, 额度 = 为获取Bandwidth Points质押的TRX / 整个网络为获取Bandwidth Points质押的TRX 总额 * 43_200_000_000,也就是所有用户按质押的TRX数量平分固定额度的Bandwidth Points.
- 每个账号每天有固定免费额度的带宽,为600。
2. Bandwith Points的消耗¶
除了查询操作,任何交易都需要消耗 bandwidth points。
-有一种特殊情况需要注意,如果是转账,包括普通转账或 TRC10 Token 转账,如果目标账户不存在,转账操作则会创建账户并转账,只会扣除创建账户消耗的Bandwidth Points,转账不会再消耗额外的Bandwidth Points.
3. Bandwidth Points的计算规则¶
Bandwidth Points是一个账户1天内能够使用的总字节数。一定时间内,整个网络能够处理的Bandwidth为确定值。
-如果交易需要创建新账户,Bandwidth Points消耗如下:
+如果交易需要创建新账户(如创建新账户交易,向未激活的账户转账TRX或者TRC10代币),Bandwidth Points消耗如下:
- 尝试消耗交易发起者质押获取的Bandwidth Points。如果交易发起者Bandwidth Points不足,则进入下一步
- 尝试消耗交易发起者的TRX,这部分烧掉0.1TRX
@@ -264,36 +275,54 @@ 3. Bandwidth Points的计算规则4. 带宽的自动恢复¶
账户的免费带宽和质押TRX获取的带宽消耗后, 会在24小时内逐步恢复。
+5. 账户带宽余额查询¶
+首先调用节点HTTP接口wallet/getaccountresource
来获取账户当前的资源状态,然后通过如下公式计算带宽余额:
+免费带宽余额 = freeNetLimit - freeNetUsed
+通过质押获取的带宽余额 = NetLimit - NetUsed
+
+注:如果接口返回的结果中没有包含上述公式中的参数,表示该参数值为0。
能量¶
智能合约运行时执行每一条指令都需要消耗一定的系统资源,资源的多少用Energy的值来衡量。
-1. Energy的获取¶
+1. Energy的获取与消耗¶
质押获取Energy,即将持有的trx锁定,无法进行交易,作为抵押,并以此获得免费使用Energy的权利。具体计算与全网所有账户质押有关,可参考相关部分计算。
质押获得能量¶
freezeBalanceV2 frozen_balance [ResourceCode:0 BANDWIDTH,1 ENERGY]
-通过质押TRX获取的Energy, 额度 = 为获取Energy质押的TRX / 整个网络为获取Energy质押的TRX 总额 * 90_000_000_000。
-也就是所有用户按质押TRX平分固定额度的Energy。
-示例:
+通过质押TRX获取的Energy 额度 = 为获取Energy质押的TRX / 整个网络为获取Energy质押的TRX 总额 * 150_000_000_000。
+也就是所有用户按质押的TRX数量平分固定额度的Energy,示例:
如全网只有两个人A,B分别质押2TRX,2TRX。
二人质押获得的可用Energy分别是
-A: 25_000_000_000 且energy_limit 为25_000_000_000
+A: 75_000_000_000 且energy_limit 为75_000_000_000
-B: 25_000_000_000 且energy_limit 为25_000_000_000
+B: 75_000_000_000 且energy_limit 为75_000_000_000
当第三人C质押1TRX时。
三人质押获得的可用Energy调整为
-A: 20_000_000_000 且energy_limit调整为20_000_000_000
+A: 60_000_000_000 且energy_limit调整为60_000_000_000
-B: 20_000_000_000 且energy_limit调整为20_000_000_000
+B: 60_000_000_000 且energy_limit调整为60_000_000_000
-B: 10_000_000_000 且energy_limit 为10_000_000_000
+B: 30_000_000_000 且energy_limit 为30_000_000_000
-能量的恢复¶
+能量的消耗¶
+在执行合约时,逐条指令计算并扣除账户能量,账户能量消耗的优先级如下:
+
+- 质押TRX获取的能量
+- 燃烧TRX
+
+首先会消耗交易发起者质押TRX获取的能量,如果消耗完这部分能量后还不够,会继续燃烧账户的TRX来支付交易所需的能量资源,按照每一个能量0.00021TRX的单价来支付。
+如果合约中途由于抛出revert异常而退出,则仅扣除已经执行的指令所对应的能量,但是对于异常合约,比如合约执行超时,或因bug异常退出,会扣除本次交易最大可用的能量,用户可以通过设置交易的fee_limit参数来限定这笔交易最多可以消耗的能量费用上限。
+能量的恢复¶
账户的能量资源消耗后,会在24小时内逐步恢复。
+账户能量余额查询¶
+首先调用节点HTTP接口wallet/getaccountresource来获取账户当前的资源状态,然后通过如下公式计算能量余额:
+能量余额 = EnergyLimit - EnergyUsed
+
+注:如果接口返回的结果中没有包含上述公式中的参数,表示该参数值为0。
2. 如何填写 feeLimit(用户必读)¶
在本节范围内,将合约的开发部署人员,简称为“开发者”;将调用合约的用户或者其他合约,简称为“调用者”。
@@ -301,8 +330,8 @@ 2. 如何填写 feeLimit(用户必读)
合理设置feeLimit,一方面能尽量保证正常执行;另外一方面,如果合约所需Energy过大,又不会过多消耗调用者的trx。在设置feeLimit之前,需要了解几个概念:
-- 合法的feeLimit为0 - 10^9 之间的整数值,单位是sun,折合0 - 1000 trx;
-- 不同复杂度的合约,每次正常执行消耗不同的Energy;相同合约每次消耗的Energy基本相同[^1];执行合约时,逐条指令计算并扣除Energy,如果超过feeLimit的限制,则合约执行失败,已扣除的Energy不退还;
+- 合法的feeLimit为0 - 15*10^9 之间的整数值,单位是sun,折合0 - 15000 trx;
+- 不同复杂度的合约,每次正常执行消耗不同的Energy;相同合约每次消耗的Energy基本相同[^1],但由于动态能量模型机制,对于热门合约,不同时刻执行时可能需要的能量不同,具体请参考动态能量模型章节;执行合约时,逐条指令计算并扣除Energy,如果超过feeLimit的限制,则合约执行失败,已扣除的Energy不退还;
- 目前feeLimit仅指调用者愿意承担的Energy折合的trx[^2];执行合约允许的最大Energy还包括开发者承担的部分;
- 一个恶意合约,如果最终执行超时,或者因bug合约崩溃,则会扣除该合约允许的所有energy;
- 开发者可能会承担一定比例的Energy消耗(比如承担90%)。但是,当开发者账户的Energy不足以支付时,剩余部分完全由调用者承担。在feeLimit限制范围内,如调用者的Energy不足,则会燃烧等价值的trx。[^2]
@@ -311,23 +340,20 @@ 2. 如何填写 feeLimit(用户必读)示例
下面将以一个合约C的执行,来具体举例,如何估算feeLimit:
-- 假设合约C上一次成功执行时,消耗了18000 Energy,那么预估本次执行消耗的Energy上限为20000 Energy;[^3]
-- 质押trx时,当前全网用于CPU质押的TRX总量和Energy总量的比值,假设是质押1 trx,可以获得400 Energy;
-- 燃烧trx时,4 trx固定可以兑换100000 Energy;[^4]
+- 假设合约C上一次成功执行时,消耗了18000 Energy,那么预估本次执行消耗的Energy上限为20000 Energy;
+- 燃烧trx时,由于能量单价目前为210sun,所以 21 trx固定可以兑换100000 Energy;
- 假设开发者承诺承担90%的Energy,而且开发者账户有充足的Energy;
则,feeLimit的预估方法为:
-- A = 20000 energy * (1 trx / 400 energy) = 50 trx = 50_000_000 sun,
-- B = 20000 energy * (4 trx / 10000 energy) = 0.8 trx = 800_000 sun,
-- 取A和B的最大值,为50_000_000 sun,
+- A = 20000 energy * 210sun = 4_200_000 sun = 4.2 trx,
- 开发者承诺承担90%,用户需要承担10%,
-那么,建议用户填写的feeLimit为 50_000_000 sun * 10% = 5_000_000 sun。
+那么,建议用户填写的feeLimit为 4_200_000 sun * 10% = 420_000 sun。
3. Energy的计算(开发者必读)¶
在讨论本章节前,需要了解:
-- tron为了惩罚恶意开发者,对于异常合约,如果执行超时(超过50ms),或因bug异常退出(不包含revert),会扣除本次的最大可用Energy。若合约正常执行,或revert,则仅扣除执行相关指令所需的Energy;
+- tron为了惩罚恶意开发者,对于异常合约,如果执行超时(超过80ms),或因bug异常退出(不包含revert),会扣除本次的最大可用Energy。若合约正常执行,或revert,则仅扣除执行相关指令所需的Energy;
- 开发者可以设置执行合约时,消耗Energy中自己承担的比例,该比例后续可修改。一次合约调用消耗的Energy,若开发者的Energy不足以支付其承担的部分,剩余部分全由调用者支付;
- 目前执行一个合约,可用的Energy总数由 调用者调用时设置的feeLimit 和 开发者承担部分共同决定;
@@ -347,14 +373,14 @@ 3. Energy的计算(开发者必读)
-
A质押剩余的Energy
-这部分的价格是根据账户A当前质押的TRX和当前质押所获得的Energy总量按比例计算出来的,也就是:1 Energy = (10 / 100000) TRX,还剩100000 Energy,价值10 TRX,小于feeLimit,则能获得所有的100000 Energy,价值的10 TRX算进feeLimit中。
+这部分是根据账户A当前质押的TRX和当前质押所获得的Energy总量按比例计算出来的,也就是:1 Energy = (10 / 100000) TRX,还剩100000 Energy,价值10 TRX,小于feeLimit,则在本次调用中,可以使用所有的100000 Energy,价值的10 TRX。
-
-
按照固定比例换算出来的Energy
-如果feeLimit大于质押剩余Energy价值的TRX,那么需要使用balance中的TRX来换算。固定比例是: 1 Energy = 100 SUN, feeLimit还有(30 - 10) TRX = 20 TRX,获得的Energy是 20 TRX / 100 SUN = 200000 Energy
+按照能量单价换算出来的Energy
+如果feeLimit大于质押剩余Energy价值的TRX,那么需要使用balance中的TRX来换算。能量单价是: 1 Energy = 210 sun, feeLimit还有(30 - 10) TRX = 20 TRX,则这部分可用的Energy是 20 TRX / 210 sun = 95238 Energy
-所以,A此次调用能够使用的Energy是 (100000 + 200000) = 300000 Energy
+所以,A此次调用能够使用的Energy是 (100000 + 95238) = 195238 Energy
如果合约执行成功,没有发生任何异常,则会扣除合约运行实际消耗的Energy,一般都远远小于此次调用能够使用的Energy。如果发生了Assert-style异常,则会消耗feeLimit对应的所有的Energy。
Assert-style异常的介绍详见异常介绍
示例2
@@ -366,11 +392,11 @@
3. Energy的计算(开发者必读)
-
调用者A质押剩余的Energy(X Energy)
-这部分的价格是根据账户A当前质押的TRX和当前质押所获得的Energy总量按比例计算出来的,也就是:1 Energy = (10 / 100000) TRX,还剩100000 Energy,价值10 TRX,小于剩下的feeLimit,则能获得所有的100000 Energy,价值的10 TRX算进feeLimit中。
+这部分是根据账户A当前质押的TRX和当前质押所获得的Energy总量按比例计算出来的,也就是:1 Energy = (10 / 100000) TRX,还剩100000 Energy,价值10 TRX,小于剩下的feeLimit,则在本次调用中,可以使用所有的100000 Energy,价值的10 TRX。
-
从调用者A的balance中,按照固定比例换算出来的Energy (Y Energy)
-如果feeLimit大于1和2的和,那么需要使用A的balance中的TRX来换算。固定比例是: 1 Energy = 100 SUN, feeLimit还有(200 - 10)TRX = 190 TRX,但是A的balance只有90 TRX,按照min(190 TRX, 90 TRX) = 90 TRX来计算获得的Energy,即为 90 TRX / 100 SUN = 900000 Energy
+如果feeLimit大于质押剩余Energy价值的TRX,那么需要使用A的balance中的TRX来换算。能量单价是: 1 Energy = 210 sun, feeLimit还有(200 - 10) TRX = 190 TRX,但是A的balance只有90 TRX,按90TRX来计算可用的energy为 90 TRX / 210 SUN = 428571 Energy。
-
开发者D质押剩余的Energy (Z Energy)
@@ -384,19 +410,47 @@ 3. Energy的计算(开发者必读)
若A此次调用能够使用的Energy是 Q Energy
同上,如果合约执行成功,没有发生任何异常,消耗总Energy小于Q Energy,如消耗 500000 Energy ,会按照比例扣除合约运行实际消耗的Energy,调用者A消耗 500000 * 40\% =200000 Energy,开发者D消耗 500000 * 60\% = 300000 Energy。
-一般实际消耗Energy都远远小于此次调用能够使用的Energy。如果发生了Assert-style异常,则会消耗feeLimit对应的所有的Energy。
-Assert-style异常的介绍详见异常介绍
+一般实际消耗Energy都远远小于此次调用能够使用的Energy。如果发生了Assert-style异常,则会消耗feeLimit对应的所有的Energy。Assert-style异常的介绍详见异常介绍
注意:
开发者创建合约的时候,consume_user_resource_percent不要设置成0,也就是开发者自己承担所有资源消耗。
-开发者自己承担所有资源消耗,意味着当发生了Assert-style异常时,会消耗开发者质押的所有Energy。
-Assert-style异常的介绍详见异常介绍
-为避免造成不必要的损失consume_user_resource_percent建议值是10-100。
+开发者自己承担所有资源消耗,意味着当发生了Assert-style异常时,会消耗开发者质押的所有Energy。为避免造成不必要的损失consume_user_resource_percent建议值是10-100。
+动态能量模型¶
+动态能量模型是波场网络的一个资源平衡机制,可以根据合约的资源占用情况动态调整每个合约的能量消耗量,从而使能量资源在链上的分配更加合理,防止网络资源过度集中在少数热门合约上,详情请参考动态能量模型介绍。
+工作原理¶
+如果合约在一个维护周期(目前是6小时)内使用过多的能量,则在下一个维护周期内,用户向该合约发送相同的交易将产生更多的额外能量消量。当合约合理使用资源时,用户调用该合约所产生的能量消耗将逐渐恢复正常。
+每一个合约有一个能量消耗放大系数 energy_factor
,表示该智能合约交易的能量消耗相对于基础能量消耗的增加倍数,初始值是0。合约的energy_factor
为0时,表示该合约在合理的使用资源,调用该合约不会有额外的能量消耗。当energy_factor
大于0时,表示该合约已经是热门合约,调用该合约时将消耗额外的能量。合约的能量消耗放大系数可以通过 getcontractinfo 接口查询。
+合约调用交易最终需要消耗的能量的计算公式为:
+合约交易能量消耗量 = 合约调用交易产生的基础能量消耗 * (1 + energy_factor)
+
+动态能量模型引入了如下三个TRON网络参数,它们共同控制合约的energy_factor
字段:
+
+threshold
:合约基础能量消耗的阈值,如果合约在一个维护周期中的基础能量消耗超过这个阈值,下一个维护周期,该合约的能量消耗量就会增加。
+increase_factor
:合约在某个维护周期的能量消耗超过阈值,则在下一个维护周期,energy_factor
就会根据increase_factor增加一定的比例。
+max_factor
:合约energy_factor
的最大值
+
+另外还有一个变量decrease_factor
用于降低合约的energy_factor
:
+
+decrease_factor
:increase_factor
的四分之一,合约基础能耗降低到阈值以下后energy_factor
会根据decrease_factor
减少一定比例。
+
+当合约的基础能量消耗量在一个维护周期内超过了threshold
,那么在下一个维护周期它的energy_factor
将增加,但最大不会超过max_factor
,计算公式为:
+energy_factor = min((1 + energy_factor) * (1 + increaese_factor)-1, max_factor)
+
+当合约的基础能量消耗量在一个维护周期内下降到threshold
及以下后,那么在下一个维护周期energy_factor
就会降低,但最小值不会低于0,计算公式如下:
+energy_factor = max((1 + energy_factor) * (1 - decrease_factor)- 1, 0)
+
+动态能量模型在主网已经开启,相关参数设置如下:
+
+- threshold:5,000,000,000
+- increase_factor:0.2
+- max_factor:3.4
+
+由于热门合约在不同的维护周期的能量消耗是不一样的,所以在调用合约时要为交易设置合适的feelimit参数。
在TRON网络上质押¶
-如何质押获取系统资源¶
-能量和带宽资源由帐户所有者通过质押来获取,请使用wallet/freezebalancev2
HTTP API完成质押操作、或者使用Stake2.0 Solidity API通过合约完成质押操作。
+如何质押获取系统资源¶
+能量和带宽资源由帐户所有者通过质押来获取,请使用wallet/freezebalancev2
HTTP API完成质押操作、或者使用Stake2.0 Solidity API通过合约完成质押操作。
TRON通过质押机制分配网络资源。质押TRX除了可以获取带宽或者能量资源外,还将同时获得与质押量等量的投票权(TRON Power,简称TP),质押1TRX,获得1TP。质押获取到的带宽或者能量资源用于支付交易费用,获取到的投票权用于给超级代表投票以获取投票奖励。
解质押操作会释放对应的资源。
-如何代理资源¶
+如何代理资源¶
账户在通过质押获取到能量或者带宽资源后,可以通过代理操作delegateresource
将资源代理给其它地址,也可以通过取消代理操作undelegateresource
收回分配出去的资源,代理资源需要注意以下情况:
- 只有能量和带宽可以被代理给其他地址,投票权无法被代理
@@ -404,12 +458,12 @@ 如何代理资源如何解质押¶
+如何解质押¶
完成TRX质押后可随时解质押,解质押后需要等待14天,才可以将解质押的本金提取到自己的账户中,14天是TRON网络第70号参数,可以被网络治理提议投票修改。请使用 unfreezebalancev2
API完成解质押操作。
可多次分批解质押,但只允许最多同时进行32笔解质押操作,也就说当用户发起第一笔解质押,在这笔解质押的资金达到可提取状态之前,只能再发起31笔解质押操作。可通过getavailableunfreezecount
接口查询剩余解质押次数。
已经代理出去的资源对应的TRX不可被解质押,解质押除了会失去等量的资源份额外,还将失去等量的TP资源。
在执行解质押时,如果存在未领取的投票奖励,会自动将投票奖励提取到账户内,如果存在已过锁定期的之前解质押的本金,那么本次解质押操作还将同时将已过锁定期的解质押本金提取到账户内,可通过gettransactioninfobyid
API 查询一笔交易中提取到的投票奖励withdraw_amount
及提取到的已过锁定期的本金数量withdraw_expire_amount
。
-投票权资源回收¶
+投票权资源回收¶
解锁在Stake2.0阶段质押的TRX后,会失去等量的投票权,系统优先回收账户内空闲的投票权,只有空闲的投票权不够回收时, 才会根据需要撤销一部分账户投票,如果用户投票给了多个超级代表, 将按照比例从每个超级代表撤销一定数量的投票,并将对应的投票权回收。从每个SR撤销的投数的计算公式为:
从当前超级代表撤销的票数 = 总撤票数 * (给当前超级代表的投票数 / 该账户总投票数)
@@ -419,6 +473,9 @@ 投票权资源回收如何取消全部解质押¶
+Stake2.0支持在用户解质押TRX后随时取消全部解质押,这样会使资产再次用于质押以获取相应的资源,而不必等待解质押本金过了锁定期后,将本金提取到账户内,再进行质押。请使用 cancelallunfreezev2
API完成取消全部解质押操作。
+在执行取消解质押时,会将所有未完成的解质押的本金重新用于质押,获取的资源类型与之前质押时相同。如果存在已过锁定期的解质押的本金,那么本次取消解质押操作会同时将已过锁定期的解质押本金提取到账户内,用户可通过gettransactioninfobyid
接口查询本次交易取消的解质押本金数额 cancel_unfreezeV2_amount
,以及提取到的已过锁定期的本金数量withdraw_expire_amount
。
API¶
下表为质押模型相关接口及其说明:
@@ -477,44 +534,9 @@ API¶<
wallet/getaccountresource
查看资源总量、已使用量、可用数量
-
-
-其他交易费¶
-
-
-
-交易类型
-费用
-
-
-
-
-创建witness
-9999 TRX
-
-
-发行token
-1024 TRX
-
-
-创建account
-1 TRX
-
-
-创建exchange
-1024 TRX
-
-
-更新账户权限
-100 TRX
-
-
-交易备注
-1 TRX
-
-多签交易
-1 TRX
+wallet/cancelallunfreezev2
+取消全部解质押
diff --git a/releases/history/index.html b/releases/history/index.html
index d40a571..b71100b 100644
--- a/releases/history/index.html
+++ b/releases/history/index.html
@@ -2294,7 +2294,7 @@ 1. 新增Stake 2.0相关API2. 新增预估能量接口¶
在GreatVoyage-v4.7.0.1(Aristotle)之前的版本中,可以通过/wallet/triggerconstantcontract
接口预估执行智能合约交易所需的能量消耗量,然后根据预估的消耗量来设置交易的feelimit
参数。但由于某些智能合约交易可能存在对其他智能合约的调用,这时有可能出现预估feelimit
参数不准确的情况。
-因此,GreatVoyage-v4.7.0.1(Aristotle)版本新增了一个能量预估接口/wallet/estimateenergy
,利用该接口预估的feelimit
在任何情况下都是可靠的。该接口返回值中的energy_required
字段表示这笔智能合约调用交易执行成功所需要的能量预估量,用户根据该字段来计算feelimit
参数:feelimit
= energy_required
* 能量单价, 当前能量单价是420sun 。
+因此,GreatVoyage-v4.7.0.1(Aristotle)版本新增了一个能量预估接口/wallet/estimateenergy
,利用该接口预估的feelimit
在任何情况下都是可靠的。该接口返回值中的energy_required
字段表示这笔智能合约调用交易执行成功所需要的能量预估量,用户根据该字段来计算feelimit
参数:feelimit
= energy_required
* 能量单价, 当前能量单价是210sun 。
如果由于某种原因导致预估接口执行失败时,energy_required
字段值为0,在返回值中将不显示该字段,这时可以通过result
字段查看预估失败原因。
新版本部署成功后,该接口默认为关闭状态,打开该接口需要节点配置文件中同时开启vm.estimateEnergy
和vm.supportConstant
这两个配置项。vm.estimateEnergy
和vm.supportConstant
的默认值均为false。
/wallet/triggerconstantcontract
接口调用示例如下:
diff --git a/search/search_index.json b/search/search_index.json
index ba7b85a..cec0814 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u6b22\u8fce\u8bbf\u95eeJava-tron\u7528\u6237\u624b\u518c! \u00b6 Java-tron\u662f\u7528Java\u7f16\u5199\u7684TRON\u7f51\u7edc\u5ba2\u6237\u7aef\uff0c\u5b8c\u5168\u5f00\u6e90\uff0c\u60a8\u53ef\u4ee5\u5728Github\u4e0a\u4e0b\u8f7d Java-tron\u6e90\u4ee3\u7801 \u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u4e0eJava-tron\u76f8\u5173\u7684\u77e5\u8bc6\uff0c\u901a\u8fc7\u672c\u6587\u60a8\u5c06\u4e86\u89e3\u5230\u5982\u4f55\u4f7f\u7528Java-tron\u3001\u5982\u4f55\u53c2\u4e0eJava-tron\u7684\u5f00\u53d1\u4e0e\u7ef4\u62a4\uff0c\u5177\u4f53\u5305\u542b\u5982\u4e0b\u51e0\u4e2a\u90e8\u5206\uff1a Java-tron\u5165\u95e8 \u4f7f\u7528Java-tron \u6838\u5fc3\u534f\u8bae Java-tron\u5f00\u53d1 DAPP\u5f00\u53d1 APIs Wallet-CLI \u5173\u4e8e\u5176\u5b83TRON\u76f8\u5173\u77e5\u8bc6\uff0c\u8bf7\u8bbf\u95ee\u5b98\u7f51 tron.network \u6216\u8005\u4ee5\u4e0b\u8d44\u6e90\u94fe\u63a5: TRON Whitepaper TRON Architecture TRON Improvement Proposals (TIPs) TRON Developer Hub","title":"\u6b22\u8fce\u8bbf\u95eeJava-tron\u7528\u6237\u624b\u518c!"},{"location":"#java-tron","text":"Java-tron\u662f\u7528Java\u7f16\u5199\u7684TRON\u7f51\u7edc\u5ba2\u6237\u7aef\uff0c\u5b8c\u5168\u5f00\u6e90\uff0c\u60a8\u53ef\u4ee5\u5728Github\u4e0a\u4e0b\u8f7d Java-tron\u6e90\u4ee3\u7801 \u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u4e0eJava-tron\u76f8\u5173\u7684\u77e5\u8bc6\uff0c\u901a\u8fc7\u672c\u6587\u60a8\u5c06\u4e86\u89e3\u5230\u5982\u4f55\u4f7f\u7528Java-tron\u3001\u5982\u4f55\u53c2\u4e0eJava-tron\u7684\u5f00\u53d1\u4e0e\u7ef4\u62a4\uff0c\u5177\u4f53\u5305\u542b\u5982\u4e0b\u51e0\u4e2a\u90e8\u5206\uff1a Java-tron\u5165\u95e8 \u4f7f\u7528Java-tron \u6838\u5fc3\u534f\u8bae Java-tron\u5f00\u53d1 DAPP\u5f00\u53d1 APIs Wallet-CLI \u5173\u4e8e\u5176\u5b83TRON\u76f8\u5173\u77e5\u8bc6\uff0c\u8bf7\u8bbf\u95ee\u5b98\u7f51 tron.network \u6216\u8005\u4ee5\u4e0b\u8d44\u6e90\u94fe\u63a5: TRON Whitepaper TRON Architecture TRON Improvement Proposals (TIPs) TRON Developer Hub","title":"\u6b22\u8fce\u8bbf\u95eeJava-tron\u7528\u6237\u624b\u518c!"},{"location":"glossary/","text":"\u672f\u8bed\u8868 \u00b6 energyUsage \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyFee \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u4e2d\uff0c\u9700\u8981TRX\u652f\u4ed8\u7684\u6570\u76ee(SUN\u4e3a\u5355\u4f4d) originEnergyUsage \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyUsageTotal \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u548c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf Feelimit \u7528\u6237\u5728\u8c03\u7528\u6216\u8005\u521b\u5efa\u667a\u80fd\u5408\u7ea6\u65f6\uff0c\u6307\u5b9a\u7684\u6700\u9ad8\u53ef\u63a5\u53d7\u7684trx\u8d39\u7528\u6d88\u8017\uff0c\u5305\u542b\u6d88\u8017\u8d28\u62bc\u83b7\u5f97\u8d44\u6e90\u7684trx\u548c\u6d88\u8017\u7528\u6237\u672c\u8eab\u6301\u6709\u7684trx\u4e24\u90e8\u5206\uff0c\u4f18\u5148\u4f7f\u7528\u8d28\u62bc\u83b7\u5f97\u7684\u8d44\u6e90\u3002 CallValue \u7528\u6237\u5728\u667a\u80fd\u5408\u7ea6\u8c03\u7528\u6216\u521b\u5efa\u65f6\u7ed9\u667a\u80fd\u5408\u7ea6\u672c\u8eab\u7684\u8d26\u6237\u8f6c\u8d26\u7684trx\u6570\u91cf\uff0c\u5728\u5224\u65adfeelimit\u7684\u65f6\u5019\u4f1a\u629b\u53bb\u8fd9\u90e8\u5206\u7684\u503c\u3002 consume_user_resource_percent \u5bf9\u4e8e\u4e00\u4e2a\u667a\u80fd\u5408\u7ea6\u6765\u8bf4\uff0c\u4ed8\u8d39\u662f\u7531\u4e24\u5927\u90e8\u5206\u7ec4\u6210\u7684\u3002\u4e00\u90e8\u5206\u662f\u5408\u7ea6\u5f00\u53d1\u8005\u4ed8\u8d39\uff0c\u53e6\u4e00\u90e8\u5206\u662f\u7531\u5408\u7ea6\u8c03\u7528\u8005\u652f\u4ed8\u3002\u8fd9\u4e2a\u503c\u662f\u8c03\u7528\u8005\u4ed8\u8d39\u7684\u6bd4\u4f8b origin_energy_limit \u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u5728\u4e00\u6b21\u5408\u7ea6\u8c03\u7528\u8fc7\u7a0b\u4e2d\u81ea\u5df1\u6d88\u8017\u7684energy\u7684\u4e0a\u9650\uff0c\u5fc5\u987b\u5927\u4e8e0\u3002\u5bf9\u4e8e\u4e4b\u524d\u8001\u7684\u5408\u7ea6\uff0c\u6ca1\u6709\u63d0\u4f9b\u8bbe\u7f6e\u8be5\u503c\u7684\u53c2\u6570\uff0c\u4f1a\u5b58\u62100\uff0c\u4f46\u662f\u4f1a\u6309\u71671000\u4e07energy\u4e0a\u9650\u8ba1\u7b97\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7updateEnergyLimit\u63a5\u53e3\u91cd\u65b0\u8bbe\u7f6e\u8be5\u503c\uff0c\u8bbe\u7f6e\u65b0\u503c\u65f6\u4e5f\u5fc5\u987b\u5927\u4e8e0 net_usage \u672c\u6b21\u5408\u7ea6\u6d88\u8017\u7684Bandwidth(\u4e0d\u5305\u542bNetFee\u5bf9\u5e94\u7684) net_fee \u672c\u6b21\u5408\u7ea6\u56e0Bandwidth\u4e0d\u8db3\u6d88\u8017\u7684TRX Bandwidth \u5728\u6ce2\u573a\u7f51\u8def\u53d1\u8d77\u4ea4\u6613\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u6d88\u8017\u5e26\u5bbd\u7684\u591a\u5c11\u53d6\u51b3\u4e8e\u4ea4\u6613\u7684\u5b57\u8282\u6570\u5927\u5c0f\u3002\u4f8b\u5982\uff0c\u4ea4\u6613\u5927\u5c0f\u4e3a100\u4e2a\u5b57\u8282\uff0c\u90a3\u4e48\u5e7f\u64ad\u4ea4\u6613\u7684\u65f6\u5019\uff0c\u9700\u8981\u6d88\u8017100\u5355\u4f4d\u7684\u5e26\u5bbd\u3002 Energy \u5408\u7ea6\u7684\u90e8\u7f72\u4e0e\u8fd0\u884c\u9700\u8981\u6d88\u8017\u80fd\u91cf\u3002\u80fd\u91cf\u4ee3\u8868CPU\u8d44\u6e90\u7684\u6d88\u8017\uff0c1 Energy = 1 Microsecond (\u03bcs)\u3002 \u4f8b\u5982\uff0c\u4e00\u4e2a\u5408\u7ea6\u7684\u6267\u884c\u9700\u8981100\u03bcs\uff0c\u90a3\u4e48\u9700\u8981\u6d88\u8017100\u5355\u4f4d\u7684\u80fd\u91cf\u3002 TRON Power(TP) \u6bcf\u8d28\u62bc\u4e00\u4e2aTRX\uff0c\u53ef\u4ee5\u83b7\u5f97\u4e00\u4e2aTP\u3002 1\u4e2aTP\u4ee3\u8868\u4e00\u4e2a\u6295\u7968\u6743\u3002 Super Representative(SR) \u76ee\u524d\u6b63\u5728\u51fa\u5757\u7684\u524d27\u540d\u8282\u70b9\u3002","title":"\u672f\u8bed\u8868"},{"location":"glossary/#_1","text":"energyUsage \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyFee \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u4e2d\uff0c\u9700\u8981TRX\u652f\u4ed8\u7684\u6570\u76ee(SUN\u4e3a\u5355\u4f4d) originEnergyUsage \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyUsageTotal \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u548c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf Feelimit \u7528\u6237\u5728\u8c03\u7528\u6216\u8005\u521b\u5efa\u667a\u80fd\u5408\u7ea6\u65f6\uff0c\u6307\u5b9a\u7684\u6700\u9ad8\u53ef\u63a5\u53d7\u7684trx\u8d39\u7528\u6d88\u8017\uff0c\u5305\u542b\u6d88\u8017\u8d28\u62bc\u83b7\u5f97\u8d44\u6e90\u7684trx\u548c\u6d88\u8017\u7528\u6237\u672c\u8eab\u6301\u6709\u7684trx\u4e24\u90e8\u5206\uff0c\u4f18\u5148\u4f7f\u7528\u8d28\u62bc\u83b7\u5f97\u7684\u8d44\u6e90\u3002 CallValue \u7528\u6237\u5728\u667a\u80fd\u5408\u7ea6\u8c03\u7528\u6216\u521b\u5efa\u65f6\u7ed9\u667a\u80fd\u5408\u7ea6\u672c\u8eab\u7684\u8d26\u6237\u8f6c\u8d26\u7684trx\u6570\u91cf\uff0c\u5728\u5224\u65adfeelimit\u7684\u65f6\u5019\u4f1a\u629b\u53bb\u8fd9\u90e8\u5206\u7684\u503c\u3002 consume_user_resource_percent \u5bf9\u4e8e\u4e00\u4e2a\u667a\u80fd\u5408\u7ea6\u6765\u8bf4\uff0c\u4ed8\u8d39\u662f\u7531\u4e24\u5927\u90e8\u5206\u7ec4\u6210\u7684\u3002\u4e00\u90e8\u5206\u662f\u5408\u7ea6\u5f00\u53d1\u8005\u4ed8\u8d39\uff0c\u53e6\u4e00\u90e8\u5206\u662f\u7531\u5408\u7ea6\u8c03\u7528\u8005\u652f\u4ed8\u3002\u8fd9\u4e2a\u503c\u662f\u8c03\u7528\u8005\u4ed8\u8d39\u7684\u6bd4\u4f8b origin_energy_limit \u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u5728\u4e00\u6b21\u5408\u7ea6\u8c03\u7528\u8fc7\u7a0b\u4e2d\u81ea\u5df1\u6d88\u8017\u7684energy\u7684\u4e0a\u9650\uff0c\u5fc5\u987b\u5927\u4e8e0\u3002\u5bf9\u4e8e\u4e4b\u524d\u8001\u7684\u5408\u7ea6\uff0c\u6ca1\u6709\u63d0\u4f9b\u8bbe\u7f6e\u8be5\u503c\u7684\u53c2\u6570\uff0c\u4f1a\u5b58\u62100\uff0c\u4f46\u662f\u4f1a\u6309\u71671000\u4e07energy\u4e0a\u9650\u8ba1\u7b97\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7updateEnergyLimit\u63a5\u53e3\u91cd\u65b0\u8bbe\u7f6e\u8be5\u503c\uff0c\u8bbe\u7f6e\u65b0\u503c\u65f6\u4e5f\u5fc5\u987b\u5927\u4e8e0 net_usage \u672c\u6b21\u5408\u7ea6\u6d88\u8017\u7684Bandwidth(\u4e0d\u5305\u542bNetFee\u5bf9\u5e94\u7684) net_fee \u672c\u6b21\u5408\u7ea6\u56e0Bandwidth\u4e0d\u8db3\u6d88\u8017\u7684TRX Bandwidth \u5728\u6ce2\u573a\u7f51\u8def\u53d1\u8d77\u4ea4\u6613\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u6d88\u8017\u5e26\u5bbd\u7684\u591a\u5c11\u53d6\u51b3\u4e8e\u4ea4\u6613\u7684\u5b57\u8282\u6570\u5927\u5c0f\u3002\u4f8b\u5982\uff0c\u4ea4\u6613\u5927\u5c0f\u4e3a100\u4e2a\u5b57\u8282\uff0c\u90a3\u4e48\u5e7f\u64ad\u4ea4\u6613\u7684\u65f6\u5019\uff0c\u9700\u8981\u6d88\u8017100\u5355\u4f4d\u7684\u5e26\u5bbd\u3002 Energy \u5408\u7ea6\u7684\u90e8\u7f72\u4e0e\u8fd0\u884c\u9700\u8981\u6d88\u8017\u80fd\u91cf\u3002\u80fd\u91cf\u4ee3\u8868CPU\u8d44\u6e90\u7684\u6d88\u8017\uff0c1 Energy = 1 Microsecond (\u03bcs)\u3002 \u4f8b\u5982\uff0c\u4e00\u4e2a\u5408\u7ea6\u7684\u6267\u884c\u9700\u8981100\u03bcs\uff0c\u90a3\u4e48\u9700\u8981\u6d88\u8017100\u5355\u4f4d\u7684\u80fd\u91cf\u3002 TRON Power(TP) \u6bcf\u8d28\u62bc\u4e00\u4e2aTRX\uff0c\u53ef\u4ee5\u83b7\u5f97\u4e00\u4e2aTP\u3002 1\u4e2aTP\u4ee3\u8868\u4e00\u4e2a\u6295\u7968\u6743\u3002 Super Representative(SR) \u76ee\u524d\u6b63\u5728\u51fa\u5757\u7684\u524d27\u540d\u8282\u70b9\u3002","title":"\u672f\u8bed\u8868"},{"location":"api/http/","text":"HTTP API \u63a5\u53e3 \u00b6 \u672c\u7ae0\u8282\u4ecb\u7ecd\u8282\u70b9\u7684HTTP API\u53ca\u5176\u7528\u6cd5\u3002 \u6ce8\u610f \u5c3d\u7ba1\u6ce2\u573a\uff08TRON\uff09\u901a\u8fc7\u5c06 HTTP API \u7684 Content-Type \u8bbe\u7f6e\u4e3a application/json \u907f\u514d\u4e86 XSS \u653b\u51fb\uff0c\u4f46\u4ecd\u6709\u4e00\u4e9b API \u6ca1\u6709\u8f93\u5165\u9a8c\u8bc1\u3002\u4e3a\u4e86\u66f4\u597d\u5730\u4fdd\u62a4\u7528\u6237\u6570\u636e\u5b89\u5168\uff0c\u6211\u4eec\u5efa\u8bae\u60a8\u5728\u4f7f\u7528 API \u7684\u4efb\u4f55\u6570\u636e\u4e4b\u524d\uff0c\u5148\u5bf9\u5176\u8fdb\u884c\u6b63\u786e\u7f16\u7801\uff08\u5c24\u5176\u662f\u5f53\u53c2\u6570'visible'\u4e3atrue\u65f6\uff09\u3002 \u4ee5\u4e0b\u662f\u4e00\u79cd\u5178\u578b\u7684 XSS \u9632\u62a4\u65b9\u6cd5\uff1a\u5bf9\u6765\u81ea API \u7684\u6240\u6709\u6570\u636e\u5728 HTML \u4e2d\u8fdb\u884c\u7f16\u7801\u3002\u4f7f\u7528\u8bf8\u5982 encodeURIComponent() \u6216 escape() \u7b49\u65b9\u6cd5\u5bf9\u6570\u636e\u8fdb\u884c\u7f16\u7801\uff0c\u8fd9\u53ef\u4ee5\u5c06\u7279\u6b8a\u5b57\u7b26\u8f6c\u6362\u4e3a\u5176 HTML \u5b9e\u4f53\uff0c\u9632\u6b62\u6d4f\u89c8\u5668\u5c06\u5176\u89e3\u91ca\u4e3a HTML \u4ee3\u7801\u3002 \u8bf7\u52a1\u5fc5\u4e3a\u6765\u81ea API \u7684\u6240\u6709\u6570\u636e\u5b9e\u65bd XSS \u9632\u62a4\uff0c\u4ee5\u786e\u4fdd\u7528\u6237\u6570\u636e\u7684\u5b89\u5168\u3002\u6211\u4eec\u4e86\u89e3\u60a8\u53ef\u80fd\u9700\u8981\u6709\u5173 XSS \u9632\u62a4\u7684\u66f4\u591a\u4fe1\u606f\u3002\u5efa\u8bae\u60a8\u53c2\u8003\u4ee5\u4e0b\u8d44\u6e90\uff1a OWASP XSS Prevention Cheat Sheet \u3002 \u9996\u5148\uff0c\u5bf9HTTP API\u4e2d\u5730\u5740\u683c\u5f0f\u7684\u9009\u62e9\u8fdb\u884c\u8bf4\u660e\uff1aTRON\u7f51\u7edc\u8d26\u6237\u5730\u5740\u683c\u5f0f\u6709\u4e24\u79cd\uff1aHexString\u683c\u5f0f\u548cBase58\u683c\u5f0f\u3002\u8282\u70b9HTTP API\u652f\u6301\u5730\u5740\u683c\u5f0f\u9009\u62e9\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7visible\u53c2\u6570\u8bbe\u7f6e\u5730\u5740\u683c\u5f0f\uff0c\u9ed8\u8ba4\u503c\u4e3afalse\uff0c\u53c2\u6570\u53ca\u8fd4\u56de\u503c\u4e2d\u7684\u5730\u5740\u683c\u5f0f\u5747\u4e3ahex\u683c\u5f0f\uff0c\u5f53visible\u8bbe\u7f6e\u4e3atrue\u65f6\uff0c\u53c2\u6570\u53ca\u8fd4\u56de\u503c\u4e2d\u7684\u5730\u5740\u683c\u5f0f\u5747\u4e3aBase58\u683c\u5f0f\u3002\u5982\u679c\u53c2\u6570\u683c\u5f0f\u4e0evisible\u8bbe\u7f6e\u4e0d\u5339\u914d\uff0c\u5c06\u4f1a\u62a5\u9519\u3002\u8bbe\u7f6e\u65b9\u5f0f\uff1a \u5bf9\u4e8eGET\u65b9\u5f0f\u8bf7\u6c42\u63a5\u53e3\u6216\u8005\u4e0d\u9700\u8981\u53c2\u6570\u7684\u67e5\u8be2\u63a5\u53e3\uff0c\u901a\u8fc7\u5728url\u4e2d\u589e\u52a0\u53c2\u6570 visible=true http://127.0.0.1:8090/wallet/listexchanges?visible=true \u5bf9\u4e8ePOST\u65b9\u5f0f\u8bf7\u6c42\u63a5\u53e3\uff0c\u901a\u8fc7\u5728json\u7ed3\u6784\u4f53\u6700\u5916\u5c42\u4e2d\u589e\u52a0\u53c2\u6570 \"visible\": true curl - X POST h tt p : //127.0.0.1:8090/wallet/createtransaction -d ' { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"to_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"amount\" : 1000000 , \"visible\" : true } ' Fullnode HTTP API \u00b6 FullNode HTTP API\u5206\u7c7b\u5982\u4e0b: \u94fe\u4e0a\u8d26\u6237 \u8f6c\u8d26\u548c\u4ea4\u6613 \u8d26\u6237\u8d44\u6e90 \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u667a\u80fd\u5408\u7ea6 TRC-10\u901a\u8bc1 \u6295\u7968\u548cSR \u63d0\u6848 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6 Pending Pool \u94fe\u4e0a\u5e10\u6237 \u00b6 \u4e0b\u9762\u662f\u94fe\u4e0a\u8d26\u6237\u76f8\u5173API\uff1a wallet/validateaddress wallet/createaccount wallet/getaccount wallet/updateaccount wallet/accountpermissionupdate wallet/getaccountbalance wallet/setaccountid wallet/getaccountbyid wallet/validateaddress \u00b6 \u4f5c\u7528\uff1a\u68c0\u67e5\u5730\u5740\u662f\u5426\u6b63\u786e curl -X POST http://127.0.0.1:8090/wallet/validateaddress -d '{\"address\": \"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5730\u5740\uff0c\u53ef\u4ee5\u662fbase58checksum\u3001hexString\u3001base64\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u5730\u5740\u6b63\u786e\u6216\u8005\u9519\u8bef wallet/createaccount \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u8d26\u53f7\uff0c\u4e00\u4e2a\u5df2\u7ecf\u6fc0\u6d3b\u7684\u8d26\u53f7\u521b\u5efa\u4e00\u4e2a\u65b0\u8d26\u53f7\u3002\u5982\u679c\u521b\u5efa\u8005\u8d26\u53f7\u6709\u8db3\u591f\u7684\u901a\u8fc7\u8d28\u62bcTRX\u83b7\u5f97\u7684\u5e26\u5bbd\uff0c\u90a3\u4e48\u521b\u5efa\u8d26\u6237\u53ea\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u5426\u5219\uff0c\u4f1a\u70e7\u63890.1\u4e2aTRX\u6765\u652f\u4ed8\u5e26\u5bbd\u8d39\u7528\uff0c\u540c\u65f6\u9700\u8981\u989d\u5916\u652f\u4ed8 1 TRX\u7684\u521b\u5efa\u8d39\u7528 curl -X POST http://127.0.0.1:8090/wallet/createaccount -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"account_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\"}' \u53c2\u6570\uff1a owner_address \u662f\u5df2\u7ecf\u6fc0\u6d3b\u7684\u8d26\u53f7\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f account_address \u662f\u65b0\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f\uff0c\u8fd9\u4e2a\u5730\u5740\u9700\u8981\u4e8b\u5148\u521b\u5efa\u597d Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u521b\u5efa\u8d26\u53f7\u7684Transaction wallet/getaccount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2a\u8d26\u6237\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccount -d '{\"address\": \"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\uff1a address \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61 wallet/updateaccount \u00b6 \u4f5c\u7528\uff1a\u4fee\u6539\u8d26\u53f7\u540d\u79f0 curl -X POST http://127.0.0.1:8090/wallet/updateaccount -d '{\"account_name\": \"0x7570646174654e616d6531353330383933343635353139\" ,\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\"}' \u53c2\u6570\uff1a account_name \u662f\u8d26\u53f7\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner_address \u662f\u8981\u4fee\u6539\u540d\u79f0\u7684\u8d26\u53f7\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570, \u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4fee\u6539\u540d\u79f0Transaction wallet/accountpermissionupdate \u00b6 \u4f5c\u7528\uff1a\u4fee\u6539\u8d26\u6237\u6743\u9650 curl -X POST http://127.0.0.1:8090/wallet/accountpermissionupdate -d '{ \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"owner\": { \"type\": 0, \"permission_name\": \"owner\", \"threshold\": 1, \"keys\": [{ \"address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"weight\": 1 }] }, \"witness\": { \"type\": 1, \"permission_name\": \"witness\", \"threshold\": 1, \"keys\": [{ \"address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"weight\": 1 }] }, \"actives\": [{ \"type\": 2, \"permission_name\": \"active12323\", \"threshold\": 2, \"operations\": \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\", \"keys\": [{ \"address\": \"TNhXo1GbRNCuorvYu5JFWN3m2NYr9QQpVR\", \"weight\": 1 }, { \"address\": \"TKwhcDup8L2PH5r6hxp5CQvQzZqJLmKvZP\", \"weight\": 1 }] }], \"visible\": true}' \u53c2\u6570\uff1a owner_address\uff1a\u521b\u5efa\u5408\u7ea6\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner\uff1a\u8d26\u6237owner\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f witness\uff1a\u51fa\u5757\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f\uff0c\u5982\u679c\u4e0d\u662fwitness\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e actives\uff1a\u5176\u4ed6\u529f\u80fd\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f \u8fd4\u56de\u503c:\u672a\u7b7e\u540d\u7684transaction wallet/getaccountbalance \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u5386\u53f2\u4f59\u989d curl -X POST http://127.0.0.1:8090/wallet/getaccountbalance -d '{ \"account_identifier\": { \"address\": \"TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm\" }, \"block_identifier\": { \"hash\": \"0000000000010c4a732d1e215e87466271e425c86945783c3d3f122bfa5affd9\", \"number\": 68682 }, \"visible\": true }' \u53c2\u6570\uff1a \u8d26\u6237 address + \u533a\u5757 hash \u548c number\uff0c\u533a\u5757 hash \u548c number \u5fc5\u987b\u5339\u914d\u4e00\u81f4\u3002 \u8fd4\u56de\u503c\uff1a { \"balance\": 64086449348265042, \"block_identifier\": { \"hash\": \"0000000000010c4a732d1e215e87466271e425c86945783c3d3f122bfa5affd9\", \"number\": 68682 } } \u8fd4\u56de\u503c\u4e2d\u7684 block_identifier \u8868\u793a\u8d26\u6237\u4f59\u989d\u53d1\u751f\u53d8\u5316\u7684\u533a\u5757 wallet/setaccountid \u00b6 \u4f5c\u7528\uff1a\u8bbe\u7f6e\u4e00\u4e2a\u8d26\u6237\u7684accountID curl -X POST http://127.0.0.1:8090/wallet/setaccountid -d '{ \"owner_address\":\"41a7d8a35b260395c14aa456297662092ba3b76fc0\",\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f account_id accountid,\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c:\u8bbe\u7f6eAccountID\u7684transaction wallet/getaccountbyid \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7accountId\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccountbyid -d '{\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1a account_id \u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61 \u8f6c\u8d26\u548c\u4ea4\u6613 \u00b6 \u4e0b\u9762\u662f\u8f6c\u8d26\u548c\u4ea4\u6613\u76f8\u5173API\uff1a wallet/createtransaction wallet/broadcasttransaction wallet/broadcasthex wallet/getsignweight wallet/getapprovedlist wallet/createtransaction \u00b6 \u4f5c\u7528\uff1a \u521b\u5efa\u4e00\u4e2a\u8f6c\u8d26\u7684Transaction\uff0c\u5982\u679c\u8f6c\u8d26\u7684to\u5730\u5740\u4e0d\u5b58\u5728\uff0c\u5219\u5728\u533a\u5757\u94fe\u4e0a\u521b\u5efa\u8be5\u8d26\u53f7 curl -X POST http://127.0.0.1:8090/wallet/createtransaction -d '{\"to_address\": \"41e9d79cc47518930bc322d9bf7cddd260a0260a8d\", \"owner_address\": \"41D1E7A6BC354106CB410E65FF8B181C600FF14292\", \"amount\": 1000 }' \u53c2\u6570\uff1a to_address \u662f\u8f6c\u8d26\u8f6c\u5165\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString owner_address \u662f\u8f6c\u8d26\u8f6c\u51fa\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString amount \u662f\u8f6c\u8d26\u6570\u91cf Permission_id \u53ef\u9009\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u8f6c\u8d26\u4ea4\u6613 wallet/broadcasttransaction \u00b6 \u4f5c\u7528\uff1a\u5bf9\u7b7e\u540d\u540e\u7684transaction\u8fdb\u884c\u5e7f\u64ad curl -X POST http://127.0.0.1:8090/wallet/broadcasttransaction -d '{\"signature\":[\"97c825b41c77de2a8bd65b3df55cd4c0df59c307c0187e42321dcc1cc455ddba583dd9502e17cfec5945b34cad0511985a6165999092a6dec84c2bdd97e649fc01\"],\"txID\":\"454f156bf1256587ff6ccdbc56e64ad0c51e4f8efea5490dcbc720ee606bc7b8\",\"raw_data\":{\"contract\":[{\"parameter\":{\"value\":{\"amount\":1000,\"owner_address\":\"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\",\"to_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\"},\"type_url\":\"type.googleapis.com/protocol.TransferContract\"},\"type\":\"TransferContract\"}],\"ref_block_bytes\":\"267e\",\"ref_block_hash\":\"9a447d222e8de9f2\",\"expiration\":1530893064000,\"timestamp\":1530893006233}}' \u53c2\u6570\uff1a\u7b7e\u540d\u4e4b\u540e\u7684Transaction \u8fd4\u56de\u503c\uff1a\u5e7f\u64ad\u662f\u5426\u6210\u529f wallet/broadcasthex \u00b6 \u4f5c\u7528\uff1a\u5bf9\u7b7e\u540d\u540e\u7684transaction hex\u8fdb\u884c\u5e7f\u64ad curl -X POST http://127.0.0.1:8090/wallet/broadcasthex -d '{\"transaction\":\"0A8A010A0202DB2208C89D4811359A28004098A4E0A6B52D5A730802126F0A32747970652E676F6F676C65617069732E636F6D2F70726F746F636F6C2E5472616E736665724173736574436F6E747261637412390A07313030303030311215415A523B449890854C8FC460AB602DF9F31FE4293F1A15416B0580DA195542DDABE288FEC436C7D5AF769D24206412418BF3F2E492ED443607910EA9EF0A7EF79728DAAAAC0EE2BA6CB87DA38366DF9AC4ADE54B2912C1DEB0EE6666B86A07A6C7DF68F1F9DA171EEE6A370B3CA9CBBB00\"}' \u53c2\u6570\uff1a\u7b7e\u540d\u4e4b\u540e\u7684Transaction hex \u8fd4\u56de\u503c\uff1a\u5e7f\u64ad\u662f\u5426\u6210\u529f wallet/getsignweight \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u591a\u91cd\u7b7e\u540d\u7684\u4ea4\u6613\u7684\u76f8\u5173\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getsignweight -d '{ \"signature\": [ \"e0bd4a60f1b3c89d4da3894d400e7e32385f6dd690aee17fdac4e016cdb294c5128b66f62f3947a7182c015547496eba95510c113bda2a361d811b829343c36501\", \"596ead6439d0f381e67f30b1ed6b3687f2bd53ce5140cdb126cfe4183235804741eeaf79b4e91f251fd7042380a9485d4d29d67f112d5387bc7457b355cd3c4200\" ], \"txID\": \"0ae84a8439f5aa8fd2c458879a4031a7452aebed8e6e99ffbccd26842d4323c4\", \"raw_data\": { \"contract\": [{ \"parameter\": { \"value\": { \"amount\": 1000000, \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"to_address\": \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" }, \"type_url\": \"type.googleapis.com/protocol.TransferContract\" }, \"type\": \"TransferContract\" }], \"ref_block_bytes\": \"163d\", \"ref_block_hash\": \"77ef4ace148b05ba\", \"expiration\": 1555664823000, \"timestamp\": 1555664763418 }, \"raw_data_hex\": \"0a02163d220877ef4ace148b05ba40d8c5e5a6a32d5a69080112630a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412320a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18c0843d2802709af4e1a6a32d\", \"visible\": true}' \u53c2\u6570\u8bf4\u660e\uff1a\u53c2\u6570\u6574\u4f53\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u4ea4\u6613 \u8fd4\u56de\u503c:\u5df2\u7b7e\u540d\u6743\u91cd\u662f\u5426\u8fbe\u5230\u9608\u503c\uff08\u5373\u662f\u5426\u6ee1\u8db3\u9a8c\u7b7e\u6807\u51c6\uff09\uff0c\u7b7e\u540d\u5730\u5740\u5217\u8868\uff0cpermission\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u5df2\u7b7e\u540d\u7684\u6743\u91cd\u53ca\u4ea4\u6613\u4fe1\u606f\u3002 wallet/getapprovedlist \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u591a\u91cd\u7b7e\u540d\u7684\u4ea4\u6613\u7684\u76f8\u5173\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getapprovedlist -d '{ \"signature\": [ \"e0bd4a60f1b3c89d4da3894d400e7e32385f6dd690aee17fdac4e016cdb294c5128b66f62f3947a7182c015547496eba95510c113bda2a361d811b829343c36501\", \"596ead6439d0f381e67f30b1ed6b3687f2bd53ce5140cdb126cfe4183235804741eeaf79b4e91f251fd7042380a9485d4d29d67f112d5387bc7457b355cd3c4200\" ], \"txID\": \"0ae84a8439f5aa8fd2c458879a4031a7452aebed8e6e99ffbccd26842d4323c4\", \"raw_data\": { \"contract\": [{ \"parameter\": { \"value\": { \"amount\": 1000000, \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"to_address\": \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" }, \"type_url\": \"type.googleapis.com/protocol.TransferContract\" }, \"type\": \"TransferContract\" }], \"ref_block_bytes\": \"163d\", \"ref_block_hash\": \"77ef4ace148b05ba\", \"expiration\": 1555664823000, \"timestamp\": 1555664763418 }, \"raw_data_hex\": \"0a02163d220877ef4ace148b05ba40d8c5e5a6a32d5a69080112630a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412320a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18c0843d2802709af4e1a6a32d\", \"visible\": true}' \u53c2\u6570\u6574\u4f53\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u4ea4\u6613 \u8fd4\u56de\u503c:\u5df2\u7b7e\u540d\u6743\u91cd\u662f\u5426\u8fbe\u5230\u9608\u503c\uff08\u5373\u662f\u5426\u6ee1\u8db3\u9a8c\u7b7e\u6807\u51c6\uff09\uff0c\u7b7e\u540d\u5730\u5740\u5217\u8868\uff0c\u4ea4\u6613\u4fe1\u606f\u3002 \u5e10\u6237\u8d44\u6e90 \u00b6 \u4e0b\u9762\u662f\u94fe\u4e0a\u8d44\u6e90\u76f8\u5173API\uff1a wallet/getaccountresource wallet/getaccountnet wallet/unfreezebalance wallet/getdelegatedresource wallet/getdelegatedresourceaccountindex wallet/freezebalancev2 wallet/unfreezebalancev2 wallet/cancelallunfreezev2 wallet/delegateresource wallet/undelegateresource wallet/withdrawexpireunfreeze wallet/getavailableunfreezecount wallet/getcanwithdrawunfreezeamount wallet/getcandelegatedmaxsize wallet/getdelegatedresourcev2 wallet/getdelegatedresourceaccountindexv2 wallet/getaccountresource \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u7684\u8d44\u6e90\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccountresource -d {\"address\" : \"419844f7600e018fd0d710e2145351d607b3316ce9\"} \u53c2\u6570\uff1a address \uff1a\u67e5\u8be2\u8d26\u6237\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4fe1\u606f wallet/getaccountnet \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5e26\u5bbd\u4fe1\u606f\u3002 curl -X POST http://127.0.0.1:8090/wallet/getaccountnet -d '{\"address\": \"4112E621D5577311998708F4D7B9F71F86DAE138B5\"}' \u53c2\u6570\uff1a address - \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u5e26\u5bbd\u4fe1\u606f wallet/freezebalance \u00b6 \u4f5c\u7528\uff1a\u8d28\u62bctrx\uff0c\u83b7\u53d6\u5e26\u5bbd\uff0c\u83b7\u53d6\u6295\u7968\u6743\u3002\u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\uff0c\u8bf7\u4f7f\u7528freezebalancev2\u8fdb\u884c\u8d28\u62bc\u3002 wallet/unfreezebalance \u00b6 \u4f5c\u7528\uff1a\u89e3\u9501Stake1.0\u9636\u6bb5\u8d28\u62bc\u7684\uff0c\u5e76\u5df2\u7ecf\u7ed3\u675f\u8d28\u62bc\u671f\u7684trx\uff0c\u4f1a\u540c\u65f6\u5931\u53bb\u8fd9\u90e8\u5206trx\u5e26\u6765\u7684\u5e26\u5bbd\u548c\u6295\u7968\u6743 curl -X POST http://127.0.0.1:8090/wallet/unfreezebalance -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"resource\": \"BANDWIDTH\", \"receiver_address\":\"414332f387585c2b58bc2c9bb4492bc1f17342cd1\" }' \u53c2\u6570\uff1a owner_address \u662f\u89e3\u9501trx\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f resource \u53ef\u4ee5\u662fBANDWIDTH\u6216\u8005ENERGY receiverAddress \u8868\u793a\u53d7\u59d4\u6258\u8d26\u6237\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u89e3\u9501trx\u7684transaction wallet/getdelegatedresource \u00b6 \u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u4ee3\u7406\u7ed9\u53e6\u5916\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresource -d ' { \"fromAddress\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"toAddress\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\" }' \u53c2\u6570\uff1a fromAddress \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f toAddress \uff1a\u4ee3\u7406\u5bf9\u8c61\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u7684\u5217\u8868\uff0c\u5217\u8868\u7684\u5143\u7d20\u4e3aDelegatedResource wallet/getdelegatedresourceaccountindex \u00b6 \u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u7ed9\u54ea\u4e9b\u8d26\u6237\u4ee3\u7406\u4e86\u8d44\u6e90 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourceaccountindex -d ' { \"value\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", }' \u53c2\u6570\uff1a value \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u6982\u51b5\uff0c\u7ed3\u6784\u4e3aDelegatedResourceAccountIndex wallet/freezebalancev2 \u00b6 \u4f5c\u7528\uff1a\u8d28\u62bcTRX curl -X POST http://127.0.0.1:8090/wallet/freezebalancev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"frozen_balance\": 10000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u8d28\u62bcTRX \u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f frozen_balance : \u8d28\u62bcTRX \u7684\u6570\u91cf, \u5355\u4f4d\u4e3asun resource : \u8d28\u62bcTRX \u83b7\u53d6\u8d44\u6e90\u7684\u7c7b\u578b, \u53ef\u4ee5\u662f BANDWIDTH \u6216\u8005 ENERGY permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/unfreezebalancev2 \u00b6 \u4f5c\u7528\uff1a \u89e3\u9501\u901a\u8fc7Stake2.0\u673a\u5236\u8d28\u62bc\u7684TRX, \u91ca\u653e\u6240\u76f8\u5e94\u6570\u91cf\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\uff0c\u540c\u65f6\u56de\u6536\u76f8\u5e94\u6570\u91cf\u7684\u6295\u7968\u6743(TP) curl -X POST http://127.0.0.1:8090/wallet/unfreezebalancev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"unfreeze_balance\": 1000000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u89e3\u9501TRX \u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f resource : \u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY unfreeze_balance : \u89e3\u8d28\u62bc\u7684TRX\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/cancelallunfreezev2 \u00b6 \u4f5c\u7528\uff1a \u53d6\u6d88\u6240\u6709\u672a\u5b8c\u6210\u7684\u89e3\u8d28\u62bc\uff0c\u5c06\u8fc7\u671f\u7684\u89e3\u8d28\u62bc\u91d1\u989d\u63d0\u53d6\u5230\u8d26\u6237\u4f59\u989d\u4e2d\uff0c\u5c06\u672a\u8fc7\u671f\u7684\u89e3\u8d28\u62bc\u91d1\u989d\u91cd\u65b0\u8d28\u62bc curl -X POST http://127.0.0.1:8090/wallet/cancelallunfreezev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\" }' \u53c2\u6570\uff1a owner_address : \u8d26\u6237\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/delegateresource \u00b6 \u4f5c\u7528\uff1a \u5c06\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u8d44\u6e90\u4ee3\u7406\u7ed9\u5176\u5b83\u8d26\u6237 curl -X POST http://127.0.0.1:8090/wallet/delegateresource -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"receiver_address\": \"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"balance\": 1000000, \"resource\": \"BANDWIDTH\", \"lock\": false }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f receiver_address : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f balance : \u4ee3\u7406balance\u6570\u91cf\u7684TRX\u6240\u5bf9\u5e94\u7684\u8d44\u6e90\u7ed9\u76ee\u6807\u5730\u5740, \u5355\u4f4d\u4e3asun resource : \u4ee3\u7406\u7684\u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY lock : true\u8868\u793a\u4e3a\u8be5\u8d44\u6e90\u4ee3\u7406\u64cd\u4f5c\u8bbe\u7f6e\u4e09\u5929\u7684\u9501\u5b9a\u671f\uff0c\u5373\u8d44\u6e90\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u540e\u7684\u4e09\u5929\u5185\u4e0d\u53ef\u4ee5\u53d6\u6d88\u5bf9\u5176\u7684\u8d44\u6e90\u4ee3\u7406\uff0c\u5982\u679c\u9501\u5b9a\u671f\u5185\uff0c\u518d\u6b21\u4ee3\u7406\u8d44\u6e90\u7ed9\u540c\u4e00\u76ee\u6807\u5730\u5740\uff0c\u5219\u9501\u5b9a\u671f\u5c06\u91cd\u65b0\u8bbe\u7f6e\u4e3a3\u5929\u3002false\u8868\u793a\u672c\u6b21\u8d44\u6e90\u4ee3\u7406\u6ca1\u6709\u9501\u5b9a\u671f\uff0c\u53ef\u968f\u65f6\u53d6\u6d88\u5bf9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u4ee3\u7406 lock_period : \u9501\u5b9a\u5468\u671f\uff0c\u4ee5\u533a\u5757\u65f6\u95f4\uff083s\uff09\u4e3a\u5355\u4f4d\uff0c\u8868\u793a\u9501\u5b9a\u591a\u5c11\u4e2a\u533a\u5757\u7684\u65f6\u95f4\uff0c\u5f53lock\u4e3atrue\u65f6\uff0c\u8be5\u5b57\u6bb5\u6709\u6548\u3002\u5982\u679c\u4ee3\u7406\u9501\u5b9a\u671f\u4e3a1\u5929\uff0c\u5219lock_period\u4e3a\uff1a28800 permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/undelegateresource \u00b6 \u4f5c\u7528\uff1a \u53d6\u6d88\u4e3a\u76ee\u6807\u5730\u5740\u4ee3\u7406\u7684\u5e26\u5bbd\u6216\u8005\u80fd\u91cf curl -X POST http://127.0.0.1:8090/wallet/undelegateresource -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"receiver_address\": \"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"balance\": 1000000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f receiver_address : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740, \u4e5f\u5c31\u662f\u53d6\u6d88\u4e3a\u8be5\u5730\u5740\u7684\u8d44\u6e90\u4ee3\u7406\u3002 HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f balance : \u53d6\u6d88\u4ee3\u7406 balance\u6570\u91cf\u7684TRX\u6240\u5bf9\u5e94\u7684\u8d44\u6e90, \u5355\u4f4d\u4e3asun resource : \u53d6\u6d88\u4ee3\u7406\u7684\u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/withdrawexpireunfreeze \u00b6 \u4f5c\u7528\uff1a\u63d0\u53d6\u5df2\u8fc7\u9501\u5b9a\u671f\u7684\u89e3\u8d28\u62bc\u7684\u672c\u91d1 curl -X POST http://127.0.0.1:8090/wallet/withdrawexpireunfreeze -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61 wallet/getavailableunfreezecount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5f53\u524d\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570 curl -X POST http://127.0.0.1:8090/wallet/getavailableunfreezecount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u7684\u5269\u4f59\u6b21\u6570 wallet/getcanwithdrawunfreezeamount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf curl -X POST http://127.0.0.1:8090/wallet/getcanwithdrawunfreezeamount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"timestamp\": 1667977444000, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 timestamp : \u67e5\u8be2\u5728\u8be5\u65f6\u95f4\u6233\u65f6\uff0c\u53ef\u63d0\u53d6\u7684\u672c\u91d1\u6570\u91cf\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u672c\u91d1\u53ef\u63d0\u53d6\u6570\u91cf wallet/getcandelegatedmaxsize \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u76ee\u6807\u5730\u5740\u4e2d\u6307\u5b9a\u7c7b\u578b\u8d44\u6e90\u7684\u53ef\u4ee3\u7406\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun curl -X POST http://127.0.0.1:8090/wallet/getcandelegatedmaxsize -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"type\": 0, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 type : \u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf \u8fd4\u56de\u503c\uff1a\u53ef\u4ee3\u7406\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u4efd\u989d\u7684\u6700\u5927\u503c\uff08\u5355\u4f4d\u4e3asun\uff09 wallet/getdelegatedresourcev2 \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u673a\u5236\u4e0b\uff0c\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourcev2 -d '{ \"fromAddress\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"toAddress\": \"TPswDDCAWhJAZGdHPidFg5nEf8TkNToDX1\", \"visible\": true } ' \u53c2\u6570\uff1a fromAddress : \u4ee3\u7406\u8d26\u6237\u5730\u5740 toAddress : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u7684\u5217\u8868 wallet/getdelegatedresourceaccountindexv2 \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u9636\u6bb5\uff0c\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourceaccountindexv2 -d '{ \"value\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a value : \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u00b6 \u4e0b\u9762\u662f\u67e5\u8be2\u94fe\u4e0a\u6570\u636e\u76f8\u5173API\uff1a wallet/getnowblock wallet/getblock wallet/getblockbynum wallet/getblockbyid wallet/getblockbylatestnum wallet/getblockbylimitnext wallet/getblockbalance wallet/gettransactionbyid wallet/gettransactioninfobyid wallet/gettransactioncountbyblocknum wallet/gettransactioninfobyblocknum wallet/listnodes wallet/getnodeinfo wallet/getchainparameters wallet/getenergyprices wallet/getbandwidthprices wallet/getburntrx wallet/getnowblock \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u5757\u3002 curl -X POST http://127.0.0.1:8090/wallet/getnowblock \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u5f53\u524d\u5757\u3002 wallet/getblock \u00b6 \u4f5c\u7528\uff1a\u6839\u636e\u533a\u5757\u9ad8\u5ea6\u6216\u8005\u533a\u5757\u54c8\u5e0c\u67e5\u8be2\u533a\u5757\u5934\u4fe1\u606f\u6216\u8005\u6574\u4e2a\u533a\u5757\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getblock -d '{\"detail\":false}' \u53c2\u6570: id_or_num : \u533a\u5757\u9ad8\u5ea6\u6216\u8005\u533a\u5757\u54c8\u5e0c\uff0c\u4e0d\u8bbe\u7f6e\u8868\u793a\u67e5\u8be2\u6700\u65b0\u533a\u5757 detail : \u9ed8\u8ba4\u4e3afalse\uff0c\u8868\u793a\u53ea\u67e5\u8be2\u533a\u5757\u5934\u4fe1\u606f\uff0ctrue\u8868\u793a\u67e5\u8be2\u6574\u4e2a\u533a\u5757 \u8fd4\u56de\u503c\uff1a\u533a\u5757\u6216\u8005\u533a\u5757\u5934\u3002 wallet/getblockbynum \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7\u9ad8\u5ea6\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbynum -d '{\"num\": 1}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u9ad8\u5ea6\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002 wallet/getblockbyid \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbyid -d '{\"value\": \"0000000000038809c59ee8409a3b6c051e369ef1096603c7ee723c16e2376c73\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757ID\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002 wallet/getblockbylatestnum \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u7684\u51e0\u4e2a\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbylatestnum -d '{\"num\": 5}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u7684\u6570\u91cf\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002 wallet/getblockbylimitnext \u00b6 \u4f5c\u7528\uff1a\u6309\u7167\u8303\u56f4\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbylimitnext -d '{\"startNum\": 1, \"endNum\": 2}' \u53c2\u6570\u8bf4\u660e\uff1a startNum \uff1a\u8d77\u59cb\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u6b64\u5757 endNum \uff1a\u622a\u6b62\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u6b64\u6b64\u5757 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002 wallet/getblockbalance \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u4e00\u4e2a\u533a\u5757\u4e2d\u6240\u6709\u7684\u4f59\u989d\u53d8\u5316\u64cd\u4f5c curl -X POST http://127.0.0.1:8090/wallet/getblockbalance -d '{ \"hash\": \"000000000000dc2a3731e28a75b49ac1379bcc425afc95f6ab3916689fbb0189\", \"number\": 56362, \"visible\": true }' \u53c2\u6570\u8bf4\u660e\uff1a\u533a\u5757hash\u548cnumber\u5fc5\u987b\u4e00\u81f4\u3002 \u8fd4\u56de\u503c\uff1a { \"block_identifier\": { \"hash\": \"000000000000dc2a3731e28a75b49ac1379bcc425afc95f6ab3916689fbb0189\", \"number\": 56362 }, \"timestamp\": 1530060672000, \"transaction_balance_trace\": [ { \"transaction_identifier\": \"e6cabb1833cd1f795eed39d8dd7689eaa70e5bb217611766c74c7aa9feea80df\", \"operation\": [ { \"operation_identifier\": 0, \"address\": \"TPttBLmFuykRi83y9HxDoEWxTQw6CCcQ4p\", \"amount\": -100000 }, { \"operation_identifier\": 1, \"address\": \"TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy\", \"amount\": 100000 }, { \"operation_identifier\": 2, \"address\": \"TPttBLmFuykRi83y9HxDoEWxTQw6CCcQ4p\", \"amount\": -10000000 }, { \"operation_identifier\": 3, \"address\": \"TMrysg7DbwR1M8xqhpaPdVCHCuWFhw7uk1\", \"amount\": 10000000 } ], \"type\": \"TransferContract\", \"status\": \"SUCCESS\" } ] } wallet/gettransactionbyid \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u4ea4\u6613 curl -X POST http://127.0.0.1:8090/wallet/gettransactionbyid -d '{\"value\": \"d5ec749ecc2a615399d8a6c864ea4c74ff9f523c2be0e341ac9be5d47d7c2d62\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u4ea4\u6613ID\u3002 \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u4fe1\u606f\u3002 wallet/gettransactioninfobyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u7684fee\uff0c\u6240\u5728\u7684block curl -X POST http://127.0.0.1:8090/wallet/gettransactioninfobyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1aTransaction\u7684\u4ea4\u6613fee\uff0c\u6240\u5728block\u7684\u9ad8\u5ea6\uff0c\u521b\u5efa\u65f6\u95f4 wallet/gettransactioncountbyblocknum \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8090/wallet/gettransactioncountbyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6. \u8fd4\u56de\u503c\uff1atransaction\u7684\u4e2a\u6570. wallet/gettransactioninfobyblocknum \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u7279\u5b9a\u533a\u5757\u7684\u6240\u6709\u4ea4\u6613 Info \u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/gettransactioninfobyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6. \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u5757\u4e2d\uff0c\u5305\u542b\u7684transactioninfo\u7684\u5217\u8868. wallet/listnodes \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2api\u6240\u5728\u673a\u5668\u8fde\u63a5\u7684\u8282\u70b9\u3002 curl -X POST http://127.0.0.1:8090/wallet/listnodes \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u8282\u70b9\u5217\u8868\u3002 wallet/getnodeinfo \u00b6 \u4f5c\u7528\uff1a\u67e5\u770b\u8282\u70b9\u7684\u4fe1\u606f curl http://127.0.0.1:8090/wallet/getnodeinfo \u8fd4\u56de\u503c\uff1a\u8282\u70b9\u5f53\u524d\u72b6\u6001\u7684\u76f8\u5173\u4fe1\u606f wallet/getchainparameters \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2TRON\u7f51\u7edc\u52a8\u6001\u53c2\u6570 curl -X POST http://127.0.0.1:8090/wallet/getchainparameters \u8fd4\u56de\u503c\uff1a\u533a\u5757\u94fe\u59d4\u5458\u4f1a\u53ef\u4ee5\u8bbe\u7f6e\u7684\u6240\u6709\u53c2\u6570 wallet/getenergyprices \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u80fd\u91cf\u5355\u4ef7\u5386\u53f2 curl -X POST http://127.0.0.1:8090/wallet/getenergyprices \u8fd4\u56de\u503c\uff1a\u6240\u6709\u5386\u53f2\u80fd\u91cf\u5355\u4ef7\u4fe1\u606f\u3002\u6bcf\u6b21\u5355\u4ef7\u53d8\u52a8\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u5192\u53f7\u524d\u4e3a\u6beb\u79d2\u65f6\u95f4\u6233\uff0c\u5192\u53f7\u540e\u4e3a\u4ee5sun\u4e3a\u5355\u4f4d\u7684\u80fd\u91cf\u5355\u4ef7\u3002 wallet/getbandwidthprices \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5e26\u5bbd\u5355\u4ef7\u5386\u53f2 curl -X POST http://127.0.0.1:8090/wallet/getbandwidthprices \u8fd4\u56de\u503c\uff1a\u6240\u6709\u5386\u53f2\u5e26\u5bbd\u5355\u4ef7\u4fe1\u606f\u3002\u6bcf\u6b21\u5355\u4ef7\u53d8\u52a8\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u5192\u53f7\u524d\u4e3a\u6beb\u79d2\u65f6\u95f4\u6233\uff0c\u5192\u53f7\u540e\u4e3a\u4ee5sun\u4e3a\u5355\u4f4d\u7684\u5e26\u5bbd\u5355\u4ef7\u3002 wallet/getburntrx \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u71c3\u70e7\u7684TRX\u6570\u91cf curl -X POST http://127.0.0.1:8090/wallet/getburntrx \u8fd4\u56de\u503c\uff1a\u71c3\u70e7\u7684TRX\u6570\u91cf\uff0c\u4ee5sun\u4e3a\u5355\u4f4d\u3002 \u667a\u80fd\u5408\u7ea6 \u00b6 \u4e0b\u9762\u662f\u667a\u80fd\u5408\u7ea6\u76f8\u5173API\uff1a wallet/getcontract wallet/getcontractinfo wallet/deploycontract wallet/triggersmartcontract wallet/triggerconstantcontract wallet/updatesetting wallet/updateenergylimit wallet/clearabi wallet/estimateenergy wallet/getcontract \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/getcontract -d '{\"value\":\"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1a\u5408\u7ea6\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aSmartContract\uff0c\u667a\u80fd\u5408\u7ea6\u7684\u5185\u5bb9 wallet/getcontractinfo \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/getcontractinfo -d '{\"value\":\"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1a\u5408\u7ea6\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u67e5\u8be2\u94fe\u4e0a\u7684\u5408\u7ea6\u4fe1\u606f\u3002\u4e0ewallet/getcontract\u63a5\u53e3\u4e0d\u540c\u7684\u662f\uff0c\u8be5\u63a5\u53e3\u4e0d\u4ec5\u8fd4\u56debytecode\u8fd8\u4f1a\u8fd4\u56de\u5408\u7ea6\u7684runtime bytecode\u3002runtime bytecode\u76f8\u6bd4bytecode\uff0c\u4e0d\u5305\u542b\u6784\u9020\u51fd\u6570\u4ee5\u53ca\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u4fe1\u606f\u3002 wallet/deploycontract \u00b6 \u4f5c\u7528\uff1a\u90e8\u7f72\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/deploycontract -d '{\"abi\":\"[{\\\"constant\\\":false,\\\"inputs\\\":[{\\\"name\\\":\\\"key\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"value\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"set\\\",\\\"outputs\\\":[],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"constant\\\":true,\\\"inputs\\\":[{\\\"name\\\":\\\"key\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"get\\\",\\\"outputs\\\":[{\\\"name\\\":\\\"value\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}]\",\"bytecode\":\"608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029\",\"parameter\":\"\",\"call_value\":100,\"name\":\"SomeContract\",\"consume_user_resource_percent\":30,\"fee_limit\":10,\"origin_energy_limit\": 10,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a abi \uff1aabi bytecode \uff1abytecode\uff0c\u9700\u8981\u662fhexString\u683c\u5f0f parameter \uff1a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u5217\u8868\uff0c\u9700\u8981\u6309\u7167ABI encoder\u7f16\u7801\u540e\u8f6c\u8bdd\u4e3ahexString\u683c\u5f0f\u3002\u5982\u679c\u6784\u9020\u51fd\u6570\u6ca1\u6709\u53c2\u6570\uff0c\u8be5\u53c2\u6570\u53ef\u4ee5\u4e0d\u7528\u8bbe\u7f6e\u3002 consume_user_resource_percent \uff1a\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4\uff0c\u662f[0, 100]\u4e4b\u95f4\u7684\u6574\u6570\u3002\u5982\u679c\u662f0\uff0c\u5219\u8868\u793a\u7528\u6237\u4e0d\u4f1a\u6d88\u8017\u8d44\u6e90\u3002\u5982\u679c\u5f00\u53d1\u8005\u8d44\u6e90\u6d88\u8017\u5b8c\u4e86\uff0c\u624d\u4f1a\u5b8c\u5168\u4f7f\u7528\u7528\u6237\u7684\u8d44\u6e90\u3002 fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77deploycontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f name \uff1a\u5408\u7ea6\u540d origin_energy_limit : \u521b\u5efa\u8005\u8bbe\u7f6e\u7684\uff0c\u5728\u4e00\u6b21\u5408\u7ea6\u6267\u884c\u6216\u521b\u5efa\u8fc7\u7a0b\u4e2d\u521b\u5efa\u8005\u81ea\u5df1\u6d88\u8017\u7684\u6700\u5927\u7684energy\uff0c\u662f\u5927\u4e8e0\u7684\u6574\u6570 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction wallet/triggersmartcontract \u00b6 \u4f5c\u7528\uff1a\u8c03\u7528\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/triggersmartcontract -d '{\"contract_address\":\"4189139CB1387AF85E3D24E212A008AC974967E561\",\"function_selector\":\"set(uint256,uint256)\",\"parameter\":\"00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002\",\"fee_limit\":10,\"call_value\":100,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f7f\u7528function_selector\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92 fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction wallet/triggerconstantcontract \u00b6 \u4f5c\u7528\uff1a\u8c03\u7528\u5e38\u91cf\u5408\u7ea6\uff0c\u4ea7\u751f\u7684\u4ea4\u6613\u4e0d\u4e0a\u94fe curl -X POST http://127.0.0.1:8090/wallet/triggerconstantcontract -d '{\"contract_address\":\"4189139CB1387AF85E3D24E212A008AC974967E561\",\"function_selector\":\"set(uint256,uint256)\",\"parameter\":\"00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002\",\"call_value\":100,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u5408\u7ea6\u5b57\u8282\u7801\u6216\u8005\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f18\u5148\u4f7f\u7528function_selector owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction wallet/updatesetting \u00b6 \u4f5c\u7528\uff1a\u66f4\u65b0\u5408\u7ea6\u7684consume_user_resource_percent curl -X POST http://127.0.0.1:8090/wallet/updatesetting -d '{\"owner_address\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"contract_address\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\", \"consume_user_resource_percent\": 7}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u8981\u4fee\u6539\u7684\u5408\u7ea6\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f consume_user_resource_percent \uff1a\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4 Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction wallet/updateenergylimit \u00b6 \u4f5c\u7528\uff1a\u66f4\u65b0\u5408\u7ea6\u7684origin_energy_limit curl -X POST http://127.0.0.1:8090/wallet/updateenergylimit -d '{\"owner_address\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"contract_address\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\", \"origin_energy_limit\": 7}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u8981\u4fee\u6539\u7684\u5408\u7ea6\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f origin_energy_limit \uff1a\u521b\u5efa\u8005\u8bbe\u7f6e\u7684\uff0c\u5728\u4e00\u6b21\u5408\u7ea6\u6267\u884c\u6216\u521b\u5efa\u8fc7\u7a0b\u4e2d\u521b\u5efa\u8005\u81ea\u5df1\u6d88\u8017\u7684\u6700\u5927\u7684energy Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction wallet/clearabi \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u6e05\u9664\u667a\u80fd\u5408\u7ea6ABI\u7684\u4ea4\u6613\u5bf9\u8c61 curl -X POST http://127.0.0.1:8090/wallet/clearabi -d '{ \"owner_address\":\"41a7d8a35b260395c14aa456297662092ba3b76fc0\", \"contract_address\":\"417bcb781f4743afaacf9f9528f3ea903b3782339f\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u521b\u5efa\u5408\u7ea6\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u5408\u7ea6\u5730\u5740,\u9ed8\u8ba4\u4e3ahexString \u8fd4\u56de\u503c:\u4ea4\u6613\u5bf9\u8c61 wallet/estimateenergy \u00b6 \u4f5c\u7528\uff1a\u9884\u4f30\u667a\u80fd\u5408\u7ea6\u4ea4\u6613\u6267\u884c\u6210\u529f\u9700\u8981\u63d0\u4f9b\u7684\u80fd\u91cf curl -X POST http://127.0.0.1:8090/wallet/estimateenergy -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"contract_address\": \"TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs\", \"function_selector\": \"transfer(address,uint256)\", \"parameter\": \"00000000000000000000004115208EF33A926919ED270E2FA61367B2DA3753DA0000000000000000000000000000000000000000000000000000000000000032\", \"visible\": true }' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u5408\u7ea6\u5b57\u8282\u7801\u6216\u8005\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f18\u5148\u4f7f\u7528function_selector fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e \u8fd4\u56de\u503c\uff1a\u80fd\u91cf\u9884\u4f30\u503c TRC10\u901a\u8bc1 \u00b6 \u4e0b\u9762\u662fTRC10\u4ee3\u5e01\u76f8\u5173API\uff1a wallet/getassetissuebyaccount wallet/getassetissuebyname wallet/getassetissuelistbyname wallet/getassetissuebyid wallet/getassetissuelist wallet/getpaginatedassetissuelist wallet/transferasset wallet/participateassetissue wallet/createassetissue wallet/unfreezeasset wallet/updateasset wallet/getassetissuebyaccount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u53d1\u884c\u7684token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyaccount -d '{\"address\": \"41F9395ED64A6E1D4ED37CD17C75A1D247223CAF2D\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u53d1\u884c\u8005\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u7528\u6237\u53d1\u884c\u7684token\uff08\u4e00\u4e2a\u7528\u6237\u53ea\u80fd\u53d1\u884c\u4e00\u4e2atoken\uff09\u3002 wallet/getassetissuebyname \u00b6 \u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1atoken\u3002 \u6ce8\u610f\uff1aOdyssey-v3.2\u5f00\u59cb\uff0c\u63a8\u8350\u4f7f\u7528getassetissuebyid\u6216\u8005getassetissuelistbyname\u66ff\u6362\u6b64\u63a5\u53e3\uff0c\u56e0\u4e3a\u4ece3.2\u5f00\u59cb\u5c06\u5141\u8bb8\u901a\u8bc1\u540d\u79f0\u76f8\u540c\u3002\u5982\u679c\u5b58\u5728\u76f8\u540c\u7684\u901a\u8bc1\u540d\u79f0\uff0c\u6b64\u63a5\u53e3\u5c06\u4f1a\u62a5\u9519\u3002 wallet/getassetissuelistbyname \u00b6 \u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token list\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuelistbyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002 wallet/getassetissuebyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyid -d '{\"value\": \"1000001\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1id \u8fd4\u56de\u503c\uff1atoken\u3002 wallet/getassetissuelist \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709token\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getassetissuelist \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002 wallet/getpaginatedassetissuelist \u00b6 \u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2token\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedassetissuelist -d '{\"offset\": 0, \"limit\": 10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002 wallet/transferasset \u00b6 \u4f5c\u7528\uff1a\u8f6c\u8d26Token curl -X POST http://127.0.0.1:8090/wallet/transferasset -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"to_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"asset_name\": \"0x6173736574497373756531353330383934333132313538\", \"amount\": 100}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662ftoken\u8f6c\u51fa\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f to_address \u662ftoken\u8f6c\u5165\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f asset_name \u662ftoken\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f amount \u662ftoken\u8f6c\u8d26\u6570\u91cf Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1atoken\u8f6c\u8d26\u7684Transaction \u3010\u6ce8\u610f\u3011 - \u5f53\u524d\u7684asset_name\u4e3atoken\u540d\u79f0\u3002\u5f53\u59d4\u5458\u4f1a\u901a\u8fc7AllowSameTokenName\u63d0\u8bae\u540easset_name\u6539\u4e3atoken ID\u7684String\u7c7b\u578b\u3002 wallet/participateassetissue \u00b6 \u4f5c\u7528\uff1a\u53c2\u4e0etoken\u53d1\u884c curl -X POST http://127.0.0.1:8090/wallet/participateassetissue -d '{ \"to_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"amount\":100, \"asset_name\":\"3230313271756265696a696e67\" }' \u53c2\u6570\u8bf4\u660e\uff1a to_address \u662fToken\u53d1\u884c\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner_address \u662f\u53c2\u4e0etoken\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f amount \u662f\u53c2\u4e0etoken\u7684\u6570\u91cf asset_name \u662ftoken\u7684\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u53c2\u4e0etoken\u53d1\u884c\u7684transaction \u3010\u6ce8\u610f\u3011 - \u5f53\u524d\u7684asset_name\u4e3atoken\u540d\u79f0\u3002\u5f53\u59d4\u5458\u4f1a\u901a\u8fc7AllowSameTokenName\u63d0\u8bae\u540easset_name\u6539\u4e3atoken ID\u7684String\u7c7b\u578b\u3002 wallet/createassetissue \u00b6 \u4f5c\u7528\uff1a\u53d1\u884cToken curl -X POST http://127.0.0.1:8090/wallet/createassetissue -d '{ \"owner_address\":\"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"name\":\"0x6173736574497373756531353330383934333132313538\", \"abbr\": \"0x6162627231353330383934333132313538\", \"total_supply\" :4321, \"trx_num\":1, \"num\":1, \"start_time\" : 1530894315158, \"end_time\":1533894312158, \"description\":\"007570646174654e616d6531353330363038383733343633\", \"url\":\"007570646174654e616d6531353330363038383733343633\", \"free_asset_net_limit\":10000, \"public_free_asset_net_limit\":10000, \"frozen_supply\":{\"frozen_amount\":1, \"frozen_days\":2} }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u53d1\u884c\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f name \u662ftoken\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f abbr \u662ftoken\u7b80\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f total_supply \u662f\u53d1\u884c\u603b\u91cf trx_num \u548c num \u662ftoken\u548ctrx\u7684\u6700\u5c0f\u5355\u4f4d\u5151\u6362\u6bd4 start_time \u548c end_time \u662ftoken\u53d1\u884c\u8d77\u6b62\u65f6\u95f4 description \u662ftoken\u8bf4\u660e\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662ftoken\u53d1\u884c\u65b9\u7684\u5b98\u7f51\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f free_asset_net_limit \u662fToken\u7684\u603b\u7684\u514d\u8d39\u5e26\u5bbd public_free_asset_net_limit \u662f\u6bcf\u4e2atoken\u62e5\u62a4\u8005\u80fd\u4f7f\u7528\u672ctoken\u7684\u514d\u8d39\u5e26\u5bbd frozen_supply \u662ftoken\u53d1\u884c\u8005\u53ef\u4ee5\u5728\u53d1\u884c\u7684\u65f6\u5019\u6307\u5b9a\u8d28\u62bc\u7684token Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u53d1\u884cToken\u7684Transaction wallet/unfreezeasset \u00b6 \u4f5c\u7528\uff1a\u89e3\u9501\u5df2\u7ecf\u7ed3\u675f\u8d28\u62bc\u671f\u7684Token curl -X POST http://127.0.0.1:8090/wallet/unfreezeasset -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u89e3\u9501token\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u89e3\u9501token\u7684transaction wallet/updateasset \u00b6 \u4f5c\u7528\uff1a\u4fee\u6539token\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/updateasset -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"description\": \"\"\uff0c \"url\": \"\", \"new_limit\" : 1000000, \"new_public_limit\" : 100 }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662ftoken\u53d1\u884c\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f description \u662ftoken\u7684\u63cf\u8ff0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662ftoken\u53d1\u884c\u4eba\u7684\u5b98\u7f51\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f new_limit \u662ftoken\u6bcf\u4e2a\u6301\u6709\u4eba\u80fd\u591f\u4f7f\u7528\u7684\u514d\u8d39\u5e26\u5bbd new_public_limit \u662f\u8be5token\u5168\u90e8\u7684\u514d\u8d39\u5e26\u5bbd Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u4fee\u6539Token\u4fe1\u606f\u7684transaction \u6295\u7968\u548cSR \u00b6 \u4e0b\u9762\u662f\u6295\u7968\u548cSR\u76f8\u5173API\uff1a wallet/createwitness wallet/updatewitness wallet/listwitnesses wallet/withdrawbalance wallet/votewitnessaccount wallet/getBrokerage wallet/updateBrokerage wallet/getReward wallet/getnextmaintenancetime wallet/createwitness \u00b6 \u4f5c\u7528\uff1a\u7533\u8bf7\u6210\u4e3a\u8d85\u7ea7\u4ee3\u8868 curl -X POST http://127.0.0.1:8090/wallet/createwitness -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"url\": \"007570646174654e616d6531353330363038383733343633\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u7533\u8bf7\u6210\u4e3a\u8d85\u7ea7\u4ee3\u8868\u7684\u8d26\u53f7\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662f\u5b98\u7f51\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u7533\u8bf7\u8d85\u7ea7\u4ee3\u8868\u7684Transaction wallet/updatewitness \u00b6 \u4f5c\u7528\uff1a\u4fee\u6539witness\u7684url curl -X POST http://127.0.0.1:8090/wallet/updatewitness -d '{ \"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"update_url\": \"007570646174654e616d6531353330363038383733343633\" }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u521b\u5efa\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f update_url \u662f\u66f4\u65b0\u7684\u5b98\u7f51\u7684url\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u66f4\u65b0witness\u7684Transaction wallet/listwitnesses \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709witness\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/listwitnesses \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1awitness\u5217\u8868\u3002 wallet/withdrawbalance \u00b6 \u4f5c\u7528\uff1a\u8d85\u7ea7\u4ee3\u8868\u63d0\u73b0\u5956\u52b1\u5230balance\uff0c\u6bcf24\u4e2a\u5c0f\u65f6\u53ef\u4ee5\u63d0\u73b0\u4e00\u6b21 curl -X POST http://127.0.0.1:8090/wallet/withdrawbalance -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u63d0\u73b0\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u63d0\u73b0Trx\u7684transaction wallet/votewitnessaccount \u00b6 \u4f5c\u7528\uff1a\u5bf9\u8d85\u7ea7\u4ee3\u8868\u8fdb\u884c\u6295\u7968 curl -X POST http://127.0.0.1:8090/wallet/votewitnessaccount -d '{ \"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"votes\": [{\"vote_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"vote_count\": 5}] }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u6295\u7968\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f votes.vote_address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f vote_count \u662f\u6295\u7968\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6295\u7968\u7684Transaction wallet/getBrokerage \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2witness\u5f53\u524dBrokerage\u6bd4\u4f8b curl -X GET http://127.0.0.1:8090/wallet/getBrokerage -d '{ \"address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1a address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1awitness\u5f53\u524dBrokerage\u6bd4\u4f8b wallet/updateBrokerage \u00b6 \u4f5c\u7528\uff1a\u66f4\u65b0witness\u5f53\u524dBrokerage\u6bd4\u4f8b curl -X POST http://47.252.81.126:8090/wallet/updateBrokerage -d '{ \"owner_address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\", \"brokerage\":30}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f brokerage \u662fwitness\u60f3\u8981\u66f4\u65b0\u4e3a\u7684Brokerage\u6bd4\u4f8b \u8fd4\u56de\u503c\uff1a\u66f4\u65b0Brokerage\u7684Transaction wallet/getReward \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6295\u7968\u4eba\u672a\u9886\u53d6\u7684\u5956\u52b1 curl -X GET http://127.0.0.1:8090/wallet/getReward -d '{ \"address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1aaddress\u662f\u6295\u7968\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u6295\u7968\u4eba\u672a\u9886\u53d6\u7684\u5956\u52b1 wallet/getnextmaintenancetime \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u4e0b\u6b21\u7edf\u8ba1\u6295\u7968\u7684\u65f6\u95f4 curl -X POST http://127.0.0.1:8090/wallet/getnextmaintenancetime \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u4e0b\u6b21\u7edf\u8ba1\u6295\u7968\u65f6\u95f4\u7684\u6beb\u79d2\u6570\u3002 \u63d0\u6848 \u00b6 \u4e0b\u9762\u662f\u63d0\u6848\u76f8\u5173API\uff1a wallet/proposalcreate wallet/getproposalbyid wallet/listproposals wallet/proposalapprove wallet/proposaldelete wallet/getpaginatedproposallist wallet/proposalcreate \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/proposalcreate -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\",\"parameters\":[{\"key\": 0,\"value\": 100000},{\"key\": 1,\"value\": 2}] } \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u521b\u5efa\u4eba\u5730\u5740 parameters \uff1a\u63d0\u6848\u53c2\u6570 \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u521b\u5efa\u63d0\u6848\u7684\u4ea4\u6613 wallet/getproposalbyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/getproposalbyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1aid\uff1a\u63d0\u6848id \u8fd4\u56de\u503c\uff1a\u63d0\u6848\u8be6\u7ec6\u4fe1\u606f wallet/listproposals \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/listproposals \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u63d0\u6848\u5217\u8868\u4fe1\u606f wallet/proposalapprove \u00b6 \u4f5c\u7528\uff1a\u63d0\u6848\u6279\u51c6 curl -X POST http://127.0.0.1:8090/wallet/proposalapprove -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\", \"proposal_id\":1, \"is_add_approval\":true} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u6279\u51c6\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f proposal_id \uff1a\u63d0\u6848id is_add_approval \uff1a\u662f\u5426\u6279\u51c6 \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6279\u51c6\u63d0\u6848\u7684\u4ea4\u6613 wallet/proposaldelete \u00b6 \u4f5c\u7528\uff1a\u5220\u9664\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/proposaldelete -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\", \"proposal_id\":1} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u5220\u9664\u4eba\u7684\u5730\u5740\uff0c\u53ea\u6709\u63d0\u6848\u6240\u6709\u4eba\u5141\u8bb8\u5220\u9664\u63d0\u6848\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f proposal_id \uff1a\u63d0\u6848id \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u5220\u9664\u63d0\u6848\u7684\u4ea4\u6613 wallet/getpaginatedproposallist \u00b6 \u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2proposal\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedproposallist -d '{\"offset\": 0, \"limit\": 10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 \u00b6 \u4e0b\u9762\u662f\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240\u76f8\u5173API\uff1a wallet/exchangecreate wallet/exchangeinject wallet/exchangewithdraw wallet/exchangetransaction wallet/getexchangebyid wallet/listexchanges wallet/getpaginatedexchangelist wallet/marketsellasset wallet/marketcancelorder wallet/getmarketorderbyaccount wallet/getmarketpairlist wallet/getmarketorderlistbypair wallet/getmarketpricebypair wallet/getmarketorderbyid wallet/exchangecreate \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/exchangecreate -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \u3001 \"first_token_id\":token_a, \"first_token_balance\":100, \"second_token_id\":token_b,\"second_token_balance\":200} \u53c2\u6570\u8bf4\u660e\uff1a first_token_id \uff1a\u7b2c1\u79cdtoken\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f first_token_balance \uff1a\u7b2c1\u79cdtoken\u7684balance second_token_id \uff1a \u7b2c2\u79cdtoken\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f second_token_balance \uff1a\u7b2c2\u79cdtoken\u7684balance \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u521b\u5efa\u4ea4\u6613\u5bf9\u7684transaction\u3002 wallet/exchangeinject \u00b6 \u4f5c\u7528\uff1a\u7ed9\u4ea4\u6613\u5bf9\u6ce8\u8d44\uff0c\u6ce8\u8d44\u540e\u53ef\u4ee5\u9632\u6b62\u4ea4\u6613\u5bf9\u4ef7\u683c\u6ce2\u52a8\u592a\u5927 curl -X POST http://127.0.0.1:8090/wallet/exchangeinject -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f quant \uff1a\u6ce8\u8d44token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6ce8\u8d44\u7684transaction\u3002 wallet/exchangewithdraw \u00b6 \u4f5c\u7528\uff1a\u5bf9\u4ea4\u6613\u5bf9\u64a4\u8d44\uff0c\u64a4\u8d44\u540e\u5bb9\u6613\u5f15\u8d77\u4ea4\u6613\u5bf9\u4ef7\u683c\u6ce2\u52a8\u592a\u5927\u3002 curl -X POST http://127.0.0.1:8090/wallet/exchangewithdraw -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9700\u8981\u662fhexString\u683c\u5f0f quant \uff1a\u64a4\u8d44token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u64a4\u8d44\u7684transaction wallet/exchangetransaction \u00b6 \u4f5c\u7528\uff1a\u53c2\u4e0e\u4ea4\u6613\u5bf9\u4ea4\u6613\u3002 curl -X POST http://127.0.0.1:8090/wallet/exchangetransaction -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100,\"expected\":10} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a \u5356\u51fa\u7684token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f quant \uff1a\u5356\u51fatoken\u7684\u6570\u91cf expected \uff1a\u671f\u671b\u4e70\u5165token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1atoken\u4ea4\u6613\u7684transaction wallet/getexchangebyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/getexchangebyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1aid\uff1a\u4ea4\u6613\u5bf9id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9 wallet/listexchanges \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/listexchanges \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u4ea4\u6613\u5bf9 wallet/getpaginatedexchangelist \u00b6 \u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2\u4ea4\u6613\u5bf9\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedexchangelist -d '{\"offset\": 0, \"limit\":10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cb\u4ea4\u6613\u5bf9\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684\u4ea4\u6613\u5bf9\u6570\u91cf \u8fd4\u56de\u503c\uff1aexchange\u5217\u8868 wallet/marketsellasset \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/marketsellasset -d '{ \"owner_address\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\", \"sell_token_id\": \"5f\", \"sell_token_quantity\": 100, \"buy_token_id\": \"31303030303031\", \"buy_token_quantity\": 200 }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u8ba2\u5355\u53d1\u8d77\u8005\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f sell_token_quantity \uff1a\u5356\u51faasset\u7684\u6570\u91cf buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_quantity \uff1a\u6700\u5c11\u4e70\u5165\u7684asset\u7684\u6570\u91cf \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61 wallet/marketcancelorder \u00b6 \u4f5c\u7528\uff1a\u53d6\u6d88\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/marketcancelorder -d '{ \"owner_address\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\", \"order_id\": \"0a7af584a53b612bcff1d0fc86feab05f69bc4528f26a4433bb344d453bd6eeb\" }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u8ba2\u5355\u53d1\u8d77\u8005\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f order_id \uff1a\u53d6\u6d88\u8ba2\u5355\u7684id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61 wallet/getmarketorderbyaccount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u62e5\u6709\u7684\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderbyaccount -d '{ \"value\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\" }' \u53c2\u6570\u8bf4\u660e\uff1a value \uff1a\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355\u5217\u8868 wallet/getmarketpairlist \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5b58\u5728\u7684\u6240\u6709\u4ea4\u6613\u5bf9 curl -X get http://127.0.0.1:8090/wallet/getmarketpairlist \u53c2\u6570\u8bf4\u660e\uff1a \u65e0 \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u5217\u8868 wallet/getmarketorderlistbypair \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u67d0\u4ea4\u6613\u5bf9\u7684\u6240\u6709\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderlistbypair -d '{ \"sell_token_id\": \"5f\" , \"buy_token_id\": \"31303030303031\" }' \u53c2\u6570\u8bf4\u660e\uff1a sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355\u5217\u8868 wallet/getmarketpricebypair \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u67d0\u4ea4\u6613\u5bf9\u7684\u6240\u6709\u4ef7\u683c curl -X POST http://127.0.0.1:8090/wallet/getmarketpricebypair -d '{ \"sell_token_id\": \"5f\" \"buy_token_id\": \"31303030303031\" }' \u53c2\u6570\u8bf4\u660e\uff1a sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u4ef7\u683c\u5217\u8868 wallet/getmarketorderbyid \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderbyid -d '{ \"value\": \"orderid\" }' \u53c2\u6570\u8bf4\u660e\uff1a - value \uff1aorder id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355 TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6 \u00b6 \u4e0b\u9762\u662f TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6\u76f8\u5173API\uff1a wallet/getexpandedspendingkey wallet/getakfromask wallet/getnkfromnsk wallet/getspendingkey wallet/getdiversifier wallet/getincomingviewingkey wallet/getzenpaymentaddress wallet/createshieldedtransactionwithoutspendauthsig wallet/scannotebyivk wallet/scanandmarknotebyivk wallet/scannotebyovk wallet/createshieldnullifier wallet/getshieldtransactionhash wallet/createshieldedtransaction wallet/getnewshieldedaddress wallet/createshieldedcontractparameters wallet/createshieldedcontractparameterswithoutask wallet/scanshieldedtrc20notesbyivk wallet/scanshieldedtrc20notesbyovk wallet/isshieldedtrc20contractnotespent wallet/gettriggerinputforshieldedtrc20contract wallet/getrcm wallet/getmerkletreevoucherinfo wallet/isspend wallet/createspendauthsig wallet/getexpandedspendingkey \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6expanded spending keys curl -X POST http://127.0.0.1:8090/wallet/getexpandedspendingkey -d '{ \"value\": \"06b02aaa00f230b0887ff57a6609d76691369972ac3ba568fe7a8a0897fce7c4\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aSpending key \u8fd4\u56de\u503c\uff1a Expanded spending keys. \u7531\u4e09\u4e2akey\u7ec4\u6210\uff0c\u5206\u522b\u662f ask\u3001 nsk\u548covk. wallet/getakfromask \u00b6 \u4f5c\u7528\uff1a\u4eceask\u83b7\u5f97ak curl -X POST http://127.0.0.1:8090/wallet/getakfromask -d '{ \"value\": \"653b3a3fdd40b60d2f53ba121df8840f6590384993f8fa9a0ecb0dfb23496604\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aAsk \u8fd4\u56de\u503c\uff1aAk wallet/getnkfromnsk \u00b6 \u4f5c\u7528\uff1a\u4ecensk\u83b7\u5f97nk curl -X POST http://127.0.0.1:8090/wallet/getnkfromnsk -d '{ \"value\": \"428ff3c9e101dc1fca08f7b0e3387b23b68016746ae565aefc19d112b696db01\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aNsk \u8fd4\u56de\u503c\uff1aNk wallet/getspendingkey \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97spending key curl -X GET http://127.0.0.1:8090/wallet/getspendingkey \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1aSpending key wallet/getdiversifier \u00b6 \u4f5c\u7528\uff1aTo get diversifier curl -X GET http://127.0.0.1:8090/wallet/getdiversifier \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c: Diversifier wallet/getincomingviewingkey \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97incoming viewing key curl -X POST http://127.0.0.1:8090/wallet/getincomingviewingkey -d '{ \"ak\":\"b443f1a303ef5837ba95750b48b6fef15f9c77f63a8c28c161bcd6613f423b5c\", \"nk\":\"632137e69179df3d10e252fcce85d13464c3163fe7a619edf8d43ebefa8162d9\" }' \u53c2\u6570\u8bf4\u660e\uff1a ak\uff1aAk nk\uff1aNk \u8fd4\u56de\u503c\uff1aIncoming viewing key wallet/getzenpaymentaddress \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97\u652f\u4ed8\u5730\u5740 curl -X POST http://127.0.0.1:8090/wallet/getzenpaymentaddress -d '{ \"ivk\":\"8c7852e10862d8eec058635974f70f24c1f8d73819131bb5b54028d0a9408a03\", \"d\":\"736ba8692ed88a5473e009\" }' \u53c2\u6570\u8bf4\u660e\uff1a ivk \uff1aIvk d \uff1aD \u8fd4\u56de\u503c\uff1a\u652f\u4ed8\u5730\u5740 wallet/createshieldedtransactionwithoutspendauthsig \u00b6 \u4f5c\u7528\uff1aTo create shielded transaction without using ask curl -X POST http://127.0.0.1:8090/wallet/createshieldedtransactionwithoutspendauthsig -d '{ \"ivk\":\"8c7852e10862d8eec058635974f70f24c1f8d73819131bb5b54028d0a9408a03\", \"d\":\"736ba8692ed88a5473e009\" }' \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61 wallet/createshieldedtransactionwithoutspendauthsig \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540d\u4ea4\u6613\uff08\u4e0d\u9700\u8981\u63d0\u4f9bask\uff09 curl -X POST http://127.0.0.1:8090/wallet/createshieldedtransactionwithoutspendauthsig -d '{ \"ak\": \"bf051629fd8122cd9dd8591d72947b026c214cf7cdac1f68eff97179727d38e9\", \"nsk\": \"42963d26af8122204273fa3489d9efd6babf1f7179ff193c955a1f3d9c2df10c\", \"ovk\": \"bc9848a83966709655b12efadc9e978785858316045e0115a0e72567a9a2a823\", \"shielded_spends\": [ { \"note\": { \"value\": 500000000, \"payment_address\": \"ztron1jld8fmvujrz2vgkc867zuwklmewy4ypw0wtwgweqs2paee0uhc8f3azy90el770arksa2kunl02\", \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\" }, \"alpha\": \"2608999c3a97d005a879ecdaa16fd29ae434fb67b177c5e875b0c829e6a1db04\", \"voucher\": { \"tree\": { \"left\": { \"content\": \"a3d5c9b2db9699f32afec5febbd5586ce9ff33a0bef6fee5691028313b8e1f6a\" }, \"parents\": [ { \"content\": \"d9c38484296b3aa8f5e8b59d418a3775e2bb414e75498ad352e4614f05aae548\" }, { \"content\": \"d0420777afdc4151c3f14fbe4c714d82dc15873edb1ca65ebb3887334a4bae15\" } ] }, \"rt\": \"fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c28565\" }, \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20d0420777afdc4151c3f14fbe4c714d82dc15873edb1ca65ebb3887334a4bae1520d9c38484296b3aa8f5e8b59d418a3775e2bb414e75498ad352e4614f05aae5482001000000000000000000000000000000000000000000000000000000000000000600000000000000\" } ], \"shielded_receives\": [ { \"note\": { \"value\": 40000000, \"payment_address\": \"ztron1wd46s6fwmz99gulqpxul6zffqtevzfpl93ng3s5834fhwf6e7w5l6zmjhmpvtwsc4wxa7dusmvr\", \"rcm\": \"ccced07d36641fc93cba33cddda7064cb82f6962a0bdf15a4240a4a742770e03\" } } ] }' \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ak \uff1aAk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61 wallet/scannotebyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/wallet/scannotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 wallet/scanandmarknotebyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes, \u5305\u542b\u662f\u5426\u82b1\u8d39\u72b6\u6001 curl -X POST http://127.0.0.1:8090/wallet/scanandmarknotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\", \"ak\": \"1d4f9b5551f4aa9443ceb263f0e208eb7e26080264571c5ef06de97a646fe418\", \"nk\": \"748522c7571a9da787e43940c9a474aa0c5c39b46c338905deb6726fa3678bdb\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 wallet/scannotebyovk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eovk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/wallet/scannotebyovk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ovk\": \"705145aa18cbe6c11d5d0011419a98f3d5b1d341eb4727f1315597f4bdaf8539\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 wallet/createshieldnullifier \u00b6 \u4f5c\u7528\uff1aTo create a shielded nullifier curl -X POST http://127.0.0.1:8090/wallet/createshieldnullifier -d '{ \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"voucher\": { \"tree\": { \"left\": { \"content\": \"a4d763fae3fee78964ccdf7567ec3062c95a5b97825d731202d3dfa6cb01c143\" } }, \"rt\": \"7dc3652c2a16e8518a8be0e3e038f9d28c3eb96f13e8da8acc2a9b650702f33e\" }, \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\" }' \u53c2\u6570\u8bf4\u660e\uff1a - note \uff1aNote\u4fe1\u606f - voucher \uff1aVoucher\u4fe1\u606f - ak \uff1aAk - nk \uff1aNk \u8fd4\u56de\u503c\uff1a\u533f\u540d\u7684nullifier wallet/getshieldtransactionhash \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u7b14\u533f\u540d\u4ea4\u6613\u7684hash curl -X POST http://127.0.0.1:8090/wallet/getshieldtransactionhash -d '{ \"txID\": \"de639a64497d86bb27e34a2953093a0cc488ec4c7bc9624ac5857d3799748595\", \"raw_data\": { \"contract\": [ { \"parameter\": { \"value\": { \"binding_signature\": \"2b8ae5e11ecad3e6946f54b7ad513bd8692a3edae72d29e266b28e47c9b37ccdb38e3b6433575694b6681136b1734f85afcfe672061d2ee7368755ad0b96a80b\", \"spend_description\": [ { \"value_commitment\": \"cbe1063adbe7e10919421fa6133f03150253913f5aff02d165e2c019cea4a869\", \"anchor\": \"fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c28565\", \"nullifier\": \"93e329d464e1dbddc8bb4d2dcc939a796dfe11e985d4e9033a15edf0e3df4f35\", \"rk\": \"10c702d6dff1509502ee5acc0b01d4b4531b2ff53b0dd54488aea6031b5e6d16\", \"zkproof\": \"abf64b3beacfd873b1db764c3da9f739993518f3f740e761cb8af60682b7171892895c3ccfb550c3cf757e906dbf5313a3676b8226b0b84960f76a185c8d3fdfc3fa9c08479a704852d7b3dfeb913cf13e01c25657561e00a06c61e7c65b50b812902ddc4f17bfe2bcb2f247c2dc6132d0f0e0abcecc0332fdd99077af10d07bbdb88c4fd257948428e233c57f84eee8b2eeab2162c1aeccf2e1dfaa306d5803a8b2d281a549440fbd5a3657a830c1ca07a384cea446aa077b195b29b23023b1\" } ], \"receive_description\": [ { \"value_commitment\": \"f6d45db8ec5a1c8dbbde040b4ea138efbe8db2d0597ed2306ff3fdd0620b3c5a\", \"note_commitment\": \"ec3f5472ac8114a9a07987d1c2a0e1254504e352d9574971e77084293900312e\", \"epk\": \"719eeb5ebaeeccc55c9f0d73767aadf0c0513603400ccb50bd789637d984b8e6\", \"c_enc\": \"3a6c4fe0e79f5b23fed34a419c4728d0b26bca23180a22871743b0a9444c27663cf07c55a0ea6db504d70421768bf17384e180b2ad8b8be88ff5cf662c53a4ba086effc3a4b1df39265f71dfac884bff5a69e1dcdcae8aecf6ae443168ffab692a5c1e4908b415dd830dcf6432fae1c32461132080da74d6b83d3d00887eb2ce9965a749f8d8410ea4182969371ac2fd5e0e74d27d883492a08e6209cd9959d74bb67c2a9fe7faac5a4777f1bff19cf0b6398a2faa9b194bbb93d60f132f382f7d693a722e8cbca1da084ee7e0c371397419a7259d1fa0943078cfe5ea352e4b53907bb6c04ca8ad409fb0ae0b110a6b312200e21ab79d543ae7aeb16802cf87afdac1e8954038caa42818f4ca2847fd642360c098accfeeade4abd1cc9ca3315a4336be224ba3516973c7dae3f41875457236675993df38d3a544470c4f9335d77b005e6a9aec40fd881b34852ec9bbbcc3d24ee92930eae770a5462ce04c4e37b0524ef07e00e8d58c810d6aefb19fa7bc2c3a2fdfab6dd4fe73dbecc0795a280f9b7ca35cc8bc1062aed8e26bd81ba33c6f4c318974636f6d796723e77772ced3dbc1f42afec6fc9bb61f8beac704affea9baf2e2de226250c1d427c7d78b1eb1d239e1f3eb6af0f017b80541333f4fce17340048d826b9b0be8477c996ad8bfc3440dc686fdff6d0d63986db4d95962d7977289cbfd14c745de7c79d4dc0bcd220e5b4ced5b409e79142e0f336e44ca29a9a87f6f43707d8c4936e895236dd2b393a478a8bc27b1f682496ba84a0ddc549da06cb7855c4d8680dc66ac40240733b7f\", \"c_out\": \"50be6e77854d4c427b2af4f16e5275f0b0c206b3ea2d2a24ffb287ea356f323523354cd83d15e7c48e6f1fa103dfca3d49ca2263dbb0cd8bfb35d72cdcad1351de6fba7a30aea27184a68bcda19cc6da\", \"zkproof\": \"a4e6c50d5753092d005689922c2bdeafc98775bce59db840974163ace23c13fec18112e32aae1c39842c645ed172ad8fa277e63c1e3d6d7fb12eb15d56b573237b776f562a81d0e6be362d147d8604fdfec421482270ca82950de1883fda06e719f5d256d7a039769bffc570a1778d70c17295d1c0336a6ae0903d2460dc139a9563c2d40f37bffefa73003a55af1ff0861b6f79ef40099b6a0cb25ab3f40727210e4629647d0711abff125712a5f0d64fcb6e6a6b0b34478d7da0552b493a80\" } ] }, \"type_url\": \"type.googleapis.com/protocol.ShieldedTransferContract\" }, \"type\": \"ShieldedTransferContract\" } ], \"ref_block_bytes\": \"0d59\", \"ref_block_hash\": \"7356ce5c35d8265e\", \"expiration\": 1559237283000, \"timestamp\": 1559201285590 }, \"raw_data_hex\": \"0a020d5922087356ce5c35d8265e40b899a3ceb02d5a940b0833128f0b0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e536869656c6465645472616e73666572436f6e747261637412d50a1acb020a20cbe1063adbe7e10919421fa6133f03150253913f5aff02d165e2c019cea4a8691220fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c285651a2093e329d464e1dbddc8bb4d2dcc939a796dfe11e985d4e9033a15edf0e3df4f35222010c702d6dff1509502ee5acc0b01d4b4531b2ff53b0dd54488aea6031b5e6d162ac001abf64b3beacfd873b1db764c3da9f739993518f3f740e761cb8af60682b7171892895c3ccfb550c3cf757e906dbf5313a3676b8226b0b84960f76a185c8d3fdfc3fa9c08479a704852d7b3dfeb913cf13e01c25657561e00a06c61e7c65b50b812902ddc4f17bfe2bcb2f247c2dc6132d0f0e0abcecc0332fdd99077af10d07bbdb88c4fd257948428e233c57f84eee8b2eeab2162c1aeccf2e1dfaa306d5803a8b2d281a549440fbd5a3657a830c1ca07a384cea446aa077b195b29b23023b122c2070a20f6d45db8ec5a1c8dbbde040b4ea138efbe8db2d0597ed2306ff3fdd0620b3c5a1220ec3f5472ac8114a9a07987d1c2a0e1254504e352d9574971e77084293900312e1a20719eeb5ebaeeccc55c9f0d73767aadf0c0513603400ccb50bd789637d984b8e622c4043a6c4fe0e79f5b23fed34a419c4728d0b26bca23180a22871743b0a9444c27663cf07c55a0ea6db504d70421768bf17384e180b2ad8b8be88ff5cf662c53a4ba086effc3a4b1df39265f71dfac884bff5a69e1dcdcae8aecf6ae443168ffab692a5c1e4908b415dd830dcf6432fae1c32461132080da74d6b83d3d00887eb2ce9965a749f8d8410ea4182969371ac2fd5e0e74d27d883492a08e6209cd9959d74bb67c2a9fe7faac5a4777f1bff19cf0b6398a2faa9b194bbb93d60f132f382f7d693a722e8cbca1da084ee7e0c371397419a7259d1fa0943078cfe5ea352e4b53907bb6c04ca8ad409fb0ae0b110a6b312200e21ab79d543ae7aeb16802cf87afdac1e8954038caa42818f4ca2847fd642360c098accfeeade4abd1cc9ca3315a4336be224ba3516973c7dae3f41875457236675993df38d3a544470c4f9335d77b005e6a9aec40fd881b34852ec9bbbcc3d24ee92930eae770a5462ce04c4e37b0524ef07e00e8d58c810d6aefb19fa7bc2c3a2fdfab6dd4fe73dbecc0795a280f9b7ca35cc8bc1062aed8e26bd81ba33c6f4c318974636f6d796723e77772ced3dbc1f42afec6fc9bb61f8beac704affea9baf2e2de226250c1d427c7d78b1eb1d239e1f3eb6af0f017b80541333f4fce17340048d826b9b0be8477c996ad8bfc3440dc686fdff6d0d63986db4d95962d7977289cbfd14c745de7c79d4dc0bcd220e5b4ced5b409e79142e0f336e44ca29a9a87f6f43707d8c4936e895236dd2b393a478a8bc27b1f682496ba84a0ddc549da06cb7855c4d8680dc66ac40240733b7f2a5050be6e77854d4c427b2af4f16e5275f0b0c206b3ea2d2a24ffb287ea356f323523354cd83d15e7c48e6f1fa103dfca3d49ca2263dbb0cd8bfb35d72cdcad1351de6fba7a30aea27184a68bcda19cc6da32c001a4e6c50d5753092d005689922c2bdeafc98775bce59db840974163ace23c13fec18112e32aae1c39842c645ed172ad8fa277e63c1e3d6d7fb12eb15d56b573237b776f562a81d0e6be362d147d8604fdfec421482270ca82950de1883fda06e719f5d256d7a039769bffc570a1778d70c17295d1c0336a6ae0903d2460dc139a9563c2d40f37bffefa73003a55af1ff0861b6f79ef40099b6a0cb25ab3f40727210e4629647d0711abff125712a5f0d64fcb6e6a6b0b34478d7da0552b493a802a402b8ae5e11ecad3e6946f54b7ad513bd8692a3edae72d29e266b28e47c9b37ccdb38e3b6433575694b6681136b1734f85afcfe672061d2ee7368755ad0b96a80b70d68b8ebdb02d\" }' \u53c2\u6570\u8bf4\u660e\uff1atransaction\uff1a\u4ea4\u6613\u5bf9\u8c61 \u8fd4\u56de\u503c\uff1a\u4e00\u7b14\u533f\u540d\u4ea4\u6613\u7684hash wallet/createshieldedtransaction \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540d\u4ea4\u6613\uff0c\u8bf7\u53c2\u7167\uff1a \u793a\u4f8b \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61 wallet/getnewshieldedaddress \u00b6 \u4f5c\u7528: \u83b7\u5f97shieldedAddress curl -X GET http://127.0.0.1:8090/wallet/getnewshieldedaddress \u53c2\u6570\u8bf4\u660e: \u65e0 \u8fd4\u56de\u503c: Spending key Ask key Nsk key Outgoing viewing key Ak Key Nk key incoming viewing key Diversifier pkD payment address wallet/createshieldedcontractparameters \u00b6 \u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u76f8\u5173\u53c2\u6570\uff0c\u5305\u62ecmint, transfer\u548cburn\u4e09\u79cd\u7c7b\u578b curl -X POST http://127.0.0.1:8090/wallet/createshieldedcontractparameters -d '{ \"ask\": \"0f63eabdfe2bbfe08012f6bb2db024e6809c16e8ed055aa41a6095424f192005\", \"nsk\": \"cd43d722fd4b6b01f19449ea826c3e935609648520fcc2a95c0026f0fa9ee404\", \"ovk\": \"1797de3b7f33cafffe3fe18c6b43ec6760add2ad81b10978d1fca5290497ede9\", \"from_amount\": \"5000\", \"shielded_receives\": { \"note\": { \"value\": 50, \"payment_address\": \"ztron15js0jkuxczt8caq5hp59rnh6rgf34sek7vqn9u6ljelxv4nuzz2x9qe3ffm2wzz6ck53yxyhxs6\", \"rcm\": \"74baec30dfac8ed59968955ff245ae002009005194e5b824c35ab88c52e5170e\" } }, \"shielded_TRC20_contract_address\": \"41f3392eaa7d38749176e0671dbc6912f8ef956943\" }' \u53c2\u6570\u8bf4\u660e\uff1a ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOutgoing view key from_amount \uff1amint\u7684\u91d1\u989d\uff0c\u6839\u636e\u7f29\u653e\u56e0\u5b50scalingFactor\uff0c\u548cnote\u503c\u4e2d\u7684 value \u6210\u6bd4\u4f8b\u5173\u7cfb\uff0c\u5373 from_amount = value * scalingFactor. \u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0cscalingFactor\u503c\u4e3a100 shielded_receives : \u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6notes shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u53c2\u6570 \u6ce8\u610f\uff1a\u6839\u636e\u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6\u4ea4\u6613\u7c7b\u578b\u7684\u4e0d\u540c\uff0c\u8f93\u5165\u7684\u53c2\u6570\u4e0d\u540c wallet/createshieldedcontractparameterswithoutask \u00b6 \u4f5c\u7528\uff1a\u5728\u6ca1\u6709Ask\u7684\u60c5\u51b5\u4e0b\uff0c\u521b\u5efa\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u76f8\u5173\u53c2\u6570\uff0c\u5305\u62ecmint, transfer\u548cburn\u4e09\u79cd\u7c7b\u578b curl -X POST http://127.0.0.1:8090/wallet/createshieldedcontractparameterswithoutask -d '{ \"ovk\": \"cd361834b3adc06f130de24f7d0c18f92a093cc885d9ce492cc6c02071f7a4f0\", \"from_amount\": \"5000\", \"shielded_receives\": { \"note\": { \"value\": 50, \"payment_address\": \"ztron13lvfnt4rau4ad9mmgztd3aftw49e3amz8gm2kvyzrsaw0ugz2grxwkvcfys5e2gkchj7cnnetjz\", \"rcm\": \"499e73f2f8aaf05fac41a35b8343bde27f6629cbe66d35da5364a99b94a55a06\" } }, \"shielded_TRC20_contract_address\": \"41f3392eaa7d38749176e0671dbc6912f8ef956943\" }' \u53c2\u6570\u8bf4\u660e\uff1a ovk \uff1aOutgoing view key from_amount \uff1amint\u7684\u91d1\u989d\uff0c\u6839\u636e\u7f29\u653e\u56e0\u5b50 scalingFactor\uff0c\u548cnote\u503c\u4e2d\u7684value\u6210\u6bd4\u4f8b\u5173\u7cfb\uff0c\u5373 from_amount = value * scalingFactor. \u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0cscalingFactor\u503c\u4e3a100 shielded_receives : \u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6notes shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u53c2\u6570 \u6ce8\u610f\uff1a\u6839\u636e\u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6\u4ea4\u6613\u7c7b\u578b\u7684\u4e0d\u540c\uff0c\u8f93\u5165\u7684\u53c2\u6570\u4e0d\u540c wallet/scanshieldedtrc20notesbyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eivk\u76f8\u5173\u7684\u6240\u6709notes, \u5e76\u6807\u8bb0\u5176\u662f\u5426\u5df2\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/wallet/scanshieldedtrc20notesbyivk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ivk\": \"9f8e74bb3d7188a2781dc1db38810c6914eef4570a79e8ec8404480948e4e305\", \"ak\":\"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\":\"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 wallet/scanshieldedtrc20notesbyovk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eovk\u76f8\u5173\u7684\u6240\u6709notes curl -X POST http://127.0.0.1:8090/wallet/scanshieldedtrc20notesbyovk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ovk\": \"0ff58efd75e083fe4fd759c8701e1c8cb6961c4297a12b2c800bdb7b2bcab889\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 wallet/isshieldedtrc20contractnotespent \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u7684note\u662f\u5426\u5df2\u88ab\u82b1\u8d39 \u53c2\u6570\u8bf4\u660e\uff1a note \uff1aNote\u4fe1\u606f ak \uff1aAk nk \uff1aNk position \uff1anote\u627f\u8bfa\u5728\u533f\u540d\u5408\u7ea6Merkle\u6811\u53f6\u5b50\u8282\u70b9\u7684\u4f4d\u7f6e\u7d22\u5f15 shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 \u6ce8\u610f: Note \u4e2dvalue\u662f\u7531 scalingFactor\u7f29\u653e\u540e\u7684\u503c\uff0cscalingFactor\u5728\u533f\u540dTRC-20\u5408\u7ea6\u4e2d\u8bbe\u7f6e\uff0c\u5b9e\u9645\u91d1\u989d real_amount = value * scalingFactor \u3002 wallet/gettriggerinputforshieldedtrc20contract \u00b6 \u4f5c\u7528: \u5bf9\u4e8e\u6ca1\u6709\u6388\u6743\u7b7e\u540d\u7684\u533f\u540dTRC-20\u5408\u7ea6\u53c2\u6570\uff0c\u751f\u6210\u89e6\u53d1\u5408\u7ea6\u7684\u8f93\u5165\u6570\u636e curl -X POST http://127.0.0.1:8090/wallet/gettriggerinputforshieldedtrc20contract -d '{ \"shielded_TRC20_Parameters\": {\"spend_description\": [{\"value_commitment\": \"e3fcc8609ff6a4b00b77a00ef624f305cec5f55cc7312ff5526d0b3057f2ef9e\",\"anchor\": \"4c9cbebece033dc1d253b93e4a3682187daae4f905515761d10287b801e69816\",\"nullifier\": \"74edce8798a3976ee41e045bb666f3a121c27235b0f1b44b3456d2c84bc725dc\",\"rk\": \"9dcf4254aa7c4fb7c8bc6956d4b0c7c6c87c37a2552e7bf4e60c12cb5bc6c8cd\",\"zkproof\": \"9926045cd1442a7d20153e6abda9f77a6526895f0a29a57cb1bc76ef6b7cacef2d0f4c94aa97c3acacdb95cabb065057b7edb4cbea098149a8aa7114a6a6b340c58007ac64b64e592eb18fdd299de5962a2a32ab0caebb2ab198704c751a9d0e143d68a50257d7c9e2230a7420fa46450299fd167141367e201726532d8e815413d8571d6c8c12937674dec92caf1f4583ebe560ac4c7eba290deee0a1c0da5f72c0b9df89fb3b338c683b654b3dc2373a4c2a4fef7f4fa489b44405fb7d2bfb\"}],\"binding_signature\": \"11e949887d9ec92eb32c78f0bc48afdc9a16a2ecbd5a0eca1be070fb900eeda347918bd6e9521d4baf1f74963bee0c1956559623a9e7cbc886941b227341ea06\",\"message_hash\": \"7e6a00736c4f9e0036cb74c7fa3b1e3cd8f6bf0f038edeb03b668c4c5536a357\",\"parameter_type\": \"burn\"}, \"spend_authority_signature\": [ { \"value\": \"eeaaecd725ac80ec398b95cf188b769c1be66cc8e76e6c90843b7f23818704595719ce8bf694ffb8cd7aaa8739d50fe8eea7ba39d5026c4b019c973185ca7201\" } ], \"amount\": \"6000\", \"transparent_to_address\": \"4140cd765f8e637a2bbe00f9bc458f6b21eb0e648f\" }' \u53c2\u6570\u8bf4\u660e: shielded_TRC20_Parameters : \u751f\u6210\u7684\u533f\u540dTRC-20\u5408\u7ea6\u53c2\u6570 spend_authority_signature : \u6388\u6743\u7b7e\u540d amount : \u4ea4\u6613\u91d1\u989d transparent_to_address : \u63a5\u6536\u8005\u5730\u5740. \u8fd4\u56de\u503c: \u89e6\u53d1TRC-20\u5408\u7ea6\u7684\u8f93\u5165\u6570\u636e wallet/getrcm \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2arcm curl -X GET http://127.0.0.1:8090/wallet/getrcm \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1arcm wallet/getmerkletreevoucherinfo \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getmerkletreevoucherinfo -d '{ \"out_points\":[{ \"hash\":\"185b3e085723f5862b3a3c3cf54d52f5c1eaf2541e3a1e0ecd08bc12cd958d74\", \"index\":0 }] }' \u53c2\u6570\u8bf4\u660e\uff1aout_points\uff1aNote\u4fe1\u606f \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f wallet/isspend \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/wallet/isspend -d '{ \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\", \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"txid\": \"7d09e471bb047d3ac044d5d6691b3721a2dddbb683ac02c207fbe78af6302463\", \"index\": 1 }' \u53c2\u6570\u8bf4\u660e\uff1a ak \uff1aAk nk \uff1aNk note \uff1aNote\u4fe1\u606f txid \uff1a\u4ea4\u6613id index \uff1aNote\u7d22\u5f15 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 wallet/createspendauthsig \u00b6 \u4f5c\u7528\uff1a\u4e3a\u4e00\u4e2a\u4ea4\u6613\u521b\u5efa\u4e00\u4e2a\u7b7e\u540d curl -X POST http://127.0.0.1:8090/wallet/createspendauthsig -d '{ \"ask\": \"e3ebcba1531f6d9158d9c162660c5d7c04dadf77d85d7436a9c98b291ff69a09\", \"tx_hash\": \"3b78fee6e956f915ffe082284c5f18640edca9c57a5f227e5f7d7eb65ad61502\", \"alpha\": \"2608999c3a97d005a879ecdaa16fd29ae434fb67b177c5e875b0c829e6a1db04\" }' \u53c2\u6570\u8bf4\u660e\uff1a ask\uff1aAsk tx_hash\uff1a\u4ea4\u6613\u54c8\u5e0c alpha\uff1aAlpha \u8fd4\u56de\u503c\uff1a\u7b7e\u540d Pending Pool \u00b6 \u4e0b\u9762\u662fPending Pool\u76f8\u5173API\uff1a wallet/gettransactionfrompending wallet/gettransactionlistfrompending wallet/getpendingsize wallet/gettransactionfrompending \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u4e2d\u7684\u4ea4\u6613\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/gettransactionfrompending -d '{ \"value\": \"txId\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue: \u4ea4\u6613id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u7684\u8be6\u7ec6\u4fe1\u606f wallet/gettransactionlistfrompending \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u4ea4\u6613\u5217\u8868id curl -X get http://127.0.0.1:8090/wallet/gettransactionlistfrompending \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1apending pool\u4ea4\u6613\u5217\u8868id wallet/getpendingsize \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u5927\u5c0f curl -X get http://127.0.0.1:8090/wallet/getpendingsize \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1apending pool \u5927\u5c0f FullNode Solidity HTTP API \u00b6 \u8d26\u6237\u8d44\u6e90 \u00b6 walletsolidity/getaccount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8091/walletsolidity/getaccount -d '{\"address\": \"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1aaddress \u9ed8\u8ba4\u4e3ahexString \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61 walletsolidity/getdelegatedresource \u00b6 \u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u4ee3\u7406\u7ed9\u53e6\u5916\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8091/walletsolidity/getdelegatedresource -d ' { \"fromAddress\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"toAddress\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\" }' \u53c2\u6570\u8bf4\u660e\uff1a fromAddress \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f toAddress \uff1a\u4ee3\u7406\u5bf9\u8c61\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u7684\u5217\u8868\uff0c\u5217\u8868\u7684\u5143\u7d20\u4e3aDelegatedResource walletsolidity/getdelegatedresourceaccountindex \u00b6 \u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u60c5\u51b5 curl -X POST http://127.0.0.1:8091/walletsolidity/getdelegatedresourceaccountindex -d ' { \"value\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", }' \u53c2\u6570\u8bf4\u660e\uff1a value \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684DelegatedResourceAccountIndex walletsolidity/getaccountbyid \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7accountId\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8091/walletsolidity/getaccountbyid -d '{\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1aaccount_id \u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61 walletsolidity/getavailableunfreezecount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5f53\u524d\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570 curl -X POST http://127.0.0.1:8090/walletsolidity/getavailableunfreezecount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u7684\u5269\u4f59\u6b21\u6570 walletsolidity/getcanwithdrawunfreezeamount \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf curl -X POST http://127.0.0.1:8090/walletsolidity/getcanwithdrawunfreezeamount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"timestamp\": 1667977444000, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 timestamp : \u67e5\u8be2\u5728\u8be5\u65f6\u95f4\u6233\u65f6\uff0c\u53ef\u63d0\u53d6\u7684\u672c\u91d1\u6570\u91cf\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u672c\u91d1\u53ef\u63d0\u53d6\u6570\u91cf walletsolidity/getcandelegatedmaxsize \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u76ee\u6807\u5730\u5740\u4e2d\u6307\u5b9a\u7c7b\u578b\u8d44\u6e90\u7684\u53ef\u4ee3\u7406\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun curl -X POST http://127.0.0.1:8090/walletsolidity/getcandelegatedmaxsize -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"type\": 0, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 type : \u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf \u8fd4\u56de\u503c\uff1a\u53ef\u4ee3\u7406\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u4efd\u989d\u7684\u6700\u5927\u503c\uff08\u5355\u4f4d\u4e3asun\uff09 walletsolidity/getdelegatedresourcev2 \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u673a\u5236\u4e0b\uff0c\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/walletsolidity/getdelegatedresourcev2 -d '{ \"fromAddress\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"toAddress\": \"TPswDDCAWhJAZGdHPidFg5nEf8TkNToDX1\", \"visible\": true } ' \u53c2\u6570\uff1a fromAddress : \u4ee3\u7406\u8d26\u6237\u5730\u5740 toAddress : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u7684\u5217\u8868 walletsolidity/getdelegatedresourceaccountindexv2 \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u9636\u6bb5\uff0c\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) curl -X POST http://127.0.0.1:8090/walletsolidity/getdelegatedresourceaccountindexv2 -d '{ \"value\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a value : \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) \u6295\u7968\u548cSR \u00b6 walletsolidity/listwitnesses \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u8d85\u7ea7\u4ee3\u8868\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/listwitnesses \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u8d85\u7ea7\u4ee3\u8868\u5217\u8868 TRC10 \u901a\u8bc1 \u00b6 walletsolidity/getassetissuelist \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709Token\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuelist \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709Token\u5217\u8868 walletsolidity/getpaginatedassetissuelist \u00b6 \u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2Token\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/getpaginatedassetissuelist -d '{\"offset\": 0, \"limit\":10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1aToken\u5217\u8868 walletsolidity/getassetissuebyname \u00b6 \u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuebyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u3002 \u8fd4\u56de\u503c\uff1atoken\u3002 \u6ce8\u610f\uff1aOdyssey-v3.2\u5f00\u59cb\uff0c\u63a8\u8350\u4f7f\u7528getassetissuebyid\u6216\u8005getassetissuelistbyname\u66ff\u6362\u6b64\u63a5\u53e3\uff0c\u56e0\u4e3a\u4ece3.2\u5f00\u59cb\u5c06\u5141\u8bb8\u901a\u8bc1\u540d\u79f0\u76f8\u540c\u3002\u5982\u679c\u5b58\u5728\u76f8\u540c\u7684\u901a\u8bc1\u540d\u79f0\uff0c\u6b64\u63a5\u53e3\u5c06\u4f1a\u62a5\u9519\u3002 walletsolidity/getassetissuelistbyname \u00b6 \u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token list\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuelistbyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u3002 \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002 walletsolidity/getassetissuebyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuebyid -d '{\"value\": \"1000001\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1id \u8fd4\u56de\u503c\uff1atoken\u3002 \u533a\u5757 \u00b6 walletsolidity/getnowblock \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0block curl -X POST http://127.0.0.1:8091/walletsolidity/getnowblock \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1asolidityNode\u4e0a\u7684\u6700\u65b0block walletsolidity/getblockbynum \u00b6 \u4f5c\u7528\uff1a\u6309\u7167\u9ad8\u5ea6\u67e5\u8be2block curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbynum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u9ad8\u5ea6\u7684block walletsolidity/getblockbyid \u00b6 \u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbyid-d '{\"value\": \"0000000000038809c59ee8409a3b6c051e369ef1096603c7ee723c16e2376c73\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757ID\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002 walletsolidity/getblockbylimitnext \u00b6 \u4f5c\u7528\uff1a\u6309\u7167\u8303\u56f4\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbylimitnext -d '{\"startNum\": 1, \"endNum\": 2}' \u53c2\u6570\u8bf4\u660e\uff1a startNum \uff1a\u8d77\u59cb\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u6b64\u5757 endNum \uff1a\u622a\u6b62\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u6b64\u6b64\u5757 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002 walletsolidity/getblockbylatestnum \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u7684\u51e0\u4e2a\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbylatestnum -d '{\"num\": 5}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u7684\u6570\u91cf\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002 wallet/getnodeinfo \u00b6 \u4f5c\u7528\uff1a\u83b7\u53d6\u5f53\u524dnode\u7684\u4fe1\u606f curl -X GET http://127.0.0.1:8091/wallet/getnodeinfo \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u5f53\u524d\u8282\u70b9\u7684\u4fe1\u606fNodeInfo \u4ea4\u6613 \u00b6 walletsolidity/gettransactionbyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactionbyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1a\u6307\u5b9aID\u7684Transaction walletsolidity/gettransactioncountbyblocknum \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioncountbyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1atransaction\u7684\u4e2a\u6570 walletsolidity/gettransactioninfobyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u7684fee\uff0c\u6240\u5728\u7684block curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioninfobyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1aTransaction\u7684\u4ea4\u6613fee\uff0c\u6240\u5728block\u7684\u9ad8\u5ea6\uff0c\u521b\u5efa\u65f6\u95f4 walletsolidity/gettransactioninfobyblocknum \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioninfobyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u5757\u4e2d\uff0c\u5305\u542b\u7684transactioninfo\u7684\u5217\u8868 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 \u00b6 walletsolidity/getexchangebyid \u00b6 \u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8091/walletsolidity/getexchangebyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1a id\uff1a\u4ea4\u6613\u5bf9id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9 walletsolidity/listexchanges \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8091/walletsolidity/listexchanges \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u4ea4\u6613\u5bf9 TRONZ\u533f\u540d\u667a\u80fd\u5408\u7ea6 \u00b6 walletsolidity/getmerkletreevoucherinfo \u00b6 \u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f curl -X POST http://127.0.0.1:8090/walletsolidity/getmerkletreevoucherinfo -d '{ \"out_points\":[{ \"hash\":\"185b3e085723f5862b3a3c3cf54d52f5c1eaf2541e3a1e0ecd08bc12cd958d74\", \"index\":0 }] }' \u53c2\u6570\u8bf4\u660e\uff1a out_points \uff1aNote\u4fe1\u606f \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f walletsolidity/scannotebyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/walletsolidity/scannotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 walletsolidity/scanandmarknotebyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes, \u5305\u542b\u662f\u5426\u82b1\u8d39\u72b6\u6001 curl -X POST http://127.0.0.1:8090/walletsolidity/scanandmarknotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\", \"ak\": \"1d4f9b5551f4aa9443ceb263f0e208eb7e26080264571c5ef06de97a646fe418\", \"nk\": \"748522c7571a9da787e43940c9a474aa0c5c39b46c338905deb6726fa3678bdb\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 walletsolidity/scannotebyovk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eovk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/walletsolidity/scannotebyovk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ovk\": \"705145aa18cbe6c11d5d0011419a98f3d5b1d341eb4727f1315597f4bdaf8539\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 walletsolidity/isspend \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/walletsolidity/isspend -d '{ \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\", \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"txid\": \"7d09e471bb047d3ac044d5d6691b3721a2dddbb683ac02c207fbe78af6302463\", \"index\": 1 }' \u53c2\u6570\u8bf4\u660e\uff1a ak \uff1aAk nk \uff1aNk note \uff1aNote\u4fe1\u606f txid \uff1a\u4ea4\u6613id index \uff1aNote\u7d22\u5f15 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 walletsolidity/scanshieldedtrc20notesbyivk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eivk\u76f8\u5173\u7684\u6240\u6709notes, \u5e76\u6807\u8bb0\u5176\u662f\u5426\u5df2\u82b1\u8d39 curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyivk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ivk\": \"9f8e74bb3d7188a2781dc1db38810c6914eef4570a79e8ec8404480948e4e305\", \"ak\":\"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\":\"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 walletsolidity/scanshieldedtrc20notesbyovk \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eovk\u76f8\u5173\u7684\u6240\u6709notes curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyovk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ovk\": \"0ff58efd75e083fe4fd759c8701e1c8cb6961c4297a12b2c800bdb7b2bcab889\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09 walletsolidity/isshieldedtrc20contractnotespent \u00b6 \u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u7684note\u662f\u5426\u5df2\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyovk -d '{ \"note\": { \"value\": 40, \"payment_address\":\"ztron1768kf7dy4qquefp46szk978d65eeua66yhr4zv260c0uzj68t3tfjl3en9lhyyfxalv4jus30xs\", \"rcm\": \"296070782a94c6936b0b4f6daf8d7c7605a4374fe595b96148dc0f4b59015d0d\" }, \"ak\": \"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\": \"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\", \"position\": 272, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\" }' \u53c2\u6570\u8bf4\u660e\uff1a note \uff1aNote\u4fe1\u606f ak \uff1aAk nk \uff1aNk position \uff1anote\u627f\u8bfa\u5728\u533f\u540d\u5408\u7ea6Merkle\u6811\u53f6\u5b50\u8282\u70b9\u7684\u4f4d\u7f6e\u7d22\u5f15 shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 \u6ce8\u610f: Note \u4e2d value \u662f\u7531 scalingFactor \u7f29\u653e\u540e\u7684\u503c\uff0c scalingFactor \u5728\u533f\u540dTRC-20\u5408\u7ea6\u4e2d\u8bbe\u7f6e\uff0c\u5b9e\u9645\u91d1\u989d real_amount = value * scalingFactor \u3002","title":"HTTP \u63a5\u53e3"},{"location":"api/http/#http-api","text":"\u672c\u7ae0\u8282\u4ecb\u7ecd\u8282\u70b9\u7684HTTP API\u53ca\u5176\u7528\u6cd5\u3002 \u6ce8\u610f \u5c3d\u7ba1\u6ce2\u573a\uff08TRON\uff09\u901a\u8fc7\u5c06 HTTP API \u7684 Content-Type \u8bbe\u7f6e\u4e3a application/json \u907f\u514d\u4e86 XSS \u653b\u51fb\uff0c\u4f46\u4ecd\u6709\u4e00\u4e9b API \u6ca1\u6709\u8f93\u5165\u9a8c\u8bc1\u3002\u4e3a\u4e86\u66f4\u597d\u5730\u4fdd\u62a4\u7528\u6237\u6570\u636e\u5b89\u5168\uff0c\u6211\u4eec\u5efa\u8bae\u60a8\u5728\u4f7f\u7528 API \u7684\u4efb\u4f55\u6570\u636e\u4e4b\u524d\uff0c\u5148\u5bf9\u5176\u8fdb\u884c\u6b63\u786e\u7f16\u7801\uff08\u5c24\u5176\u662f\u5f53\u53c2\u6570'visible'\u4e3atrue\u65f6\uff09\u3002 \u4ee5\u4e0b\u662f\u4e00\u79cd\u5178\u578b\u7684 XSS \u9632\u62a4\u65b9\u6cd5\uff1a\u5bf9\u6765\u81ea API \u7684\u6240\u6709\u6570\u636e\u5728 HTML \u4e2d\u8fdb\u884c\u7f16\u7801\u3002\u4f7f\u7528\u8bf8\u5982 encodeURIComponent() \u6216 escape() \u7b49\u65b9\u6cd5\u5bf9\u6570\u636e\u8fdb\u884c\u7f16\u7801\uff0c\u8fd9\u53ef\u4ee5\u5c06\u7279\u6b8a\u5b57\u7b26\u8f6c\u6362\u4e3a\u5176 HTML \u5b9e\u4f53\uff0c\u9632\u6b62\u6d4f\u89c8\u5668\u5c06\u5176\u89e3\u91ca\u4e3a HTML \u4ee3\u7801\u3002 \u8bf7\u52a1\u5fc5\u4e3a\u6765\u81ea API \u7684\u6240\u6709\u6570\u636e\u5b9e\u65bd XSS \u9632\u62a4\uff0c\u4ee5\u786e\u4fdd\u7528\u6237\u6570\u636e\u7684\u5b89\u5168\u3002\u6211\u4eec\u4e86\u89e3\u60a8\u53ef\u80fd\u9700\u8981\u6709\u5173 XSS \u9632\u62a4\u7684\u66f4\u591a\u4fe1\u606f\u3002\u5efa\u8bae\u60a8\u53c2\u8003\u4ee5\u4e0b\u8d44\u6e90\uff1a OWASP XSS Prevention Cheat Sheet \u3002 \u9996\u5148\uff0c\u5bf9HTTP API\u4e2d\u5730\u5740\u683c\u5f0f\u7684\u9009\u62e9\u8fdb\u884c\u8bf4\u660e\uff1aTRON\u7f51\u7edc\u8d26\u6237\u5730\u5740\u683c\u5f0f\u6709\u4e24\u79cd\uff1aHexString\u683c\u5f0f\u548cBase58\u683c\u5f0f\u3002\u8282\u70b9HTTP API\u652f\u6301\u5730\u5740\u683c\u5f0f\u9009\u62e9\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7visible\u53c2\u6570\u8bbe\u7f6e\u5730\u5740\u683c\u5f0f\uff0c\u9ed8\u8ba4\u503c\u4e3afalse\uff0c\u53c2\u6570\u53ca\u8fd4\u56de\u503c\u4e2d\u7684\u5730\u5740\u683c\u5f0f\u5747\u4e3ahex\u683c\u5f0f\uff0c\u5f53visible\u8bbe\u7f6e\u4e3atrue\u65f6\uff0c\u53c2\u6570\u53ca\u8fd4\u56de\u503c\u4e2d\u7684\u5730\u5740\u683c\u5f0f\u5747\u4e3aBase58\u683c\u5f0f\u3002\u5982\u679c\u53c2\u6570\u683c\u5f0f\u4e0evisible\u8bbe\u7f6e\u4e0d\u5339\u914d\uff0c\u5c06\u4f1a\u62a5\u9519\u3002\u8bbe\u7f6e\u65b9\u5f0f\uff1a \u5bf9\u4e8eGET\u65b9\u5f0f\u8bf7\u6c42\u63a5\u53e3\u6216\u8005\u4e0d\u9700\u8981\u53c2\u6570\u7684\u67e5\u8be2\u63a5\u53e3\uff0c\u901a\u8fc7\u5728url\u4e2d\u589e\u52a0\u53c2\u6570 visible=true http://127.0.0.1:8090/wallet/listexchanges?visible=true \u5bf9\u4e8ePOST\u65b9\u5f0f\u8bf7\u6c42\u63a5\u53e3\uff0c\u901a\u8fc7\u5728json\u7ed3\u6784\u4f53\u6700\u5916\u5c42\u4e2d\u589e\u52a0\u53c2\u6570 \"visible\": true curl - X POST h tt p : //127.0.0.1:8090/wallet/createtransaction -d ' { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"to_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"amount\" : 1000000 , \"visible\" : true } '","title":"HTTP API \u63a5\u53e3"},{"location":"api/http/#fullnode-http-api","text":"FullNode HTTP API\u5206\u7c7b\u5982\u4e0b: \u94fe\u4e0a\u8d26\u6237 \u8f6c\u8d26\u548c\u4ea4\u6613 \u8d26\u6237\u8d44\u6e90 \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u667a\u80fd\u5408\u7ea6 TRC-10\u901a\u8bc1 \u6295\u7968\u548cSR \u63d0\u6848 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6 Pending Pool","title":"Fullnode HTTP API"},{"location":"api/http/#_1","text":"\u4e0b\u9762\u662f\u94fe\u4e0a\u8d26\u6237\u76f8\u5173API\uff1a wallet/validateaddress wallet/createaccount wallet/getaccount wallet/updateaccount wallet/accountpermissionupdate wallet/getaccountbalance wallet/setaccountid wallet/getaccountbyid","title":"\u94fe\u4e0a\u5e10\u6237"},{"location":"api/http/#walletvalidateaddress","text":"\u4f5c\u7528\uff1a\u68c0\u67e5\u5730\u5740\u662f\u5426\u6b63\u786e curl -X POST http://127.0.0.1:8090/wallet/validateaddress -d '{\"address\": \"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5730\u5740\uff0c\u53ef\u4ee5\u662fbase58checksum\u3001hexString\u3001base64\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u5730\u5740\u6b63\u786e\u6216\u8005\u9519\u8bef","title":"wallet/validateaddress"},{"location":"api/http/#walletcreateaccount","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u8d26\u53f7\uff0c\u4e00\u4e2a\u5df2\u7ecf\u6fc0\u6d3b\u7684\u8d26\u53f7\u521b\u5efa\u4e00\u4e2a\u65b0\u8d26\u53f7\u3002\u5982\u679c\u521b\u5efa\u8005\u8d26\u53f7\u6709\u8db3\u591f\u7684\u901a\u8fc7\u8d28\u62bcTRX\u83b7\u5f97\u7684\u5e26\u5bbd\uff0c\u90a3\u4e48\u521b\u5efa\u8d26\u6237\u53ea\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u5426\u5219\uff0c\u4f1a\u70e7\u63890.1\u4e2aTRX\u6765\u652f\u4ed8\u5e26\u5bbd\u8d39\u7528\uff0c\u540c\u65f6\u9700\u8981\u989d\u5916\u652f\u4ed8 1 TRX\u7684\u521b\u5efa\u8d39\u7528 curl -X POST http://127.0.0.1:8090/wallet/createaccount -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"account_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\"}' \u53c2\u6570\uff1a owner_address \u662f\u5df2\u7ecf\u6fc0\u6d3b\u7684\u8d26\u53f7\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f account_address \u662f\u65b0\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f\uff0c\u8fd9\u4e2a\u5730\u5740\u9700\u8981\u4e8b\u5148\u521b\u5efa\u597d Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u521b\u5efa\u8d26\u53f7\u7684Transaction","title":"wallet/createaccount"},{"location":"api/http/#walletgetaccount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2a\u8d26\u6237\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccount -d '{\"address\": \"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\uff1a address \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61","title":"wallet/getaccount"},{"location":"api/http/#walletupdateaccount","text":"\u4f5c\u7528\uff1a\u4fee\u6539\u8d26\u53f7\u540d\u79f0 curl -X POST http://127.0.0.1:8090/wallet/updateaccount -d '{\"account_name\": \"0x7570646174654e616d6531353330383933343635353139\" ,\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\"}' \u53c2\u6570\uff1a account_name \u662f\u8d26\u53f7\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner_address \u662f\u8981\u4fee\u6539\u540d\u79f0\u7684\u8d26\u53f7\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570, \u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4fee\u6539\u540d\u79f0Transaction","title":"wallet/updateaccount"},{"location":"api/http/#walletaccountpermissionupdate","text":"\u4f5c\u7528\uff1a\u4fee\u6539\u8d26\u6237\u6743\u9650 curl -X POST http://127.0.0.1:8090/wallet/accountpermissionupdate -d '{ \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"owner\": { \"type\": 0, \"permission_name\": \"owner\", \"threshold\": 1, \"keys\": [{ \"address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"weight\": 1 }] }, \"witness\": { \"type\": 1, \"permission_name\": \"witness\", \"threshold\": 1, \"keys\": [{ \"address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"weight\": 1 }] }, \"actives\": [{ \"type\": 2, \"permission_name\": \"active12323\", \"threshold\": 2, \"operations\": \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\", \"keys\": [{ \"address\": \"TNhXo1GbRNCuorvYu5JFWN3m2NYr9QQpVR\", \"weight\": 1 }, { \"address\": \"TKwhcDup8L2PH5r6hxp5CQvQzZqJLmKvZP\", \"weight\": 1 }] }], \"visible\": true}' \u53c2\u6570\uff1a owner_address\uff1a\u521b\u5efa\u5408\u7ea6\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner\uff1a\u8d26\u6237owner\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f witness\uff1a\u51fa\u5757\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f\uff0c\u5982\u679c\u4e0d\u662fwitness\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e actives\uff1a\u5176\u4ed6\u529f\u80fd\u6743\u9650\u7684\u5206\u914d\u4fe1\u606f \u8fd4\u56de\u503c:\u672a\u7b7e\u540d\u7684transaction","title":"wallet/accountpermissionupdate"},{"location":"api/http/#walletgetaccountbalance","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u5386\u53f2\u4f59\u989d curl -X POST http://127.0.0.1:8090/wallet/getaccountbalance -d '{ \"account_identifier\": { \"address\": \"TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm\" }, \"block_identifier\": { \"hash\": \"0000000000010c4a732d1e215e87466271e425c86945783c3d3f122bfa5affd9\", \"number\": 68682 }, \"visible\": true }' \u53c2\u6570\uff1a \u8d26\u6237 address + \u533a\u5757 hash \u548c number\uff0c\u533a\u5757 hash \u548c number \u5fc5\u987b\u5339\u914d\u4e00\u81f4\u3002 \u8fd4\u56de\u503c\uff1a { \"balance\": 64086449348265042, \"block_identifier\": { \"hash\": \"0000000000010c4a732d1e215e87466271e425c86945783c3d3f122bfa5affd9\", \"number\": 68682 } } \u8fd4\u56de\u503c\u4e2d\u7684 block_identifier \u8868\u793a\u8d26\u6237\u4f59\u989d\u53d1\u751f\u53d8\u5316\u7684\u533a\u5757","title":"wallet/getaccountbalance"},{"location":"api/http/#walletsetaccountid","text":"\u4f5c\u7528\uff1a\u8bbe\u7f6e\u4e00\u4e2a\u8d26\u6237\u7684accountID curl -X POST http://127.0.0.1:8090/wallet/setaccountid -d '{ \"owner_address\":\"41a7d8a35b260395c14aa456297662092ba3b76fc0\",\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f account_id accountid,\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c:\u8bbe\u7f6eAccountID\u7684transaction","title":"wallet/setaccountid"},{"location":"api/http/#walletgetaccountbyid","text":"\u4f5c\u7528\uff1a\u901a\u8fc7accountId\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccountbyid -d '{\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1a account_id \u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61","title":"wallet/getaccountbyid"},{"location":"api/http/#_2","text":"\u4e0b\u9762\u662f\u8f6c\u8d26\u548c\u4ea4\u6613\u76f8\u5173API\uff1a wallet/createtransaction wallet/broadcasttransaction wallet/broadcasthex wallet/getsignweight wallet/getapprovedlist","title":"\u8f6c\u8d26\u548c\u4ea4\u6613"},{"location":"api/http/#walletcreatetransaction","text":"\u4f5c\u7528\uff1a \u521b\u5efa\u4e00\u4e2a\u8f6c\u8d26\u7684Transaction\uff0c\u5982\u679c\u8f6c\u8d26\u7684to\u5730\u5740\u4e0d\u5b58\u5728\uff0c\u5219\u5728\u533a\u5757\u94fe\u4e0a\u521b\u5efa\u8be5\u8d26\u53f7 curl -X POST http://127.0.0.1:8090/wallet/createtransaction -d '{\"to_address\": \"41e9d79cc47518930bc322d9bf7cddd260a0260a8d\", \"owner_address\": \"41D1E7A6BC354106CB410E65FF8B181C600FF14292\", \"amount\": 1000 }' \u53c2\u6570\uff1a to_address \u662f\u8f6c\u8d26\u8f6c\u5165\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString owner_address \u662f\u8f6c\u8d26\u8f6c\u51fa\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString amount \u662f\u8f6c\u8d26\u6570\u91cf Permission_id \u53ef\u9009\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u8f6c\u8d26\u4ea4\u6613","title":"wallet/createtransaction"},{"location":"api/http/#walletbroadcasttransaction","text":"\u4f5c\u7528\uff1a\u5bf9\u7b7e\u540d\u540e\u7684transaction\u8fdb\u884c\u5e7f\u64ad curl -X POST http://127.0.0.1:8090/wallet/broadcasttransaction -d '{\"signature\":[\"97c825b41c77de2a8bd65b3df55cd4c0df59c307c0187e42321dcc1cc455ddba583dd9502e17cfec5945b34cad0511985a6165999092a6dec84c2bdd97e649fc01\"],\"txID\":\"454f156bf1256587ff6ccdbc56e64ad0c51e4f8efea5490dcbc720ee606bc7b8\",\"raw_data\":{\"contract\":[{\"parameter\":{\"value\":{\"amount\":1000,\"owner_address\":\"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\",\"to_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\"},\"type_url\":\"type.googleapis.com/protocol.TransferContract\"},\"type\":\"TransferContract\"}],\"ref_block_bytes\":\"267e\",\"ref_block_hash\":\"9a447d222e8de9f2\",\"expiration\":1530893064000,\"timestamp\":1530893006233}}' \u53c2\u6570\uff1a\u7b7e\u540d\u4e4b\u540e\u7684Transaction \u8fd4\u56de\u503c\uff1a\u5e7f\u64ad\u662f\u5426\u6210\u529f","title":"wallet/broadcasttransaction"},{"location":"api/http/#walletbroadcasthex","text":"\u4f5c\u7528\uff1a\u5bf9\u7b7e\u540d\u540e\u7684transaction hex\u8fdb\u884c\u5e7f\u64ad curl -X POST http://127.0.0.1:8090/wallet/broadcasthex -d '{\"transaction\":\"0A8A010A0202DB2208C89D4811359A28004098A4E0A6B52D5A730802126F0A32747970652E676F6F676C65617069732E636F6D2F70726F746F636F6C2E5472616E736665724173736574436F6E747261637412390A07313030303030311215415A523B449890854C8FC460AB602DF9F31FE4293F1A15416B0580DA195542DDABE288FEC436C7D5AF769D24206412418BF3F2E492ED443607910EA9EF0A7EF79728DAAAAC0EE2BA6CB87DA38366DF9AC4ADE54B2912C1DEB0EE6666B86A07A6C7DF68F1F9DA171EEE6A370B3CA9CBBB00\"}' \u53c2\u6570\uff1a\u7b7e\u540d\u4e4b\u540e\u7684Transaction hex \u8fd4\u56de\u503c\uff1a\u5e7f\u64ad\u662f\u5426\u6210\u529f","title":"wallet/broadcasthex"},{"location":"api/http/#walletgetsignweight","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u591a\u91cd\u7b7e\u540d\u7684\u4ea4\u6613\u7684\u76f8\u5173\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getsignweight -d '{ \"signature\": [ \"e0bd4a60f1b3c89d4da3894d400e7e32385f6dd690aee17fdac4e016cdb294c5128b66f62f3947a7182c015547496eba95510c113bda2a361d811b829343c36501\", \"596ead6439d0f381e67f30b1ed6b3687f2bd53ce5140cdb126cfe4183235804741eeaf79b4e91f251fd7042380a9485d4d29d67f112d5387bc7457b355cd3c4200\" ], \"txID\": \"0ae84a8439f5aa8fd2c458879a4031a7452aebed8e6e99ffbccd26842d4323c4\", \"raw_data\": { \"contract\": [{ \"parameter\": { \"value\": { \"amount\": 1000000, \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"to_address\": \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" }, \"type_url\": \"type.googleapis.com/protocol.TransferContract\" }, \"type\": \"TransferContract\" }], \"ref_block_bytes\": \"163d\", \"ref_block_hash\": \"77ef4ace148b05ba\", \"expiration\": 1555664823000, \"timestamp\": 1555664763418 }, \"raw_data_hex\": \"0a02163d220877ef4ace148b05ba40d8c5e5a6a32d5a69080112630a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412320a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18c0843d2802709af4e1a6a32d\", \"visible\": true}' \u53c2\u6570\u8bf4\u660e\uff1a\u53c2\u6570\u6574\u4f53\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u4ea4\u6613 \u8fd4\u56de\u503c:\u5df2\u7b7e\u540d\u6743\u91cd\u662f\u5426\u8fbe\u5230\u9608\u503c\uff08\u5373\u662f\u5426\u6ee1\u8db3\u9a8c\u7b7e\u6807\u51c6\uff09\uff0c\u7b7e\u540d\u5730\u5740\u5217\u8868\uff0cpermission\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u5df2\u7b7e\u540d\u7684\u6743\u91cd\u53ca\u4ea4\u6613\u4fe1\u606f\u3002","title":"wallet/getsignweight"},{"location":"api/http/#walletgetapprovedlist","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u591a\u91cd\u7b7e\u540d\u7684\u4ea4\u6613\u7684\u76f8\u5173\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getapprovedlist -d '{ \"signature\": [ \"e0bd4a60f1b3c89d4da3894d400e7e32385f6dd690aee17fdac4e016cdb294c5128b66f62f3947a7182c015547496eba95510c113bda2a361d811b829343c36501\", \"596ead6439d0f381e67f30b1ed6b3687f2bd53ce5140cdb126cfe4183235804741eeaf79b4e91f251fd7042380a9485d4d29d67f112d5387bc7457b355cd3c4200\" ], \"txID\": \"0ae84a8439f5aa8fd2c458879a4031a7452aebed8e6e99ffbccd26842d4323c4\", \"raw_data\": { \"contract\": [{ \"parameter\": { \"value\": { \"amount\": 1000000, \"owner_address\": \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\", \"to_address\": \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" }, \"type_url\": \"type.googleapis.com/protocol.TransferContract\" }, \"type\": \"TransferContract\" }], \"ref_block_bytes\": \"163d\", \"ref_block_hash\": \"77ef4ace148b05ba\", \"expiration\": 1555664823000, \"timestamp\": 1555664763418 }, \"raw_data_hex\": \"0a02163d220877ef4ace148b05ba40d8c5e5a6a32d5a69080112630a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412320a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18c0843d2802709af4e1a6a32d\", \"visible\": true}' \u53c2\u6570\u6574\u4f53\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u4ea4\u6613 \u8fd4\u56de\u503c:\u5df2\u7b7e\u540d\u6743\u91cd\u662f\u5426\u8fbe\u5230\u9608\u503c\uff08\u5373\u662f\u5426\u6ee1\u8db3\u9a8c\u7b7e\u6807\u51c6\uff09\uff0c\u7b7e\u540d\u5730\u5740\u5217\u8868\uff0c\u4ea4\u6613\u4fe1\u606f\u3002","title":"wallet/getapprovedlist"},{"location":"api/http/#_3","text":"\u4e0b\u9762\u662f\u94fe\u4e0a\u8d44\u6e90\u76f8\u5173API\uff1a wallet/getaccountresource wallet/getaccountnet wallet/unfreezebalance wallet/getdelegatedresource wallet/getdelegatedresourceaccountindex wallet/freezebalancev2 wallet/unfreezebalancev2 wallet/cancelallunfreezev2 wallet/delegateresource wallet/undelegateresource wallet/withdrawexpireunfreeze wallet/getavailableunfreezecount wallet/getcanwithdrawunfreezeamount wallet/getcandelegatedmaxsize wallet/getdelegatedresourcev2 wallet/getdelegatedresourceaccountindexv2","title":"\u5e10\u6237\u8d44\u6e90"},{"location":"api/http/#walletgetaccountresource","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u7684\u8d44\u6e90\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getaccountresource -d {\"address\" : \"419844f7600e018fd0d710e2145351d607b3316ce9\"} \u53c2\u6570\uff1a address \uff1a\u67e5\u8be2\u8d26\u6237\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4fe1\u606f","title":"wallet/getaccountresource"},{"location":"api/http/#walletgetaccountnet","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5e26\u5bbd\u4fe1\u606f\u3002 curl -X POST http://127.0.0.1:8090/wallet/getaccountnet -d '{\"address\": \"4112E621D5577311998708F4D7B9F71F86DAE138B5\"}' \u53c2\u6570\uff1a address - \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u5e26\u5bbd\u4fe1\u606f","title":"wallet/getaccountnet"},{"location":"api/http/#walletfreezebalance","text":"\u4f5c\u7528\uff1a\u8d28\u62bctrx\uff0c\u83b7\u53d6\u5e26\u5bbd\uff0c\u83b7\u53d6\u6295\u7968\u6743\u3002\u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\uff0c\u8bf7\u4f7f\u7528freezebalancev2\u8fdb\u884c\u8d28\u62bc\u3002","title":"wallet/freezebalance"},{"location":"api/http/#walletunfreezebalance","text":"\u4f5c\u7528\uff1a\u89e3\u9501Stake1.0\u9636\u6bb5\u8d28\u62bc\u7684\uff0c\u5e76\u5df2\u7ecf\u7ed3\u675f\u8d28\u62bc\u671f\u7684trx\uff0c\u4f1a\u540c\u65f6\u5931\u53bb\u8fd9\u90e8\u5206trx\u5e26\u6765\u7684\u5e26\u5bbd\u548c\u6295\u7968\u6743 curl -X POST http://127.0.0.1:8090/wallet/unfreezebalance -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"resource\": \"BANDWIDTH\", \"receiver_address\":\"414332f387585c2b58bc2c9bb4492bc1f17342cd1\" }' \u53c2\u6570\uff1a owner_address \u662f\u89e3\u9501trx\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f resource \u53ef\u4ee5\u662fBANDWIDTH\u6216\u8005ENERGY receiverAddress \u8868\u793a\u53d7\u59d4\u6258\u8d26\u6237\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u89e3\u9501trx\u7684transaction","title":"wallet/unfreezebalance"},{"location":"api/http/#walletgetdelegatedresource","text":"\u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u4ee3\u7406\u7ed9\u53e6\u5916\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresource -d ' { \"fromAddress\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"toAddress\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\" }' \u53c2\u6570\uff1a fromAddress \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f toAddress \uff1a\u4ee3\u7406\u5bf9\u8c61\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u7684\u5217\u8868\uff0c\u5217\u8868\u7684\u5143\u7d20\u4e3aDelegatedResource","title":"wallet/getdelegatedresource"},{"location":"api/http/#walletgetdelegatedresourceaccountindex","text":"\u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u7ed9\u54ea\u4e9b\u8d26\u6237\u4ee3\u7406\u4e86\u8d44\u6e90 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourceaccountindex -d ' { \"value\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", }' \u53c2\u6570\uff1a value \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u6982\u51b5\uff0c\u7ed3\u6784\u4e3aDelegatedResourceAccountIndex","title":"wallet/getdelegatedresourceaccountindex"},{"location":"api/http/#walletfreezebalancev2","text":"\u4f5c\u7528\uff1a\u8d28\u62bcTRX curl -X POST http://127.0.0.1:8090/wallet/freezebalancev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"frozen_balance\": 10000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u8d28\u62bcTRX \u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f frozen_balance : \u8d28\u62bcTRX \u7684\u6570\u91cf, \u5355\u4f4d\u4e3asun resource : \u8d28\u62bcTRX \u83b7\u53d6\u8d44\u6e90\u7684\u7c7b\u578b, \u53ef\u4ee5\u662f BANDWIDTH \u6216\u8005 ENERGY permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/freezebalancev2"},{"location":"api/http/#walletunfreezebalancev2","text":"\u4f5c\u7528\uff1a \u89e3\u9501\u901a\u8fc7Stake2.0\u673a\u5236\u8d28\u62bc\u7684TRX, \u91ca\u653e\u6240\u76f8\u5e94\u6570\u91cf\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\uff0c\u540c\u65f6\u56de\u6536\u76f8\u5e94\u6570\u91cf\u7684\u6295\u7968\u6743(TP) curl -X POST http://127.0.0.1:8090/wallet/unfreezebalancev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"unfreeze_balance\": 1000000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u89e3\u9501TRX \u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f resource : \u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY unfreeze_balance : \u89e3\u8d28\u62bc\u7684TRX\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/unfreezebalancev2"},{"location":"api/http/#walletcancelallunfreezev2","text":"\u4f5c\u7528\uff1a \u53d6\u6d88\u6240\u6709\u672a\u5b8c\u6210\u7684\u89e3\u8d28\u62bc\uff0c\u5c06\u8fc7\u671f\u7684\u89e3\u8d28\u62bc\u91d1\u989d\u63d0\u53d6\u5230\u8d26\u6237\u4f59\u989d\u4e2d\uff0c\u5c06\u672a\u8fc7\u671f\u7684\u89e3\u8d28\u62bc\u91d1\u989d\u91cd\u65b0\u8d28\u62bc curl -X POST http://127.0.0.1:8090/wallet/cancelallunfreezev2 -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\" }' \u53c2\u6570\uff1a owner_address : \u8d26\u6237\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/cancelallunfreezev2"},{"location":"api/http/#walletdelegateresource","text":"\u4f5c\u7528\uff1a \u5c06\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u8d44\u6e90\u4ee3\u7406\u7ed9\u5176\u5b83\u8d26\u6237 curl -X POST http://127.0.0.1:8090/wallet/delegateresource -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"receiver_address\": \"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"balance\": 1000000, \"resource\": \"BANDWIDTH\", \"lock\": false }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f receiver_address : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f balance : \u4ee3\u7406balance\u6570\u91cf\u7684TRX\u6240\u5bf9\u5e94\u7684\u8d44\u6e90\u7ed9\u76ee\u6807\u5730\u5740, \u5355\u4f4d\u4e3asun resource : \u4ee3\u7406\u7684\u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY lock : true\u8868\u793a\u4e3a\u8be5\u8d44\u6e90\u4ee3\u7406\u64cd\u4f5c\u8bbe\u7f6e\u4e09\u5929\u7684\u9501\u5b9a\u671f\uff0c\u5373\u8d44\u6e90\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u540e\u7684\u4e09\u5929\u5185\u4e0d\u53ef\u4ee5\u53d6\u6d88\u5bf9\u5176\u7684\u8d44\u6e90\u4ee3\u7406\uff0c\u5982\u679c\u9501\u5b9a\u671f\u5185\uff0c\u518d\u6b21\u4ee3\u7406\u8d44\u6e90\u7ed9\u540c\u4e00\u76ee\u6807\u5730\u5740\uff0c\u5219\u9501\u5b9a\u671f\u5c06\u91cd\u65b0\u8bbe\u7f6e\u4e3a3\u5929\u3002false\u8868\u793a\u672c\u6b21\u8d44\u6e90\u4ee3\u7406\u6ca1\u6709\u9501\u5b9a\u671f\uff0c\u53ef\u968f\u65f6\u53d6\u6d88\u5bf9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u4ee3\u7406 lock_period : \u9501\u5b9a\u5468\u671f\uff0c\u4ee5\u533a\u5757\u65f6\u95f4\uff083s\uff09\u4e3a\u5355\u4f4d\uff0c\u8868\u793a\u9501\u5b9a\u591a\u5c11\u4e2a\u533a\u5757\u7684\u65f6\u95f4\uff0c\u5f53lock\u4e3atrue\u65f6\uff0c\u8be5\u5b57\u6bb5\u6709\u6548\u3002\u5982\u679c\u4ee3\u7406\u9501\u5b9a\u671f\u4e3a1\u5929\uff0c\u5219lock_period\u4e3a\uff1a28800 permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/delegateresource"},{"location":"api/http/#walletundelegateresource","text":"\u4f5c\u7528\uff1a \u53d6\u6d88\u4e3a\u76ee\u6807\u5730\u5740\u4ee3\u7406\u7684\u5e26\u5bbd\u6216\u8005\u80fd\u91cf curl -X POST http://127.0.0.1:8090/wallet/undelegateresource -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"receiver_address\": \"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"balance\": 1000000, \"resource\": \"BANDWIDTH\" }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f receiver_address : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740, \u4e5f\u5c31\u662f\u53d6\u6d88\u4e3a\u8be5\u5730\u5740\u7684\u8d44\u6e90\u4ee3\u7406\u3002 HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f balance : \u53d6\u6d88\u4ee3\u7406 balance\u6570\u91cf\u7684TRX\u6240\u5bf9\u5e94\u7684\u8d44\u6e90, \u5355\u4f4d\u4e3asun resource : \u53d6\u6d88\u4ee3\u7406\u7684\u8d44\u6e90\u7c7b\u578b, BANDWIDTH \u6216\u8005 ENERGY permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/undelegateresource"},{"location":"api/http/#walletwithdrawexpireunfreeze","text":"\u4f5c\u7528\uff1a\u63d0\u53d6\u5df2\u8fc7\u9501\u5b9a\u671f\u7684\u89e3\u8d28\u62bc\u7684\u672c\u91d1 curl -X POST http://127.0.0.1:8090/wallet/withdrawexpireunfreeze -d '{ \"owner_address\": \"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740, HEX \u683c\u5f0f\u6216 Base58check \u683c\u5f0f permission_id : \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528 \u8fd4\u56de\u503c\uff1a\u672a\u7b7e\u540d\u7684\u4ea4\u6613\u5bf9\u8c61","title":"wallet/withdrawexpireunfreeze"},{"location":"api/http/#walletgetavailableunfreezecount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5f53\u524d\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570 curl -X POST http://127.0.0.1:8090/wallet/getavailableunfreezecount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u7684\u5269\u4f59\u6b21\u6570","title":"wallet/getavailableunfreezecount"},{"location":"api/http/#walletgetcanwithdrawunfreezeamount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf curl -X POST http://127.0.0.1:8090/wallet/getcanwithdrawunfreezeamount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"timestamp\": 1667977444000, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 timestamp : \u67e5\u8be2\u5728\u8be5\u65f6\u95f4\u6233\u65f6\uff0c\u53ef\u63d0\u53d6\u7684\u672c\u91d1\u6570\u91cf\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u672c\u91d1\u53ef\u63d0\u53d6\u6570\u91cf","title":"wallet/getcanwithdrawunfreezeamount"},{"location":"api/http/#walletgetcandelegatedmaxsize","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u76ee\u6807\u5730\u5740\u4e2d\u6307\u5b9a\u7c7b\u578b\u8d44\u6e90\u7684\u53ef\u4ee3\u7406\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun curl -X POST http://127.0.0.1:8090/wallet/getcandelegatedmaxsize -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"type\": 0, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 type : \u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf \u8fd4\u56de\u503c\uff1a\u53ef\u4ee3\u7406\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u4efd\u989d\u7684\u6700\u5927\u503c\uff08\u5355\u4f4d\u4e3asun\uff09","title":"wallet/getcandelegatedmaxsize"},{"location":"api/http/#walletgetdelegatedresourcev2","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u673a\u5236\u4e0b\uff0c\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourcev2 -d '{ \"fromAddress\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"toAddress\": \"TPswDDCAWhJAZGdHPidFg5nEf8TkNToDX1\", \"visible\": true } ' \u53c2\u6570\uff1a fromAddress : \u4ee3\u7406\u8d26\u6237\u5730\u5740 toAddress : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u7684\u5217\u8868","title":"wallet/getdelegatedresourcev2"},{"location":"api/http/#walletgetdelegatedresourceaccountindexv2","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u9636\u6bb5\uff0c\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) curl -X POST http://127.0.0.1:8090/wallet/getdelegatedresourceaccountindexv2 -d '{ \"value\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a value : \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress)","title":"wallet/getdelegatedresourceaccountindexv2"},{"location":"api/http/#_4","text":"\u4e0b\u9762\u662f\u67e5\u8be2\u94fe\u4e0a\u6570\u636e\u76f8\u5173API\uff1a wallet/getnowblock wallet/getblock wallet/getblockbynum wallet/getblockbyid wallet/getblockbylatestnum wallet/getblockbylimitnext wallet/getblockbalance wallet/gettransactionbyid wallet/gettransactioninfobyid wallet/gettransactioncountbyblocknum wallet/gettransactioninfobyblocknum wallet/listnodes wallet/getnodeinfo wallet/getchainparameters wallet/getenergyprices wallet/getbandwidthprices wallet/getburntrx","title":"\u67e5\u8be2\u94fe\u4e0a\u6570\u636e"},{"location":"api/http/#walletgetnowblock","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u5757\u3002 curl -X POST http://127.0.0.1:8090/wallet/getnowblock \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u5f53\u524d\u5757\u3002","title":"wallet/getnowblock"},{"location":"api/http/#walletgetblock","text":"\u4f5c\u7528\uff1a\u6839\u636e\u533a\u5757\u9ad8\u5ea6\u6216\u8005\u533a\u5757\u54c8\u5e0c\u67e5\u8be2\u533a\u5757\u5934\u4fe1\u606f\u6216\u8005\u6574\u4e2a\u533a\u5757\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getblock -d '{\"detail\":false}' \u53c2\u6570: id_or_num : \u533a\u5757\u9ad8\u5ea6\u6216\u8005\u533a\u5757\u54c8\u5e0c\uff0c\u4e0d\u8bbe\u7f6e\u8868\u793a\u67e5\u8be2\u6700\u65b0\u533a\u5757 detail : \u9ed8\u8ba4\u4e3afalse\uff0c\u8868\u793a\u53ea\u67e5\u8be2\u533a\u5757\u5934\u4fe1\u606f\uff0ctrue\u8868\u793a\u67e5\u8be2\u6574\u4e2a\u533a\u5757 \u8fd4\u56de\u503c\uff1a\u533a\u5757\u6216\u8005\u533a\u5757\u5934\u3002","title":"wallet/getblock"},{"location":"api/http/#walletgetblockbynum","text":"\u4f5c\u7528\uff1a\u901a\u8fc7\u9ad8\u5ea6\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbynum -d '{\"num\": 1}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u9ad8\u5ea6\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002","title":"wallet/getblockbynum"},{"location":"api/http/#walletgetblockbyid","text":"\u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbyid -d '{\"value\": \"0000000000038809c59ee8409a3b6c051e369ef1096603c7ee723c16e2376c73\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757ID\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002","title":"wallet/getblockbyid"},{"location":"api/http/#walletgetblockbylatestnum","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u7684\u51e0\u4e2a\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbylatestnum -d '{\"num\": 5}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u7684\u6570\u91cf\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002","title":"wallet/getblockbylatestnum"},{"location":"api/http/#walletgetblockbylimitnext","text":"\u4f5c\u7528\uff1a\u6309\u7167\u8303\u56f4\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8090/wallet/getblockbylimitnext -d '{\"startNum\": 1, \"endNum\": 2}' \u53c2\u6570\u8bf4\u660e\uff1a startNum \uff1a\u8d77\u59cb\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u6b64\u5757 endNum \uff1a\u622a\u6b62\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u6b64\u6b64\u5757 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002","title":"wallet/getblockbylimitnext"},{"location":"api/http/#walletgetblockbalance","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u4e00\u4e2a\u533a\u5757\u4e2d\u6240\u6709\u7684\u4f59\u989d\u53d8\u5316\u64cd\u4f5c curl -X POST http://127.0.0.1:8090/wallet/getblockbalance -d '{ \"hash\": \"000000000000dc2a3731e28a75b49ac1379bcc425afc95f6ab3916689fbb0189\", \"number\": 56362, \"visible\": true }' \u53c2\u6570\u8bf4\u660e\uff1a\u533a\u5757hash\u548cnumber\u5fc5\u987b\u4e00\u81f4\u3002 \u8fd4\u56de\u503c\uff1a { \"block_identifier\": { \"hash\": \"000000000000dc2a3731e28a75b49ac1379bcc425afc95f6ab3916689fbb0189\", \"number\": 56362 }, \"timestamp\": 1530060672000, \"transaction_balance_trace\": [ { \"transaction_identifier\": \"e6cabb1833cd1f795eed39d8dd7689eaa70e5bb217611766c74c7aa9feea80df\", \"operation\": [ { \"operation_identifier\": 0, \"address\": \"TPttBLmFuykRi83y9HxDoEWxTQw6CCcQ4p\", \"amount\": -100000 }, { \"operation_identifier\": 1, \"address\": \"TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy\", \"amount\": 100000 }, { \"operation_identifier\": 2, \"address\": \"TPttBLmFuykRi83y9HxDoEWxTQw6CCcQ4p\", \"amount\": -10000000 }, { \"operation_identifier\": 3, \"address\": \"TMrysg7DbwR1M8xqhpaPdVCHCuWFhw7uk1\", \"amount\": 10000000 } ], \"type\": \"TransferContract\", \"status\": \"SUCCESS\" } ] }","title":"wallet/getblockbalance"},{"location":"api/http/#walletgettransactionbyid","text":"\u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u4ea4\u6613 curl -X POST http://127.0.0.1:8090/wallet/gettransactionbyid -d '{\"value\": \"d5ec749ecc2a615399d8a6c864ea4c74ff9f523c2be0e341ac9be5d47d7c2d62\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u4ea4\u6613ID\u3002 \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u4fe1\u606f\u3002","title":"wallet/gettransactionbyid"},{"location":"api/http/#walletgettransactioninfobyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u7684fee\uff0c\u6240\u5728\u7684block curl -X POST http://127.0.0.1:8090/wallet/gettransactioninfobyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1aTransaction\u7684\u4ea4\u6613fee\uff0c\u6240\u5728block\u7684\u9ad8\u5ea6\uff0c\u521b\u5efa\u65f6\u95f4","title":"wallet/gettransactioninfobyid"},{"location":"api/http/#walletgettransactioncountbyblocknum","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8090/wallet/gettransactioncountbyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6. \u8fd4\u56de\u503c\uff1atransaction\u7684\u4e2a\u6570.","title":"wallet/gettransactioncountbyblocknum"},{"location":"api/http/#walletgettransactioninfobyblocknum","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u7279\u5b9a\u533a\u5757\u7684\u6240\u6709\u4ea4\u6613 Info \u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/gettransactioninfobyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6. \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u5757\u4e2d\uff0c\u5305\u542b\u7684transactioninfo\u7684\u5217\u8868.","title":"wallet/gettransactioninfobyblocknum"},{"location":"api/http/#walletlistnodes","text":"\u4f5c\u7528\uff1a\u67e5\u8be2api\u6240\u5728\u673a\u5668\u8fde\u63a5\u7684\u8282\u70b9\u3002 curl -X POST http://127.0.0.1:8090/wallet/listnodes \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u8282\u70b9\u5217\u8868\u3002","title":"wallet/listnodes"},{"location":"api/http/#walletgetnodeinfo","text":"\u4f5c\u7528\uff1a\u67e5\u770b\u8282\u70b9\u7684\u4fe1\u606f curl http://127.0.0.1:8090/wallet/getnodeinfo \u8fd4\u56de\u503c\uff1a\u8282\u70b9\u5f53\u524d\u72b6\u6001\u7684\u76f8\u5173\u4fe1\u606f","title":"wallet/getnodeinfo"},{"location":"api/http/#walletgetchainparameters","text":"\u4f5c\u7528\uff1a\u67e5\u8be2TRON\u7f51\u7edc\u52a8\u6001\u53c2\u6570 curl -X POST http://127.0.0.1:8090/wallet/getchainparameters \u8fd4\u56de\u503c\uff1a\u533a\u5757\u94fe\u59d4\u5458\u4f1a\u53ef\u4ee5\u8bbe\u7f6e\u7684\u6240\u6709\u53c2\u6570","title":"wallet/getchainparameters"},{"location":"api/http/#walletgetenergyprices","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u80fd\u91cf\u5355\u4ef7\u5386\u53f2 curl -X POST http://127.0.0.1:8090/wallet/getenergyprices \u8fd4\u56de\u503c\uff1a\u6240\u6709\u5386\u53f2\u80fd\u91cf\u5355\u4ef7\u4fe1\u606f\u3002\u6bcf\u6b21\u5355\u4ef7\u53d8\u52a8\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u5192\u53f7\u524d\u4e3a\u6beb\u79d2\u65f6\u95f4\u6233\uff0c\u5192\u53f7\u540e\u4e3a\u4ee5sun\u4e3a\u5355\u4f4d\u7684\u80fd\u91cf\u5355\u4ef7\u3002","title":"wallet/getenergyprices"},{"location":"api/http/#walletgetbandwidthprices","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5e26\u5bbd\u5355\u4ef7\u5386\u53f2 curl -X POST http://127.0.0.1:8090/wallet/getbandwidthprices \u8fd4\u56de\u503c\uff1a\u6240\u6709\u5386\u53f2\u5e26\u5bbd\u5355\u4ef7\u4fe1\u606f\u3002\u6bcf\u6b21\u5355\u4ef7\u53d8\u52a8\u4ee5\u9017\u53f7\u5206\u9694\uff0c\u5192\u53f7\u524d\u4e3a\u6beb\u79d2\u65f6\u95f4\u6233\uff0c\u5192\u53f7\u540e\u4e3a\u4ee5sun\u4e3a\u5355\u4f4d\u7684\u5e26\u5bbd\u5355\u4ef7\u3002","title":"wallet/getbandwidthprices"},{"location":"api/http/#walletgetburntrx","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u71c3\u70e7\u7684TRX\u6570\u91cf curl -X POST http://127.0.0.1:8090/wallet/getburntrx \u8fd4\u56de\u503c\uff1a\u71c3\u70e7\u7684TRX\u6570\u91cf\uff0c\u4ee5sun\u4e3a\u5355\u4f4d\u3002","title":"wallet/getburntrx"},{"location":"api/http/#_5","text":"\u4e0b\u9762\u662f\u667a\u80fd\u5408\u7ea6\u76f8\u5173API\uff1a wallet/getcontract wallet/getcontractinfo wallet/deploycontract wallet/triggersmartcontract wallet/triggerconstantcontract wallet/updatesetting wallet/updateenergylimit wallet/clearabi wallet/estimateenergy","title":"\u667a\u80fd\u5408\u7ea6"},{"location":"api/http/#walletgetcontract","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/getcontract -d '{\"value\":\"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1a\u5408\u7ea6\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aSmartContract\uff0c\u667a\u80fd\u5408\u7ea6\u7684\u5185\u5bb9","title":"wallet/getcontract"},{"location":"api/http/#walletgetcontractinfo","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/getcontractinfo -d '{\"value\":\"4189139CB1387AF85E3D24E212A008AC974967E561\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1a\u5408\u7ea6\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u67e5\u8be2\u94fe\u4e0a\u7684\u5408\u7ea6\u4fe1\u606f\u3002\u4e0ewallet/getcontract\u63a5\u53e3\u4e0d\u540c\u7684\u662f\uff0c\u8be5\u63a5\u53e3\u4e0d\u4ec5\u8fd4\u56debytecode\u8fd8\u4f1a\u8fd4\u56de\u5408\u7ea6\u7684runtime bytecode\u3002runtime bytecode\u76f8\u6bd4bytecode\uff0c\u4e0d\u5305\u542b\u6784\u9020\u51fd\u6570\u4ee5\u53ca\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u4fe1\u606f\u3002","title":"wallet/getcontractinfo"},{"location":"api/http/#walletdeploycontract","text":"\u4f5c\u7528\uff1a\u90e8\u7f72\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/deploycontract -d '{\"abi\":\"[{\\\"constant\\\":false,\\\"inputs\\\":[{\\\"name\\\":\\\"key\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"name\\\":\\\"value\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"set\\\",\\\"outputs\\\":[],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"constant\\\":true,\\\"inputs\\\":[{\\\"name\\\":\\\"key\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"get\\\",\\\"outputs\\\":[{\\\"name\\\":\\\"value\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"payable\\\":false,\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}]\",\"bytecode\":\"608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029\",\"parameter\":\"\",\"call_value\":100,\"name\":\"SomeContract\",\"consume_user_resource_percent\":30,\"fee_limit\":10,\"origin_energy_limit\": 10,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a abi \uff1aabi bytecode \uff1abytecode\uff0c\u9700\u8981\u662fhexString\u683c\u5f0f parameter \uff1a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u5217\u8868\uff0c\u9700\u8981\u6309\u7167ABI encoder\u7f16\u7801\u540e\u8f6c\u8bdd\u4e3ahexString\u683c\u5f0f\u3002\u5982\u679c\u6784\u9020\u51fd\u6570\u6ca1\u6709\u53c2\u6570\uff0c\u8be5\u53c2\u6570\u53ef\u4ee5\u4e0d\u7528\u8bbe\u7f6e\u3002 consume_user_resource_percent \uff1a\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4\uff0c\u662f[0, 100]\u4e4b\u95f4\u7684\u6574\u6570\u3002\u5982\u679c\u662f0\uff0c\u5219\u8868\u793a\u7528\u6237\u4e0d\u4f1a\u6d88\u8017\u8d44\u6e90\u3002\u5982\u679c\u5f00\u53d1\u8005\u8d44\u6e90\u6d88\u8017\u5b8c\u4e86\uff0c\u624d\u4f1a\u5b8c\u5168\u4f7f\u7528\u7528\u6237\u7684\u8d44\u6e90\u3002 fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77deploycontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f name \uff1a\u5408\u7ea6\u540d origin_energy_limit : \u521b\u5efa\u8005\u8bbe\u7f6e\u7684\uff0c\u5728\u4e00\u6b21\u5408\u7ea6\u6267\u884c\u6216\u521b\u5efa\u8fc7\u7a0b\u4e2d\u521b\u5efa\u8005\u81ea\u5df1\u6d88\u8017\u7684\u6700\u5927\u7684energy\uff0c\u662f\u5927\u4e8e0\u7684\u6574\u6570 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction","title":"wallet/deploycontract"},{"location":"api/http/#wallettriggersmartcontract","text":"\u4f5c\u7528\uff1a\u8c03\u7528\u5408\u7ea6 curl -X POST http://127.0.0.1:8090/wallet/triggersmartcontract -d '{\"contract_address\":\"4189139CB1387AF85E3D24E212A008AC974967E561\",\"function_selector\":\"set(uint256,uint256)\",\"parameter\":\"00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002\",\"fee_limit\":10,\"call_value\":100,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f7f\u7528function_selector\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92 fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction","title":"wallet/triggersmartcontract"},{"location":"api/http/#wallettriggerconstantcontract","text":"\u4f5c\u7528\uff1a\u8c03\u7528\u5e38\u91cf\u5408\u7ea6\uff0c\u4ea7\u751f\u7684\u4ea4\u6613\u4e0d\u4e0a\u94fe curl -X POST http://127.0.0.1:8090/wallet/triggerconstantcontract -d '{\"contract_address\":\"4189139CB1387AF85E3D24E212A008AC974967E561\",\"function_selector\":\"set(uint256,uint256)\",\"parameter\":\"00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002\",\"call_value\":100,\"owner_address\":\"41D1E7A6BC354106CB410E65FF8B181C600FF14292\"}' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u5408\u7ea6\u5b57\u8282\u7801\u6216\u8005\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f18\u5148\u4f7f\u7528function_selector owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction","title":"wallet/triggerconstantcontract"},{"location":"api/http/#walletupdatesetting","text":"\u4f5c\u7528\uff1a\u66f4\u65b0\u5408\u7ea6\u7684consume_user_resource_percent curl -X POST http://127.0.0.1:8090/wallet/updatesetting -d '{\"owner_address\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"contract_address\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\", \"consume_user_resource_percent\": 7}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u8981\u4fee\u6539\u7684\u5408\u7ea6\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f consume_user_resource_percent \uff1a\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4 Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction","title":"wallet/updatesetting"},{"location":"api/http/#walletupdateenergylimit","text":"\u4f5c\u7528\uff1a\u66f4\u65b0\u5408\u7ea6\u7684origin_energy_limit curl -X POST http://127.0.0.1:8090/wallet/updateenergylimit -d '{\"owner_address\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"contract_address\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\", \"origin_energy_limit\": 7}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u8981\u4fee\u6539\u7684\u5408\u7ea6\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f origin_energy_limit \uff1a\u521b\u5efa\u8005\u8bbe\u7f6e\u7684\uff0c\u5728\u4e00\u6b21\u5408\u7ea6\u6267\u884c\u6216\u521b\u5efa\u8fc7\u7a0b\u4e2d\u521b\u5efa\u8005\u81ea\u5df1\u6d88\u8017\u7684\u6700\u5927\u7684energy Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1aTransactionExtention, TransactionExtention\u4e2d\u5305\u542b\u672a\u7b7e\u540d\u7684\u4ea4\u6613Transaction","title":"wallet/updateenergylimit"},{"location":"api/http/#walletclearabi","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u6e05\u9664\u667a\u80fd\u5408\u7ea6ABI\u7684\u4ea4\u6613\u5bf9\u8c61 curl -X POST http://127.0.0.1:8090/wallet/clearabi -d '{ \"owner_address\":\"41a7d8a35b260395c14aa456297662092ba3b76fc0\", \"contract_address\":\"417bcb781f4743afaacf9f9528f3ea903b3782339f\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u521b\u5efa\u5408\u7ea6\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f contract_address \uff1a\u5408\u7ea6\u5730\u5740,\u9ed8\u8ba4\u4e3ahexString \u8fd4\u56de\u503c:\u4ea4\u6613\u5bf9\u8c61","title":"wallet/clearabi"},{"location":"api/http/#walletestimateenergy","text":"\u4f5c\u7528\uff1a\u9884\u4f30\u667a\u80fd\u5408\u7ea6\u4ea4\u6613\u6267\u884c\u6210\u529f\u9700\u8981\u63d0\u4f9b\u7684\u80fd\u91cf curl -X POST http://127.0.0.1:8090/wallet/estimateenergy -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"contract_address\": \"TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs\", \"function_selector\": \"transfer(address,uint256)\", \"parameter\": \"00000000000000000000004115208EF33A926919ED270E2FA61367B2DA3753DA0000000000000000000000000000000000000000000000000000000000000032\", \"visible\": true }' \u53c2\u6570\u8bf4\u660e\uff1a contract_address \uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f function_selector \uff0c\u51fd\u6570\u7b7e\u540d\uff0c\u4e0d\u80fd\u6709\u7a7a\u683c parameter \uff1a\u8c03\u7528\u53c2\u6570[1,2]\u7684\u865a\u62df\u673a\u683c\u5f0f\uff0c\u4f7f\u7528remix\u63d0\u4f9b\u7684js\u5de5\u5177\uff0c\u5c06\u5408\u7ea6\u8c03\u7528\u8005\u8c03\u7528\u7684\u53c2\u6570\u6570\u7ec4[1,2]\u8f6c\u5316\u4e3a\u865a\u62df\u673a\u6240\u9700\u8981\u7684\u53c2\u6570\u683c\u5f0f data \uff1a\u5408\u7ea6\u5b57\u8282\u7801\u6216\u8005\u4e0e\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u4ea4\u4e92\u7684\u6570\u636e\uff0c\u5305\u62ec\u6240\u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u548c\u53c2\u6570\u3002\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7\u8be5\u5b57\u6bb5\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u901a\u8fc7function_selector\u548cparameter\u8fdb\u884c\u5408\u7ea6\u4ea4\u4e92\uff0c\u5f53data\u4e0efunction_selector\u540c\u65f6\u5b58\u5728\u65f6\uff0c\u4f18\u5148\u4f7f\u7528function_selector fee_limit \uff1a\u6700\u5927\u6d88\u8017\u7684SUN\uff081TRX = 1,000,000SUN\uff09 owner_address \uff1a\u53d1\u8d77triggercontract\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f call_value \uff1a\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u8f6c\u8d26\u7684SUN\uff081TRX = 1,000,000SUN\uff09 call_token_value :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684\u6570\u91cf\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etoken_id\uff0c\u8fd9\u9879\u8bbe\u7f6e\u4e3a0\u6216\u8005\u4e0d\u8bbe\u7f6e token_id :\u672c\u6b21\u8c03\u7528\u5f80\u5408\u7ea6\u4e2d\u8f6c\u8d2610\u5e01\u7684id\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u4e0d\u9700\u8981\u8bbe\u7f6e \u8fd4\u56de\u503c\uff1a\u80fd\u91cf\u9884\u4f30\u503c","title":"wallet/estimateenergy"},{"location":"api/http/#trc10","text":"\u4e0b\u9762\u662fTRC10\u4ee3\u5e01\u76f8\u5173API\uff1a wallet/getassetissuebyaccount wallet/getassetissuebyname wallet/getassetissuelistbyname wallet/getassetissuebyid wallet/getassetissuelist wallet/getpaginatedassetissuelist wallet/transferasset wallet/participateassetissue wallet/createassetissue wallet/unfreezeasset wallet/updateasset","title":"TRC10\u901a\u8bc1"},{"location":"api/http/#walletgetassetissuebyaccount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u53d1\u884c\u7684token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyaccount -d '{\"address\": \"41F9395ED64A6E1D4ED37CD17C75A1D247223CAF2D\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u53d1\u884c\u8005\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u7528\u6237\u53d1\u884c\u7684token\uff08\u4e00\u4e2a\u7528\u6237\u53ea\u80fd\u53d1\u884c\u4e00\u4e2atoken\uff09\u3002","title":"wallet/getassetissuebyaccount"},{"location":"api/http/#walletgetassetissuebyname","text":"\u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1atoken\u3002 \u6ce8\u610f\uff1aOdyssey-v3.2\u5f00\u59cb\uff0c\u63a8\u8350\u4f7f\u7528getassetissuebyid\u6216\u8005getassetissuelistbyname\u66ff\u6362\u6b64\u63a5\u53e3\uff0c\u56e0\u4e3a\u4ece3.2\u5f00\u59cb\u5c06\u5141\u8bb8\u901a\u8bc1\u540d\u79f0\u76f8\u540c\u3002\u5982\u679c\u5b58\u5728\u76f8\u540c\u7684\u901a\u8bc1\u540d\u79f0\uff0c\u6b64\u63a5\u53e3\u5c06\u4f1a\u62a5\u9519\u3002","title":"wallet/getassetissuebyname"},{"location":"api/http/#walletgetassetissuelistbyname","text":"\u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token list\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuelistbyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002","title":"wallet/getassetissuelistbyname"},{"location":"api/http/#walletgetassetissuebyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8090/wallet/getassetissuebyid -d '{\"value\": \"1000001\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1id \u8fd4\u56de\u503c\uff1atoken\u3002","title":"wallet/getassetissuebyid"},{"location":"api/http/#walletgetassetissuelist","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709token\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getassetissuelist \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002","title":"wallet/getassetissuelist"},{"location":"api/http/#walletgetpaginatedassetissuelist","text":"\u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2token\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedassetissuelist -d '{\"offset\": 0, \"limit\": 10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002","title":"wallet/getpaginatedassetissuelist"},{"location":"api/http/#wallettransferasset","text":"\u4f5c\u7528\uff1a\u8f6c\u8d26Token curl -X POST http://127.0.0.1:8090/wallet/transferasset -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"to_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"asset_name\": \"0x6173736574497373756531353330383934333132313538\", \"amount\": 100}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662ftoken\u8f6c\u51fa\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f to_address \u662ftoken\u8f6c\u5165\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f asset_name \u662ftoken\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f amount \u662ftoken\u8f6c\u8d26\u6570\u91cf Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1atoken\u8f6c\u8d26\u7684Transaction \u3010\u6ce8\u610f\u3011 - \u5f53\u524d\u7684asset_name\u4e3atoken\u540d\u79f0\u3002\u5f53\u59d4\u5458\u4f1a\u901a\u8fc7AllowSameTokenName\u63d0\u8bae\u540easset_name\u6539\u4e3atoken ID\u7684String\u7c7b\u578b\u3002","title":"wallet/transferasset"},{"location":"api/http/#walletparticipateassetissue","text":"\u4f5c\u7528\uff1a\u53c2\u4e0etoken\u53d1\u884c curl -X POST http://127.0.0.1:8090/wallet/participateassetissue -d '{ \"to_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"amount\":100, \"asset_name\":\"3230313271756265696a696e67\" }' \u53c2\u6570\u8bf4\u660e\uff1a to_address \u662fToken\u53d1\u884c\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f owner_address \u662f\u53c2\u4e0etoken\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f amount \u662f\u53c2\u4e0etoken\u7684\u6570\u91cf asset_name \u662ftoken\u7684\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u53c2\u4e0etoken\u53d1\u884c\u7684transaction \u3010\u6ce8\u610f\u3011 - \u5f53\u524d\u7684asset_name\u4e3atoken\u540d\u79f0\u3002\u5f53\u59d4\u5458\u4f1a\u901a\u8fc7AllowSameTokenName\u63d0\u8bae\u540easset_name\u6539\u4e3atoken ID\u7684String\u7c7b\u578b\u3002","title":"wallet/participateassetissue"},{"location":"api/http/#walletcreateassetissue","text":"\u4f5c\u7528\uff1a\u53d1\u884cToken curl -X POST http://127.0.0.1:8090/wallet/createassetissue -d '{ \"owner_address\":\"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"name\":\"0x6173736574497373756531353330383934333132313538\", \"abbr\": \"0x6162627231353330383934333132313538\", \"total_supply\" :4321, \"trx_num\":1, \"num\":1, \"start_time\" : 1530894315158, \"end_time\":1533894312158, \"description\":\"007570646174654e616d6531353330363038383733343633\", \"url\":\"007570646174654e616d6531353330363038383733343633\", \"free_asset_net_limit\":10000, \"public_free_asset_net_limit\":10000, \"frozen_supply\":{\"frozen_amount\":1, \"frozen_days\":2} }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u53d1\u884c\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f name \u662ftoken\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f abbr \u662ftoken\u7b80\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f total_supply \u662f\u53d1\u884c\u603b\u91cf trx_num \u548c num \u662ftoken\u548ctrx\u7684\u6700\u5c0f\u5355\u4f4d\u5151\u6362\u6bd4 start_time \u548c end_time \u662ftoken\u53d1\u884c\u8d77\u6b62\u65f6\u95f4 description \u662ftoken\u8bf4\u660e\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662ftoken\u53d1\u884c\u65b9\u7684\u5b98\u7f51\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f free_asset_net_limit \u662fToken\u7684\u603b\u7684\u514d\u8d39\u5e26\u5bbd public_free_asset_net_limit \u662f\u6bcf\u4e2atoken\u62e5\u62a4\u8005\u80fd\u4f7f\u7528\u672ctoken\u7684\u514d\u8d39\u5e26\u5bbd frozen_supply \u662ftoken\u53d1\u884c\u8005\u53ef\u4ee5\u5728\u53d1\u884c\u7684\u65f6\u5019\u6307\u5b9a\u8d28\u62bc\u7684token Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u53d1\u884cToken\u7684Transaction","title":"wallet/createassetissue"},{"location":"api/http/#walletunfreezeasset","text":"\u4f5c\u7528\uff1a\u89e3\u9501\u5df2\u7ecf\u7ed3\u675f\u8d28\u62bc\u671f\u7684Token curl -X POST http://127.0.0.1:8090/wallet/unfreezeasset -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u89e3\u9501token\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u89e3\u9501token\u7684transaction","title":"wallet/unfreezeasset"},{"location":"api/http/#walletupdateasset","text":"\u4f5c\u7528\uff1a\u4fee\u6539token\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/updateasset -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", \"description\": \"\"\uff0c \"url\": \"\", \"new_limit\" : 1000000, \"new_public_limit\" : 100 }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662ftoken\u53d1\u884c\u4eba\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f description \u662ftoken\u7684\u63cf\u8ff0\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662ftoken\u53d1\u884c\u4eba\u7684\u5b98\u7f51\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f new_limit \u662ftoken\u6bcf\u4e2a\u6301\u6709\u4eba\u80fd\u591f\u4f7f\u7528\u7684\u514d\u8d39\u5e26\u5bbd new_public_limit \u662f\u8be5token\u5168\u90e8\u7684\u514d\u8d39\u5e26\u5bbd Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u4fee\u6539Token\u4fe1\u606f\u7684transaction","title":"wallet/updateasset"},{"location":"api/http/#sr","text":"\u4e0b\u9762\u662f\u6295\u7968\u548cSR\u76f8\u5173API\uff1a wallet/createwitness wallet/updatewitness wallet/listwitnesses wallet/withdrawbalance wallet/votewitnessaccount wallet/getBrokerage wallet/updateBrokerage wallet/getReward wallet/getnextmaintenancetime","title":"\u6295\u7968\u548cSR"},{"location":"api/http/#walletcreatewitness","text":"\u4f5c\u7528\uff1a\u7533\u8bf7\u6210\u4e3a\u8d85\u7ea7\u4ee3\u8868 curl -X POST http://127.0.0.1:8090/wallet/createwitness -d '{\"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"url\": \"007570646174654e616d6531353330363038383733343633\"}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u7533\u8bf7\u6210\u4e3a\u8d85\u7ea7\u4ee3\u8868\u7684\u8d26\u53f7\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f url \u662f\u5b98\u7f51\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u7533\u8bf7\u8d85\u7ea7\u4ee3\u8868\u7684Transaction","title":"wallet/createwitness"},{"location":"api/http/#walletupdatewitness","text":"\u4f5c\u7528\uff1a\u4fee\u6539witness\u7684url curl -X POST http://127.0.0.1:8090/wallet/updatewitness -d '{ \"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"update_url\": \"007570646174654e616d6531353330363038383733343633\" }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u521b\u5efa\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f update_url \u662f\u66f4\u65b0\u7684\u5b98\u7f51\u7684url\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u66f4\u65b0witness\u7684Transaction","title":"wallet/updatewitness"},{"location":"api/http/#walletlistwitnesses","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709witness\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/listwitnesses \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1awitness\u5217\u8868\u3002","title":"wallet/listwitnesses"},{"location":"api/http/#walletwithdrawbalance","text":"\u4f5c\u7528\uff1a\u8d85\u7ea7\u4ee3\u8868\u63d0\u73b0\u5956\u52b1\u5230balance\uff0c\u6bcf24\u4e2a\u5c0f\u65f6\u53ef\u4ee5\u63d0\u73b0\u4e00\u6b21 curl -X POST http://127.0.0.1:8090/wallet/withdrawbalance -d '{ \"owner_address\":\"41e472f387585c2b58bc2c9bb4492bc1f17342cd1\", }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u63d0\u73b0\u8d26\u53f7\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f Permission_id \u53ef\u9009\u53c2\u6570\uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u63d0\u73b0Trx\u7684transaction","title":"wallet/withdrawbalance"},{"location":"api/http/#walletvotewitnessaccount","text":"\u4f5c\u7528\uff1a\u5bf9\u8d85\u7ea7\u4ee3\u8868\u8fdb\u884c\u6295\u7968 curl -X POST http://127.0.0.1:8090/wallet/votewitnessaccount -d '{ \"owner_address\":\"41d1e7a6bc354106cb410e65ff8b181c600ff14292\", \"votes\": [{\"vote_address\": \"41e552f6487585c2b58bc2c9bb4492bc1f17132cd0\", \"vote_count\": 5}] }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u6295\u7968\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f votes.vote_address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f vote_count \u662f\u6295\u7968\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6295\u7968\u7684Transaction","title":"wallet/votewitnessaccount"},{"location":"api/http/#walletgetbrokerage","text":"\u4f5c\u7528\uff1a\u67e5\u8be2witness\u5f53\u524dBrokerage\u6bd4\u4f8b curl -X GET http://127.0.0.1:8090/wallet/getBrokerage -d '{ \"address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1a address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1awitness\u5f53\u524dBrokerage\u6bd4\u4f8b","title":"wallet/getBrokerage"},{"location":"api/http/#walletupdatebrokerage","text":"\u4f5c\u7528\uff1a\u66f4\u65b0witness\u5f53\u524dBrokerage\u6bd4\u4f8b curl -X POST http://47.252.81.126:8090/wallet/updateBrokerage -d '{ \"owner_address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\", \"brokerage\":30}' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \u662f\u88ab\u6295\u7968\u7684\u8d85\u7ea7\u4ee3\u8868\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f brokerage \u662fwitness\u60f3\u8981\u66f4\u65b0\u4e3a\u7684Brokerage\u6bd4\u4f8b \u8fd4\u56de\u503c\uff1a\u66f4\u65b0Brokerage\u7684Transaction","title":"wallet/updateBrokerage"},{"location":"api/http/#walletgetreward","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6295\u7968\u4eba\u672a\u9886\u53d6\u7684\u5956\u52b1 curl -X GET http://127.0.0.1:8090/wallet/getReward -d '{ \"address\":\"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1aaddress\u662f\u6295\u7968\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u6295\u7968\u4eba\u672a\u9886\u53d6\u7684\u5956\u52b1","title":"wallet/getReward"},{"location":"api/http/#walletgetnextmaintenancetime","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u4e0b\u6b21\u7edf\u8ba1\u6295\u7968\u7684\u65f6\u95f4 curl -X POST http://127.0.0.1:8090/wallet/getnextmaintenancetime \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u4e0b\u6b21\u7edf\u8ba1\u6295\u7968\u65f6\u95f4\u7684\u6beb\u79d2\u6570\u3002","title":"wallet/getnextmaintenancetime"},{"location":"api/http/#_6","text":"\u4e0b\u9762\u662f\u63d0\u6848\u76f8\u5173API\uff1a wallet/proposalcreate wallet/getproposalbyid wallet/listproposals wallet/proposalapprove wallet/proposaldelete wallet/getpaginatedproposallist","title":"\u63d0\u6848"},{"location":"api/http/#walletproposalcreate","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/proposalcreate -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\",\"parameters\":[{\"key\": 0,\"value\": 100000},{\"key\": 1,\"value\": 2}] } \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u521b\u5efa\u4eba\u5730\u5740 parameters \uff1a\u63d0\u6848\u53c2\u6570 \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u521b\u5efa\u63d0\u6848\u7684\u4ea4\u6613","title":"wallet/proposalcreate"},{"location":"api/http/#walletgetproposalbyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/getproposalbyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1aid\uff1a\u63d0\u6848id \u8fd4\u56de\u503c\uff1a\u63d0\u6848\u8be6\u7ec6\u4fe1\u606f","title":"wallet/getproposalbyid"},{"location":"api/http/#walletlistproposals","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/listproposals \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u63d0\u6848\u5217\u8868\u4fe1\u606f","title":"wallet/listproposals"},{"location":"api/http/#walletproposalapprove","text":"\u4f5c\u7528\uff1a\u63d0\u6848\u6279\u51c6 curl -X POST http://127.0.0.1:8090/wallet/proposalapprove -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\", \"proposal_id\":1, \"is_add_approval\":true} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u6279\u51c6\u4eba\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f proposal_id \uff1a\u63d0\u6848id is_add_approval \uff1a\u662f\u5426\u6279\u51c6 \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6279\u51c6\u63d0\u6848\u7684\u4ea4\u6613","title":"wallet/proposalapprove"},{"location":"api/http/#walletproposaldelete","text":"\u4f5c\u7528\uff1a\u5220\u9664\u63d0\u6848 curl -X POST http://127.0.0.1:8090/wallet/proposaldelete -d {\"owner_address\" : \"419844F7600E018FD0D710E2145351D607B3316CE9\", \"proposal_id\":1} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u5220\u9664\u4eba\u7684\u5730\u5740\uff0c\u53ea\u6709\u63d0\u6848\u6240\u6709\u4eba\u5141\u8bb8\u5220\u9664\u63d0\u6848\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f proposal_id \uff1a\u63d0\u6848id \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u5220\u9664\u63d0\u6848\u7684\u4ea4\u6613","title":"wallet/proposaldelete"},{"location":"api/http/#walletgetpaginatedproposallist","text":"\u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2proposal\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedproposallist -d '{\"offset\": 0, \"limit\": 10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002","title":"wallet/getpaginatedproposallist"},{"location":"api/http/#_7","text":"\u4e0b\u9762\u662f\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240\u76f8\u5173API\uff1a wallet/exchangecreate wallet/exchangeinject wallet/exchangewithdraw wallet/exchangetransaction wallet/getexchangebyid wallet/listexchanges wallet/getpaginatedexchangelist wallet/marketsellasset wallet/marketcancelorder wallet/getmarketorderbyaccount wallet/getmarketpairlist wallet/getmarketorderlistbypair wallet/getmarketpricebypair wallet/getmarketorderbyid","title":"\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240"},{"location":"api/http/#walletexchangecreate","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/exchangecreate -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \u3001 \"first_token_id\":token_a, \"first_token_balance\":100, \"second_token_id\":token_b,\"second_token_balance\":200} \u53c2\u6570\u8bf4\u660e\uff1a first_token_id \uff1a\u7b2c1\u79cdtoken\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f first_token_balance \uff1a\u7b2c1\u79cdtoken\u7684balance second_token_id \uff1a \u7b2c2\u79cdtoken\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f second_token_balance \uff1a\u7b2c2\u79cdtoken\u7684balance \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u521b\u5efa\u4ea4\u6613\u5bf9\u7684transaction\u3002","title":"wallet/exchangecreate"},{"location":"api/http/#walletexchangeinject","text":"\u4f5c\u7528\uff1a\u7ed9\u4ea4\u6613\u5bf9\u6ce8\u8d44\uff0c\u6ce8\u8d44\u540e\u53ef\u4ee5\u9632\u6b62\u4ea4\u6613\u5bf9\u4ef7\u683c\u6ce2\u52a8\u592a\u5927 curl -X POST http://127.0.0.1:8090/wallet/exchangeinject -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f quant \uff1a\u6ce8\u8d44token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u6ce8\u8d44\u7684transaction\u3002","title":"wallet/exchangeinject"},{"location":"api/http/#walletexchangewithdraw","text":"\u4f5c\u7528\uff1a\u5bf9\u4ea4\u6613\u5bf9\u64a4\u8d44\uff0c\u64a4\u8d44\u540e\u5bb9\u6613\u5f15\u8d77\u4ea4\u6613\u5bf9\u4ef7\u683c\u6ce2\u52a8\u592a\u5927\u3002 curl -X POST http://127.0.0.1:8090/wallet/exchangewithdraw -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9700\u8981\u662fhexString\u683c\u5f0f quant \uff1a\u64a4\u8d44token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1a\u64a4\u8d44\u7684transaction","title":"wallet/exchangewithdraw"},{"location":"api/http/#walletexchangetransaction","text":"\u4f5c\u7528\uff1a\u53c2\u4e0e\u4ea4\u6613\u5bf9\u4ea4\u6613\u3002 curl -X POST http://127.0.0.1:8090/wallet/exchangetransaction -d {\"owner_address\":\"419844f7600e018fd0d710e2145351d607b3316ce9\", \"exchange_id\":1, \"token_id\":\"74726f6e6e616d65\", \"quant\":100,\"expected\":10} \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u662f\u4ea4\u6613\u5bf9\u521b\u5efa\u8005\u7684\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f exchange_id \uff1a\u4ea4\u6613\u5bf9id token_id \uff1a \u5356\u51fa\u7684token\u7684id\uff0c\u4e00\u822c\u60c5\u51b5\u662ftoken\u7684name\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f quant \uff1a\u5356\u51fatoken\u7684\u6570\u91cf expected \uff1a\u671f\u671b\u4e70\u5165token\u7684\u6570\u91cf \u53ef\u9009\u53c2\u6570 Permission_id \uff0c\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\uff0c\u8bbe\u7f6e\u4ea4\u6613\u591a\u91cd\u7b7e\u540d\u65f6\u4f7f\u7528\u7684permissionId \u8fd4\u56de\u503c\uff1atoken\u4ea4\u6613\u7684transaction","title":"wallet/exchangetransaction"},{"location":"api/http/#walletgetexchangebyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/getexchangebyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1aid\uff1a\u4ea4\u6613\u5bf9id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9","title":"wallet/getexchangebyid"},{"location":"api/http/#walletlistexchanges","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8090/wallet/listexchanges \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u4ea4\u6613\u5bf9","title":"wallet/listexchanges"},{"location":"api/http/#walletgetpaginatedexchangelist","text":"\u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2\u4ea4\u6613\u5bf9\u5217\u8868 curl -X POST http://127.0.0.1:8090/wallet/getpaginatedexchangelist -d '{\"offset\": 0, \"limit\":10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cb\u4ea4\u6613\u5bf9\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684\u4ea4\u6613\u5bf9\u6570\u91cf \u8fd4\u56de\u503c\uff1aexchange\u5217\u8868","title":"wallet/getpaginatedexchangelist"},{"location":"api/http/#walletmarketsellasset","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/marketsellasset -d '{ \"owner_address\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\", \"sell_token_id\": \"5f\", \"sell_token_quantity\": 100, \"buy_token_id\": \"31303030303031\", \"buy_token_quantity\": 200 }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u8ba2\u5355\u53d1\u8d77\u8005\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f sell_token_quantity \uff1a\u5356\u51faasset\u7684\u6570\u91cf buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_quantity \uff1a\u6700\u5c11\u4e70\u5165\u7684asset\u7684\u6570\u91cf \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61","title":"wallet/marketsellasset"},{"location":"api/http/#walletmarketcancelorder","text":"\u4f5c\u7528\uff1a\u53d6\u6d88\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/marketcancelorder -d '{ \"owner_address\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\", \"order_id\": \"0a7af584a53b612bcff1d0fc86feab05f69bc4528f26a4433bb344d453bd6eeb\" }' \u53c2\u6570\u8bf4\u660e\uff1a owner_address \uff1a\u8ba2\u5355\u53d1\u8d77\u8005\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f order_id \uff1a\u53d6\u6d88\u8ba2\u5355\u7684id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61","title":"wallet/marketcancelorder"},{"location":"api/http/#walletgetmarketorderbyaccount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8d26\u6237\u62e5\u6709\u7684\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderbyaccount -d '{ \"value\": \"4184894b42f66dce8cb84aec2ed11604c991351ac8\" }' \u53c2\u6570\u8bf4\u660e\uff1a value \uff1a\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355\u5217\u8868","title":"wallet/getmarketorderbyaccount"},{"location":"api/http/#walletgetmarketpairlist","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5b58\u5728\u7684\u6240\u6709\u4ea4\u6613\u5bf9 curl -X get http://127.0.0.1:8090/wallet/getmarketpairlist \u53c2\u6570\u8bf4\u660e\uff1a \u65e0 \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u5217\u8868","title":"wallet/getmarketpairlist"},{"location":"api/http/#walletgetmarketorderlistbypair","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u67d0\u4ea4\u6613\u5bf9\u7684\u6240\u6709\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderlistbypair -d '{ \"sell_token_id\": \"5f\" , \"buy_token_id\": \"31303030303031\" }' \u53c2\u6570\u8bf4\u660e\uff1a sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355\u5217\u8868","title":"wallet/getmarketorderlistbypair"},{"location":"api/http/#walletgetmarketpricebypair","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u67d0\u4ea4\u6613\u5bf9\u7684\u6240\u6709\u4ef7\u683c curl -X POST http://127.0.0.1:8090/wallet/getmarketpricebypair -d '{ \"sell_token_id\": \"5f\" \"buy_token_id\": \"31303030303031\" }' \u53c2\u6570\u8bf4\u660e\uff1a sell_token_id \uff1a\u5356\u51faasset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f buy_token_id \uff1a\u4e70\u5165asset\u7684id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u4ef7\u683c\u5217\u8868","title":"wallet/getmarketpricebypair"},{"location":"api/http/#walletgetmarketorderbyid","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8ba2\u5355 curl -X POST http://127.0.0.1:8090/wallet/getmarketorderbyid -d '{ \"value\": \"orderid\" }' \u53c2\u6570\u8bf4\u660e\uff1a - value \uff1aorder id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8ba2\u5355","title":"wallet/getmarketorderbyid"},{"location":"api/http/#tronz","text":"\u4e0b\u9762\u662f TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6\u76f8\u5173API\uff1a wallet/getexpandedspendingkey wallet/getakfromask wallet/getnkfromnsk wallet/getspendingkey wallet/getdiversifier wallet/getincomingviewingkey wallet/getzenpaymentaddress wallet/createshieldedtransactionwithoutspendauthsig wallet/scannotebyivk wallet/scanandmarknotebyivk wallet/scannotebyovk wallet/createshieldnullifier wallet/getshieldtransactionhash wallet/createshieldedtransaction wallet/getnewshieldedaddress wallet/createshieldedcontractparameters wallet/createshieldedcontractparameterswithoutask wallet/scanshieldedtrc20notesbyivk wallet/scanshieldedtrc20notesbyovk wallet/isshieldedtrc20contractnotespent wallet/gettriggerinputforshieldedtrc20contract wallet/getrcm wallet/getmerkletreevoucherinfo wallet/isspend wallet/createspendauthsig","title":"TRONZ \u533f\u540d\u667a\u80fd\u5408\u7ea6"},{"location":"api/http/#walletgetexpandedspendingkey","text":"\u4f5c\u7528\uff1a\u83b7\u53d6expanded spending keys curl -X POST http://127.0.0.1:8090/wallet/getexpandedspendingkey -d '{ \"value\": \"06b02aaa00f230b0887ff57a6609d76691369972ac3ba568fe7a8a0897fce7c4\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aSpending key \u8fd4\u56de\u503c\uff1a Expanded spending keys. \u7531\u4e09\u4e2akey\u7ec4\u6210\uff0c\u5206\u522b\u662f ask\u3001 nsk\u548covk.","title":"wallet/getexpandedspendingkey"},{"location":"api/http/#walletgetakfromask","text":"\u4f5c\u7528\uff1a\u4eceask\u83b7\u5f97ak curl -X POST http://127.0.0.1:8090/wallet/getakfromask -d '{ \"value\": \"653b3a3fdd40b60d2f53ba121df8840f6590384993f8fa9a0ecb0dfb23496604\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aAsk \u8fd4\u56de\u503c\uff1aAk","title":"wallet/getakfromask"},{"location":"api/http/#walletgetnkfromnsk","text":"\u4f5c\u7528\uff1a\u4ecensk\u83b7\u5f97nk curl -X POST http://127.0.0.1:8090/wallet/getnkfromnsk -d '{ \"value\": \"428ff3c9e101dc1fca08f7b0e3387b23b68016746ae565aefc19d112b696db01\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue\uff1aNsk \u8fd4\u56de\u503c\uff1aNk","title":"wallet/getnkfromnsk"},{"location":"api/http/#walletgetspendingkey","text":"\u4f5c\u7528\uff1a\u83b7\u5f97spending key curl -X GET http://127.0.0.1:8090/wallet/getspendingkey \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1aSpending key","title":"wallet/getspendingkey"},{"location":"api/http/#walletgetdiversifier","text":"\u4f5c\u7528\uff1aTo get diversifier curl -X GET http://127.0.0.1:8090/wallet/getdiversifier \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c: Diversifier","title":"wallet/getdiversifier"},{"location":"api/http/#walletgetincomingviewingkey","text":"\u4f5c\u7528\uff1a\u83b7\u5f97incoming viewing key curl -X POST http://127.0.0.1:8090/wallet/getincomingviewingkey -d '{ \"ak\":\"b443f1a303ef5837ba95750b48b6fef15f9c77f63a8c28c161bcd6613f423b5c\", \"nk\":\"632137e69179df3d10e252fcce85d13464c3163fe7a619edf8d43ebefa8162d9\" }' \u53c2\u6570\u8bf4\u660e\uff1a ak\uff1aAk nk\uff1aNk \u8fd4\u56de\u503c\uff1aIncoming viewing key","title":"wallet/getincomingviewingkey"},{"location":"api/http/#walletgetzenpaymentaddress","text":"\u4f5c\u7528\uff1a\u83b7\u5f97\u652f\u4ed8\u5730\u5740 curl -X POST http://127.0.0.1:8090/wallet/getzenpaymentaddress -d '{ \"ivk\":\"8c7852e10862d8eec058635974f70f24c1f8d73819131bb5b54028d0a9408a03\", \"d\":\"736ba8692ed88a5473e009\" }' \u53c2\u6570\u8bf4\u660e\uff1a ivk \uff1aIvk d \uff1aD \u8fd4\u56de\u503c\uff1a\u652f\u4ed8\u5730\u5740","title":"wallet/getzenpaymentaddress"},{"location":"api/http/#walletcreateshieldedtransactionwithoutspendauthsig","text":"\u4f5c\u7528\uff1aTo create shielded transaction without using ask curl -X POST http://127.0.0.1:8090/wallet/createshieldedtransactionwithoutspendauthsig -d '{ \"ivk\":\"8c7852e10862d8eec058635974f70f24c1f8d73819131bb5b54028d0a9408a03\", \"d\":\"736ba8692ed88a5473e009\" }' \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61","title":"wallet/createshieldedtransactionwithoutspendauthsig"},{"location":"api/http/#walletcreateshieldedtransactionwithoutspendauthsig_1","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540d\u4ea4\u6613\uff08\u4e0d\u9700\u8981\u63d0\u4f9bask\uff09 curl -X POST http://127.0.0.1:8090/wallet/createshieldedtransactionwithoutspendauthsig -d '{ \"ak\": \"bf051629fd8122cd9dd8591d72947b026c214cf7cdac1f68eff97179727d38e9\", \"nsk\": \"42963d26af8122204273fa3489d9efd6babf1f7179ff193c955a1f3d9c2df10c\", \"ovk\": \"bc9848a83966709655b12efadc9e978785858316045e0115a0e72567a9a2a823\", \"shielded_spends\": [ { \"note\": { \"value\": 500000000, \"payment_address\": \"ztron1jld8fmvujrz2vgkc867zuwklmewy4ypw0wtwgweqs2paee0uhc8f3azy90el770arksa2kunl02\", \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\" }, \"alpha\": \"2608999c3a97d005a879ecdaa16fd29ae434fb67b177c5e875b0c829e6a1db04\", \"voucher\": { \"tree\": { \"left\": { \"content\": \"a3d5c9b2db9699f32afec5febbd5586ce9ff33a0bef6fee5691028313b8e1f6a\" }, \"parents\": [ { \"content\": \"d9c38484296b3aa8f5e8b59d418a3775e2bb414e75498ad352e4614f05aae548\" }, { \"content\": \"d0420777afdc4151c3f14fbe4c714d82dc15873edb1ca65ebb3887334a4bae15\" } ] }, \"rt\": \"fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c28565\" }, \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20d0420777afdc4151c3f14fbe4c714d82dc15873edb1ca65ebb3887334a4bae1520d9c38484296b3aa8f5e8b59d418a3775e2bb414e75498ad352e4614f05aae5482001000000000000000000000000000000000000000000000000000000000000000600000000000000\" } ], \"shielded_receives\": [ { \"note\": { \"value\": 40000000, \"payment_address\": \"ztron1wd46s6fwmz99gulqpxul6zffqtevzfpl93ng3s5834fhwf6e7w5l6zmjhmpvtwsc4wxa7dusmvr\", \"rcm\": \"ccced07d36641fc93cba33cddda7064cb82f6962a0bdf15a4240a4a742770e03\" } } ] }' \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ak \uff1aAk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61","title":"wallet/createshieldedtransactionwithoutspendauthsig"},{"location":"api/http/#walletscannotebyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/wallet/scannotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"wallet/scannotebyivk"},{"location":"api/http/#walletscanandmarknotebyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes, \u5305\u542b\u662f\u5426\u82b1\u8d39\u72b6\u6001 curl -X POST http://127.0.0.1:8090/wallet/scanandmarknotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\", \"ak\": \"1d4f9b5551f4aa9443ceb263f0e208eb7e26080264571c5ef06de97a646fe418\", \"nk\": \"748522c7571a9da787e43940c9a474aa0c5c39b46c338905deb6726fa3678bdb\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"wallet/scanandmarknotebyivk"},{"location":"api/http/#walletscannotebyovk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eovk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/wallet/scannotebyovk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ovk\": \"705145aa18cbe6c11d5d0011419a98f3d5b1d341eb4727f1315597f4bdaf8539\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"wallet/scannotebyovk"},{"location":"api/http/#walletcreateshieldnullifier","text":"\u4f5c\u7528\uff1aTo create a shielded nullifier curl -X POST http://127.0.0.1:8090/wallet/createshieldnullifier -d '{ \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"voucher\": { \"tree\": { \"left\": { \"content\": \"a4d763fae3fee78964ccdf7567ec3062c95a5b97825d731202d3dfa6cb01c143\" } }, \"rt\": \"7dc3652c2a16e8518a8be0e3e038f9d28c3eb96f13e8da8acc2a9b650702f33e\" }, \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\" }' \u53c2\u6570\u8bf4\u660e\uff1a - note \uff1aNote\u4fe1\u606f - voucher \uff1aVoucher\u4fe1\u606f - ak \uff1aAk - nk \uff1aNk \u8fd4\u56de\u503c\uff1a\u533f\u540d\u7684nullifier","title":"wallet/createshieldnullifier"},{"location":"api/http/#walletgetshieldtransactionhash","text":"\u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u7b14\u533f\u540d\u4ea4\u6613\u7684hash curl -X POST http://127.0.0.1:8090/wallet/getshieldtransactionhash -d '{ \"txID\": \"de639a64497d86bb27e34a2953093a0cc488ec4c7bc9624ac5857d3799748595\", \"raw_data\": { \"contract\": [ { \"parameter\": { \"value\": { \"binding_signature\": \"2b8ae5e11ecad3e6946f54b7ad513bd8692a3edae72d29e266b28e47c9b37ccdb38e3b6433575694b6681136b1734f85afcfe672061d2ee7368755ad0b96a80b\", \"spend_description\": [ { \"value_commitment\": \"cbe1063adbe7e10919421fa6133f03150253913f5aff02d165e2c019cea4a869\", \"anchor\": \"fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c28565\", \"nullifier\": \"93e329d464e1dbddc8bb4d2dcc939a796dfe11e985d4e9033a15edf0e3df4f35\", \"rk\": \"10c702d6dff1509502ee5acc0b01d4b4531b2ff53b0dd54488aea6031b5e6d16\", \"zkproof\": \"abf64b3beacfd873b1db764c3da9f739993518f3f740e761cb8af60682b7171892895c3ccfb550c3cf757e906dbf5313a3676b8226b0b84960f76a185c8d3fdfc3fa9c08479a704852d7b3dfeb913cf13e01c25657561e00a06c61e7c65b50b812902ddc4f17bfe2bcb2f247c2dc6132d0f0e0abcecc0332fdd99077af10d07bbdb88c4fd257948428e233c57f84eee8b2eeab2162c1aeccf2e1dfaa306d5803a8b2d281a549440fbd5a3657a830c1ca07a384cea446aa077b195b29b23023b1\" } ], \"receive_description\": [ { \"value_commitment\": \"f6d45db8ec5a1c8dbbde040b4ea138efbe8db2d0597ed2306ff3fdd0620b3c5a\", \"note_commitment\": \"ec3f5472ac8114a9a07987d1c2a0e1254504e352d9574971e77084293900312e\", \"epk\": \"719eeb5ebaeeccc55c9f0d73767aadf0c0513603400ccb50bd789637d984b8e6\", \"c_enc\": \"3a6c4fe0e79f5b23fed34a419c4728d0b26bca23180a22871743b0a9444c27663cf07c55a0ea6db504d70421768bf17384e180b2ad8b8be88ff5cf662c53a4ba086effc3a4b1df39265f71dfac884bff5a69e1dcdcae8aecf6ae443168ffab692a5c1e4908b415dd830dcf6432fae1c32461132080da74d6b83d3d00887eb2ce9965a749f8d8410ea4182969371ac2fd5e0e74d27d883492a08e6209cd9959d74bb67c2a9fe7faac5a4777f1bff19cf0b6398a2faa9b194bbb93d60f132f382f7d693a722e8cbca1da084ee7e0c371397419a7259d1fa0943078cfe5ea352e4b53907bb6c04ca8ad409fb0ae0b110a6b312200e21ab79d543ae7aeb16802cf87afdac1e8954038caa42818f4ca2847fd642360c098accfeeade4abd1cc9ca3315a4336be224ba3516973c7dae3f41875457236675993df38d3a544470c4f9335d77b005e6a9aec40fd881b34852ec9bbbcc3d24ee92930eae770a5462ce04c4e37b0524ef07e00e8d58c810d6aefb19fa7bc2c3a2fdfab6dd4fe73dbecc0795a280f9b7ca35cc8bc1062aed8e26bd81ba33c6f4c318974636f6d796723e77772ced3dbc1f42afec6fc9bb61f8beac704affea9baf2e2de226250c1d427c7d78b1eb1d239e1f3eb6af0f017b80541333f4fce17340048d826b9b0be8477c996ad8bfc3440dc686fdff6d0d63986db4d95962d7977289cbfd14c745de7c79d4dc0bcd220e5b4ced5b409e79142e0f336e44ca29a9a87f6f43707d8c4936e895236dd2b393a478a8bc27b1f682496ba84a0ddc549da06cb7855c4d8680dc66ac40240733b7f\", \"c_out\": \"50be6e77854d4c427b2af4f16e5275f0b0c206b3ea2d2a24ffb287ea356f323523354cd83d15e7c48e6f1fa103dfca3d49ca2263dbb0cd8bfb35d72cdcad1351de6fba7a30aea27184a68bcda19cc6da\", \"zkproof\": \"a4e6c50d5753092d005689922c2bdeafc98775bce59db840974163ace23c13fec18112e32aae1c39842c645ed172ad8fa277e63c1e3d6d7fb12eb15d56b573237b776f562a81d0e6be362d147d8604fdfec421482270ca82950de1883fda06e719f5d256d7a039769bffc570a1778d70c17295d1c0336a6ae0903d2460dc139a9563c2d40f37bffefa73003a55af1ff0861b6f79ef40099b6a0cb25ab3f40727210e4629647d0711abff125712a5f0d64fcb6e6a6b0b34478d7da0552b493a80\" } ] }, \"type_url\": \"type.googleapis.com/protocol.ShieldedTransferContract\" }, \"type\": \"ShieldedTransferContract\" } ], \"ref_block_bytes\": \"0d59\", \"ref_block_hash\": \"7356ce5c35d8265e\", \"expiration\": 1559237283000, \"timestamp\": 1559201285590 }, \"raw_data_hex\": \"0a020d5922087356ce5c35d8265e40b899a3ceb02d5a940b0833128f0b0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e536869656c6465645472616e73666572436f6e747261637412d50a1acb020a20cbe1063adbe7e10919421fa6133f03150253913f5aff02d165e2c019cea4a8691220fb1115d5ddd16c5427c3a608d6b5add5967e70f51c890307c6142083a2c285651a2093e329d464e1dbddc8bb4d2dcc939a796dfe11e985d4e9033a15edf0e3df4f35222010c702d6dff1509502ee5acc0b01d4b4531b2ff53b0dd54488aea6031b5e6d162ac001abf64b3beacfd873b1db764c3da9f739993518f3f740e761cb8af60682b7171892895c3ccfb550c3cf757e906dbf5313a3676b8226b0b84960f76a185c8d3fdfc3fa9c08479a704852d7b3dfeb913cf13e01c25657561e00a06c61e7c65b50b812902ddc4f17bfe2bcb2f247c2dc6132d0f0e0abcecc0332fdd99077af10d07bbdb88c4fd257948428e233c57f84eee8b2eeab2162c1aeccf2e1dfaa306d5803a8b2d281a549440fbd5a3657a830c1ca07a384cea446aa077b195b29b23023b122c2070a20f6d45db8ec5a1c8dbbde040b4ea138efbe8db2d0597ed2306ff3fdd0620b3c5a1220ec3f5472ac8114a9a07987d1c2a0e1254504e352d9574971e77084293900312e1a20719eeb5ebaeeccc55c9f0d73767aadf0c0513603400ccb50bd789637d984b8e622c4043a6c4fe0e79f5b23fed34a419c4728d0b26bca23180a22871743b0a9444c27663cf07c55a0ea6db504d70421768bf17384e180b2ad8b8be88ff5cf662c53a4ba086effc3a4b1df39265f71dfac884bff5a69e1dcdcae8aecf6ae443168ffab692a5c1e4908b415dd830dcf6432fae1c32461132080da74d6b83d3d00887eb2ce9965a749f8d8410ea4182969371ac2fd5e0e74d27d883492a08e6209cd9959d74bb67c2a9fe7faac5a4777f1bff19cf0b6398a2faa9b194bbb93d60f132f382f7d693a722e8cbca1da084ee7e0c371397419a7259d1fa0943078cfe5ea352e4b53907bb6c04ca8ad409fb0ae0b110a6b312200e21ab79d543ae7aeb16802cf87afdac1e8954038caa42818f4ca2847fd642360c098accfeeade4abd1cc9ca3315a4336be224ba3516973c7dae3f41875457236675993df38d3a544470c4f9335d77b005e6a9aec40fd881b34852ec9bbbcc3d24ee92930eae770a5462ce04c4e37b0524ef07e00e8d58c810d6aefb19fa7bc2c3a2fdfab6dd4fe73dbecc0795a280f9b7ca35cc8bc1062aed8e26bd81ba33c6f4c318974636f6d796723e77772ced3dbc1f42afec6fc9bb61f8beac704affea9baf2e2de226250c1d427c7d78b1eb1d239e1f3eb6af0f017b80541333f4fce17340048d826b9b0be8477c996ad8bfc3440dc686fdff6d0d63986db4d95962d7977289cbfd14c745de7c79d4dc0bcd220e5b4ced5b409e79142e0f336e44ca29a9a87f6f43707d8c4936e895236dd2b393a478a8bc27b1f682496ba84a0ddc549da06cb7855c4d8680dc66ac40240733b7f2a5050be6e77854d4c427b2af4f16e5275f0b0c206b3ea2d2a24ffb287ea356f323523354cd83d15e7c48e6f1fa103dfca3d49ca2263dbb0cd8bfb35d72cdcad1351de6fba7a30aea27184a68bcda19cc6da32c001a4e6c50d5753092d005689922c2bdeafc98775bce59db840974163ace23c13fec18112e32aae1c39842c645ed172ad8fa277e63c1e3d6d7fb12eb15d56b573237b776f562a81d0e6be362d147d8604fdfec421482270ca82950de1883fda06e719f5d256d7a039769bffc570a1778d70c17295d1c0336a6ae0903d2460dc139a9563c2d40f37bffefa73003a55af1ff0861b6f79ef40099b6a0cb25ab3f40727210e4629647d0711abff125712a5f0d64fcb6e6a6b0b34478d7da0552b493a802a402b8ae5e11ecad3e6946f54b7ad513bd8692a3edae72d29e266b28e47c9b37ccdb38e3b6433575694b6681136b1734f85afcfe672061d2ee7368755ad0b96a80b70d68b8ebdb02d\" }' \u53c2\u6570\u8bf4\u660e\uff1atransaction\uff1a\u4ea4\u6613\u5bf9\u8c61 \u8fd4\u56de\u503c\uff1a\u4e00\u7b14\u533f\u540d\u4ea4\u6613\u7684hash","title":"wallet/getshieldtransactionhash"},{"location":"api/http/#walletcreateshieldedtransaction","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540d\u4ea4\u6613\uff0c\u8bf7\u53c2\u7167\uff1a \u793a\u4f8b \u53c2\u6570\u8bf4\u660e\uff1a transparent_from_address \uff1a\u900f\u660e\u53d1\u9001\u8005\u7684\u5730\u5740 from_amount \uff1a\u4ece\u900f\u660e\u5730\u5740\u8f6c\u51fa\u7684\u6570\u989d ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOvk shielded_receives \uff1a\u533f\u540d\u63a5\u6536\u8005\u4fe1\u606f shieldedSpends \uff1a\u533f\u540d\u53d1\u9001\u8005\u4fe1\u606f transparent_to_address \uff1a\u900f\u660e\u63a5\u6536\u8005\u5730\u5740 to_amount \uff1a\u8f6c\u5165\u900f\u660e\u5730\u5740\u7684\u6570\u989d \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9\u8c61","title":"wallet/createshieldedtransaction"},{"location":"api/http/#walletgetnewshieldedaddress","text":"\u4f5c\u7528: \u83b7\u5f97shieldedAddress curl -X GET http://127.0.0.1:8090/wallet/getnewshieldedaddress \u53c2\u6570\u8bf4\u660e: \u65e0 \u8fd4\u56de\u503c: Spending key Ask key Nsk key Outgoing viewing key Ak Key Nk key incoming viewing key Diversifier pkD payment address","title":"wallet/getnewshieldedaddress"},{"location":"api/http/#walletcreateshieldedcontractparameters","text":"\u4f5c\u7528\uff1a\u521b\u5efa\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u76f8\u5173\u53c2\u6570\uff0c\u5305\u62ecmint, transfer\u548cburn\u4e09\u79cd\u7c7b\u578b curl -X POST http://127.0.0.1:8090/wallet/createshieldedcontractparameters -d '{ \"ask\": \"0f63eabdfe2bbfe08012f6bb2db024e6809c16e8ed055aa41a6095424f192005\", \"nsk\": \"cd43d722fd4b6b01f19449ea826c3e935609648520fcc2a95c0026f0fa9ee404\", \"ovk\": \"1797de3b7f33cafffe3fe18c6b43ec6760add2ad81b10978d1fca5290497ede9\", \"from_amount\": \"5000\", \"shielded_receives\": { \"note\": { \"value\": 50, \"payment_address\": \"ztron15js0jkuxczt8caq5hp59rnh6rgf34sek7vqn9u6ljelxv4nuzz2x9qe3ffm2wzz6ck53yxyhxs6\", \"rcm\": \"74baec30dfac8ed59968955ff245ae002009005194e5b824c35ab88c52e5170e\" } }, \"shielded_TRC20_contract_address\": \"41f3392eaa7d38749176e0671dbc6912f8ef956943\" }' \u53c2\u6570\u8bf4\u660e\uff1a ask \uff1aAsk nsk \uff1aNsk ovk \uff1aOutgoing view key from_amount \uff1amint\u7684\u91d1\u989d\uff0c\u6839\u636e\u7f29\u653e\u56e0\u5b50scalingFactor\uff0c\u548cnote\u503c\u4e2d\u7684 value \u6210\u6bd4\u4f8b\u5173\u7cfb\uff0c\u5373 from_amount = value * scalingFactor. \u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0cscalingFactor\u503c\u4e3a100 shielded_receives : \u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6notes shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u53c2\u6570 \u6ce8\u610f\uff1a\u6839\u636e\u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6\u4ea4\u6613\u7c7b\u578b\u7684\u4e0d\u540c\uff0c\u8f93\u5165\u7684\u53c2\u6570\u4e0d\u540c","title":"wallet/createshieldedcontractparameters"},{"location":"api/http/#walletcreateshieldedcontractparameterswithoutask","text":"\u4f5c\u7528\uff1a\u5728\u6ca1\u6709Ask\u7684\u60c5\u51b5\u4e0b\uff0c\u521b\u5efa\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u76f8\u5173\u53c2\u6570\uff0c\u5305\u62ecmint, transfer\u548cburn\u4e09\u79cd\u7c7b\u578b curl -X POST http://127.0.0.1:8090/wallet/createshieldedcontractparameterswithoutask -d '{ \"ovk\": \"cd361834b3adc06f130de24f7d0c18f92a093cc885d9ce492cc6c02071f7a4f0\", \"from_amount\": \"5000\", \"shielded_receives\": { \"note\": { \"value\": 50, \"payment_address\": \"ztron13lvfnt4rau4ad9mmgztd3aftw49e3amz8gm2kvyzrsaw0ugz2grxwkvcfys5e2gkchj7cnnetjz\", \"rcm\": \"499e73f2f8aaf05fac41a35b8343bde27f6629cbe66d35da5364a99b94a55a06\" } }, \"shielded_TRC20_contract_address\": \"41f3392eaa7d38749176e0671dbc6912f8ef956943\" }' \u53c2\u6570\u8bf4\u660e\uff1a ovk \uff1aOutgoing view key from_amount \uff1amint\u7684\u91d1\u989d\uff0c\u6839\u636e\u7f29\u653e\u56e0\u5b50 scalingFactor\uff0c\u548cnote\u503c\u4e2d\u7684value\u6210\u6bd4\u4f8b\u5173\u7cfb\uff0c\u5373 from_amount = value * scalingFactor. \u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0cscalingFactor\u503c\u4e3a100 shielded_receives : \u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6notes shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u533f\u540dTRC20\u5408\u7ea6\u4ea4\u6613\u7684\u53c2\u6570 \u6ce8\u610f\uff1a\u6839\u636e\u5f85\u521b\u5efa\u7684\u533f\u540d\u5408\u7ea6\u4ea4\u6613\u7c7b\u578b\u7684\u4e0d\u540c\uff0c\u8f93\u5165\u7684\u53c2\u6570\u4e0d\u540c","title":"wallet/createshieldedcontractparameterswithoutask"},{"location":"api/http/#walletscanshieldedtrc20notesbyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eivk\u76f8\u5173\u7684\u6240\u6709notes, \u5e76\u6807\u8bb0\u5176\u662f\u5426\u5df2\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/wallet/scanshieldedtrc20notesbyivk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ivk\": \"9f8e74bb3d7188a2781dc1db38810c6914eef4570a79e8ec8404480948e4e305\", \"ak\":\"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\":\"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"wallet/scanshieldedtrc20notesbyivk"},{"location":"api/http/#walletscanshieldedtrc20notesbyovk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eovk\u76f8\u5173\u7684\u6240\u6709notes curl -X POST http://127.0.0.1:8090/wallet/scanshieldedtrc20notesbyovk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ovk\": \"0ff58efd75e083fe4fd759c8701e1c8cb6961c4297a12b2c800bdb7b2bcab889\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"wallet/scanshieldedtrc20notesbyovk"},{"location":"api/http/#walletisshieldedtrc20contractnotespent","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u7684note\u662f\u5426\u5df2\u88ab\u82b1\u8d39 \u53c2\u6570\u8bf4\u660e\uff1a note \uff1aNote\u4fe1\u606f ak \uff1aAk nk \uff1aNk position \uff1anote\u627f\u8bfa\u5728\u533f\u540d\u5408\u7ea6Merkle\u6811\u53f6\u5b50\u8282\u70b9\u7684\u4f4d\u7f6e\u7d22\u5f15 shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 \u6ce8\u610f: Note \u4e2dvalue\u662f\u7531 scalingFactor\u7f29\u653e\u540e\u7684\u503c\uff0cscalingFactor\u5728\u533f\u540dTRC-20\u5408\u7ea6\u4e2d\u8bbe\u7f6e\uff0c\u5b9e\u9645\u91d1\u989d real_amount = value * scalingFactor \u3002","title":"wallet/isshieldedtrc20contractnotespent"},{"location":"api/http/#walletgettriggerinputforshieldedtrc20contract","text":"\u4f5c\u7528: \u5bf9\u4e8e\u6ca1\u6709\u6388\u6743\u7b7e\u540d\u7684\u533f\u540dTRC-20\u5408\u7ea6\u53c2\u6570\uff0c\u751f\u6210\u89e6\u53d1\u5408\u7ea6\u7684\u8f93\u5165\u6570\u636e curl -X POST http://127.0.0.1:8090/wallet/gettriggerinputforshieldedtrc20contract -d '{ \"shielded_TRC20_Parameters\": {\"spend_description\": [{\"value_commitment\": \"e3fcc8609ff6a4b00b77a00ef624f305cec5f55cc7312ff5526d0b3057f2ef9e\",\"anchor\": \"4c9cbebece033dc1d253b93e4a3682187daae4f905515761d10287b801e69816\",\"nullifier\": \"74edce8798a3976ee41e045bb666f3a121c27235b0f1b44b3456d2c84bc725dc\",\"rk\": \"9dcf4254aa7c4fb7c8bc6956d4b0c7c6c87c37a2552e7bf4e60c12cb5bc6c8cd\",\"zkproof\": \"9926045cd1442a7d20153e6abda9f77a6526895f0a29a57cb1bc76ef6b7cacef2d0f4c94aa97c3acacdb95cabb065057b7edb4cbea098149a8aa7114a6a6b340c58007ac64b64e592eb18fdd299de5962a2a32ab0caebb2ab198704c751a9d0e143d68a50257d7c9e2230a7420fa46450299fd167141367e201726532d8e815413d8571d6c8c12937674dec92caf1f4583ebe560ac4c7eba290deee0a1c0da5f72c0b9df89fb3b338c683b654b3dc2373a4c2a4fef7f4fa489b44405fb7d2bfb\"}],\"binding_signature\": \"11e949887d9ec92eb32c78f0bc48afdc9a16a2ecbd5a0eca1be070fb900eeda347918bd6e9521d4baf1f74963bee0c1956559623a9e7cbc886941b227341ea06\",\"message_hash\": \"7e6a00736c4f9e0036cb74c7fa3b1e3cd8f6bf0f038edeb03b668c4c5536a357\",\"parameter_type\": \"burn\"}, \"spend_authority_signature\": [ { \"value\": \"eeaaecd725ac80ec398b95cf188b769c1be66cc8e76e6c90843b7f23818704595719ce8bf694ffb8cd7aaa8739d50fe8eea7ba39d5026c4b019c973185ca7201\" } ], \"amount\": \"6000\", \"transparent_to_address\": \"4140cd765f8e637a2bbe00f9bc458f6b21eb0e648f\" }' \u53c2\u6570\u8bf4\u660e: shielded_TRC20_Parameters : \u751f\u6210\u7684\u533f\u540dTRC-20\u5408\u7ea6\u53c2\u6570 spend_authority_signature : \u6388\u6743\u7b7e\u540d amount : \u4ea4\u6613\u91d1\u989d transparent_to_address : \u63a5\u6536\u8005\u5730\u5740. \u8fd4\u56de\u503c: \u89e6\u53d1TRC-20\u5408\u7ea6\u7684\u8f93\u5165\u6570\u636e","title":"wallet/gettriggerinputforshieldedtrc20contract"},{"location":"api/http/#walletgetrcm","text":"\u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2arcm curl -X GET http://127.0.0.1:8090/wallet/getrcm \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1arcm","title":"wallet/getrcm"},{"location":"api/http/#walletgetmerkletreevoucherinfo","text":"\u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/getmerkletreevoucherinfo -d '{ \"out_points\":[{ \"hash\":\"185b3e085723f5862b3a3c3cf54d52f5c1eaf2541e3a1e0ecd08bc12cd958d74\", \"index\":0 }] }' \u53c2\u6570\u8bf4\u660e\uff1aout_points\uff1aNote\u4fe1\u606f \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f","title":"wallet/getmerkletreevoucherinfo"},{"location":"api/http/#walletisspend","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/wallet/isspend -d '{ \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\", \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"txid\": \"7d09e471bb047d3ac044d5d6691b3721a2dddbb683ac02c207fbe78af6302463\", \"index\": 1 }' \u53c2\u6570\u8bf4\u660e\uff1a ak \uff1aAk nk \uff1aNk note \uff1aNote\u4fe1\u606f txid \uff1a\u4ea4\u6613id index \uff1aNote\u7d22\u5f15 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001","title":"wallet/isspend"},{"location":"api/http/#walletcreatespendauthsig","text":"\u4f5c\u7528\uff1a\u4e3a\u4e00\u4e2a\u4ea4\u6613\u521b\u5efa\u4e00\u4e2a\u7b7e\u540d curl -X POST http://127.0.0.1:8090/wallet/createspendauthsig -d '{ \"ask\": \"e3ebcba1531f6d9158d9c162660c5d7c04dadf77d85d7436a9c98b291ff69a09\", \"tx_hash\": \"3b78fee6e956f915ffe082284c5f18640edca9c57a5f227e5f7d7eb65ad61502\", \"alpha\": \"2608999c3a97d005a879ecdaa16fd29ae434fb67b177c5e875b0c829e6a1db04\" }' \u53c2\u6570\u8bf4\u660e\uff1a ask\uff1aAsk tx_hash\uff1a\u4ea4\u6613\u54c8\u5e0c alpha\uff1aAlpha \u8fd4\u56de\u503c\uff1a\u7b7e\u540d","title":"wallet/createspendauthsig"},{"location":"api/http/#pending-pool","text":"\u4e0b\u9762\u662fPending Pool\u76f8\u5173API\uff1a wallet/gettransactionfrompending wallet/gettransactionlistfrompending wallet/getpendingsize","title":"Pending Pool"},{"location":"api/http/#walletgettransactionfrompending","text":"\u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u4e2d\u7684\u4ea4\u6613\u4fe1\u606f curl -X POST http://127.0.0.1:8090/wallet/gettransactionfrompending -d '{ \"value\": \"txId\" }' \u53c2\u6570\u8bf4\u660e\uff1avalue: \u4ea4\u6613id\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u7684\u8be6\u7ec6\u4fe1\u606f","title":"wallet/gettransactionfrompending"},{"location":"api/http/#walletgettransactionlistfrompending","text":"\u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u4ea4\u6613\u5217\u8868id curl -X get http://127.0.0.1:8090/wallet/gettransactionlistfrompending \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1apending pool\u4ea4\u6613\u5217\u8868id","title":"wallet/gettransactionlistfrompending"},{"location":"api/http/#walletgetpendingsize","text":"\u4f5c\u7528\uff1a\u67e5\u8be2pending pool\u5927\u5c0f curl -X get http://127.0.0.1:8090/wallet/getpendingsize \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1apending pool \u5927\u5c0f","title":"wallet/getpendingsize"},{"location":"api/http/#fullnode-solidity-http-api","text":"","title":"FullNode Solidity HTTP API"},{"location":"api/http/#_8","text":"","title":"\u8d26\u6237\u8d44\u6e90"},{"location":"api/http/#walletsoliditygetaccount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8091/walletsolidity/getaccount -d '{\"address\": \"41E552F6487585C2B58BC2C9BB4492BC1F17132CD0\"}' \u53c2\u6570\u8bf4\u660e\uff1aaddress \u9ed8\u8ba4\u4e3ahexString \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61","title":"walletsolidity/getaccount"},{"location":"api/http/#walletsoliditygetdelegatedresource","text":"\u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u4ee3\u7406\u7ed9\u53e6\u5916\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8091/walletsolidity/getdelegatedresource -d ' { \"fromAddress\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", \"toAddress\": \"41c6600433381c731f22fc2b9f864b14fe518b322f\" }' \u53c2\u6570\u8bf4\u660e\uff1a fromAddress \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f toAddress \uff1a\u4ee3\u7406\u5bf9\u8c61\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u7684\u5217\u8868\uff0c\u5217\u8868\u7684\u5143\u7d20\u4e3aDelegatedResource","title":"walletsolidity/getdelegatedresource"},{"location":"api/http/#walletsoliditygetdelegatedresourceaccountindex","text":"\u4f5c\u7528\uff1a\u67e5\u770b\u4e00\u4e2a\u8d26\u6237\u7684\u8d44\u6e90\u4ee3\u7406\u60c5\u51b5 curl -X POST http://127.0.0.1:8091/walletsolidity/getdelegatedresourceaccountindex -d ' { \"value\": \"419844f7600e018fd0d710e2145351d607b3316ce9\", }' \u53c2\u6570\u8bf4\u660e\uff1a value \uff1a\u662f\u8981\u67e5\u8be2\u7684\u8d26\u6237\u5730\u5740\uff0c\u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1a\u8d26\u6237\u7684DelegatedResourceAccountIndex","title":"walletsolidity/getdelegatedresourceaccountindex"},{"location":"api/http/#walletsoliditygetaccountbyid","text":"\u4f5c\u7528\uff1a\u901a\u8fc7accountId\u67e5\u8be2\u4e00\u4e2a\u8d26\u53f7\u7684\u4fe1\u606f curl -X POST http://127.0.0.1:8091/walletsolidity/getaccountbyid -d '{\"account_id\":\"6161616162626262\"}' \u53c2\u6570\u8bf4\u660e\uff1aaccount_id \u9ed8\u8ba4\u4e3ahexString\u683c\u5f0f \u8fd4\u56de\u503c\uff1aAccount\u5bf9\u8c61","title":"walletsolidity/getaccountbyid"},{"location":"api/http/#walletsoliditygetavailableunfreezecount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5f53\u524d\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570 curl -X POST http://127.0.0.1:8090/walletsolidity/getavailableunfreezecount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u7684\u5269\u4f59\u6b21\u6570","title":"walletsolidity/getavailableunfreezecount"},{"location":"api/http/#walletsoliditygetcanwithdrawunfreezeamount","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf curl -X POST http://127.0.0.1:8090/walletsolidity/getcanwithdrawunfreezeamount -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"timestamp\": 1667977444000, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 timestamp : \u67e5\u8be2\u5728\u8be5\u65f6\u95f4\u6233\u65f6\uff0c\u53ef\u63d0\u53d6\u7684\u672c\u91d1\u6570\u91cf\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2 \u8fd4\u56de\u503c\uff1a\u89e3\u8d28\u62bc\u672c\u91d1\u53ef\u63d0\u53d6\u6570\u91cf","title":"walletsolidity/getcanwithdrawunfreezeamount"},{"location":"api/http/#walletsoliditygetcandelegatedmaxsize","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u76ee\u6807\u5730\u5740\u4e2d\u6307\u5b9a\u7c7b\u578b\u8d44\u6e90\u7684\u53ef\u4ee3\u7406\u6570\u91cf\uff0c\u5355\u4f4d\u4e3asun curl -X POST http://127.0.0.1:8090/walletsolidity/getcandelegatedmaxsize -d '{ \"owner_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"type\": 0, \"visible\": true } ' \u53c2\u6570\uff1a owner_address : \u4ea4\u6613\u53d1\u8d77\u8005\u8d26\u53f7\u7684\u5730\u5740 type : \u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf \u8fd4\u56de\u503c\uff1a\u53ef\u4ee3\u7406\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u4efd\u989d\u7684\u6700\u5927\u503c\uff08\u5355\u4f4d\u4e3asun\uff09","title":"walletsolidity/getcandelegatedmaxsize"},{"location":"api/http/#walletsoliditygetdelegatedresourcev2","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u673a\u5236\u4e0b\uff0c\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5 curl -X POST http://127.0.0.1:8090/walletsolidity/getdelegatedresourcev2 -d '{ \"fromAddress\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"toAddress\": \"TPswDDCAWhJAZGdHPidFg5nEf8TkNToDX1\", \"visible\": true } ' \u53c2\u6570\uff1a fromAddress : \u4ee3\u7406\u8d26\u6237\u5730\u5740 toAddress : \u8d44\u6e90\u7684\u63a5\u6536\u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u7684\u5217\u8868","title":"walletsolidity/getdelegatedresourcev2"},{"location":"api/http/#walletsoliditygetdelegatedresourceaccountindexv2","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u5728Stake2.0\u9636\u6bb5\uff0c\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) curl -X POST http://127.0.0.1:8090/walletsolidity/getdelegatedresourceaccountindexv2 -d '{ \"value\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"visible\": true } ' \u53c2\u6570\uff1a value : \u8d26\u6237\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress)","title":"walletsolidity/getdelegatedresourceaccountindexv2"},{"location":"api/http/#sr_1","text":"","title":"\u6295\u7968\u548cSR"},{"location":"api/http/#walletsoliditylistwitnesses","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u8d85\u7ea7\u4ee3\u8868\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/listwitnesses \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u8d85\u7ea7\u4ee3\u8868\u5217\u8868","title":"walletsolidity/listwitnesses"},{"location":"api/http/#trc10_1","text":"","title":"TRC10 \u901a\u8bc1"},{"location":"api/http/#walletsoliditygetassetissuelist","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709Token\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuelist \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709Token\u5217\u8868","title":"walletsolidity/getassetissuelist"},{"location":"api/http/#walletsoliditygetpaginatedassetissuelist","text":"\u4f5c\u7528\uff1a\u5206\u9875\u67e5\u8be2Token\u5217\u8868 curl -X POST http://127.0.0.1:8091/walletsolidity/getpaginatedassetissuelist -d '{\"offset\": 0, \"limit\":10}' \u53c2\u6570\u8bf4\u660e\uff1aoffset\u662f\u8d77\u59cbToken\u7684index\uff0climit\u662f\u671f\u671b\u8fd4\u56de\u7684Token\u6570\u91cf \u8fd4\u56de\u503c\uff1aToken\u5217\u8868","title":"walletsolidity/getpaginatedassetissuelist"},{"location":"api/http/#walletsoliditygetassetissuebyname","text":"\u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuebyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u3002 \u8fd4\u56de\u503c\uff1atoken\u3002 \u6ce8\u610f\uff1aOdyssey-v3.2\u5f00\u59cb\uff0c\u63a8\u8350\u4f7f\u7528getassetissuebyid\u6216\u8005getassetissuelistbyname\u66ff\u6362\u6b64\u63a5\u53e3\uff0c\u56e0\u4e3a\u4ece3.2\u5f00\u59cb\u5c06\u5141\u8bb8\u901a\u8bc1\u540d\u79f0\u76f8\u540c\u3002\u5982\u679c\u5b58\u5728\u76f8\u540c\u7684\u901a\u8bc1\u540d\u79f0\uff0c\u6b64\u63a5\u53e3\u5c06\u4f1a\u62a5\u9519\u3002","title":"walletsolidity/getassetissuebyname"},{"location":"api/http/#walletsoliditygetassetissuelistbyname","text":"\u4f5c\u7528\uff1a\u6839\u636e\u540d\u79f0\u67e5\u8be2token list\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuelistbyname -d '{\"value\": \"44756354616E\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1\u540d\u79f0\uff0c\u9ed8\u8ba4\u4e3ahexString\u3002 \u8fd4\u56de\u503c\uff1atoken\u5217\u8868\u3002","title":"walletsolidity/getassetissuelistbyname"},{"location":"api/http/#walletsoliditygetassetissuebyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2token\u3002 curl -X POST http://127.0.0.1:8091/walletsolidity/getassetissuebyid -d '{\"value\": \"1000001\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u901a\u8bc1id \u8fd4\u56de\u503c\uff1atoken\u3002","title":"walletsolidity/getassetissuebyid"},{"location":"api/http/#_9","text":"","title":"\u533a\u5757"},{"location":"api/http/#walletsoliditygetnowblock","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0block curl -X POST http://127.0.0.1:8091/walletsolidity/getnowblock \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1asolidityNode\u4e0a\u7684\u6700\u65b0block","title":"walletsolidity/getnowblock"},{"location":"api/http/#walletsoliditygetblockbynum","text":"\u4f5c\u7528\uff1a\u6309\u7167\u9ad8\u5ea6\u67e5\u8be2block curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbynum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u9ad8\u5ea6\u7684block","title":"walletsolidity/getblockbynum"},{"location":"api/http/#walletsoliditygetblockbyid","text":"\u4f5c\u7528\uff1a\u901a\u8fc7ID\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbyid-d '{\"value\": \"0000000000038809c59ee8409a3b6c051e369ef1096603c7ee723c16e2376c73\"}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757ID\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u3002","title":"walletsolidity/getblockbyid"},{"location":"api/http/#walletsoliditygetblockbylimitnext","text":"\u4f5c\u7528\uff1a\u6309\u7167\u8303\u56f4\u67e5\u8be2\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbylimitnext -d '{\"startNum\": 1, \"endNum\": 2}' \u53c2\u6570\u8bf4\u660e\uff1a startNum \uff1a\u8d77\u59cb\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u6b64\u5757 endNum \uff1a\u622a\u6b62\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u6b64\u6b64\u5757 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002","title":"walletsolidity/getblockbylimitnext"},{"location":"api/http/#walletsoliditygetblockbylatestnum","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6700\u65b0\u7684\u51e0\u4e2a\u5757 curl -X POST http://127.0.0.1:8091/walletsolidity/getblockbylatestnum -d '{\"num\": 5}' \u53c2\u6570\u8bf4\u660e\uff1a\u5757\u7684\u6570\u91cf\u3002 \u8fd4\u56de\u503c\uff1a\u5757\u7684\u5217\u8868\u3002","title":"walletsolidity/getblockbylatestnum"},{"location":"api/http/#walletgetnodeinfo_1","text":"\u4f5c\u7528\uff1a\u83b7\u53d6\u5f53\u524dnode\u7684\u4fe1\u606f curl -X GET http://127.0.0.1:8091/wallet/getnodeinfo \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u5f53\u524d\u8282\u70b9\u7684\u4fe1\u606fNodeInfo","title":"wallet/getnodeinfo"},{"location":"api/http/#_10","text":"","title":"\u4ea4\u6613"},{"location":"api/http/#walletsoliditygettransactionbyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactionbyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1a\u6307\u5b9aID\u7684Transaction","title":"walletsolidity/gettransactionbyid"},{"location":"api/http/#walletsoliditygettransactioncountbyblocknum","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioncountbyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1atransaction\u7684\u4e2a\u6570","title":"walletsolidity/gettransactioncountbyblocknum"},{"location":"api/http/#walletsoliditygettransactioninfobyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u7684fee\uff0c\u6240\u5728\u7684block curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioninfobyid -d '{\"value\" : \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2\"}' \u53c2\u6570\u8bf4\u660e\uff1avalue\u662f\u4ea4\u6613id \u8fd4\u56de\u503c\uff1aTransaction\u7684\u4ea4\u6613fee\uff0c\u6240\u5728block\u7684\u9ad8\u5ea6\uff0c\u521b\u5efa\u65f6\u95f4","title":"walletsolidity/gettransactioninfobyid"},{"location":"api/http/#walletsoliditygettransactioninfobyblocknum","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u7279\u5b9ablock\u4e0atransaction\u7684\u4e2a\u6570 curl -X POST http://127.0.0.1:8091/walletsolidity/gettransactioninfobyblocknum -d '{\"num\" : 100}' \u53c2\u6570\u8bf4\u660e\uff1anum\u662f\u5757\u7684\u9ad8\u5ea6 \u8fd4\u56de\u503c\uff1a\u6307\u5b9a\u5757\u4e2d\uff0c\u5305\u542b\u7684transactioninfo\u7684\u5217\u8868","title":"walletsolidity/gettransactioninfobyblocknum"},{"location":"api/http/#_11","text":"","title":"\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240"},{"location":"api/http/#walletsoliditygetexchangebyid","text":"\u4f5c\u7528\uff1a\u6839\u636eid\u67e5\u8be2\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8091/walletsolidity/getexchangebyid -d {\"id\":1} \u53c2\u6570\u8bf4\u660e\uff1a id\uff1a\u4ea4\u6613\u5bf9id \u8fd4\u56de\u503c\uff1a\u4ea4\u6613\u5bf9","title":"walletsolidity/getexchangebyid"},{"location":"api/http/#walletsoliditylistexchanges","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u6240\u6709\u4ea4\u6613\u5bf9 curl -X POST http://127.0.0.1:8091/walletsolidity/listexchanges \u53c2\u6570\u8bf4\u660e\uff1a\u65e0 \u8fd4\u56de\u503c\uff1a\u6240\u6709\u4ea4\u6613\u5bf9","title":"walletsolidity/listexchanges"},{"location":"api/http/#tronz_1","text":"","title":"TRONZ\u533f\u540d\u667a\u80fd\u5408\u7ea6"},{"location":"api/http/#walletsoliditygetmerkletreevoucherinfo","text":"\u4f5c\u7528\uff1a\u83b7\u5f97\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f curl -X POST http://127.0.0.1:8090/walletsolidity/getmerkletreevoucherinfo -d '{ \"out_points\":[{ \"hash\":\"185b3e085723f5862b3a3c3cf54d52f5c1eaf2541e3a1e0ecd08bc12cd958d74\", \"index\":0 }] }' \u53c2\u6570\u8bf4\u660e\uff1a out_points \uff1aNote\u4fe1\u606f \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u7684\u9ed8\u514b\u5c14\u6811\u4fe1\u606f","title":"walletsolidity/getmerkletreevoucherinfo"},{"location":"api/http/#walletsolidityscannotebyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/walletsolidity/scannotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"walletsolidity/scannotebyivk"},{"location":"api/http/#walletsolidityscanandmarknotebyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eivk\u76f8\u5173\u7684\u6240\u6709\u7684notes, \u5305\u542b\u662f\u5426\u82b1\u8d39\u72b6\u6001 curl -X POST http://127.0.0.1:8090/walletsolidity/scanandmarknotebyivk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ivk\": \"80a481c3c739e54b4e0608090b3a1a6e9f8dce42346e95bf5a2d8a487bf45c05\", \"ak\": \"1d4f9b5551f4aa9443ceb263f0e208eb7e26080264571c5ef06de97a646fe418\", \"nk\": \"748522c7571a9da787e43940c9a474aa0c5c39b46c338905deb6726fa3678bdb\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"walletsolidity/scanandmarknotebyivk"},{"location":"api/http/#walletsolidityscannotebyovk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e0eovk\u76f8\u5173\u7684\u6240\u6709\u7684notes curl -X POST http://127.0.0.1:8090/walletsolidity/scannotebyovk -d '{ \"start_block_index\": 0, \"end_block_index\": 100, \"ovk\": \"705145aa18cbe6c11d5d0011419a98f3d5b1d341eb4727f1315597f4bdaf8539\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"walletsolidity/scannotebyovk"},{"location":"api/http/#walletsolidityisspend","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8090/walletsolidity/isspend -d '{ \"ak\": \"a3e65d509b675aaa2aeda977ceff11eebd76218079b6f543d78a615e396ca129\", \"nk\": \"62cfda9bea09a53cf2a21022057913734a8458969e11e0bb9c59ead48fbce83e\", \"note\": { \"payment_address\": \"ztron1aqgauawtkelxfu2w6s48cwh0mchjt6kwpj44l4wym3pullx0294j4r4v7kpm75wnclzycsw73mq\", \"rcm\": \"74a16c1b27ec7fbf06881d9d35ddaab1554838b1bddcd54f6bd8a9fb4ba0b80a\", \"value\": 500000000 }, \"txid\": \"7d09e471bb047d3ac044d5d6691b3721a2dddbb683ac02c207fbe78af6302463\", \"index\": 1 }' \u53c2\u6570\u8bf4\u660e\uff1a ak \uff1aAk nk \uff1aNk note \uff1aNote\u4fe1\u606f txid \uff1a\u4ea4\u6613id index \uff1aNote\u7d22\u5f15 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001","title":"walletsolidity/isspend"},{"location":"api/http/#walletsolidityscanshieldedtrc20notesbyivk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eivk\u76f8\u5173\u7684\u6240\u6709notes, \u5e76\u6807\u8bb0\u5176\u662f\u5426\u5df2\u82b1\u8d39 curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyivk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ivk\": \"9f8e74bb3d7188a2781dc1db38810c6914eef4570a79e8ec8404480948e4e305\", \"ak\":\"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\":\"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ivk \uff1aIncoming viewing key ak \uff1aAk key nk \uff1aNk key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"walletsolidity/scanshieldedtrc20notesbyivk"},{"location":"api/http/#walletsolidityscanshieldedtrc20notesbyovk","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u4e2d\u4e0eovk\u76f8\u5173\u7684\u6240\u6709notes curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyovk -d '{ \"start_block_index\": 9200, \"end_block_index\": 9240, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\", \"ovk\": \"0ff58efd75e083fe4fd759c8701e1c8cb6961c4297a12b2c800bdb7b2bcab889\" }' \u53c2\u6570\u8bf4\u660e\uff1a start_block_index \uff1a\u5f00\u59cb\u533a\u5757\u9ad8\u5ea6\uff0c\u5305\u542b\u81ea\u8eab end_block_index \uff1a\u7ed3\u675f\u533a\u5757\u9ad8\u5ea6\uff0c\u4e0d\u5305\u542b\u81ea\u8eab shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 ovk \uff1aOutgoing viewing key \u8fd4\u56de\u503c\uff1aNotes\u5217\u8868 \u6ce8\u610f\uff1a\u533a\u95f4\u9650\u5236\uff08end_block_index - start_block_index <= 1000\uff09","title":"walletsolidity/scanshieldedtrc20notesbyovk"},{"location":"api/http/#walletsolidityisshieldedtrc20contractnotespent","text":"\u4f5c\u7528\uff1a\u67e5\u8be2\u533f\u540dTRC20\u5408\u7ea6\u7684note\u662f\u5426\u5df2\u88ab\u82b1\u8d39 curl -X POST http://127.0.0.1:8091/walletsolidity/scanshieldedtrc20notesbyovk -d '{ \"note\": { \"value\": 40, \"payment_address\":\"ztron1768kf7dy4qquefp46szk978d65eeua66yhr4zv260c0uzj68t3tfjl3en9lhyyfxalv4jus30xs\", \"rcm\": \"296070782a94c6936b0b4f6daf8d7c7605a4374fe595b96148dc0f4b59015d0d\" }, \"ak\": \"8072d9110c9de9d9ade33d5d0f5890a7aa65b0cde42af7816d187297caf2fd64\", \"nk\": \"590bf33f93f792be659fd404df91e75c3b08d38d4e08ee226c3f5219cf598f14\", \"position\": 272, \"shielded_TRC20_contract_address\": \"41274fc7464fadac5c00c893c58bce6c39bf59e4c7\" }' \u53c2\u6570\u8bf4\u660e\uff1a note \uff1aNote\u4fe1\u606f ak \uff1aAk nk \uff1aNk position \uff1anote\u627f\u8bfa\u5728\u533f\u540d\u5408\u7ea6Merkle\u6811\u53f6\u5b50\u8282\u70b9\u7684\u4f4d\u7f6e\u7d22\u5f15 shielded_TRC20_contract_address : \u533f\u540dTRC20\u5408\u7ea6\u5730\u5740 \u8fd4\u56de\u503c\uff1a\u4e00\u4e2anote\u662f\u5426\u5df2\u7ecf\u88ab\u82b1\u8d39\u72b6\u6001 \u6ce8\u610f: Note \u4e2d value \u662f\u7531 scalingFactor \u7f29\u653e\u540e\u7684\u503c\uff0c scalingFactor \u5728\u533f\u540dTRC-20\u5408\u7ea6\u4e2d\u8bbe\u7f6e\uff0c\u5b9e\u9645\u91d1\u989d real_amount = value * scalingFactor \u3002","title":"walletsolidity/isshieldedtrc20contractnotespent"},{"location":"api/rpc/","text":"RPC List \u00b6 For the specific definition of API, please refer to the following link: api/api.proto core/Contract.proto . Note SolidityNode is deprecated. Now a FullNode supports all RPCs of a SolidityNode. New developers should deploy FullNode only. 1. Get account information rpc GetAccount ( Account ) returns ( Account ) {} Nodes: Fullnode and SolidityNode 2. TRX transfer rpc CreateTransaction ( TransferContract ) returns ( Transaction ) {} Nodes: Fullnode 3. Broadcast transaction rpc BroadcastTransaction ( Transaction ) returns ( Return ) {} Nodes: Fullnode Description: Transfer, vote, issuance of token, or participation in token offering. Sending signed transaction information to node, and broadcasting it to the entire network after witness verification. 4. Create an account rpc CreateAccount ( AccountCreateContract ) returns ( Transaction ) {} Nodes: FullNode 5. Account name update rpc UpdateAccount ( AccountUpdateContract ) returns ( Transaction ) {} Nodes: Fullnode 6. Vote for super representative candidates rpc VoteWitnessAccount ( VoteWitnessContract ) returns ( Transaction ) {} Nodes: FullNode 7. Query the ratio of brokerage of the witness rpc GetBrokerageInfo ( BytesMessage ) returns ( NumberMessage ) {} Nodes: FullNode 8. Query unclaimed reward rpc GetRewardInfo ( BytesMessage ) returns ( NumberMessage ) {} Nodes: FullNode 9. Update the ratio of brokerage rpc UpdateBrokerage ( UpdateBrokerageContract ) returns ( TransactionExtention ) {} Nodes: FullNode 10. Issue a token rpc CreateAssetIssue ( AssetIssueContract ) returns ( Transaction ) {} Nodes: FullNode 11. Query of list of super representative candidates rpc ListWitnesses ( EmptyMessage ) returns ( WitnessList ) {} Nodes: FullNode and SolidityNode 12. Application for super representative rpc CreateWitness ( WitnessCreateContract ) returns ( Transaction ) {} Nodes: FullNode Description: To apply to become TRON\u2019s Super Representative candidate. 13. Information update of Super Representative candidates rpc UpdateWitness ( WitnessUpdateContract ) returns ( Transaction ) {} Nodes: FullNode Description: Update the website url of the SR. 14. Token transfer rpc TransferAsset ( TransferAssetContract ) returns ( Transaction ){} Node: FullNode 15. Participate a token rpc ParticipateAssetIssue ( ParticipateAssetIssueContract ) returns ( Transaction ) {} Nodes: FullNode 16. Query the list of nodes connected to the ip of the api rpc ListNodes ( EmptyMessage ) returns ( NodeList ) {} Nodes: FullNode and SolidityNode 17. Query the list of all issued tokens rpc GetAssetIssueList ( EmptyMessage ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 18. Query the token issued by a given account rpc GetAssetIssueByAccount ( Account ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 19. Query the token information by token name rpc GetAssetIssueByName ( BytesMessage ) returns ( AssetIssueContract ) {} Nodes: FullNode and Soliditynode 20. Query the list of tokens by timestamp rpc GetAssetIssueListByTimestamp ( NumberMessage ) returns ( AssetIssueList ){} Nodes: SolidityNode 21. Get current block information rpc GetNowBlock ( EmptyMessage ) returns ( Block ) {} Nodes: FullNode and SolidityNode 22. Get a block by block height rpc GetBlockByNum ( NumberMessage ) returns ( Block ) {} Nodes: FullNode and SolidityNode 23. Get the total number of transactions rpc TotalTransaction ( EmptyMessage ) returns ( NumberMessage ) {} Nodes: FullNode and SolidityNode 24. Query the transaction by transaction id rpc getTransactionById ( BytesMessage ) returns ( Transaction ) {} Nodes: SolidityNode 25. Query the transaction by timestamp rpc getTransactionsByTimestamp ( TimeMessage ) returns ( TransactionList ) {} Nodes: SolidityNode 26. Query the transactions initiated by an account rpc getTransactionsFromThis ( Account ) returns ( TransactionList ) {} Nodes: SolidityNode 27. Query the transactions received by an account rpc getTransactionsToThis ( Account ) returns ( NumberMessage ) {} Nodes: SolidityNode 28. Freeze TRX \u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\u3002 rpc FreezeBalance ( FreezeBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 29. Unfreeze TRX rpc UnfreezeBalance ( UnfreezeBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 30. Block producing reward redemption rpc WithdrawBalance ( WithdrawBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 31. Unfreeze token balance rpc UnfreezeAsset ( UnfreezeAssetContract ) returns ( Transaction ) {} Nodes: FullNode 32. Query the next maintenance time rpc GetNextMaintenanceTime ( EmptyMessage ) returns ( NumberMessage ) {} Nodes: FullNode 33. Query the transaction fee & block information rpc GetTransactionInfoById ( BytesMessage ) returns ( TransactionInfo ) {} Nodes: SolidityNode 34. Query block information by block id rpc GetBlockById ( BytesMessage ) returns ( Block ) {} Nodes: FullNode 35. Update token information rpc UpdateAsset ( UpdateAssetContract ) returns ( Transaction ) {} Nodes: Fullnode Description: Token update can only be initiated by the token issuer to update token description, url, maximum bandwidth consumption by each account and total bandwidth consumption. 36. Query the list of all the tokens by pagination rpc GetPaginatedAssetIssueList ( PaginatedMessage ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 37. Deploy a smart contract rpc DeployContract ( CreateSmartContract ) returns ( TransactionExtention ) {} Nodes: FullNode and SolidityNode 38. Trigger a smart contract rpc TriggerContract ( TriggerSmartContract ) returns ( TransactionExtention ) {} Nodes: FullNode 39. Create a shielded transaction rpc CreateShieldedTransaction ( PrivateParameters ) returns ( TransactionExtention ) {} Nodes: FullNode 40. Get a Merkle tree information of a note rpc GetMerkleTreeVoucherInfo ( OutputPointInfo ) returns ( IncrementalMerkleVoucherInfo ) {} Nodes: FullNode 41. Scan note by ivk rpc ScanNoteByIvk ( IvkDecryptParameters ) returns ( DecryptNotes ) {} Nodes: FullNode 42. Scan note by ovk rpc ScanNoteByOvk ( OvkDecryptParameters ) returns ( DecryptNotes ) {} Nodes: FullNode 43. Get spending key rpc GetSpendingKey ( EmptyMessage ) returns ( BytesMessage ) {} Nodes: FullNode 44. Get expanded spending key rpc GetExpandedSpendingKey ( BytesMessage ) returns ( ExpandedSpendingKeyMessage ) {} Nodes: FullNode 45. Get ak from ask rpc GetAkFromAsk ( BytesMessage ) returns ( BytesMessage ) {} Nodes: FullNode 46. Get nk from nsk rpc GetNkFromNsk ( BytesMessage ) returns ( BytesMessage ) {} Nodes: FullNode 47. Get incoming viewing key rpc GetIncomingViewingKey ( ViewingKeyMessage ) returns ( IncomingViewingKeyMessage ) {} Nodes: FullNode 48. Get diversifier rpc GetDiversifier ( EmptyMessage ) returns ( DiversifierMessage ) {} Nodes: FullNode 49. Get zen payment address rpc GetZenPaymentAddress ( IncomingViewingKeyDiversifierMessage ) returns ( PaymentAddressMessage ) {} Nodes: FullNode 50. Get rcm rpc GetRcm ( EmptyMessage ) returns ( BytesMessage ) {} Nodes: FullNode 51. Get a note status of is spent or not rpc IsSpend ( NoteParameters ) returns ( SpendResult ) {} Nodes: FullNode 52. Create a shielded transaction without using ask rpc CreateShieldedTransactionWithoutSpendAuthSig ( PrivateParametersWithoutAsk ) returns ( TransactionExtention ) {} Nodes: FullNode 53. Create a shielded transaction hash rpc GetShieldTransactionHash ( Transaction ) returns ( BytesMessage ) {} Nodes: FullNode 54. Create a signature for a shielded transaction rpc CreateSpendAuthSig ( SpendAuthSigParameters ) returns ( BytesMessage ) {} Nodes: FullNode 55. Create a shield nullifier rpc CreateShieldNullifier ( NfParameters ) returns ( BytesMessage ) {} Nodes: FullNode 56. Get new shielded address rpc GetNewShieldedAddress ( EmptyMessage ) returns ( ShieldedAddressInfo ){} Nodes: FullNode 57. Create shielded contract parameters rpc CreateShieldedContractParameters ( PrivateShieldedTRC20Parameters ) returns ( ShieldedTRC20Parameters ) {} Nodes: FullNode 58. Create shielded contract parameters without ask rpc CreateShieldedContractParametersWithoutAsk ( PrivateShieldedTRC20ParametersWithoutAsk ) returns ( ShieldedTRC20Parameters ) {} Nodes: FullNode 59. Scan shielded TRC20 notes by ivk rpc ScanShieldedTRC20NotesbyIvk ( IvkDecryptTRC20Parameters ) returns ( DecryptNotesTRC20 ) {} Nodes: FullNode, SolidityNode 60. Scan shielded TRC20 notes by ovk rpc ScanShieldedTRC20NotesbyOvk ( OvkDecryptTRC20Parameters ) returns ( DecryptNotesTRC20 ) {} Nodes: FullNode, SolidityNode 61. Get the status of shielded TRC20 note of spent or not rpc IsShieldedTRC20ContractNoteSpent ( NfTRC20Parameters ) returns ( NullifierResult ) {} Nodes: FullNode, SolidityNode 62. Get the trigger input for the shielded TRC20 rpc GetTriggerInputForShieldedTRC20Contract ( ShieldedTRC20TriggerContractParameters ) returns ( BytesMessage ) {} Nodes: FullNode 63. Create an market order rpc MarketSellAsset (MarketSellAssetContract) returns (TransactionExtention) {}; Nodes: FullNode 64. Cancel the order rpc MarketCancelOrder (MarketCancelOrderContract) returns (TransactionExtention) {}; Nodes: FullNode 65. Get all orders for the account rpc GetMarketOrderByAccount (BytesMessage) returns (MarketOrderList) {}; Nodes: FullNode 66. Get all trading pairs rpc GetMarketPairList (EmptyMessage) returns (MarketOrderPairList) {}; Nodes: FullNode 67. Get all orders for the trading pair rpc GetMarketOrderListByPair (MarketOrderPair) returns (MarketOrderList) {}; Nodes: FullNode 68. Get all prices for the trading pair rpc GetMarketPriceByPair (MarketOrderPair) returns (MarketPriceList) {}; Nodes: FullNode 69. Get order by id rpc GetMarketOrderById (BytesMessage) returns (MarketOrder) {}; Nodes: FullNode 70. perform a historical balance lookup rpc GetAccountBalance (AccountBalanceRequest) returns (AccountBalanceResponse){}; Nodes: FullNode 71. fetch all balance-changing transactions in a block rpc GetBlockBalanceTrace (BlockBalanceTrace.BlockIdentifier) returns (BlockBalanceTrace) {}; Nodes: FullNode 72. get the burn trx amount rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) {}; Nodes: FullNode and SolidityNode 73. Freeze TRX rpc FreezeBalanceV2 ( FreezeBalanceV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 74. UnFreeze TRX rpc UnfreezeBalanceV2 ( UnfreezeBalanceV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 75. Withdraw Staked TRX rpc WithdrawExpireUnfreeze ( WithdrawExpireUnfreezeContract ) returns ( TransactionExtention ) {} Nodes: FullNode 76. Delegate Resource rpc DelegateResource ( DelegateResourceContract ) returns ( TransactionExtention ) {} Nodes: FullNode 77. UnDelegate Resource rpc UnDelegateResource ( UnDelegateResourceContract ) returns ( TransactionExtention ) {} Nodes: FullNode 78. Query transaction information in the pending pool rpc GetTransactionFromPending (BytesMessage) returns (Transaction) {}; Nodes: FullNode 79. Query the pending pool transaction id list rpc GetTransactionListFromPending (EmptyMessage) returns (TransactionIdList) {}; Nodes: FullNode 80. Query the size of the pending pool rpc GetPendingSize (EmptyMessage) returns (NumberMessage) {}; Nodes: FullNode 81. Cancel UnFreeze rpc CancelAllUnfreezeV2 ( CancelAllUnfreezeV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 82. Get bandwidth unit price rpc GetBandwidthPrices ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNode 83. Get energy unit price rpc GetEnergyPrices ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNode 84. Get transaction memo fee rpc GetMemoFee ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNodes","title":"gRPC \u63a5\u53e3"},{"location":"api/rpc/#rpc-list","text":"For the specific definition of API, please refer to the following link: api/api.proto core/Contract.proto . Note SolidityNode is deprecated. Now a FullNode supports all RPCs of a SolidityNode. New developers should deploy FullNode only. 1. Get account information rpc GetAccount ( Account ) returns ( Account ) {} Nodes: Fullnode and SolidityNode 2. TRX transfer rpc CreateTransaction ( TransferContract ) returns ( Transaction ) {} Nodes: Fullnode 3. Broadcast transaction rpc BroadcastTransaction ( Transaction ) returns ( Return ) {} Nodes: Fullnode Description: Transfer, vote, issuance of token, or participation in token offering. Sending signed transaction information to node, and broadcasting it to the entire network after witness verification. 4. Create an account rpc CreateAccount ( AccountCreateContract ) returns ( Transaction ) {} Nodes: FullNode 5. Account name update rpc UpdateAccount ( AccountUpdateContract ) returns ( Transaction ) {} Nodes: Fullnode 6. Vote for super representative candidates rpc VoteWitnessAccount ( VoteWitnessContract ) returns ( Transaction ) {} Nodes: FullNode 7. Query the ratio of brokerage of the witness rpc GetBrokerageInfo ( BytesMessage ) returns ( NumberMessage ) {} Nodes: FullNode 8. Query unclaimed reward rpc GetRewardInfo ( BytesMessage ) returns ( NumberMessage ) {} Nodes: FullNode 9. Update the ratio of brokerage rpc UpdateBrokerage ( UpdateBrokerageContract ) returns ( TransactionExtention ) {} Nodes: FullNode 10. Issue a token rpc CreateAssetIssue ( AssetIssueContract ) returns ( Transaction ) {} Nodes: FullNode 11. Query of list of super representative candidates rpc ListWitnesses ( EmptyMessage ) returns ( WitnessList ) {} Nodes: FullNode and SolidityNode 12. Application for super representative rpc CreateWitness ( WitnessCreateContract ) returns ( Transaction ) {} Nodes: FullNode Description: To apply to become TRON\u2019s Super Representative candidate. 13. Information update of Super Representative candidates rpc UpdateWitness ( WitnessUpdateContract ) returns ( Transaction ) {} Nodes: FullNode Description: Update the website url of the SR. 14. Token transfer rpc TransferAsset ( TransferAssetContract ) returns ( Transaction ){} Node: FullNode 15. Participate a token rpc ParticipateAssetIssue ( ParticipateAssetIssueContract ) returns ( Transaction ) {} Nodes: FullNode 16. Query the list of nodes connected to the ip of the api rpc ListNodes ( EmptyMessage ) returns ( NodeList ) {} Nodes: FullNode and SolidityNode 17. Query the list of all issued tokens rpc GetAssetIssueList ( EmptyMessage ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 18. Query the token issued by a given account rpc GetAssetIssueByAccount ( Account ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 19. Query the token information by token name rpc GetAssetIssueByName ( BytesMessage ) returns ( AssetIssueContract ) {} Nodes: FullNode and Soliditynode 20. Query the list of tokens by timestamp rpc GetAssetIssueListByTimestamp ( NumberMessage ) returns ( AssetIssueList ){} Nodes: SolidityNode 21. Get current block information rpc GetNowBlock ( EmptyMessage ) returns ( Block ) {} Nodes: FullNode and SolidityNode 22. Get a block by block height rpc GetBlockByNum ( NumberMessage ) returns ( Block ) {} Nodes: FullNode and SolidityNode 23. Get the total number of transactions rpc TotalTransaction ( EmptyMessage ) returns ( NumberMessage ) {} Nodes: FullNode and SolidityNode 24. Query the transaction by transaction id rpc getTransactionById ( BytesMessage ) returns ( Transaction ) {} Nodes: SolidityNode 25. Query the transaction by timestamp rpc getTransactionsByTimestamp ( TimeMessage ) returns ( TransactionList ) {} Nodes: SolidityNode 26. Query the transactions initiated by an account rpc getTransactionsFromThis ( Account ) returns ( TransactionList ) {} Nodes: SolidityNode 27. Query the transactions received by an account rpc getTransactionsToThis ( Account ) returns ( NumberMessage ) {} Nodes: SolidityNode 28. Freeze TRX \u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\u3002 rpc FreezeBalance ( FreezeBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 29. Unfreeze TRX rpc UnfreezeBalance ( UnfreezeBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 30. Block producing reward redemption rpc WithdrawBalance ( WithdrawBalanceContract ) returns ( Transaction ) {} Nodes: FullNode 31. Unfreeze token balance rpc UnfreezeAsset ( UnfreezeAssetContract ) returns ( Transaction ) {} Nodes: FullNode 32. Query the next maintenance time rpc GetNextMaintenanceTime ( EmptyMessage ) returns ( NumberMessage ) {} Nodes: FullNode 33. Query the transaction fee & block information rpc GetTransactionInfoById ( BytesMessage ) returns ( TransactionInfo ) {} Nodes: SolidityNode 34. Query block information by block id rpc GetBlockById ( BytesMessage ) returns ( Block ) {} Nodes: FullNode 35. Update token information rpc UpdateAsset ( UpdateAssetContract ) returns ( Transaction ) {} Nodes: Fullnode Description: Token update can only be initiated by the token issuer to update token description, url, maximum bandwidth consumption by each account and total bandwidth consumption. 36. Query the list of all the tokens by pagination rpc GetPaginatedAssetIssueList ( PaginatedMessage ) returns ( AssetIssueList ) {} Nodes: FullNode and SolidityNode 37. Deploy a smart contract rpc DeployContract ( CreateSmartContract ) returns ( TransactionExtention ) {} Nodes: FullNode and SolidityNode 38. Trigger a smart contract rpc TriggerContract ( TriggerSmartContract ) returns ( TransactionExtention ) {} Nodes: FullNode 39. Create a shielded transaction rpc CreateShieldedTransaction ( PrivateParameters ) returns ( TransactionExtention ) {} Nodes: FullNode 40. Get a Merkle tree information of a note rpc GetMerkleTreeVoucherInfo ( OutputPointInfo ) returns ( IncrementalMerkleVoucherInfo ) {} Nodes: FullNode 41. Scan note by ivk rpc ScanNoteByIvk ( IvkDecryptParameters ) returns ( DecryptNotes ) {} Nodes: FullNode 42. Scan note by ovk rpc ScanNoteByOvk ( OvkDecryptParameters ) returns ( DecryptNotes ) {} Nodes: FullNode 43. Get spending key rpc GetSpendingKey ( EmptyMessage ) returns ( BytesMessage ) {} Nodes: FullNode 44. Get expanded spending key rpc GetExpandedSpendingKey ( BytesMessage ) returns ( ExpandedSpendingKeyMessage ) {} Nodes: FullNode 45. Get ak from ask rpc GetAkFromAsk ( BytesMessage ) returns ( BytesMessage ) {} Nodes: FullNode 46. Get nk from nsk rpc GetNkFromNsk ( BytesMessage ) returns ( BytesMessage ) {} Nodes: FullNode 47. Get incoming viewing key rpc GetIncomingViewingKey ( ViewingKeyMessage ) returns ( IncomingViewingKeyMessage ) {} Nodes: FullNode 48. Get diversifier rpc GetDiversifier ( EmptyMessage ) returns ( DiversifierMessage ) {} Nodes: FullNode 49. Get zen payment address rpc GetZenPaymentAddress ( IncomingViewingKeyDiversifierMessage ) returns ( PaymentAddressMessage ) {} Nodes: FullNode 50. Get rcm rpc GetRcm ( EmptyMessage ) returns ( BytesMessage ) {} Nodes: FullNode 51. Get a note status of is spent or not rpc IsSpend ( NoteParameters ) returns ( SpendResult ) {} Nodes: FullNode 52. Create a shielded transaction without using ask rpc CreateShieldedTransactionWithoutSpendAuthSig ( PrivateParametersWithoutAsk ) returns ( TransactionExtention ) {} Nodes: FullNode 53. Create a shielded transaction hash rpc GetShieldTransactionHash ( Transaction ) returns ( BytesMessage ) {} Nodes: FullNode 54. Create a signature for a shielded transaction rpc CreateSpendAuthSig ( SpendAuthSigParameters ) returns ( BytesMessage ) {} Nodes: FullNode 55. Create a shield nullifier rpc CreateShieldNullifier ( NfParameters ) returns ( BytesMessage ) {} Nodes: FullNode 56. Get new shielded address rpc GetNewShieldedAddress ( EmptyMessage ) returns ( ShieldedAddressInfo ){} Nodes: FullNode 57. Create shielded contract parameters rpc CreateShieldedContractParameters ( PrivateShieldedTRC20Parameters ) returns ( ShieldedTRC20Parameters ) {} Nodes: FullNode 58. Create shielded contract parameters without ask rpc CreateShieldedContractParametersWithoutAsk ( PrivateShieldedTRC20ParametersWithoutAsk ) returns ( ShieldedTRC20Parameters ) {} Nodes: FullNode 59. Scan shielded TRC20 notes by ivk rpc ScanShieldedTRC20NotesbyIvk ( IvkDecryptTRC20Parameters ) returns ( DecryptNotesTRC20 ) {} Nodes: FullNode, SolidityNode 60. Scan shielded TRC20 notes by ovk rpc ScanShieldedTRC20NotesbyOvk ( OvkDecryptTRC20Parameters ) returns ( DecryptNotesTRC20 ) {} Nodes: FullNode, SolidityNode 61. Get the status of shielded TRC20 note of spent or not rpc IsShieldedTRC20ContractNoteSpent ( NfTRC20Parameters ) returns ( NullifierResult ) {} Nodes: FullNode, SolidityNode 62. Get the trigger input for the shielded TRC20 rpc GetTriggerInputForShieldedTRC20Contract ( ShieldedTRC20TriggerContractParameters ) returns ( BytesMessage ) {} Nodes: FullNode 63. Create an market order rpc MarketSellAsset (MarketSellAssetContract) returns (TransactionExtention) {}; Nodes: FullNode 64. Cancel the order rpc MarketCancelOrder (MarketCancelOrderContract) returns (TransactionExtention) {}; Nodes: FullNode 65. Get all orders for the account rpc GetMarketOrderByAccount (BytesMessage) returns (MarketOrderList) {}; Nodes: FullNode 66. Get all trading pairs rpc GetMarketPairList (EmptyMessage) returns (MarketOrderPairList) {}; Nodes: FullNode 67. Get all orders for the trading pair rpc GetMarketOrderListByPair (MarketOrderPair) returns (MarketOrderList) {}; Nodes: FullNode 68. Get all prices for the trading pair rpc GetMarketPriceByPair (MarketOrderPair) returns (MarketPriceList) {}; Nodes: FullNode 69. Get order by id rpc GetMarketOrderById (BytesMessage) returns (MarketOrder) {}; Nodes: FullNode 70. perform a historical balance lookup rpc GetAccountBalance (AccountBalanceRequest) returns (AccountBalanceResponse){}; Nodes: FullNode 71. fetch all balance-changing transactions in a block rpc GetBlockBalanceTrace (BlockBalanceTrace.BlockIdentifier) returns (BlockBalanceTrace) {}; Nodes: FullNode 72. get the burn trx amount rpc GetBurnTrx (EmptyMessage) returns (NumberMessage) {}; Nodes: FullNode and SolidityNode 73. Freeze TRX rpc FreezeBalanceV2 ( FreezeBalanceV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 74. UnFreeze TRX rpc UnfreezeBalanceV2 ( UnfreezeBalanceV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 75. Withdraw Staked TRX rpc WithdrawExpireUnfreeze ( WithdrawExpireUnfreezeContract ) returns ( TransactionExtention ) {} Nodes: FullNode 76. Delegate Resource rpc DelegateResource ( DelegateResourceContract ) returns ( TransactionExtention ) {} Nodes: FullNode 77. UnDelegate Resource rpc UnDelegateResource ( UnDelegateResourceContract ) returns ( TransactionExtention ) {} Nodes: FullNode 78. Query transaction information in the pending pool rpc GetTransactionFromPending (BytesMessage) returns (Transaction) {}; Nodes: FullNode 79. Query the pending pool transaction id list rpc GetTransactionListFromPending (EmptyMessage) returns (TransactionIdList) {}; Nodes: FullNode 80. Query the size of the pending pool rpc GetPendingSize (EmptyMessage) returns (NumberMessage) {}; Nodes: FullNode 81. Cancel UnFreeze rpc CancelAllUnfreezeV2 ( CancelAllUnfreezeV2Contract ) returns ( TransactionExtention ) {} Nodes: FullNode 82. Get bandwidth unit price rpc GetBandwidthPrices ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNode 83. Get energy unit price rpc GetEnergyPrices ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNode 84. Get transaction memo fee rpc GetMemoFee ( EmptyMessage ) returns ( PricesResponseMessage ) {} Nodes: FullNodes","title":"RPC List"},{"location":"architecture/database/","text":"\u6570\u636e\u5e93\u914d\u7f6e \u00b6 Java-tron\u6570\u636e\u5b58\u50a8\u652f\u6301\u4f7f\u7528 LevelDB \u6216\u8005 RocksDB\uff0c\u9ed8\u8ba4\u4f7f\u7528LevelDB\u3002\u60a8\u4e5f\u53ef\u4ee5\u9009\u62e9RocksDB\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u914d\u7f6e\u53c2\u6570\uff0c\u5141\u8bb8\u8282\u70b9\u6839\u636e\u81ea\u8eab\u673a\u5668\u914d\u7f6e\u60c5\u51b5\u8fdb\u884c\u8c03\u4f18\uff0c\u8282\u70b9\u6570\u636e\u5e93\u5360\u7528\u7684\u78c1\u76d8\u7a7a\u95f4\u76f8\u6bd4\u4e8eLevelDB\u66f4\u5c11\uff0c\u540c\u65f6RocksDB\u652f\u6301\u5728\u8fd0\u884c\u65f6\u8fdb\u884c\u6570\u636e\u5907\u4efd\uff0c\u5907\u4efd\u65f6\u95f4\u4ec5\u9700\u8981\u51e0\u79d2\u949f\u3002 \u4e0b\u9762\u4ecb\u7ecd\u5982\u4f55\u5c06Java-tron\u8282\u70b9\u7684\u5b58\u50a8\u5f15\u64ce\u8bbe\u7f6e\u6210RocksDB\uff0c\u4ee5\u53ca\u5982\u4f55\u8fdb\u884cleveldb\u548crocksdb\u7684\u6570\u636e\u8f6c\u6362\u3002 rocksdb \u00b6 1. config\u914d\u7f6e\u8bf4\u660e \u00b6 \u4f7f\u7528rocksdb\u4f5c\u4e3a\u6570\u636e\u5b58\u50a8\u5f15\u64ce\uff0c\u9700\u8981\u5c06db.engine\u914d\u7f6e\u9879\u8bbe\u7f6e\u4e3a\"ROCKSDB\" \u6ce8\u610f: rocksdb\u53ea\u652f\u6301db.version=2, \u4e0d\u652f\u6301db.version=1\u3002 rocksdb\u652f\u6301\u7684\u4f18\u5316\u53c2\u6570\u5982\u4e0b\uff1a 2. \u4f7f\u7528rocksdb\u6570\u636e\u5907\u4efd\u529f\u80fd \u00b6 \u9009\u62e9rocksdb\u4f5c\u4e3a\u6570\u636e\u5b58\u50a8\u5f15\u64ce\uff0c\u53ef\u4ee5\u4f7f\u7528\u5176\u63d0\u4f9b\u7684\u8fd0\u884c\u65f6\u6570\u636e\u5907\u4efd\u529f\u80fd\u3002 \u6ce8\u610f: FullNode\u53ef\u4ee5\u4f7f\u7528\u6570\u636e\u5907\u4efd\u529f\u80fd\uff1b\u4e3a\u4e86\u4e0d\u5f71\u54cdSuperNode\u7684\u4ea7\u5757\u6027\u80fd\uff0c\u6570\u636e\u5907\u4efd\u529f\u80fd\u4e0d\u652f\u6301SuperNode\uff0c\u4f46\u662fSuperNode\u7684\u5907\u4efd\u670d\u52a1\u8282\u70b9\u53ef\u4ee5\u4f7f\u7528\u6b64\u529f\u80fd\u3002 3. leveldb\u6570\u636e\u8f6c\u6362\u4e3arocksdb\u6570\u636e \u00b6 leveldb\u548crocksdb\u7684\u6570\u636e\u5b58\u50a8\u67b6\u6784\u5e76\u4e0d\u517c\u5bb9\uff0c\u8bf7\u786e\u4fdd\u8282\u70b9\u59cb\u7ec8\u4f7f\u7528\u540c\u4e00\u79cd\u6570\u636e\u5f15\u64ce\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u6570\u636e\u8f6c\u6362\u811a\u672c\uff0c\u7528\u4e8e\u5c06leveldb\u6570\u636e\u8f6c\u6362\u5230rocksdb\u6570\u636e\u3002 \u4f7f\u7528\u65b9\u6cd5\uff1a cd \u6e90\u4ee3\u7801\u6839\u76ee\u5f55 ./gradlew build #\u7f16\u8bd1\u6e90\u4ee3\u7801 java -jar build/libs/DBConvert.jar #\u6267\u884c\u6570\u636e\u8f6c\u6362\u6307\u4ee4 \u6ce8\u610f\uff1a\u5982\u679c\u8282\u70b9\u7684\u6570\u636e\u5b58\u50a8\u76ee\u5f55\u662f\u81ea\u5b9a\u4e49\u7684\uff0c\u8fd0\u884cDBConvert.jar\u65f6\u6dfb\u52a0\u4e0b\u97622\u4e2a\u53ef\u9009\u53c2\u6570\u3002 src_db_path :\u6307\u5b9aLevelDB\u6570\u636e\u5e93\u8def\u5f84\u6e90\uff0c\u9ed8\u8ba4\u662f output-directory/database dst_db_path :\u6307\u5b9aRocksDB\u6570\u636e\u5e93\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f output-directory-dst/database \u4f8b\u5982\uff0c\u5982\u679c\u8282\u70b9\u662f\u50cf\u8fd9\u6837\u7684\u811a\u672c\u8fd0\u884c\u7684: nohup java -jar FullNode.jar -d your_database_dir & \u90a3\u4e48\uff0c\u4f60\u5e94\u8be5\u8fd9\u6837\u8fd0\u884c\u6570\u636e\u8f6c\u6362\u5de5\u5177DBConvert.jar: java -jar build/libs/DBConvert.jar your_database_dir/database output-directory-dst/database \u6ce8\u610f\uff1a\u5fc5\u987b\u505c\u6b62\u8282\u70b9\u7684\u8fd0\u884c\uff0c\u7136\u540e\u518d\u8fd0\u884c\u6570\u636e\u8f6c\u6362\u811a\u672c\u3002 \u5982\u679c\u4e0d\u5e0c\u671b\u8282\u70b9\u505c\u6b62\u65f6\u95f4\u592a\u957f\uff0c\u53ef\u4ee5\u5728\u8282\u70b9\u505c\u6b62\u540e\u5148\u5c06leveldb\u6570\u636e\u76ee\u5f55output-directory\u62f7\u8d1d\u4e00\u4efd\u5230\u65b0\u7684\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u6062\u590d\u8282\u70b9\u7684\u8fd0\u884c\u3002 \u5728\u65b0\u76ee\u5f55\u7684\u4e0a\u7ea7\u76ee\u5f55\u4e2d\u6267\u884cDBConvert.jar\u5e76\u6307\u5b9a\u53c2\u6570 src_db_path \u548c dst_db_path \u3002 \u4f8b\u5982: cp -rf output-directory /tmp/output-directory cd /tmp java -jar DBConvert.jar output-directory/database output-directory-dst/database \u6574\u4e2a\u7684\u6570\u636e\u8f6c\u6362\u8fc7\u7a0b\u53ef\u80fd\u9700\u898110\u4e2a\u5c0f\u65f6\u5de6\u53f3\u3002 4. rocksdb\u4e0eleveldb\u7684\u5bf9\u6bd4 \u00b6 \u4f60\u53ef\u4ee5\u67e5\u770b\u4ee5\u4e0b\u6587\u6863\u83b7\u53d6\u8be6\u7ec6\u7684\u4fe1\u606f\uff1a rocksdb\u4e0eleveldb\u5bf9\u6bd4","title":"\u6570\u636e\u5e93\u914d\u7f6e"},{"location":"architecture/database/#_1","text":"Java-tron\u6570\u636e\u5b58\u50a8\u652f\u6301\u4f7f\u7528 LevelDB \u6216\u8005 RocksDB\uff0c\u9ed8\u8ba4\u4f7f\u7528LevelDB\u3002\u60a8\u4e5f\u53ef\u4ee5\u9009\u62e9RocksDB\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u914d\u7f6e\u53c2\u6570\uff0c\u5141\u8bb8\u8282\u70b9\u6839\u636e\u81ea\u8eab\u673a\u5668\u914d\u7f6e\u60c5\u51b5\u8fdb\u884c\u8c03\u4f18\uff0c\u8282\u70b9\u6570\u636e\u5e93\u5360\u7528\u7684\u78c1\u76d8\u7a7a\u95f4\u76f8\u6bd4\u4e8eLevelDB\u66f4\u5c11\uff0c\u540c\u65f6RocksDB\u652f\u6301\u5728\u8fd0\u884c\u65f6\u8fdb\u884c\u6570\u636e\u5907\u4efd\uff0c\u5907\u4efd\u65f6\u95f4\u4ec5\u9700\u8981\u51e0\u79d2\u949f\u3002 \u4e0b\u9762\u4ecb\u7ecd\u5982\u4f55\u5c06Java-tron\u8282\u70b9\u7684\u5b58\u50a8\u5f15\u64ce\u8bbe\u7f6e\u6210RocksDB\uff0c\u4ee5\u53ca\u5982\u4f55\u8fdb\u884cleveldb\u548crocksdb\u7684\u6570\u636e\u8f6c\u6362\u3002","title":"\u6570\u636e\u5e93\u914d\u7f6e"},{"location":"architecture/database/#rocksdb","text":"","title":"rocksdb"},{"location":"architecture/database/#1-config","text":"\u4f7f\u7528rocksdb\u4f5c\u4e3a\u6570\u636e\u5b58\u50a8\u5f15\u64ce\uff0c\u9700\u8981\u5c06db.engine\u914d\u7f6e\u9879\u8bbe\u7f6e\u4e3a\"ROCKSDB\" \u6ce8\u610f: rocksdb\u53ea\u652f\u6301db.version=2, \u4e0d\u652f\u6301db.version=1\u3002 rocksdb\u652f\u6301\u7684\u4f18\u5316\u53c2\u6570\u5982\u4e0b\uff1a","title":"1. config\u914d\u7f6e\u8bf4\u660e"},{"location":"architecture/database/#2-rocksdb","text":"\u9009\u62e9rocksdb\u4f5c\u4e3a\u6570\u636e\u5b58\u50a8\u5f15\u64ce\uff0c\u53ef\u4ee5\u4f7f\u7528\u5176\u63d0\u4f9b\u7684\u8fd0\u884c\u65f6\u6570\u636e\u5907\u4efd\u529f\u80fd\u3002 \u6ce8\u610f: FullNode\u53ef\u4ee5\u4f7f\u7528\u6570\u636e\u5907\u4efd\u529f\u80fd\uff1b\u4e3a\u4e86\u4e0d\u5f71\u54cdSuperNode\u7684\u4ea7\u5757\u6027\u80fd\uff0c\u6570\u636e\u5907\u4efd\u529f\u80fd\u4e0d\u652f\u6301SuperNode\uff0c\u4f46\u662fSuperNode\u7684\u5907\u4efd\u670d\u52a1\u8282\u70b9\u53ef\u4ee5\u4f7f\u7528\u6b64\u529f\u80fd\u3002","title":"2. \u4f7f\u7528rocksdb\u6570\u636e\u5907\u4efd\u529f\u80fd"},{"location":"architecture/database/#3-leveldbrocksdb","text":"leveldb\u548crocksdb\u7684\u6570\u636e\u5b58\u50a8\u67b6\u6784\u5e76\u4e0d\u517c\u5bb9\uff0c\u8bf7\u786e\u4fdd\u8282\u70b9\u59cb\u7ec8\u4f7f\u7528\u540c\u4e00\u79cd\u6570\u636e\u5f15\u64ce\u3002\u6211\u4eec\u63d0\u4f9b\u4e86\u6570\u636e\u8f6c\u6362\u811a\u672c\uff0c\u7528\u4e8e\u5c06leveldb\u6570\u636e\u8f6c\u6362\u5230rocksdb\u6570\u636e\u3002 \u4f7f\u7528\u65b9\u6cd5\uff1a cd \u6e90\u4ee3\u7801\u6839\u76ee\u5f55 ./gradlew build #\u7f16\u8bd1\u6e90\u4ee3\u7801 java -jar build/libs/DBConvert.jar #\u6267\u884c\u6570\u636e\u8f6c\u6362\u6307\u4ee4 \u6ce8\u610f\uff1a\u5982\u679c\u8282\u70b9\u7684\u6570\u636e\u5b58\u50a8\u76ee\u5f55\u662f\u81ea\u5b9a\u4e49\u7684\uff0c\u8fd0\u884cDBConvert.jar\u65f6\u6dfb\u52a0\u4e0b\u97622\u4e2a\u53ef\u9009\u53c2\u6570\u3002 src_db_path :\u6307\u5b9aLevelDB\u6570\u636e\u5e93\u8def\u5f84\u6e90\uff0c\u9ed8\u8ba4\u662f output-directory/database dst_db_path :\u6307\u5b9aRocksDB\u6570\u636e\u5e93\u8def\u5f84\uff0c\u9ed8\u8ba4\u662f output-directory-dst/database \u4f8b\u5982\uff0c\u5982\u679c\u8282\u70b9\u662f\u50cf\u8fd9\u6837\u7684\u811a\u672c\u8fd0\u884c\u7684: nohup java -jar FullNode.jar -d your_database_dir & \u90a3\u4e48\uff0c\u4f60\u5e94\u8be5\u8fd9\u6837\u8fd0\u884c\u6570\u636e\u8f6c\u6362\u5de5\u5177DBConvert.jar: java -jar build/libs/DBConvert.jar your_database_dir/database output-directory-dst/database \u6ce8\u610f\uff1a\u5fc5\u987b\u505c\u6b62\u8282\u70b9\u7684\u8fd0\u884c\uff0c\u7136\u540e\u518d\u8fd0\u884c\u6570\u636e\u8f6c\u6362\u811a\u672c\u3002 \u5982\u679c\u4e0d\u5e0c\u671b\u8282\u70b9\u505c\u6b62\u65f6\u95f4\u592a\u957f\uff0c\u53ef\u4ee5\u5728\u8282\u70b9\u505c\u6b62\u540e\u5148\u5c06leveldb\u6570\u636e\u76ee\u5f55output-directory\u62f7\u8d1d\u4e00\u4efd\u5230\u65b0\u7684\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u6062\u590d\u8282\u70b9\u7684\u8fd0\u884c\u3002 \u5728\u65b0\u76ee\u5f55\u7684\u4e0a\u7ea7\u76ee\u5f55\u4e2d\u6267\u884cDBConvert.jar\u5e76\u6307\u5b9a\u53c2\u6570 src_db_path \u548c dst_db_path \u3002 \u4f8b\u5982: cp -rf output-directory /tmp/output-directory cd /tmp java -jar DBConvert.jar output-directory/database output-directory-dst/database \u6574\u4e2a\u7684\u6570\u636e\u8f6c\u6362\u8fc7\u7a0b\u53ef\u80fd\u9700\u898110\u4e2a\u5c0f\u65f6\u5de6\u53f3\u3002","title":"3. leveldb\u6570\u636e\u8f6c\u6362\u4e3arocksdb\u6570\u636e"},{"location":"architecture/database/#4-rocksdbleveldb","text":"\u4f60\u53ef\u4ee5\u67e5\u770b\u4ee5\u4e0b\u6587\u6863\u83b7\u53d6\u8be6\u7ec6\u7684\u4fe1\u606f\uff1a rocksdb\u4e0eleveldb\u5bf9\u6bd4","title":"4. rocksdb\u4e0eleveldb\u7684\u5bf9\u6bd4"},{"location":"architecture/event/","text":"\u4e8b\u4ef6\u8ba2\u9605 \u00b6 \u4f7f\u7528\u4e8b\u4ef6\u63d2\u4ef6\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605 \u00b6 TIP \u00b6 TIP: https://github.com/tronprotocol/TIPs/issues/12 \u4e8b\u4ef6\u7c7b\u578b \u00b6 \u6ce2\u573a\u4e8b\u4ef6\u8ba2\u9605\u652f\u6301\u56db\u79cd\u7c7b\u578b\u7684\u4e8b\u4ef6\uff1a \u4ea4\u6613\u76f8\u5173\u4e8b\u4ef6 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c blockHash: \u533a\u5757\u54c8\u5e0c blockNumber: \u533a\u5757\u9ad8\u5ea6 energyUsage: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyFee: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u4e2d\uff0c\u9700\u8981TRX\u652f\u4ed8\u7684\u6570\u76ee(SUN\u4e3a\u5355\u4f4d) originEnergyUsage: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyUsageTotal: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u548c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf \u533a\u5757\u76f8\u5173\u4e8b\u4ef6 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a blockHash: \u533a\u5757\u54c8\u5e0c blockNumber: \u533a\u5757\u9ad8\u5ea6 transactionSize: \u533a\u5757\u4e2d\u5305\u542b\u7684\u4ea4\u6613\u7684\u6570\u76ee latestSolidifiedBlockNumber: \u6700\u65b0\u7684\u56fa\u5316\u5757\u7684\u9ad8\u5ea6 transactionList: \u4ea4\u6613\u54c8\u5e0c\u5217\u8868 \u5408\u7ea6\u4e8b\u4ef6\u76f8\u5173 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c contractAddress: \u5408\u7ea6\u5730\u5740 callerAddress: \u5408\u7ea6\u8c03\u7528\u8005\u5730\u5740 blockNumber: \u5408\u7ea6\u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6 blockTimestamp: \u533a\u5757\u65f6\u95f4\u6233 eventSignature: \u4e8b\u4ef6\u7b7e\u540d topicMap: the map of topic in solidity language data: the data information in solidity language \u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6\u76f8\u5173 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c contractAddress: \u5408\u7ea6\u5730\u5740 callerAddress: \u5408\u7ea6\u8c03\u7528\u8005\u5730\u5740 blockNumber: \u5408\u7ea6\u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6 blockTimestamp: \u533a\u5757\u65f6\u95f4\u6233 contractTopics: the list of topic in solidity language data: the data information in solidity language removed: 'true'\u4ee3\u8868\u65e5\u5fd7\u5df2\u7ecf\u88ab\u79fb\u9664 \u5408\u7ea6\u4e8b\u4ef6\u4e0e\u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6\u8ba2\u9605\u652f\u6301\u8fc7\u6ee4\u529f\u80fd\uff1a fromBlock: \u8d77\u59cb\u533a\u5757\u7d22\u5f15 toBlock: \u7ed3\u675f\u533a\u5757\u7d22\u5f15 contractAddress: \u5408\u7ea6\u5730\u5740 contractTopics: \u5408\u7ea6\u4e3b\u9898 \u6ce8\u610f \u4e0d\u652f\u6301\u5386\u53f2\u6570\u636e\u67e5\u8be2 \u5728\u5bf9\u975e\u56fa\u5316\u7684\u4e8b\u4ef6\u8fdb\u884c\u8ba2\u9605\u65f6\uff0c\u8bf7\u52a1\u5fc5\u4ee5 blockNumber \u548c blockHash \u4e24\u4e2a\u53c2\u6570\u4e3a\u51c6\uff0c\u4ee5\u9a8c\u8bc1\u6536\u5230\u7684\u4e8b\u4ef6\u662f\u6709\u6548\u7684\u3002\u5728\u53d1\u751f\u7f51\u7edc\u8fde\u63a5\u4e0d\u7a33\u5b9a\u7b49\u7279\u6b8a\u60c5\u51b5\u4e0b\u9020\u6210\u7684\u5207\u94fe\uff0c\u4f1a\u51fa\u73b0\u4e8b\u4ef6\u91cd\u7ec4\u7684\u60c5\u51b5\uff0c\u5bfc\u81f4\u90e8\u5206\u4e8b\u4ef6\u5931\u6548\u3002 \u65b0\u529f\u80fd \u00b6 \u652f\u6301\u4e8b\u4ef6\u63d2\u4ef6\uff0ckafka & mongodb \u63d2\u4ef6\u5df2\u7ecf\u53d1\u5e03\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u6309\u7167\u9700\u6c42\u81ea\u5b9a\u4e49\u63d2\u4ef6\u3002 \u652f\u6301\u8ba2\u9605\u94fe\u4e0a\u6570\u636e\uff0c\u4f8b\u5982\u533a\u5757\uff0c\u4ea4\u6613\uff0c\u5408\u7ea6\u4ee5\u53ca\u5408\u7ea6\u65e5\u5fd7\u3002\u5f00\u53d1\u8005\u8fd8\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u8fc7\u6ee4\u6761\u4ef6\u6765\u8ba2\u9605\u6307\u5b9a\u7684\u6570\u636e\u3002 \u63d0\u4f9b\u4e8b\u4ef6\u8ba2\u9605\u7684\u6570\u636e\u67e5\u8be2\u670d\u52a1\uff0c\u7ebf\u4e0a\u5730\u5740\u4e3a https://api.tronex.io \u3002 Github \u9879\u76ee \u00b6 \u4e8b\u4ef6\u8ba2\u9605 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2 \u4e8b\u4ef6\u8ba2\u9605\u76f8\u5173\u63d2\u4ef6\u90e8\u7f72 \u00b6 kafka\u90e8\u7f72 mongo\u90e8\u7f72 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2 \u00b6 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u5b9e\u73b0\u4e86\u4e8b\u4ef6\u8ba2\u9605\u6a21\u578b\u3002 \u67e5\u770b\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u9605 https://github.com/tronprotocol/TIPs/issues/12 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u90e8\u7f72 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1http api \u4f7f\u7528Java-tron\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605 \u00b6 TRON\u63d0\u4f9b\u4e86\u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\uff0c\u5f00\u53d1\u8005\u4e0d\u4f46\u53ef\u4ee5\u901a\u8fc7\u4e8b\u4ef6\u63d2\u4ef6\u6765\u83b7\u53d6\u94fe\u4e0a\u4e8b\u4ef6\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7 Java-tron \u5185\u7f6e\u7684ZeroMQ\u6d88\u606f\u961f\u5217 \u6765\u8ba2\u9605\u4e8b\u4ef6\u3002\u6240\u4e0d\u540c\u7684\u662f\uff0c\u4e8b\u4ef6\u63d2\u4ef6\u9700\u8981\u989d\u5916\u90e8\u7f72\uff0c\u7528\u6765\u5b9e\u73b0\u4e8b\u4ef6\u8f6c\u50a8\uff1a\u5f00\u53d1\u8005\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u9009\u62e9\u5408\u9002\u7684\u5b58\u50a8\u5de5\u5177\uff0c\u5982MongoDB\uff0cKafka\u7b49\uff0c\u63d2\u4ef6\u5e2e\u52a9\u5b8c\u6210\u5bf9\u8ba2\u9605\u7684\u4e8b\u4ef6\u7684\u5b58\u50a8\u5de5\u4f5c\u3002\u800cJava-tron\u5185\u7f6e\u7684ZeroMQ\uff0c\u4e0d\u9700\u8981\u989d\u5916\u7684\u90e8\u7f72\u64cd\u4f5c\uff0c\u4e8b\u4ef6\u8ba2\u9605\u8005\u76f4\u63a5\u8fde\u63a5\u53d1\u5e03\u8005ip\u53ca\u7aef\u53e3\u3001\u8bbe\u7f6e\u8ba2\u9605\u4e3b\u9898\uff0c\u63a5\u6536\u8ba2\u9605\u7684\u4e8b\u4ef6\u5373\u53ef\uff0c\u4f46\u8be5\u65b9\u5f0f\u4e0d\u63d0\u4f9b\u4e8b\u4ef6\u5b58\u50a8\u529f\u80fd\u3002\u56e0\u6b64\uff0c\u5f53\u5f00\u53d1\u8005\u5e0c\u671b\u77ed\u671f\u5e76\u76f4\u63a5\u4ece\u8282\u70b9\u8ba2\u9605\u4e8b\u4ef6\uff0c\u90a3\u4e48\u4f7f\u7528\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u5c06\u662f\u4e00\u4e2a\u66f4\u5408\u9002\u7684\u9009\u62e9\u3002 \u672c\u6587\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7Java-tron\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u6765\u8ba2\u9605\u4e8b\u4ef6\u3002 \u914d\u7f6e\u8282\u70b9 \u00b6 \u8981\u4f7f\u7528\u8282\u70b9\u5185\u7f6e\u7684ZeroMQ\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605\uff0c\u9700\u8981\u5728\u8282\u70b9\u914d\u7f6e\u6587\u4ef6\u4e2d\u5c06 useNativeQueue \u914d\u7f6e\u9879\u8bbe\u7f6e\u4e3a true \u3002 event.subscribe = { native = { useNativeQueue = true // if true, use native message queue, else use event plugin. bindport = 5555 // bind port sendqueuelength = 1000 //max length of send queue } ...... topics = [ { triggerName = \"block\" // block trigger, the value can't be modified enable = true topic = \"block\" // plugin topic, the value could be modified }, ...... ] } native.useNativeQueue : true\u4e3a\u4f7f\u7528\u5185\u7f6e\u6d88\u606f\u961f\u5217\uff0cfalse\u4e3a\u4f7f\u7528\u4e8b\u4ef6\u63d2\u4ef6 native.bindport : ZeroMQ\u53d1\u5e03\u8005\u7ed1\u5b9a\u7aef\u53e3\u3002\u672c\u4f8b\u4e2d\u4e3a 5555 \uff0c\u6240\u4ee5\u8ba2\u9605\u8005\u5e94\u8fde\u63a5\u7684\u53d1\u5e03\u8005\u5730\u5740\u4e3a \"tcp://127.0.0.1:5555\" native.sendqueuelength : \u53d1\u9001\u961f\u5217\u7684\u957f\u5ea6\uff0c\u5373\u5f53\u8ba2\u9605\u8005\u63a5\u6536\u6d88\u606f\u8f83\u6162\u7684\u60c5\u51b5\u4e0b\uff0cTCP\u7f13\u51b2\u533a\u6700\u591a\u5bb9\u7eb3\u7684\u53d1\u5e03\u8005\u53d1\u5e03\u7684\u6d88\u606f\u6570\u91cf\uff0c\u8d85\u8fc7\u5219\u4e22\u5f03 topics : \u8ba2\u9605\u7684 \u4e8b\u4ef6\u7c7b\u578b \uff0c\u5305\u62ec\u533a\u5757\u7c7b\u578b\u3001\u4ea4\u6613\u7c7b\u578b\u7b49 \u542f\u52a8\u8282\u70b9 \u00b6 \u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\u9ed8\u8ba4\u4e3a\u5173\u95ed\u72b6\u6001\uff0c\u9700\u8981\u901a\u8fc7\u914d\u7f6e\u547d\u4ee4\u884c\u53c2\u6570 --es \u7684\u65b9\u5f0f\u6765\u542f\u7528\u3002\u5f00\u542f\u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\u7684\u8282\u70b9\u7684\u542f\u52a8\u547d\u4ee4\u5982\u4e0b\uff1a $ java -jar FullNode.jar --es \u51c6\u5907\u4e8b\u4ef6\u8ba2\u9605\u811a\u672c \u00b6 \u672c\u6587\u4ee5Nodejs\u4e3a\u4f8b\u6765\u8bf4\u660e\u5982\u4f55\u8ba2\u9605\u4e8b\u4ef6\u3002 \u9996\u5148\uff0c\u4e0b\u8f7dzeromq\u5e93\uff1a $ npm install zeromq@5 \u7136\u540e\uff0c\u7f16\u5199\u8ba2\u9605\u8005\u4ee3\u7801\uff1a // subscriber.js var zmq = require(\"zeromq\"), var sock = zmq.socket(\"sub\"); sock.connect(\"tcp://127.0.0.1:5555\"); sock.subscribe(\"block\"); console.log(\"Subscriber connected to port 5555\"); sock.on(\"message\", function(topic, message) { console.log( \"received a message related to:\", Buffer.from(topic).toString(), \", containing message:\", Buffer.from(message).toString() ); }); \u672c\u793a\u4f8b\u5c06\u8ba2\u9605\u8005\u8fde\u63a5\u5230\u4e86\u8282\u70b9\u4e8b\u4ef6\u53d1\u5e03\u8005\uff0c\u5e76\u8ba2\u9605\u4e86 block \u4e8b\u4ef6\u3002 \u542f\u52a8\u8ba2\u9605\u8005 \u00b6 Nodejs\u542f\u52a8\u547d\u4ee4\u5982\u4e0b\uff1a $ node subscriber.js > Subscriber connected to port 5555 \u5f53\u8282\u70b9\u6709\u65b0\u7684\u533a\u5757\u65f6\uff0c\u8be5\u8ba2\u9605\u8005\u5c06\u6536\u5230\u533a\u5757\u4e8b\u4ef6\uff0c\u8f93\u51fa\u4fe1\u606f\u5982\u4e0b\uff1a received a message related to: blockTrigger, containing message: {\"timeStamp\":1678343709000,\"triggerName\":\"blockTrigger\",\"blockNumber\":1361,\"blockHash\":\"00000000000005519b3995cd638753a862c812d1bda11de14bbfaa5ad3383280\",\"transactionSize\":0,\"latestSolidifiedBlockNumber\":1361,\"transactionList\":[]} received a message related to: blockTrigger, containing message: {\"timeStamp\":1678343712000,\"triggerName\":\"blockTrigger\",\"blockNumber\":1362,\"blockHash\":\"0000000000000552d53d1bdd9929e4533a983f14df8931ee9b3bf6d6c74a47b0\",\"transactionSize\":0,\"latestSolidifiedBlockNumber\":1362,\"transactionList\":[]}","title":"\u4e8b\u4ef6\u8ba2\u9605"},{"location":"architecture/event/#_1","text":"","title":"\u4e8b\u4ef6\u8ba2\u9605"},{"location":"architecture/event/#_2","text":"","title":"\u4f7f\u7528\u4e8b\u4ef6\u63d2\u4ef6\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605"},{"location":"architecture/event/#tip","text":"TIP: https://github.com/tronprotocol/TIPs/issues/12","title":"TIP"},{"location":"architecture/event/#_3","text":"\u6ce2\u573a\u4e8b\u4ef6\u8ba2\u9605\u652f\u6301\u56db\u79cd\u7c7b\u578b\u7684\u4e8b\u4ef6\uff1a \u4ea4\u6613\u76f8\u5173\u4e8b\u4ef6 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c blockHash: \u533a\u5757\u54c8\u5e0c blockNumber: \u533a\u5757\u9ad8\u5ea6 energyUsage: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyFee: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u6d88\u8017\u7684Energy\u4e2d\uff0c\u9700\u8981TRX\u652f\u4ed8\u7684\u6570\u76ee(SUN\u4e3a\u5355\u4f4d) originEnergyUsage: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf energyUsageTotal: \u6b64\u6b21\u8c03\u7528\u4e2d\uff0c\u5408\u7ea6\u8c03\u7528\u8005\u548c\u5408\u7ea6\u5f00\u53d1\u8005\u6d88\u8017\u7684Energy\u7684\u603b\u91cf \u533a\u5757\u76f8\u5173\u4e8b\u4ef6 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a blockHash: \u533a\u5757\u54c8\u5e0c blockNumber: \u533a\u5757\u9ad8\u5ea6 transactionSize: \u533a\u5757\u4e2d\u5305\u542b\u7684\u4ea4\u6613\u7684\u6570\u76ee latestSolidifiedBlockNumber: \u6700\u65b0\u7684\u56fa\u5316\u5757\u7684\u9ad8\u5ea6 transactionList: \u4ea4\u6613\u54c8\u5e0c\u5217\u8868 \u5408\u7ea6\u4e8b\u4ef6\u76f8\u5173 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c contractAddress: \u5408\u7ea6\u5730\u5740 callerAddress: \u5408\u7ea6\u8c03\u7528\u8005\u5730\u5740 blockNumber: \u5408\u7ea6\u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6 blockTimestamp: \u533a\u5757\u65f6\u95f4\u6233 eventSignature: \u4e8b\u4ef6\u7b7e\u540d topicMap: the map of topic in solidity language data: the data information in solidity language \u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6\u76f8\u5173 \u8ba2\u9605\u7684\u5185\u5bb9\uff1a transactionId: \u4ea4\u6613\u54c8\u5e0c contractAddress: \u5408\u7ea6\u5730\u5740 callerAddress: \u5408\u7ea6\u8c03\u7528\u8005\u5730\u5740 blockNumber: \u5408\u7ea6\u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6 blockTimestamp: \u533a\u5757\u65f6\u95f4\u6233 contractTopics: the list of topic in solidity language data: the data information in solidity language removed: 'true'\u4ee3\u8868\u65e5\u5fd7\u5df2\u7ecf\u88ab\u79fb\u9664 \u5408\u7ea6\u4e8b\u4ef6\u4e0e\u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6\u8ba2\u9605\u652f\u6301\u8fc7\u6ee4\u529f\u80fd\uff1a fromBlock: \u8d77\u59cb\u533a\u5757\u7d22\u5f15 toBlock: \u7ed3\u675f\u533a\u5757\u7d22\u5f15 contractAddress: \u5408\u7ea6\u5730\u5740 contractTopics: \u5408\u7ea6\u4e3b\u9898 \u6ce8\u610f \u4e0d\u652f\u6301\u5386\u53f2\u6570\u636e\u67e5\u8be2 \u5728\u5bf9\u975e\u56fa\u5316\u7684\u4e8b\u4ef6\u8fdb\u884c\u8ba2\u9605\u65f6\uff0c\u8bf7\u52a1\u5fc5\u4ee5 blockNumber \u548c blockHash \u4e24\u4e2a\u53c2\u6570\u4e3a\u51c6\uff0c\u4ee5\u9a8c\u8bc1\u6536\u5230\u7684\u4e8b\u4ef6\u662f\u6709\u6548\u7684\u3002\u5728\u53d1\u751f\u7f51\u7edc\u8fde\u63a5\u4e0d\u7a33\u5b9a\u7b49\u7279\u6b8a\u60c5\u51b5\u4e0b\u9020\u6210\u7684\u5207\u94fe\uff0c\u4f1a\u51fa\u73b0\u4e8b\u4ef6\u91cd\u7ec4\u7684\u60c5\u51b5\uff0c\u5bfc\u81f4\u90e8\u5206\u4e8b\u4ef6\u5931\u6548\u3002","title":"\u4e8b\u4ef6\u7c7b\u578b"},{"location":"architecture/event/#_4","text":"\u652f\u6301\u4e8b\u4ef6\u63d2\u4ef6\uff0ckafka & mongodb \u63d2\u4ef6\u5df2\u7ecf\u53d1\u5e03\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u6309\u7167\u9700\u6c42\u81ea\u5b9a\u4e49\u63d2\u4ef6\u3002 \u652f\u6301\u8ba2\u9605\u94fe\u4e0a\u6570\u636e\uff0c\u4f8b\u5982\u533a\u5757\uff0c\u4ea4\u6613\uff0c\u5408\u7ea6\u4ee5\u53ca\u5408\u7ea6\u65e5\u5fd7\u3002\u5f00\u53d1\u8005\u8fd8\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u8fc7\u6ee4\u6761\u4ef6\u6765\u8ba2\u9605\u6307\u5b9a\u7684\u6570\u636e\u3002 \u63d0\u4f9b\u4e8b\u4ef6\u8ba2\u9605\u7684\u6570\u636e\u67e5\u8be2\u670d\u52a1\uff0c\u7ebf\u4e0a\u5730\u5740\u4e3a https://api.tronex.io \u3002","title":"\u65b0\u529f\u80fd"},{"location":"architecture/event/#github","text":"\u4e8b\u4ef6\u8ba2\u9605 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2","title":"Github \u9879\u76ee"},{"location":"architecture/event/#_5","text":"kafka\u90e8\u7f72 mongo\u90e8\u7f72","title":"\u4e8b\u4ef6\u8ba2\u9605\u76f8\u5173\u63d2\u4ef6\u90e8\u7f72"},{"location":"architecture/event/#_6","text":"\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u5b9e\u73b0\u4e86\u4e8b\u4ef6\u8ba2\u9605\u6a21\u578b\u3002 \u67e5\u770b\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u9605 https://github.com/tronprotocol/TIPs/issues/12 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u90e8\u7f72 \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1http api","title":"\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2"},{"location":"architecture/event/#java-tron","text":"TRON\u63d0\u4f9b\u4e86\u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\uff0c\u5f00\u53d1\u8005\u4e0d\u4f46\u53ef\u4ee5\u901a\u8fc7\u4e8b\u4ef6\u63d2\u4ef6\u6765\u83b7\u53d6\u94fe\u4e0a\u4e8b\u4ef6\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7 Java-tron \u5185\u7f6e\u7684ZeroMQ\u6d88\u606f\u961f\u5217 \u6765\u8ba2\u9605\u4e8b\u4ef6\u3002\u6240\u4e0d\u540c\u7684\u662f\uff0c\u4e8b\u4ef6\u63d2\u4ef6\u9700\u8981\u989d\u5916\u90e8\u7f72\uff0c\u7528\u6765\u5b9e\u73b0\u4e8b\u4ef6\u8f6c\u50a8\uff1a\u5f00\u53d1\u8005\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u9009\u62e9\u5408\u9002\u7684\u5b58\u50a8\u5de5\u5177\uff0c\u5982MongoDB\uff0cKafka\u7b49\uff0c\u63d2\u4ef6\u5e2e\u52a9\u5b8c\u6210\u5bf9\u8ba2\u9605\u7684\u4e8b\u4ef6\u7684\u5b58\u50a8\u5de5\u4f5c\u3002\u800cJava-tron\u5185\u7f6e\u7684ZeroMQ\uff0c\u4e0d\u9700\u8981\u989d\u5916\u7684\u90e8\u7f72\u64cd\u4f5c\uff0c\u4e8b\u4ef6\u8ba2\u9605\u8005\u76f4\u63a5\u8fde\u63a5\u53d1\u5e03\u8005ip\u53ca\u7aef\u53e3\u3001\u8bbe\u7f6e\u8ba2\u9605\u4e3b\u9898\uff0c\u63a5\u6536\u8ba2\u9605\u7684\u4e8b\u4ef6\u5373\u53ef\uff0c\u4f46\u8be5\u65b9\u5f0f\u4e0d\u63d0\u4f9b\u4e8b\u4ef6\u5b58\u50a8\u529f\u80fd\u3002\u56e0\u6b64\uff0c\u5f53\u5f00\u53d1\u8005\u5e0c\u671b\u77ed\u671f\u5e76\u76f4\u63a5\u4ece\u8282\u70b9\u8ba2\u9605\u4e8b\u4ef6\uff0c\u90a3\u4e48\u4f7f\u7528\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u5c06\u662f\u4e00\u4e2a\u66f4\u5408\u9002\u7684\u9009\u62e9\u3002 \u672c\u6587\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7Java-tron\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u6765\u8ba2\u9605\u4e8b\u4ef6\u3002","title":"\u4f7f\u7528Java-tron\u5185\u7f6e\u7684\u6d88\u606f\u961f\u5217\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605"},{"location":"architecture/event/#_7","text":"\u8981\u4f7f\u7528\u8282\u70b9\u5185\u7f6e\u7684ZeroMQ\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605\uff0c\u9700\u8981\u5728\u8282\u70b9\u914d\u7f6e\u6587\u4ef6\u4e2d\u5c06 useNativeQueue \u914d\u7f6e\u9879\u8bbe\u7f6e\u4e3a true \u3002 event.subscribe = { native = { useNativeQueue = true // if true, use native message queue, else use event plugin. bindport = 5555 // bind port sendqueuelength = 1000 //max length of send queue } ...... topics = [ { triggerName = \"block\" // block trigger, the value can't be modified enable = true topic = \"block\" // plugin topic, the value could be modified }, ...... ] } native.useNativeQueue : true\u4e3a\u4f7f\u7528\u5185\u7f6e\u6d88\u606f\u961f\u5217\uff0cfalse\u4e3a\u4f7f\u7528\u4e8b\u4ef6\u63d2\u4ef6 native.bindport : ZeroMQ\u53d1\u5e03\u8005\u7ed1\u5b9a\u7aef\u53e3\u3002\u672c\u4f8b\u4e2d\u4e3a 5555 \uff0c\u6240\u4ee5\u8ba2\u9605\u8005\u5e94\u8fde\u63a5\u7684\u53d1\u5e03\u8005\u5730\u5740\u4e3a \"tcp://127.0.0.1:5555\" native.sendqueuelength : \u53d1\u9001\u961f\u5217\u7684\u957f\u5ea6\uff0c\u5373\u5f53\u8ba2\u9605\u8005\u63a5\u6536\u6d88\u606f\u8f83\u6162\u7684\u60c5\u51b5\u4e0b\uff0cTCP\u7f13\u51b2\u533a\u6700\u591a\u5bb9\u7eb3\u7684\u53d1\u5e03\u8005\u53d1\u5e03\u7684\u6d88\u606f\u6570\u91cf\uff0c\u8d85\u8fc7\u5219\u4e22\u5f03 topics : \u8ba2\u9605\u7684 \u4e8b\u4ef6\u7c7b\u578b \uff0c\u5305\u62ec\u533a\u5757\u7c7b\u578b\u3001\u4ea4\u6613\u7c7b\u578b\u7b49","title":"\u914d\u7f6e\u8282\u70b9"},{"location":"architecture/event/#_8","text":"\u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\u9ed8\u8ba4\u4e3a\u5173\u95ed\u72b6\u6001\uff0c\u9700\u8981\u901a\u8fc7\u914d\u7f6e\u547d\u4ee4\u884c\u53c2\u6570 --es \u7684\u65b9\u5f0f\u6765\u542f\u7528\u3002\u5f00\u542f\u4e8b\u4ef6\u8ba2\u9605\u670d\u52a1\u7684\u8282\u70b9\u7684\u542f\u52a8\u547d\u4ee4\u5982\u4e0b\uff1a $ java -jar FullNode.jar --es","title":"\u542f\u52a8\u8282\u70b9"},{"location":"architecture/event/#_9","text":"\u672c\u6587\u4ee5Nodejs\u4e3a\u4f8b\u6765\u8bf4\u660e\u5982\u4f55\u8ba2\u9605\u4e8b\u4ef6\u3002 \u9996\u5148\uff0c\u4e0b\u8f7dzeromq\u5e93\uff1a $ npm install zeromq@5 \u7136\u540e\uff0c\u7f16\u5199\u8ba2\u9605\u8005\u4ee3\u7801\uff1a // subscriber.js var zmq = require(\"zeromq\"), var sock = zmq.socket(\"sub\"); sock.connect(\"tcp://127.0.0.1:5555\"); sock.subscribe(\"block\"); console.log(\"Subscriber connected to port 5555\"); sock.on(\"message\", function(topic, message) { console.log( \"received a message related to:\", Buffer.from(topic).toString(), \", containing message:\", Buffer.from(message).toString() ); }); \u672c\u793a\u4f8b\u5c06\u8ba2\u9605\u8005\u8fde\u63a5\u5230\u4e86\u8282\u70b9\u4e8b\u4ef6\u53d1\u5e03\u8005\uff0c\u5e76\u8ba2\u9605\u4e86 block \u4e8b\u4ef6\u3002","title":"\u51c6\u5907\u4e8b\u4ef6\u8ba2\u9605\u811a\u672c"},{"location":"architecture/event/#_10","text":"Nodejs\u542f\u52a8\u547d\u4ee4\u5982\u4e0b\uff1a $ node subscriber.js > Subscriber connected to port 5555 \u5f53\u8282\u70b9\u6709\u65b0\u7684\u533a\u5757\u65f6\uff0c\u8be5\u8ba2\u9605\u8005\u5c06\u6536\u5230\u533a\u5757\u4e8b\u4ef6\uff0c\u8f93\u51fa\u4fe1\u606f\u5982\u4e0b\uff1a received a message related to: blockTrigger, containing message: {\"timeStamp\":1678343709000,\"triggerName\":\"blockTrigger\",\"blockNumber\":1361,\"blockHash\":\"00000000000005519b3995cd638753a862c812d1bda11de14bbfaa5ad3383280\",\"transactionSize\":0,\"latestSolidifiedBlockNumber\":1361,\"transactionList\":[]} received a message related to: blockTrigger, containing message: {\"timeStamp\":1678343712000,\"triggerName\":\"blockTrigger\",\"blockNumber\":1362,\"blockHash\":\"0000000000000552d53d1bdd9929e4533a983f14df8931ee9b3bf6d6c74a47b0\",\"transactionSize\":0,\"latestSolidifiedBlockNumber\":1362,\"transactionList\":[]}","title":"\u542f\u52a8\u8ba2\u9605\u8005"},{"location":"clients/tron-grid/","text":"TronGrid \u00b6 \u6700\u65b0\u5b98\u65b9 TronGrid \u6587\u6863\u4f4d\u4e8e https://developers.tron.network/docs/tron-grid-intro . TronGrid\u63d0\u4f9b\u8fd0\u884c\u5728\u4e91\u7aef\u7684\u5ba2\u6237\u7aef, \u56e0\u800c\u4f60\u81ea\u5df1\u672c\u5730\u4e0d\u9700\u8981\u8fd0\u884c\u8282\u70b9\u3002TronGrid\u63d0\u4f9b\u8d1f\u8f7d\u5747\u8861\u7684\uff0c\u5b89\u5168\u7684\uff0c\u53ef\u9760\u7684\u7684\u8282\u70b9\u8bbf\u95eeAPI\u3002 TronGrid\u652f\u6301\u4e24\u79cd\u7c7b\u578b\u7684API\u8c03\u7528\uff1a FullNode & SolidityNode api TronGrid\u652f\u6301\u6240\u6709\u7684FullNode\u548cSolidityNode\u7684api\u8c03\u7528\uff0c\u4f60\u53ea\u9700\u8981\u52a0\u4e0a\u524d\u7f00\uff1a https://api.trongrid.io/ \uff0c\u4f8b\u5982\uff1a https://api.trongrid.io/wallet/getnowblock TronGrid v3 (TG3) api \u793a\u4f8b\uff1a https://api.trongrid.io/v1 \u53c2\u6570, \u67e5\u8be2\u4ee5\u53ca\u8fd4\u56de\u503c \u00b6 TG3\u7c7b\u578b\u63a5\u53e3\u8c03\u7528\u5730\u5740\u53ef\u4ee5\u6309\u7167base58\u6216\u8005hex\u5f62\u5f0f \u67e5\u8be2\u53c2\u6570\u53ef\u4ee5\u6309\u7167\u9a7c\u5cf0\u6216\u8005\u4e0b\u5212\u7ebf\u5f62\u5f0f \u6240\u6709\u8fd4\u56de\u7684json\u6570\u636e\u6309\u7167\u4e0b\u5212\u7ebf\u5f62\u5f0f \u5728\u672c\u6587\u6863\u4e2d\uff0c\u6211\u4eec\u4f18\u5148\u4f7f\u7528base58\u548c\u4e0b\u5212\u7ebf\u5f62\u5f0f \u8d26\u6237\u63a5\u53e3 \u00b6 \u901a\u8fc7\u5730\u5740\u67e5\u8be2\u8d26\u6237 \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u9009\u9879\uff1a only_confirmed \u53ea\u67e5\u8be2\u5df2\u7ecf\u88ab\u786e\u8ba4\u7684\u533a\u5757\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq7?only_confirmed=false \u67e5\u8be2\u8d26\u6237\u7684\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address/transactions \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u9009\u9879\uff1a only_confirmed \u53ea\u67e5\u8be2\u5df2\u7ecf\u88ab\u786e\u8ba4\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_unconfirmed \u53ea\u67e5\u8be2\u672a\u88ab\u786e\u8ba4\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_to \u53ea\u67e5\u8be2\u4e0e\u76ee\u6807\u5730\u5740\u76f8\u5173\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_from \u53ea\u67e5\u8be2\u4e0e\u6e90\u5730\u5740\u76f8\u5173\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002 order_by=block_number,asc , order_by=block_timestamp,desc \u3002 min_block_timestamp \u4ea4\u6613\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u4e3a 0 \u3002 max_block_timestamp \u4ea4\u6613\u65f6\u95f4\u6233\u6700\u5927\u503c\u4e3a now \u3002 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq/transactions?only_to=true&only_from=true \u67e5\u8be2\u8d26\u6237\u8d44\u6e90\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address/resources \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq/resources \u901a\u8bc1\u63a5\u53e3 \u00b6 \u67e5\u8be2\u6240\u6709\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets \u9009\u9879\uff1a order_by \u6392\u5e8f\u65b9\u6848\u3002\u652f\u6301\u5b57\u6bb5\uff1a total_supply,asc | total_supply,desc , start_time,asc | start_time,desc , end_time,asc | end_time,desc , id,asc | id,desc . \u4f8b\u5982\uff1a order_by=total_supply,asc \u3002 \u6309\u7167\u6807\u8bc6\u7b26\u67e5\u8be2\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets/:identifier \u53c2\u6570\uff1a identifier: \u53ef\u4ee5\u4e3a\u901a\u8bc1id\u6216\u8005\u53d1\u884c\u8005\u7684\u5730\u5740 \u6309\u7167\u901a\u8bc1\u540d\u79f0\u67e5\u8be2\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets/:name/list \u53c2\u6570\uff1a name: \u901a\u8bc1\u540d\u79f0\u3002 \u9009\u9879\uff1a limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u652f\u6301\u5b57\u6bb5 order_by=total_supply,asc \uff0c order_by=start_time,desc \u3002 \u533a\u5757\u63a5\u53e3 \u00b6 1. \u67e5\u8be2\u4e00\u4e2a\u533a\u5757\u4e2d\u7684\u4e8b\u4ef6\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/blocks/:identifier/events \u53c2\u6570\uff1a identifier: \u533a\u5757\u9ad8\u5ea6\u3002 \u5408\u7ea6\u63a5\u53e3 \u00b6 \u6839\u636e\u5408\u7ea6\u5730\u5740\u67e5\u8be2\u4e8b\u4ef6\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/contracts/:address/events \u53c2\u6570\uff1a address: \u5408\u7ea6\u5730\u5740\u3002 \u9009\u9879\uff1a only_confirmed \u53ea\u663e\u793a\u5df2\u7ecf\u786e\u8ba4\u8fc7\u7684\u4e8b\u4ef6\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 only_unconfirmed \u53ea\u663e\u793a\u672a\u786e\u8ba4\u8fc7\u7684\u4e8b\u4ef6\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 event_name \u4e8b\u4ef6\u7684\u540d\u79f0\u3002 block_number \u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6\u3002 min_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u3002\u9ed8\u8ba4\u4e3a 0 \u3002 max_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5927\u503c\u3002\u9ed8\u8ba4\u4e3a now \u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u81ea\u6301\u5b57\u6bb5 block_timestamp,asc , block_timestamp,desc \u3002 \u67e5\u8be2\u5408\u7ea6\u5730\u5740\u7684\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/contracts/:address/transactions \u53c2\u6570\uff1a address: \u5408\u7ea6\u5730\u5740\u3002 \u9009\u9879\uff1a only_confirmed \u53ea\u663e\u793a\u5df2\u7ecf\u786e\u8ba4\u8fc7\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 only_unconfirmed \u53ea\u663e\u793a\u672a\u786e\u8ba4\u8fc7\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 min_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u3002\u9ed8\u8ba4\u4e3a 0 \u3002 max_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5927\u503c\u3002\u9ed8\u8ba4\u4e3a now \u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u81ea\u6301\u5b57\u6bb5 block_timestamp,asc , block_timestamp,desc \u3002 \u4ea4\u6613\u63a5\u53e3 \u00b6 \u6839\u636e\u4ea4\u6613ID\u67e5\u8be2\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/transactions/:id \u53c2\u6570\uff1a id: \u4ea4\u6613ID\u3002 \u6839\u636e\u4ea4\u6613ID\u67e5\u8be2\u4ea4\u6613\u4e2d\u7684\u4e8b\u4ef6 A\u63a5\u53e3\uff1a https://api.trongrid.io/v1/transactions/:id/events \u53c2\u6570\uff1a id: \u4ea4\u6613ID\u3002","title":"TronGrid"},{"location":"clients/tron-grid/#trongrid","text":"\u6700\u65b0\u5b98\u65b9 TronGrid \u6587\u6863\u4f4d\u4e8e https://developers.tron.network/docs/tron-grid-intro . TronGrid\u63d0\u4f9b\u8fd0\u884c\u5728\u4e91\u7aef\u7684\u5ba2\u6237\u7aef, \u56e0\u800c\u4f60\u81ea\u5df1\u672c\u5730\u4e0d\u9700\u8981\u8fd0\u884c\u8282\u70b9\u3002TronGrid\u63d0\u4f9b\u8d1f\u8f7d\u5747\u8861\u7684\uff0c\u5b89\u5168\u7684\uff0c\u53ef\u9760\u7684\u7684\u8282\u70b9\u8bbf\u95eeAPI\u3002 TronGrid\u652f\u6301\u4e24\u79cd\u7c7b\u578b\u7684API\u8c03\u7528\uff1a FullNode & SolidityNode api TronGrid\u652f\u6301\u6240\u6709\u7684FullNode\u548cSolidityNode\u7684api\u8c03\u7528\uff0c\u4f60\u53ea\u9700\u8981\u52a0\u4e0a\u524d\u7f00\uff1a https://api.trongrid.io/ \uff0c\u4f8b\u5982\uff1a https://api.trongrid.io/wallet/getnowblock TronGrid v3 (TG3) api \u793a\u4f8b\uff1a https://api.trongrid.io/v1","title":"TronGrid"},{"location":"clients/tron-grid/#_1","text":"TG3\u7c7b\u578b\u63a5\u53e3\u8c03\u7528\u5730\u5740\u53ef\u4ee5\u6309\u7167base58\u6216\u8005hex\u5f62\u5f0f \u67e5\u8be2\u53c2\u6570\u53ef\u4ee5\u6309\u7167\u9a7c\u5cf0\u6216\u8005\u4e0b\u5212\u7ebf\u5f62\u5f0f \u6240\u6709\u8fd4\u56de\u7684json\u6570\u636e\u6309\u7167\u4e0b\u5212\u7ebf\u5f62\u5f0f \u5728\u672c\u6587\u6863\u4e2d\uff0c\u6211\u4eec\u4f18\u5148\u4f7f\u7528base58\u548c\u4e0b\u5212\u7ebf\u5f62\u5f0f","title":"\u53c2\u6570, \u67e5\u8be2\u4ee5\u53ca\u8fd4\u56de\u503c"},{"location":"clients/tron-grid/#_2","text":"\u901a\u8fc7\u5730\u5740\u67e5\u8be2\u8d26\u6237 \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u9009\u9879\uff1a only_confirmed \u53ea\u67e5\u8be2\u5df2\u7ecf\u88ab\u786e\u8ba4\u7684\u533a\u5757\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq7?only_confirmed=false \u67e5\u8be2\u8d26\u6237\u7684\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address/transactions \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u9009\u9879\uff1a only_confirmed \u53ea\u67e5\u8be2\u5df2\u7ecf\u88ab\u786e\u8ba4\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_unconfirmed \u53ea\u67e5\u8be2\u672a\u88ab\u786e\u8ba4\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_to \u53ea\u67e5\u8be2\u4e0e\u76ee\u6807\u5730\u5740\u76f8\u5173\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 only_from \u53ea\u67e5\u8be2\u4e0e\u6e90\u5730\u5740\u76f8\u5173\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3afalse\u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002 order_by=block_number,asc , order_by=block_timestamp,desc \u3002 min_block_timestamp \u4ea4\u6613\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u4e3a 0 \u3002 max_block_timestamp \u4ea4\u6613\u65f6\u95f4\u6233\u6700\u5927\u503c\u4e3a now \u3002 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq/transactions?only_to=true&only_from=true \u67e5\u8be2\u8d26\u6237\u8d44\u6e90\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/accounts/:address/resources \u53c2\u6570\uff1a address: \u8d26\u6237\u7684\u5730\u5740 \u793a\u4f8b\uff1a https://api.trongrid.io/v1/accounts/TLCuBEirVzB6V4menLZKw1jfBTFMZbuKq/resources","title":"\u8d26\u6237\u63a5\u53e3"},{"location":"clients/tron-grid/#_3","text":"\u67e5\u8be2\u6240\u6709\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets \u9009\u9879\uff1a order_by \u6392\u5e8f\u65b9\u6848\u3002\u652f\u6301\u5b57\u6bb5\uff1a total_supply,asc | total_supply,desc , start_time,asc | start_time,desc , end_time,asc | end_time,desc , id,asc | id,desc . \u4f8b\u5982\uff1a order_by=total_supply,asc \u3002 \u6309\u7167\u6807\u8bc6\u7b26\u67e5\u8be2\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets/:identifier \u53c2\u6570\uff1a identifier: \u53ef\u4ee5\u4e3a\u901a\u8bc1id\u6216\u8005\u53d1\u884c\u8005\u7684\u5730\u5740 \u6309\u7167\u901a\u8bc1\u540d\u79f0\u67e5\u8be2\u901a\u8bc1\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/assets/:name/list \u53c2\u6570\uff1a name: \u901a\u8bc1\u540d\u79f0\u3002 \u9009\u9879\uff1a limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u652f\u6301\u5b57\u6bb5 order_by=total_supply,asc \uff0c order_by=start_time,desc \u3002","title":"\u901a\u8bc1\u63a5\u53e3"},{"location":"clients/tron-grid/#_4","text":"1. \u67e5\u8be2\u4e00\u4e2a\u533a\u5757\u4e2d\u7684\u4e8b\u4ef6\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/blocks/:identifier/events \u53c2\u6570\uff1a identifier: \u533a\u5757\u9ad8\u5ea6\u3002","title":"\u533a\u5757\u63a5\u53e3"},{"location":"clients/tron-grid/#_5","text":"\u6839\u636e\u5408\u7ea6\u5730\u5740\u67e5\u8be2\u4e8b\u4ef6\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/contracts/:address/events \u53c2\u6570\uff1a address: \u5408\u7ea6\u5730\u5740\u3002 \u9009\u9879\uff1a only_confirmed \u53ea\u663e\u793a\u5df2\u7ecf\u786e\u8ba4\u8fc7\u7684\u4e8b\u4ef6\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 only_unconfirmed \u53ea\u663e\u793a\u672a\u786e\u8ba4\u8fc7\u7684\u4e8b\u4ef6\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 event_name \u4e8b\u4ef6\u7684\u540d\u79f0\u3002 block_number \u4e8b\u4ef6\u6240\u5728\u7684\u533a\u5757\u9ad8\u5ea6\u3002 min_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u3002\u9ed8\u8ba4\u4e3a 0 \u3002 max_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5927\u503c\u3002\u9ed8\u8ba4\u4e3a now \u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u81ea\u6301\u5b57\u6bb5 block_timestamp,asc , block_timestamp,desc \u3002 \u67e5\u8be2\u5408\u7ea6\u5730\u5740\u7684\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/contracts/:address/transactions \u53c2\u6570\uff1a address: \u5408\u7ea6\u5730\u5740\u3002 \u9009\u9879\uff1a only_confirmed \u53ea\u663e\u793a\u5df2\u7ecf\u786e\u8ba4\u8fc7\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 only_unconfirmed \u53ea\u663e\u793a\u672a\u786e\u8ba4\u8fc7\u7684\u4ea4\u6613\u3002 true | false \u9ed8\u8ba4\u4e3a false \u3002 min_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5c0f\u503c\u3002\u9ed8\u8ba4\u4e3a 0 \u3002 max_block_timestamp \u533a\u5757\u65f6\u95f4\u6233\u6700\u5927\u503c\u3002\u9ed8\u8ba4\u4e3a now \u3002 limit \u5206\u9875\u67e5\u8be2\u4ea4\u6613\uff0c\u6bcf\u9875\u7684\u6570\u76ee\u3002\u9ed8\u8ba4 20 \u3002\u6700\u5927 200 \u3002 fingerprint \u4e0a\u4e00\u9875\u8fd4\u56de\u7684\u6700\u540e\u4e00\u7b14\u4ea4\u6613\u7684\u6307\u7eb9\u3002 order_by \u6392\u5e8f\u65b9\u6848\u3002\u81ea\u6301\u5b57\u6bb5 block_timestamp,asc , block_timestamp,desc \u3002","title":"\u5408\u7ea6\u63a5\u53e3"},{"location":"clients/tron-grid/#_6","text":"\u6839\u636e\u4ea4\u6613ID\u67e5\u8be2\u4ea4\u6613\u4fe1\u606f \u63a5\u53e3\uff1a https://api.trongrid.io/v1/transactions/:id \u53c2\u6570\uff1a id: \u4ea4\u6613ID\u3002 \u6839\u636e\u4ea4\u6613ID\u67e5\u8be2\u4ea4\u6613\u4e2d\u7684\u4e8b\u4ef6 A\u63a5\u53e3\uff1a https://api.trongrid.io/v1/transactions/:id/events \u53c2\u6570\uff1a id: \u4ea4\u6613ID\u3002","title":"\u4ea4\u6613\u63a5\u53e3"},{"location":"clients/wallet-cli-command/","text":"Wallet\u547d\u4ee4 \u00b6 \u4e0b\u9762\u662fWallet-Cli\u94b1\u5305\u652f\u6301\u7684\u547d\u4ee4\u5206\u7c7b: \u5bc6\u94a5\u7ba1\u7406 \u94fe\u4e0a\u8d26\u6237 \u8d26\u6237\u8d44\u6e90 \u4ea4\u6613 \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u667a\u80fd\u5408\u7ea6 TRC-10\u8d44\u4ea7 \u6cbb\u7406 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 \u5bc6\u94a5\u7ba1\u7406 \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a RegisterWallet Login BackupWallet BackupWallet2Base64 ChangePassword ImportWallet ImportWalletByBase64 RegisterWallet \u00b6 \u6ce8\u518c\u65f6\uff0c\u9700\u8981\u5148\u4e3a\u8d26\u6237\u8bbe\u7f6e\u5bc6\u7801\uff0c\u4e4b\u540e\u5e26\u6709\u8d26\u6237\u4fe1\u606f\u7684json\u6587\u4ef6\u5c06\u4f1a\u751f\u6210\u5728 wallet-cli/wallet \u8def\u5f84\u4e2d\u3002\u8d26\u6237\u5730\u5740\u5373\u662f\u6587\u4ef6\u540d\u4e2dbase58\u683c\u5f0f\u7684\u90e8\u5206\uff0c\u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201cTWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw\u201d\uff1a wallet> RegisterWallet Please input password. password: Please input password again. password: Register a wallet successful, keystore file name is UTC--2022-06-27T07-37-47.601000000Z--TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw.json Login \u00b6 \u5f53\u94b1\u5305\u6ce8\u518c\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528Login\u547d\u4ee4\u767b\u9646\u94b1\u5305\u3002\u9009\u62e9\u4f60\u60f3\u8981\u767b\u9646\u7684\u94b1\u5305\u5730\u5740\uff0c\u518d\u8f93\u5165\u5bc6\u7801\u5b8c\u6210\u767b\u9646\u3002 wallet> login use user defined config file in current dir The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-06-22T08-31-57.735000000Z--TBnPDbw99BLzPUZuW8Rrcc3RGGQT3cnSfF.json The 4th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 5th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 5 4 Please input your password. password: Login successful !!! BackupWallet \u00b6 \u5907\u4efd\u94b1\u5305\u65f6\u9700\u8981\u8f93\u5165\u79d8\u5bc6\uff0c\u6210\u529f\u540e\u5c06\u4f1a\u5bfc\u51fa\u4f60\u7684\u79c1\u94a5, \u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201c721d63b074f18d41c147e04c952ec93467777a30b6f16745bc47a8eae5076545\u201d\uff1a wallet> backupwallet Please input your password. password: BackupWallet successful !! 721d63b074f18d41c147e04c952ec93467777a30b6f16745bc47a8eae5076545 BackupWallet2Base64 \u00b6 \u5907\u4efd\u94b1\u5305\u65f6\u9700\u8981\u8f93\u5165\u79d8\u5bc6\uff0c\u6210\u529f\u540e\u5c06\u4f1a\u4ee5base64\u683c\u5f0f\u5bfc\u51fa\u4f60\u7684\u79c1\u94a5, \u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201cch1jsHTxjUHBR+BMlS7JNGd3ejC28WdFvEeo6uUHZUU=\u201d\uff1a wallet> backupwallet Please input your password. password: BackupWallet successful !! ch1jsHTxjUHBR+BMlS7JNGd3ejC28WdFvEeo6uUHZUU = ChangePassword \u00b6 \u4f7f\u7528\u672c\u547d\u4ee4\u6765\u66f4\u6539\u5bc6\u7801 wallet> changepassword Please input old password. password: Please input new password. Please input password. password: Please input password again. password: The 1th keystore file name is .DS_Store The 2th keystore file name is UTC--2022-06-27T10-58-59.306000000Z--TBnPDbw99BLzPUZuW8Rrcc3RGGQT3cnSfF.json Please choose between 1 and 2 2 ChangePassword successful !! ImportWallet \u00b6 \u5728\u5bfc\u5165\u94b1\u5305\u65f6\uff0c\u9700\u5148\u4e3a\u5373\u5c06\u5bfc\u5165\u7684\u79c1\u94a5\u8bbe\u7f6e\u4e00\u4e2a\u5bc6\u7801\uff0c\u4e4b\u540e\u518d\u5bfc\u5165\u79c1\u94a5\uff0c\u63d0\u793a\u6210\u529f\u540e\uff0c\u5c06\u4f1a\u5728 wallet-cli/wallet \u8def\u5f84\u4e0b\u751f\u6210\u4e00\u4e2a\u8bb0\u5f55\u8be5\u94b1\u5305\u7684json\u6587\u4ef6\uff0c\u8bf7\u770b\u793a\u4f8b\uff1a wallet> importwallet Please input password. password: Please input password again. password: Please input private key. Max retry time:3 bd1ff0f4f852db45316bf08755bf6eee45d0678bfbf852a00020a13d42a1fb5b Import a wallet successful, keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json ImportWalletByBase64 \u00b6 \u5728\u5bfc\u5165\u94b1\u5305\u65f6\uff0c\u9700\u5148\u4e3a\u5373\u5c06\u5012\u5165\u7684\u79c1\u94a5\u8bbe\u7f6e\u4e00\u4e2a\u5bc6\u7801\uff0c\u4e4b\u540e\u518d\u5bfc\u5165base64\u683c\u5f0f\u7684\u79c1\u94a5\uff0c\u63d0\u793a\u6210\u529f\u540e\uff0c\u5c06\u4f1a\u5728 wallet-cli/wallet \u8def\u5f84\u4e0b\u751f\u6210\u4e00\u4e2a\u8bb0\u5f55\u8be5\u94b1\u5305\u7684json\u6587\u4ef6\u3002 wallet> importwalletbybase64 Please input password. password: Please input password again. password: Please input private key by base64. Max retry time:3 vR/w9PhS20Uxa/CHVb9u7kXQZ4v7+FKgACChPUKh+1s = Import a wallet successful, keystore file name is UTC--2022-06-28T06-51-56.154000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json \u94fe\u4e0a\u8d26\u6237 \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a GenerateAddress GetAccount GetAddress GetBalance UpdateAccountPermission GenerateAddress \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u94b1\u5305\u5730\u5740\u548c\u5b83\u7684\u79c1\u94a5 wallet> generateaddress { \"address\" : \"TQAvi6bemLa1t1irdV1KuaSC5vKc2EswTj\" , \"privateKey\" : \"610a8a809114a96140e1cb040a7813afc74603e58c3d7824c3f68ccc642c297e\" } \u6ce8\u610f \u751f\u6210\u7684\u5730\u5740\u53ca\u5176\u79c1\u94a5\u4e0d\u4f1a\u88ab\u4fdd\u5b58\uff0c\u5982\u9700\u4f7f\u7528\u8bf7\u5355\u72ec\u7559\u5b58\u3002 GetAccount \u00b6 \u4f7f\u7528\u5730\u5740\u83b7\u5f97\u8d26\u6237\u76f8\u5173\u4fe1\u606f\uff0c\u53ef\u4ee5\u67e5\u8be2\u8d26\u6237\u4f59\u989d\uff0c\u521b\u5efa\u65f6\u95f4\u53ca\u5206\u914d\u6743\u9650\u7684\u60c5\u51b5\u7b49 wallet> getaccount [ address ] \u793a\u4f8b\uff1a wallet> getaccount TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"balance\" : 2665198240 , \"create_time\" : 1650363711000 , \"latest_opration_time\" : 1653578769000 , \"latest_consume_free_time\" : 1651228080000 , \"account_resource\" : { \"latest_consume_time_for_energy\" : 1653578769000 } , \"owner_permission\" : { \"permission_name\" : \"owner\" , \"threshold\" : 1 , \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" : 1 } ] } , \"active_permission\" : [ { \"type\" : \"Active\" , \"id\" : 2 , \"permission_name\" : \"active\" , \"threshold\" : 1 , \"operations\" : \"7fff1fc0033e3b00000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" : 1 } ] } ] } GetAddress \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u7acb\u5373\u83b7\u5f97\u5f53\u524d\u767b\u9646\u8d26\u6237\u7684\u5730\u5740 wallet> getaddress GetAddress successful !! address = TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 GetBalance \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u67e5\u8be2\u5f53\u524d\u767b\u9646\u8d26\u6237\u7684\u4f59\u989d wallet> getbalance Balance = 2665198240 UpdateAccountPermission \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u4e3a\u5176\u4ed6\u8d26\u6237\u8d4b\u4e88\u5f53\u524d\u8d26\u6237\u7684\u90e8\u5206\u6743\u9650\uff0c\u8ba9\u5176\u4ed6\u8d26\u6237\u53ef\u4ee5\u5728\u8be5\u53d1\u8d77\u8d26\u6237\u4e0b\u5b8c\u6210\u591a\u79cd\u64cd\u4f5c\u4ee5\u4fbf\u5b9e\u73b0\u66f4\u590d\u6742\u7684\u529f\u80fd\u53ca\u66f4\u597d\u7684\u7ba1\u7406\u8d26\u6237\uff0c\u7ecf\u5e38\u7528\u4e8e\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\u7b49\u573a\u666f\u3002 wallet>UpdateAccountPermission [ ownerAddress ] [ permissions ] \u6743\u9650\u5206\u4e3a\u5982\u4e0b\u4e09\u79cd\uff1a owner : \u62e5\u6709\u8d26\u6237\u7684\u6240\u6709\u6743\u9650\u3002 active : \u53ef\u4ee5\u83b7\u5f97\u8d26\u6237\u4e2d\u7684\u7279\u5b9a\u6743\u9650\uff0c\u5982\u679c\u662fwitness\u6743\u9650\u5219\u4e0d\u5305\u62ec\u51fa\u5757\u6743\u5229\u3002 witness : \u53ea\u7528\u4e8ewitness, \u51fa\u5757\u7684\u6743\u5229\u5c06\u4f1a\u88ab\u6388\u4e88\u5176\u4ed6\u8d26\u6237\u3002 \u6ce8\u610f \u53c2\u6570 Permission \u5fc5\u987b\u6309json\u683c\u5f0f\u4f20\u5165\u4e14\u4e0d\u80fd\u6362\u884c\u3002\u5982\u679cowner\u8d26\u6237\u4e0d\u662f\u8d85\u7ea7\u4ee3\u8868\uff0c\u5219\u4e0d\u8981\u6388\u6743witness\u6743\u9650\u7ed9\u5176\u4ed6\u8d26\u6237\u3002 \u793a\u4f8b\uff1a wallet> updateaccountpermission TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"owner_permission\" : { \"keys\" : [{ \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 }] , \"threshold\" :1, \"type\" :0, \"permission_name\" : \"owner\" } , \"active_permissions\" : [{ \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [{ \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 }] , \"threshold\" :2, \"type\" :2, \"permission_name\" : \"active12323\" }]} { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner\" : { \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 } ] , \"threshold\" :1, \"permission_name\" : \"owner\" } , \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"actives\" : [ { \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 } ] , \"threshold\" :2, \"type\" : \"Active\" , \"permission_name\" : \"active12323\" } ] } , \"type_url\" : \"type.googleapis.com/protocol.AccountPermissionUpdateContract\" } , \"type\" : \"AccountPermissionUpdateContract\" } ] , \"ref_block_bytes\" : \"4e88\" , \"ref_block_hash\" : \"11a47859be13f689\" , \"expiration\" :1656423231000, \"timestamp\" :1656423171818 } , \"raw_data_hex\" : \"0a024e88220811a47859be13f6894098dc92d49a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a30\" } before sign transaction hex string is 0a8d020a024e88220811a47859be13f6894098dc92d49a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: after sign transaction hex string is 0a8d020a024e88220811a47859be13f6894096bcb5de9a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a301241881b00f8e8828d9347469fcbcec730093841c2363561243b7162a9669439266049ab82f20f97a136adc88feff0a4d5aa57b11f762eaa7e05105d27ec5d55a33900 txid is 3dce7f18f6cf6962c38904678947b3b32f9e94ba6460874679d8ed063bb1c0eb UpdateAccountPermission successful !!! \u8d26\u6237\u8d44\u6e90 \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a freezeBalance unfreezeBalance getDelegatedResource freezeBalanceV2 unfreezeBalanceV2 delegateResource unDelegateResource withdrawExpireUnfreeze getAvailableUnfreezeCount getCanWithdrawUnfreezeAmount getCanDelegatedMaxSize getDelegatedResourceV2 getDelegatedResourceAccountIndexV2 GetAccountNet GetAccountResource freezeBalance \u00b6 \u901a\u8fc7\u8d28\u62bc\u4e00\u5b9a\u6570\u91cf\u7684TRX\u53ef\u4ee5\u83b7\u5f97 \u5e26\u5bbd \uff0c \u80fd\u91cf \u4ee5\u53ca TRON Power \uff08\u6295\u7968\u6743\uff09\u3002\u7528\u6237\u540c\u6837\u4e5f\u53ef\u4ee5\u901a\u8fc7\u8d28\u62bcTRX\u6765\u4e3a\u522b\u4eba\u63d0\u4f9b \u5e26\u5bbd \u548c \u80fd\u91cf \u3002\u8d28\u62bc\u8d44\u4ea7\u7684\u5355\u4f4d\u662fsun\u3002\u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\uff0c\u8bf7\u4f7f\u7528freezeBalanceV2\u63a5\u53e3\u8d28\u62bcTRX\u3002 wallet> freezeBalance [ OwnerAddress ] [ frozen_balance ] [ frozen_duration ] [ ResourceCode:0 BANDWIDTH, 1 ENERGY ] [ receiverAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\uff0c\u4e3a\u9009\u586b\uff0c\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u5f55\u8d26\u6237\u5730\u5740\u3002 frozen_balance \u662f\u6240\u51bb\u7ed3TRX\u7684\u6570\u503c,\u5355\u4f4d\u4e3a sun , \u6700\u5c0f\u51bb\u7ed3\u503c\u4e3a1000000sun\u3002 frozen_duration \u51bb\u7ed3\u5929\u6570, \u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e3a3\u5929, \u5c31\u662f\u8bf43\u5929\u4e4b\u540e\u624d\u53ef\u89e3\u51bb\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 receiverAddress \u4e3a\u8d44\u6e90\u63a5\u53d7\u4eba\u7684\u5730\u5740\u3002 ResourceCode \u4e0e receiverAddress \u4e3a\u9009\u586b\uff0c ResourceCode \u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u503c\u4e3a0\uff0c\u5373\u9009\u62e9\u7c7b\u578b\u4e3a \u5e26\u5bbd \uff0c receiverAddress \u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a OwnerAddress \u4f7f\u7528\u3002 \u793a\u4f8b: wallet> freezeBalance TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw 1000000 3 1 TCrkRWJuHP4VgQF3xwLNBAjVVXvxRRGpbA { \"raw_data\" : { ... } , \"raw_data_hex\" : \"0a02a9b822081db2070d39d2316640c095dda19a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a30\" } before sign transaction hex string is 0a8e010a02a9b822081db2070d39d2316640c095dda19a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-22T08-21-05.158000000Z--TDQgNvjrE6RH749f8aFGyJqEEGyhV4BDEU.json The 2th keystore file name is UTC--2022-06-27T07-37-47.601000000Z--TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a8e010a02a9b822081db2070d39d2316640e0f7ffab9a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a301241c45742648e6970e01b242c9b6eca2549c8721b860ced71abd331b9fe925f3c0f184768e0d2e3b580ce787cc6f67d186a0d583226fdb69c2cc8cfc6ec42e389f600 txid is f45cb5ae425796a492d4a9ecac8d60fd48bf78dbcdbe1d92725047c5dfbffba2 FreezeBalance successful !!! unfreezeBalance \u00b6 wallet>unfreezeBalance [ OwnerAddress ] ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) [ receiverAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 receiverAddress \u4e3a\u8d44\u6e90\u63a5\u53d7\u4eba\u7684\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> unfreezebalance TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 1 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" } , \"type_url\" : \"type.googleapis.com/protocol.UnfreezeBalanceContract\" } , \"type\" : \"UnfreezeBalanceContract\" } ] , \"ref_block_bytes\" : \"c8b7\" , \"ref_block_hash\" : \"8842722f2845274d\" , \"expiration\" :1656915213000, \"timestamp\" :1656915154748 } , \"raw_data_hex\" : \"0a02c8b722088842722f2845274d40c8f5debe9c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c30\" } before sign transaction hex string is 0a8a010a02c8b722088842722f2845274d40c8f5debe9c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: after sign transaction hex string is 0a8a010a02c8b722088842722f2845274d40e8dd81c99c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c301241593a94650274df29619a6a6946258ea32a22f24a33445f943e3d72cd7d9b8ce7234d188f4bf3a6f0c90cb60af36fc77dc8d376afac9ed840f36dfd68c429fb7e00 txid is 3ea58b3ac2cb05868e70d40f58916312d927c40fd1e4c549554dc3e520c1efde UnfreezeBalance successful !!! GetDelegatedResource \u00b6 wallet>getdelegatedresource [ fromAddress ] [ toAddress ] \u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u8d44\u6e90\u8d28\u62bc\u7684\u60c5\u51b5\u3002 fromAddress \u4e3a\u8d44\u6e90\u6240\u6709\u65b9\u5730\u5740\uff0c toAddress \u4e3a\u53d7\u76ca\u65b9\u5730\u5740\u3002 wallet> getdelegatedresource TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE { \"delegatedResource\" : [ { \"from\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"frozen_balance_for_energy\" : 1000000 , \"expire_time_for_energy\" : 1656660447000 } ] } freezeBalanceV2 \u00b6 Stake 2.0\u8d28\u62bc\u63a5\u53e3\uff0c\u901a\u8fc7\u8d28\u62bc\u4e00\u5b9a\u6570\u91cf\u7684TRX\u53ef\u4ee5\u83b7\u5f97 \u5e26\u5bbd \u6216\u8005 \u80fd\u91cf \u4ee5\u53ca TRON Power \uff08\u6295\u7968\u6743\uff09\u3002\u8d28\u62bc\u8d44\u4ea7\u7684\u5355\u4f4d\u662fsun\u3002 wallet> freezeBalanceV2 [ OwnerAddress ] frozen_balance ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\uff0c\u4e3a\u9009\u586b\uff0c\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u5f55\u8d26\u6237\u5730\u5740\u3002 frozen_balance \u662f\u6240\u51bb\u7ed3TRX\u7684\u6570\u503c,\u5355\u4f4d\u4e3a sun , \u6700\u5c0f\u51bb\u7ed3\u503c\u4e3a1000000sun\u3002\u3002 ResourceCode \u7528\u6765\u6307\u793a\u8981\u83b7\u53d6\u8d44\u6e90\u7684\u7c7b\u578b, 0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 \u793a\u4f8b: wallet> freezeBalanceV2 1000000 1 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"frozen_balance\" :1000000, \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.FreezeBalanceV2Contract\" } , \"type\" : \"FreezeBalanceV2Contract\" } ] , \"ref_block_bytes\" : \"00bb\" , \"ref_block_hash\" : \"0c237850e9e3c216\" , \"expiration\" :1676620524000, \"timestamp\" :1676620465372 } , \"raw_data_hex\" : \"0a0200bb22080c237850e9e3c21640e0d3fbf2e5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e530\" } before sign transaction hex string is 0a770a0200bb22080c237850e9e3c21640e0d3fbf2e5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a770a0200bb22080c237850e9e3c21640dbb89efde5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e53012419e46cc7b6706ee6a14a541df5f9c518fae9a71ac7a7cc484c48386eb0997a8ab10c41e09feb905c5cc370fe1d15968d22cec2fd2cdc5916adfd3a78c52f8d47000 txid is 1743aa098f5e10ac8b68ccbf0ca6b5f1364a63485e442e6cb03fd33e3331e3fb freezeBalanceV2 successful !!! unfreezeBalanceV2 \u00b6 Stake2.0 \u89e3\u8d28\u62bcAPI\uff1a\u89e3\u9501\u8d28\u62bc\u7684TRX, \u91ca\u653e\u6240\u76f8\u5e94\u6570\u91cf\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\uff0c\u540c\u65f6\u56de\u6536\u76f8\u5e94\u6570\u91cf\u7684\u6295\u7968\u6743(TP)\u3002 wallet> unfreezeBalanceV2 [ OwnerAddress ] unfreezeBalance ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 unfreezeBalance \u89e3\u8d28\u62bcTRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 \u793a\u4f8b\uff1a wallet> unfreezeBalanceV2 1000000 1 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"unfreeze_balance\" :1000000 } , \"type_url\" : \"type.googleapis.com/protocol.UnfreezeBalanceV2Contract\" } , \"type\" : \"UnfreezeBalanceV2Contract\" } ] , \"ref_block_bytes\" : \"0132\" , \"ref_block_hash\" : \"0772c1a1727e2ef0\" , \"expiration\" :1676620887000, \"timestamp\" :1676620829314 } , \"raw_data_hex\" : \"0a02013222080772c1a1727e2ef040d8e791f3e5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530\" } before sign transaction hex string is 0a790a02013222080772c1a1727e2ef040d8e791f3e5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a790a02013222080772c1a1727e2ef040ecd2b4fde5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530124111bac22e9bc35e1a78c13796893e9f2b81dc99eb26d9ce7a95d0c6a0a9b5588739c52b999acd370b255d178f57bf2abef8881891f23e042ddf83c3551b8bd98e01 txid is f9e114347ea89c5d722d20226817bc41c8a39ea36be756ba216cf450ab3f1fb3 unfreezeBalanceV2 successful !!! delegateResource \u00b6 Stake 2.0 \u8d44\u6e90\u4ee3\u7406API\uff1a\u5c06\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u8d44\u6e90\u4ee3\u7406\u7ed9\u5176\u5b83\u8d26\u6237\u3002 wallet> delegateResource [ OwnerAddress ] balance ResourceCode ( 0 BANDWIDTH,1 ENERGY ) , ReceiverAddress [ lock ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 balance \u4ee3\u7406\u7684TRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u4ee3\u7406\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 ReceiverAddress \u8d44\u6e90\u63a5\u6536\u8005\u5730\u5740\u3002 lock \u7528\u6765\u6307\u793a\u662f\u5426\u5c06\u8be5\u8d44\u6e90\u4ee3\u7406\u9501\u5b9a\u4e09\u5929\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba4\u503c\u4e3a0\uff0c0\u4e3a\u4e0d\u9501\u5b9a\uff0c1\u4e3a\u9501\u5b9a\u3002 \u793a\u4f8b\uff1a wallet> delegateResource 1000000 1 TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g 0 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"balance\" :1000000, \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.DelegateResourceContract\" } , \"type\" : \"DelegateResourceContract\" } ] , \"ref_block_bytes\" : \"020c\" , \"ref_block_hash\" : \"54e32e95d11894f8\" , \"expiration\" :1676621547000, \"timestamp\" :1676621487525 } , \"raw_data_hex\" : \"0a02020c220854e32e95d11894f840f88bbaf3e5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e530\" } before sign transaction hex string is 0a8f010a02020c220854e32e95d11894f840f88bbaf3e5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a8f010a02020c220854e32e95d11894f84093e9dcfde5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e5301241414de060e9c104bb45d745e22b7b7a30b4a89a2635c62aab152fff5d2f10b7443023a9aa487be86652b74974ff6a7d82d3dbf94cea9ac1e0a7e48e682175e3f601 txid is 0917002d0068dde7ad4ffe46e75303d11192e17bfa78934a5f867c5ae20720ec delegateResource successful !!! unDelegateResource \u00b6 Stake 2.0 \u53d6\u6d88\u8d44\u6e90\u4ee3\u7406API\uff1a\u53d6\u6d88\u4e3a\u76ee\u6807\u5730\u5740\u4ee3\u7406\u7684\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u3002 wallet> unDelegateResource [ OwnerAddress ] balance ResourceCode ( 0 BANDWIDTH,1 ENERGY ) , ReceiverAddress OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 balance \u89e3\u4ee3\u7406\u7684TRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u89e3\u9664\u4ee3\u7406\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 ReceiverAddress \u8d44\u6e90\u63a5\u6536\u8005\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> unDelegateResource 1000000 1 TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"balance\" :1000000, \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.UnDelegateResourceContract\" } , \"type\" : \"UnDelegateResourceContract\" } ] , \"ref_block_bytes\" : \"0251\" , \"ref_block_hash\" : \"68ac15256c213e71\" , \"expiration\" :1676621754000, \"timestamp\" :1676621695001 } , \"raw_data_hex\" : \"0a020251220868ac15256c213e714090ddc6f3e5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530\" } before sign transaction hex string is 0a91010a020251220868ac15256c213e714090ddc6f3e5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a91010a020251220868ac15256c213e7140febde9fde5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530124102ebde16d1abaccd976f8ead4b5acf92b05f7d9796c28ca6a26b4e51442e638e5e33e598bb03732da24dc761a39b9d307c045b55323128dc9b07510ffc48933a01 txid is 537a3f4461ab55c705b77503bc42f469bfc22c0cb8588b8f3641ab40117ebfd8 unDelegateResource successful !!! withdrawExpireUnfreeze \u00b6 Stake 2.0 \u63d0\u53d6\u8d28\u62bc\u672c\u91d1API\uff1a\u63d0\u53d6\u5df2\u8fc7\u9501\u5b9a\u671f\u7684\u89e3\u8d28\u62bc\u7684\u672c\u91d1\u3002 wallet> withdrawExpireUnfreeze [ OwnerAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> withdrawExpireUnfreeze getavailableunfreezecount \u00b6 Stake 2.0 API: \u67e5\u8be2\u5f53\u4e0b\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570\u3002 wallet> getavailableunfreezecount [ OwnerAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> GetAvailableUnfreezeCount { \"count\" : 30 } getcanwithdrawunfreezeamount \u00b6 Stake 2.0 API: \u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf\u3002 wallet> getcanwithdrawunfreezeamount ownerAddress timestamp OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 timestamp \u67e5\u8be2\u7684\u63d0\u73b0\u65f6\u95f4\u6233\uff0c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u3002 \u793a\u4f8b\uff1a wallet> getcanwithdrawunfreezeamount 1776621695001 { \"amount\" : 4000000 } getcandelegatedmaxsize \u00b6 Stake 2.0 API: \u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf\u3002 wallet> getcandelegatedmaxsize ownerAddress type OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 type \u67e5\u8be2\u7684\u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf\u3002 \u793a\u4f8b\uff1a wallet> getcandelegatedmaxsize 1 { \"max_size\" : 11000000 } getdelegatedresourcev2 \u00b6 Stake 2.0 API\uff1a\u67e5\u8be2\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u3002 wallet> getdelegatedresourcev2 fromAddress toAddress fromAddress \u8d44\u6e90\u4ee3\u7406\u5730\u5740\u3002 toAddress \u8d44\u6e90\u63a5\u6536\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> getdelegatedresourcev2 TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g { \"delegatedResource\" : [ { \"from\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"to\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"frozen_balance_for_bandwidth\" : 7000000 , \"frozen_balance_for_energy\" : 3000000 } ] } getdelegatedresourceaccountindexv2 \u00b6 Stake 2.0 API\uff1a\u67e5\u8be2\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) wallet> getdelegatedresourceaccountindexv2 ownerAddress OwnerAddress \u67e5\u8be2\u7684\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> getdelegatedresourceaccountindexv2 TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM { \"account\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"fromAccounts\" : [ \"TUznHJfHe6gdYY7gvWmf6bNZHuPHDZtowf\" ] , \"toAccounts\" : [ \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" ] } GetAccountNet \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u5185\u7684\u5e26\u5bbd\u4f7f\u7528\u60c5\u51b5 \u793a\u4f8b\uff1a wallet> getaccountnet TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"freeNetUsed\" : 262 , \"freeNetLimit\" : 1500 , \"TotalNetLimit\" : 43200000000 , \"TotalNetWeight\" : 8725123062 } GetAccountResource \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\u4f7f\u7528\u60c5\u51b5 \u793a\u4f8b\uff1a wallet> getaccountresource TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"freeNetUsed\" : 262 , \"freeNetLimit\" : 1500 , \"TotalNetLimit\" : 43200000000 , \"TotalNetWeight\" : 8725123062 , \"tronPowerLimit\" : 1 , \"TotalEnergyLimit\" : 90000000000 , \"TotalEnergyWeight\" : 328098231 } \u4ea4\u6613 \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a SendCoin AddTransactionSign BroadcastTransaction GetTransactionApprovedList SendCoin \u00b6 > sendcoin [toAddress] [amount] toAddress \u4e3a\u76ee\u6807\u5730\u5740\uff0c amount \u4e3a\u8f6c\u8d26\u6570\u989d\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u591a\u7b7e\u4ea4\u6613\u4f8b\u5b50\uff0c\u5176\u4e2d\u7684\u7b7e\u540d\u5404\u8d26\u6237\u7684\u6388\u6743\u60c5\u51b5\u4e3a UpdateAccountPermission \u90e8\u5206\u7684\u4f8b\u5b50\u4e2d\u5b9e\u9645\u7684\u6388\u6743\u60c5\u51b5,\u8bf7\u53c2\u8003\uff1a wallet> sendcoin TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE 10 { \"raw_data\" : { \"contract\" : [ \u00b7\u00b7\u00b7 \"raw_data_hex\" : \"0a029ca12208432ed1fe1357ff7f40c0c484f19a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a708a8481f19a30\" } before sign transaction hex string is 0a83010a029ca12208432ed1fe1357ff7f40c0c484f19a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a708a8481f19a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. 2 Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 1 Please input your password. password: Current signWeight is: { \"result\" : { \"code\" : \"NOT_ENOUGH_PERMISSION\" } , \"approved_list\" : [ \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" ] , \"permission\" : { \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 } ] , \"threshold\" :2, \"id\" :2, \"type\" : \"Active\" , \"permission_name\" : \"active12323\" } , \"current_weight\" :1, \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483\" , \"transaction\" : { \"signature\" : [ \"990001e909e638bbaa5de9b392121971d25cabde1391f5e164cd8a14608812df01a273e867c2329b8adb233599c5d353c435e789c777fd3e0b9fe83f0737a91101\" ] , \"txID\" : \"ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483\" , \"raw_data\" :\u00b7\u00b7\u00b7, \"raw_data_hex\" : \"0a029ca12208432ed1fe1357ff7f40a2b3a7fb9a305a67080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a2802708a8481f19a30\" } } } Please confirm if continue add signature enter y or Y, else any other y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 4 Please input your password. password: after sign transaction hex string is 0a85010a029ca12208432ed1fe1357ff7f40a2b3a7fb9a305a67080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a2802708a8481f19a301241990001e909e638bbaa5de9b392121971d25cabde1391f5e164cd8a14608812df01a273e867c2329b8adb233599c5d353c435e789c777fd3e0b9fe83f0737a91101124141ba3ffe9c7bb1ed184df8bf635d8c987982b2f4b22c447666ac82726f4a97cb2ef4d3fabd64137b8d59239bd7173c74264733ed140ccd04934a88c438de1cab00 txid is ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483 Send 10 Sun to TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE successful !! \u5728\u8f6c\u8d26\u8fc7\u7a0b\u4e2d\uff0c\u9700\u8981\u8f93\u5165 permission_id \uff0c\u5176\u9ed8\u8ba4\u503c\u4e3a0\uff0c\u6b64\u65f6\u8868\u793a\u8be5\u7b14\u4ea4\u6613\u53ea\u9700\u53d1\u8d77\u4eba\u7b7e\u540d\u5373\u53ef\u3002 \u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u8f93\u5165\u4e86\u201c2\u201d\uff0c\u8868\u793a\u4f7f\u7528\u591a\u91cd\u7b7e\u540d\u5b8c\u6210\u6b64\u7b14\u4ea4\u6613\uff0c\u6b64\u65f6\u9700\u8981\u62e5\u6709 actives \u6743\u9650\u7684\u4e24\u4e2a\u8d26\u6237\u90fd\u7b7e\u540d\u624d\u80fd\u5b8c\u6210\u4ea4\u6613\uff0c\u8bf7\u53c2\u7167 UpdateAccountPermission \u90e8\u5206\u7684\u4f8b\u5b50\uff0c\u9996\u5148\u7531 TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej \u5b8c\u6210\u7b7e\u540d\uff0c\u6b64\u65f6\u7cfb\u7edf\u4f1a\u8be2\u95ee\u662f\u5426\u7ee7\u7eed\u7b7e\u540d\uff0c\u8f93\u5165\u201cy\u201d\u4e4b\u540e\uff0c\u518d\u7531 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE \u5b8c\u6210\u7b7e\u540d\u3002 \u4e24\u4e2a\u8d26\u6237\u7684\u6743\u91cd\u5404\u4e3a1\uff0c\u5b8c\u6210\u591a\u7b7e\u7684\u6743\u91cd\u9600\u503c\u4e3a2\uff0c\u6b64\u65f6\u7b7e\u540d\u6761\u4ef6\u8fbe\u6210\uff0c\u4ea4\u6613\u6210\u529f\u3002\u8fd9\u4e2a\u4f8b\u5b50\u4e3a\u4f7f\u7528\u540c\u4e00\u5ba2\u6237\u7aef\u65f6\u5982\u4f55\u5b8c\u6210\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\u3002\u5f53\u4f7f\u7528\u591a\u4e2a\u5ba2\u6237\u7aef\u65f6\uff0c\u8bf7\u53c2\u8003\u4e0b\u9762\u8fd9\u4e2a\u547d\u4ee4\u3002 AddTransactionSign \u00b6 \u5f53\u6709\u591a\u4e2a\u5ba2\u6237\u7aef\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528\u8be5\u547d\u4ee4\u8fdb\u884c\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\uff0c\u6b64\u65f6\u9700\u8981\u4ea4\u6613\u672c\u4f53\u7684hex string\u3002 \u793a\u4f8b\uff1a wallet> addtransactionsign 0a83010a0241aa2208b2d2c13c86e8bd884098acb1cf9a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30 Please input permission id. 0 Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \"txID\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"amount\" :10, \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" } , \"type_url\" : \"type.googleapis.com/protocol.TransferContract\" } , \"type\" : \"TransferContract\" } ] , \"ref_block_bytes\" : \"41aa\" , \"ref_block_hash\" : \"b2d2c13c86e8bd88\" , \"expiration\" :1656434882649, \"timestamp\" :1656413188328 } , \"raw_data_hex\" : \"0a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30\" } Transaction hex string is 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 \u6ce8\u610f \u7b7e\u540d\u540e\uff0c\u5404\u65b9\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u624b\u52a8\u5b8c\u6210\u4ea4\u6613\u5e7f\u64ad\u3002 BroadcastTransaction \u00b6 \u8981\u4f7f\u7528\u4ea4\u6613\u672c\u4f53hex string\u5b8c\u6210\u4ea4\u6613\u5e7f\u64ad\u65f6\uff0c\u8bf7\u4f7f\u7528\u672c\u547d\u4ee4\u3002 wallet> broadcasttransaction 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 BroadcastTransaction successful !!! GetTransactionApprovedList \u00b6 \u901a\u8fc7\u4ea4\u6613\u672c\u4f53hex string\u4f7f\u7528\u672c\u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u7b7e\u540d\u5217\u8868 \u793a\u4f8b\uff1a wallet> getTransactionApprovedList 0a8c010a020318220860e195d3609c86614096eadec79d2d5a6e080112680a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412370a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18808084fea6dee11128027094bcb8bd9d2d1241c18ca91f1533ecdd83041eb0005683c4a39a2310ec60456b1f0075b4517443cf4f601a69788f001d4bc03872e892a5e25c618e38e7b81b8b1e69d07823625c2b0112413d61eb0f8868990cfa138b19878e607af957c37b51961d8be16168d7796675384e24043d121d01569895fcc7deb37648c59f538a8909115e64da167ff659c26101 { \"result\" : { } , \"approved_list\" : [ \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" ] , \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"transaction\" : { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \"txID\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"amount\" :10, \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" } , \"type_url\" : \"type.googleapis.com/protocol.TransferContract\" } , \"type\" : \"TransferContract\" } ] , \"ref_block_bytes\" : \"41aa\" , \"ref_block_hash\" : \"b2d2c13c86e8bd88\" , \"expiration\" :1656434882649, \"timestamp\" :1656413188328 } , \"raw_data_hex\" : \"0a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30\" } } } \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a GetNextMaintenanceTime ListNodes GetBlock GetBlockById GetBlockByLatestNum GetBlockByLimitNext GetTransactionById GetTransactionCountByBlockNum GetTransactionInfoById GetTransactionInfoByBlockNum GetTransactionSignWeight GetNextMaintenanceTime \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u67e5\u8be2\u4e0b\u4e00\u4e2a\u7ef4\u62a4\u65f6\u95f4 wallet> GetNextMaintenanceTime Next maintenance time is : 2022-06-29 16:40:00 ListNodes \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u5217\u51fa\u5176\u4ed6\u8282\u70b9\u7684\u5730\u5740\u548c\u7aef\u53e3\u4fe1\u606f wallet> listnodes IP::1.23.456.789 Port::12345 IP::2.345.67.89 Port::12345 IP::345.678.901.234 Port::12345 \u00b7\u00b7\u00b7 GetBlock \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u533a\u5757\uff0c\u5982\u4e0d\u8f93\u5165\u533a\u5757\u9ad8\u5ea6\uff0c\u5219\u9ed8\u8ba4\u67e5\u8be2\u6700\u65b0\u533a\u5757\u3002 wallet> getblock Get current block !!! { \"block_header\" : { \"raw_data\" : { \"number\" :27774469, \"txTrieRoot\" : \"0000000000000000000000000000000000000000000000000000000000000000\" , \"witness_address\" : \"TQuzjxWcqHSh1xDUw4wmMFmCcLjz4wSCBp\" , \"parentHash\" : \"0000000001a7ce048eb88d7c3c5e9c5f8e93a6cc568f47140e243d00d0f9280a\" , \"version\" :24, \"timestamp\" :1656919215000 } , \"witness_signature\" : \"3af25276891b1cf7f9f72e63ad956b50e5819fb3fa6f0b6393ed092e53a90a5438620b92b5d499e0068c6775b723e3c90677157b3e9f7b8933d1e863716145f500\" } } GetBlockById \u00b6 \u901a\u8fc7\u533a\u5757\u54c8\u5e0c\u67e5\u8be2\u533a\u5757\u4fe1\u606f wallet> getblockbyid [blockID] \u793a\u4f8b\uff1a wallet> getblockbyid 0000000001a7cd54ee2b302cfd443cccec78e55a31902d2e7ea47e737c1a5ede { \"block_header\" : { \"raw_data\" : { \"number\" :27774292, \"txTrieRoot\" : \"a60f8cb160d06d5279cb463925274e18fec37f0414c4d8fdc4fb2299ccb0a8bf\" , \"witness_address\" : \"TGsdxpHNJaxsVNFFdb4R6Rib1TsKGon2Wp\" , \"parentHash\" : \"0000000001a7cd53685867286b17fa0f2389e1d3026bea0a0019c5fc37f873cb\" , \"version\" :24, \"timestamp\" :1656918678000 } , \"witness_signature\" : \"a93db1a8d989c6637d587369de2872a008f14d1df8f0aaeda8a54c324a44c269367ea31daf623834fd6a4ef3f6150ab8d370adff1df6c0e8c96af9cf34408d5600\" } , \u00b7\u00b7\u00b7 GetBlockByLatestNum \u00b6 \u83b7\u53d6\u6700\u8fd1\u7684n\u4e2a\u533a\u5757\u7684\u4fe1\u606f\uff0cn \u5fc5\u987b\u6ee1\u8db3 0 < n < 100\u3002 wallet> getblockbylatestnum [n] GetBlockByLimitNext \u00b6 \u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u533a\u95f4\u5185\u7684\u533a\u5757\u4fe1\u606f\u3002 startBlock \u4e3a\u533a\u95f4\u5f00\u59cb\u7684\u533a\u5757\u9ad8\u5ea6\uff0c endBLock \u4e3a\u533a\u95f4\u7ed3\u675f\u7684\u533a\u5757\u9ad8\u5ea6\u3002 wallet> GetBlockByLimitNext [startBlock, endBlock] \u793a\u4f8b\uff1a wallet> getblockbylimitnext 27774670 27774674 [ { \"block_header\" : { \"raw_data\" : { \"number\" :27774670, \"txTrieRoot\" : \"0eb9ba48deda22fafa613c0aefa6d3e0b21261ad82a126ce99a6b80e8b68045c\" , \"witness_address\" : \"TVKfvNUMcZdZbxhPLb2CkQ4nyUUhvwhv1b\" , \"parentHash\" : \"0000000001a7cecd7a2cdc58fdfd2edbfeaeb530958879bf1a299cc30043cd0b\" , \"version\" :24, \"timestamp\" :1656919824000 } , \"witness_signature\" : \"ee6653289e24edd24d70f4975e12934573d6e798a2a5c5e26e0b13bc6d25138c49a0f55fb0e9a5c503622b5877811403577a5e278528293d05c5f0b9d5d5542401\" } , \u00b7\u00b7\u00b7 GetTransactionById \u00b6 \u901a\u8fc7\u4ea4\u6613\u54c8\u5e0c\u67e5\u8be2\u4ea4\u6613\u4fe1\u606f\u3002 wallet> GetTransactionById [ transactionID ] transactionID \u662f\u4ea4\u6613\u54c8\u5e0c\uff0c\u793a\u4f8b\u5982\u4e0b\uff1a wallet> gettransactionbyid 86f09e0152cae9424685411439601c93f9a0ee484ab6e4184cb02294e85cdf89 { \"ret\" : [ { \"contractRet\" : \"SUCCESS\" } ] , \"signature\" : [ \"26b70d14ca08de644c4b1d8b71952ff57078a36719497bb188040ba589a808c7c896deb82fadcaad7d68be3d1d02bd2e490227ca90cc8b050f750aa10df6105300\" ] , \"txID\" : \"86f09e0152cae9424685411439601c93f9a0ee484ab6e4184cb02294e85cdf89\" , \"raw_data\" : { \u00b7\u00b7\u00b7 GetTransactionCountByBlockNum \u00b6 \u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u8be5\u533a\u5757\u5185\u6709\u591a\u5c11\u7b14\u4ea4\u6613\u3002\u6bd4\u5982\u4e0b\u4f8b\u4e2d\uff0c\u533a\u5757\u9ad8\u5ea6\u4e3a27633562\u3002 wallet> gettransactioncountbyblocknum 27633562 The block contains 4 transactions GetTransactionInfoById \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u901a\u8fc7\u4ea4\u6613\u54c8\u5e0c\u83b7\u53d6\u4ea4\u6613\u8be6\u60c5\uff0c\u901a\u5e38\u7528\u4e8e\u67e5\u770b\u667a\u80fd\u5408\u7ea6\u7684\u89e6\u53d1\u60c5\u51b5\u3002 \u793a\u4f8b\uff1a wallet> gettransactioninfobyid 6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87 { \"id\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"blockNumber\" : 27609041 , \"blockTimeStamp\" : 1656417906000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 265 } } GetTransactionInfoByBlockNum \u00b6 \u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u8be5\u533a\u5757\u5185\u4ea4\u6613\u7684\u8be6\u60c5\uff0c blockNum \u4e3a\u533a\u5757\u9ad8\u5ea6\u3002 wallet> gettransactioninfobyblocknum [blockNum] \u793a\u4f8b\uff1a wallet> gettransactioninfobyblocknum 27775479 [ { \"result\" : \"FAILED\" , \"packingFee\" :882440, \"fee\" :882440, \"blockNumber\" :27775479, \"contractResult\" : [ \"08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002173746172742074696d65206265666f726520626c6f636b2e74696d657374616d7000000000000000000000000000000000000000000000000000000000000000\" ] , \u00b7\u00b7\u00b7 \"result\" : \"FAILED\" , \"packingFee\" :345000, \"fee\" :345000, \"blockNumber\" :27775479, \"contractResult\" : [ \"08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002345524332303a207472616e7366657220746f20746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000\" ] , \"blockTimeStamp\" :1656922275000, \"resMessage\" : \"REVERT opcode executed\" , \"receipt\" : { \"result\" : \"REVERT\" , \"net_fee\" :345000, \"energy_usage_total\" :647, \"origin_energy_usage\" :647 } , \"id\" : \"13d1e01639edd3f5200789b2fe4d3fdeb765f0bbe4548a1fb69583da85cf7980\" , \"contract_address\" : \"TBLfSzQo8TGtCotPD5JZntpZfQqPFLehTE\" } ] GetTransactionSignWeight \u00b6 \u901a\u8fc7\u4ea4\u6613\u672c\u4f53hex string\u83b7\u53d6\u7b7e\u540d\u4fe1\u606f \u793a\u4f8b\uff1a wallet>getTransactionSignWeight 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 { \"result\" : { } , \"approved_list\" : [ \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" ] , \"permission\" : { \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 } ] , \"threshold\" :1, \"permission_name\" : \"owner\" } , \"current_weight\" :1, \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"transaction\" : { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \u00b7\u00b7\u00b7 } } } \u667a\u80fd\u5408\u7ea6 \u00b6 \u672c\u8282\u4e3a\u6240\u6709\u4e0e\u667a\u80fd\u5408\u7ea6\u76f8\u5173\u7684\u547d\u4ee4: DeployContract TriggerContract TriggerConstantContract EstimateEnergy GetContract UpdateEnergyLimit UpdateSetting UnfreezeAsset DeployContract \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u90e8\u7f72\u667a\u80fd\u5408\u7ea6 wallet> DeployContract [ownerAddress] [contractName] [ABI] [byteCode] [constructor] [params] [isHex] [fee_limit] [consume_user_resource_percent] [origin_energy_limit] [value] [token_value] [token_id](e.g: TRXTOKEN, use # if don't provided) library:address,...> OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 contractName \u4e3a\u667a\u80fd\u5408\u7ea6\u7684\u540d\u79f0\u3002 ABI \u4e3a\u7f16\u8bd1\u65f6\u751f\u6210\u7684ABI\u7801\u3002 byteCode \u4e3a\u7f16\u8bd1\u65f6\u751f\u6210\u7684bytecode\u3002 constructor , params , isHex \u8fd9\u4e09\u4e2a\u53c2\u6570\u5b9a\u4e49\u4e86bytecode\u7684\u683c\u5f0f\uff0c\u4e5f\u5c31\u51b3\u5b9a\u4e86\u4ece\u53c2\u6570\u6765\u89e3\u6790bytecode\u7684\u65b9\u5f0f\u3002 fee_limit \u7528\u6765\u8bbe\u7f6e\u5355\u7b14\u4ea4\u6613\u6240\u80fd\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\u3002 consume_user_resource_percent \u4e3a\u7528\u6237\u8c03\u7528\u5408\u7ea6\u65f6\u6d88\u8017TRX\u6240\u5360\u7684\u6bd4\u4f8b\uff0c\u4e3a\u767e\u5206\u6570[0, 100%]\u3002 origin_energy_limit \u4e3a\u89e6\u53d1\u4e00\u6b21\u5408\u7ea6\u5f00\u53d1\u8005\u6240\u6d88\u8017TRX\u7684\u4e0a\u9650\u3002 value \u4e3a\u8f6c\u5165\u5230\u5408\u7ea6\u5730\u5740\u4e2d\u7684TRX\u7684\u6570\u989d\u3002 token_value \u4e3a\u5408\u7ea6\u4e2dTRC-10 token\u7684\u6570\u91cf\u3002 token_id \u4e3aTRC-10 \u7684ID\u3002 \u793a\u4f8b: wallet> deployContract normalcontract544 [{ \"constant\" :false, \"inputs\" : [{ \"name\" : \"i\" , \"type\" : \"uint256\" }] , \"name\" : \"findArgsByIndexTest\" , \"outputs\" : [{ \"name\" : \"z\" , \"type\" : \"uint256\" }] , \"payable\" :false, \"stateMutability\" : \"nonpayable\" , \"type\" : \"function\" }] 608060405234801561001057600080fd5b50610134806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029 # # false 1000000000 75 50000 0 0 # \u53ef\u4ee5\u4f7f\u7528 getTransactionInfoById \u6765\u67e5\u770b\u5408\u7ea6\u7684\u6267\u884c\u7ed3\u679c\uff0c\u793a\u4f8b\u5982\u4e0b: wallet> getTransactionInfoById 4978dc64ff746ca208e51780cce93237ee444f598b24d5e9ce0da885fb3a3eb9 { \"id\" : \"8c1f57a5e53b15bb0a0a0a0d4740eda9c31fbdb6a63bc429ec2113a92e8ff361\" , \"fee\" : 6170500 , \"blockNumber\" : 1867 , \"blockTimeStamp\" : 1567499757000 , \"contractResult\" : [ \"6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029\" ] , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"receipt\" : { \"energy_fee\" : 6170500 , \"energy_usage_total\" : 61705 , \"net_usage\" : 704 , \"result\" : \"SUCCESS\" } } TriggerContract \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u89e6\u53d1\u667a\u80fd\u5408\u7ea6 wallet> TriggerContract [ownerAddress] [contractAddress] [method] [args] [isHex] [fee_limit] [value] [token_value] [token_id] OwnerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 ContractAddress \u4e3a\u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u4e3a\u8c03\u7528\u51fd\u6570\u6216\u8005\u53c2\u6570\u7684\u540d\u79f0\uff0c\u8bf7\u53c2\u8003\u4e0b\u9762\u7684\u4f8b\u5b50\u3002 args \u4e3a\u4e00\u4e2a\u5360\u4f4d\u53c2\u6570, \u53ef\u4ee5\u4f20\u5165'#'\u4ee3\u66ff\u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\u3002 isHex \u51b3\u5b9a\u4e86 method \u548c args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 fee_limit \u7528\u6765\u8bbe\u7f6e\u5355\u7b14\u4ea4\u6613\u6240\u80fd\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. token_value \u4e3aTRC-10 token\u7684\u6570\u989d. token_id \u4e3aTRC-10 token\u7684ID, \u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff. \u793a\u4f8b\uff1a wallet> triggerContract TGdtALTPZ1FWQcc5MW7aK3o1ASaookkJxG findArgsByIndexTest ( uint256 ) 0 false 1000000000 0 0 # \u53ef\u4ee5\u4f7f\u7528 getTransactionInfoById \u6765\u67e5\u770b\u5408\u7ea6\u7684\u6267\u884c\u7ed3\u679c\uff0c\u793a\u4f8b\u5982\u4e0b: wallet> getTransactionInfoById 7d9c4e765ea53cf6749d8a89ac07d577141b93f83adc4015f0b266d8f5c2dec4 { \"id\" : \"de289f255aa2cdda95fbd430caf8fde3f9c989c544c4917cf1285a088115d0e8\" , \"fee\" : 8500 , \"blockNumber\" : 2076 , \"blockTimeStamp\" : 1567500396000 , \"contractResult\" : [ \"\" ] , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"receipt\" : { \"energy_fee\" : 8500 , \"energy_usage_total\" : 85 , \"net_usage\" : 314 , \"result\" : \"REVERT\" } , \"result\" : \"FAILED\" , \"resMessage\" : \"REVERT opcode executed\" } TriggerConstantContract \u00b6 \u65e2\u53ef\u4ee5\u8c03\u7528\u5408\u7ea6\u53ea\u8bfb\u51fd\u6570(view \u6216 pure\u4fee\u9970\u7684\u51fd\u6570)\uff0c\u7528\u4e8e\u5408\u7ea6\u6570\u636e\u67e5\u8be2\uff1b\u4e5f\u53ef\u4ee5\u8c03\u7528\u5408\u7ea6\u975e\u53ea\u8bfb\u51fd\u6570\uff0c\u7528\u4e8e\u9884\u5224\u4ea4\u6613\u662f\u5426\u53ef\u4ee5\u6267\u884c\u6210\u529f\u6216\u8005\u9884\u4f30\u4ea4\u6613\u7684\u80fd\u91cf\u6d88\u8017\u3002 wallet> TriggerConstantContract ownerAddress(use # if you own) contractAddress method args isHex [value token_value token_id(e.g: TRXTOKEN, use # if don't provided)] ownerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u662f\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\uff0c\u8bf7\u8f93\u5165#\u3002 contractAddress \u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u3002 args \u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684\u53c2\u6570, \u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\uff0c\u8bf7\u8f93\u5165#\u3002 isHex args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_value \u4e3aTRC-10 token\u7684\u6570\u989d\u3002\u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_id \u4e3aTRC-10 token\u7684ID, \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 \u793a\u4f8b\uff1a wallet> TriggerConstantContract TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e TVSvjZdyDSNocHm7dP3jvCmMNsCnMTPa5W transfer ( address,uint256 ) 0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c00000000000000000000000000000000000000000000000000038d7ea4c68000 true transfer ( address,uint256 ) :a9059cbb Execution result = { \"constant_result\" : [ \"0000000000000000000000000000000000000000000000000000000000000001\" ] , \"result\" : { \"result\" : true } , \"energy_used\" : 13253 , \"logs\" : [ { \"address\" : \"LUijWGF4iFrT7hV37Q2Q45DU5TUBvVZb7\" , \"topics\" : [ \"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\" , \"000000000000000000000000bdc8ee51fdd1b1e01d71f836481828f88463c838\" , \"0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c\" ] , \"data\" : \"00000000000000000000000000000000000000000000000000038d7ea4c68000\" } ] } EstimateEnergy \u00b6 \u4e3a\u667a\u80fd\u5408\u7ea6\u4ea4\u6613\u9884\u4f30\u80fd\u91cf\u6d88\u8017\u3002 estimateEnergy \u662f\u53ef\u9009\u63a5\u53e3, \u6709\u4e9b FullNode \u8282\u70b9\u53ef\u80fd\u6ca1\u6709\u5f00\u542f\u8be5\u63a5\u53e3\uff0c\u56e0\u6b64\uff0c\u5982\u82e5\u8c03\u7528 estimateEnergy \u63a5\u53e3\u65f6\u6355\u83b7\u5230\u8282\u70b9\u4e0d\u652f\u6301\u6b64\u529f\u80fd\u7684\u9519\u8bef\u4fe1\u606f (this node does not support estimate energy)\uff0c\u5efa\u8bae\u7ee7\u7eed\u4f7f\u7528 triggerconstantcontract \u63a5\u53e3\u9884\u4f30\u80fd\u91cf\u6d88\u8017\u3002 wallet> EstimateEnergy ownerAddress contractAddress method args isHex [value token_value token_id] ownerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u662f\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\uff0c\u8bf7\u8f93\u5165#\u3002 contractAddress \u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u3002 args \u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684\u53c2\u6570, \u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\uff0c\u8bf7\u8f93\u5165#\u3002 isHex args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_value \u4e3aTRC-10 token\u7684\u6570\u989d\u3002\u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_id \u4e3aTRC-10 token\u7684ID, \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 \u793a\u4f8b\uff1a wallet> EstimateEnergy TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e TVSvjZdyDSNocHm7dP3jvCmMNsCnMTPa5W transfer ( address,uint256 ) 0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c00000000000000000000000000000000000000000000000000038d7ea4c68000 true transfer ( address,uint256 ) :a9059cbb Estimate energy result = { \"result\" : { \"result\" : true } , \"energy_required\" : 14910 } GetContract \u00b6 \u7528\u5408\u7ea6\u5730\u5740\u8c03\u51fa\u5408\u7ea6\u4fe1\u606f wallet> GetContract [contractAddress] \u793a\u4f8b: wallet> GetContract TGdtALTPZ1FWQcc5MW7aK3o1ASaookkJxG { \"origin_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"abi\" : { \"entrys\" : [ { \"name\" : \"findArgsByIndexTest\" , \"inputs\" : [ { \"name\" : \"i\" , \"type\" : \"uint256\" } ] , \"outputs\" : [ { \"name\" : \"z\" , \"type\" : \"uint256\" } ] , \"type\" : \"Function\" , \"stateMutability\" : \"Nonpayable\" } ] } , \"bytecode\" : \"608060405234801561001057600080fd5b50610134806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029\" , \"consume_user_resource_percent\" : 75 , \"name\" : \"normalcontract544\" , \"origin_energy_limit\" : 50000 , \"code_hash\" : \"23423cece3b4866263c15357b358e5ac261c218693b862bcdb90fa792d5714e6\" } UpdateEnergyLimit \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u4fee\u6539\u5408\u7ea6\u4e2d\u80fd\u91cf\u6d88\u8017\u7684\u4e0a\u9650,\u53c2\u6570\u5b9a\u4e49\u8bf7\u53c2\u8003\u4e0a\u9762\u7684\u547d\u4ee4\u3002 wallet> UpdateEnergyLimit [ownerAddress] [contract_address] [energy_limit] \u793a\u4f8b: wallet> updateenergylimit TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq 8000000 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"origin_energy_limit\" :8000000, \"contract_address\" : \"TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq\" } , \"type_url\" : \"type.googleapis.com/protocol.UpdateEnergyLimitContract\" } , \"type\" : \"UpdateEnergyLimitContract\" } ] , \"ref_block_bytes\" : \"2d56\" , \"ref_block_hash\" : \"3e8f88e2de6bb637\" , \"expiration\" :1656993270000, \"timestamp\" :1656993210227 } , \u00b7\u00b7\u00b7 UpdateSetting for origin_energy_limit successful !!! UpdateSetting \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u4fee\u6539\u5408\u7ea6\u4e2d\u7528\u6237\u80fd\u91cf\u6d88\u8017\u7684\u6bd4\u4f8b,\u53c2\u6570\u5b9a\u4e49\u8bf7\u53c2\u8003\u4e0a\u9762\u7684\u547d\u4ee4\u3002 wallet> UpdateSetting [ownerAddress] [contract_address] [consume_user_resource_percent] \u793a\u4f8b: wallet> updateenergylimit TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq 35 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"origin_energy_limit\" :35, \"contract_address\" : \"TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq\" } , \"type_url\" : \"type.googleapis.com/protocol.UpdateEnergyLimitContract\" } , \"type\" : \"UpdateEnergyLimitContract\" } ] , \"ref_block_bytes\" : \"2d9f\" , \"ref_block_hash\" : \"c25a5c8ba398aa8f\" , \"expiration\" :1656993489000, \"timestamp\" :1656993430923 } , \u00b7\u00b7\u00b7 UpdateSetting for origin_energy_limit successful !!! TRC-10\u8d44\u4ea7 \u00b6 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a AssetIssue UpdateAsset TransferAsset ParticipateAssetissue ListAssetIssue GetAssetIssueByAccount GetAssetIssueById GetAssetIssueByName GetAssetIssueListByName AssetIssue \u00b6 \u53d1\u884cTRC10\u4ee3\u5e01\uff0c\u6bcf\u4e2a\u8d26\u6237\u5730\u5740\u667a\u80fd\u53d1\u884c\u4e00\u79cdTRC-10 token\u3002 wallet> AssetIssue [OwnerAddress] [AssetName] [AbbrName] [TotalSupply] [TrxNum] [AssetNum] [Precision] [StartDate] [EndDate] [Description Url] [FreeNetLimitPerAccount] [PublicFreeNetLimit] [FrozenAmount0] [FrozenDays0] [...] [FrozenAmountN] [FrozenDaysN] OwnerAddress \u4e3a\u4ea4\u6613\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 AssetName \u4e3a\u53d1\u884c\u7684TRC-10 token\u7684\u540d\u79f0\u3002 AbbrName \u4e3a\u53d1\u884c\u7684TRC-10 token\u540d\u79f0\u7f29\u5199\u3002 TotalSupply \u4e3a\u8be5TRC-10 token\u7684\u603b\u91cf\u3002 TotalSupply = Account Balance of Issuer + All Frozen Token Amount Account Balance Of Issuer: \u53d1\u884c\u65f6\u53d1\u884c\u4eba\u7684\u8be5\u5e01\u4f59\u989d All Frozen Token Amount: \u8be5\u5e01\u5728\u8f6c\u8d26\u548c\u53d1\u884c\u524d\u7684\u6570\u989d TrxNum , AssetNum \u8fd9\u4e24\u4e2a\u53c2\u6570\u51b3\u5b9a\u4e86\u8be5\u5e01\u53d1\u884c\u65f6\u4ea4\u6613\u7387\u662f\u591a\u5c11\u3002 Exchange Rate = TrxNum / AssetNum AssetNum : \u8be5\u5e01\u7684\u5355\u4f4d TrxNum : \u5355\u4f4d\u4e3asun (0.000001 TRX) Precision \u5c0f\u6570\u70b9\u540e\u7684\u4f4d\u6570\u3002 FreeNetLimitPerAccount \u4e3a\u6bcf\u4e2a\u8d26\u6237\u53ef\u4ee5\u4f7f\u7528\u7684\u6700\u5927\u5e26\u5bbd\u3002\u53d1\u884c\u4eba\u53ef\u4ee5\u8d28\u62bcTRX\u83b7\u5f97\u5e26\u5bbd\u3002(\u4ec5\u9650\u4e8e TransferAsset ) PublicFreeNetLimit \u4e3a\u6240\u6709\u8d26\u6237\u53ef\u7528\u7684\u6700\u5927\u5e26\u5bbd\u3002 \u53d1\u884c\u4eba\u53ef\u4ee5\u8d28\u62bcTRX\u83b7\u5f97\u5e26\u5bbd\u3002(\u4ec5\u9650\u4e8e TransferAsset ) StartDate , EndDate \u4e3a\u53d1\u884c\u8d77\u59cb\u548c\u7ec8\u6b62\u65e5\u671f\u3002 \u5728\u8be5\u65e5\u671f\u5185\uff0c\u5176\u4ed6\u7528\u6237\u53ef\u4ee5\u53c2\u4e0e\u5230\u65b0\u5e01\u53d1\u884c\u4e2d\u3002 FrozenAmount0 , FrozenDays0 \u51b3\u5b9a\u4e86\u4f1a\u6709\u591a\u5c11\u65b0\u5e01\u51bb\u7ed3\u591a\u4e45\u3002 FrozenAmount0 \u9700\u5927\u4e8e0. FrozenDays0 : \u5fc5\u987b\u5b571\u52303652\u4e4b\u95f4\u3002 \u793a\u4f8b: wallet> AssetIssue TestTRX TRX 75000000000000000 1 1 2 \"2019-10-02 15:10:00\" \"2020-07-11\" \"just for test121212\" www.test.com 100 100000 10000 10 10000 1 wallet> GetAssetIssueByAccount TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ # View published information { \"assetIssue\" : [ { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"name\" : \"TestTRX\" , \"abbr\" : \"TRX\" , \"total_supply\" : 75000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 10000 , \"frozen_days\" : 1 } , { \"frozen_amount\" : 10000 , \"frozen_days\" : 10 } ] , \"trx_num\" : 1 , \"precision\" : 2 , \"num\" : 1 , \"start_time\" : 1570000200000 , \"end_time\" : 1594396800000 , \"description\" : \"just for test121212\" , \"url\" : \"www.test.com\" , \"free_asset_net_limit\" : 100 , \"public_free_asset_net_limit\" : 100000 , \"id\" : \"1000001\" } ] } UpdateAsset \u00b6 \u4f7f\u7528\u8be5\u547d\u6765\u4fee\u6539\u5df2\u53d1\u5e03\u8d44\u4ea7\u7684\u90e8\u5206\u53c2\u6570 wallet> UpdateAsset [OwnerAddress] [newLimit] [newPublicLimit] [description url] \u53c2\u6570\u5b9a\u4e49\u4e0eAssetIssue\u76f8\u540c\u3002 \u793a\u4f8b: wallet> UpdateAsset 1000 1000000 \"change description\" www.changetest.com wallet> GetAssetIssueByAccount TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ # to check the modified information { \"assetIssue\" : [ { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"name\" : \"TestTRX\" , \"abbr\" : \"TRX\" , \"total_supply\" : 75000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 10000 , \"frozen_days\" : 1 } , { \"frozen_amount\" : 10000 , \"frozen_days\" : 10 } ] , \"trx_num\" : 1 , \"precision\" : 2 , \"num\" : 1 , \"start_time\" : 1570000200000 , \"end_time\" : 1594396800000 , \"description\" : \"change description\" , \"url\" : \"www.changetest.com\" , \"free_asset_net_limit\" : 1000 , \"public_free_asset_net_limit\" : 1000000 , \"id\" : \"1000001\" } ] } TransferAsset \u00b6 \u8be5\u547d\u4ee4\u7528\u4e8e\u8f6c\u79fb\u8d44\u4ea7 > TransferAsset [OwnerAddress] [ToAddress] [AssertID] [Amount] \u8fd9\u5176\u4e2d OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\uff0c ToAddress \u4e3a\u63a5\u6536\u5730\u5740\uff0c AssertName \u4e3a\u4ee3\u5e01\u7684\u540d\u79f0\uff0c Amount \u672c\u6b21\u8f6c\u8d26\u7684\u6570\u989d\u3002 \u793a\u4f8b: wallet> TransferAsset TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz 1000001 1000 wallet> getaccount TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz # to check target account information after the transfer address: TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz assetV2 { id: 1000001 balance: 1000 latest_asset_operation_timeV2: null free_asset_net_usageV2: 0 } ParticipateAssetissue \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u53c2\u4e0e\u4ee3\u5e01\u7684\u53d1\u884c > ParticipateAssetIssue [OwnerAddress] [ToAddress] [AssetID] [Amount] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 ToAddress \u4e3a\u63a5\u6536\u5730\u5740\uff0c AssertName \u4e3a\u4ee3\u5e01\u7684\u540d\u79f0\uff0c Amount \u4e3a\u672c\u6b21\u8f6c\u8d26\u7684\u6570\u989d\u3002 \u53c2\u4e0e\u53d1\u884c\u5fc5\u987b\u53d1\u751f\u5728TRC10\u4ee3\u5e01\u7684\u53d1\u884c\u8fc7\u7a0b\u4e2d\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002 \u793a\u4f8b: wallet> ParticipateAssetIssue TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ 1000001 1000 wallet> getaccount TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW # View remaining balance address: TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW assetV2 { id: 1000001 balance: 1000 latest_asset_operation_timeV2: null free_asset_net_usageV2: 0 } UnfreezeAsset \u00b6 \u89e3\u51bb\u4e00\u4e2a\u5730\u5740\u4e0b\u5df2\u7ecf\u8d85\u8fc7\u51bb\u7ed3\u65f6\u95f4\u7684\u5f85\u89e3\u51bbTRC-10\u4ee3\u5e01\u3002 wallet> unfreezeasset [OwnerAddress] ListAssetIssue \u00b6 \u5217\u51fa\u6240\u6709\u5df2\u53d1\u884cTRC-10\u4ee3\u5e01\u53ca\u8be6\u60c5 wallet> listassetissue { \"assetIssue\" : [ { \"owner_address\" : \"TMWXhuxiT1KczhBxCseCDDsrhmpYGUcoA9\" , \"name\" : \"tronlink_token\" , \"abbr\" : \"tronlink_token\" , \"total_supply\" : 1000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 1 , \"frozen_days\" : 1 } ] , \"trx_num\" : 1 , \"precision\" : 6 , \"num\" : 1 , \"start_time\" : 1574757000000 , \"end_time\" : 1757595000000 , \"description\" : \"Description\" , \"url\" : \"https://blog.csdn.net/u010270891/article/details/82978260\" , \"free_asset_net_limit\" : 1000 , \"public_free_asset_net_limit\" : 2000 , \"id\" : \"1000001\" } , \u00b7\u00b7\u00b7 GetAssetIssueByAccount \u00b6 \u5217\u51fa\u53d1\u884c\u4eba\u5730\u5740\u4e0b\u6240\u6709\u5df2\u53d1\u884cTRC-10\u4ee3\u5e01\u53ca\u8be6\u60c5\u3002 wallet> getassetissuebyaccount [owneraddress] \u793a\u4f8b\uff1a wallet> getassetissuebyaccount TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN { \"assetIssue\" : [ { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website. TRC10 token h0966. More info on website. More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" } ] } GetAssetIssueById \u00b6 \u6839\u636e\u4ee3\u5e01ID\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f \u793a\u4f8b\uff1a wallet> GetAssetIssueById 1004901 { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website.TRC10 token h0966. More info on website.More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" } GetAssetIssueByName \u00b6 \u6839\u636e\u4ee3\u5e01\u540d\u79f0\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f \u793a\u4f8b\uff1a wallet> GetAssetIssueByname h00966 { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website.TRC10 token h0966. More info on website.More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" } GetAssetIssueListByName \u00b6 \u6839\u636e\u4ee3\u5e01\u540d\u79f0\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f wallet> GetAssetIssueListByName ROFLOTOKEN { \"assetIssue\" : [ { \"owner_address\" : \"TLvQSVH9Hm7kxLFtTP228fN6pCrHmtVjpb\" , \"name\" : \"ROFLOTOKEN\" , \"abbr\" : \"roflotoken\" , \"total_supply\" : 10000000000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 100000000 , \"start_time\" : 1656349200000 , \"end_time\" : 1656435600000 , \"description\" : \"roflotoken.com\" , \"url\" : \"https://haxibaibo.com/\" , \"id\" : \"1004898\" } ] } \u6cbb\u7406 \u00b6 \u4efb\u4f55\u5173\u4e8eproposal\u7684\u64cd\u4f5c\uff0c\u9664\u4e86\u67e5\u770b\u7c7b\u7684\u4ee5\u5916\uff0c\u90fd\u9700\u8981\u59d4\u5458\u4f1a\u6210\u5458\u6765\u5b8c\u6210\u3002 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a CreatProposal ApproveProposal Deleteproposal ListProposals ListProposalsPaginated GetProposal Votewitness GetBrokerage GetReward UpdateBrokerage CreatProposal \u00b6 \u53d1\u8d77\u4e00\u9879\u65b0\u7684proposal\u3002 wallet> createProposal [OwnerAddress] [id0] [value0] ... [idN] [valueN] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 id0 \u662fTRON Network Parameter\u7684\u5e8f\u5217\u53f7\u3002\u5176\u4e2d\u7684\u6bcf\u4e2a\u53c2\u6570\u90fd\u5b9a\u4e49\u597d\u7684\u63d0\u8bae\u5185\u5bb9\uff0c\u540c\u65f6\u5bf9\u5e94\u4e00\u4e2a\u5e8f\u5217\u53f7\uff0c\u8bf7\u53c2\u8003 https://tronscan.org/#/sr/committee \u3002 Value0 \u4e3a\u63d0\u8bae\u4fee\u6539\u7684\u503c\u3002\u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0cproposal\u5efa\u8bae\u5c06No.4(\u4fee\u6539\u53d1\u884c\u8d39\u7528)\u7684\u8d39\u7528\u6539\u4e3a 1000TRX\uff0c wallet> createProposal 4 1000 wallet> listproposals # to check initiated proposal { \"proposals\" : [ { \"proposal_id\" : 1 , \"proposer_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"parameters\" : [ { \"key\" : 4 , \"value\" : 1000 } ] , \"expiration_time\" : 1567498800000 , \"create_time\" : 1567498308000 } ] } \u8be5proposal\u7684\u5bf9\u5e94ID\u4e3a1\u3002 ApproveProposal \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u540c\u610f\u6216\u5426\u51b3\u4e00\u9879proposal\u3002 wallet> approveProposal [OwnerAddress] [id] [is_or_not_add_approval] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 id \u4e3aproposal\u7684ID\u3002 is_or_not_add_approval \u586b\u5165\u201ctrue\u201d\u4e3a\u540c\u610f\uff0c\u586b\u5165\u201cfalse\u201d\u4e3a\u5426\u51b3\u3002 \u793a\u4f8b: wallet> ApproveProposal 1 true # in favor of the offer wallet> ApproveProposal 1 false # Cancel the approved proposal Deleteproposal \u00b6 \u53d6\u6d88\u4e00\u4e2aproposal\u3002 wallet> deleteProposal [OwnerAddress] [proposalId] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 proposalId \u4e3aproposal\u5bf9\u5e94\u7684ID\u3002\u53ea\u6709\u53d1\u8d77\u8be5propsal\u7684\u8d85\u7ea7\u4ee3\u8868\u624d\u80fd\u53d6\u6d88\u81ea\u5df1\u53d1\u8d77\u7684proposal\u3002 \u793a\u4f8b\uff1a wallet> DeleteProposal 1 ListProposals \u00b6 \u67e5\u770b\u5df2\u53d1\u8d77\u7684proposal\u3002 wallet> listproposals { \"proposals\" : [ { \"proposal_id\" : 12732 , \"proposer_address\" : \"TQ4eBJna51sew13DBLd7YjEHHHW7fkNzc2\" , \"parameters\" : [ { \"key\" : 65 , \"value\" : 1 } , { \"key\" : 66 , \"value\" : 1 } , { \"key\" : 62 , \"value\" : 432000000 } ] , \"expiration_time\" : 1656491400000 , \"create_time\" : 1656490794000 , \"approvals\" : [ \"TQ4eBJna51sew13DBLd7YjEHHHW7fkNzc2\" ] , \"state\" : \"DISAPPROVED\" } , { \u00b7\u00b7\u00b7 ListProposalsPaginated \u00b6 \u7528\u5206\u6bb5\u7684\u65b9\u5f0f\u67e5\u770b\u5df2\u53d1\u8d77\u7684proposal\u3002 wallet> ListProposalsPaginated [offset] [limit] offset \u662f\u9700\u8981\u8df3\u8fc7\u7684proposal\u7684ID\uff0c\u5982\u8f93\u516520\uff0c\u5219\u4eceproposal_ID=21 \u5f00\u59cb\u67e5\u770b\u3002 limit \u662f\u8981\u67e5\u770b\u7684proposal\u6570\u91cf\uff0c\u5982\u8f93\u516510\uff0c\u5219\u67e5\u770b offset \u7684\u503c\u4e4b\u540e\u768410\u4e2aproposal\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u547d\u4ee4\u5c06\u4f1a\u5217\u51fa\u6240\u6709\u7684proposal\u3002 \u4e0b\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u4f20\u53c2\u7684\u610f\u4e49\u4e3a\u8df3\u8fc7ID\u4e3a33\u53ca\u4e4b\u524d\u7684proposal\uff0c\u67e5\u770b\u5176\u4e4b\u540e2\u4e2aproposal\uff0c\u537334\u548c35\u7684\u4e24\u4e2aproposal\uff1a wallet> listproposalspaginated 33 2 { \"proposals\" : [ { \"proposal_id\" : 34 , \"proposer_address\" : \"TEDguVMSsFw3HSizQXFK1BsrGWeuRMNN7t\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380477000 , \"state\" : \"DISAPPROVED\" } , { \"proposal_id\" : 35 , \"proposer_address\" : \"TDkSQtBhZx7Ua8qvenM4zuH52u2BsYTwzc\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380498000 , \"state\" : \"DISAPPROVED\" } ] } GetProposal \u00b6 \u901a\u8fc7proposal ID\u67e5\u770bproposal\u8be6\u60c5\u3002 wallet> getproposal 34 { \"proposal_id\" : 34 , \"proposer_address\" : \"TEDguVMSsFw3HSizQXFK1BsrGWeuRMNN7t\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380477000 , \"state\" : \"DISAPPROVED\" } Votewitness \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u4e3awitness\u6295\u7968\u3002\u6295\u7968\u9700\u8981\u76f8\u5e94\u7684\u6743\u76ca, \u5373 Tron Power \uff0c\u53ef\u4ee5\u901a\u8fc7\u8d28\u62bc\u8d44\u4ea7\u6765\u83b7\u5f97\u3002\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3awitness\u7684\u5730\u5740\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a\u6295\u7968\u7684\u6570\u91cf\u3002 wallet> votewitness [witness address] [Tron Power Amount] * Tron Power\u8ba1\u7b97\u89c4\u5219: \u6bcf\u51bb\u7ed3 1 TRX\u83b7\u5f97\u4e00\u4e2a\u5355\u4f4d\u7684Tron Power\u3002 * \u8d44\u4ea7\u89e3\u51bb\u540e, \u6240\u6709\u4e4b\u524d\u7684\u6295\u7968\u5373\u4f5c\u5e9f\u3002\u53ef\u4ee5\u91cd\u590d\u51bb\u7ed3\u8d44\u4ea7\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\u3002 **\u6ce8\u610f** TRON \u53ea\u4f1a\u8bb0\u5f55\u4f60\u7684\u6700\u540e\u4e00\u6b21\u6295\u7968\uff0c\u65b0\u7684\u6295\u7968\u4f1a\u8986\u76d6\u4e4b\u524d\u7684\u6295\u7968\u3002 \u793a\u4f8b\uff1a ```shell wallet> freezeBalance 100000000 3 1 address # \u51bb\u7ed3 10TRX\uff0c\u83b7\u5f9710\u4e2a\u5355\u4f4d\u7684Tron Power\u3002 wallet> votewitness [witness1] 4 [witness2] 6 # \u4e3awitness1\u62954\u7968\uff0c\u540c\u65f6\u518d\u4e3awitness2\u62956\u7968 wallet> votewitness [witness1] 10 # \u4e3awitness1\u629510\u7968 \u793a\u4f8b\u4e2d\u7684\u7ed3\u679c\u4e3awitness1\u83b7\u5f9710\u7968\uff0cwitness2\u83b7\u5f970\u7968\u3002 ListWitnesses \u00b6 \u5217\u51fa\u6240\u6709witness\u7684\u4fe1\u606f\u3002 wallet> listwitnesses { \"witnesses\" : [ { \"address\" : \"TPffmvjxEcvZefQqS7QYvL1Der3uiguikE\" , \"voteCount\" : 324999518 , \"url\" : \"http://sr-26.com\" , \"totalProduced\" : 414028 , \"totalMissed\" : 20 , \"latestBlockNum\" : 27638663 , \"latestSlotNum\" : 552169224 , \"isJobs\" : true } , { \"address\" : \"TFFLWM7tmKiwGtbh2mcz2rBssoFjHjSShG\" , \"voteCount\" : 324759460 , \"url\" : \"http://sr-27.com\" , \"totalProduced\" : 414144 , \"totalMissed\" : 16 , \"latestBlockNum\" : 27638664 , \"latestSlotNum\" : 552169225 , \"isJobs\" : true } , \u00b7\u00b7\u00b7 GetBrokerage \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\uff0c\u53ef\u4ee5\u67e5\u770bwitness\u7684\u51fa\u5757\u5206\u6210\u6bd4\u4f8b\u3002 \u5728\u4e3awitness\u6295\u7968\u540e\uff0c\u4f1a\u6536\u5230\u76f8\u5e94\u7684\u5956\u52b1\u3002witness\u53ef\u4ee5\u8c03\u6574\u51fa\u5757\u6536\u76ca\u7684\u5206\u6210\u6bd4\u4f8b\uff0c\u9ed8\u8ba4\u6bd4\u4f8b\u4e3a20%\uff0c\u5373\u6536\u76ca\u768420%\u5f52witness\u6240\u6709\uff0c\u5269\u4f5980%\u6309\u6295\u7968\u6570\u5206\u914d\u7ed9\u6295\u7968\u8005\u3002 OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002 \u793a\u4f8b\u4e2d\uff0c\u51fa\u5757\u5956\u52b1\u7684\u5206\u6210\u4e3a20%\uff0c\u537380%\u7684\u6536\u76ca\u4f1a\u6309\u6743\u91cd\u5206\u914d\u7ed9\u6295\u7968\u8005\uff1a wallet> getbrokerage TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 The brokerage is : 20 GetReward \u00b6 \u67e5\u8be2\u672a\u9886\u53d6\u7684\u5956\u52b1\u3002 OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002\u793a\u4f8b\u5982\u4e0b\uff1a wallet> getreward TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 The reward is : 0 UpdateBrokerage \u00b6 \u8be5\u547d\u4ee4\u7531witness\u53d1\u8d77\uff0c\u8c03\u6574\u51fa\u5757\u6536\u76ca\u7684\u5206\u6210\u6bd4\u4f8b\u3002 wallet> updateBrokerage [OwnerAddress] [brokerage] OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002 brokerage \u4e3a\u8981\u6539\u6210\u7684\u6bd4\u4f8b\uff0c0-100\u4e4b\u95f4\u3002 \u793a\u4f8b\uff1a wallet> updateBrokerage TZ7U1WVBRLZ2umjizxqz3XfearEHhXKX7h 30 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240 \u00b6 \u4ea4\u6613\u5bf9\u7684\u4ef7\u683c\u6d6e\u52a8\u548c\u4ea4\u6613\u60c5\u51b5\u9075\u5faa Bancor Agreement \u3002 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a ExchangeCreate ExchangeInject ExchangeTransaction ExchangeWithdraw ListExchanges ListExchangesPaginated MarketSellAsset MarketCancelOrder GetMarketOrderByAccount GetMarketOrderById GetMarketPairList GetMarketOrderListByPair GetMarketPriceByPair ExchangeCreate \u00b6 \u521b\u5efa\u4e00\u4e2a\u4ea4\u6613\u5bf9 wallet> exchangeCreate [OwnerAddress][first_token_id] [first_token_balance] [second_token_id] [second_token_balance] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 First_token_id , first_token_balance \u4e3a\u4ea4\u6613\u5bf9\u4e2d\u7b2c\u4e00\u4e2a\u4ee3\u5e01\u7684ID\u548c\u91d1\u989d\u3002 second_token_id , second_token_balance \u4e3a\u4ea4\u6613\u5bf9\u4e2d\u7b2c\u4e8c\u4ee3\u5e01\u7684ID\u548c\u91d1\u989d\u3002\u5982\u679c\u662fTRX, \u5219ID\u4e3a\"\"\uff0c\u989d\u5ea6\u5fc5\u987b\u57280\u52301,000,000,000,000,000\u4e4b\u95f4\uff0c\u4e0d\u5305\u62ec\u5934\u5c3e\u3002 \u793a\u4f8b: wallet> exchangeCreate 1000001 10000 _ 10000 # Create trading pairs with the IDs of 1000001 and TRX, with amount 10000 for both. ExchangeInject \u00b6 \u5c06\u8d44\u91d1\u6ce8\u5165\u4ea4\u6613\u5bf9 wallet> exchangeInject [OwnerAddress] [exchange_id] [token_id] [quant] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 exchange_id \u4e3a\u4ea4\u6613\u5bf9\u7684ID\u3002 token_id, quant \u4e3a\u8981\u6ce8\u5165\u7684\u4ee3\u5e01ID\u548c\u91d1\u989d\u3002 \u5f53\u8981\u5411\u4ea4\u6613\u5bf9\u6ce8\u5165\u8d44\u91d1\u65f6\uff0c\u4ea4\u6613\u5bf9\u4e2d\u7684\u4ee3\u5e01\u4f1a\u4ece\u672c\u8d26\u6237\u4e2d\u53d6\u8d70\uff0c\u6ce8\u5165\u5230\u4ea4\u6613\u5bf9\u4e2d\u3002\u6839\u636e\u4e0d\u540c\u7684\u4ee3\u5e01\u4f59\u989d\u60c5\u51b5\uff0c\u540c\u79cd\u6570\u989d\u7684\u540c\u79cd\u4ee3\u5e01\u4f1a\u6709\u53d8\u5316\u3002 ExchangeTransaction \u00b6 \u53d1\u8d77\u4e00\u7b14\u4ea4\u6613\u5bf9\u4ea4\u6613 wallet> exchangeTransaction [OwnerAddress] [exchange_id] [token_id] [quant] [expected] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 exchange_id \u4e3a\u4ea4\u6613\u5bf9\u7684ID\u3002 token_id , quant \u4e3a\u8981\u5356\u51fa\u7684\u4ee3\u5e01\u7684ID\u548c\u6570\u989d\u3002 expected \u4e3a\u9884\u671f\u4e70\u5165\u7684\u4ee3\u5e01\u6570\u989d\uff0c\u8be5\u6570\u989d\u5fc5\u987b\u5c0f\u4e8e quant \uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002 \u793a\u4f8b\uff1a wallet> ExchangeTransaction 1 1000001 100 80 \u793a\u4f8b\u7684\u542b\u4e49\u4e3a\uff0c\u60f3\u8981\u901a\u8fc7ID\u4e3a1\u7684\u4ea4\u6613\u5bf9\uff0c\u7528100\u4e2a\u5355\u4f4d\u7684ID\u4e3a1000001\u7684\u4ee3\u5e01\u6765\u4ea4\u661380\u4e2aTRX\u3002(\u4ea6\u53ef\u7406\u89e3\u4e3a\u5728\u4ea4\u6613\u5bf91\u4e2d\uff0c\u901a\u8fc7\u5356\u51fa100\u4e2a1000001\u4ee3\u5e01\u6765\u4e70\u516580\u4e2aTRX\u3002). ExchangeWithdraw \u00b6 \u63d0\u53d6\u4ea4\u6613\u5bf9\u4e2d\u7684\u8d44\u91d1 wallet> exchangeWithdraw [OwnerAddress] [exchange_id] [token_id] [quant] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 Exchange_id \u4e3a\u4ea4\u6613\u5bf9ID\u3002 Token_id , quant \u4e3a\u8981\u4ece\u4ea4\u6613\u5bf9\u4e2d\u53d6\u51fa\u7684\u4ee3\u5e01\u7684ID\u548c\u6570\u989d\u3002 \u5f53\u8981\u5411\u4ea4\u6613\u5bf9\u63d0\u53d6\u8d44\u91d1\u65f6\uff0c\u4ea4\u6613\u5bf9\u4e2d\u7684\u4ee3\u5e01\u4f1a\u88ab\u63d0\u53d6\u5230\u8d26\u6237\u5730\u5740\u4e2d\u3002\u6839\u636e\u4e0d\u540c\u7684\u4ee3\u5e01\u4f59\u989d\u60c5\u51b5\uff0c\u540c\u79cd\u6570\u989d\u7684\u540c\u79cd\u4ee3\u5e01\u4f1a\u6709\u53d8\u5316\u3002 \u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u7684 ListExchanges \u547d\u4ee4\u6765\u83b7\u53d6\u6240\u6709\u7684\u4ea4\u6613\u5bf9\u4fe1\u606f\u3002 ListExchanges \u00b6 \u5217\u51fa\u6240\u6709\u4ea4\u6613\u5bf9\u53ca\u8be6\u60c5 wallet> listexchanges { \"exchanges\" : [ { \"exchange_id\" : 14 , \"creator_address\" : \"TCjuQbm5yab7ENTYb7tbdAKaiNa9Lrj4mo\" , \"create_time\" : 1654154880000 , \"first_token_id\" : \"1004852\" , \"first_token_balance\" : 91 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 110000000 } , { \"exchange_id\" : 13 , \"creator_address\" : \"TBpbKyKVUB1YLULrbhawUws69Gv33cmKDL\" , \"create_time\" : 1648004214000 , \"first_token_id\" : \"1000575\" , \"first_token_balance\" : 991 , \"second_token_id\" : \"1000184\" , \"second_token_balance\" : 1010 } , \u00b7\u00b7\u00b7 ListExchangesPaginated \u00b6 \u5217\u51fa\u9009\u6bb5\u4e2d\u7684\u4ea4\u6613\u5bf9 wallet> ListExchangesPaginated [ offset ] [ limit ] offset \u4e3a\u60f3\u8981\u8df3\u8fc7\u7684\u4ea4\u6613\u5bf9ID\u3002\u9ed8\u8ba4\u4ece1\u5f00\u59cb\u5217\u51fa\u4ea4\u6613\u5bf9\uff0c\u5982\u6b64\u5904\u8f93\u5165\u503c\u4e3a15\uff0c\u5219\u4ece\u4ea4\u6613\u5bf9ID\u4e3a16\u5f00\u59cb\u5217\u51fa\u3002 limit \u4e3a\u60f3\u8981\u5217\u51fa\u7684\u4ea4\u6613\u5bf9\u6570\u91cf\u3002 \u4e0b\u9762\u793a\u4f8b\u7684\u542b\u4e49\u4e3a\u4eceid\u4e3a4\u7684\u4ea4\u6613\u5bf9\u5f00\u59cb\u5217\u51fa\u4fe1\u606f\uff0c\u4e00\u5171\u5217\u51fa2\u7ec4\u4fe1\u606f\uff0c\u5373\u5217\u51fa\u4ea4\u6613\u5bf9ID\u4e3a4\uff0c5\u7684\u4fe1\u606f,\u8bf7\u53c2\u8003: wallet> listexchangespaginated 3 2 { \"exchanges\" : [ { \"exchange_id\" : 4 , \"creator_address\" : \"TXmHTj3t5LXGvqGkr4jRNw7nf9GjquQ5yf\" , \"create_time\" : 1601458377000 , \"first_token_id\" : \"1000088\" , \"first_token_balance\" : 1 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 1 } , { \"exchange_id\" : 5 , \"creator_address\" : \"TTJJvoPKGVKnbUBPVTn1Zi8o6k3EfFDXVS\" , \"create_time\" : 1602578613000 , \"first_token_id\" : \"1000091\" , \"first_token_balance\" : 456125 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 106968111 } ] } MarketSellAsset \u00b6 \u521b\u5efa\u4e00\u4e2a\u552e\u51fa\u8ba2\u5355 wallet> MarketSellAsset [owner_address] [sell_token_id] [sell_token_quantity] [buy_token_id] [buy_token_quantity] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 sell_token_id and sell_token_quantity \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\u548c\u6570\u989d\u3002 buy_token_id , buy_token_quantity \u4e3a\u60f3\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u548c\u6570\u989d\u3002 \u793a\u4f8b\uff1a wallet> MarketSellAsset TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW 1000001 200 _ 100 \u5982\u4e0a\u521b\u5efa\u8ba2\u5355\u540e\uff0c\u6211\u4eec\u7528 getTransactionInfoById \u6765\u67e5\u770b\u7ed3\u679c, wallet> getTransactionInfoById 10040f993cd9452b25bf367f38edadf11176355802baf61f3c49b96b4480d374 { \"id\" : \"10040f993cd9452b25bf367f38edadf11176355802baf61f3c49b96b4480d374\" , \"blockNumber\" : 669 , \"blockTimeStamp\" : 1578983493000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 264 } } MarketCancelOrder \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u53ef\u4ee5\u53d6\u6d88\u8ba2\u5355 wallet> MarketCancelOrder [owner_address] [order_id] owner_address \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 order_id \u4e3a\u8ba2\u5355\u7684ID\u3002 \u793a\u4f8b: wallet> MarketCancelOrder TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0 \u901a\u8fc7 getTransactionInfoById \u6765\u67e5\u770b\u7ed3\u679c\uff0c wallet> getTransactionInfoById b375787a098498623403c755b1399e82910385251b643811936d914c9f37bd27 { \"id\" : \"b375787a098498623403c755b1399e82910385251b643811936d914c9f37bd27\" , \"blockNumber\" : 1582 , \"blockTimeStamp\" : 1578986232000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 283 } } GetMarketOrderByAccount \u00b6 \u4f7f\u7528\u8be5\u547d\u4ee4\u53ef\u67e5\u770b\u8be5\u8d26\u6237\u521b\u5efa\u7684\u6d3b\u8dc3\u8ba2\u5355 wallet> GetMarketOrderByAccount [ownerAddress] ownerAddress \u4e3a\u53ef\u67e5\u770b\u7684\u5730\u5740\u3002 \u793a\u4f8b: wallet> GetMarketOrderByAccount TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW { \"orders\" : [ { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , \"sell_token_quantity_remain\" : 100 } ] } GetMarketOrderById \u00b6 \u901a\u8fc7\u8ba2\u5355ID\u67e5\u770b\u8ba2\u5355\u4fe1\u606f wallet> GetMarketOrderById [orderId] \u793a\u4f8b: wallet> GetMarketOrderById fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0 { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , } GetMarketPairList \u00b6 \u5217\u51fa\u5f53\u524d\u6d3b\u8dc3\u7684\u4ea4\u6613\u5bf9 wallet> getmarketpairlist { \"orderPair\" : [ { \"sell_token_id\" : \"1000012\" , \"buy_token_id\" : \"_\" } , { \"sell_token_id\" : \"1000094\" , \"buy_token_id\" : \"1000095\" } , { \"sell_token_id\" : \"1000099\" , \"buy_token_id\" : \"1000100\" } , \u00b7\u00b7\u00b7 GetMarketOrderListByPair \u00b6 \u901a\u8fc7\u4ee3\u5e01ID\u67e5\u770b\u5f53\u524d\u6d3b\u8dc3\u8ba2\u5355 wallet> GetMarketOrderListByPair [sell_token_id] [buy_token_id] sell_token_id \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\u3002 buy_token_id \u4e3a\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u3002 \u793a\u4f8b: wallet> GetMarketOrderListByPair _ 1000001 { \"orders\" : [ { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , \"sell_token_quantity_remain\" : 100 } ] } GetMarketPriceByPair \u00b6 \u901a\u8fc7\u4ee3\u5e01ID\u83b7\u53d6\u5f53\u524d\u5e02\u573a\u4ef7\u683c wallet> GetMarketPriceByPair [sell_token_id] [buy_token_id] sell_token_id \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\uff0c buy_token_id \u4e3a\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u3002 \u793a\u4f8b: wallet> GetMarketPriceByPair _ 1000001 { \"sell_token_id\" : \"_\" , \"buy_token_id\" : \"1000001\" , \"prices\" : [ { \"sell_token_quantity\" : 100 , \"buy_token_quantity\" : 200 } ] }","title":"Wallet\u547d\u4ee4"},{"location":"clients/wallet-cli-command/#wallet","text":"\u4e0b\u9762\u662fWallet-Cli\u94b1\u5305\u652f\u6301\u7684\u547d\u4ee4\u5206\u7c7b: \u5bc6\u94a5\u7ba1\u7406 \u94fe\u4e0a\u8d26\u6237 \u8d26\u6237\u8d44\u6e90 \u4ea4\u6613 \u67e5\u8be2\u94fe\u4e0a\u6570\u636e \u667a\u80fd\u5408\u7ea6 TRC-10\u8d44\u4ea7 \u6cbb\u7406 \u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240","title":"Wallet\u547d\u4ee4"},{"location":"clients/wallet-cli-command/#_1","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a RegisterWallet Login BackupWallet BackupWallet2Base64 ChangePassword ImportWallet ImportWalletByBase64","title":"\u5bc6\u94a5\u7ba1\u7406"},{"location":"clients/wallet-cli-command/#registerwallet","text":"\u6ce8\u518c\u65f6\uff0c\u9700\u8981\u5148\u4e3a\u8d26\u6237\u8bbe\u7f6e\u5bc6\u7801\uff0c\u4e4b\u540e\u5e26\u6709\u8d26\u6237\u4fe1\u606f\u7684json\u6587\u4ef6\u5c06\u4f1a\u751f\u6210\u5728 wallet-cli/wallet \u8def\u5f84\u4e2d\u3002\u8d26\u6237\u5730\u5740\u5373\u662f\u6587\u4ef6\u540d\u4e2dbase58\u683c\u5f0f\u7684\u90e8\u5206\uff0c\u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201cTWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw\u201d\uff1a wallet> RegisterWallet Please input password. password: Please input password again. password: Register a wallet successful, keystore file name is UTC--2022-06-27T07-37-47.601000000Z--TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw.json","title":"RegisterWallet"},{"location":"clients/wallet-cli-command/#login","text":"\u5f53\u94b1\u5305\u6ce8\u518c\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528Login\u547d\u4ee4\u767b\u9646\u94b1\u5305\u3002\u9009\u62e9\u4f60\u60f3\u8981\u767b\u9646\u7684\u94b1\u5305\u5730\u5740\uff0c\u518d\u8f93\u5165\u5bc6\u7801\u5b8c\u6210\u767b\u9646\u3002 wallet> login use user defined config file in current dir The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-06-22T08-31-57.735000000Z--TBnPDbw99BLzPUZuW8Rrcc3RGGQT3cnSfF.json The 4th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 5th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 5 4 Please input your password. password: Login successful !!!","title":"Login"},{"location":"clients/wallet-cli-command/#backupwallet","text":"\u5907\u4efd\u94b1\u5305\u65f6\u9700\u8981\u8f93\u5165\u79d8\u5bc6\uff0c\u6210\u529f\u540e\u5c06\u4f1a\u5bfc\u51fa\u4f60\u7684\u79c1\u94a5, \u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201c721d63b074f18d41c147e04c952ec93467777a30b6f16745bc47a8eae5076545\u201d\uff1a wallet> backupwallet Please input your password. password: BackupWallet successful !! 721d63b074f18d41c147e04c952ec93467777a30b6f16745bc47a8eae5076545","title":"BackupWallet"},{"location":"clients/wallet-cli-command/#backupwallet2base64","text":"\u5907\u4efd\u94b1\u5305\u65f6\u9700\u8981\u8f93\u5165\u79d8\u5bc6\uff0c\u6210\u529f\u540e\u5c06\u4f1a\u4ee5base64\u683c\u5f0f\u5bfc\u51fa\u4f60\u7684\u79c1\u94a5, \u5982\u4e0b\u9762\u793a\u4f8b\u4e2d\u7684\u201cch1jsHTxjUHBR+BMlS7JNGd3ejC28WdFvEeo6uUHZUU=\u201d\uff1a wallet> backupwallet Please input your password. password: BackupWallet successful !! ch1jsHTxjUHBR+BMlS7JNGd3ejC28WdFvEeo6uUHZUU =","title":"BackupWallet2Base64"},{"location":"clients/wallet-cli-command/#changepassword","text":"\u4f7f\u7528\u672c\u547d\u4ee4\u6765\u66f4\u6539\u5bc6\u7801 wallet> changepassword Please input old password. password: Please input new password. Please input password. password: Please input password again. password: The 1th keystore file name is .DS_Store The 2th keystore file name is UTC--2022-06-27T10-58-59.306000000Z--TBnPDbw99BLzPUZuW8Rrcc3RGGQT3cnSfF.json Please choose between 1 and 2 2 ChangePassword successful !!","title":"ChangePassword"},{"location":"clients/wallet-cli-command/#importwallet","text":"\u5728\u5bfc\u5165\u94b1\u5305\u65f6\uff0c\u9700\u5148\u4e3a\u5373\u5c06\u5bfc\u5165\u7684\u79c1\u94a5\u8bbe\u7f6e\u4e00\u4e2a\u5bc6\u7801\uff0c\u4e4b\u540e\u518d\u5bfc\u5165\u79c1\u94a5\uff0c\u63d0\u793a\u6210\u529f\u540e\uff0c\u5c06\u4f1a\u5728 wallet-cli/wallet \u8def\u5f84\u4e0b\u751f\u6210\u4e00\u4e2a\u8bb0\u5f55\u8be5\u94b1\u5305\u7684json\u6587\u4ef6\uff0c\u8bf7\u770b\u793a\u4f8b\uff1a wallet> importwallet Please input password. password: Please input password again. password: Please input private key. Max retry time:3 bd1ff0f4f852db45316bf08755bf6eee45d0678bfbf852a00020a13d42a1fb5b Import a wallet successful, keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json","title":"ImportWallet"},{"location":"clients/wallet-cli-command/#importwalletbybase64","text":"\u5728\u5bfc\u5165\u94b1\u5305\u65f6\uff0c\u9700\u5148\u4e3a\u5373\u5c06\u5012\u5165\u7684\u79c1\u94a5\u8bbe\u7f6e\u4e00\u4e2a\u5bc6\u7801\uff0c\u4e4b\u540e\u518d\u5bfc\u5165base64\u683c\u5f0f\u7684\u79c1\u94a5\uff0c\u63d0\u793a\u6210\u529f\u540e\uff0c\u5c06\u4f1a\u5728 wallet-cli/wallet \u8def\u5f84\u4e0b\u751f\u6210\u4e00\u4e2a\u8bb0\u5f55\u8be5\u94b1\u5305\u7684json\u6587\u4ef6\u3002 wallet> importwalletbybase64 Please input password. password: Please input password again. password: Please input private key by base64. Max retry time:3 vR/w9PhS20Uxa/CHVb9u7kXQZ4v7+FKgACChPUKh+1s = Import a wallet successful, keystore file name is UTC--2022-06-28T06-51-56.154000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json","title":"ImportWalletByBase64"},{"location":"clients/wallet-cli-command/#_2","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a GenerateAddress GetAccount GetAddress GetBalance UpdateAccountPermission","title":"\u94fe\u4e0a\u8d26\u6237"},{"location":"clients/wallet-cli-command/#generateaddress","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u94b1\u5305\u5730\u5740\u548c\u5b83\u7684\u79c1\u94a5 wallet> generateaddress { \"address\" : \"TQAvi6bemLa1t1irdV1KuaSC5vKc2EswTj\" , \"privateKey\" : \"610a8a809114a96140e1cb040a7813afc74603e58c3d7824c3f68ccc642c297e\" } \u6ce8\u610f \u751f\u6210\u7684\u5730\u5740\u53ca\u5176\u79c1\u94a5\u4e0d\u4f1a\u88ab\u4fdd\u5b58\uff0c\u5982\u9700\u4f7f\u7528\u8bf7\u5355\u72ec\u7559\u5b58\u3002","title":"GenerateAddress"},{"location":"clients/wallet-cli-command/#getaccount","text":"\u4f7f\u7528\u5730\u5740\u83b7\u5f97\u8d26\u6237\u76f8\u5173\u4fe1\u606f\uff0c\u53ef\u4ee5\u67e5\u8be2\u8d26\u6237\u4f59\u989d\uff0c\u521b\u5efa\u65f6\u95f4\u53ca\u5206\u914d\u6743\u9650\u7684\u60c5\u51b5\u7b49 wallet> getaccount [ address ] \u793a\u4f8b\uff1a wallet> getaccount TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"balance\" : 2665198240 , \"create_time\" : 1650363711000 , \"latest_opration_time\" : 1653578769000 , \"latest_consume_free_time\" : 1651228080000 , \"account_resource\" : { \"latest_consume_time_for_energy\" : 1653578769000 } , \"owner_permission\" : { \"permission_name\" : \"owner\" , \"threshold\" : 1 , \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" : 1 } ] } , \"active_permission\" : [ { \"type\" : \"Active\" , \"id\" : 2 , \"permission_name\" : \"active\" , \"threshold\" : 1 , \"operations\" : \"7fff1fc0033e3b00000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" : 1 } ] } ] }","title":"GetAccount"},{"location":"clients/wallet-cli-command/#getaddress","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u7acb\u5373\u83b7\u5f97\u5f53\u524d\u767b\u9646\u8d26\u6237\u7684\u5730\u5740 wallet> getaddress GetAddress successful !! address = TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8","title":"GetAddress"},{"location":"clients/wallet-cli-command/#getbalance","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u67e5\u8be2\u5f53\u524d\u767b\u9646\u8d26\u6237\u7684\u4f59\u989d wallet> getbalance Balance = 2665198240","title":"GetBalance"},{"location":"clients/wallet-cli-command/#updateaccountpermission","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u4e3a\u5176\u4ed6\u8d26\u6237\u8d4b\u4e88\u5f53\u524d\u8d26\u6237\u7684\u90e8\u5206\u6743\u9650\uff0c\u8ba9\u5176\u4ed6\u8d26\u6237\u53ef\u4ee5\u5728\u8be5\u53d1\u8d77\u8d26\u6237\u4e0b\u5b8c\u6210\u591a\u79cd\u64cd\u4f5c\u4ee5\u4fbf\u5b9e\u73b0\u66f4\u590d\u6742\u7684\u529f\u80fd\u53ca\u66f4\u597d\u7684\u7ba1\u7406\u8d26\u6237\uff0c\u7ecf\u5e38\u7528\u4e8e\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\u7b49\u573a\u666f\u3002 wallet>UpdateAccountPermission [ ownerAddress ] [ permissions ] \u6743\u9650\u5206\u4e3a\u5982\u4e0b\u4e09\u79cd\uff1a owner : \u62e5\u6709\u8d26\u6237\u7684\u6240\u6709\u6743\u9650\u3002 active : \u53ef\u4ee5\u83b7\u5f97\u8d26\u6237\u4e2d\u7684\u7279\u5b9a\u6743\u9650\uff0c\u5982\u679c\u662fwitness\u6743\u9650\u5219\u4e0d\u5305\u62ec\u51fa\u5757\u6743\u5229\u3002 witness : \u53ea\u7528\u4e8ewitness, \u51fa\u5757\u7684\u6743\u5229\u5c06\u4f1a\u88ab\u6388\u4e88\u5176\u4ed6\u8d26\u6237\u3002 \u6ce8\u610f \u53c2\u6570 Permission \u5fc5\u987b\u6309json\u683c\u5f0f\u4f20\u5165\u4e14\u4e0d\u80fd\u6362\u884c\u3002\u5982\u679cowner\u8d26\u6237\u4e0d\u662f\u8d85\u7ea7\u4ee3\u8868\uff0c\u5219\u4e0d\u8981\u6388\u6743witness\u6743\u9650\u7ed9\u5176\u4ed6\u8d26\u6237\u3002 \u793a\u4f8b\uff1a wallet> updateaccountpermission TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"owner_permission\" : { \"keys\" : [{ \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 }] , \"threshold\" :1, \"type\" :0, \"permission_name\" : \"owner\" } , \"active_permissions\" : [{ \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [{ \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 }] , \"threshold\" :2, \"type\" :2, \"permission_name\" : \"active12323\" }]} { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner\" : { \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 } ] , \"threshold\" :1, \"permission_name\" : \"owner\" } , \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"actives\" : [ { \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 } ] , \"threshold\" :2, \"type\" : \"Active\" , \"permission_name\" : \"active12323\" } ] } , \"type_url\" : \"type.googleapis.com/protocol.AccountPermissionUpdateContract\" } , \"type\" : \"AccountPermissionUpdateContract\" } ] , \"ref_block_bytes\" : \"4e88\" , \"ref_block_hash\" : \"11a47859be13f689\" , \"expiration\" :1656423231000, \"timestamp\" :1656423171818 } , \"raw_data_hex\" : \"0a024e88220811a47859be13f6894098dc92d49a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a30\" } before sign transaction hex string is 0a8d020a024e88220811a47859be13f6894098dc92d49a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: after sign transaction hex string is 0a8d020a024e88220811a47859be13f6894096bcb5de9a305aee01082e12e9010a3c747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e745065726d697373696f6e557064617465436f6e747261637412a8010a1541babecec4d9f58f0df77f0728b9c53abb1f21d68412241a056f776e657220013a190a1541babecec4d9f58f0df77f0728b9c53abb1f21d6841001226908021a0b6163746976653132333233200232207fff1fc0033e00000000000000000000000000000000000000000000000000003a190a15410cfaec7164cbfe78dbb8d8fba7e23b4d745ed81310013a190a1541e8bd653015895947cec33d1670a88cf67ab277b9100170ea8d8fd49a301241881b00f8e8828d9347469fcbcec730093841c2363561243b7162a9669439266049ab82f20f97a136adc88feff0a4d5aa57b11f762eaa7e05105d27ec5d55a33900 txid is 3dce7f18f6cf6962c38904678947b3b32f9e94ba6460874679d8ed063bb1c0eb UpdateAccountPermission successful !!!","title":"UpdateAccountPermission"},{"location":"clients/wallet-cli-command/#_3","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a freezeBalance unfreezeBalance getDelegatedResource freezeBalanceV2 unfreezeBalanceV2 delegateResource unDelegateResource withdrawExpireUnfreeze getAvailableUnfreezeCount getCanWithdrawUnfreezeAmount getCanDelegatedMaxSize getDelegatedResourceV2 getDelegatedResourceAccountIndexV2 GetAccountNet GetAccountResource","title":"\u8d26\u6237\u8d44\u6e90"},{"location":"clients/wallet-cli-command/#freezebalance","text":"\u901a\u8fc7\u8d28\u62bc\u4e00\u5b9a\u6570\u91cf\u7684TRX\u53ef\u4ee5\u83b7\u5f97 \u5e26\u5bbd \uff0c \u80fd\u91cf \u4ee5\u53ca TRON Power \uff08\u6295\u7968\u6743\uff09\u3002\u7528\u6237\u540c\u6837\u4e5f\u53ef\u4ee5\u901a\u8fc7\u8d28\u62bcTRX\u6765\u4e3a\u522b\u4eba\u63d0\u4f9b \u5e26\u5bbd \u548c \u80fd\u91cf \u3002\u8d28\u62bc\u8d44\u4ea7\u7684\u5355\u4f4d\u662fsun\u3002\u8be5\u63a5\u53e3\u5df2\u5e9f\u5f03\uff0c\u8bf7\u4f7f\u7528freezeBalanceV2\u63a5\u53e3\u8d28\u62bcTRX\u3002 wallet> freezeBalance [ OwnerAddress ] [ frozen_balance ] [ frozen_duration ] [ ResourceCode:0 BANDWIDTH, 1 ENERGY ] [ receiverAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\uff0c\u4e3a\u9009\u586b\uff0c\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u5f55\u8d26\u6237\u5730\u5740\u3002 frozen_balance \u662f\u6240\u51bb\u7ed3TRX\u7684\u6570\u503c,\u5355\u4f4d\u4e3a sun , \u6700\u5c0f\u51bb\u7ed3\u503c\u4e3a1000000sun\u3002 frozen_duration \u51bb\u7ed3\u5929\u6570, \u76ee\u524d\u53ea\u80fd\u8bbe\u7f6e\u4e3a3\u5929, \u5c31\u662f\u8bf43\u5929\u4e4b\u540e\u624d\u53ef\u89e3\u51bb\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 receiverAddress \u4e3a\u8d44\u6e90\u63a5\u53d7\u4eba\u7684\u5730\u5740\u3002 ResourceCode \u4e0e receiverAddress \u4e3a\u9009\u586b\uff0c ResourceCode \u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u503c\u4e3a0\uff0c\u5373\u9009\u62e9\u7c7b\u578b\u4e3a \u5e26\u5bbd \uff0c receiverAddress \u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a OwnerAddress \u4f7f\u7528\u3002 \u793a\u4f8b: wallet> freezeBalance TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw 1000000 3 1 TCrkRWJuHP4VgQF3xwLNBAjVVXvxRRGpbA { \"raw_data\" : { ... } , \"raw_data_hex\" : \"0a02a9b822081db2070d39d2316640c095dda19a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a30\" } before sign transaction hex string is 0a8e010a02a9b822081db2070d39d2316640c095dda19a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-22T08-21-05.158000000Z--TDQgNvjrE6RH749f8aFGyJqEEGyhV4BDEU.json The 2th keystore file name is UTC--2022-06-27T07-37-47.601000000Z--TWyDBTHsWJFhgywWkTNW7vh7jSUxeBaiAw.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a8e010a02a9b822081db2070d39d2316640e0f7ffab9a305a70080b126c0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412360a1541e65aca838a9e15dd81bd9532d2ad61300e58cf7110c0843d180350017a15411fafb1e96dfe4f609e2259bfaf8c77b60c535b9370c6c8d9a19a301241c45742648e6970e01b242c9b6eca2549c8721b860ced71abd331b9fe925f3c0f184768e0d2e3b580ce787cc6f67d186a0d583226fdb69c2cc8cfc6ec42e389f600 txid is f45cb5ae425796a492d4a9ecac8d60fd48bf78dbcdbe1d92725047c5dfbffba2 FreezeBalance successful !!!","title":"freezeBalance"},{"location":"clients/wallet-cli-command/#unfreezebalance","text":"wallet>unfreezeBalance [ OwnerAddress ] ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) [ receiverAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 receiverAddress \u4e3a\u8d44\u6e90\u63a5\u53d7\u4eba\u7684\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> unfreezebalance TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 1 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" } , \"type_url\" : \"type.googleapis.com/protocol.UnfreezeBalanceContract\" } , \"type\" : \"UnfreezeBalanceContract\" } ] , \"ref_block_bytes\" : \"c8b7\" , \"ref_block_hash\" : \"8842722f2845274d\" , \"expiration\" :1656915213000, \"timestamp\" :1656915154748 } , \"raw_data_hex\" : \"0a02c8b722088842722f2845274d40c8f5debe9c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c30\" } before sign transaction hex string is 0a8a010a02c8b722088842722f2845274d40c8f5debe9c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: after sign transaction hex string is 0a8a010a02c8b722088842722f2845274d40e8dd81c99c305a6c080c12680a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d68450017a1541e8bd653015895947cec33d1670a88cf67ab277b970bcaedbbe9c301241593a94650274df29619a6a6946258ea32a22f24a33445f943e3d72cd7d9b8ce7234d188f4bf3a6f0c90cb60af36fc77dc8d376afac9ed840f36dfd68c429fb7e00 txid is 3ea58b3ac2cb05868e70d40f58916312d927c40fd1e4c549554dc3e520c1efde UnfreezeBalance successful !!!","title":"unfreezeBalance"},{"location":"clients/wallet-cli-command/#getdelegatedresource","text":"wallet>getdelegatedresource [ fromAddress ] [ toAddress ] \u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u8d44\u6e90\u8d28\u62bc\u7684\u60c5\u51b5\u3002 fromAddress \u4e3a\u8d44\u6e90\u6240\u6709\u65b9\u5730\u5740\uff0c toAddress \u4e3a\u53d7\u76ca\u65b9\u5730\u5740\u3002 wallet> getdelegatedresource TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE { \"delegatedResource\" : [ { \"from\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"frozen_balance_for_energy\" : 1000000 , \"expire_time_for_energy\" : 1656660447000 } ] }","title":"GetDelegatedResource"},{"location":"clients/wallet-cli-command/#freezebalancev2","text":"Stake 2.0\u8d28\u62bc\u63a5\u53e3\uff0c\u901a\u8fc7\u8d28\u62bc\u4e00\u5b9a\u6570\u91cf\u7684TRX\u53ef\u4ee5\u83b7\u5f97 \u5e26\u5bbd \u6216\u8005 \u80fd\u91cf \u4ee5\u53ca TRON Power \uff08\u6295\u7968\u6743\uff09\u3002\u8d28\u62bc\u8d44\u4ea7\u7684\u5355\u4f4d\u662fsun\u3002 wallet> freezeBalanceV2 [ OwnerAddress ] frozen_balance ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\uff0c\u4e3a\u9009\u586b\uff0c\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u5f55\u8d26\u6237\u5730\u5740\u3002 frozen_balance \u662f\u6240\u51bb\u7ed3TRX\u7684\u6570\u503c,\u5355\u4f4d\u4e3a sun , \u6700\u5c0f\u51bb\u7ed3\u503c\u4e3a1000000sun\u3002\u3002 ResourceCode \u7528\u6765\u6307\u793a\u8981\u83b7\u53d6\u8d44\u6e90\u7684\u7c7b\u578b, 0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 \u793a\u4f8b: wallet> freezeBalanceV2 1000000 1 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"frozen_balance\" :1000000, \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.FreezeBalanceV2Contract\" } , \"type\" : \"FreezeBalanceV2Contract\" } ] , \"ref_block_bytes\" : \"00bb\" , \"ref_block_hash\" : \"0c237850e9e3c216\" , \"expiration\" :1676620524000, \"timestamp\" :1676620465372 } , \"raw_data_hex\" : \"0a0200bb22080c237850e9e3c21640e0d3fbf2e5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e530\" } before sign transaction hex string is 0a770a0200bb22080c237850e9e3c21640e0d3fbf2e5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a770a0200bb22080c237850e9e3c21640dbb89efde5305a59083612550a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d180170dc89f8f2e53012419e46cc7b6706ee6a14a541df5f9c518fae9a71ac7a7cc484c48386eb0997a8ab10c41e09feb905c5cc370fe1d15968d22cec2fd2cdc5916adfd3a78c52f8d47000 txid is 1743aa098f5e10ac8b68ccbf0ca6b5f1364a63485e442e6cb03fd33e3331e3fb freezeBalanceV2 successful !!!","title":"freezeBalanceV2"},{"location":"clients/wallet-cli-command/#unfreezebalancev2","text":"Stake2.0 \u89e3\u8d28\u62bcAPI\uff1a\u89e3\u9501\u8d28\u62bc\u7684TRX, \u91ca\u653e\u6240\u76f8\u5e94\u6570\u91cf\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\uff0c\u540c\u65f6\u56de\u6536\u76f8\u5e94\u6570\u91cf\u7684\u6295\u7968\u6743(TP)\u3002 wallet> unfreezeBalanceV2 [ OwnerAddress ] unfreezeBalance ResourceCode ( 0 BANDWIDTH,1 ENERGY,2 TRON_POWER ) OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 unfreezeBalance \u89e3\u8d28\u62bcTRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u6240\u51bb\u7ed3\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 \u793a\u4f8b\uff1a wallet> unfreezeBalanceV2 1000000 1 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"resource\" : \"ENERGY\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"unfreeze_balance\" :1000000 } , \"type_url\" : \"type.googleapis.com/protocol.UnfreezeBalanceV2Contract\" } , \"type\" : \"UnfreezeBalanceV2Contract\" } ] , \"ref_block_bytes\" : \"0132\" , \"ref_block_hash\" : \"0772c1a1727e2ef0\" , \"expiration\" :1676620887000, \"timestamp\" :1676620829314 } , \"raw_data_hex\" : \"0a02013222080772c1a1727e2ef040d8e791f3e5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530\" } before sign transaction hex string is 0a790a02013222080772c1a1727e2ef040d8e791f3e5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a790a02013222080772c1a1727e2ef040ecd2b4fde5305a5b083712570a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e63655632436f6e7472616374121d0a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca10c0843d18017082a58ef3e530124111bac22e9bc35e1a78c13796893e9f2b81dc99eb26d9ce7a95d0c6a0a9b5588739c52b999acd370b255d178f57bf2abef8881891f23e042ddf83c3551b8bd98e01 txid is f9e114347ea89c5d722d20226817bc41c8a39ea36be756ba216cf450ab3f1fb3 unfreezeBalanceV2 successful !!!","title":"unfreezeBalanceV2"},{"location":"clients/wallet-cli-command/#delegateresource","text":"Stake 2.0 \u8d44\u6e90\u4ee3\u7406API\uff1a\u5c06\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u8d44\u6e90\u4ee3\u7406\u7ed9\u5176\u5b83\u8d26\u6237\u3002 wallet> delegateResource [ OwnerAddress ] balance ResourceCode ( 0 BANDWIDTH,1 ENERGY ) , ReceiverAddress [ lock ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 balance \u4ee3\u7406\u7684TRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u4ee3\u7406\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 ReceiverAddress \u8d44\u6e90\u63a5\u6536\u8005\u5730\u5740\u3002 lock \u7528\u6765\u6307\u793a\u662f\u5426\u5c06\u8be5\u8d44\u6e90\u4ee3\u7406\u9501\u5b9a\u4e09\u5929\uff0c\u53ef\u9009\uff0c\u9ed8\u8ba4\u503c\u4e3a0\uff0c0\u4e3a\u4e0d\u9501\u5b9a\uff0c1\u4e3a\u9501\u5b9a\u3002 \u793a\u4f8b\uff1a wallet> delegateResource 1000000 1 TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g 0 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"balance\" :1000000, \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.DelegateResourceContract\" } , \"type\" : \"DelegateResourceContract\" } ] , \"ref_block_bytes\" : \"020c\" , \"ref_block_hash\" : \"54e32e95d11894f8\" , \"expiration\" :1676621547000, \"timestamp\" :1676621487525 } , \"raw_data_hex\" : \"0a02020c220854e32e95d11894f840f88bbaf3e5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e530\" } before sign transaction hex string is 0a8f010a02020c220854e32e95d11894f840f88bbaf3e5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a8f010a02020c220854e32e95d11894f84093e9dcfde5305a710839126d0a35747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e70a5bbb6f3e5301241414de060e9c104bb45d745e22b7b7a30b4a89a2635c62aab152fff5d2f10b7443023a9aa487be86652b74974ff6a7d82d3dbf94cea9ac1e0a7e48e682175e3f601 txid is 0917002d0068dde7ad4ffe46e75303d11192e17bfa78934a5f867c5ae20720ec delegateResource successful !!!","title":"delegateResource"},{"location":"clients/wallet-cli-command/#undelegateresource","text":"Stake 2.0 \u53d6\u6d88\u8d44\u6e90\u4ee3\u7406API\uff1a\u53d6\u6d88\u4e3a\u76ee\u6807\u5730\u5740\u4ee3\u7406\u7684\u5e26\u5bbd\u6216\u8005\u80fd\u91cf\u3002 wallet> unDelegateResource [ OwnerAddress ] balance ResourceCode ( 0 BANDWIDTH,1 ENERGY ) , ReceiverAddress OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 balance \u89e3\u4ee3\u7406\u7684TRX\u6570\u91cf\u3002 ResourceCode \u7528\u6765\u6307\u793a\u89e3\u9664\u4ee3\u7406\u8d44\u6e90\u7684\u79cd\u7c7b\uff0c0\u4e3a \u5e26\u5bbd \uff0c1\u4e3a \u80fd\u91cf \u3002 ReceiverAddress \u8d44\u6e90\u63a5\u6536\u8005\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> unDelegateResource 1000000 1 TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"balance\" :1000000, \"resource\" : \"ENERGY\" , \"receiver_address\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"owner_address\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" } , \"type_url\" : \"type.googleapis.com/protocol.UnDelegateResourceContract\" } , \"type\" : \"UnDelegateResourceContract\" } ] , \"ref_block_bytes\" : \"0251\" , \"ref_block_hash\" : \"68ac15256c213e71\" , \"expiration\" :1676621754000, \"timestamp\" :1676621695001 } , \"raw_data_hex\" : \"0a020251220868ac15256c213e714090ddc6f3e5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530\" } before sign transaction hex string is 0a91010a020251220868ac15256c213e714090ddc6f3e5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. y Please choose your key for sign. The 1th keystore file name is UTC--2023-02-17T02-53-57.163000000Z--THLJLytz6UHwpmDFi5RC43D44dmnh4ZTeL.json The 2th keystore file name is UTC--2023-02-17T07-40-47.121000000Z--TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM.json Please choose between 1 and 2 2 Please input your password. password: after sign transaction hex string is 0a91010a020251220868ac15256c213e7140febde9fde5305a73083a126f0a37747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e44656c65676174655265736f75726365436f6e747261637412340a1541ce8a0cf0c16d48bcf22825f6053248df653c89ca100118c0843d221541fd49eda0f23ff7ec1d03b52c3a45991c24cd440e709990c3f3e530124102ebde16d1abaccd976f8ead4b5acf92b05f7d9796c28ca6a26b4e51442e638e5e33e598bb03732da24dc761a39b9d307c045b55323128dc9b07510ffc48933a01 txid is 537a3f4461ab55c705b77503bc42f469bfc22c0cb8588b8f3641ab40117ebfd8 unDelegateResource successful !!!","title":"unDelegateResource"},{"location":"clients/wallet-cli-command/#withdrawexpireunfreeze","text":"Stake 2.0 \u63d0\u53d6\u8d28\u62bc\u672c\u91d1API\uff1a\u63d0\u53d6\u5df2\u8fc7\u9501\u5b9a\u671f\u7684\u89e3\u8d28\u62bc\u7684\u672c\u91d1\u3002 wallet> withdrawExpireUnfreeze [ OwnerAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> withdrawExpireUnfreeze","title":"withdrawExpireUnfreeze"},{"location":"clients/wallet-cli-command/#getavailableunfreezecount","text":"Stake 2.0 API: \u67e5\u8be2\u5f53\u4e0b\u89e3\u8d28\u62bc\u5269\u4f59\u6b21\u6570\u3002 wallet> getavailableunfreezecount [ OwnerAddress ] OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> GetAvailableUnfreezeCount { \"count\" : 30 }","title":"getavailableunfreezecount"},{"location":"clients/wallet-cli-command/#getcanwithdrawunfreezeamount","text":"Stake 2.0 API: \u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf\u3002 wallet> getcanwithdrawunfreezeamount ownerAddress timestamp OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 timestamp \u67e5\u8be2\u7684\u63d0\u73b0\u65f6\u95f4\u6233\uff0c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u3002 \u793a\u4f8b\uff1a wallet> getcanwithdrawunfreezeamount 1776621695001 { \"amount\" : 4000000 }","title":"getcanwithdrawunfreezeamount"},{"location":"clients/wallet-cli-command/#getcandelegatedmaxsize","text":"Stake 2.0 API: \u67e5\u8be2\u5728\u67d0\u65f6\u95f4\u70b9\u53ef\u4ee5\u63d0\u53d6\u7684\u89e3\u8d28\u62bc\u672c\u91d1\u6570\u91cf\u3002 wallet> getcandelegatedmaxsize ownerAddress type OwnerAddress \u662f\u4ea4\u6613\u53d1\u8d77\u4eba\u7684\u5730\u5740\u3002\u53ef\u9009\uff0c\u9ed8\u8ba4\u4e3awallet-cli\u767b\u5f55\u5730\u5740\u3002 type \u67e5\u8be2\u7684\u8d44\u6e90\u7c7b\u578b\uff0c0\u4e3a\u5e26\u5bbd\uff0c1\u4e3a\u80fd\u91cf\u3002 \u793a\u4f8b\uff1a wallet> getcandelegatedmaxsize 1 { \"max_size\" : 11000000 }","title":"getcandelegatedmaxsize"},{"location":"clients/wallet-cli-command/#getdelegatedresourcev2","text":"Stake 2.0 API\uff1a\u67e5\u8be2\u67d0\u5730\u5740\u4ee3\u7406\u7ed9\u76ee\u6807\u5730\u5740\u7684\u8d44\u6e90\u60c5\u51b5\u3002 wallet> getdelegatedresourcev2 fromAddress toAddress fromAddress \u8d44\u6e90\u4ee3\u7406\u5730\u5740\u3002 toAddress \u8d44\u6e90\u63a5\u6536\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> getdelegatedresourcev2 TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g { \"delegatedResource\" : [ { \"from\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"to\" : \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" , \"frozen_balance_for_bandwidth\" : 7000000 , \"frozen_balance_for_energy\" : 3000000 } ] }","title":"getdelegatedresourcev2"},{"location":"clients/wallet-cli-command/#getdelegatedresourceaccountindexv2","text":"Stake 2.0 API\uff1a\u67e5\u8be2\u67d0\u5730\u5740\u7684\u8d44\u6e90\u59d4\u6258\u7d22\u5f15\u3002\u8fd4\u56de\u4e24\u4e2a\u5217\u8868\uff0c\u4e00\u4e2a\u662f\u8be5\u5e10\u6237\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u7684\u5730\u5740\u5217\u8868(toAddress)\uff0c\u53e6\u4e00\u4e2a\u662f\u5c06\u8d44\u6e90\u59d4\u6258\u7ed9\u8be5\u5e10\u6237\u7684\u5730\u5740\u5217\u8868(fromAddress) wallet> getdelegatedresourceaccountindexv2 ownerAddress OwnerAddress \u67e5\u8be2\u7684\u5730\u5740\u3002 \u793a\u4f8b\uff1a wallet> getdelegatedresourceaccountindexv2 TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM { \"account\" : \"TUoHaVjx7n5xz8LwPRDckgFrDWhMhuSuJM\" , \"fromAccounts\" : [ \"TUznHJfHe6gdYY7gvWmf6bNZHuPHDZtowf\" ] , \"toAccounts\" : [ \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\" ] }","title":"getdelegatedresourceaccountindexv2"},{"location":"clients/wallet-cli-command/#getaccountnet","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u5185\u7684\u5e26\u5bbd\u4f7f\u7528\u60c5\u51b5 \u793a\u4f8b\uff1a wallet> getaccountnet TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"freeNetUsed\" : 262 , \"freeNetLimit\" : 1500 , \"TotalNetLimit\" : 43200000000 , \"TotalNetWeight\" : 8725123062 }","title":"GetAccountNet"},{"location":"clients/wallet-cli-command/#getaccountresource","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u67e5\u8be2\u8d26\u6237\u7684\u5e26\u5bbd\u548c\u80fd\u91cf\u4f7f\u7528\u60c5\u51b5 \u793a\u4f8b\uff1a wallet> getaccountresource TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 { \"freeNetUsed\" : 262 , \"freeNetLimit\" : 1500 , \"TotalNetLimit\" : 43200000000 , \"TotalNetWeight\" : 8725123062 , \"tronPowerLimit\" : 1 , \"TotalEnergyLimit\" : 90000000000 , \"TotalEnergyWeight\" : 328098231 }","title":"GetAccountResource"},{"location":"clients/wallet-cli-command/#_4","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a SendCoin AddTransactionSign BroadcastTransaction GetTransactionApprovedList","title":"\u4ea4\u6613"},{"location":"clients/wallet-cli-command/#sendcoin","text":"> sendcoin [toAddress] [amount] toAddress \u4e3a\u76ee\u6807\u5730\u5740\uff0c amount \u4e3a\u8f6c\u8d26\u6570\u989d\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u591a\u7b7e\u4ea4\u6613\u4f8b\u5b50\uff0c\u5176\u4e2d\u7684\u7b7e\u540d\u5404\u8d26\u6237\u7684\u6388\u6743\u60c5\u51b5\u4e3a UpdateAccountPermission \u90e8\u5206\u7684\u4f8b\u5b50\u4e2d\u5b9e\u9645\u7684\u6388\u6743\u60c5\u51b5,\u8bf7\u53c2\u8003\uff1a wallet> sendcoin TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE 10 { \"raw_data\" : { \"contract\" : [ \u00b7\u00b7\u00b7 \"raw_data_hex\" : \"0a029ca12208432ed1fe1357ff7f40c0c484f19a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a708a8481f19a30\" } before sign transaction hex string is 0a83010a029ca12208432ed1fe1357ff7f40c0c484f19a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a708a8481f19a30 Please confirm and input your permission id, if input y or Y means default 0 , other non-numeric characters will cancel transaction. 2 Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 1 Please input your password. password: Current signWeight is: { \"result\" : { \"code\" : \"NOT_ENOUGH_PERMISSION\" } , \"approved_list\" : [ \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" ] , \"permission\" : { \"operations\" : \"7fff1fc0033e0000000000000000000000000000000000000000000000000000\" , \"keys\" : [ { \"address\" : \"TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej\" , \"weight\" :1 } , { \"address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" , \"weight\" :1 } ] , \"threshold\" :2, \"id\" :2, \"type\" : \"Active\" , \"permission_name\" : \"active12323\" } , \"current_weight\" :1, \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483\" , \"transaction\" : { \"signature\" : [ \"990001e909e638bbaa5de9b392121971d25cabde1391f5e164cd8a14608812df01a273e867c2329b8adb233599c5d353c435e789c777fd3e0b9fe83f0737a91101\" ] , \"txID\" : \"ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483\" , \"raw_data\" :\u00b7\u00b7\u00b7, \"raw_data_hex\" : \"0a029ca12208432ed1fe1357ff7f40a2b3a7fb9a305a67080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a2802708a8481f19a30\" } } } Please confirm if continue add signature enter y or Y, else any other y Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 4 Please input your password. password: after sign transaction hex string is 0a85010a029ca12208432ed1fe1357ff7f40a2b3a7fb9a305a67080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a2802708a8481f19a301241990001e909e638bbaa5de9b392121971d25cabde1391f5e164cd8a14608812df01a273e867c2329b8adb233599c5d353c435e789c777fd3e0b9fe83f0737a91101124141ba3ffe9c7bb1ed184df8bf635d8c987982b2f4b22c447666ac82726f4a97cb2ef4d3fabd64137b8d59239bd7173c74264733ed140ccd04934a88c438de1cab00 txid is ece603ec8ad11578450dc8adf29dd9d9833e733c313fe16a947c8c768f1e4483 Send 10 Sun to TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE successful !! \u5728\u8f6c\u8d26\u8fc7\u7a0b\u4e2d\uff0c\u9700\u8981\u8f93\u5165 permission_id \uff0c\u5176\u9ed8\u8ba4\u503c\u4e3a0\uff0c\u6b64\u65f6\u8868\u793a\u8be5\u7b14\u4ea4\u6613\u53ea\u9700\u53d1\u8d77\u4eba\u7b7e\u540d\u5373\u53ef\u3002 \u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u8f93\u5165\u4e86\u201c2\u201d\uff0c\u8868\u793a\u4f7f\u7528\u591a\u91cd\u7b7e\u540d\u5b8c\u6210\u6b64\u7b14\u4ea4\u6613\uff0c\u6b64\u65f6\u9700\u8981\u62e5\u6709 actives \u6743\u9650\u7684\u4e24\u4e2a\u8d26\u6237\u90fd\u7b7e\u540d\u624d\u80fd\u5b8c\u6210\u4ea4\u6613\uff0c\u8bf7\u53c2\u7167 UpdateAccountPermission \u90e8\u5206\u7684\u4f8b\u5b50\uff0c\u9996\u5148\u7531 TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej \u5b8c\u6210\u7b7e\u540d\uff0c\u6b64\u65f6\u7cfb\u7edf\u4f1a\u8be2\u95ee\u662f\u5426\u7ee7\u7eed\u7b7e\u540d\uff0c\u8f93\u5165\u201cy\u201d\u4e4b\u540e\uff0c\u518d\u7531 TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE \u5b8c\u6210\u7b7e\u540d\u3002 \u4e24\u4e2a\u8d26\u6237\u7684\u6743\u91cd\u5404\u4e3a1\uff0c\u5b8c\u6210\u591a\u7b7e\u7684\u6743\u91cd\u9600\u503c\u4e3a2\uff0c\u6b64\u65f6\u7b7e\u540d\u6761\u4ef6\u8fbe\u6210\uff0c\u4ea4\u6613\u6210\u529f\u3002\u8fd9\u4e2a\u4f8b\u5b50\u4e3a\u4f7f\u7528\u540c\u4e00\u5ba2\u6237\u7aef\u65f6\u5982\u4f55\u5b8c\u6210\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\u3002\u5f53\u4f7f\u7528\u591a\u4e2a\u5ba2\u6237\u7aef\u65f6\uff0c\u8bf7\u53c2\u8003\u4e0b\u9762\u8fd9\u4e2a\u547d\u4ee4\u3002","title":"SendCoin"},{"location":"clients/wallet-cli-command/#addtransactionsign","text":"\u5f53\u6709\u591a\u4e2a\u5ba2\u6237\u7aef\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528\u8be5\u547d\u4ee4\u8fdb\u884c\u591a\u91cd\u7b7e\u540d\u4ea4\u6613\uff0c\u6b64\u65f6\u9700\u8981\u4ea4\u6613\u672c\u4f53\u7684hex string\u3002 \u793a\u4f8b\uff1a wallet> addtransactionsign 0a83010a0241aa2208b2d2c13c86e8bd884098acb1cf9a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30 Please input permission id. 0 Please choose your key for sign. The 1th keystore file name is UTC--2022-06-28T06-52-56.928000000Z--TB9qhqbev6DpX8mxdf3zDdtSQ6GC6Vb6Ej.json The 2th keystore file name is .DS_Store The 3th keystore file name is UTC--2022-04-06T09-43-20.710000000Z--TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8.json The 4th keystore file name is UTC--2022-04-07T09-03-38.307000000Z--TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE.json Please choose between 1 and 4 3 Please input your password. password: { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \"txID\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"amount\" :10, \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" } , \"type_url\" : \"type.googleapis.com/protocol.TransferContract\" } , \"type\" : \"TransferContract\" } ] , \"ref_block_bytes\" : \"41aa\" , \"ref_block_hash\" : \"b2d2c13c86e8bd88\" , \"expiration\" :1656434882649, \"timestamp\" :1656413188328 } , \"raw_data_hex\" : \"0a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30\" } Transaction hex string is 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 \u6ce8\u610f \u7b7e\u540d\u540e\uff0c\u5404\u65b9\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u624b\u52a8\u5b8c\u6210\u4ea4\u6613\u5e7f\u64ad\u3002","title":"AddTransactionSign"},{"location":"clients/wallet-cli-command/#broadcasttransaction","text":"\u8981\u4f7f\u7528\u4ea4\u6613\u672c\u4f53hex string\u5b8c\u6210\u4ea4\u6613\u5e7f\u64ad\u65f6\uff0c\u8bf7\u4f7f\u7528\u672c\u547d\u4ee4\u3002 wallet> broadcasttransaction 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 BroadcastTransaction successful !!!","title":"BroadcastTransaction"},{"location":"clients/wallet-cli-command/#gettransactionapprovedlist","text":"\u901a\u8fc7\u4ea4\u6613\u672c\u4f53hex string\u4f7f\u7528\u672c\u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u7b7e\u540d\u5217\u8868 \u793a\u4f8b\uff1a wallet> getTransactionApprovedList 0a8c010a020318220860e195d3609c86614096eadec79d2d5a6e080112680a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412370a1541a7d8a35b260395c14aa456297662092ba3b76fc01215415a523b449890854c8fc460ab602df9f31fe4293f18808084fea6dee11128027094bcb8bd9d2d1241c18ca91f1533ecdd83041eb0005683c4a39a2310ec60456b1f0075b4517443cf4f601a69788f001d4bc03872e892a5e25c618e38e7b81b8b1e69d07823625c2b0112413d61eb0f8868990cfa138b19878e607af957c37b51961d8be16168d7796675384e24043d121d01569895fcc7deb37648c59f538a8909115e64da167ff659c26101 { \"result\" : { } , \"approved_list\" : [ \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" ] , \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"transaction\" : { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \"txID\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"amount\" :10, \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"to_address\" : \"TXBpeye7UQ4dDZEnmGDv4vX37mBYDo1tUE\" } , \"type_url\" : \"type.googleapis.com/protocol.TransferContract\" } , \"type\" : \"TransferContract\" } ] , \"ref_block_bytes\" : \"41aa\" , \"ref_block_hash\" : \"b2d2c13c86e8bd88\" , \"expiration\" :1656434882649, \"timestamp\" :1656413188328 } , \"raw_data_hex\" : \"0a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a30\" } } }","title":"GetTransactionApprovedList"},{"location":"clients/wallet-cli-command/#_5","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a GetNextMaintenanceTime ListNodes GetBlock GetBlockById GetBlockByLatestNum GetBlockByLimitNext GetTransactionById GetTransactionCountByBlockNum GetTransactionInfoById GetTransactionInfoByBlockNum GetTransactionSignWeight","title":"\u67e5\u8be2\u94fe\u4e0a\u6570\u636e"},{"location":"clients/wallet-cli-command/#getnextmaintenancetime","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u67e5\u8be2\u4e0b\u4e00\u4e2a\u7ef4\u62a4\u65f6\u95f4 wallet> GetNextMaintenanceTime Next maintenance time is : 2022-06-29 16:40:00","title":"GetNextMaintenanceTime"},{"location":"clients/wallet-cli-command/#listnodes","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u5217\u51fa\u5176\u4ed6\u8282\u70b9\u7684\u5730\u5740\u548c\u7aef\u53e3\u4fe1\u606f wallet> listnodes IP::1.23.456.789 Port::12345 IP::2.345.67.89 Port::12345 IP::345.678.901.234 Port::12345 \u00b7\u00b7\u00b7","title":"ListNodes"},{"location":"clients/wallet-cli-command/#getblock","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u533a\u5757\uff0c\u5982\u4e0d\u8f93\u5165\u533a\u5757\u9ad8\u5ea6\uff0c\u5219\u9ed8\u8ba4\u67e5\u8be2\u6700\u65b0\u533a\u5757\u3002 wallet> getblock Get current block !!! { \"block_header\" : { \"raw_data\" : { \"number\" :27774469, \"txTrieRoot\" : \"0000000000000000000000000000000000000000000000000000000000000000\" , \"witness_address\" : \"TQuzjxWcqHSh1xDUw4wmMFmCcLjz4wSCBp\" , \"parentHash\" : \"0000000001a7ce048eb88d7c3c5e9c5f8e93a6cc568f47140e243d00d0f9280a\" , \"version\" :24, \"timestamp\" :1656919215000 } , \"witness_signature\" : \"3af25276891b1cf7f9f72e63ad956b50e5819fb3fa6f0b6393ed092e53a90a5438620b92b5d499e0068c6775b723e3c90677157b3e9f7b8933d1e863716145f500\" } }","title":"GetBlock"},{"location":"clients/wallet-cli-command/#getblockbyid","text":"\u901a\u8fc7\u533a\u5757\u54c8\u5e0c\u67e5\u8be2\u533a\u5757\u4fe1\u606f wallet> getblockbyid [blockID] \u793a\u4f8b\uff1a wallet> getblockbyid 0000000001a7cd54ee2b302cfd443cccec78e55a31902d2e7ea47e737c1a5ede { \"block_header\" : { \"raw_data\" : { \"number\" :27774292, \"txTrieRoot\" : \"a60f8cb160d06d5279cb463925274e18fec37f0414c4d8fdc4fb2299ccb0a8bf\" , \"witness_address\" : \"TGsdxpHNJaxsVNFFdb4R6Rib1TsKGon2Wp\" , \"parentHash\" : \"0000000001a7cd53685867286b17fa0f2389e1d3026bea0a0019c5fc37f873cb\" , \"version\" :24, \"timestamp\" :1656918678000 } , \"witness_signature\" : \"a93db1a8d989c6637d587369de2872a008f14d1df8f0aaeda8a54c324a44c269367ea31daf623834fd6a4ef3f6150ab8d370adff1df6c0e8c96af9cf34408d5600\" } , \u00b7\u00b7\u00b7","title":"GetBlockById"},{"location":"clients/wallet-cli-command/#getblockbylatestnum","text":"\u83b7\u53d6\u6700\u8fd1\u7684n\u4e2a\u533a\u5757\u7684\u4fe1\u606f\uff0cn \u5fc5\u987b\u6ee1\u8db3 0 < n < 100\u3002 wallet> getblockbylatestnum [n]","title":"GetBlockByLatestNum"},{"location":"clients/wallet-cli-command/#getblockbylimitnext","text":"\u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u533a\u95f4\u5185\u7684\u533a\u5757\u4fe1\u606f\u3002 startBlock \u4e3a\u533a\u95f4\u5f00\u59cb\u7684\u533a\u5757\u9ad8\u5ea6\uff0c endBLock \u4e3a\u533a\u95f4\u7ed3\u675f\u7684\u533a\u5757\u9ad8\u5ea6\u3002 wallet> GetBlockByLimitNext [startBlock, endBlock] \u793a\u4f8b\uff1a wallet> getblockbylimitnext 27774670 27774674 [ { \"block_header\" : { \"raw_data\" : { \"number\" :27774670, \"txTrieRoot\" : \"0eb9ba48deda22fafa613c0aefa6d3e0b21261ad82a126ce99a6b80e8b68045c\" , \"witness_address\" : \"TVKfvNUMcZdZbxhPLb2CkQ4nyUUhvwhv1b\" , \"parentHash\" : \"0000000001a7cecd7a2cdc58fdfd2edbfeaeb530958879bf1a299cc30043cd0b\" , \"version\" :24, \"timestamp\" :1656919824000 } , \"witness_signature\" : \"ee6653289e24edd24d70f4975e12934573d6e798a2a5c5e26e0b13bc6d25138c49a0f55fb0e9a5c503622b5877811403577a5e278528293d05c5f0b9d5d5542401\" } , \u00b7\u00b7\u00b7","title":"GetBlockByLimitNext"},{"location":"clients/wallet-cli-command/#gettransactionbyid","text":"\u901a\u8fc7\u4ea4\u6613\u54c8\u5e0c\u67e5\u8be2\u4ea4\u6613\u4fe1\u606f\u3002 wallet> GetTransactionById [ transactionID ] transactionID \u662f\u4ea4\u6613\u54c8\u5e0c\uff0c\u793a\u4f8b\u5982\u4e0b\uff1a wallet> gettransactionbyid 86f09e0152cae9424685411439601c93f9a0ee484ab6e4184cb02294e85cdf89 { \"ret\" : [ { \"contractRet\" : \"SUCCESS\" } ] , \"signature\" : [ \"26b70d14ca08de644c4b1d8b71952ff57078a36719497bb188040ba589a808c7c896deb82fadcaad7d68be3d1d02bd2e490227ca90cc8b050f750aa10df6105300\" ] , \"txID\" : \"86f09e0152cae9424685411439601c93f9a0ee484ab6e4184cb02294e85cdf89\" , \"raw_data\" : { \u00b7\u00b7\u00b7","title":"GetTransactionById"},{"location":"clients/wallet-cli-command/#gettransactioncountbyblocknum","text":"\u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u8be5\u533a\u5757\u5185\u6709\u591a\u5c11\u7b14\u4ea4\u6613\u3002\u6bd4\u5982\u4e0b\u4f8b\u4e2d\uff0c\u533a\u5757\u9ad8\u5ea6\u4e3a27633562\u3002 wallet> gettransactioncountbyblocknum 27633562 The block contains 4 transactions","title":"GetTransactionCountByBlockNum"},{"location":"clients/wallet-cli-command/#gettransactioninfobyid","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u901a\u8fc7\u4ea4\u6613\u54c8\u5e0c\u83b7\u53d6\u4ea4\u6613\u8be6\u60c5\uff0c\u901a\u5e38\u7528\u4e8e\u67e5\u770b\u667a\u80fd\u5408\u7ea6\u7684\u89e6\u53d1\u60c5\u51b5\u3002 \u793a\u4f8b\uff1a wallet> gettransactioninfobyid 6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87 { \"id\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"blockNumber\" : 27609041 , \"blockTimeStamp\" : 1656417906000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 265 } }","title":"GetTransactionInfoById"},{"location":"clients/wallet-cli-command/#gettransactioninfobyblocknum","text":"\u901a\u8fc7\u533a\u5757\u9ad8\u5ea6\u67e5\u8be2\u8be5\u533a\u5757\u5185\u4ea4\u6613\u7684\u8be6\u60c5\uff0c blockNum \u4e3a\u533a\u5757\u9ad8\u5ea6\u3002 wallet> gettransactioninfobyblocknum [blockNum] \u793a\u4f8b\uff1a wallet> gettransactioninfobyblocknum 27775479 [ { \"result\" : \"FAILED\" , \"packingFee\" :882440, \"fee\" :882440, \"blockNumber\" :27775479, \"contractResult\" : [ \"08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002173746172742074696d65206265666f726520626c6f636b2e74696d657374616d7000000000000000000000000000000000000000000000000000000000000000\" ] , \u00b7\u00b7\u00b7 \"result\" : \"FAILED\" , \"packingFee\" :345000, \"fee\" :345000, \"blockNumber\" :27775479, \"contractResult\" : [ \"08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002345524332303a207472616e7366657220746f20746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000\" ] , \"blockTimeStamp\" :1656922275000, \"resMessage\" : \"REVERT opcode executed\" , \"receipt\" : { \"result\" : \"REVERT\" , \"net_fee\" :345000, \"energy_usage_total\" :647, \"origin_energy_usage\" :647 } , \"id\" : \"13d1e01639edd3f5200789b2fe4d3fdeb765f0bbe4548a1fb69583da85cf7980\" , \"contract_address\" : \"TBLfSzQo8TGtCotPD5JZntpZfQqPFLehTE\" } ]","title":"GetTransactionInfoByBlockNum"},{"location":"clients/wallet-cli-command/#gettransactionsignweight","text":"\u901a\u8fc7\u4ea4\u6613\u672c\u4f53hex string\u83b7\u53d6\u7b7e\u540d\u4fe1\u606f \u793a\u4f8b\uff1a wallet>getTransactionSignWeight 0a83010a0241aa2208b2d2c13c86e8bd8840d9f0d9d99a305a65080112610a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412300a1541babecec4d9f58f0df77f0728b9c53abb1f21d684121541e8bd653015895947cec33d1670a88cf67ab277b9180a70e8e1adcf9a301241dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201 { \"result\" : { } , \"approved_list\" : [ \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" ] , \"permission\" : { \"keys\" : [ { \"address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"weight\" :1 } ] , \"threshold\" :1, \"permission_name\" : \"owner\" } , \"current_weight\" :1, \"transaction\" : { \"result\" : { \"result\" :true } , \"txid\" : \"6e1d2460796f717b701e355734ac0e4e8b32e14c24ce569a60ad3f63afe46c87\" , \"transaction\" : { \"signature\" : [ \"dbfe007bb44e8db164f4c0cf9b586a8d6a65f0612c4d9ec5350adeae6cd97c7874e7254bbf4156b545a90c34e48c8f28bdb5c8f9258514233b9201b2844d7f9201\" ] , \u00b7\u00b7\u00b7 } } }","title":"GetTransactionSignWeight"},{"location":"clients/wallet-cli-command/#_6","text":"\u672c\u8282\u4e3a\u6240\u6709\u4e0e\u667a\u80fd\u5408\u7ea6\u76f8\u5173\u7684\u547d\u4ee4: DeployContract TriggerContract TriggerConstantContract EstimateEnergy GetContract UpdateEnergyLimit UpdateSetting UnfreezeAsset","title":"\u667a\u80fd\u5408\u7ea6"},{"location":"clients/wallet-cli-command/#deploycontract","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u90e8\u7f72\u667a\u80fd\u5408\u7ea6 wallet> DeployContract [ownerAddress] [contractName] [ABI] [byteCode] [constructor] [params] [isHex] [fee_limit] [consume_user_resource_percent] [origin_energy_limit] [value] [token_value] [token_id](e.g: TRXTOKEN, use # if don't provided) library:address,...> OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 contractName \u4e3a\u667a\u80fd\u5408\u7ea6\u7684\u540d\u79f0\u3002 ABI \u4e3a\u7f16\u8bd1\u65f6\u751f\u6210\u7684ABI\u7801\u3002 byteCode \u4e3a\u7f16\u8bd1\u65f6\u751f\u6210\u7684bytecode\u3002 constructor , params , isHex \u8fd9\u4e09\u4e2a\u53c2\u6570\u5b9a\u4e49\u4e86bytecode\u7684\u683c\u5f0f\uff0c\u4e5f\u5c31\u51b3\u5b9a\u4e86\u4ece\u53c2\u6570\u6765\u89e3\u6790bytecode\u7684\u65b9\u5f0f\u3002 fee_limit \u7528\u6765\u8bbe\u7f6e\u5355\u7b14\u4ea4\u6613\u6240\u80fd\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\u3002 consume_user_resource_percent \u4e3a\u7528\u6237\u8c03\u7528\u5408\u7ea6\u65f6\u6d88\u8017TRX\u6240\u5360\u7684\u6bd4\u4f8b\uff0c\u4e3a\u767e\u5206\u6570[0, 100%]\u3002 origin_energy_limit \u4e3a\u89e6\u53d1\u4e00\u6b21\u5408\u7ea6\u5f00\u53d1\u8005\u6240\u6d88\u8017TRX\u7684\u4e0a\u9650\u3002 value \u4e3a\u8f6c\u5165\u5230\u5408\u7ea6\u5730\u5740\u4e2d\u7684TRX\u7684\u6570\u989d\u3002 token_value \u4e3a\u5408\u7ea6\u4e2dTRC-10 token\u7684\u6570\u91cf\u3002 token_id \u4e3aTRC-10 \u7684ID\u3002 \u793a\u4f8b: wallet> deployContract normalcontract544 [{ \"constant\" :false, \"inputs\" : [{ \"name\" : \"i\" , \"type\" : \"uint256\" }] , \"name\" : \"findArgsByIndexTest\" , \"outputs\" : [{ \"name\" : \"z\" , \"type\" : \"uint256\" }] , \"payable\" :false, \"stateMutability\" : \"nonpayable\" , \"type\" : \"function\" }] 608060405234801561001057600080fd5b50610134806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029 # # false 1000000000 75 50000 0 0 # \u53ef\u4ee5\u4f7f\u7528 getTransactionInfoById \u6765\u67e5\u770b\u5408\u7ea6\u7684\u6267\u884c\u7ed3\u679c\uff0c\u793a\u4f8b\u5982\u4e0b: wallet> getTransactionInfoById 4978dc64ff746ca208e51780cce93237ee444f598b24d5e9ce0da885fb3a3eb9 { \"id\" : \"8c1f57a5e53b15bb0a0a0a0d4740eda9c31fbdb6a63bc429ec2113a92e8ff361\" , \"fee\" : 6170500 , \"blockNumber\" : 1867 , \"blockTimeStamp\" : 1567499757000 , \"contractResult\" : [ \"6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029\" ] , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"receipt\" : { \"energy_fee\" : 6170500 , \"energy_usage_total\" : 61705 , \"net_usage\" : 704 , \"result\" : \"SUCCESS\" } }","title":"DeployContract"},{"location":"clients/wallet-cli-command/#triggercontract","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u89e6\u53d1\u667a\u80fd\u5408\u7ea6 wallet> TriggerContract [ownerAddress] [contractAddress] [method] [args] [isHex] [fee_limit] [value] [token_value] [token_id] OwnerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 ContractAddress \u4e3a\u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u4e3a\u8c03\u7528\u51fd\u6570\u6216\u8005\u53c2\u6570\u7684\u540d\u79f0\uff0c\u8bf7\u53c2\u8003\u4e0b\u9762\u7684\u4f8b\u5b50\u3002 args \u4e3a\u4e00\u4e2a\u5360\u4f4d\u53c2\u6570, \u53ef\u4ee5\u4f20\u5165'#'\u4ee3\u66ff\u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\u3002 isHex \u51b3\u5b9a\u4e86 method \u548c args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 fee_limit \u7528\u6765\u8bbe\u7f6e\u5355\u7b14\u4ea4\u6613\u6240\u80fd\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. token_value \u4e3aTRC-10 token\u7684\u6570\u989d. token_id \u4e3aTRC-10 token\u7684ID, \u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff. \u793a\u4f8b\uff1a wallet> triggerContract TGdtALTPZ1FWQcc5MW7aK3o1ASaookkJxG findArgsByIndexTest ( uint256 ) 0 false 1000000000 0 0 # \u53ef\u4ee5\u4f7f\u7528 getTransactionInfoById \u6765\u67e5\u770b\u5408\u7ea6\u7684\u6267\u884c\u7ed3\u679c\uff0c\u793a\u4f8b\u5982\u4e0b: wallet> getTransactionInfoById 7d9c4e765ea53cf6749d8a89ac07d577141b93f83adc4015f0b266d8f5c2dec4 { \"id\" : \"de289f255aa2cdda95fbd430caf8fde3f9c989c544c4917cf1285a088115d0e8\" , \"fee\" : 8500 , \"blockNumber\" : 2076 , \"blockTimeStamp\" : 1567500396000 , \"contractResult\" : [ \"\" ] , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"receipt\" : { \"energy_fee\" : 8500 , \"energy_usage_total\" : 85 , \"net_usage\" : 314 , \"result\" : \"REVERT\" } , \"result\" : \"FAILED\" , \"resMessage\" : \"REVERT opcode executed\" }","title":"TriggerContract"},{"location":"clients/wallet-cli-command/#triggerconstantcontract","text":"\u65e2\u53ef\u4ee5\u8c03\u7528\u5408\u7ea6\u53ea\u8bfb\u51fd\u6570(view \u6216 pure\u4fee\u9970\u7684\u51fd\u6570)\uff0c\u7528\u4e8e\u5408\u7ea6\u6570\u636e\u67e5\u8be2\uff1b\u4e5f\u53ef\u4ee5\u8c03\u7528\u5408\u7ea6\u975e\u53ea\u8bfb\u51fd\u6570\uff0c\u7528\u4e8e\u9884\u5224\u4ea4\u6613\u662f\u5426\u53ef\u4ee5\u6267\u884c\u6210\u529f\u6216\u8005\u9884\u4f30\u4ea4\u6613\u7684\u80fd\u91cf\u6d88\u8017\u3002 wallet> TriggerConstantContract ownerAddress(use # if you own) contractAddress method args isHex [value token_value token_id(e.g: TRXTOKEN, use # if don't provided)] ownerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u662f\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\uff0c\u8bf7\u8f93\u5165#\u3002 contractAddress \u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u3002 args \u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684\u53c2\u6570, \u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\uff0c\u8bf7\u8f93\u5165#\u3002 isHex args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_value \u4e3aTRC-10 token\u7684\u6570\u989d\u3002\u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_id \u4e3aTRC-10 token\u7684ID, \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 \u793a\u4f8b\uff1a wallet> TriggerConstantContract TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e TVSvjZdyDSNocHm7dP3jvCmMNsCnMTPa5W transfer ( address,uint256 ) 0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c00000000000000000000000000000000000000000000000000038d7ea4c68000 true transfer ( address,uint256 ) :a9059cbb Execution result = { \"constant_result\" : [ \"0000000000000000000000000000000000000000000000000000000000000001\" ] , \"result\" : { \"result\" : true } , \"energy_used\" : 13253 , \"logs\" : [ { \"address\" : \"LUijWGF4iFrT7hV37Q2Q45DU5TUBvVZb7\" , \"topics\" : [ \"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\" , \"000000000000000000000000bdc8ee51fdd1b1e01d71f836481828f88463c838\" , \"0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c\" ] , \"data\" : \"00000000000000000000000000000000000000000000000000038d7ea4c68000\" } ] }","title":"TriggerConstantContract"},{"location":"clients/wallet-cli-command/#estimateenergy","text":"\u4e3a\u667a\u80fd\u5408\u7ea6\u4ea4\u6613\u9884\u4f30\u80fd\u91cf\u6d88\u8017\u3002 estimateEnergy \u662f\u53ef\u9009\u63a5\u53e3, \u6709\u4e9b FullNode \u8282\u70b9\u53ef\u80fd\u6ca1\u6709\u5f00\u542f\u8be5\u63a5\u53e3\uff0c\u56e0\u6b64\uff0c\u5982\u82e5\u8c03\u7528 estimateEnergy \u63a5\u53e3\u65f6\u6355\u83b7\u5230\u8282\u70b9\u4e0d\u652f\u6301\u6b64\u529f\u80fd\u7684\u9519\u8bef\u4fe1\u606f (this node does not support estimate energy)\uff0c\u5efa\u8bae\u7ee7\u7eed\u4f7f\u7528 triggerconstantcontract \u63a5\u53e3\u9884\u4f30\u80fd\u91cf\u6d88\u8017\u3002 wallet> EstimateEnergy ownerAddress contractAddress method args isHex [value token_value token_id] ownerAddress \u8c03\u7528\u8005\u5730\u5740\uff0c\u5982\u662f\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\uff0c\u8bf7\u8f93\u5165#\u3002 contractAddress \u667a\u80fd\u5408\u7ea6\u5730\u5740\u3002 method \u8c03\u7528\u7684\u5408\u7ea6\u51fd\u6570\u3002 args \u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684\u53c2\u6570, \u5982\u82e5 method \u4e0d\u9700\u8981\u989d\u5916\u7684\u53c2\u6570\uff0c\u8bf7\u8f93\u5165#\u3002 isHex args \u7684\u683c\u5f0f\u662f\u5426\u662fhex string\u3002 value \u4f20\u5165\u7684TRX\u7684\u6570\u989d. \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_value \u4e3aTRC-10 token\u7684\u6570\u989d\u3002\u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 token_id \u4e3aTRC-10 token\u7684ID, \u53ef\u9009\uff0c\u5982\u679c\u6ca1\u6709, \u53ef\u4ee5\u4f20\u5165\u2018#\u2019\u4ee3\u66ff\u3002 \u793a\u4f8b\uff1a wallet> EstimateEnergy TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e TVSvjZdyDSNocHm7dP3jvCmMNsCnMTPa5W transfer ( address,uint256 ) 0000000000000000000000002ce5de57373427f799cc0a3dd03b841322514a8c00000000000000000000000000000000000000000000000000038d7ea4c68000 true transfer ( address,uint256 ) :a9059cbb Estimate energy result = { \"result\" : { \"result\" : true } , \"energy_required\" : 14910 }","title":"EstimateEnergy"},{"location":"clients/wallet-cli-command/#getcontract","text":"\u7528\u5408\u7ea6\u5730\u5740\u8c03\u51fa\u5408\u7ea6\u4fe1\u606f wallet> GetContract [contractAddress] \u793a\u4f8b: wallet> GetContract TGdtALTPZ1FWQcc5MW7aK3o1ASaookkJxG { \"origin_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"contract_address\" : \"TJMKWmC6mwF1QVax8Sy2AcgT6MqaXmHEds\" , \"abi\" : { \"entrys\" : [ { \"name\" : \"findArgsByIndexTest\" , \"inputs\" : [ { \"name\" : \"i\" , \"type\" : \"uint256\" } ] , \"outputs\" : [ { \"name\" : \"z\" , \"type\" : \"uint256\" } ] , \"type\" : \"Function\" , \"stateMutability\" : \"Nonpayable\" } ] } , \"bytecode\" : \"608060405234801561001057600080fd5b50610134806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663329000b58114610045575b600080fd5b34801561005157600080fd5b5061005d60043561006f565b60408051918252519081900360200190f35b604080516003808252608082019092526000916060919060208201838038833901905050905060018160008151811015156100a657fe5b602090810290910101528051600290829060019081106100c257fe5b602090810290910101528051600390829060029081106100de57fe5b6020908102909101015280518190849081106100f657fe5b906020019060200201519150509190505600a165627a7a72305820b24fc247fdaf3644b3c4c94fcee380aa610ed83415061ff9e65d7fa94a5a50a00029\" , \"consume_user_resource_percent\" : 75 , \"name\" : \"normalcontract544\" , \"origin_energy_limit\" : 50000 , \"code_hash\" : \"23423cece3b4866263c15357b358e5ac261c218693b862bcdb90fa792d5714e6\" }","title":"GetContract"},{"location":"clients/wallet-cli-command/#updateenergylimit","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u4fee\u6539\u5408\u7ea6\u4e2d\u80fd\u91cf\u6d88\u8017\u7684\u4e0a\u9650,\u53c2\u6570\u5b9a\u4e49\u8bf7\u53c2\u8003\u4e0a\u9762\u7684\u547d\u4ee4\u3002 wallet> UpdateEnergyLimit [ownerAddress] [contract_address] [energy_limit] \u793a\u4f8b: wallet> updateenergylimit TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq 8000000 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"origin_energy_limit\" :8000000, \"contract_address\" : \"TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq\" } , \"type_url\" : \"type.googleapis.com/protocol.UpdateEnergyLimitContract\" } , \"type\" : \"UpdateEnergyLimitContract\" } ] , \"ref_block_bytes\" : \"2d56\" , \"ref_block_hash\" : \"3e8f88e2de6bb637\" , \"expiration\" :1656993270000, \"timestamp\" :1656993210227 } , \u00b7\u00b7\u00b7 UpdateSetting for origin_energy_limit successful !!!","title":"UpdateEnergyLimit"},{"location":"clients/wallet-cli-command/#updatesetting","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u4fee\u6539\u5408\u7ea6\u4e2d\u7528\u6237\u80fd\u91cf\u6d88\u8017\u7684\u6bd4\u4f8b,\u53c2\u6570\u5b9a\u4e49\u8bf7\u53c2\u8003\u4e0a\u9762\u7684\u547d\u4ee4\u3002 wallet> UpdateSetting [ownerAddress] [contract_address] [consume_user_resource_percent] \u793a\u4f8b: wallet> updateenergylimit TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq 35 { \"raw_data\" : { \"contract\" : [ { \"parameter\" : { \"value\" : { \"owner_address\" : \"TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8\" , \"origin_energy_limit\" :35, \"contract_address\" : \"TY7CMEBRMgtFeNzkVJACh9L7TdMKENFkeq\" } , \"type_url\" : \"type.googleapis.com/protocol.UpdateEnergyLimitContract\" } , \"type\" : \"UpdateEnergyLimitContract\" } ] , \"ref_block_bytes\" : \"2d9f\" , \"ref_block_hash\" : \"c25a5c8ba398aa8f\" , \"expiration\" :1656993489000, \"timestamp\" :1656993430923 } , \u00b7\u00b7\u00b7 UpdateSetting for origin_energy_limit successful !!!","title":"UpdateSetting"},{"location":"clients/wallet-cli-command/#trc-10","text":"\u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a AssetIssue UpdateAsset TransferAsset ParticipateAssetissue ListAssetIssue GetAssetIssueByAccount GetAssetIssueById GetAssetIssueByName GetAssetIssueListByName","title":"TRC-10\u8d44\u4ea7"},{"location":"clients/wallet-cli-command/#assetissue","text":"\u53d1\u884cTRC10\u4ee3\u5e01\uff0c\u6bcf\u4e2a\u8d26\u6237\u5730\u5740\u667a\u80fd\u53d1\u884c\u4e00\u79cdTRC-10 token\u3002 wallet> AssetIssue [OwnerAddress] [AssetName] [AbbrName] [TotalSupply] [TrxNum] [AssetNum] [Precision] [StartDate] [EndDate] [Description Url] [FreeNetLimitPerAccount] [PublicFreeNetLimit] [FrozenAmount0] [FrozenDays0] [...] [FrozenAmountN] [FrozenDaysN] OwnerAddress \u4e3a\u4ea4\u6613\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 AssetName \u4e3a\u53d1\u884c\u7684TRC-10 token\u7684\u540d\u79f0\u3002 AbbrName \u4e3a\u53d1\u884c\u7684TRC-10 token\u540d\u79f0\u7f29\u5199\u3002 TotalSupply \u4e3a\u8be5TRC-10 token\u7684\u603b\u91cf\u3002 TotalSupply = Account Balance of Issuer + All Frozen Token Amount Account Balance Of Issuer: \u53d1\u884c\u65f6\u53d1\u884c\u4eba\u7684\u8be5\u5e01\u4f59\u989d All Frozen Token Amount: \u8be5\u5e01\u5728\u8f6c\u8d26\u548c\u53d1\u884c\u524d\u7684\u6570\u989d TrxNum , AssetNum \u8fd9\u4e24\u4e2a\u53c2\u6570\u51b3\u5b9a\u4e86\u8be5\u5e01\u53d1\u884c\u65f6\u4ea4\u6613\u7387\u662f\u591a\u5c11\u3002 Exchange Rate = TrxNum / AssetNum AssetNum : \u8be5\u5e01\u7684\u5355\u4f4d TrxNum : \u5355\u4f4d\u4e3asun (0.000001 TRX) Precision \u5c0f\u6570\u70b9\u540e\u7684\u4f4d\u6570\u3002 FreeNetLimitPerAccount \u4e3a\u6bcf\u4e2a\u8d26\u6237\u53ef\u4ee5\u4f7f\u7528\u7684\u6700\u5927\u5e26\u5bbd\u3002\u53d1\u884c\u4eba\u53ef\u4ee5\u8d28\u62bcTRX\u83b7\u5f97\u5e26\u5bbd\u3002(\u4ec5\u9650\u4e8e TransferAsset ) PublicFreeNetLimit \u4e3a\u6240\u6709\u8d26\u6237\u53ef\u7528\u7684\u6700\u5927\u5e26\u5bbd\u3002 \u53d1\u884c\u4eba\u53ef\u4ee5\u8d28\u62bcTRX\u83b7\u5f97\u5e26\u5bbd\u3002(\u4ec5\u9650\u4e8e TransferAsset ) StartDate , EndDate \u4e3a\u53d1\u884c\u8d77\u59cb\u548c\u7ec8\u6b62\u65e5\u671f\u3002 \u5728\u8be5\u65e5\u671f\u5185\uff0c\u5176\u4ed6\u7528\u6237\u53ef\u4ee5\u53c2\u4e0e\u5230\u65b0\u5e01\u53d1\u884c\u4e2d\u3002 FrozenAmount0 , FrozenDays0 \u51b3\u5b9a\u4e86\u4f1a\u6709\u591a\u5c11\u65b0\u5e01\u51bb\u7ed3\u591a\u4e45\u3002 FrozenAmount0 \u9700\u5927\u4e8e0. FrozenDays0 : \u5fc5\u987b\u5b571\u52303652\u4e4b\u95f4\u3002 \u793a\u4f8b: wallet> AssetIssue TestTRX TRX 75000000000000000 1 1 2 \"2019-10-02 15:10:00\" \"2020-07-11\" \"just for test121212\" www.test.com 100 100000 10000 10 10000 1 wallet> GetAssetIssueByAccount TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ # View published information { \"assetIssue\" : [ { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"name\" : \"TestTRX\" , \"abbr\" : \"TRX\" , \"total_supply\" : 75000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 10000 , \"frozen_days\" : 1 } , { \"frozen_amount\" : 10000 , \"frozen_days\" : 10 } ] , \"trx_num\" : 1 , \"precision\" : 2 , \"num\" : 1 , \"start_time\" : 1570000200000 , \"end_time\" : 1594396800000 , \"description\" : \"just for test121212\" , \"url\" : \"www.test.com\" , \"free_asset_net_limit\" : 100 , \"public_free_asset_net_limit\" : 100000 , \"id\" : \"1000001\" } ] }","title":"AssetIssue"},{"location":"clients/wallet-cli-command/#updateasset","text":"\u4f7f\u7528\u8be5\u547d\u6765\u4fee\u6539\u5df2\u53d1\u5e03\u8d44\u4ea7\u7684\u90e8\u5206\u53c2\u6570 wallet> UpdateAsset [OwnerAddress] [newLimit] [newPublicLimit] [description url] \u53c2\u6570\u5b9a\u4e49\u4e0eAssetIssue\u76f8\u540c\u3002 \u793a\u4f8b: wallet> UpdateAsset 1000 1000000 \"change description\" www.changetest.com wallet> GetAssetIssueByAccount TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ # to check the modified information { \"assetIssue\" : [ { \"owner_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"name\" : \"TestTRX\" , \"abbr\" : \"TRX\" , \"total_supply\" : 75000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 10000 , \"frozen_days\" : 1 } , { \"frozen_amount\" : 10000 , \"frozen_days\" : 10 } ] , \"trx_num\" : 1 , \"precision\" : 2 , \"num\" : 1 , \"start_time\" : 1570000200000 , \"end_time\" : 1594396800000 , \"description\" : \"change description\" , \"url\" : \"www.changetest.com\" , \"free_asset_net_limit\" : 1000 , \"public_free_asset_net_limit\" : 1000000 , \"id\" : \"1000001\" } ] }","title":"UpdateAsset"},{"location":"clients/wallet-cli-command/#transferasset","text":"\u8be5\u547d\u4ee4\u7528\u4e8e\u8f6c\u79fb\u8d44\u4ea7 > TransferAsset [OwnerAddress] [ToAddress] [AssertID] [Amount] \u8fd9\u5176\u4e2d OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\uff0c ToAddress \u4e3a\u63a5\u6536\u5730\u5740\uff0c AssertName \u4e3a\u4ee3\u5e01\u7684\u540d\u79f0\uff0c Amount \u672c\u6b21\u8f6c\u8d26\u7684\u6570\u989d\u3002 \u793a\u4f8b: wallet> TransferAsset TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz 1000001 1000 wallet> getaccount TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz # to check target account information after the transfer address: TN3zfjYUmMFK3ZsHSsrdJoNRtGkQmZLBLz assetV2 { id: 1000001 balance: 1000 latest_asset_operation_timeV2: null free_asset_net_usageV2: 0 }","title":"TransferAsset"},{"location":"clients/wallet-cli-command/#participateassetissue","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u53c2\u4e0e\u4ee3\u5e01\u7684\u53d1\u884c > ParticipateAssetIssue [OwnerAddress] [ToAddress] [AssetID] [Amount] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 ToAddress \u4e3a\u63a5\u6536\u5730\u5740\uff0c AssertName \u4e3a\u4ee3\u5e01\u7684\u540d\u79f0\uff0c Amount \u4e3a\u672c\u6b21\u8f6c\u8d26\u7684\u6570\u989d\u3002 \u53c2\u4e0e\u53d1\u884c\u5fc5\u987b\u53d1\u751f\u5728TRC10\u4ee3\u5e01\u7684\u53d1\u884c\u8fc7\u7a0b\u4e2d\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002 \u793a\u4f8b: wallet> ParticipateAssetIssue TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ 1000001 1000 wallet> getaccount TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW # View remaining balance address: TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW assetV2 { id: 1000001 balance: 1000 latest_asset_operation_timeV2: null free_asset_net_usageV2: 0 }","title":"ParticipateAssetissue"},{"location":"clients/wallet-cli-command/#unfreezeasset","text":"\u89e3\u51bb\u4e00\u4e2a\u5730\u5740\u4e0b\u5df2\u7ecf\u8d85\u8fc7\u51bb\u7ed3\u65f6\u95f4\u7684\u5f85\u89e3\u51bbTRC-10\u4ee3\u5e01\u3002 wallet> unfreezeasset [OwnerAddress]","title":"UnfreezeAsset"},{"location":"clients/wallet-cli-command/#listassetissue","text":"\u5217\u51fa\u6240\u6709\u5df2\u53d1\u884cTRC-10\u4ee3\u5e01\u53ca\u8be6\u60c5 wallet> listassetissue { \"assetIssue\" : [ { \"owner_address\" : \"TMWXhuxiT1KczhBxCseCDDsrhmpYGUcoA9\" , \"name\" : \"tronlink_token\" , \"abbr\" : \"tronlink_token\" , \"total_supply\" : 1000000000000000 , \"frozen_supply\" : [ { \"frozen_amount\" : 1 , \"frozen_days\" : 1 } ] , \"trx_num\" : 1 , \"precision\" : 6 , \"num\" : 1 , \"start_time\" : 1574757000000 , \"end_time\" : 1757595000000 , \"description\" : \"Description\" , \"url\" : \"https://blog.csdn.net/u010270891/article/details/82978260\" , \"free_asset_net_limit\" : 1000 , \"public_free_asset_net_limit\" : 2000 , \"id\" : \"1000001\" } , \u00b7\u00b7\u00b7","title":"ListAssetIssue"},{"location":"clients/wallet-cli-command/#getassetissuebyaccount","text":"\u5217\u51fa\u53d1\u884c\u4eba\u5730\u5740\u4e0b\u6240\u6709\u5df2\u53d1\u884cTRC-10\u4ee3\u5e01\u53ca\u8be6\u60c5\u3002 wallet> getassetissuebyaccount [owneraddress] \u793a\u4f8b\uff1a wallet> getassetissuebyaccount TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN { \"assetIssue\" : [ { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website. TRC10 token h0966. More info on website. More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" } ] }","title":"GetAssetIssueByAccount"},{"location":"clients/wallet-cli-command/#getassetissuebyid","text":"\u6839\u636e\u4ee3\u5e01ID\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f \u793a\u4f8b\uff1a wallet> GetAssetIssueById 1004901 { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website.TRC10 token h0966. More info on website.More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" }","title":"GetAssetIssueById"},{"location":"clients/wallet-cli-command/#getassetissuebyname","text":"\u6839\u636e\u4ee3\u5e01\u540d\u79f0\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f \u793a\u4f8b\uff1a wallet> GetAssetIssueByname h00966 { \"owner_address\" : \"TUwjpfqW7NG6BF3GCTrKy1aDvfchwSG4tN\" , \"name\" : \"h00966\" , \"abbr\" : \"h00966\" , \"total_supply\" : 100000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 1000000 , \"start_time\" : 1656374400000 , \"end_time\" : 1656460800000 , \"description\" : \"Automated gaming platform. TRC10 token h0966. More info on website.TRC10 token h0966. More info on website.More info on website.\" , \"url\" : \"https://h00966.com\" , \"id\" : \"1004901\" }","title":"GetAssetIssueByName"},{"location":"clients/wallet-cli-command/#getassetissuelistbyname","text":"\u6839\u636e\u4ee3\u5e01\u540d\u79f0\u83b7\u53d6\u5176\u8be6\u7ec6\u4fe1\u606f wallet> GetAssetIssueListByName ROFLOTOKEN { \"assetIssue\" : [ { \"owner_address\" : \"TLvQSVH9Hm7kxLFtTP228fN6pCrHmtVjpb\" , \"name\" : \"ROFLOTOKEN\" , \"abbr\" : \"roflotoken\" , \"total_supply\" : 10000000000000000 , \"trx_num\" : 1000000 , \"precision\" : 6 , \"num\" : 100000000 , \"start_time\" : 1656349200000 , \"end_time\" : 1656435600000 , \"description\" : \"roflotoken.com\" , \"url\" : \"https://haxibaibo.com/\" , \"id\" : \"1004898\" } ] }","title":"GetAssetIssueListByName"},{"location":"clients/wallet-cli-command/#_7","text":"\u4efb\u4f55\u5173\u4e8eproposal\u7684\u64cd\u4f5c\uff0c\u9664\u4e86\u67e5\u770b\u7c7b\u7684\u4ee5\u5916\uff0c\u90fd\u9700\u8981\u59d4\u5458\u4f1a\u6210\u5458\u6765\u5b8c\u6210\u3002 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a CreatProposal ApproveProposal Deleteproposal ListProposals ListProposalsPaginated GetProposal Votewitness GetBrokerage GetReward UpdateBrokerage","title":"\u6cbb\u7406"},{"location":"clients/wallet-cli-command/#creatproposal","text":"\u53d1\u8d77\u4e00\u9879\u65b0\u7684proposal\u3002 wallet> createProposal [OwnerAddress] [id0] [value0] ... [idN] [valueN] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 id0 \u662fTRON Network Parameter\u7684\u5e8f\u5217\u53f7\u3002\u5176\u4e2d\u7684\u6bcf\u4e2a\u53c2\u6570\u90fd\u5b9a\u4e49\u597d\u7684\u63d0\u8bae\u5185\u5bb9\uff0c\u540c\u65f6\u5bf9\u5e94\u4e00\u4e2a\u5e8f\u5217\u53f7\uff0c\u8bf7\u53c2\u8003 https://tronscan.org/#/sr/committee \u3002 Value0 \u4e3a\u63d0\u8bae\u4fee\u6539\u7684\u503c\u3002\u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0cproposal\u5efa\u8bae\u5c06No.4(\u4fee\u6539\u53d1\u884c\u8d39\u7528)\u7684\u8d39\u7528\u6539\u4e3a 1000TRX\uff0c wallet> createProposal 4 1000 wallet> listproposals # to check initiated proposal { \"proposals\" : [ { \"proposal_id\" : 1 , \"proposer_address\" : \"TRGhNNfnmgLegT4zHNjEqDSADjgmnHvubJ\" , \"parameters\" : [ { \"key\" : 4 , \"value\" : 1000 } ] , \"expiration_time\" : 1567498800000 , \"create_time\" : 1567498308000 } ] } \u8be5proposal\u7684\u5bf9\u5e94ID\u4e3a1\u3002","title":"CreatProposal"},{"location":"clients/wallet-cli-command/#approveproposal","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u540c\u610f\u6216\u5426\u51b3\u4e00\u9879proposal\u3002 wallet> approveProposal [OwnerAddress] [id] [is_or_not_add_approval] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 id \u4e3aproposal\u7684ID\u3002 is_or_not_add_approval \u586b\u5165\u201ctrue\u201d\u4e3a\u540c\u610f\uff0c\u586b\u5165\u201cfalse\u201d\u4e3a\u5426\u51b3\u3002 \u793a\u4f8b: wallet> ApproveProposal 1 true # in favor of the offer wallet> ApproveProposal 1 false # Cancel the approved proposal","title":"ApproveProposal"},{"location":"clients/wallet-cli-command/#deleteproposal","text":"\u53d6\u6d88\u4e00\u4e2aproposal\u3002 wallet> deleteProposal [OwnerAddress] [proposalId] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 proposalId \u4e3aproposal\u5bf9\u5e94\u7684ID\u3002\u53ea\u6709\u53d1\u8d77\u8be5propsal\u7684\u8d85\u7ea7\u4ee3\u8868\u624d\u80fd\u53d6\u6d88\u81ea\u5df1\u53d1\u8d77\u7684proposal\u3002 \u793a\u4f8b\uff1a wallet> DeleteProposal 1","title":"Deleteproposal"},{"location":"clients/wallet-cli-command/#listproposals","text":"\u67e5\u770b\u5df2\u53d1\u8d77\u7684proposal\u3002 wallet> listproposals { \"proposals\" : [ { \"proposal_id\" : 12732 , \"proposer_address\" : \"TQ4eBJna51sew13DBLd7YjEHHHW7fkNzc2\" , \"parameters\" : [ { \"key\" : 65 , \"value\" : 1 } , { \"key\" : 66 , \"value\" : 1 } , { \"key\" : 62 , \"value\" : 432000000 } ] , \"expiration_time\" : 1656491400000 , \"create_time\" : 1656490794000 , \"approvals\" : [ \"TQ4eBJna51sew13DBLd7YjEHHHW7fkNzc2\" ] , \"state\" : \"DISAPPROVED\" } , { \u00b7\u00b7\u00b7","title":"ListProposals"},{"location":"clients/wallet-cli-command/#listproposalspaginated","text":"\u7528\u5206\u6bb5\u7684\u65b9\u5f0f\u67e5\u770b\u5df2\u53d1\u8d77\u7684proposal\u3002 wallet> ListProposalsPaginated [offset] [limit] offset \u662f\u9700\u8981\u8df3\u8fc7\u7684proposal\u7684ID\uff0c\u5982\u8f93\u516520\uff0c\u5219\u4eceproposal_ID=21 \u5f00\u59cb\u67e5\u770b\u3002 limit \u662f\u8981\u67e5\u770b\u7684proposal\u6570\u91cf\uff0c\u5982\u8f93\u516510\uff0c\u5219\u67e5\u770b offset \u7684\u503c\u4e4b\u540e\u768410\u4e2aproposal\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u547d\u4ee4\u5c06\u4f1a\u5217\u51fa\u6240\u6709\u7684proposal\u3002 \u4e0b\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u4f20\u53c2\u7684\u610f\u4e49\u4e3a\u8df3\u8fc7ID\u4e3a33\u53ca\u4e4b\u524d\u7684proposal\uff0c\u67e5\u770b\u5176\u4e4b\u540e2\u4e2aproposal\uff0c\u537334\u548c35\u7684\u4e24\u4e2aproposal\uff1a wallet> listproposalspaginated 33 2 { \"proposals\" : [ { \"proposal_id\" : 34 , \"proposer_address\" : \"TEDguVMSsFw3HSizQXFK1BsrGWeuRMNN7t\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380477000 , \"state\" : \"DISAPPROVED\" } , { \"proposal_id\" : 35 , \"proposer_address\" : \"TDkSQtBhZx7Ua8qvenM4zuH52u2BsYTwzc\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380498000 , \"state\" : \"DISAPPROVED\" } ] }","title":"ListProposalsPaginated"},{"location":"clients/wallet-cli-command/#getproposal","text":"\u901a\u8fc7proposal ID\u67e5\u770bproposal\u8be6\u60c5\u3002 wallet> getproposal 34 { \"proposal_id\" : 34 , \"proposer_address\" : \"TEDguVMSsFw3HSizQXFK1BsrGWeuRMNN7t\" , \"parameters\" : [ { \"key\" : 1 , \"value\" : 9997000000 } ] , \"expiration_time\" : 1582381200000 , \"create_time\" : 1582380477000 , \"state\" : \"DISAPPROVED\" }","title":"GetProposal"},{"location":"clients/wallet-cli-command/#votewitness","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u4e3awitness\u6295\u7968\u3002\u6295\u7968\u9700\u8981\u76f8\u5e94\u7684\u6743\u76ca, \u5373 Tron Power \uff0c\u53ef\u4ee5\u901a\u8fc7\u8d28\u62bc\u8d44\u4ea7\u6765\u83b7\u5f97\u3002\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3awitness\u7684\u5730\u5740\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a\u6295\u7968\u7684\u6570\u91cf\u3002 wallet> votewitness [witness address] [Tron Power Amount] * Tron Power\u8ba1\u7b97\u89c4\u5219: \u6bcf\u51bb\u7ed3 1 TRX\u83b7\u5f97\u4e00\u4e2a\u5355\u4f4d\u7684Tron Power\u3002 * \u8d44\u4ea7\u89e3\u51bb\u540e, \u6240\u6709\u4e4b\u524d\u7684\u6295\u7968\u5373\u4f5c\u5e9f\u3002\u53ef\u4ee5\u91cd\u590d\u51bb\u7ed3\u8d44\u4ea7\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\u3002 **\u6ce8\u610f** TRON \u53ea\u4f1a\u8bb0\u5f55\u4f60\u7684\u6700\u540e\u4e00\u6b21\u6295\u7968\uff0c\u65b0\u7684\u6295\u7968\u4f1a\u8986\u76d6\u4e4b\u524d\u7684\u6295\u7968\u3002 \u793a\u4f8b\uff1a ```shell wallet> freezeBalance 100000000 3 1 address # \u51bb\u7ed3 10TRX\uff0c\u83b7\u5f9710\u4e2a\u5355\u4f4d\u7684Tron Power\u3002 wallet> votewitness [witness1] 4 [witness2] 6 # \u4e3awitness1\u62954\u7968\uff0c\u540c\u65f6\u518d\u4e3awitness2\u62956\u7968 wallet> votewitness [witness1] 10 # \u4e3awitness1\u629510\u7968 \u793a\u4f8b\u4e2d\u7684\u7ed3\u679c\u4e3awitness1\u83b7\u5f9710\u7968\uff0cwitness2\u83b7\u5f970\u7968\u3002","title":"Votewitness"},{"location":"clients/wallet-cli-command/#listwitnesses","text":"\u5217\u51fa\u6240\u6709witness\u7684\u4fe1\u606f\u3002 wallet> listwitnesses { \"witnesses\" : [ { \"address\" : \"TPffmvjxEcvZefQqS7QYvL1Der3uiguikE\" , \"voteCount\" : 324999518 , \"url\" : \"http://sr-26.com\" , \"totalProduced\" : 414028 , \"totalMissed\" : 20 , \"latestBlockNum\" : 27638663 , \"latestSlotNum\" : 552169224 , \"isJobs\" : true } , { \"address\" : \"TFFLWM7tmKiwGtbh2mcz2rBssoFjHjSShG\" , \"voteCount\" : 324759460 , \"url\" : \"http://sr-27.com\" , \"totalProduced\" : 414144 , \"totalMissed\" : 16 , \"latestBlockNum\" : 27638664 , \"latestSlotNum\" : 552169225 , \"isJobs\" : true } , \u00b7\u00b7\u00b7","title":"ListWitnesses"},{"location":"clients/wallet-cli-command/#getbrokerage","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\uff0c\u53ef\u4ee5\u67e5\u770bwitness\u7684\u51fa\u5757\u5206\u6210\u6bd4\u4f8b\u3002 \u5728\u4e3awitness\u6295\u7968\u540e\uff0c\u4f1a\u6536\u5230\u76f8\u5e94\u7684\u5956\u52b1\u3002witness\u53ef\u4ee5\u8c03\u6574\u51fa\u5757\u6536\u76ca\u7684\u5206\u6210\u6bd4\u4f8b\uff0c\u9ed8\u8ba4\u6bd4\u4f8b\u4e3a20%\uff0c\u5373\u6536\u76ca\u768420%\u5f52witness\u6240\u6709\uff0c\u5269\u4f5980%\u6309\u6295\u7968\u6570\u5206\u914d\u7ed9\u6295\u7968\u8005\u3002 OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002 \u793a\u4f8b\u4e2d\uff0c\u51fa\u5757\u5956\u52b1\u7684\u5206\u6210\u4e3a20%\uff0c\u537380%\u7684\u6536\u76ca\u4f1a\u6309\u6743\u91cd\u5206\u914d\u7ed9\u6295\u7968\u8005\uff1a wallet> getbrokerage TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 The brokerage is : 20","title":"GetBrokerage"},{"location":"clients/wallet-cli-command/#getreward","text":"\u67e5\u8be2\u672a\u9886\u53d6\u7684\u5956\u52b1\u3002 OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002\u793a\u4f8b\u5982\u4e0b\uff1a wallet> getreward TSzdGHnhYnQKFF4LKrRLztkjYAvbNoxnQ8 The reward is : 0","title":"GetReward"},{"location":"clients/wallet-cli-command/#updatebrokerage","text":"\u8be5\u547d\u4ee4\u7531witness\u53d1\u8d77\uff0c\u8c03\u6574\u51fa\u5757\u6536\u76ca\u7684\u5206\u6210\u6bd4\u4f8b\u3002 wallet> updateBrokerage [OwnerAddress] [brokerage] OwnerAddress \u4e3awitness\u7684\u5730\u5740\uff0cbase58\u683c\u5f0f\u3002 brokerage \u4e3a\u8981\u6539\u6210\u7684\u6bd4\u4f8b\uff0c0-100\u4e4b\u95f4\u3002 \u793a\u4f8b\uff1a wallet> updateBrokerage TZ7U1WVBRLZ2umjizxqz3XfearEHhXKX7h 30","title":"UpdateBrokerage"},{"location":"clients/wallet-cli-command/#_8","text":"\u4ea4\u6613\u5bf9\u7684\u4ef7\u683c\u6d6e\u52a8\u548c\u4ea4\u6613\u60c5\u51b5\u9075\u5faa Bancor Agreement \u3002 \u4e0b\u9762\u662f\u8d26\u6237\u5730\u5740\u76f8\u5173\u547d\u4ee4\uff1a ExchangeCreate ExchangeInject ExchangeTransaction ExchangeWithdraw ListExchanges ListExchangesPaginated MarketSellAsset MarketCancelOrder GetMarketOrderByAccount GetMarketOrderById GetMarketPairList GetMarketOrderListByPair GetMarketPriceByPair","title":"\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240"},{"location":"clients/wallet-cli-command/#exchangecreate","text":"\u521b\u5efa\u4e00\u4e2a\u4ea4\u6613\u5bf9 wallet> exchangeCreate [OwnerAddress][first_token_id] [first_token_balance] [second_token_id] [second_token_balance] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 First_token_id , first_token_balance \u4e3a\u4ea4\u6613\u5bf9\u4e2d\u7b2c\u4e00\u4e2a\u4ee3\u5e01\u7684ID\u548c\u91d1\u989d\u3002 second_token_id , second_token_balance \u4e3a\u4ea4\u6613\u5bf9\u4e2d\u7b2c\u4e8c\u4ee3\u5e01\u7684ID\u548c\u91d1\u989d\u3002\u5982\u679c\u662fTRX, \u5219ID\u4e3a\"\"\uff0c\u989d\u5ea6\u5fc5\u987b\u57280\u52301,000,000,000,000,000\u4e4b\u95f4\uff0c\u4e0d\u5305\u62ec\u5934\u5c3e\u3002 \u793a\u4f8b: wallet> exchangeCreate 1000001 10000 _ 10000 # Create trading pairs with the IDs of 1000001 and TRX, with amount 10000 for both.","title":"ExchangeCreate"},{"location":"clients/wallet-cli-command/#exchangeinject","text":"\u5c06\u8d44\u91d1\u6ce8\u5165\u4ea4\u6613\u5bf9 wallet> exchangeInject [OwnerAddress] [exchange_id] [token_id] [quant] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 exchange_id \u4e3a\u4ea4\u6613\u5bf9\u7684ID\u3002 token_id, quant \u4e3a\u8981\u6ce8\u5165\u7684\u4ee3\u5e01ID\u548c\u91d1\u989d\u3002 \u5f53\u8981\u5411\u4ea4\u6613\u5bf9\u6ce8\u5165\u8d44\u91d1\u65f6\uff0c\u4ea4\u6613\u5bf9\u4e2d\u7684\u4ee3\u5e01\u4f1a\u4ece\u672c\u8d26\u6237\u4e2d\u53d6\u8d70\uff0c\u6ce8\u5165\u5230\u4ea4\u6613\u5bf9\u4e2d\u3002\u6839\u636e\u4e0d\u540c\u7684\u4ee3\u5e01\u4f59\u989d\u60c5\u51b5\uff0c\u540c\u79cd\u6570\u989d\u7684\u540c\u79cd\u4ee3\u5e01\u4f1a\u6709\u53d8\u5316\u3002","title":"ExchangeInject"},{"location":"clients/wallet-cli-command/#exchangetransaction","text":"\u53d1\u8d77\u4e00\u7b14\u4ea4\u6613\u5bf9\u4ea4\u6613 wallet> exchangeTransaction [OwnerAddress] [exchange_id] [token_id] [quant] [expected] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 exchange_id \u4e3a\u4ea4\u6613\u5bf9\u7684ID\u3002 token_id , quant \u4e3a\u8981\u5356\u51fa\u7684\u4ee3\u5e01\u7684ID\u548c\u6570\u989d\u3002 expected \u4e3a\u9884\u671f\u4e70\u5165\u7684\u4ee3\u5e01\u6570\u989d\uff0c\u8be5\u6570\u989d\u5fc5\u987b\u5c0f\u4e8e quant \uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002 \u793a\u4f8b\uff1a wallet> ExchangeTransaction 1 1000001 100 80 \u793a\u4f8b\u7684\u542b\u4e49\u4e3a\uff0c\u60f3\u8981\u901a\u8fc7ID\u4e3a1\u7684\u4ea4\u6613\u5bf9\uff0c\u7528100\u4e2a\u5355\u4f4d\u7684ID\u4e3a1000001\u7684\u4ee3\u5e01\u6765\u4ea4\u661380\u4e2aTRX\u3002(\u4ea6\u53ef\u7406\u89e3\u4e3a\u5728\u4ea4\u6613\u5bf91\u4e2d\uff0c\u901a\u8fc7\u5356\u51fa100\u4e2a1000001\u4ee3\u5e01\u6765\u4e70\u516580\u4e2aTRX\u3002).","title":"ExchangeTransaction"},{"location":"clients/wallet-cli-command/#exchangewithdraw","text":"\u63d0\u53d6\u4ea4\u6613\u5bf9\u4e2d\u7684\u8d44\u91d1 wallet> exchangeWithdraw [OwnerAddress] [exchange_id] [token_id] [quant] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 Exchange_id \u4e3a\u4ea4\u6613\u5bf9ID\u3002 Token_id , quant \u4e3a\u8981\u4ece\u4ea4\u6613\u5bf9\u4e2d\u53d6\u51fa\u7684\u4ee3\u5e01\u7684ID\u548c\u6570\u989d\u3002 \u5f53\u8981\u5411\u4ea4\u6613\u5bf9\u63d0\u53d6\u8d44\u91d1\u65f6\uff0c\u4ea4\u6613\u5bf9\u4e2d\u7684\u4ee3\u5e01\u4f1a\u88ab\u63d0\u53d6\u5230\u8d26\u6237\u5730\u5740\u4e2d\u3002\u6839\u636e\u4e0d\u540c\u7684\u4ee3\u5e01\u4f59\u989d\u60c5\u51b5\uff0c\u540c\u79cd\u6570\u989d\u7684\u540c\u79cd\u4ee3\u5e01\u4f1a\u6709\u53d8\u5316\u3002 \u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u7684 ListExchanges \u547d\u4ee4\u6765\u83b7\u53d6\u6240\u6709\u7684\u4ea4\u6613\u5bf9\u4fe1\u606f\u3002","title":"ExchangeWithdraw"},{"location":"clients/wallet-cli-command/#listexchanges","text":"\u5217\u51fa\u6240\u6709\u4ea4\u6613\u5bf9\u53ca\u8be6\u60c5 wallet> listexchanges { \"exchanges\" : [ { \"exchange_id\" : 14 , \"creator_address\" : \"TCjuQbm5yab7ENTYb7tbdAKaiNa9Lrj4mo\" , \"create_time\" : 1654154880000 , \"first_token_id\" : \"1004852\" , \"first_token_balance\" : 91 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 110000000 } , { \"exchange_id\" : 13 , \"creator_address\" : \"TBpbKyKVUB1YLULrbhawUws69Gv33cmKDL\" , \"create_time\" : 1648004214000 , \"first_token_id\" : \"1000575\" , \"first_token_balance\" : 991 , \"second_token_id\" : \"1000184\" , \"second_token_balance\" : 1010 } , \u00b7\u00b7\u00b7","title":"ListExchanges"},{"location":"clients/wallet-cli-command/#listexchangespaginated","text":"\u5217\u51fa\u9009\u6bb5\u4e2d\u7684\u4ea4\u6613\u5bf9 wallet> ListExchangesPaginated [ offset ] [ limit ] offset \u4e3a\u60f3\u8981\u8df3\u8fc7\u7684\u4ea4\u6613\u5bf9ID\u3002\u9ed8\u8ba4\u4ece1\u5f00\u59cb\u5217\u51fa\u4ea4\u6613\u5bf9\uff0c\u5982\u6b64\u5904\u8f93\u5165\u503c\u4e3a15\uff0c\u5219\u4ece\u4ea4\u6613\u5bf9ID\u4e3a16\u5f00\u59cb\u5217\u51fa\u3002 limit \u4e3a\u60f3\u8981\u5217\u51fa\u7684\u4ea4\u6613\u5bf9\u6570\u91cf\u3002 \u4e0b\u9762\u793a\u4f8b\u7684\u542b\u4e49\u4e3a\u4eceid\u4e3a4\u7684\u4ea4\u6613\u5bf9\u5f00\u59cb\u5217\u51fa\u4fe1\u606f\uff0c\u4e00\u5171\u5217\u51fa2\u7ec4\u4fe1\u606f\uff0c\u5373\u5217\u51fa\u4ea4\u6613\u5bf9ID\u4e3a4\uff0c5\u7684\u4fe1\u606f,\u8bf7\u53c2\u8003: wallet> listexchangespaginated 3 2 { \"exchanges\" : [ { \"exchange_id\" : 4 , \"creator_address\" : \"TXmHTj3t5LXGvqGkr4jRNw7nf9GjquQ5yf\" , \"create_time\" : 1601458377000 , \"first_token_id\" : \"1000088\" , \"first_token_balance\" : 1 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 1 } , { \"exchange_id\" : 5 , \"creator_address\" : \"TTJJvoPKGVKnbUBPVTn1Zi8o6k3EfFDXVS\" , \"create_time\" : 1602578613000 , \"first_token_id\" : \"1000091\" , \"first_token_balance\" : 456125 , \"second_token_id\" : \"_\" , \"second_token_balance\" : 106968111 } ] }","title":"ListExchangesPaginated"},{"location":"clients/wallet-cli-command/#marketsellasset","text":"\u521b\u5efa\u4e00\u4e2a\u552e\u51fa\u8ba2\u5355 wallet> MarketSellAsset [owner_address] [sell_token_id] [sell_token_quantity] [buy_token_id] [buy_token_quantity] OwnerAddress \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u5730\u5740\u3002 sell_token_id and sell_token_quantity \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\u548c\u6570\u989d\u3002 buy_token_id , buy_token_quantity \u4e3a\u60f3\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u548c\u6570\u989d\u3002 \u793a\u4f8b\uff1a wallet> MarketSellAsset TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW 1000001 200 _ 100 \u5982\u4e0a\u521b\u5efa\u8ba2\u5355\u540e\uff0c\u6211\u4eec\u7528 getTransactionInfoById \u6765\u67e5\u770b\u7ed3\u679c, wallet> getTransactionInfoById 10040f993cd9452b25bf367f38edadf11176355802baf61f3c49b96b4480d374 { \"id\" : \"10040f993cd9452b25bf367f38edadf11176355802baf61f3c49b96b4480d374\" , \"blockNumber\" : 669 , \"blockTimeStamp\" : 1578983493000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 264 } }","title":"MarketSellAsset"},{"location":"clients/wallet-cli-command/#marketcancelorder","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u53ef\u4ee5\u53d6\u6d88\u8ba2\u5355 wallet> MarketCancelOrder [owner_address] [order_id] owner_address \u4e3a\u53d1\u8d77\u4eba\u5730\u5740\uff0c\u5982\u82e5\u4e0d\u586b\u5219\u9ed8\u8ba4\u4e3a\u5f53\u524d\u767b\u9646\u8d26\u6237\u5730\u5740\u3002 order_id \u4e3a\u8ba2\u5355\u7684ID\u3002 \u793a\u4f8b: wallet> MarketCancelOrder TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0 \u901a\u8fc7 getTransactionInfoById \u6765\u67e5\u770b\u7ed3\u679c\uff0c wallet> getTransactionInfoById b375787a098498623403c755b1399e82910385251b643811936d914c9f37bd27 { \"id\" : \"b375787a098498623403c755b1399e82910385251b643811936d914c9f37bd27\" , \"blockNumber\" : 1582 , \"blockTimeStamp\" : 1578986232000 , \"contractResult\" : [ \"\" ] , \"receipt\" : { \"net_usage\" : 283 } }","title":"MarketCancelOrder"},{"location":"clients/wallet-cli-command/#getmarketorderbyaccount","text":"\u4f7f\u7528\u8be5\u547d\u4ee4\u53ef\u67e5\u770b\u8be5\u8d26\u6237\u521b\u5efa\u7684\u6d3b\u8dc3\u8ba2\u5355 wallet> GetMarketOrderByAccount [ownerAddress] ownerAddress \u4e3a\u53ef\u67e5\u770b\u7684\u5730\u5740\u3002 \u793a\u4f8b: wallet> GetMarketOrderByAccount TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW { \"orders\" : [ { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , \"sell_token_quantity_remain\" : 100 } ] }","title":"GetMarketOrderByAccount"},{"location":"clients/wallet-cli-command/#getmarketorderbyid","text":"\u901a\u8fc7\u8ba2\u5355ID\u67e5\u770b\u8ba2\u5355\u4fe1\u606f wallet> GetMarketOrderById [orderId] \u793a\u4f8b: wallet> GetMarketOrderById fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0 { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , }","title":"GetMarketOrderById"},{"location":"clients/wallet-cli-command/#getmarketpairlist","text":"\u5217\u51fa\u5f53\u524d\u6d3b\u8dc3\u7684\u4ea4\u6613\u5bf9 wallet> getmarketpairlist { \"orderPair\" : [ { \"sell_token_id\" : \"1000012\" , \"buy_token_id\" : \"_\" } , { \"sell_token_id\" : \"1000094\" , \"buy_token_id\" : \"1000095\" } , { \"sell_token_id\" : \"1000099\" , \"buy_token_id\" : \"1000100\" } , \u00b7\u00b7\u00b7","title":"GetMarketPairList"},{"location":"clients/wallet-cli-command/#getmarketorderlistbypair","text":"\u901a\u8fc7\u4ee3\u5e01ID\u67e5\u770b\u5f53\u524d\u6d3b\u8dc3\u8ba2\u5355 wallet> GetMarketOrderListByPair [sell_token_id] [buy_token_id] sell_token_id \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\u3002 buy_token_id \u4e3a\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u3002 \u793a\u4f8b: wallet> GetMarketOrderListByPair _ 1000001 { \"orders\" : [ { \"order_id\" : \"fc9c64dfd48ae58952e85f05ecb8ec87f55e19402493bb2df501ae9d2da75db0\" , \"owner_address\" : \"TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\" , \"create_time\" : 1578983490000 , \"sell_token_id\" : \"_\" , \"sell_token_quantity\" : 100 , \"buy_token_id\" : \"1000001\" , \"buy_token_quantity\" : 200 , \"sell_token_quantity_remain\" : 100 } ] }","title":"GetMarketOrderListByPair"},{"location":"clients/wallet-cli-command/#getmarketpricebypair","text":"\u901a\u8fc7\u4ee3\u5e01ID\u83b7\u53d6\u5f53\u524d\u5e02\u573a\u4ef7\u683c wallet> GetMarketPriceByPair [sell_token_id] [buy_token_id] sell_token_id \u4e3a\u8981\u552e\u51fa\u7684\u4ee3\u5e01ID\uff0c buy_token_id \u4e3a\u8981\u4e70\u5165\u7684\u4ee3\u5e01ID\u3002 \u793a\u4f8b: wallet> GetMarketPriceByPair _ 1000001 { \"sell_token_id\" : \"_\" , \"buy_token_id\" : \"1000001\" , \"prices\" : [ { \"sell_token_quantity\" : 100 , \"buy_token_quantity\" : 200 } ] }","title":"GetMarketPriceByPair"},{"location":"clients/wallet-cli/","text":"\u4ec0\u4e48\u662fWallet-Cli\uff1f \u00b6 Wallet-Cli\u662f\u4e00\u4e2a\u652f\u6301TRON\u7f51\u7edc\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u94b1\u5305\uff0c\u7528\u4e8e\u5728\u5b89\u5168\u7684\u672c\u5730\u73af\u5883\u4e2d\u7b7e\u540d\u548c\u5e7f\u64ad\u4ea4\u6613\uff0c\u4e5f\u53ef\u4ee5\u83b7\u53d6\u94fe\u4e0a\u6570\u636e\u3002Wallet-Cli\u652f\u6301\u5bc6\u94a5\u7ba1\u7406\uff0c\u60a8\u53ef\u4ee5\u5c06\u79c1\u94a5\u5bfc\u5165\u94b1\u5305\u4e2d\uff0cWallet-Cli\u4f1a\u4f7f\u7528\u5bf9\u79f0\u52a0\u5bc6\u7b97\u6cd5\u52a0\u5bc6\u60a8\u7684\u79c1\u94a5\uff0c\u5e76\u5b58\u50a8\u5230\u4e00\u4e2akeystore\u6587\u4ef6\u4e2d\u3002Wallet-Cli\u672c\u5730\u4e0d\u5b58\u50a8\u94fe\u4e0a\u6570\u636e\uff0c\u5b83\u91c7\u7528gRPC\u7684\u65b9\u5f0f\u4e0e\u67d0\u4e00\u4e2aJava-tron\u8282\u70b9\u8fdb\u884c\u901a\u4fe1\uff0c\u60a8\u9700\u8981\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u9700\u8981\u94fe\u63a5\u7684Java-tron\u8282\u70b9\uff0c\u4e0b\u56fe\u662f\u4f7f\u7528Wallet-Cli\u7b7e\u540d\u548c\u5e7f\u64adTRX\u8f6c\u8d26\u4ea4\u6613\u7684\u6d41\u7a0b\uff1a \u7528\u6237\u9996\u5148\u8fd0\u884c Login \u547d\u4ee4\u89e3\u9501\u94b1\u5305\uff0c\u7136\u540e\u8fd0\u884c SendCoin \u547d\u4ee4\u53d1\u9001TRX\uff0cWallet-Cli\u4f1a\u672c\u5730\u6784\u5efa\u548c\u7b7e\u540d\u4ea4\u6613\uff0c\u7136\u540e\u5c06\u8c03\u7528Java-tron\u8282\u70b9\u7684BroadcastTransaction gRPC API\u5c06\u4ea4\u6613\u5e7f\u64ad\u7684\u7f51\u7edc\u4e2d\uff0c\u5e7f\u64ad\u6210\u529f\u540eJava-tron\u8282\u70b9\u4f1a\u8fd4\u56de\u4ea4\u6613hash\u7ed9Wallet-Cli\uff0cWallet-Cli\u5c06\u4ea4\u6613hash\u5c55\u793a\u7ed9\u7528\u6237\u3002 \u5b89\u88c5\u548c\u8fd0\u884c: Wallet-Cli","title":"\u4ec0\u4e48\u662fWallet-Cli"},{"location":"clients/wallet-cli/#wallet-cli","text":"Wallet-Cli\u662f\u4e00\u4e2a\u652f\u6301TRON\u7f51\u7edc\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u94b1\u5305\uff0c\u7528\u4e8e\u5728\u5b89\u5168\u7684\u672c\u5730\u73af\u5883\u4e2d\u7b7e\u540d\u548c\u5e7f\u64ad\u4ea4\u6613\uff0c\u4e5f\u53ef\u4ee5\u83b7\u53d6\u94fe\u4e0a\u6570\u636e\u3002Wallet-Cli\u652f\u6301\u5bc6\u94a5\u7ba1\u7406\uff0c\u60a8\u53ef\u4ee5\u5c06\u79c1\u94a5\u5bfc\u5165\u94b1\u5305\u4e2d\uff0cWallet-Cli\u4f1a\u4f7f\u7528\u5bf9\u79f0\u52a0\u5bc6\u7b97\u6cd5\u52a0\u5bc6\u60a8\u7684\u79c1\u94a5\uff0c\u5e76\u5b58\u50a8\u5230\u4e00\u4e2akeystore\u6587\u4ef6\u4e2d\u3002Wallet-Cli\u672c\u5730\u4e0d\u5b58\u50a8\u94fe\u4e0a\u6570\u636e\uff0c\u5b83\u91c7\u7528gRPC\u7684\u65b9\u5f0f\u4e0e\u67d0\u4e00\u4e2aJava-tron\u8282\u70b9\u8fdb\u884c\u901a\u4fe1\uff0c\u60a8\u9700\u8981\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u9700\u8981\u94fe\u63a5\u7684Java-tron\u8282\u70b9\uff0c\u4e0b\u56fe\u662f\u4f7f\u7528Wallet-Cli\u7b7e\u540d\u548c\u5e7f\u64adTRX\u8f6c\u8d26\u4ea4\u6613\u7684\u6d41\u7a0b\uff1a \u7528\u6237\u9996\u5148\u8fd0\u884c Login \u547d\u4ee4\u89e3\u9501\u94b1\u5305\uff0c\u7136\u540e\u8fd0\u884c SendCoin \u547d\u4ee4\u53d1\u9001TRX\uff0cWallet-Cli\u4f1a\u672c\u5730\u6784\u5efa\u548c\u7b7e\u540d\u4ea4\u6613\uff0c\u7136\u540e\u5c06\u8c03\u7528Java-tron\u8282\u70b9\u7684BroadcastTransaction gRPC API\u5c06\u4ea4\u6613\u5e7f\u64ad\u7684\u7f51\u7edc\u4e2d\uff0c\u5e7f\u64ad\u6210\u529f\u540eJava-tron\u8282\u70b9\u4f1a\u8fd4\u56de\u4ea4\u6613hash\u7ed9Wallet-Cli\uff0cWallet-Cli\u5c06\u4ea4\u6613hash\u5c55\u793a\u7ed9\u7528\u6237\u3002 \u5b89\u88c5\u548c\u8fd0\u884c: Wallet-Cli","title":"\u4ec0\u4e48\u662fWallet-Cli\uff1f"},{"location":"contracts/compiler/","text":"\u5408\u7ea6\u7f16\u8bd1 \u00b6 \u5de5\u5177\u4ecb\u7ecd \u00b6 1. TronIDE \u00b6 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u5f00\u53d1\u5de5\u5177\u3002\u63d0\u4f9b\u53ef\u89c6\u5316\u754c\u9762\uff0c\u652f\u6301\u5f00\u53d1\u8005\u5bf9solidity\u8bed\u8a00\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u7f16\u8bd1\uff0c\u8c03\u8bd5\uff0c\u8fd0\u884c\u7b49\u529f\u80fd\u3002 http://www.tronide.io/ 2. TronBox \u00b6 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u90e8\u7f72\u5de5\u5177\u3002\u652f\u6301solidity\u8bed\u8a00\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u8bd1\uff0c\u90e8\u7f72\uff0c\u79fb\u690d\u7b49\u529f\u80fd\u3002 https://cn.developers.tron.network/reference/tronbox-%E7%AE%80%E4%BB%8B 3. TronWeb \u00b6 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u5f00\u53d1\u4f7f\u7528\u7684http api\u5e93\u3002\u63d0\u4f9b\u548c\u4e3b\u94fe\u4ea4\u4e92\uff0c\u5408\u7ea6\u90e8\u7f72\u8c03\u7528\u7b49\u63a5\u53e3\u3002 https://cn.developers.tron.network/docs/dapp-development-tools-tronweb 4. TronGrid \u00b6 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u4e8b\u4ef6\u67e5\u8be2\u670d\u52a1\u3002\u53ef\u4ee5\u67e5\u8be2\u667a\u80fd\u5408\u7ea6\u4e2d\u5199\u5165\u7684\u4e8b\u4ef6log\u4fe1\u606f\u3002 https://cn.developers.tron.network/docs/trongrid \u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u5f00\u53d1 \u00b6 \u5728tron\u4e0a\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\uff0c\u9664\u4e86\u4f7f\u7528\u73b0\u6709\u7684\u5de5\u5177(tron-studio)\u4e4b\u5916\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528wallet-cli\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\uff0c\u7f16\u8bd1\u548c\u90e8\u7f72\u3002\u7f16\u5199\u667a\u80fd\u5408\u7ea6\uff0c\u53ef\u4ee5\u4f7f\u7528\u4f7f\u7528TronStudio\u8fdb\u884c\u7f16\u8bd1\u3001\u8c03\u8bd5\u7b49\u524d\u671f\u7684\u5f00\u53d1\u5de5\u4f5c\u3002 \u5f53\u5408\u7ea6\u5f00\u53d1\u5b8c\u6210\u4e4b\u540e\uff0c\u53ef\u4ee5\u628a\u5408\u7ea6\u590d\u5236\u5230 SimpleWebCompiler \u4e2d\u8fdb\u884c\u7f16\u8bd1\uff0c\u83b7\u53d6ABI\u548cByteCode\u3002 \u6211\u4eec\u63d0\u4f9b\u4e00\u4e2a\u7b80\u5355\u7684\u6570\u636e\u5b58\u53d6\u7684\u5408\u7ea6\u4ee3\u7801\u793a\u4f8b\uff0c\u4ee5\u8fd9\u4e2a\u793a\u4f8b\u6765\u8bf4\u660e\u7f16\u8bd1\u3001\u90e8\u7f72\u3001\u8c03\u7528\u7684\u6b65\u9aa4\u3002 pragma solidity ^0.4.0; contract DataStore { mapping(uint256 => uint256) data; function set(uint256 key, uint256 value) public { data[key] = value; } function get(uint256 key) view public returns (uint256 value) { value = data[key]; } } \u542f\u52a8\u79c1\u6709\u94fe \u00b6 \u786e\u4fdd\u524d\u63d0\u6761\u4ef6\u4e2d\uff0c\u79c1\u6709\u94fe\u5df2\u7ecf\u5728\u672c\u5730\u90e8\u7f72\u5b8c\u6210\u3002\u53ef\u4ee5\u68c0\u67e5FullNode/logs/tron.log\u4e2d\uff0c\u662f\u5426\u6709\u6301\u7eed\u4ea7\u5757\u7684log\u4fe1\u606f\u51fa\u73b0\uff1a\u201cProduce block successfully\u201d \u5f00\u53d1\u667a\u80fd\u5408\u7ea6 \u00b6 \u628a\u4e0a\u8ff0\u4ee3\u7801\u590d\u5236\u5230remix\u4e2d\u7f16\u8bd1\uff0c\u8c03\u8bd5\uff0c\u786e\u4fdd\u4ee3\u7801\u7684\u903b\u8f91\u662f\u81ea\u5df1\u9700\u8981\u7684\uff0c\u7f16\u8bd1\u901a\u8fc7\uff0c\u6ca1\u6709\u9519\u8bef \u5728SimpleWebCompiler\u7f16\u8bd1\u5f97\u5230ABI\u548cByteCode \u00b6 \u56e0\u4e3a\u6ce2\u573a\u7684\u7f16\u8bd1\u5668\u4e0e\u4ee5\u592a\u574a\u7684\u7f16\u8bd1\u7565\u6709\u5dee\u5f02\uff0c\u6b63\u5728\u4e0eRemix\u96c6\u6210\u4e2d\uff0c\u6240\u4ee5\u4e34\u65f6\u91c7\u7528\u6539\u65b9\u6848\u83b7\u53d6ABI\u548cByteCode\uff0c\u800c\u4e0d\u662f\u901a\u8fc7Remix\u76f4\u63a5\u83b7\u53d6ABI\u548cByteCode\u3002 \u628a\u4e0a\u8ff0\u4ee3\u7801\u590d\u5236\u5230SimpleWebCompiler\u4e2d\uff0c\u70b9\u51fbCompile\u6309\u94ae\uff0c\u83b7\u53d6ABI\u548cByteCode\u3002 \u901a\u8fc7Wallet-cli\u90e8\u7f72\u667a\u80fd\u5408\u7ea6 \u00b6 \u4e0b\u8f7dWallet-Cli\uff0c\u6587\u4ef6\u7136\u540e\u7f16\u8bd1\u3002 # \u4e0b\u8f7d\u6e90\u4ee3\u7801 git clone https://github.com/tronprotocol/wallet-cli cd wallet-cli # \u7f16\u8bd1 ./gradlew build cd build/libs \u6ce8\u610f\uff1a wallet-cli \u9ed8\u8ba4\u7684\u914d\u7f6e\u4f1a\u8fde\u63a5\u672c\u5730127.0.0.1:50051\u7684 fullnode\uff0c\u5982\u679c\u5f00\u53d1\u8005\u9700\u8981\u8fde\u63a5\u4e0d\u540c\u7684\u5176\u4ed6\u8282\u70b9\u6216\u8005\u7aef\u53e3\u53ef\u5728 config.conf \u6587\u4ef6\u4e2d\u8fdb\u884c\u4fee\u6539 \u542f\u52a8wallet-cli java -jar wallet-cli.jar \u542f\u52a8\u4e4b\u540e\uff0c\u53ef\u5728\u547d\u4ee4\u4e2d\u4ea4\u4e92\u5f0f\u8f93\u5165\u6307\u4ee4\u3002\u5bfc\u5165\u79c1\u94a5\uff0c\u5e76\u67e5\u8be2\u4f59\u989d\u662f\u5426\u6b63\u786e importwallet <\u8f93\u5165\u4f60\u81ea\u5df1\u7684\u8bbe\u5b9a\u7684\u94b1\u5305\u5bc6\u78012\u6b21> <\u8f93\u5165\u79c1\u94a5\uff1ada146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0> login <\u8f93\u5165\u4f60\u81ea\u5df1\u7684\u8bbe\u5b9a\u7684\u94b1\u5305\u5bc6\u7801> getbalance \u90e8\u7f72\u5408\u7ea6 # \u5408\u7ea6\u90e8\u7f72\u6307\u4ee4 DeployContract contractName ABI byteCode constructor params isHex fee_limit consume_user_resource_percent # \u53c2\u6570\u8bf4\u660e contract_name:\u81ea\u5df1\u5236\u5b9a\u7684\u5408\u7ea6\u540d ABI:\u4eceSimpleWebCompiler\u4e2d\u83b7\u53d6\u5230\u7684 ABI json \u6570\u636e bytecode:\u4eceSimpleWebCompiler\u4e2d\u83b7\u53d6\u5230\u7684\u4e8c\u8fdb\u5236\u4ee3\u7801 constructor:\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u4f1a\u8c03\u7528\u6784\u9020\u51fd\u6570\uff0c\u5982\u679c\u9700\u8981\u8c03\u7528\uff0c\u5c31\u628a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u7c7b\u578b\u586b\u5199\u5230\u8fd9\u91cc\uff0c\u4f8b\u5982\uff1aconstructor(uint256,string)\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u5c31\u586b\u5199\u4e00\u4e2a\u5b57\u7b26# params\uff1a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\uff0c\u4f7f\u7528\u9017\u53f7\u5206\u9694\u5f00\u6765\uff0c\u4f8b\u5982 1,\"test\" \uff0c\u5982\u679c\u6ca1\u6709\u6784\u9020\u51fd\u6570\uff0c\u5c31\u586b\u5199\u4e00\u4e2a\u5b57\u7b26# fee_limit:\u672c\u6b21\u90e8\u7f72\u5408\u7ea6\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\uff0c\u5355\u4f4d\u662fSUN(1 SUN = 10^-6 TRX)\uff0c\u5305\u62ecCPU\u8d44\u6e90\u3001STORAGE\u8d44\u6e90\u548c\u53ef\u7528\u4f59\u989d\u7684\u6d88\u8017 consume_user_resource_percent:\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4\uff0c\u662f[0, 100]\u4e4b\u95f4\u7684\u6574\u6570\u3002\u5982\u679c\u662f0\uff0c\u5219\u8868\u793a\u7528\u6237\u4e0d\u4f1a\u6d88\u8017\u8d44\u6e90\u3002\u5982\u679c\u5f00\u53d1\u8005\u8d44\u6e90\u6d88\u8017\u5b8c\u4e86\uff0c\u624d\u4f1a\u5b8c\u5168\u4f7f\u7528\u7528\u6237\u7684\u8d44\u6e90\u3002 value:\u5728\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u7ed9\u8be5\u5408\u7ea6\u8f6c\u8d26\u91d1\u989d\uff0c\u4f7f\u7528\u5341\u516d\u8fdb\u523632\u4f4d\u8868\u793a library:address,library:address,...:\u5982\u679c\u5408\u7ea6\u5305\u542blibrary\uff0c\u5219\u9700\u8981\u5728\u90e8\u7f72\u5408\u7ea6\u7684\u65f6\u5019\u6307\u5b9alibrary\u7684\u5730\u5740\uff0c\u5177\u4f53\u89c1\u4e0b\u6587\uff1b\u6ca1\u6709library\u7684\u8bdd\u5219\u4e0d\u9700\u8981\u586b\u5199\u3002 # \u8fd0\u884c\u4f8b\u5b50 deploycontract DataStore [{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"uint256\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}] 608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029 # # false 1000000 30 0 \u90e8\u7f72\u6210\u529f\u4f1a\u663e\u793aDeploy the contract successfully \u5f97\u5230\u5408\u7ea6\u7684\u5730\u5740 Your smart contract address will be: <\u5408\u7ea6\u5730\u5740> # \u5728\u672c\u4f8b\u4e2d Your smart contract address will be: TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 \u8c03\u7528\u5408\u7ea6\u5b58\u50a8\u6570\u636e\u3001\u67e5\u8be2\u6570\u636e Shell # \u8c03\u7528\u5408\u7ea6\u6307\u4ee4 triggercontract # \u53c2\u6570\u8bf4\u660e contract_address:\u5373\u4e4b\u524d\u90e8\u7f72\u8fc7\u5408\u7ea6\u7684\u5730\u5740\uff0c\u683c\u5f0f base58\uff0c\u5982\uff1aTTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 method:\u8c03\u7528\u7684\u51fd\u6570\u7b7e\u540d\uff0c\u5982set(uint256,uint256)\u6216\u8005 fool()\uff0c\u53c2\u6570\u4f7f\u7528','\u5206\u5272\u4e14\u4e0d\u80fd\u6709\u7a7a\u683c args:\u5982\u679c\u975e\u5341\u516d\u8fdb\u5236\uff0c\u5219\u81ea\u7136\u8f93\u5165\u4f7f\u7528','\u5206\u5272\u4e14\u4e0d\u80fd\u6709\u7a7a\u683c\uff0c\u5982\u679c\u662f\u5341\u516d\u8fdb\u5236\uff0c\u76f4\u63a5\u586b\u5165\u5373\u53ef is_hex\uff1a\u8f93\u5165\u53c2\u6570\u662f\u5426\u4e3a\u5341\u516d\u8fdb\u5236\uff0cfalse \u6216\u8005 true fee_limit:\u548cdeploycontract\u7684\u65f6\u5019\u7c7b\u4f3c\uff0c\u8868\u793a\u672c\u6b21\u90e8\u7f72\u5408\u7ea6\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\uff0c\u5355\u4f4d\u662fSUN(1 SUN = 10^-6 TRX)\uff0c\u5305\u62ecCPU\u8d44\u6e90\u3001STORAGE\u8d44\u6e90\u548c\u53ef\u7528\u4f59\u989d\u7684\u6d88\u8017\u3002 value:\u5728\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u7ed9\u8be5\u5408\u7ea6\u8f6c\u8d26\u91d1\u989d\uff0c\u4f7f\u7528\u5341\u516d\u8fdb\u523632\u4f4d\u8868\u793a # \u8c03\u7528\u7684\u4f8b\u5b50 ## \u8bbe\u7f6e mapping 1->1 triggercontract TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 set(uint256,uint256) 1,1 false 1000000 0000000000000000000000000000000000000000000000000000000000000000 ## \u53d6\u51fa mapping key = 1\u7684 value triggercontract TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 get(uint256) 1 false 1000000 0000000000000000000000000000000000000000000000000000000000000000 \u5982\u679c\u8c03\u7528\u7684\u51fd\u6570\u662f constant \u6216 view\uff0cwallet-cli \u5c06\u4f1a\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c \u5982\u679c\u5305\u542blibrary\uff0c\u5219\u9700\u8981\u5728\u90e8\u7f72\u5408\u7ea6\u4e4b\u524d\u5148\u90e8\u7f72library\uff0c\u90e8\u7f72\u5b8clibrary\u4e4b\u540e\uff0c\u77e5\u9053\u4e86library\u5730\u5740\uff0c\u5c06\u5730\u5740\u586b\u8fdblibrary:address,library:address,... # \u6bd4\u5982\u4f7f\u7528remix\u751f\u6210\u7684\u5408\u7ea6\uff0cbytecode\u662f 608060405234801561001057600080fd5b5061013f806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063f75dac5a14610046575b600080fd5b34801561005257600080fd5b5061005b610071565b6040518082815260200191505060405180910390f35b600073__browser/oneLibrary.sol.Math3__________<\\b>634f2be91f6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156100d357600080fd5b505af41580156100e7573d6000803e3d6000fd5b505050506040513d60208110156100fd57600080fd5b81019080805190602001909291905050509050905600a165627a7a7230582052333e136f236d95e9d0b59c4490a39e25dd3a3dcdc16285820ee0a7508eb8690029 \u4e4b\u524d\u90e8\u7f72\u7684library\u5730\u5740\u662f\uff1aTSEJ29gnBkxQZR3oDdLdeQtQQykpVLSk54 \u90a3\u4e48\u90e8\u7f72\u7684\u65f6\u5019\uff0c\u9700\u8981\u5c06 browser/oneLibrary.sol.Math3:TSEJ29gnBkxQZR3oDdLdeQtQQykpVLSk54 \u4f5c\u4e3adeploycontract\u7684\u53c2\u6570\u3002","title":"Dapp\u5f00\u53d1\u5de5\u5177"},{"location":"contracts/compiler/#_1","text":"","title":"\u5408\u7ea6\u7f16\u8bd1"},{"location":"contracts/compiler/#_2","text":"","title":"\u5de5\u5177\u4ecb\u7ecd"},{"location":"contracts/compiler/#1-tronide","text":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u5f00\u53d1\u5de5\u5177\u3002\u63d0\u4f9b\u53ef\u89c6\u5316\u754c\u9762\uff0c\u652f\u6301\u5f00\u53d1\u8005\u5bf9solidity\u8bed\u8a00\u667a\u80fd\u5408\u7ea6\u8fdb\u884c\u7f16\u8bd1\uff0c\u8c03\u8bd5\uff0c\u8fd0\u884c\u7b49\u529f\u80fd\u3002 http://www.tronide.io/","title":"1. TronIDE"},{"location":"contracts/compiler/#2-tronbox","text":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u90e8\u7f72\u5de5\u5177\u3002\u652f\u6301solidity\u8bed\u8a00\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u8bd1\uff0c\u90e8\u7f72\uff0c\u79fb\u690d\u7b49\u529f\u80fd\u3002 https://cn.developers.tron.network/reference/tronbox-%E7%AE%80%E4%BB%8B","title":"2. TronBox"},{"location":"contracts/compiler/#3-tronweb","text":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u5f00\u53d1\u4f7f\u7528\u7684http api\u5e93\u3002\u63d0\u4f9b\u548c\u4e3b\u94fe\u4ea4\u4e92\uff0c\u5408\u7ea6\u90e8\u7f72\u8c03\u7528\u7b49\u63a5\u53e3\u3002 https://cn.developers.tron.network/docs/dapp-development-tools-tronweb","title":"3. TronWeb"},{"location":"contracts/compiler/#4-trongrid","text":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u4e8b\u4ef6\u67e5\u8be2\u670d\u52a1\u3002\u53ef\u4ee5\u67e5\u8be2\u667a\u80fd\u5408\u7ea6\u4e2d\u5199\u5165\u7684\u4e8b\u4ef6log\u4fe1\u606f\u3002 https://cn.developers.tron.network/docs/trongrid","title":"4. TronGrid"},{"location":"contracts/compiler/#_3","text":"\u5728tron\u4e0a\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\uff0c\u9664\u4e86\u4f7f\u7528\u73b0\u6709\u7684\u5de5\u5177(tron-studio)\u4e4b\u5916\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528wallet-cli\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\uff0c\u7f16\u8bd1\u548c\u90e8\u7f72\u3002\u7f16\u5199\u667a\u80fd\u5408\u7ea6\uff0c\u53ef\u4ee5\u4f7f\u7528\u4f7f\u7528TronStudio\u8fdb\u884c\u7f16\u8bd1\u3001\u8c03\u8bd5\u7b49\u524d\u671f\u7684\u5f00\u53d1\u5de5\u4f5c\u3002 \u5f53\u5408\u7ea6\u5f00\u53d1\u5b8c\u6210\u4e4b\u540e\uff0c\u53ef\u4ee5\u628a\u5408\u7ea6\u590d\u5236\u5230 SimpleWebCompiler \u4e2d\u8fdb\u884c\u7f16\u8bd1\uff0c\u83b7\u53d6ABI\u548cByteCode\u3002 \u6211\u4eec\u63d0\u4f9b\u4e00\u4e2a\u7b80\u5355\u7684\u6570\u636e\u5b58\u53d6\u7684\u5408\u7ea6\u4ee3\u7801\u793a\u4f8b\uff0c\u4ee5\u8fd9\u4e2a\u793a\u4f8b\u6765\u8bf4\u660e\u7f16\u8bd1\u3001\u90e8\u7f72\u3001\u8c03\u7528\u7684\u6b65\u9aa4\u3002 pragma solidity ^0.4.0; contract DataStore { mapping(uint256 => uint256) data; function set(uint256 key, uint256 value) public { data[key] = value; } function get(uint256 key) view public returns (uint256 value) { value = data[key]; } }","title":"\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u5f00\u53d1"},{"location":"contracts/compiler/#_4","text":"\u786e\u4fdd\u524d\u63d0\u6761\u4ef6\u4e2d\uff0c\u79c1\u6709\u94fe\u5df2\u7ecf\u5728\u672c\u5730\u90e8\u7f72\u5b8c\u6210\u3002\u53ef\u4ee5\u68c0\u67e5FullNode/logs/tron.log\u4e2d\uff0c\u662f\u5426\u6709\u6301\u7eed\u4ea7\u5757\u7684log\u4fe1\u606f\u51fa\u73b0\uff1a\u201cProduce block successfully\u201d","title":"\u542f\u52a8\u79c1\u6709\u94fe"},{"location":"contracts/compiler/#_5","text":"\u628a\u4e0a\u8ff0\u4ee3\u7801\u590d\u5236\u5230remix\u4e2d\u7f16\u8bd1\uff0c\u8c03\u8bd5\uff0c\u786e\u4fdd\u4ee3\u7801\u7684\u903b\u8f91\u662f\u81ea\u5df1\u9700\u8981\u7684\uff0c\u7f16\u8bd1\u901a\u8fc7\uff0c\u6ca1\u6709\u9519\u8bef","title":"\u5f00\u53d1\u667a\u80fd\u5408\u7ea6"},{"location":"contracts/compiler/#simplewebcompilerabibytecode","text":"\u56e0\u4e3a\u6ce2\u573a\u7684\u7f16\u8bd1\u5668\u4e0e\u4ee5\u592a\u574a\u7684\u7f16\u8bd1\u7565\u6709\u5dee\u5f02\uff0c\u6b63\u5728\u4e0eRemix\u96c6\u6210\u4e2d\uff0c\u6240\u4ee5\u4e34\u65f6\u91c7\u7528\u6539\u65b9\u6848\u83b7\u53d6ABI\u548cByteCode\uff0c\u800c\u4e0d\u662f\u901a\u8fc7Remix\u76f4\u63a5\u83b7\u53d6ABI\u548cByteCode\u3002 \u628a\u4e0a\u8ff0\u4ee3\u7801\u590d\u5236\u5230SimpleWebCompiler\u4e2d\uff0c\u70b9\u51fbCompile\u6309\u94ae\uff0c\u83b7\u53d6ABI\u548cByteCode\u3002","title":"\u5728SimpleWebCompiler\u7f16\u8bd1\u5f97\u5230ABI\u548cByteCode"},{"location":"contracts/compiler/#wallet-cli","text":"\u4e0b\u8f7dWallet-Cli\uff0c\u6587\u4ef6\u7136\u540e\u7f16\u8bd1\u3002 # \u4e0b\u8f7d\u6e90\u4ee3\u7801 git clone https://github.com/tronprotocol/wallet-cli cd wallet-cli # \u7f16\u8bd1 ./gradlew build cd build/libs \u6ce8\u610f\uff1a wallet-cli \u9ed8\u8ba4\u7684\u914d\u7f6e\u4f1a\u8fde\u63a5\u672c\u5730127.0.0.1:50051\u7684 fullnode\uff0c\u5982\u679c\u5f00\u53d1\u8005\u9700\u8981\u8fde\u63a5\u4e0d\u540c\u7684\u5176\u4ed6\u8282\u70b9\u6216\u8005\u7aef\u53e3\u53ef\u5728 config.conf \u6587\u4ef6\u4e2d\u8fdb\u884c\u4fee\u6539 \u542f\u52a8wallet-cli java -jar wallet-cli.jar \u542f\u52a8\u4e4b\u540e\uff0c\u53ef\u5728\u547d\u4ee4\u4e2d\u4ea4\u4e92\u5f0f\u8f93\u5165\u6307\u4ee4\u3002\u5bfc\u5165\u79c1\u94a5\uff0c\u5e76\u67e5\u8be2\u4f59\u989d\u662f\u5426\u6b63\u786e importwallet <\u8f93\u5165\u4f60\u81ea\u5df1\u7684\u8bbe\u5b9a\u7684\u94b1\u5305\u5bc6\u78012\u6b21> <\u8f93\u5165\u79c1\u94a5\uff1ada146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0> login <\u8f93\u5165\u4f60\u81ea\u5df1\u7684\u8bbe\u5b9a\u7684\u94b1\u5305\u5bc6\u7801> getbalance \u90e8\u7f72\u5408\u7ea6 # \u5408\u7ea6\u90e8\u7f72\u6307\u4ee4 DeployContract contractName ABI byteCode constructor params isHex fee_limit consume_user_resource_percent # \u53c2\u6570\u8bf4\u660e contract_name:\u81ea\u5df1\u5236\u5b9a\u7684\u5408\u7ea6\u540d ABI:\u4eceSimpleWebCompiler\u4e2d\u83b7\u53d6\u5230\u7684 ABI json \u6570\u636e bytecode:\u4eceSimpleWebCompiler\u4e2d\u83b7\u53d6\u5230\u7684\u4e8c\u8fdb\u5236\u4ee3\u7801 constructor:\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u4f1a\u8c03\u7528\u6784\u9020\u51fd\u6570\uff0c\u5982\u679c\u9700\u8981\u8c03\u7528\uff0c\u5c31\u628a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u7c7b\u578b\u586b\u5199\u5230\u8fd9\u91cc\uff0c\u4f8b\u5982\uff1aconstructor(uint256,string)\uff0c\u5982\u679c\u6ca1\u6709\uff0c\u5c31\u586b\u5199\u4e00\u4e2a\u5b57\u7b26# params\uff1a\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\uff0c\u4f7f\u7528\u9017\u53f7\u5206\u9694\u5f00\u6765\uff0c\u4f8b\u5982 1,\"test\" \uff0c\u5982\u679c\u6ca1\u6709\u6784\u9020\u51fd\u6570\uff0c\u5c31\u586b\u5199\u4e00\u4e2a\u5b57\u7b26# fee_limit:\u672c\u6b21\u90e8\u7f72\u5408\u7ea6\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\uff0c\u5355\u4f4d\u662fSUN(1 SUN = 10^-6 TRX)\uff0c\u5305\u62ecCPU\u8d44\u6e90\u3001STORAGE\u8d44\u6e90\u548c\u53ef\u7528\u4f59\u989d\u7684\u6d88\u8017 consume_user_resource_percent:\u6307\u5b9a\u7684\u4f7f\u7528\u8be5\u5408\u7ea6\u7528\u6237\u7684\u8d44\u6e90\u5360\u6bd4\uff0c\u662f[0, 100]\u4e4b\u95f4\u7684\u6574\u6570\u3002\u5982\u679c\u662f0\uff0c\u5219\u8868\u793a\u7528\u6237\u4e0d\u4f1a\u6d88\u8017\u8d44\u6e90\u3002\u5982\u679c\u5f00\u53d1\u8005\u8d44\u6e90\u6d88\u8017\u5b8c\u4e86\uff0c\u624d\u4f1a\u5b8c\u5168\u4f7f\u7528\u7528\u6237\u7684\u8d44\u6e90\u3002 value:\u5728\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u7ed9\u8be5\u5408\u7ea6\u8f6c\u8d26\u91d1\u989d\uff0c\u4f7f\u7528\u5341\u516d\u8fdb\u523632\u4f4d\u8868\u793a library:address,library:address,...:\u5982\u679c\u5408\u7ea6\u5305\u542blibrary\uff0c\u5219\u9700\u8981\u5728\u90e8\u7f72\u5408\u7ea6\u7684\u65f6\u5019\u6307\u5b9alibrary\u7684\u5730\u5740\uff0c\u5177\u4f53\u89c1\u4e0b\u6587\uff1b\u6ca1\u6709library\u7684\u8bdd\u5219\u4e0d\u9700\u8981\u586b\u5199\u3002 # \u8fd0\u884c\u4f8b\u5b50 deploycontract DataStore [{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"uint256\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}] 608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029 # # false 1000000 30 0 \u90e8\u7f72\u6210\u529f\u4f1a\u663e\u793aDeploy the contract successfully \u5f97\u5230\u5408\u7ea6\u7684\u5730\u5740 Your smart contract address will be: <\u5408\u7ea6\u5730\u5740> # \u5728\u672c\u4f8b\u4e2d Your smart contract address will be: TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 \u8c03\u7528\u5408\u7ea6\u5b58\u50a8\u6570\u636e\u3001\u67e5\u8be2\u6570\u636e Shell # \u8c03\u7528\u5408\u7ea6\u6307\u4ee4 triggercontract # \u53c2\u6570\u8bf4\u660e contract_address:\u5373\u4e4b\u524d\u90e8\u7f72\u8fc7\u5408\u7ea6\u7684\u5730\u5740\uff0c\u683c\u5f0f base58\uff0c\u5982\uff1aTTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 method:\u8c03\u7528\u7684\u51fd\u6570\u7b7e\u540d\uff0c\u5982set(uint256,uint256)\u6216\u8005 fool()\uff0c\u53c2\u6570\u4f7f\u7528','\u5206\u5272\u4e14\u4e0d\u80fd\u6709\u7a7a\u683c args:\u5982\u679c\u975e\u5341\u516d\u8fdb\u5236\uff0c\u5219\u81ea\u7136\u8f93\u5165\u4f7f\u7528','\u5206\u5272\u4e14\u4e0d\u80fd\u6709\u7a7a\u683c\uff0c\u5982\u679c\u662f\u5341\u516d\u8fdb\u5236\uff0c\u76f4\u63a5\u586b\u5165\u5373\u53ef is_hex\uff1a\u8f93\u5165\u53c2\u6570\u662f\u5426\u4e3a\u5341\u516d\u8fdb\u5236\uff0cfalse \u6216\u8005 true fee_limit:\u548cdeploycontract\u7684\u65f6\u5019\u7c7b\u4f3c\uff0c\u8868\u793a\u672c\u6b21\u90e8\u7f72\u5408\u7ea6\u6d88\u8017\u7684TRX\u7684\u4e0a\u9650\uff0c\u5355\u4f4d\u662fSUN(1 SUN = 10^-6 TRX)\uff0c\u5305\u62ecCPU\u8d44\u6e90\u3001STORAGE\u8d44\u6e90\u548c\u53ef\u7528\u4f59\u989d\u7684\u6d88\u8017\u3002 value:\u5728\u90e8\u7f72\u5408\u7ea6\u65f6\uff0c\u7ed9\u8be5\u5408\u7ea6\u8f6c\u8d26\u91d1\u989d\uff0c\u4f7f\u7528\u5341\u516d\u8fdb\u523632\u4f4d\u8868\u793a # \u8c03\u7528\u7684\u4f8b\u5b50 ## \u8bbe\u7f6e mapping 1->1 triggercontract TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 set(uint256,uint256) 1,1 false 1000000 0000000000000000000000000000000000000000000000000000000000000000 ## \u53d6\u51fa mapping key = 1\u7684 value triggercontract TTWq4vMEYB2yibAbPV7gQ4mrqTyX92fha6 get(uint256) 1 false 1000000 0000000000000000000000000000000000000000000000000000000000000000 \u5982\u679c\u8c03\u7528\u7684\u51fd\u6570\u662f constant \u6216 view\uff0cwallet-cli \u5c06\u4f1a\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c \u5982\u679c\u5305\u542blibrary\uff0c\u5219\u9700\u8981\u5728\u90e8\u7f72\u5408\u7ea6\u4e4b\u524d\u5148\u90e8\u7f72library\uff0c\u90e8\u7f72\u5b8clibrary\u4e4b\u540e\uff0c\u77e5\u9053\u4e86library\u5730\u5740\uff0c\u5c06\u5730\u5740\u586b\u8fdblibrary:address,library:address,... # \u6bd4\u5982\u4f7f\u7528remix\u751f\u6210\u7684\u5408\u7ea6\uff0cbytecode\u662f 608060405234801561001057600080fd5b5061013f806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063f75dac5a14610046575b600080fd5b34801561005257600080fd5b5061005b610071565b6040518082815260200191505060405180910390f35b600073__browser/oneLibrary.sol.Math3__________<\\b>634f2be91f6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156100d357600080fd5b505af41580156100e7573d6000803e3d6000fd5b505050506040513d60208110156100fd57600080fd5b81019080805190602001909291905050509050905600a165627a7a7230582052333e136f236d95e9d0b59c4490a39e25dd3a3dcdc16285820ee0a7508eb8690029 \u4e4b\u524d\u90e8\u7f72\u7684library\u5730\u5740\u662f\uff1aTSEJ29gnBkxQZR3oDdLdeQtQQykpVLSk54 \u90a3\u4e48\u90e8\u7f72\u7684\u65f6\u5019\uff0c\u9700\u8981\u5c06 browser/oneLibrary.sol.Math3:TSEJ29gnBkxQZR3oDdLdeQtQQykpVLSk54 \u4f5c\u4e3adeploycontract\u7684\u53c2\u6570\u3002","title":"\u901a\u8fc7Wallet-cli\u90e8\u7f72\u667a\u80fd\u5408\u7ea6"},{"location":"contracts/contract/","text":"\u667a\u80fd\u5408\u7ea6 \u00b6 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u4ecb\u7ecd \u00b6 \u667a\u80fd\u5408\u7ea6\u662f\u4e00\u79cd\u80fd\u81ea\u52a8\u6267\u884c\u5176\u6761\u6b3e\u7684\u8ba1\u7b97\u5316\u4ea4\u6613\u534f\u8bae\u3002\u667a\u80fd\u5408\u7ea6\u548c\u666e\u901a\u5408\u7ea6\u4e00\u6837\uff0c\u5b9a\u4e49\u4e86\u53c2\u4e0e\u8005\u76f8\u5173\u7684\u6761\u6b3e\u548c\u5956\u60e9\u673a\u5236\u3002\u4e00\u65e6\u5408\u7ea6\u88ab\u542f\u52a8\uff0c\u4fbf\u80fd\u6309\u7167\u8bbe\u5b9a\u7684\u6761\u6b3e\u6267\u884c\uff0c\u5e76\u81ea\u52a8\u68c0\u67e5\u6240\u627f\u8bfa\u7684\u6761\u6b3e\u5b9e\u65bd\u60c5\u5f62\u3002 Tron\u517c\u5bb9\u4ee5\u592a\u574a\uff08Ethereum\uff09\u4e0a\u91c7\u7528Solidity\u7f16\u5199\u7684\u667a\u80fd\u5408\u7ea6\u3002\u5f53\u524d\u5efa\u8bae\u7684Solidity\u8bed\u8a00\u7248\u672c\u4e3a0.4.24 ~ 0.4.25\u3002\u5408\u7ea6\u7f16\u5199\u3001\u7f16\u8bd1\u5b8c\u6210\u540e\uff0c\u90e8\u7f72\u5230Tron\u516c\u94fe\u4e0a\u3002\u90e8\u7f72\u540e\u7684\u5408\u7ea6\uff0c\u88ab\u89e6\u53d1\u65f6\uff0c\u5c31\u4f1a\u5728\u516c\u94fe\u7684\u5404\u4e2a\u8282\u70b9\u4e0a\u81ea\u52a8\u6267\u884c\u3002 \u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u7279\u6027 \u00b6 Tron virtual machine \u57fa\u4e8e\u4ee5\u592a\u574a solidity \u8bed\u8a00\u5b9e\u73b0\uff0c\u517c\u5bb9\u4ee5\u592a\u574a\u865a\u62df\u673a\u7684\u7279\u6027\uff0c\u4f46\u57fa\u4e8etron\u81ea\u8eab\u5c5e\u6027\u4e5f\u6709\u90e8\u5206\u7684\u533a\u522b\u3002 1. \u667a\u80fd\u5408\u7ea6 \u00b6 \u6ce2\u573a\u865a\u62df\u673a\u8fd0\u884c\u7684\u667a\u80fd\u5408\u7ea6\u517c\u5bb9\u4ee5\u592a\u574a\u667a\u80fd\u5408\u7ea6\u7279\u6027\uff0c\u4ee5protobuf\u7684\u5f62\u5f0f\u5b9a\u4e49\u5408\u7ea6\u5185\u5bb9\uff1a message SmartContract { message ABI { message Entry { enum EntryType { UnknownEntryType = 0 ; Constructor = 1 ; Function = 2 ; Event = 3 ; Fallback = 4 ; Receive = 5 ; Error = 6 ; } message Param { bool indexed = 1 ; string name = 2 ; string type = 3 ; } enum StateMutabilityType { UnknownMutabilityType = 0 ; Pure = 1 ; View = 2 ; Nonpayable = 3 ; Payable = 4 ; } bool anonymous = 1 ; bool constant = 2 ; string name = 3 ; repeated Param inputs = 4 ; repeated Param outputs = 5 ; EntryType type = 6 ; bool payable = 7 ; StateMutabilityType stateMutability = 8 ; } repeated Entry entrys = 1 ; } bytes origin_address = 1 ; bytes contract_address = 2 ; ABI abi = 3 ; bytes bytecode = 4 ; int64 call_value = 5 ; int64 consume_user_resource_percent = 6 ; string name = 7 ; int64 origin_energy_limit = 8 ; bytes code_hash = 9 ; bytes trx_hash = 10 ; } origin_address: \u5408\u7ea6\u521b\u5efa\u8005\u5730\u5740 contract_address: \u5408\u7ea6\u5730\u5740 abi:\u5408\u7ea6\u6240\u6709\u51fd\u6570\u7684\u63a5\u53e3\u4fe1\u606f bytecode\uff1a\u5408\u7ea6\u5b57\u8282\u7801 call_value\uff1a\u968f\u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684trx\u91d1\u989d consume_user_resource_percent\uff1a\u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u8c03\u7528\u8005\u7684\u8d44\u6e90\u6263\u8d39\u767e\u5206\u6bd4 name\uff1a\u5408\u7ea6\u540d\u79f0 origin_energy_limit: \u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u5728\u4e00\u6b21\u5408\u7ea6\u8c03\u7528\u8fc7\u7a0b\u4e2d\u81ea\u5df1\u6d88\u8017\u7684energy\u7684\u4e0a\u9650\uff0c\u5fc5\u987b\u5927\u4e8e0\u3002\u5bf9\u4e8e\u4e4b\u524d\u8001\u7684\u5408\u7ea6\uff0cdeploy\u7684\u65f6\u5019\u6ca1\u6709\u63d0\u4f9b\u8bbe\u7f6e\u8be5\u503c\u7684\u53c2\u6570\uff0c\u4f1a\u5b58\u62100\uff0c\u4f46\u662f\u4f1a\u6309\u71671000\u4e07energy\u4e0a\u9650\u8ba1\u7b97\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7updateEnergyLimit\u63a5\u53e3\u91cd\u65b0\u8bbe\u7f6e\u8be5\u503c\uff0c\u8bbe\u7f6e\u65b0\u503c\u65f6\u4e5f\u5fc5\u987b\u5927\u4e8e0 \u901a\u8fc7\u53e6\u5916\u4e24\u4e2agrpc message\u7c7b\u578b CreateSmartContract \u548c TriggerSmartContract \u6765\u521b\u5efa\u548c\u4f7f\u7528smart contract 2. \u5408\u7ea6\u51fd\u6570\u7684\u4f7f\u7528 \u00b6 constant function\u548c\u975econstant function \u51fd\u6570\u8c03\u7528\u4ece\u5bf9\u94fe\u4e0a\u5c5e\u6027\u662f\u5426\u6709\u66f4\u6539\u53ef\u5206\u4e3a\u4e24\u79cd\uff1aconstant function \u548c \u975econstant function\u3002 Constant function \u662f\u6307\u7528 view/pure/constant \u4fee\u9970\u7684\u51fd\u6570\u3002\u4f1a\u5728\u8c03\u7528\u7684\u8282\u70b9\u4e0a\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c\uff0c\u5e76\u4e0d\u4ee5\u4e00\u7b14\u4ea4\u6613\u7684\u5f62\u5f0f\u5e7f\u64ad\u51fa\u53bb\u3002 \u975econstant function\u662f\u6307\u9700\u8981\u4f9d\u6258\u4e00\u7b14\u4ea4\u6613\u7684\u5f62\u5f0f\u88ab\u5e7f\u64ad\u7684\u65b9\u6cd5\u8c03\u7528\u3002\u51fd\u6570\u4f1a\u6539\u53d8\u94fe\u4e0a\u6570\u636e\u7684\u5185\u5bb9\uff0c\u6bd4\u5982\u8f6c\u8d26\uff0c\u6539\u53d8\u5408\u7ea6\u5185\u90e8\u53d8\u91cf\u7684\u503c\u7b49\u7b49\u3002 \u6ce8\u610f: \u5982\u679c\u5728\u5408\u7ea6\u5185\u90e8\u4f7f\u7528create\u6307\u4ee4\uff08CREATE instruction\uff09\uff0c\u5373\u4f7f\u7528view/pure/constant\u6765\u4fee\u9970\u8fd9\u4e2a\u52a8\u6001\u521b\u5efa\u7684\u5408\u7ea6\u5408\u7ea6\u65b9\u6cd5\uff0c\u8fd9\u4e2a\u5408\u7ea6\u65b9\u6cd5\u4ecd\u4f1a\u88ab\u5f53\u4f5c\u975econstant function\uff0c\u4ee5\u4ea4\u6613\u7684\u5f62\u5f0f\u6765\u5904\u7406\u3002 \u6d88\u606f\u8c03\u7528\uff08message calls\uff09 \u6d88\u606f\u8c03\u7528\u53ef\u4ee5\u5411\u5176\u4ed6\u7684\u5408\u7ea6\u53d1\u8d77\u51fd\u6570\u8c03\u7528\uff0c\u4e5f\u53ef\u4ee5\u5411\u5408\u7ea6\u7684\u8d26\u6237\u6216\u975e\u5408\u7ea6\u7684\u8d26\u6237\u8f6c\u5e10trx\u3002 \u4e0e\u666e\u901a\u7684\u6ce2\u573atriggercontract\u7c7b\u4f3c\uff0c \u6d88\u606f\u8c03\u7528\u4e5f\u6709\u8c03\u7528\u7684\u53d1\u8d77\u8005\uff0c\u63a5\u53d7\u8005\uff0c\u6570\u636e\uff0c\u8f6c\u8d26\u91d1\u989d\uff0c\u6263\u8d39\uff0c\u4ee5\u53ca\u8fd4\u56de\u503c\u7b49\u5c5e\u6027\u3002\u6bcf\u4e00\u4e2a\u6d88\u606f\u8c03\u7528\u90fd\u53ef\u4ee5\u9012\u5f52\u7684\u751f\u6210\u65b0\u7684\u6d88\u606f\u8c03\u7528\u3002 \u5408\u7ea6\u53ef\u4ee5\u51b3\u5b9a\u5728\u5176\u5185\u90e8\u7684\u6d88\u606f\u8c03\u7528\u4e2d\uff0c\u5bf9\u4e8e\u5269\u4f59\u7684 energy \uff0c\u5e94\u53d1\u9001\u548c\u4fdd\u7559\u591a\u5c11\u3002\u5982\u679c\u5728\u5185\u90e8\u6d88\u606f\u8c03\u7528\u65f6\u53d1\u751f\u4e86OutOfEnergyException \u5f02\u5e38\uff08\u6216\u5176\u4ed6\u4efb\u4f55\u5f02\u5e38\uff09,\u4f1a\u8fd4\u56defalse\uff0c\u4f46\u4e0d\u4f1a\u4ee5\u5f02\u5e38\u7684\u5f62\u5f0f\u629b\u51fa\u3002\u6b64\u65f6\uff0c\u53ea\u6709\u4e0e\u8be5\u5185\u90e8\u6d88\u606f\u8c03\u7528\u4e00\u8d77\u53d1\u9001\u7684gas\u4f1a\u88ab\u6d88\u8017\u6389\uff0c\u5982\u679c\u4e0d\u8868\u660e\u6d88\u606f\u8c03\u7528\u6240\u4f20\u5165\u7684\u8d39\u7528call.value(energy)\uff0c\u5219\u4f1a\u6263\u6389\u6240\u6709\u7684\u5269\u4f59energy\u3002 \u59d4\u6258\u8c03\u7528/\u4ee3\u7801\u8c03\u7528\u548c\u5e93 (delegatecall/callcode/libary) \u6709\u4e00\u79cd\u7279\u6b8a\u7c7b\u578b\u7684\u6d88\u606f\u8c03\u7528\uff0c\u88ab\u79f0\u4e3a \u59d4\u6258\u8c03\u7528(delegatecall) \u3002\u5b83\u548c\u4e00\u822c\u7684\u6d88\u606f\u8c03\u7528\u7684\u533a\u522b\u5728\u4e8e\uff0c\u76ee\u6807\u5730\u5740\u7684\u4ee3\u7801\u5c06\u5728\u53d1\u8d77\u8c03\u7528\u7684\u5408\u7ea6\u7684\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\uff0c\u5e76\u4e14msg.sender \u548cmsg.value \u4e0d\u53d8\u3002 \u8fd9\u610f\u5473\u7740\u4e00\u4e2a\u5408\u7ea6\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u4ece\u53e6\u5916\u4e00\u4e2a\u5730\u5740\u52a8\u6001\u52a0\u8f7d\u4ee3\u7801\u3002\u5b58\u50a8\u3001\u5f53\u524d\u5730\u5740\u548c\u4f59\u989d\u90fd\u6307\u5411\u53d1\u8d77\u8c03\u7528\u7684\u5408\u7ea6\uff0c\u53ea\u6709\u4ee3\u7801\u662f\u4ece\u88ab\u8c03\u7528\u5730\u5740\u83b7\u53d6\u7684\u3002 \u8fd9\u4f7f\u5f97 Solidity \u53ef\u4ee5\u5b9e\u73b0\u201d\u5e93\u201c\u80fd\u529b\uff1a\u53ef\u590d\u7528\u7684\u4ee3\u7801\u5e93\u53ef\u4ee5\u653e\u5728\u4e00\u4e2a\u5408\u7ea6\u7684\u5b58\u50a8\u4e0a\uff0c\u5982\u7528\u6765\u5b9e\u73b0\u590d\u6742\u7684\u6570\u636e\u7ed3\u6784\u7684\u5e93\u3002 CREATE \u6307\u4ee4\uff08CREATE instruction\uff09 \u53e6\u4e00\u4e2a\u4e0e\u5408\u7ea6\u8c03\u7528\u76f8\u5173\u7684\u662f\u8c03\u7528\u6307\u4ee4\u96c6\u7684\u65f6\u5019\u4f7f\u7528CREATE\u6307\u4ee4\u3002\u8fd9\u4e2a\u6307\u4ee4\u5c06\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5408\u7ea6\u5e76\u751f\u6210\u65b0\u7684\u5730\u5740\u3002\u4e0e\u4ee5\u592a\u574a\u7684\u521b\u5efa\u552f\u4e00\u7684\u4e0d\u540c\u5728\u4e8e\u6ce2\u573a\u65b0\u751f\u6210\u7684\u5730\u5740\u4f7f\u7528\u7684\u662f\u4f20\u5165\u7684\u672c\u6b21\u667a\u80fd\u5408\u7ea6\u4ea4\u6613id\u4e0e\u8c03\u7528\u7684nonce\u7684\u54c8\u5e0c\u7ec4\u5408\u3002\u548c\u4ee5\u592a\u574a\u4e0d\u540c\uff0c\u8fd9\u4e2anonce\u7684\u5b9a\u4e49\u4e3a\u672c\u6b21\u6839\u8c03\u7528\u5f00\u59cb\u521b\u5efa\u7684\u5408\u7ea6\u5e8f\u53f7\u3002\u5373\u5982\u679c\u6709\u591a\u6b21\u7684 CREATE\u6307\u4ee4\u8c03\u7528\uff0c\u4ece1\u5f00\u59cb\uff0c\u987a\u5e8f\u7f16\u53f7\u6bcf\u6b21\u8c03\u7528\u7684\u5408\u7ea6\u3002\u8be6\u7ec6\u8bf7\u53c2\u8003\u4ee3\u7801\u3002\u8fd8\u9700\u6ce8\u610f\uff0c\u4e0edeploycontract\u7684grpc\u8c03\u7528\u521b\u5efa\u5408\u7ea6\u4e0d\u540c\uff0cCREATE\u7684\u5408\u7ea6\u5e76\u4e0d\u4f1a\u4fdd\u5b58\u5408\u7ea6\u7684abi\u3002 \u5185\u7f6e\u529f\u80fd\u5c5e\u6027\u53ca\u5185\u7f6e\u51fd\u6570 (Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301TVM\u5185\u7f6e\u51fd\u6570) 1 \uff09TVM\u517c\u5bb9solidity\u8bed\u8a00\u7684\u8f6c\u8d26\u5f62\u5f0f\uff0c\u5305\u62ec\uff1a \u4f34\u968fconstructor\u8c03\u7528\u8f6c\u8d26 \u4f34\u968f\u5408\u7ea6\u5185\u51fd\u6570\u8c03\u7528\u8f6c\u8d26 transfer/send/call/callcode/delegatecall\u51fd\u6570\u8c03\u7528\u8f6c\u8d26 \u6ce8\u610f\uff0c\u6ce2\u573a\u7684\u667a\u80fd\u5408\u7ea6\u4e0e\u6ce2\u573a\u7cfb\u7edf\u5408\u7ea6\u7684\u903b\u8f91\u4e0d\u540c\uff0c\u5982\u679c\u8f6c\u8d26\u7684\u76ee\u6807\u5730\u5740\u8d26\u6237\u4e0d\u5b58\u5728\uff0c\u4e0d\u80fd\u901a\u8fc7\u667a\u80fd\u5408\u7ea6\u8f6c\u8d26\u7684\u5f62\u5f0f\u521b\u5efa\u76ee\u6807\u5730\u5740\u8d26\u6237\u3002\u8fd9\u4e5f\u662f\u4e0e\u4ee5\u592a\u574a\u7684\u4e0d\u540c\u70b9\u3002 2 \uff09\u4e0d\u540c\u8d26\u6237\u4e3a\u8d85\u7ea7\u8282\u70b9\u6295\u7968 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 3 \uff09\u8d85\u7ea7\u8282\u70b9\u83b7\u53d6\u6240\u6709\u5956\u52b1 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 4 \uff09\u8d85\u7ea7\u8282\u70b9\u901a\u8fc7\u6216\u5426\u5b9a\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 5 \uff09\u8d85\u7ea7\u8282\u70b9\u63d0\u51fa\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 6 \uff09\u8d85\u7ea7\u8282\u70b9\u5220\u9664\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 7 \uff09\u6ce2\u573abyte\u5730\u5740\u8f6c\u6362\u4e3asolidity\u5730\u5740 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 8 \uff09\u6ce2\u573astring\u5730\u5740\u8f6c\u6362\u4e3asolidity\u5730\u5740 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 9 \uff09\u5411\u76ee\u6807\u8d26\u6237\u5730\u5740\u53d1\u9001token\u8f6c\u8d26 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 10 \uff09\u67e5\u8be2\u76ee\u6807\u8d26\u6237\u5730\u5740\u7684\u6307\u5b9atoken\u7684\u6570\u91cf ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 11 \uff09\u517c\u5bb9\u6240\u6709\u4ee5\u592a\u574a\u5185\u7f6e\u51fd\u6570 \u6ce8\u610f\uff1a \u6ce2\u573a2\uff09- 10\uff09\u4e3a\u6ce2\u573a\u81ea\u5df1\u7684\u5185\u7f6e\u51fd\u6570 \u5177\u4f53\u4e2d\u6587\u6587\u6863\u8bf7\u53c2\u770b\uff1ahttps://github.com/tronprotocol/Documentation/blob/master/\u4e2d\u6587\u6587\u6863/\u865a\u62df\u673a/\u865a\u62df\u673a\u5185\u7f6e\u51fd\u6570.md \u4ee5\u592a\u574a RIPEMD160 \u51fd\u6570\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u6ce2\u573a\u8fd4\u56de\u7684\u662f\u4e00\u4e2a\u81ea\u5df1\u7684\u57fa\u4e8esha256\u7684hash\u7ed3\u679c\uff0c\u5e76\u4e0d\u662f\u51c6\u786e\u7684\u4ee5\u592a\u574aRIPEMD160\u3002\u4ee5\u540e\u4f1a\u8003\u8651\u5220\u9664\u8fd9\u4e2a\u51fd\u6570\u3002 3. \u5408\u7ea6\u5730\u5740\u5728solidity\u8bed\u8a00\u7684\u4f7f\u7528 \u00b6 \u4ee5\u592a\u574a\u865a\u62df\u673a\u5730\u5740\u4e3a\u662f20\u5b57\u8282\uff0c\u800c\u6ce2\u573a\u865a\u62df\u673a\u89e3\u6790\u5730\u5740\u4e3a21\u5b57\u8282\u3002 * \u5730\u5740\u8f6c\u6362 \u5728solidity\u4e2d\u4f7f\u7528\u7684\u65f6\u5019\u9700\u8981\u5bf9\u6ce2\u573a\u5730\u5740\u505a\u5982\u4e0b\u5904\u7406\uff08\u63a8\u8350\uff09\uff1a /** * @dev convert uint256 (HexString add 0x at beginning) tron address to solidity address type * @param tronAddress uint256 tronAddress, begin with 0x, followed by HexString * @return Solidity address type */ function convertFromTronInt ( uint256 tronAddress ) public view returns ( address ){ return address ( tronAddress ); } \u8fd9\u4e2a\u548c\u5728\u4ee5\u592a\u574a\u4e2d\u5176\u4ed6\u7c7b\u578b\u8f6c\u6362\u6210address\u7c7b\u578b\u8bed\u6cd5\u76f8\u540c\u3002 \u5730\u5740\u5224\u65ad solidity\u4e2d\u6709\u5730\u5740\u5e38\u91cf\u5224\u65ad\uff0c\u5982\u679c\u5199\u7684\u662f21\u5b57\u8282\u5730\u5740\u7f16\u8bd1\u5668\u4f1a\u62a5\u9519\uff0c\u53ea\u7528\u519920\u5b57\u8282\u5730\u5740\u5373\u53ef\uff0c\u5982\uff1a function compareAddress ( address tronAddress ) public view returns ( uint256 ){ // if (tronAddress == 0x41ca35b7d915458ef540ade6068dfe2f44e8fa733c) { // compile error if ( tronAddress == 0xca35b7d915458ef540ade6068dfe2f44e8fa733c ) { // right return 1 ; } else { return 0 ; } } tronAddress\u4ecewallet-cli\u4f20\u5165\u662f0000000000000000000041ca35b7d915458ef540ade6068dfe2f44e8fa733c\u8fd9\u4e2a21\u5b57\u8282\u5730\u5740\uff0c\u5373\u6b63\u5e38\u7684\u6ce2\u573a\u5730\u5740\u65f6\uff0c\u662f\u4f1a\u8fd4\u56de1\u7684\uff0c\u5224\u65ad\u6b63\u786e\u3002 \u5730\u5740\u8d4b\u503c solidity\u4e2d\u6709\u5730\u5740\u5e38\u91cf\u7684\u8d4b\u503c\uff0c\u5982\u679c\u5199\u7684\u662f21\u5b57\u8282\u5730\u5740\u7f16\u8bd1\u5668\u4f1a\u62a5\u9519\uff0c\u53ea\u7528\u519920\u5b57\u8282\u5730\u5740\u5373\u53ef\uff0csolidity\u4e2d\u540e\u7eed\u64cd\u4f5c\u76f4\u63a5\u5229\u7528\u8fd9\u4e2a20\u4f4d\u5730\u5740\uff0c\u6ce2\u573a\u865a\u62df\u673a\u5185\u90e8\u505a\u4e86\u8865\u4f4d\u64cd\u4f5c\u3002\u5982\uff1a function assignAddress () public view { // address newAddress = 0x41ca35b7d915458ef540ade6068dfe2f44e8fa733c; // compile error address newAddress = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c ; // do something } \u5982\u679c\u60f3\u76f4\u63a5\u4f7f\u7528string \u7c7b\u578b\u7684\u6ce2\u573a\u5730\u5740\uff08\u5982TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm\uff09\u8bf7\u53c2\u8003\u5185\u7f6e\u51fd\u6570\u7684\u4e24\u79cd\u5730\u5740\u8f6c\u6362\u65b9\u5f0f\uff08\u89c1II-4-7,II-4-8\uff09\u3002 4. \u4e0e\u4ee5\u592a\u574a\u6709\u533a\u522b\u7684\u7279\u6b8a\u5e38\u91cf \u00b6 \u8d27\u5e01 \u00b6 \u7c7b\u4f3c\u4e8esolidity\u5bf9ether\u7684\u652f\u6301\uff0c\u6ce2\u573a\u865a\u62df\u673a\u7684\u4ee3\u7801\u652f\u6301\u7684\u8d27\u5e01\u5355\u4f4d\u6709trx\u548csun\uff0c\u5176\u4e2d1trx = 1000000 sun\uff0c\u5927\u5c0f\u5199\u654f\u611f\uff0c\u53ea\u652f\u6301\u5c0f\u5199\u3002\u76ee\u524dtron-studio\u652f\u6301trx\u548csun\uff0c\u5728remix\u4e2d\uff0c\u4e0d\u652f\u6301trx\u548csun\uff0c\u5982\u679c\u4f7f\u7528ether\u3001finney\u7b49\u5355\u4f4d\u65f6\uff0c\u6ce8\u610f\u6362\u7b97(\u53ef\u80fd\u4f1a\u53d1\u751f\u6ea2\u51fa\u9519\u8bef)\u3002 \u6211\u4eec\u63a8\u8350\u4f7f\u7528tron-studio\u4ee3\u66ffremix\u8fdb\u884ctron\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u5199\u3002 \u533a\u5757\u76f8\u5173 \u00b6 block.blockhash(uint blockNumber) returns (bytes32)\uff1a\u6307\u5b9a\u533a\u5757\u7684\u533a\u5757\u54c8\u5e0c\u2014\u2014\u4ec5\u53ef\u7528\u4e8e\u6700\u65b0\u7684 256 \u4e2a\u533a\u5757\u4e14\u4e0d\u5305\u62ec\u5f53\u524d\u533a\u5757\uff1b\u800c blocks \u4ece 0.4.22 \u7248\u672c\u5f00\u59cb\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u7531 blockhash(uint blockNumber) \u4ee3\u66ff block.coinbase (address): \u4ea7\u5f53\u524d\u533a\u5757\u7684\u8d85\u7ea7\u8282\u70b9\u5730\u5740 block.difficulty (uint): \u5f53\u524d\u533a\u5757\u96be\u5ea6\uff0c\u6ce2\u573a\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u8bbe\u7f6e\u6052\u4e3a0 block.gaslimit (uint): \u5f53\u524d\u533a\u5757 gas \u9650\u989d\uff0c\u6ce2\u573a\u6682\u65f6\u4e0d\u652f\u6301\u4f7f\u7528, \u6682\u65f6\u8bbe\u7f6e\u4e3a0 block.number (uint): \u5f53\u524d\u533a\u5757\u53f7 block.timestamp (uint): \u5f53\u524d\u533a\u5757\u4ee5\u79d2\u8ba1\u7684\u65f6\u95f4\u6233 gasleft() returns (uint256)\uff1a\u5269\u4f59\u7684 gas msg.data (bytes): \u5b8c\u6574\u7684 calldata msg.gas (uint): \u5269\u4f59 gas - \u81ea 0.4.21 \u7248\u672c\u5f00\u59cb\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u7531 gesleft() \u4ee3\u66ff msg.sender (address): \u6d88\u606f\u53d1\u9001\u8005\uff08\u5f53\u524d\u8c03\u7528\uff09 msg.sig (bytes4): calldata \u7684\u524d 4 \u5b57\u8282\uff08\u4e5f\u5c31\u662f\u51fd\u6570\u6807\u8bc6\u7b26\uff09 msg.value (uint): \u968f\u6d88\u606f\u53d1\u9001\u7684 sun \u7684\u6570\u91cf now (uint): \u76ee\u524d\u533a\u5757\u65f6\u95f4\u6233\uff08block.timestamp\uff09 tx.gasprice (uint): \u4ea4\u6613\u7684 gas \u4ef7\u683c\uff0c\u6ce2\u573a\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u8bbe\u7f6e\u503c\u6052\u4e3a0 tx.origin (address): \u4ea4\u6613\u53d1\u8d77\u8005","title":"\u667a\u80fd\u5408\u7ea6"},{"location":"contracts/contract/#_1","text":"","title":"\u667a\u80fd\u5408\u7ea6"},{"location":"contracts/contract/#_2","text":"\u667a\u80fd\u5408\u7ea6\u662f\u4e00\u79cd\u80fd\u81ea\u52a8\u6267\u884c\u5176\u6761\u6b3e\u7684\u8ba1\u7b97\u5316\u4ea4\u6613\u534f\u8bae\u3002\u667a\u80fd\u5408\u7ea6\u548c\u666e\u901a\u5408\u7ea6\u4e00\u6837\uff0c\u5b9a\u4e49\u4e86\u53c2\u4e0e\u8005\u76f8\u5173\u7684\u6761\u6b3e\u548c\u5956\u60e9\u673a\u5236\u3002\u4e00\u65e6\u5408\u7ea6\u88ab\u542f\u52a8\uff0c\u4fbf\u80fd\u6309\u7167\u8bbe\u5b9a\u7684\u6761\u6b3e\u6267\u884c\uff0c\u5e76\u81ea\u52a8\u68c0\u67e5\u6240\u627f\u8bfa\u7684\u6761\u6b3e\u5b9e\u65bd\u60c5\u5f62\u3002 Tron\u517c\u5bb9\u4ee5\u592a\u574a\uff08Ethereum\uff09\u4e0a\u91c7\u7528Solidity\u7f16\u5199\u7684\u667a\u80fd\u5408\u7ea6\u3002\u5f53\u524d\u5efa\u8bae\u7684Solidity\u8bed\u8a00\u7248\u672c\u4e3a0.4.24 ~ 0.4.25\u3002\u5408\u7ea6\u7f16\u5199\u3001\u7f16\u8bd1\u5b8c\u6210\u540e\uff0c\u90e8\u7f72\u5230Tron\u516c\u94fe\u4e0a\u3002\u90e8\u7f72\u540e\u7684\u5408\u7ea6\uff0c\u88ab\u89e6\u53d1\u65f6\uff0c\u5c31\u4f1a\u5728\u516c\u94fe\u7684\u5404\u4e2a\u8282\u70b9\u4e0a\u81ea\u52a8\u6267\u884c\u3002","title":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u4ecb\u7ecd"},{"location":"contracts/contract/#_3","text":"Tron virtual machine \u57fa\u4e8e\u4ee5\u592a\u574a solidity \u8bed\u8a00\u5b9e\u73b0\uff0c\u517c\u5bb9\u4ee5\u592a\u574a\u865a\u62df\u673a\u7684\u7279\u6027\uff0c\u4f46\u57fa\u4e8etron\u81ea\u8eab\u5c5e\u6027\u4e5f\u6709\u90e8\u5206\u7684\u533a\u522b\u3002","title":"\u6ce2\u573a\u667a\u80fd\u5408\u7ea6\u7279\u6027"},{"location":"contracts/contract/#1","text":"\u6ce2\u573a\u865a\u62df\u673a\u8fd0\u884c\u7684\u667a\u80fd\u5408\u7ea6\u517c\u5bb9\u4ee5\u592a\u574a\u667a\u80fd\u5408\u7ea6\u7279\u6027\uff0c\u4ee5protobuf\u7684\u5f62\u5f0f\u5b9a\u4e49\u5408\u7ea6\u5185\u5bb9\uff1a message SmartContract { message ABI { message Entry { enum EntryType { UnknownEntryType = 0 ; Constructor = 1 ; Function = 2 ; Event = 3 ; Fallback = 4 ; Receive = 5 ; Error = 6 ; } message Param { bool indexed = 1 ; string name = 2 ; string type = 3 ; } enum StateMutabilityType { UnknownMutabilityType = 0 ; Pure = 1 ; View = 2 ; Nonpayable = 3 ; Payable = 4 ; } bool anonymous = 1 ; bool constant = 2 ; string name = 3 ; repeated Param inputs = 4 ; repeated Param outputs = 5 ; EntryType type = 6 ; bool payable = 7 ; StateMutabilityType stateMutability = 8 ; } repeated Entry entrys = 1 ; } bytes origin_address = 1 ; bytes contract_address = 2 ; ABI abi = 3 ; bytes bytecode = 4 ; int64 call_value = 5 ; int64 consume_user_resource_percent = 6 ; string name = 7 ; int64 origin_energy_limit = 8 ; bytes code_hash = 9 ; bytes trx_hash = 10 ; } origin_address: \u5408\u7ea6\u521b\u5efa\u8005\u5730\u5740 contract_address: \u5408\u7ea6\u5730\u5740 abi:\u5408\u7ea6\u6240\u6709\u51fd\u6570\u7684\u63a5\u53e3\u4fe1\u606f bytecode\uff1a\u5408\u7ea6\u5b57\u8282\u7801 call_value\uff1a\u968f\u5408\u7ea6\u8c03\u7528\u4f20\u5165\u7684trx\u91d1\u989d consume_user_resource_percent\uff1a\u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u8c03\u7528\u8005\u7684\u8d44\u6e90\u6263\u8d39\u767e\u5206\u6bd4 name\uff1a\u5408\u7ea6\u540d\u79f0 origin_energy_limit: \u5f00\u53d1\u8005\u8bbe\u7f6e\u7684\u5728\u4e00\u6b21\u5408\u7ea6\u8c03\u7528\u8fc7\u7a0b\u4e2d\u81ea\u5df1\u6d88\u8017\u7684energy\u7684\u4e0a\u9650\uff0c\u5fc5\u987b\u5927\u4e8e0\u3002\u5bf9\u4e8e\u4e4b\u524d\u8001\u7684\u5408\u7ea6\uff0cdeploy\u7684\u65f6\u5019\u6ca1\u6709\u63d0\u4f9b\u8bbe\u7f6e\u8be5\u503c\u7684\u53c2\u6570\uff0c\u4f1a\u5b58\u62100\uff0c\u4f46\u662f\u4f1a\u6309\u71671000\u4e07energy\u4e0a\u9650\u8ba1\u7b97\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7updateEnergyLimit\u63a5\u53e3\u91cd\u65b0\u8bbe\u7f6e\u8be5\u503c\uff0c\u8bbe\u7f6e\u65b0\u503c\u65f6\u4e5f\u5fc5\u987b\u5927\u4e8e0 \u901a\u8fc7\u53e6\u5916\u4e24\u4e2agrpc message\u7c7b\u578b CreateSmartContract \u548c TriggerSmartContract \u6765\u521b\u5efa\u548c\u4f7f\u7528smart contract","title":"1. \u667a\u80fd\u5408\u7ea6"},{"location":"contracts/contract/#2","text":"constant function\u548c\u975econstant function \u51fd\u6570\u8c03\u7528\u4ece\u5bf9\u94fe\u4e0a\u5c5e\u6027\u662f\u5426\u6709\u66f4\u6539\u53ef\u5206\u4e3a\u4e24\u79cd\uff1aconstant function \u548c \u975econstant function\u3002 Constant function \u662f\u6307\u7528 view/pure/constant \u4fee\u9970\u7684\u51fd\u6570\u3002\u4f1a\u5728\u8c03\u7528\u7684\u8282\u70b9\u4e0a\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c\uff0c\u5e76\u4e0d\u4ee5\u4e00\u7b14\u4ea4\u6613\u7684\u5f62\u5f0f\u5e7f\u64ad\u51fa\u53bb\u3002 \u975econstant function\u662f\u6307\u9700\u8981\u4f9d\u6258\u4e00\u7b14\u4ea4\u6613\u7684\u5f62\u5f0f\u88ab\u5e7f\u64ad\u7684\u65b9\u6cd5\u8c03\u7528\u3002\u51fd\u6570\u4f1a\u6539\u53d8\u94fe\u4e0a\u6570\u636e\u7684\u5185\u5bb9\uff0c\u6bd4\u5982\u8f6c\u8d26\uff0c\u6539\u53d8\u5408\u7ea6\u5185\u90e8\u53d8\u91cf\u7684\u503c\u7b49\u7b49\u3002 \u6ce8\u610f: \u5982\u679c\u5728\u5408\u7ea6\u5185\u90e8\u4f7f\u7528create\u6307\u4ee4\uff08CREATE instruction\uff09\uff0c\u5373\u4f7f\u7528view/pure/constant\u6765\u4fee\u9970\u8fd9\u4e2a\u52a8\u6001\u521b\u5efa\u7684\u5408\u7ea6\u5408\u7ea6\u65b9\u6cd5\uff0c\u8fd9\u4e2a\u5408\u7ea6\u65b9\u6cd5\u4ecd\u4f1a\u88ab\u5f53\u4f5c\u975econstant function\uff0c\u4ee5\u4ea4\u6613\u7684\u5f62\u5f0f\u6765\u5904\u7406\u3002 \u6d88\u606f\u8c03\u7528\uff08message calls\uff09 \u6d88\u606f\u8c03\u7528\u53ef\u4ee5\u5411\u5176\u4ed6\u7684\u5408\u7ea6\u53d1\u8d77\u51fd\u6570\u8c03\u7528\uff0c\u4e5f\u53ef\u4ee5\u5411\u5408\u7ea6\u7684\u8d26\u6237\u6216\u975e\u5408\u7ea6\u7684\u8d26\u6237\u8f6c\u5e10trx\u3002 \u4e0e\u666e\u901a\u7684\u6ce2\u573atriggercontract\u7c7b\u4f3c\uff0c \u6d88\u606f\u8c03\u7528\u4e5f\u6709\u8c03\u7528\u7684\u53d1\u8d77\u8005\uff0c\u63a5\u53d7\u8005\uff0c\u6570\u636e\uff0c\u8f6c\u8d26\u91d1\u989d\uff0c\u6263\u8d39\uff0c\u4ee5\u53ca\u8fd4\u56de\u503c\u7b49\u5c5e\u6027\u3002\u6bcf\u4e00\u4e2a\u6d88\u606f\u8c03\u7528\u90fd\u53ef\u4ee5\u9012\u5f52\u7684\u751f\u6210\u65b0\u7684\u6d88\u606f\u8c03\u7528\u3002 \u5408\u7ea6\u53ef\u4ee5\u51b3\u5b9a\u5728\u5176\u5185\u90e8\u7684\u6d88\u606f\u8c03\u7528\u4e2d\uff0c\u5bf9\u4e8e\u5269\u4f59\u7684 energy \uff0c\u5e94\u53d1\u9001\u548c\u4fdd\u7559\u591a\u5c11\u3002\u5982\u679c\u5728\u5185\u90e8\u6d88\u606f\u8c03\u7528\u65f6\u53d1\u751f\u4e86OutOfEnergyException \u5f02\u5e38\uff08\u6216\u5176\u4ed6\u4efb\u4f55\u5f02\u5e38\uff09,\u4f1a\u8fd4\u56defalse\uff0c\u4f46\u4e0d\u4f1a\u4ee5\u5f02\u5e38\u7684\u5f62\u5f0f\u629b\u51fa\u3002\u6b64\u65f6\uff0c\u53ea\u6709\u4e0e\u8be5\u5185\u90e8\u6d88\u606f\u8c03\u7528\u4e00\u8d77\u53d1\u9001\u7684gas\u4f1a\u88ab\u6d88\u8017\u6389\uff0c\u5982\u679c\u4e0d\u8868\u660e\u6d88\u606f\u8c03\u7528\u6240\u4f20\u5165\u7684\u8d39\u7528call.value(energy)\uff0c\u5219\u4f1a\u6263\u6389\u6240\u6709\u7684\u5269\u4f59energy\u3002 \u59d4\u6258\u8c03\u7528/\u4ee3\u7801\u8c03\u7528\u548c\u5e93 (delegatecall/callcode/libary) \u6709\u4e00\u79cd\u7279\u6b8a\u7c7b\u578b\u7684\u6d88\u606f\u8c03\u7528\uff0c\u88ab\u79f0\u4e3a \u59d4\u6258\u8c03\u7528(delegatecall) \u3002\u5b83\u548c\u4e00\u822c\u7684\u6d88\u606f\u8c03\u7528\u7684\u533a\u522b\u5728\u4e8e\uff0c\u76ee\u6807\u5730\u5740\u7684\u4ee3\u7801\u5c06\u5728\u53d1\u8d77\u8c03\u7528\u7684\u5408\u7ea6\u7684\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\uff0c\u5e76\u4e14msg.sender \u548cmsg.value \u4e0d\u53d8\u3002 \u8fd9\u610f\u5473\u7740\u4e00\u4e2a\u5408\u7ea6\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u4ece\u53e6\u5916\u4e00\u4e2a\u5730\u5740\u52a8\u6001\u52a0\u8f7d\u4ee3\u7801\u3002\u5b58\u50a8\u3001\u5f53\u524d\u5730\u5740\u548c\u4f59\u989d\u90fd\u6307\u5411\u53d1\u8d77\u8c03\u7528\u7684\u5408\u7ea6\uff0c\u53ea\u6709\u4ee3\u7801\u662f\u4ece\u88ab\u8c03\u7528\u5730\u5740\u83b7\u53d6\u7684\u3002 \u8fd9\u4f7f\u5f97 Solidity \u53ef\u4ee5\u5b9e\u73b0\u201d\u5e93\u201c\u80fd\u529b\uff1a\u53ef\u590d\u7528\u7684\u4ee3\u7801\u5e93\u53ef\u4ee5\u653e\u5728\u4e00\u4e2a\u5408\u7ea6\u7684\u5b58\u50a8\u4e0a\uff0c\u5982\u7528\u6765\u5b9e\u73b0\u590d\u6742\u7684\u6570\u636e\u7ed3\u6784\u7684\u5e93\u3002 CREATE \u6307\u4ee4\uff08CREATE instruction\uff09 \u53e6\u4e00\u4e2a\u4e0e\u5408\u7ea6\u8c03\u7528\u76f8\u5173\u7684\u662f\u8c03\u7528\u6307\u4ee4\u96c6\u7684\u65f6\u5019\u4f7f\u7528CREATE\u6307\u4ee4\u3002\u8fd9\u4e2a\u6307\u4ee4\u5c06\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5408\u7ea6\u5e76\u751f\u6210\u65b0\u7684\u5730\u5740\u3002\u4e0e\u4ee5\u592a\u574a\u7684\u521b\u5efa\u552f\u4e00\u7684\u4e0d\u540c\u5728\u4e8e\u6ce2\u573a\u65b0\u751f\u6210\u7684\u5730\u5740\u4f7f\u7528\u7684\u662f\u4f20\u5165\u7684\u672c\u6b21\u667a\u80fd\u5408\u7ea6\u4ea4\u6613id\u4e0e\u8c03\u7528\u7684nonce\u7684\u54c8\u5e0c\u7ec4\u5408\u3002\u548c\u4ee5\u592a\u574a\u4e0d\u540c\uff0c\u8fd9\u4e2anonce\u7684\u5b9a\u4e49\u4e3a\u672c\u6b21\u6839\u8c03\u7528\u5f00\u59cb\u521b\u5efa\u7684\u5408\u7ea6\u5e8f\u53f7\u3002\u5373\u5982\u679c\u6709\u591a\u6b21\u7684 CREATE\u6307\u4ee4\u8c03\u7528\uff0c\u4ece1\u5f00\u59cb\uff0c\u987a\u5e8f\u7f16\u53f7\u6bcf\u6b21\u8c03\u7528\u7684\u5408\u7ea6\u3002\u8be6\u7ec6\u8bf7\u53c2\u8003\u4ee3\u7801\u3002\u8fd8\u9700\u6ce8\u610f\uff0c\u4e0edeploycontract\u7684grpc\u8c03\u7528\u521b\u5efa\u5408\u7ea6\u4e0d\u540c\uff0cCREATE\u7684\u5408\u7ea6\u5e76\u4e0d\u4f1a\u4fdd\u5b58\u5408\u7ea6\u7684abi\u3002 \u5185\u7f6e\u529f\u80fd\u5c5e\u6027\u53ca\u5185\u7f6e\u51fd\u6570 (Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301TVM\u5185\u7f6e\u51fd\u6570) 1 \uff09TVM\u517c\u5bb9solidity\u8bed\u8a00\u7684\u8f6c\u8d26\u5f62\u5f0f\uff0c\u5305\u62ec\uff1a \u4f34\u968fconstructor\u8c03\u7528\u8f6c\u8d26 \u4f34\u968f\u5408\u7ea6\u5185\u51fd\u6570\u8c03\u7528\u8f6c\u8d26 transfer/send/call/callcode/delegatecall\u51fd\u6570\u8c03\u7528\u8f6c\u8d26 \u6ce8\u610f\uff0c\u6ce2\u573a\u7684\u667a\u80fd\u5408\u7ea6\u4e0e\u6ce2\u573a\u7cfb\u7edf\u5408\u7ea6\u7684\u903b\u8f91\u4e0d\u540c\uff0c\u5982\u679c\u8f6c\u8d26\u7684\u76ee\u6807\u5730\u5740\u8d26\u6237\u4e0d\u5b58\u5728\uff0c\u4e0d\u80fd\u901a\u8fc7\u667a\u80fd\u5408\u7ea6\u8f6c\u8d26\u7684\u5f62\u5f0f\u521b\u5efa\u76ee\u6807\u5730\u5740\u8d26\u6237\u3002\u8fd9\u4e5f\u662f\u4e0e\u4ee5\u592a\u574a\u7684\u4e0d\u540c\u70b9\u3002 2 \uff09\u4e0d\u540c\u8d26\u6237\u4e3a\u8d85\u7ea7\u8282\u70b9\u6295\u7968 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 3 \uff09\u8d85\u7ea7\u8282\u70b9\u83b7\u53d6\u6240\u6709\u5956\u52b1 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 4 \uff09\u8d85\u7ea7\u8282\u70b9\u901a\u8fc7\u6216\u5426\u5b9a\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 5 \uff09\u8d85\u7ea7\u8282\u70b9\u63d0\u51fa\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 6 \uff09\u8d85\u7ea7\u8282\u70b9\u5220\u9664\u63d0\u6848 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 7 \uff09\u6ce2\u573abyte\u5730\u5740\u8f6c\u6362\u4e3asolidity\u5730\u5740 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 8 \uff09\u6ce2\u573astring\u5730\u5740\u8f6c\u6362\u4e3asolidity\u5730\u5740 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 9 \uff09\u5411\u76ee\u6807\u8d26\u6237\u5730\u5740\u53d1\u9001token\u8f6c\u8d26 ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 10 \uff09\u67e5\u8be2\u76ee\u6807\u8d26\u6237\u5730\u5740\u7684\u6307\u5b9atoken\u7684\u6570\u91cf ( Odyssey-v3.1.1\u53ca\u4e4b\u540e\u7684\u7248\u672c\u6682\u65f6\u4e0d\u652f\u6301 ) 11 \uff09\u517c\u5bb9\u6240\u6709\u4ee5\u592a\u574a\u5185\u7f6e\u51fd\u6570 \u6ce8\u610f\uff1a \u6ce2\u573a2\uff09- 10\uff09\u4e3a\u6ce2\u573a\u81ea\u5df1\u7684\u5185\u7f6e\u51fd\u6570 \u5177\u4f53\u4e2d\u6587\u6587\u6863\u8bf7\u53c2\u770b\uff1ahttps://github.com/tronprotocol/Documentation/blob/master/\u4e2d\u6587\u6587\u6863/\u865a\u62df\u673a/\u865a\u62df\u673a\u5185\u7f6e\u51fd\u6570.md \u4ee5\u592a\u574a RIPEMD160 \u51fd\u6570\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u6ce2\u573a\u8fd4\u56de\u7684\u662f\u4e00\u4e2a\u81ea\u5df1\u7684\u57fa\u4e8esha256\u7684hash\u7ed3\u679c\uff0c\u5e76\u4e0d\u662f\u51c6\u786e\u7684\u4ee5\u592a\u574aRIPEMD160\u3002\u4ee5\u540e\u4f1a\u8003\u8651\u5220\u9664\u8fd9\u4e2a\u51fd\u6570\u3002","title":"2. \u5408\u7ea6\u51fd\u6570\u7684\u4f7f\u7528"},{"location":"contracts/contract/#3-solidity","text":"\u4ee5\u592a\u574a\u865a\u62df\u673a\u5730\u5740\u4e3a\u662f20\u5b57\u8282\uff0c\u800c\u6ce2\u573a\u865a\u62df\u673a\u89e3\u6790\u5730\u5740\u4e3a21\u5b57\u8282\u3002 * \u5730\u5740\u8f6c\u6362 \u5728solidity\u4e2d\u4f7f\u7528\u7684\u65f6\u5019\u9700\u8981\u5bf9\u6ce2\u573a\u5730\u5740\u505a\u5982\u4e0b\u5904\u7406\uff08\u63a8\u8350\uff09\uff1a /** * @dev convert uint256 (HexString add 0x at beginning) tron address to solidity address type * @param tronAddress uint256 tronAddress, begin with 0x, followed by HexString * @return Solidity address type */ function convertFromTronInt ( uint256 tronAddress ) public view returns ( address ){ return address ( tronAddress ); } \u8fd9\u4e2a\u548c\u5728\u4ee5\u592a\u574a\u4e2d\u5176\u4ed6\u7c7b\u578b\u8f6c\u6362\u6210address\u7c7b\u578b\u8bed\u6cd5\u76f8\u540c\u3002 \u5730\u5740\u5224\u65ad solidity\u4e2d\u6709\u5730\u5740\u5e38\u91cf\u5224\u65ad\uff0c\u5982\u679c\u5199\u7684\u662f21\u5b57\u8282\u5730\u5740\u7f16\u8bd1\u5668\u4f1a\u62a5\u9519\uff0c\u53ea\u7528\u519920\u5b57\u8282\u5730\u5740\u5373\u53ef\uff0c\u5982\uff1a function compareAddress ( address tronAddress ) public view returns ( uint256 ){ // if (tronAddress == 0x41ca35b7d915458ef540ade6068dfe2f44e8fa733c) { // compile error if ( tronAddress == 0xca35b7d915458ef540ade6068dfe2f44e8fa733c ) { // right return 1 ; } else { return 0 ; } } tronAddress\u4ecewallet-cli\u4f20\u5165\u662f0000000000000000000041ca35b7d915458ef540ade6068dfe2f44e8fa733c\u8fd9\u4e2a21\u5b57\u8282\u5730\u5740\uff0c\u5373\u6b63\u5e38\u7684\u6ce2\u573a\u5730\u5740\u65f6\uff0c\u662f\u4f1a\u8fd4\u56de1\u7684\uff0c\u5224\u65ad\u6b63\u786e\u3002 \u5730\u5740\u8d4b\u503c solidity\u4e2d\u6709\u5730\u5740\u5e38\u91cf\u7684\u8d4b\u503c\uff0c\u5982\u679c\u5199\u7684\u662f21\u5b57\u8282\u5730\u5740\u7f16\u8bd1\u5668\u4f1a\u62a5\u9519\uff0c\u53ea\u7528\u519920\u5b57\u8282\u5730\u5740\u5373\u53ef\uff0csolidity\u4e2d\u540e\u7eed\u64cd\u4f5c\u76f4\u63a5\u5229\u7528\u8fd9\u4e2a20\u4f4d\u5730\u5740\uff0c\u6ce2\u573a\u865a\u62df\u673a\u5185\u90e8\u505a\u4e86\u8865\u4f4d\u64cd\u4f5c\u3002\u5982\uff1a function assignAddress () public view { // address newAddress = 0x41ca35b7d915458ef540ade6068dfe2f44e8fa733c; // compile error address newAddress = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c ; // do something } \u5982\u679c\u60f3\u76f4\u63a5\u4f7f\u7528string \u7c7b\u578b\u7684\u6ce2\u573a\u5730\u5740\uff08\u5982TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm\uff09\u8bf7\u53c2\u8003\u5185\u7f6e\u51fd\u6570\u7684\u4e24\u79cd\u5730\u5740\u8f6c\u6362\u65b9\u5f0f\uff08\u89c1II-4-7,II-4-8\uff09\u3002","title":"3. \u5408\u7ea6\u5730\u5740\u5728solidity\u8bed\u8a00\u7684\u4f7f\u7528"},{"location":"contracts/contract/#4","text":"","title":"4. \u4e0e\u4ee5\u592a\u574a\u6709\u533a\u522b\u7684\u7279\u6b8a\u5e38\u91cf"},{"location":"contracts/contract/#_4","text":"\u7c7b\u4f3c\u4e8esolidity\u5bf9ether\u7684\u652f\u6301\uff0c\u6ce2\u573a\u865a\u62df\u673a\u7684\u4ee3\u7801\u652f\u6301\u7684\u8d27\u5e01\u5355\u4f4d\u6709trx\u548csun\uff0c\u5176\u4e2d1trx = 1000000 sun\uff0c\u5927\u5c0f\u5199\u654f\u611f\uff0c\u53ea\u652f\u6301\u5c0f\u5199\u3002\u76ee\u524dtron-studio\u652f\u6301trx\u548csun\uff0c\u5728remix\u4e2d\uff0c\u4e0d\u652f\u6301trx\u548csun\uff0c\u5982\u679c\u4f7f\u7528ether\u3001finney\u7b49\u5355\u4f4d\u65f6\uff0c\u6ce8\u610f\u6362\u7b97(\u53ef\u80fd\u4f1a\u53d1\u751f\u6ea2\u51fa\u9519\u8bef)\u3002 \u6211\u4eec\u63a8\u8350\u4f7f\u7528tron-studio\u4ee3\u66ffremix\u8fdb\u884ctron\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u5199\u3002","title":"\u8d27\u5e01"},{"location":"contracts/contract/#_5","text":"block.blockhash(uint blockNumber) returns (bytes32)\uff1a\u6307\u5b9a\u533a\u5757\u7684\u533a\u5757\u54c8\u5e0c\u2014\u2014\u4ec5\u53ef\u7528\u4e8e\u6700\u65b0\u7684 256 \u4e2a\u533a\u5757\u4e14\u4e0d\u5305\u62ec\u5f53\u524d\u533a\u5757\uff1b\u800c blocks \u4ece 0.4.22 \u7248\u672c\u5f00\u59cb\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u7531 blockhash(uint blockNumber) \u4ee3\u66ff block.coinbase (address): \u4ea7\u5f53\u524d\u533a\u5757\u7684\u8d85\u7ea7\u8282\u70b9\u5730\u5740 block.difficulty (uint): \u5f53\u524d\u533a\u5757\u96be\u5ea6\uff0c\u6ce2\u573a\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u8bbe\u7f6e\u6052\u4e3a0 block.gaslimit (uint): \u5f53\u524d\u533a\u5757 gas \u9650\u989d\uff0c\u6ce2\u573a\u6682\u65f6\u4e0d\u652f\u6301\u4f7f\u7528, \u6682\u65f6\u8bbe\u7f6e\u4e3a0 block.number (uint): \u5f53\u524d\u533a\u5757\u53f7 block.timestamp (uint): \u5f53\u524d\u533a\u5757\u4ee5\u79d2\u8ba1\u7684\u65f6\u95f4\u6233 gasleft() returns (uint256)\uff1a\u5269\u4f59\u7684 gas msg.data (bytes): \u5b8c\u6574\u7684 calldata msg.gas (uint): \u5269\u4f59 gas - \u81ea 0.4.21 \u7248\u672c\u5f00\u59cb\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u7531 gesleft() \u4ee3\u66ff msg.sender (address): \u6d88\u606f\u53d1\u9001\u8005\uff08\u5f53\u524d\u8c03\u7528\uff09 msg.sig (bytes4): calldata \u7684\u524d 4 \u5b57\u8282\uff08\u4e5f\u5c31\u662f\u51fd\u6570\u6807\u8bc6\u7b26\uff09 msg.value (uint): \u968f\u6d88\u606f\u53d1\u9001\u7684 sun \u7684\u6570\u91cf now (uint): \u76ee\u524d\u533a\u5757\u65f6\u95f4\u6233\uff08block.timestamp\uff09 tx.gasprice (uint): \u4ea4\u6613\u7684 gas \u4ef7\u683c\uff0c\u6ce2\u573a\u4e0d\u63a8\u8350\u4f7f\u7528\uff0c\u8bbe\u7f6e\u503c\u6052\u4e3a0 tx.origin (address): \u4ea4\u6613\u53d1\u8d77\u8005","title":"\u533a\u5757\u76f8\u5173"},{"location":"contracts/trc20/","text":"TRC-20 \u00b6 TRC-20\u662f\u7528\u4e8eTRON\u533a\u5757\u94fe\u4e0a\u7684\u667a\u80fd\u5408\u7ea6\u7684\u6280\u672f\u6807\u51c6\uff0c\u7528\u4e8e\u4f7f\u7528TRON\u865a\u62df\u673a\uff08TVM\uff09\u5b9e\u65bd\u4ee3\u5e01\u3002 \u5b83\u4e0e ERC-20\u5b8c\u5168\u517c\u5bb9\u3002 \u5b9e\u73b0\u89c4\u5219 \u00b6 3 \u4e2a\u53ef\u9009\u9879 \u00b6 \u901a\u8bc1\u540d\u79f0 string public constant name = \"TRONEuropeRewardCoin\" ; \u901a\u8bc1\u7f29\u5199 string public constant symbol = \"TERC\" ; \u901a\u8bc1\u7cbe\u5ea6 uint8 public constant decimals = 6 ; 6 \u4e2a\u5fc5\u9009\u9879 \u00b6 contract TRC20 { function totalSupply () constant returns ( uint theTotalSupply ); function balanceOf ( address _owner ) constant returns ( uint balance ); function transfer ( address _to , uint _value ) returns ( bool success ); function transferFrom ( address _from , address _to , uint _value ) returns ( bool success ); function approve ( address _spender , uint _value ) returns ( bool success ); function allowance ( address _owner , address _spender ) constant returns ( uint remaining ); event Transfer ( address indexed _from , address indexed _to , uint _value ); event Approval ( address indexed _owner , address indexed _spender , uint _value ); } totalSupply() \u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56de\u901a\u8bc1\u603b\u7684\u53d1\u884c\u91cf\u3002 balanceOf() \u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56de\u67e5\u8be2\u8d26\u6237\u7684\u901a\u8bc1\u4f59\u989d\u3002 transfer() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u4ece\u667a\u80fd\u5408\u7ea6\u5730\u5740\u91cc\u8f6c\u8d26\u901a\u8bc1\u5230\u6307\u5b9a\u8d26\u6237\u3002 approve() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u6388\u6743\u7b2c\u4e09\u65b9\uff08\u4f8b\u5982DAPP\u5408\u7ea6\uff09\u4ece\u901a\u8bc1\u62e5\u6709\u8005\u8d26\u6237\u8f6c\u8d26\u901a\u8bc1\u3002 transferFrom() \u8fd9\u4e2a\u65b9\u6cd5\u53ef\u4f9b\u7b2c\u4e09\u65b9\u4ece\u901a\u8bc1\u62e5\u6709\u8005\u8d26\u6237\u8f6c\u8d26\u901a\u8bc1\u3002\u9700\u8981\u914d\u5408approve()\u65b9\u6cd5\u4f7f\u7528\u3002 allowance() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u67e5\u8be2\u53ef\u4f9b\u7b2c\u4e09\u65b9\u8f6c\u8d26\u7684\u67e5\u8be2\u8d26\u6237\u7684\u901a\u8bc1\u4f59\u989d\u3002 2 \u4e2a\u4e8b\u4ef6\u51fd\u6570 \u00b6 \u5f53\u901a\u8bc1\u88ab\u6210\u529f\u8f6c\u8d26\u540e\uff0c\u4f1a\u89e6\u53d1\u8f6c\u8d26\u4e8b\u4ef6\u3002 event Transfer ( address indexed _from , address indexed _to , uint256 _value ) \u5f53approval()\u65b9\u6cd5\u88ab\u6210\u529f\u8c03\u7528\u540e\uff0c\u4f1a\u89e6\u53d1Approval\u4e8b\u4ef6\u3002 event Approval ( address indexed _owner , address indexed _spender , uint256 _value ) \u5408\u7ea6\u793a\u4f8b \u00b6 pragma solidity ^ 0.4.16 ; interface tokenRecipient { function receiveApproval ( address _from , uint256 _value , address _token , bytes _extraData ) external ; } contract TokenTRC20 { // Public variables of the token string public name ; string public symbol ; uint8 public decimals = 18 ; // 18 decimals is the strongly suggested default, avoid changing it uint256 public totalSupply ; // This creates an array with all balances mapping ( address => uint256 ) public balanceOf ; mapping ( address => mapping ( address => uint256 )) public allowance ; // This generates a public event on the blockchain that will notify clients event Transfer ( address indexed from , address indexed to , uint256 value ); // This notifies clients about the amount burnt event Burn ( address indexed from , uint256 value ); /** * Constructor function * * Initializes contract with initial supply tokens to the creator of the contract */ function TokenTRC20 ( uint256 initialSupply , string tokenName , string tokenSymbol ) public { totalSupply = initialSupply * 10 ** uint256 ( decimals ); // Update total supply with the decimal amount balanceOf [ msg.sender ] = totalSupply ; // Give the creator all initial tokens name = tokenName ; // Set the name for display purposes symbol = tokenSymbol ; // Set the symbol for display purposes } /** * Internal transfer, only can be called by this contract */ function _transfer ( address _from , address _to , uint _value ) internal { // Prevent transfer to 0x0 address. Use burn() instead require ( _to != 0x0 ); // Check if the sender has enough require ( balanceOf [ _from ] >= _value ); // Check for overflows require ( balanceOf [ _to ] + _value >= balanceOf [ _to ]); // Save this for an assertion in the future uint previousBalances = balanceOf [ _from ] + balanceOf [ _to ]; // Subtract from the sender balanceOf [ _from ] -= _value ; // Add the same to the recipient balanceOf [ _to ] += _value ; emit Transfer ( _from , _to , _value ); // Asserts are used to use static analysis to find bugs in your code. They should never fail assert ( balanceOf [ _from ] + balanceOf [ _to ] == previousBalances ); } /** * Transfer tokens * * Send `_value` tokens to `_to` from your account * * @param _to The address of the recipient * @param _value the amount to send */ function transfer ( address _to , uint256 _value ) public { _transfer ( msg.sender , _to , _value ); } /** * Transfer tokens from other address * * Send `_value` tokens to `_to` on behalf of `_from` * * @param _from The address of the sender * @param _to The address of the recipient * @param _value the amount to send */ function transferFrom ( address _from , address _to , uint256 _value ) public returns ( bool success ) { require ( _value <= allowance [ _from ][ msg.sender ]); // Check allowance allowance [ _from ][ msg.sender ] -= _value ; _transfer ( _from , _to , _value ); return true ; } /** * Set allowance for other address * * Allows `_spender` to spend no more than `_value` tokens on your behalf * * @param _spender The address authorized to spend * @param _value the max amount they can spend */ function approve ( address _spender , uint256 _value ) public returns ( bool success ) { allowance [ msg.sender ][ _spender ] = _value ; return true ; } /** * Set allowance for other address and notify * * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it * * @param _spender The address authorized to spend * @param _value the max amount they can spend * @param _extraData some extra information to send to the approved contract */ function approveAndCall ( address _spender , uint256 _value , bytes _extraData ) public returns ( bool success ) { tokenRecipient spender = tokenRecipient ( _spender ); if ( approve ( _spender , _value )) { spender . receiveApproval ( msg.sender , _value , this , _extraData ); return true ; } } /** * Destroy tokens * * Remove `_value` tokens from the system irreversibly * * @param _value the amount of money to burn */ function burn ( uint256 _value ) public returns ( bool success ) { require ( balanceOf [ msg.sender ] >= _value ); // Check if the sender has enough balanceOf [ msg.sender ] -= _value ; // Subtract from the sender totalSupply -= _value ; // Updates totalSupply emit Burn ( msg.sender , _value ); return true ; } /** * Destroy tokens from other account * * Remove `_value` tokens from the system irreversibly on behalf of `_from`. * * @param _from the address of the sender * @param _value the amount of money to burn */ function burnFrom ( address _from , uint256 _value ) public returns ( bool success ) { require ( balanceOf [ _from ] >= _value ); // Check if the targeted balance is enough require ( _value <= allowance [ _from ][ msg.sender ]); // Check allowance balanceOf [ _from ] -= _value ; // Subtract from the targeted balance allowance [ _from ][ msg.sender ] -= _value ; // Subtract from the sender's allowance totalSupply -= _value ; // Update totalSupply emit Burn ( _from , _value ); return true ; } }","title":"TRC-20"},{"location":"contracts/trc20/#trc-20","text":"TRC-20\u662f\u7528\u4e8eTRON\u533a\u5757\u94fe\u4e0a\u7684\u667a\u80fd\u5408\u7ea6\u7684\u6280\u672f\u6807\u51c6\uff0c\u7528\u4e8e\u4f7f\u7528TRON\u865a\u62df\u673a\uff08TVM\uff09\u5b9e\u65bd\u4ee3\u5e01\u3002 \u5b83\u4e0e ERC-20\u5b8c\u5168\u517c\u5bb9\u3002","title":"TRC-20"},{"location":"contracts/trc20/#_1","text":"","title":"\u5b9e\u73b0\u89c4\u5219"},{"location":"contracts/trc20/#3","text":"\u901a\u8bc1\u540d\u79f0 string public constant name = \"TRONEuropeRewardCoin\" ; \u901a\u8bc1\u7f29\u5199 string public constant symbol = \"TERC\" ; \u901a\u8bc1\u7cbe\u5ea6 uint8 public constant decimals = 6 ;","title":"3 \u4e2a\u53ef\u9009\u9879"},{"location":"contracts/trc20/#6","text":"contract TRC20 { function totalSupply () constant returns ( uint theTotalSupply ); function balanceOf ( address _owner ) constant returns ( uint balance ); function transfer ( address _to , uint _value ) returns ( bool success ); function transferFrom ( address _from , address _to , uint _value ) returns ( bool success ); function approve ( address _spender , uint _value ) returns ( bool success ); function allowance ( address _owner , address _spender ) constant returns ( uint remaining ); event Transfer ( address indexed _from , address indexed _to , uint _value ); event Approval ( address indexed _owner , address indexed _spender , uint _value ); } totalSupply() \u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56de\u901a\u8bc1\u603b\u7684\u53d1\u884c\u91cf\u3002 balanceOf() \u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56de\u67e5\u8be2\u8d26\u6237\u7684\u901a\u8bc1\u4f59\u989d\u3002 transfer() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u4ece\u667a\u80fd\u5408\u7ea6\u5730\u5740\u91cc\u8f6c\u8d26\u901a\u8bc1\u5230\u6307\u5b9a\u8d26\u6237\u3002 approve() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u6388\u6743\u7b2c\u4e09\u65b9\uff08\u4f8b\u5982DAPP\u5408\u7ea6\uff09\u4ece\u901a\u8bc1\u62e5\u6709\u8005\u8d26\u6237\u8f6c\u8d26\u901a\u8bc1\u3002 transferFrom() \u8fd9\u4e2a\u65b9\u6cd5\u53ef\u4f9b\u7b2c\u4e09\u65b9\u4ece\u901a\u8bc1\u62e5\u6709\u8005\u8d26\u6237\u8f6c\u8d26\u901a\u8bc1\u3002\u9700\u8981\u914d\u5408approve()\u65b9\u6cd5\u4f7f\u7528\u3002 allowance() \u8fd9\u4e2a\u65b9\u6cd5\u7528\u6765\u67e5\u8be2\u53ef\u4f9b\u7b2c\u4e09\u65b9\u8f6c\u8d26\u7684\u67e5\u8be2\u8d26\u6237\u7684\u901a\u8bc1\u4f59\u989d\u3002","title":"6 \u4e2a\u5fc5\u9009\u9879"},{"location":"contracts/trc20/#2","text":"\u5f53\u901a\u8bc1\u88ab\u6210\u529f\u8f6c\u8d26\u540e\uff0c\u4f1a\u89e6\u53d1\u8f6c\u8d26\u4e8b\u4ef6\u3002 event Transfer ( address indexed _from , address indexed _to , uint256 _value ) \u5f53approval()\u65b9\u6cd5\u88ab\u6210\u529f\u8c03\u7528\u540e\uff0c\u4f1a\u89e6\u53d1Approval\u4e8b\u4ef6\u3002 event Approval ( address indexed _owner , address indexed _spender , uint256 _value )","title":"2 \u4e2a\u4e8b\u4ef6\u51fd\u6570"},{"location":"contracts/trc20/#_2","text":"pragma solidity ^ 0.4.16 ; interface tokenRecipient { function receiveApproval ( address _from , uint256 _value , address _token , bytes _extraData ) external ; } contract TokenTRC20 { // Public variables of the token string public name ; string public symbol ; uint8 public decimals = 18 ; // 18 decimals is the strongly suggested default, avoid changing it uint256 public totalSupply ; // This creates an array with all balances mapping ( address => uint256 ) public balanceOf ; mapping ( address => mapping ( address => uint256 )) public allowance ; // This generates a public event on the blockchain that will notify clients event Transfer ( address indexed from , address indexed to , uint256 value ); // This notifies clients about the amount burnt event Burn ( address indexed from , uint256 value ); /** * Constructor function * * Initializes contract with initial supply tokens to the creator of the contract */ function TokenTRC20 ( uint256 initialSupply , string tokenName , string tokenSymbol ) public { totalSupply = initialSupply * 10 ** uint256 ( decimals ); // Update total supply with the decimal amount balanceOf [ msg.sender ] = totalSupply ; // Give the creator all initial tokens name = tokenName ; // Set the name for display purposes symbol = tokenSymbol ; // Set the symbol for display purposes } /** * Internal transfer, only can be called by this contract */ function _transfer ( address _from , address _to , uint _value ) internal { // Prevent transfer to 0x0 address. Use burn() instead require ( _to != 0x0 ); // Check if the sender has enough require ( balanceOf [ _from ] >= _value ); // Check for overflows require ( balanceOf [ _to ] + _value >= balanceOf [ _to ]); // Save this for an assertion in the future uint previousBalances = balanceOf [ _from ] + balanceOf [ _to ]; // Subtract from the sender balanceOf [ _from ] -= _value ; // Add the same to the recipient balanceOf [ _to ] += _value ; emit Transfer ( _from , _to , _value ); // Asserts are used to use static analysis to find bugs in your code. They should never fail assert ( balanceOf [ _from ] + balanceOf [ _to ] == previousBalances ); } /** * Transfer tokens * * Send `_value` tokens to `_to` from your account * * @param _to The address of the recipient * @param _value the amount to send */ function transfer ( address _to , uint256 _value ) public { _transfer ( msg.sender , _to , _value ); } /** * Transfer tokens from other address * * Send `_value` tokens to `_to` on behalf of `_from` * * @param _from The address of the sender * @param _to The address of the recipient * @param _value the amount to send */ function transferFrom ( address _from , address _to , uint256 _value ) public returns ( bool success ) { require ( _value <= allowance [ _from ][ msg.sender ]); // Check allowance allowance [ _from ][ msg.sender ] -= _value ; _transfer ( _from , _to , _value ); return true ; } /** * Set allowance for other address * * Allows `_spender` to spend no more than `_value` tokens on your behalf * * @param _spender The address authorized to spend * @param _value the max amount they can spend */ function approve ( address _spender , uint256 _value ) public returns ( bool success ) { allowance [ msg.sender ][ _spender ] = _value ; return true ; } /** * Set allowance for other address and notify * * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it * * @param _spender The address authorized to spend * @param _value the max amount they can spend * @param _extraData some extra information to send to the approved contract */ function approveAndCall ( address _spender , uint256 _value , bytes _extraData ) public returns ( bool success ) { tokenRecipient spender = tokenRecipient ( _spender ); if ( approve ( _spender , _value )) { spender . receiveApproval ( msg.sender , _value , this , _extraData ); return true ; } } /** * Destroy tokens * * Remove `_value` tokens from the system irreversibly * * @param _value the amount of money to burn */ function burn ( uint256 _value ) public returns ( bool success ) { require ( balanceOf [ msg.sender ] >= _value ); // Check if the sender has enough balanceOf [ msg.sender ] -= _value ; // Subtract from the sender totalSupply -= _value ; // Updates totalSupply emit Burn ( msg.sender , _value ); return true ; } /** * Destroy tokens from other account * * Remove `_value` tokens from the system irreversibly on behalf of `_from`. * * @param _from the address of the sender * @param _value the amount of money to burn */ function burnFrom ( address _from , uint256 _value ) public returns ( bool success ) { require ( balanceOf [ _from ] >= _value ); // Check if the targeted balance is enough require ( _value <= allowance [ _from ][ msg.sender ]); // Check allowance balanceOf [ _from ] -= _value ; // Subtract from the targeted balance allowance [ _from ][ msg.sender ] -= _value ; // Subtract from the sender's allowance totalSupply -= _value ; // Update totalSupply emit Burn ( _from , _value ); return true ; } }","title":"\u5408\u7ea6\u793a\u4f8b"},{"location":"contracts/tvm/","text":"Tron\u865a\u62df\u673aTVM \u00b6 \u6ce2\u573a\u865a\u62df\u673a\uff08Tron Virtual Machine\uff0c \u7b80\u79f0TVM\uff09\uff0c\u662fTron\u56e2\u961f\u4e3a\u4e86\u6ee1\u8db3\u81ea\u8eab\u751f\u6001\u53d1\u5c55\u7684\u9700\u6c42\uff0c\u5f00\u53d1\u51fa\u7684\u8f7b\u91cf\u7ea7\u67b6\u6784\u3001\u56fe\u7075\u5b8c\u5907\u7684\u865a\u62df\u673a\uff0c \u65e8\u5728\u4e3a\u5168\u7403\u767e\u4e07\u7ea7\u7684\u5f00\u53d1\u8005\u63d0\u4f9b\u4e00\u4e2a\u9ad8\u6548\u3001\u7b80\u5355\u3001\u7a33\u5b9a\u3001\u5b89\u5168\u3001\u4e14\u5bb9\u6613\u4f18\u5316\u7684\u533a\u5757\u94fe\u4e13\u7528\u7cfb\u7edf\u3002 TVM\u80fd\u65e0\u7f1d\u5bf9\u63a5\u73b0\u6709\u7684\u5f00\u53d1\u8005\u751f\u6001\uff0c\u5e76\u4e14\u80fd\u6ee1\u8db3DPOS\u5171\u8bc6\u673a\u5236\u7684\u8981\u6c42\u3002TVM\u524d\u671f\u517c\u5bb9\u4ee5\u592a\u574a\u865a\u62df\u673a\u73af\u5883\u3002\u5f00\u53d1\u8005\u65e0\u9700\u5b66\u4e60\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5c31\u80fd\u7528 Solidity \u7b49\u7f16\u7a0b\u8bed\u8a00\u5728\u719f\u6089\u7684 Remix \u73af\u5883\u4e2d\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u3001\u7f16\u8bd1\u3002Tron\u667a\u80fd\u5408\u7ea6\u7f16\u5199\u5b8c\u6bd5\u540e\uff0c\u4e0a\u4f20\u5230Tron\u4e3b\u7f51\u5f53\u4e2d\uff0c\u5728\u8d85\u7ea7\u4ee3\u8868\u8282\u70b9\u7684TVM\u865a\u62df\u673a\u6267\u884c\uff0c\u540c\u65f6\u4fdd\u6301\u4e86\u5bf9\u865a\u62df\u673a\u5916\u7cfb\u7edf\u73af\u5883\u7684\u9694\u79bb\u6027\u3002 \u6b64\u5916\uff0cTVM \u5f15\u8fdb\u4e86\u5e26\u5bbd\u7684\u6982\u5ff5\u3002\u4e0d\u540c\u4e8e\u4ee5\u592a\u574aEVM\u7684gas\u6d88\u8017\u6a21\u5f0f\uff0cTron\u7cfb\u7edf\u4e2d\u7684\u8f6c\u8d26\u548c\u667a\u80fd\u5408\u7ea6\u7684\u64cd\u4f5c\u662f\u514d\u8d39\u7684\uff0c\u4e0d\u9700\u8981\u6d88\u8017\u4efb\u4f55\u4ee3\u5e01\uff0c\u6240\u4ee5\u539f\u5219\u4e0a\u5728TVM\u4e2d\u53ef\u6267\u884c\u7684\u8ba1\u7b97\u603b\u91cf\u4e0d\u53d7\u4ee3\u5e01\u603b\u91cf\u9650\u5236\u3002 TVM\u8bbe\u8ba1\u539f\u5219 \u00b6 \u8f7b\u91cf\u7ea7 TVM\u91c7\u7528\u8f7b\u91cf\u7ea7\u7684\u865a\u62df\u673a\u6784\u67b6\uff0c\u65e8\u5728\u8282\u7701\u8fd0\u884c\u7a7a\u95f4\uff0c\u51cf\u5c11\u8d44\u6e90\u8017\u8d39\u53ca\u4fdd\u8bc1\u7cfb\u7edf\u6027\u80fd\u3002 \u7a33\u5b9a\u3001\u5b89\u5168\u6027 TVM\u91c7\u7528\u4e86\u4e25\u8c28\u7684\u8bbe\u8ba1\u89c4\u8303\uff0c\u4f4e\u7c92\u5ea6\u7684\u5e95\u5c42\u64cd\u4f5c\u7801\uff0c\u4fdd\u8bc1\u4e86\u6bcf\u4e2a\u8ba1\u7b97\u6b65\u9aa4\u7684\u7cbe\u786e\u6027\uff0c\u6700\u5927\u7a0b\u5ea6\u6d88\u9664\u4ea7\u751f\u6b67\u4e49\u7684\u7a7a\u95f4\u3002 \u540c\u65f6\u51fa\u4e8e\u5b89\u5168\u6027\u7684\u8003\u91cf\uff0cTVM\u7684\u8f6c\u8d26\u4e0e\u8fd0\u884c\u5408\u7ea6\u5747\u4e0d\u9700\u8981\u6d88\u8017\u4ee3\u5e01\uff0c\u53ea\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u907f\u514d\u4e86\u9488\u5bf9\u7c7b\u4f3c\u4ee5\u592a\u574agas\u6d88\u8017\u6a21\u5f0f\u7684\u653b\u51fb\u3002\u5728\u4fdd\u8bc1\u4e86\u6bcf\u4e2a\u64cd\u4f5c\u8ba1\u7b97\u6b65\u9aa4\u7684\u786e\u5b9a\u6027\u7684\u540c\u65f6\uff0c\u4e5f\u4fdd\u8bc1\u4e86\u5e26\u5bbd\u6d88\u8017\u7684\u7a33\u5b9a\u6027\u3002 \u517c\u5bb9\u6027 \u76ee\u524d\uff0cTVM\u80fd\u5b8c\u7f8e\u517c\u5bb9\u4ee5\u592a\u574aEVM\uff0c\u5e76\u5728\u672a\u6765\u517c\u5bb9\u66f4\u591a\u4e3b\u6d41\u7684VM\u3002\u56e0\u6b64, \u4ee5\u592a\u574a\u4e0a\u7684\u667a\u80fd\u5408\u7ea6\uff0c\u80fd\u76f4\u63a5\u8fd0\u884c\u5230TVM\u4e0a\uff0c\u65e0\u7f1d\u5bf9\u63a5\u73b0\u6709\u7684\u5f00\u53d1\u8005\u751f\u6001\uff0c\u63d0\u9ad8\u5f00\u53d1\u8005\u7684\u5f00\u53d1\u6548\u7387\u3002\u5f00\u53d1\u8005\u65e0\u9700\u5b66\u4e60\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5c31\u80fd\u7528Solidity \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\u5728\u719f\u6089\u7684Remix\u73af\u5883\u4e2d\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u3001\u7f16\u8bd1\uff0c\u5c06\u6781\u5927\u7f29\u51cf\u5f00\u53d1\u6210\u672c\u3002 \u5f00\u53d1\u4eba\u5458\u53cb\u597d\u6027 TVM\u7684\u5e26\u5bbd\u6d88\u8017\u6a21\u5f0f\u51cf\u5c11\u4e86\u5408\u7ea6\u7684\u5f00\u53d1\u6210\u672c\u3002\u8ba9\u5f00\u53d1\u8005\u53ef\u4ee5\u628a\u66f4\u591a\u7cbe\u529b\u653e\u5728\u5408\u7ea6\u4ee3\u7801\u7684\u903b\u8f91\u672c\u8eab\u3002\u540c\u65f6\uff0cTVM\u63d0\u4f9b\u4e86\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u4e00\u7ad9\u5f0f\u7684\u90e8\u7f72\u3001\u89e6\u53d1\u3001\u67e5\u770b\u667a\u80fd\u5408\u7ea6\u7684\u63a5\u53e3\u3002 Tron Wallet-CLI\u4e2d\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u5bf9\u63a5\u63a5\u53e3\uff0c deploycontract(password, contractAddress, ABI, code, data, value) triggercontract(password, contractAddress, selector, data, value) getcontract(contractAddress) \u5f00\u53d1\u4eba\u5458\u53ef\u76f4\u63a5\u8c03\u7528\uff0c\u5b8c\u6210\u5bf9\u667a\u80fd\u5408\u7ea6\u7684\u90e8\u7f72\uff0c\u89e6\u53d1\uff0c\u67e5\u770b\u3002 TVM\u7684\u8fd0\u884c\u8fc7\u7a0b \u00b6 \u8fd9\u5f20\u56fe\u6574\u4f53\u63cf\u8ff0\u4e86Tron Virtual Machine\u7684\u5de5\u4f5c\u6d41\u7a0b\uff1a Tron\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u8bd1 ---> \u865a\u62df\u673a\u7684\u6267\u884c\u3001\u8ba1\u7b97\u5f15\u64ce ---->\u865a\u62df\u673a\u5bf9\u5916\u7684\u4e92\u64cd\u4f5c\u5c42 \u7b80\u5355\u6765\u8bf4\uff0c\u4e0a\u9762\u7684\u6d41\u7a0b\u4f9d\u6b21\u662f\uff1a \u76ee\u524dTron\u865a\u62df\u673a\u4e3b\u8981\u517c\u5bb9Solidity\u3002\u7f16\u8bd1\u5668\u5c06Solidity\u667a\u80fd\u5408\u7ea6\u7ffb\u8bd1\u6210TVM\u53ef\u4ee5\u8bc6\u522b\u5e76\u6267\u884c\u7684\u5b57\u8282\u7801\u3002 \u5728\u865a\u62df\u673a\u4e2d\uff0c\u901a\u8fc7\u4e00\u6761\u6761\u7684\u64cd\u4f5c\u6307\u4ee4\u7801\u5b9e\u73b0\u5bf9\u865a\u62df\u673a\u6808\u4e2d\u6570\u636e\u7684\u64cd\u4f5c\u5904\u7406\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u76f8\u5f53\u4e8e\u5b9e\u73b0\u5bf9\u4e00\u4e2a\u57fa\u4e8e\u5806\u6808\u7684\u6709\u9650\u72b6\u6001\u673a\u7684\u903b\u8f91\u5904\u7406\u3002 \u865a\u62df\u673a\u901a\u8fc7\u4e92\u64cd\u4f5c\u6a21\u5757\u5b9e\u73b0\u5bf9\u533a\u5757\u94fe\u6570\u636e\u7684\u8bbf\u95ee\uff0c\u4ee5\u53ca\u5bf9\u5916\u90e8\u6570\u636e\u7684\u63a5\u53e3\u5c42\u7684\u8c03\u7528\u3002 TVM\u7684\u53d1\u5c55\u65b9\u5411 \u00b6 \u6784\u5efa\u66f4\u52a0\u53cb\u597d\u7684\u8c03\u8bd5\u5de5\u5177 Tron\u56e2\u961f\u5c06\u52aa\u529b\u6784\u5efa\u5b8c\u5584\u7684\u8c03\u8bd5\u5de5\u5177\uff0c\u5efa\u7acb\u7528\u4e8e\u8c03\u8bd5\u7684\u6807\u51c6\u7b26\u53f7\u683c\u5f0f\u6216\u662f\u6570\u636e\u683c\u5f0f\u3002\u63d0\u5347\u5f00\u53d1\u8005\u5728TVM\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u6548\u7387\u3002 \u6ee1\u8db3\u66f4\u52a0\u591a\u6837\u5316\u7684\u4efb\u52a1\u5904\u7406\u9700\u6c42 \u548c\u4ee5\u592a\u574a\u4e0a\u6bcf\u4e2a\u64cd\u4f5c\u6d88\u8017gas\u4e0d\u540c\uff0c Tron\u865a\u62df\u673a\u5bf9\u4e1a\u52a1\u7684\u5904\u7406\u5e76\u4e0d\u6536\u8d39 \uff0c\u6bcf\u4e2a\u64cd\u4f5c\u53ea\u662f\u5148\u5360\u636e\u5e26\u5bbd\uff0c\u5e76\u4e14\u5728\u4ea4\u6613\u540e\u7684\u4e00\u6bb5\u65f6\u95f4\u540e\u91ca\u653e\u3002\u5f00\u53d1\u8005\u4eec\u53ea\u7528\u76f8\u5f53\u5c0f\u7684\u6210\u672c \u4fbf\u53ef\u8bbe\u8ba1\u66f4\u52a0\u590d\u6742\u903b\u8f91\u7684\u667a\u80fd\u5408\u7ea6\u3002\u6211\u4eec\u6df1\u4fe1\uff0c\u9664\u4e86\u6570\u5b57\u8d27\u5e01\u4ea4\u6613\u7684\u5e94\u7528\u573a\u666f\u5916\uff0c\u672a\u6765\u7684\u667a\u80fd\u5408\u7ea6\u4e5f\u80fd\u5728\u6e38\u620f\u5f00\u53d1\uff0c\u91d1\u878d\u5e02\u573a\u98ce\u9669\u5efa\u6a21\uff0c\u79d1\u5b66\u8ba1\u7b97\u7b49\u9886\u57df\u53d1\u6325\u91cd\u8981\u4f5c\u7528\u3002Tron\u865a\u62df\u673a\u7684\u8bbe\u8ba1\u5177\u6709\u5148\u5929\u7684\u6ee1\u8db3\u591a\u6837\u5316\u4efb\u52a1\u573a\u666f\u7684\u80fd\u529b\uff0c\u5e76\u4e14\u5728\u5bf9\u5904\u7406\u901f\u5ea6\uff0c\u54cd\u5e94\u65f6\u95f4\uff0c\u5bf9\u6d6e\u70b9\u6570\u7684\u652f\u6301\u4e0a\u4f5c\u8fdb\u4e00\u6b65\u7684\u4f18\u5316\u3002 \u589e\u52a0\u5373\u65f6\u7f16\u8bd1\u901f\u5ea6\u3001\u6574\u5408WebAssembly\u3002 \u589e\u52a0\u5373\u65f6\u7f16\u8bd1\u7684\u901f\u5ea6\u80fd\u591f\u5bf9\u672c\u5730\u4ee3\u7801\u8fdb\u884c\u66f4\u4f18\u5316\u5730\u7f16\u8bd1\uff0c\u66f4\u5feb\u901f\u5730\u89e3\u8bfb\u8fd0\u884c\u4ee3\u7801\u3002 \u540c\u65f6\uff0cTron\u5c06\u8003\u8651\u57fa\u4e8eWebAssembly\uff08\u7b80\u79f0WASM\uff09\u8fdb\u4e00\u6b65\u4f18\u5316TVM\u865a\u62df\u673a\u3002WebAssembly \u76ee\u524d\u7531 Apple\u3001Google\u3001 Microsoft\u548cMozilla\u7275\u5934\uff0c\u4e3a\u7a81\u7834Web\u6d4f\u89c8\u5668\u6027\u80fd\u74f6\u9888\u800c\u8bbe\u8ba1\uff0c\u5e76\u53ef\u7531 C/C++ \u7b49\u8bed\u8a00\u7f16\u8bd1\u4ea7\u751f\u3002WebAssembly\u5e94\u7528\u5728\u533a\u5757\u94fe\u573a\u666f\u4e0a\uff0c\u53ef\u4ee5\u63d0\u9ad8\u57fa\u4e8eWeb\u7684DApp\u7684\u6027\u80fd\u3002\u5b9e\u73b0\u6574\u5408\u4e86WASM\u7684TVM\uff0c\u5c06\u4f1a\u6ee1\u8db3\u672a\u6765\u590d\u6742\u4e1a\u52a1\u573a\u666f\u5bf9\u63a5\u533a\u5757\u94fe\u5e94\u7528\u7684\u9ad8\u6027\u80fd\u3001\u9ad8\u541e\u5410\u91cf\u8981\u6c42\u3002","title":"Tron\u865a\u62df\u673aTVM"},{"location":"contracts/tvm/#trontvm","text":"\u6ce2\u573a\u865a\u62df\u673a\uff08Tron Virtual Machine\uff0c \u7b80\u79f0TVM\uff09\uff0c\u662fTron\u56e2\u961f\u4e3a\u4e86\u6ee1\u8db3\u81ea\u8eab\u751f\u6001\u53d1\u5c55\u7684\u9700\u6c42\uff0c\u5f00\u53d1\u51fa\u7684\u8f7b\u91cf\u7ea7\u67b6\u6784\u3001\u56fe\u7075\u5b8c\u5907\u7684\u865a\u62df\u673a\uff0c \u65e8\u5728\u4e3a\u5168\u7403\u767e\u4e07\u7ea7\u7684\u5f00\u53d1\u8005\u63d0\u4f9b\u4e00\u4e2a\u9ad8\u6548\u3001\u7b80\u5355\u3001\u7a33\u5b9a\u3001\u5b89\u5168\u3001\u4e14\u5bb9\u6613\u4f18\u5316\u7684\u533a\u5757\u94fe\u4e13\u7528\u7cfb\u7edf\u3002 TVM\u80fd\u65e0\u7f1d\u5bf9\u63a5\u73b0\u6709\u7684\u5f00\u53d1\u8005\u751f\u6001\uff0c\u5e76\u4e14\u80fd\u6ee1\u8db3DPOS\u5171\u8bc6\u673a\u5236\u7684\u8981\u6c42\u3002TVM\u524d\u671f\u517c\u5bb9\u4ee5\u592a\u574a\u865a\u62df\u673a\u73af\u5883\u3002\u5f00\u53d1\u8005\u65e0\u9700\u5b66\u4e60\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5c31\u80fd\u7528 Solidity \u7b49\u7f16\u7a0b\u8bed\u8a00\u5728\u719f\u6089\u7684 Remix \u73af\u5883\u4e2d\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u3001\u7f16\u8bd1\u3002Tron\u667a\u80fd\u5408\u7ea6\u7f16\u5199\u5b8c\u6bd5\u540e\uff0c\u4e0a\u4f20\u5230Tron\u4e3b\u7f51\u5f53\u4e2d\uff0c\u5728\u8d85\u7ea7\u4ee3\u8868\u8282\u70b9\u7684TVM\u865a\u62df\u673a\u6267\u884c\uff0c\u540c\u65f6\u4fdd\u6301\u4e86\u5bf9\u865a\u62df\u673a\u5916\u7cfb\u7edf\u73af\u5883\u7684\u9694\u79bb\u6027\u3002 \u6b64\u5916\uff0cTVM \u5f15\u8fdb\u4e86\u5e26\u5bbd\u7684\u6982\u5ff5\u3002\u4e0d\u540c\u4e8e\u4ee5\u592a\u574aEVM\u7684gas\u6d88\u8017\u6a21\u5f0f\uff0cTron\u7cfb\u7edf\u4e2d\u7684\u8f6c\u8d26\u548c\u667a\u80fd\u5408\u7ea6\u7684\u64cd\u4f5c\u662f\u514d\u8d39\u7684\uff0c\u4e0d\u9700\u8981\u6d88\u8017\u4efb\u4f55\u4ee3\u5e01\uff0c\u6240\u4ee5\u539f\u5219\u4e0a\u5728TVM\u4e2d\u53ef\u6267\u884c\u7684\u8ba1\u7b97\u603b\u91cf\u4e0d\u53d7\u4ee3\u5e01\u603b\u91cf\u9650\u5236\u3002","title":"Tron\u865a\u62df\u673aTVM"},{"location":"contracts/tvm/#tvm","text":"\u8f7b\u91cf\u7ea7 TVM\u91c7\u7528\u8f7b\u91cf\u7ea7\u7684\u865a\u62df\u673a\u6784\u67b6\uff0c\u65e8\u5728\u8282\u7701\u8fd0\u884c\u7a7a\u95f4\uff0c\u51cf\u5c11\u8d44\u6e90\u8017\u8d39\u53ca\u4fdd\u8bc1\u7cfb\u7edf\u6027\u80fd\u3002 \u7a33\u5b9a\u3001\u5b89\u5168\u6027 TVM\u91c7\u7528\u4e86\u4e25\u8c28\u7684\u8bbe\u8ba1\u89c4\u8303\uff0c\u4f4e\u7c92\u5ea6\u7684\u5e95\u5c42\u64cd\u4f5c\u7801\uff0c\u4fdd\u8bc1\u4e86\u6bcf\u4e2a\u8ba1\u7b97\u6b65\u9aa4\u7684\u7cbe\u786e\u6027\uff0c\u6700\u5927\u7a0b\u5ea6\u6d88\u9664\u4ea7\u751f\u6b67\u4e49\u7684\u7a7a\u95f4\u3002 \u540c\u65f6\u51fa\u4e8e\u5b89\u5168\u6027\u7684\u8003\u91cf\uff0cTVM\u7684\u8f6c\u8d26\u4e0e\u8fd0\u884c\u5408\u7ea6\u5747\u4e0d\u9700\u8981\u6d88\u8017\u4ee3\u5e01\uff0c\u53ea\u4f1a\u6d88\u8017\u5e26\u5bbd\uff0c\u907f\u514d\u4e86\u9488\u5bf9\u7c7b\u4f3c\u4ee5\u592a\u574agas\u6d88\u8017\u6a21\u5f0f\u7684\u653b\u51fb\u3002\u5728\u4fdd\u8bc1\u4e86\u6bcf\u4e2a\u64cd\u4f5c\u8ba1\u7b97\u6b65\u9aa4\u7684\u786e\u5b9a\u6027\u7684\u540c\u65f6\uff0c\u4e5f\u4fdd\u8bc1\u4e86\u5e26\u5bbd\u6d88\u8017\u7684\u7a33\u5b9a\u6027\u3002 \u517c\u5bb9\u6027 \u76ee\u524d\uff0cTVM\u80fd\u5b8c\u7f8e\u517c\u5bb9\u4ee5\u592a\u574aEVM\uff0c\u5e76\u5728\u672a\u6765\u517c\u5bb9\u66f4\u591a\u4e3b\u6d41\u7684VM\u3002\u56e0\u6b64, \u4ee5\u592a\u574a\u4e0a\u7684\u667a\u80fd\u5408\u7ea6\uff0c\u80fd\u76f4\u63a5\u8fd0\u884c\u5230TVM\u4e0a\uff0c\u65e0\u7f1d\u5bf9\u63a5\u73b0\u6709\u7684\u5f00\u53d1\u8005\u751f\u6001\uff0c\u63d0\u9ad8\u5f00\u53d1\u8005\u7684\u5f00\u53d1\u6548\u7387\u3002\u5f00\u53d1\u8005\u65e0\u9700\u5b66\u4e60\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5c31\u80fd\u7528Solidity \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\u5728\u719f\u6089\u7684Remix\u73af\u5883\u4e2d\u8fdb\u884c\u667a\u80fd\u5408\u7ea6\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u3001\u7f16\u8bd1\uff0c\u5c06\u6781\u5927\u7f29\u51cf\u5f00\u53d1\u6210\u672c\u3002 \u5f00\u53d1\u4eba\u5458\u53cb\u597d\u6027 TVM\u7684\u5e26\u5bbd\u6d88\u8017\u6a21\u5f0f\u51cf\u5c11\u4e86\u5408\u7ea6\u7684\u5f00\u53d1\u6210\u672c\u3002\u8ba9\u5f00\u53d1\u8005\u53ef\u4ee5\u628a\u66f4\u591a\u7cbe\u529b\u653e\u5728\u5408\u7ea6\u4ee3\u7801\u7684\u903b\u8f91\u672c\u8eab\u3002\u540c\u65f6\uff0cTVM\u63d0\u4f9b\u4e86\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u4e00\u7ad9\u5f0f\u7684\u90e8\u7f72\u3001\u89e6\u53d1\u3001\u67e5\u770b\u667a\u80fd\u5408\u7ea6\u7684\u63a5\u53e3\u3002 Tron Wallet-CLI\u4e2d\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u5bf9\u63a5\u63a5\u53e3\uff0c deploycontract(password, contractAddress, ABI, code, data, value) triggercontract(password, contractAddress, selector, data, value) getcontract(contractAddress) \u5f00\u53d1\u4eba\u5458\u53ef\u76f4\u63a5\u8c03\u7528\uff0c\u5b8c\u6210\u5bf9\u667a\u80fd\u5408\u7ea6\u7684\u90e8\u7f72\uff0c\u89e6\u53d1\uff0c\u67e5\u770b\u3002","title":"TVM\u8bbe\u8ba1\u539f\u5219"},{"location":"contracts/tvm/#tvm_1","text":"\u8fd9\u5f20\u56fe\u6574\u4f53\u63cf\u8ff0\u4e86Tron Virtual Machine\u7684\u5de5\u4f5c\u6d41\u7a0b\uff1a Tron\u667a\u80fd\u5408\u7ea6\u7684\u7f16\u8bd1 ---> \u865a\u62df\u673a\u7684\u6267\u884c\u3001\u8ba1\u7b97\u5f15\u64ce ---->\u865a\u62df\u673a\u5bf9\u5916\u7684\u4e92\u64cd\u4f5c\u5c42 \u7b80\u5355\u6765\u8bf4\uff0c\u4e0a\u9762\u7684\u6d41\u7a0b\u4f9d\u6b21\u662f\uff1a \u76ee\u524dTron\u865a\u62df\u673a\u4e3b\u8981\u517c\u5bb9Solidity\u3002\u7f16\u8bd1\u5668\u5c06Solidity\u667a\u80fd\u5408\u7ea6\u7ffb\u8bd1\u6210TVM\u53ef\u4ee5\u8bc6\u522b\u5e76\u6267\u884c\u7684\u5b57\u8282\u7801\u3002 \u5728\u865a\u62df\u673a\u4e2d\uff0c\u901a\u8fc7\u4e00\u6761\u6761\u7684\u64cd\u4f5c\u6307\u4ee4\u7801\u5b9e\u73b0\u5bf9\u865a\u62df\u673a\u6808\u4e2d\u6570\u636e\u7684\u64cd\u4f5c\u5904\u7406\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u76f8\u5f53\u4e8e\u5b9e\u73b0\u5bf9\u4e00\u4e2a\u57fa\u4e8e\u5806\u6808\u7684\u6709\u9650\u72b6\u6001\u673a\u7684\u903b\u8f91\u5904\u7406\u3002 \u865a\u62df\u673a\u901a\u8fc7\u4e92\u64cd\u4f5c\u6a21\u5757\u5b9e\u73b0\u5bf9\u533a\u5757\u94fe\u6570\u636e\u7684\u8bbf\u95ee\uff0c\u4ee5\u53ca\u5bf9\u5916\u90e8\u6570\u636e\u7684\u63a5\u53e3\u5c42\u7684\u8c03\u7528\u3002","title":"TVM\u7684\u8fd0\u884c\u8fc7\u7a0b"},{"location":"contracts/tvm/#tvm_2","text":"\u6784\u5efa\u66f4\u52a0\u53cb\u597d\u7684\u8c03\u8bd5\u5de5\u5177 Tron\u56e2\u961f\u5c06\u52aa\u529b\u6784\u5efa\u5b8c\u5584\u7684\u8c03\u8bd5\u5de5\u5177\uff0c\u5efa\u7acb\u7528\u4e8e\u8c03\u8bd5\u7684\u6807\u51c6\u7b26\u53f7\u683c\u5f0f\u6216\u662f\u6570\u636e\u683c\u5f0f\u3002\u63d0\u5347\u5f00\u53d1\u8005\u5728TVM\u7684\u5f00\u53d1\u3001\u8c03\u8bd5\u6548\u7387\u3002 \u6ee1\u8db3\u66f4\u52a0\u591a\u6837\u5316\u7684\u4efb\u52a1\u5904\u7406\u9700\u6c42 \u548c\u4ee5\u592a\u574a\u4e0a\u6bcf\u4e2a\u64cd\u4f5c\u6d88\u8017gas\u4e0d\u540c\uff0c Tron\u865a\u62df\u673a\u5bf9\u4e1a\u52a1\u7684\u5904\u7406\u5e76\u4e0d\u6536\u8d39 \uff0c\u6bcf\u4e2a\u64cd\u4f5c\u53ea\u662f\u5148\u5360\u636e\u5e26\u5bbd\uff0c\u5e76\u4e14\u5728\u4ea4\u6613\u540e\u7684\u4e00\u6bb5\u65f6\u95f4\u540e\u91ca\u653e\u3002\u5f00\u53d1\u8005\u4eec\u53ea\u7528\u76f8\u5f53\u5c0f\u7684\u6210\u672c \u4fbf\u53ef\u8bbe\u8ba1\u66f4\u52a0\u590d\u6742\u903b\u8f91\u7684\u667a\u80fd\u5408\u7ea6\u3002\u6211\u4eec\u6df1\u4fe1\uff0c\u9664\u4e86\u6570\u5b57\u8d27\u5e01\u4ea4\u6613\u7684\u5e94\u7528\u573a\u666f\u5916\uff0c\u672a\u6765\u7684\u667a\u80fd\u5408\u7ea6\u4e5f\u80fd\u5728\u6e38\u620f\u5f00\u53d1\uff0c\u91d1\u878d\u5e02\u573a\u98ce\u9669\u5efa\u6a21\uff0c\u79d1\u5b66\u8ba1\u7b97\u7b49\u9886\u57df\u53d1\u6325\u91cd\u8981\u4f5c\u7528\u3002Tron\u865a\u62df\u673a\u7684\u8bbe\u8ba1\u5177\u6709\u5148\u5929\u7684\u6ee1\u8db3\u591a\u6837\u5316\u4efb\u52a1\u573a\u666f\u7684\u80fd\u529b\uff0c\u5e76\u4e14\u5728\u5bf9\u5904\u7406\u901f\u5ea6\uff0c\u54cd\u5e94\u65f6\u95f4\uff0c\u5bf9\u6d6e\u70b9\u6570\u7684\u652f\u6301\u4e0a\u4f5c\u8fdb\u4e00\u6b65\u7684\u4f18\u5316\u3002 \u589e\u52a0\u5373\u65f6\u7f16\u8bd1\u901f\u5ea6\u3001\u6574\u5408WebAssembly\u3002 \u589e\u52a0\u5373\u65f6\u7f16\u8bd1\u7684\u901f\u5ea6\u80fd\u591f\u5bf9\u672c\u5730\u4ee3\u7801\u8fdb\u884c\u66f4\u4f18\u5316\u5730\u7f16\u8bd1\uff0c\u66f4\u5feb\u901f\u5730\u89e3\u8bfb\u8fd0\u884c\u4ee3\u7801\u3002 \u540c\u65f6\uff0cTron\u5c06\u8003\u8651\u57fa\u4e8eWebAssembly\uff08\u7b80\u79f0WASM\uff09\u8fdb\u4e00\u6b65\u4f18\u5316TVM\u865a\u62df\u673a\u3002WebAssembly \u76ee\u524d\u7531 Apple\u3001Google\u3001 Microsoft\u548cMozilla\u7275\u5934\uff0c\u4e3a\u7a81\u7834Web\u6d4f\u89c8\u5668\u6027\u80fd\u74f6\u9888\u800c\u8bbe\u8ba1\uff0c\u5e76\u53ef\u7531 C/C++ \u7b49\u8bed\u8a00\u7f16\u8bd1\u4ea7\u751f\u3002WebAssembly\u5e94\u7528\u5728\u533a\u5757\u94fe\u573a\u666f\u4e0a\uff0c\u53ef\u4ee5\u63d0\u9ad8\u57fa\u4e8eWeb\u7684DApp\u7684\u6027\u80fd\u3002\u5b9e\u73b0\u6574\u5408\u4e86WASM\u7684TVM\uff0c\u5c06\u4f1a\u6ee1\u8db3\u672a\u6765\u590d\u6742\u4e1a\u52a1\u573a\u666f\u5bf9\u63a5\u533a\u5757\u94fe\u5e94\u7528\u7684\u9ad8\u6027\u80fd\u3001\u9ad8\u541e\u5410\u91cf\u8981\u6c42\u3002","title":"TVM\u7684\u53d1\u5c55\u65b9\u5411"},{"location":"developers/advanced-configuration/","text":"Advanced Configurations \u00b6 we provide some configuration items for LevelDB and gRPC in config.conf file, for fine-grained performance tuning. You may custom these items only if you have deep understanding on them, otherwise keep them as default. LevelDB \u00b6 You can custom LevelDB options in the storage part of config.conf , which looks like: storage { # Directory for storing persistent data db.directory = \"database\", index.directory = \"index\", # You can custom these 14 databases' configs: # account, account-index, asset-issue, block, block-index, # block_KDB, peers, properties, recent-block, trans, # utxo, votes, witness, witness_schedule. # Otherwise, db configs will remain defualt and data will be stored in # the path of \"output-directory\" or which is set by \"-d\" (\"--output-directory\"). # Attention: name is a required field that must be set !!! properties = [ { name = \"account\", path = \"/path/to/accout\", // relative or absolute path createIfMissing = true, paranoidChecks = true, verifyChecksums = true, compressionType = 1, // 0 - no compression, 1 - compressed with snappy blockSize = 4096, // 4 KB = 4 * 1024 B writeBufferSize = 10485760, // 10 MB = 10 * 1024 * 1024 B cacheSize = 10485760, // 10 MB = 10 * 1024 * 1024 B maxOpenFiles = 100 } ] } As shown in the example above, the data of database accout will be stored in the path of /path/to/accout/database while the index be stored in /path/to/accout/index . And, the example also shows our default value of LevelDB options from createIfMissing to maxOpenFiles . You can just refer to the docs of LevelDB to figure out details of these options. gRPC \u00b6 You can custom gPRC options in the node.rpc part of config.conf , which looks like: node { rpc { port = 50051 # Number of gRPC thread, default availableProcessors / 2 # thread = 16 # The maximum number of concurrent calls permitted for each incoming connection # maxConcurrentCallsPerConnection = # The HTTP/2 flow control window, default 1MB # flowControlWindow = # Connection being idle for longer than which will be gracefully terminated maxConnectionIdleInMillis = 60000 # Connection lasting longer than which will be gracefully terminated # maxConnectionAgeInMillis = # The maximum message size allowed to be received on the server, default 4MB # maxMessageSize = # The maximum size of header list allowed to be received, default 8192 # maxHeaderListSize = } } backup \u00b6 You can custom backup options in the node.backup part of config.conf , which looks like: node.backup { # my priority, each member should use different priority priority = # members should use same port port = # peer's ip list, can't contain mine members = [] } policy: the one which synchronized first will become master. if synchronization is completed at the same time, the one which with big priority will become master. E.g. create backups for node A(192.168.0.100) and node B(192.168.0.100 ): node A's configuration: node.backup { priority = 8 port = 10001 members = [ \"192.168.0.101\" ] } node B's configuration: node.backup { priority = 5 port = 10001 members = [ \"192.168.0.100\" ] } You may refer to the source code of io.grpc.netty.NettyServerBuilder class to see details or just make a decision according to the brief comments above.","title":"Advanced Configurations"},{"location":"developers/advanced-configuration/#advanced-configurations","text":"we provide some configuration items for LevelDB and gRPC in config.conf file, for fine-grained performance tuning. You may custom these items only if you have deep understanding on them, otherwise keep them as default.","title":"Advanced Configurations"},{"location":"developers/advanced-configuration/#leveldb","text":"You can custom LevelDB options in the storage part of config.conf , which looks like: storage { # Directory for storing persistent data db.directory = \"database\", index.directory = \"index\", # You can custom these 14 databases' configs: # account, account-index, asset-issue, block, block-index, # block_KDB, peers, properties, recent-block, trans, # utxo, votes, witness, witness_schedule. # Otherwise, db configs will remain defualt and data will be stored in # the path of \"output-directory\" or which is set by \"-d\" (\"--output-directory\"). # Attention: name is a required field that must be set !!! properties = [ { name = \"account\", path = \"/path/to/accout\", // relative or absolute path createIfMissing = true, paranoidChecks = true, verifyChecksums = true, compressionType = 1, // 0 - no compression, 1 - compressed with snappy blockSize = 4096, // 4 KB = 4 * 1024 B writeBufferSize = 10485760, // 10 MB = 10 * 1024 * 1024 B cacheSize = 10485760, // 10 MB = 10 * 1024 * 1024 B maxOpenFiles = 100 } ] } As shown in the example above, the data of database accout will be stored in the path of /path/to/accout/database while the index be stored in /path/to/accout/index . And, the example also shows our default value of LevelDB options from createIfMissing to maxOpenFiles . You can just refer to the docs of LevelDB to figure out details of these options.","title":"LevelDB"},{"location":"developers/advanced-configuration/#grpc","text":"You can custom gPRC options in the node.rpc part of config.conf , which looks like: node { rpc { port = 50051 # Number of gRPC thread, default availableProcessors / 2 # thread = 16 # The maximum number of concurrent calls permitted for each incoming connection # maxConcurrentCallsPerConnection = # The HTTP/2 flow control window, default 1MB # flowControlWindow = # Connection being idle for longer than which will be gracefully terminated maxConnectionIdleInMillis = 60000 # Connection lasting longer than which will be gracefully terminated # maxConnectionAgeInMillis = # The maximum message size allowed to be received on the server, default 4MB # maxMessageSize = # The maximum size of header list allowed to be received, default 8192 # maxHeaderListSize = } }","title":"gRPC"},{"location":"developers/advanced-configuration/#backup","text":"You can custom backup options in the node.backup part of config.conf , which looks like: node.backup { # my priority, each member should use different priority priority = # members should use same port port = # peer's ip list, can't contain mine members = [] } policy: the one which synchronized first will become master. if synchronization is completed at the same time, the one which with big priority will become master. E.g. create backups for node A(192.168.0.100) and node B(192.168.0.100 ): node A's configuration: node.backup { priority = 8 port = 10001 members = [ \"192.168.0.101\" ] } node B's configuration: node.backup { priority = 5 port = 10001 members = [ \"192.168.0.100\" ] } You may refer to the source code of io.grpc.netty.NettyServerBuilder class to see details or just make a decision according to the brief comments above.","title":"backup"},{"location":"developers/archive-manifest/","text":"levelDB \u542f\u52a8\u4f18\u5316\u63d2\u4ef6 \u00b6 \u4ecb\u7ecd \u00b6 \u968f\u7740levelDB\u7684\u8fd0\u884c\uff0cmanifest\u6587\u4ef6\u4f1a\u6301\u7eed\u589e\u957f\uff0c\u8fc7\u5927\u7684manifest\u6587\u4ef6\u4e0d\u4f46\u5f71\u54cd\u8282\u70b9\u542f\u52a8\u901f\u5ea6\uff0c\u800c\u4e14\u8fd8\u6709\u53ef\u80fd\u4f1a\u5bfc\u81f4\u5185\u5b58\u6301\u7eed\u589e\u957f\u7cfb\u7edf\u9000\u51fa\u7684\u95ee\u9898\u3002 \u4e3a\u6b64\u5728 GreatVoyage-v4.3.0(Bacon) \u5f15\u5165\u4e86leveldb \u542f\u52a8\u4f18\u5316\u63d2\u4ef6\uff0c\u63d2\u4ef6\u4f18\u5316\u4e86manifest\u7684\u6587\u4ef6\u5927\u5c0f\u4ee5\u53caLevelDB\u7684\u542f\u52a8\u8fc7\u7a0b\uff0c\u51cf\u5c11\u4e86\u5185\u5b58\u5360\u7528\uff0c\u63d0\u5347\u4e86\u8282\u70b9\u542f\u52a8\u901f\u5ea6\u3002 \u4f7f\u7528\u672c\u5de5\u5177\u8fdb\u884c\u4efb\u4f55\u64cd\u4f5c\u4e4b\u524d\uff0c\u9700\u8981\u9996\u5148\u505c\u6b62\u5f53\u524d\u8fd0\u884c\u7684FullNode\u8282\u70b9\u3002 \u6b64\u5de5\u5177\u63d0\u4f9b\u4e86\u6839\u636e\u5f53\u524d \u6570\u636e\u5e93 (database)\u60c5\u51b5,\u5bf9 manifest \u8fdb\u884c\u91cd\u65b0\u5f52\u6574\u7684\u529f\u80fd\u3002 \u66f4\u591a\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u8bf7\u53c2\u8003: TIP298 \u3002 \u4f7f\u7528 \u00b6 \u63d2\u4ef6\u9009\u9879 \u00b6 \u6b64\u5de5\u5177\u63d0\u4f9b\u4e86\u5f52\u6574manifest \u529f\u80fd -b | --batch-size : [ int ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9a \u4f18\u5316 manifest\u65f6\u4e00\u6b21\u6279\u5904\u7406\u5927\u5c0f,\u9ed8\u8ba4\u503c\uff1a80000\u3002 -d | --database-directory : [ string ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9aFullNode\u6570\u636e\u5e93\u7236\u7ea7\u76ee\u5f55,\u9ed8\u8ba4\u503c\uff1aoutput-directory/database\u3002 -m | --manifest-size : [ int ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9a\u6700\u5c0f\u9700\u8981\u6279\u5904\u7406manifest \u6587\u4ef6\u5927\u5c0f\u4f4e\u4e8e\u6b64\u503c\uff0c\u4e0d\u8fdb\u884c\u5904\u7406\uff0c\u5355\u4f4dM\uff0c\u9ed8\u8ba4\u503c\uff1a0\u3002 -h | --help : [ bool ] \u6b64\u9009\u9879\u7528\u4e8e\u67e5\u770b\u5e2e\u52a9\uff0c\u9ed8\u8ba4\u503c\uff1afalse\u3002 \u83b7\u53d6\u65b9\u5f0f \u00b6 \u901a\u8fc7\u7f16\u8bd1 \u5728java-tron \u4e0b\uff0c\u6267\u884c ./gradlew build \uff0c\u5728 build/libs/ \u4e0b\u53ef\u627e\u5230Toolkit.jar\u3002 \u76f4\u63a5\u4e0b\u8f7d \u4e0b\u8f7d\u94fe\u63a5 \u4f7f\u7528\u6b65\u9aa4 \u00b6 \u505c\u6b62FullNode \u670d\u52a1\u3002 \u6267\u884c\u547d\u4ee4 \u542f\u52a8 FullNode \u670d\u52a1\u3002 \u4f7f\u7528\u8bf4\u660e \u00b6 FullNode \u8fd0\u884c\u4e4b\u540e\uff0c\u9ed8\u8ba4\u6570\u636e\u5e93\u76ee\u5f55\uff1a output-directory \uff0c\u4f18\u5316\u63d2\u4ef6\u4f1a\u5904\u7406 output-directory/database \u76ee\u5f55\u3002 \u4ee5\u4e0b\u201c\u5355\u72ec\u4f7f\u7528\u201d \u548c \u201c\u96c6\u6210\u542f\u52a8\u811a\u672c\u201d \u8fd9\u4e24\u79cd\u4f7f\u7528\u65b9\u5f0f\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u60c5\u51b5 \u4efb\u9009\u4e00\u79cd\u5373\u53ef\u3002 1. \u5355\u72ec\u4f7f\u7528 \u00b6 \u6b65\u9aa4\u4e00\uff1a \u505c\u6b62FullNode \u670d\u52a1 \u00b6 \u4f7f\u7528\u547d\u4ee4 kill -15 \u5173\u95edFullNode.jar \u67e5\u627e pid: ps -ef |grep FullNode.jar |grep -v grep |awk '{print $2}' \u3002 \u6b65\u9aa4\u4e8c\uff1a \u6267\u884c\u547d\u4ee4 \u00b6 #\u5b8c\u6574\u547d\u4ee4 java -jar Toolkit.jar -b batchSize -d databaseDirectory -m manifestSize #\u793a\u4f8b #1. \u4f7f\u7528\u9ed8\u8ba4\u53c2\u6570 java -jar Toolkit.jar #2. \u6307\u5b9a\u6570\u636e\u5e93\u76ee\u5f55\u4e3a/tmp/db/database java -jar Toolkit.jar -d /tmp/db/database #3. \u6307\u5b9a\u4f18\u5316Manifest\u65f6\uff0c\u5e94\u7528version\u65f6\u6279\u5904\u7406\u5927\u5c0f\u4e3a64000 java -jar Toolkit.jar -b 64000 #4. \u6307\u5b9a\u5f53Manifest\u8d85\u8fc7128M\u65f6\uff0c\u624d\u8fdb\u884c\u4f18\u5316\u5904\u7406 java -jar Toolkit.jar -m 128 \u547d\u4ee4\u6267\u884c\u5b8c\u6bd5\u4e4b\u540e\uff0c\u5c06\u5728 ./logs \u76ee\u5f55\u4e0b\u751f\u6210 archive.log \u65e5\u5fd7, \u53ef\u67e5\u770b\u6b64\u6b21\u5f52\u6574\u60c5\u51b5 Note: \u6267\u884c\u5b8c\u6210\u540e\uff0c\u5982\u679c\u6210\u529f \u65e5\u5fd7\u4f1a\u663e\u793a\u5982\u4e0b\u7c7b\u4f3c\u5185\u5bb9\uff0c\u8fd0\u884c\u4e00\u822c\u5728120s\u5185\uff0c\u89c6FullNode\u670d\u52a1\u6301\u7eed\u8fd0\u884c\u65f6\u957f\u51b3\u5b9a\uff0c\u5931\u8d25\u4f1a\u6709\u76f8\u5e94\u7684\u9519\u8bef\u4fe1\u606f [main] [archive](ArchiveManifest.java:144) DatabaseDirectory:output-directory/database, maxManifestSize:0, maxBatchSize:80000,database reopen use 80 seconds total. \u6b65\u9aa4\u4e09\uff1a\u542f\u52a8 FullNode \u670d\u52a1 \u00b6 #FullNode nohup java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c main_net_config.conf /dev/null & #SR Node nohup java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -p private key --witness -c main_net_config.conf /dev/null & 2. \u96c6\u6210\u542f\u52a8\u811a\u672c \u00b6 \u4e5f\u53ef\u4ee5\u5c06\u6b64\u5f52\u6574\u63d2\u4ef6\u96c6\u6210\u5230\u542f\u52a8\u811a\u672c\u3002 #!/bin/bash APP = $1 MANIFEST_OPT = $2 ALL_OPT = $* NEED_REBUILD = 0 if [[ $1 == '--rewrite--manifest' ]] ; then APP = '' NEED_REBUILD = 1 elif [[ $2 == '--rewrite--manifest' ]] ; then NEED_REBUILD = 1 fi rebuildManifest () { if [[ $NEED_REBUILD == 1 ]] ; then buildManifest fi } buildManifest () { ARCHIVE_JAR = 'Toolkit.jar' java -jar $ARCHIVE_JAR $ALL_OPT if [ $? == 0 ] ; then echo 'rebuild manifest success' else echo 'rebuild manifest fail, log in logs/archive.log' fi } APP = ${ APP :- \"FullNode\" } START_OPT = ` echo ${ @: 2 } ` JAR_NAME = \" $APP .jar\" MAX_STOP_TIME = 60 MEM_OPT = '' checkpid () { pid = ` ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' ` return $pid } checkPath (){ path = 'output-directory/database' flag = 1 for p in ${ ALL_OPT } do if [[ $flag == 0 ]] ; then path = ` echo $p ` break fi if [[ $p == '-d' || $p == '--database-directory' ]] ; then path = '' flag = 0 fi done if [[ -z \" ${ path } \" ]] ; then echo '-d /path or --database-directory /path' return 1 fi if [[ -d ${ path } ]] ; then return 0 else echo $path 'not exist' return 1 fi } stopService () { count = 1 while [ $count -le $MAX_STOP_TIME ] ; do checkpid if [ $pid ] ; then kill -15 $pid sleep 1 else echo \"java-tron stop\" return fi count = $ [ $count +1 ] if [ $count -eq $MAX_STOP_TIME ] ; then kill -9 $pid sleep 1 fi done } startService () { echo ` date ` >> start.log total = 16 *1024*1024 xmx = ` echo \" $total /1024/1024*0.6\" | bc | awk -F. '{print $1\"g\"}' ` directmem = ` echo \" $total /1024/1024*0.1\" | bc | awk -F. '{print $1\"g\"}' ` logtime = ` date +%Y-%m-%d_%H-%M-%S ` export LD_PRELOAD = \"/usr/lib64/libtcmalloc.so\" nohup java -Xms $xmx -Xmx $xmx -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -Xloggc:./gc.log \\ -XX:+PrintGCDateStamps -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize = 256m -XX:+UseCodeCacheFlushing \\ $MEM_OPT -XX:MaxDirectMemorySize = $directmem -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_NAME $START_OPT -c config.conf >> start.log 2 > & 1 & pid = ` ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' ` echo \"start java-tron with pid $pid on $HOSTNAME \" } #1.\u505c\u6b62 FullNode \u670d\u52a1 stopService checkPath #2.\u6267\u884c\u63d2\u4ef6 if [[ 0 == $? ]] ; then rebuildManifest else exit -1 fi sleep 5 #3.\u542f\u52a8 FullNode \u670d\u52a1 startService \u542f\u52a8\u793a\u4f8b Note: \u5c06\u4e0a\u8ff0\u811a\u672c\u4fdd\u5b58\u4e3astart.sh\uff0c\u5728\u4ee5\u4e0a\u811a\u672c\u4e2d --rewrite--manifest \u53c2\u6570 \u56fa\u5b9a\u5728\u7b2c\u4e00\u4e2a\u53c2\u6570\u6216\u8005\u7b2c\u4e8c\u4e2a\u53c2\u6570 OPTIONS --rewrite--manifest \u5f00\u542f\u6570\u636e\u5e93\u4f18\u5316\u63d2\u4ef6\uff0c\u5f00\u542f\u6b64\u9879\u540e \u4ee5\u4e0a\u63d2\u4ef6\u9009\u9879\u7684`-d -m -b -h` \u624d\u4f1a\u751f\u6548 #\u5b8c\u6574\u547d\u4ee4 ./start.sh [ FullNode | SolidityNode ] [ --rewrite--manifest ] [ -b batchSize ] [ -d databaseDirectory ] [ -m manifestSize ] #\u793a\u4f8b ./start.sh #1. \u4e0d\u4f7f\u7528\u63d2\u4ef6\uff0c\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh SolidityNode #2. \u4e0d\u4f7f\u7528\u63d2\u4ef6\uff0c\u542f\u52a8SolidityNode.jar \u670d\u52a1 ./start.sh FullNode --rewrite--manifest #3. \u4f7f\u7528\u9ed8\u8ba4\u53c2\u6570\u6267\u884c\u4f18\u5316\u63d2\u4ef6\uff0c\u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -d /tmp/db/database #4. \u6307\u5b9a\u6570\u636e\u5e93\u76ee\u5f55\u4e3a/tmp/db/database,\u6267\u884c\u4f18\u5316\u63d2\u4ef6\uff0c \u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -b 64000 #5. \u6307\u5b9a\u4f18\u5316Manifest\u65f6\uff0c\u5e94\u7528version\u65f6\u6279\u5904\u7406\u5927\u5c0f\u4e3a64000, \u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -m 128 #6. \u6307\u5b9a\u5f53Manifest\u8d85\u8fc7128M\u65f6\uff0c\u624d\u8fdb\u884c\u4f18\u5316\u5904\u7406\uff0c\u5e76\u542f\u52a8FullNode.jar \u670d\u52a1","title":"levelDB \u542f\u52a8\u4f18\u5316\u63d2\u4ef6"},{"location":"developers/archive-manifest/#leveldb","text":"","title":"levelDB \u542f\u52a8\u4f18\u5316\u63d2\u4ef6"},{"location":"developers/archive-manifest/#_1","text":"\u968f\u7740levelDB\u7684\u8fd0\u884c\uff0cmanifest\u6587\u4ef6\u4f1a\u6301\u7eed\u589e\u957f\uff0c\u8fc7\u5927\u7684manifest\u6587\u4ef6\u4e0d\u4f46\u5f71\u54cd\u8282\u70b9\u542f\u52a8\u901f\u5ea6\uff0c\u800c\u4e14\u8fd8\u6709\u53ef\u80fd\u4f1a\u5bfc\u81f4\u5185\u5b58\u6301\u7eed\u589e\u957f\u7cfb\u7edf\u9000\u51fa\u7684\u95ee\u9898\u3002 \u4e3a\u6b64\u5728 GreatVoyage-v4.3.0(Bacon) \u5f15\u5165\u4e86leveldb \u542f\u52a8\u4f18\u5316\u63d2\u4ef6\uff0c\u63d2\u4ef6\u4f18\u5316\u4e86manifest\u7684\u6587\u4ef6\u5927\u5c0f\u4ee5\u53caLevelDB\u7684\u542f\u52a8\u8fc7\u7a0b\uff0c\u51cf\u5c11\u4e86\u5185\u5b58\u5360\u7528\uff0c\u63d0\u5347\u4e86\u8282\u70b9\u542f\u52a8\u901f\u5ea6\u3002 \u4f7f\u7528\u672c\u5de5\u5177\u8fdb\u884c\u4efb\u4f55\u64cd\u4f5c\u4e4b\u524d\uff0c\u9700\u8981\u9996\u5148\u505c\u6b62\u5f53\u524d\u8fd0\u884c\u7684FullNode\u8282\u70b9\u3002 \u6b64\u5de5\u5177\u63d0\u4f9b\u4e86\u6839\u636e\u5f53\u524d \u6570\u636e\u5e93 (database)\u60c5\u51b5,\u5bf9 manifest \u8fdb\u884c\u91cd\u65b0\u5f52\u6574\u7684\u529f\u80fd\u3002 \u66f4\u591a\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u8bf7\u53c2\u8003: TIP298 \u3002","title":"\u4ecb\u7ecd"},{"location":"developers/archive-manifest/#_2","text":"","title":"\u4f7f\u7528"},{"location":"developers/archive-manifest/#_3","text":"\u6b64\u5de5\u5177\u63d0\u4f9b\u4e86\u5f52\u6574manifest \u529f\u80fd -b | --batch-size : [ int ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9a \u4f18\u5316 manifest\u65f6\u4e00\u6b21\u6279\u5904\u7406\u5927\u5c0f,\u9ed8\u8ba4\u503c\uff1a80000\u3002 -d | --database-directory : [ string ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9aFullNode\u6570\u636e\u5e93\u7236\u7ea7\u76ee\u5f55,\u9ed8\u8ba4\u503c\uff1aoutput-directory/database\u3002 -m | --manifest-size : [ int ] \u6b64\u9009\u9879\u7528\u4e8e\u6307\u5b9a\u6700\u5c0f\u9700\u8981\u6279\u5904\u7406manifest \u6587\u4ef6\u5927\u5c0f\u4f4e\u4e8e\u6b64\u503c\uff0c\u4e0d\u8fdb\u884c\u5904\u7406\uff0c\u5355\u4f4dM\uff0c\u9ed8\u8ba4\u503c\uff1a0\u3002 -h | --help : [ bool ] \u6b64\u9009\u9879\u7528\u4e8e\u67e5\u770b\u5e2e\u52a9\uff0c\u9ed8\u8ba4\u503c\uff1afalse\u3002","title":"\u63d2\u4ef6\u9009\u9879"},{"location":"developers/archive-manifest/#_4","text":"\u901a\u8fc7\u7f16\u8bd1 \u5728java-tron \u4e0b\uff0c\u6267\u884c ./gradlew build \uff0c\u5728 build/libs/ \u4e0b\u53ef\u627e\u5230Toolkit.jar\u3002 \u76f4\u63a5\u4e0b\u8f7d \u4e0b\u8f7d\u94fe\u63a5","title":"\u83b7\u53d6\u65b9\u5f0f"},{"location":"developers/archive-manifest/#_5","text":"\u505c\u6b62FullNode \u670d\u52a1\u3002 \u6267\u884c\u547d\u4ee4 \u542f\u52a8 FullNode \u670d\u52a1\u3002","title":"\u4f7f\u7528\u6b65\u9aa4"},{"location":"developers/archive-manifest/#_6","text":"FullNode \u8fd0\u884c\u4e4b\u540e\uff0c\u9ed8\u8ba4\u6570\u636e\u5e93\u76ee\u5f55\uff1a output-directory \uff0c\u4f18\u5316\u63d2\u4ef6\u4f1a\u5904\u7406 output-directory/database \u76ee\u5f55\u3002 \u4ee5\u4e0b\u201c\u5355\u72ec\u4f7f\u7528\u201d \u548c \u201c\u96c6\u6210\u542f\u52a8\u811a\u672c\u201d \u8fd9\u4e24\u79cd\u4f7f\u7528\u65b9\u5f0f\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u60c5\u51b5 \u4efb\u9009\u4e00\u79cd\u5373\u53ef\u3002","title":"\u4f7f\u7528\u8bf4\u660e"},{"location":"developers/archive-manifest/#1","text":"","title":"1. \u5355\u72ec\u4f7f\u7528"},{"location":"developers/archive-manifest/#2","text":"\u4e5f\u53ef\u4ee5\u5c06\u6b64\u5f52\u6574\u63d2\u4ef6\u96c6\u6210\u5230\u542f\u52a8\u811a\u672c\u3002 #!/bin/bash APP = $1 MANIFEST_OPT = $2 ALL_OPT = $* NEED_REBUILD = 0 if [[ $1 == '--rewrite--manifest' ]] ; then APP = '' NEED_REBUILD = 1 elif [[ $2 == '--rewrite--manifest' ]] ; then NEED_REBUILD = 1 fi rebuildManifest () { if [[ $NEED_REBUILD == 1 ]] ; then buildManifest fi } buildManifest () { ARCHIVE_JAR = 'Toolkit.jar' java -jar $ARCHIVE_JAR $ALL_OPT if [ $? == 0 ] ; then echo 'rebuild manifest success' else echo 'rebuild manifest fail, log in logs/archive.log' fi } APP = ${ APP :- \"FullNode\" } START_OPT = ` echo ${ @: 2 } ` JAR_NAME = \" $APP .jar\" MAX_STOP_TIME = 60 MEM_OPT = '' checkpid () { pid = ` ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' ` return $pid } checkPath (){ path = 'output-directory/database' flag = 1 for p in ${ ALL_OPT } do if [[ $flag == 0 ]] ; then path = ` echo $p ` break fi if [[ $p == '-d' || $p == '--database-directory' ]] ; then path = '' flag = 0 fi done if [[ -z \" ${ path } \" ]] ; then echo '-d /path or --database-directory /path' return 1 fi if [[ -d ${ path } ]] ; then return 0 else echo $path 'not exist' return 1 fi } stopService () { count = 1 while [ $count -le $MAX_STOP_TIME ] ; do checkpid if [ $pid ] ; then kill -15 $pid sleep 1 else echo \"java-tron stop\" return fi count = $ [ $count +1 ] if [ $count -eq $MAX_STOP_TIME ] ; then kill -9 $pid sleep 1 fi done } startService () { echo ` date ` >> start.log total = 16 *1024*1024 xmx = ` echo \" $total /1024/1024*0.6\" | bc | awk -F. '{print $1\"g\"}' ` directmem = ` echo \" $total /1024/1024*0.1\" | bc | awk -F. '{print $1\"g\"}' ` logtime = ` date +%Y-%m-%d_%H-%M-%S ` export LD_PRELOAD = \"/usr/lib64/libtcmalloc.so\" nohup java -Xms $xmx -Xmx $xmx -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -Xloggc:./gc.log \\ -XX:+PrintGCDateStamps -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize = 256m -XX:+UseCodeCacheFlushing \\ $MEM_OPT -XX:MaxDirectMemorySize = $directmem -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_NAME $START_OPT -c config.conf >> start.log 2 > & 1 & pid = ` ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' ` echo \"start java-tron with pid $pid on $HOSTNAME \" } #1.\u505c\u6b62 FullNode \u670d\u52a1 stopService checkPath #2.\u6267\u884c\u63d2\u4ef6 if [[ 0 == $? ]] ; then rebuildManifest else exit -1 fi sleep 5 #3.\u542f\u52a8 FullNode \u670d\u52a1 startService \u542f\u52a8\u793a\u4f8b Note: \u5c06\u4e0a\u8ff0\u811a\u672c\u4fdd\u5b58\u4e3astart.sh\uff0c\u5728\u4ee5\u4e0a\u811a\u672c\u4e2d --rewrite--manifest \u53c2\u6570 \u56fa\u5b9a\u5728\u7b2c\u4e00\u4e2a\u53c2\u6570\u6216\u8005\u7b2c\u4e8c\u4e2a\u53c2\u6570 OPTIONS --rewrite--manifest \u5f00\u542f\u6570\u636e\u5e93\u4f18\u5316\u63d2\u4ef6\uff0c\u5f00\u542f\u6b64\u9879\u540e \u4ee5\u4e0a\u63d2\u4ef6\u9009\u9879\u7684`-d -m -b -h` \u624d\u4f1a\u751f\u6548 #\u5b8c\u6574\u547d\u4ee4 ./start.sh [ FullNode | SolidityNode ] [ --rewrite--manifest ] [ -b batchSize ] [ -d databaseDirectory ] [ -m manifestSize ] #\u793a\u4f8b ./start.sh #1. \u4e0d\u4f7f\u7528\u63d2\u4ef6\uff0c\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh SolidityNode #2. \u4e0d\u4f7f\u7528\u63d2\u4ef6\uff0c\u542f\u52a8SolidityNode.jar \u670d\u52a1 ./start.sh FullNode --rewrite--manifest #3. \u4f7f\u7528\u9ed8\u8ba4\u53c2\u6570\u6267\u884c\u4f18\u5316\u63d2\u4ef6\uff0c\u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -d /tmp/db/database #4. \u6307\u5b9a\u6570\u636e\u5e93\u76ee\u5f55\u4e3a/tmp/db/database,\u6267\u884c\u4f18\u5316\u63d2\u4ef6\uff0c \u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -b 64000 #5. \u6307\u5b9a\u4f18\u5316Manifest\u65f6\uff0c\u5e94\u7528version\u65f6\u6279\u5904\u7406\u5927\u5c0f\u4e3a64000, \u5e76\u542f\u52a8FullNode.jar \u670d\u52a1 ./start.sh --rewrite--manifest -m 128 #6. \u6307\u5b9a\u5f53Manifest\u8d85\u8fc7128M\u65f6\uff0c\u624d\u8fdb\u884c\u4f18\u5316\u5904\u7406\uff0c\u5e76\u542f\u52a8FullNode.jar \u670d\u52a1","title":"2. \u96c6\u6210\u542f\u52a8\u811a\u672c"},{"location":"developers/code-structure/","text":"Java-tron\u6838\u5fc3\u6a21\u5757 \u00b6 \u4ee3\u7801\u7ed3\u6784 \u00b6 Java-tron\u662f\u57fa\u4e8eJava\u8bed\u8a00\u5f00\u53d1\u7684TRON\u7f51\u7edc\u5ba2\u6237\u7aef\uff0c\u5b83\u5b9e\u73b0\u4e86TRON\u767d\u76ae\u4e66\u4e2d\u6240\u63d0\u5230\u7684\u6240\u6709\u529f\u80fd\uff0c\u5305\u62ec\u5171\u8bc6\u673a\u5236\u3001\u5bc6\u7801\u5b66\u3001\u6570\u636e\u5e93\u3001TVM\u865a\u62df\u673a\u3001\u7f51\u7edc\u7ba1\u7406\u7b49\u3002\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u542f\u52a8Java-tron\u6765\u8fd0\u884c\u4e00\u4e2aTRON\u7f51\u7edc\u8282\u70b9\u3002\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u8be6\u7ec6\u63cf\u8ff0Java-tron\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ecb\u7ecd\u5176\u5404\u4e2a\u529f\u80fd\u6a21\u5757\u7684\u4f5c\u7528\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u540e\u7eed\u7684\u4ee3\u7801\u5206\u6790\u4e0e\u5f00\u53d1\u3002 Java-tron\u91c7\u7528\u6a21\u5757\u5316\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ee3\u7801\u7ed3\u6784\u6e05\u6670\uff0c\u6613\u4e8e\u7ef4\u62a4\u4e0e\u6269\u5c55\u3002Java-tron \u76ee\u524d\u5206\u4e3a7\u4e2a\u6a21\u5757\uff1a protocol \u3001 common \u3001 chainbase \u3001 consensus \u3001 actuator \u3001 crypto \u3001 framework \uff0c\u4e0b\u9762\u5206\u522b\u4ecb\u7ecd\u5404\u4e2a\u6a21\u5757\u7684\u529f\u80fd\u53ca\u5176\u4ee3\u7801\u7ec4\u7ec7\u7ed3\u6784\u3002 protocol \u00b6 \u5bf9\u4e8e\u533a\u5757\u94fe\u8fd9\u79cd\u5206\u5e03\u5f0f\u7f51\u7edc\uff0c\u7b80\u6d01\u9ad8\u6548\u7684\u6570\u636e\u4ea4\u4e92\u534f\u8bae\u975e\u5e38\u91cd\u8981\uff0cprotocol\u6a21\u5757\u5b9a\u4e49\u4e86\uff1a \u8282\u70b9\u95f4\u901a\u4fe1\u534f\u8bae \u8282\u70b9\u5185\u90e8\u6a21\u5757\u95f4\u7684\u901a\u4fe1\u534f\u8bae \u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\u534f\u8bae \u4e0a\u8ff0\u534f\u8bae\u91c7\u7528\u4e86 Google Protobuf \u6570\u636e\u4ea4\u4e92\u683c\u5f0f\uff0c\u76f8\u6bd4\u4e8eJSON\u548cXML\uff0c Google Protobuf \u683c\u5f0f\u66f4\u9ad8\u6548\u548c\u7075\u6d3b\uff0c\u53ef\u4ee5\u901a\u8fc7ProtoBuf\u7f16\u8bd1\u5668\u4e3a\u5b9a\u4e49\u7684\u534f\u8bae\u6587\u4ef6\u751f\u6210\u7279\u5b9a\u8bed\u8a00\u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7684\u6e90\u4ee3\u7801\u3002Protobuf\u662f java-tron \u5b9e\u73b0\u8de8\u8bed\u8a00\u8de8\u5e73\u53f0\u7684\u57fa\u7840\u3002 protocol \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/protocol \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- protos |-- api | |-- api.proto | |-- zksnark.proto |-- core |-- Discover.proto |-- Tron.proto |-- TronInventoryItems.proto |-- contract protos/api/ - Java-tron\u8282\u70b9\u5bf9\u5916\u63d0\u4f9b\u7684gRPC\u63a5\u53e3\u53ca\u6570\u636e\u7ed3\u6784 protos/core/ - \u8282\u70b9\u95f4\u53ca\u8282\u70b9\u5185\u90e8\u5404\u4e2a\u6a21\u5757\u95f4\u901a\u4fe1\u7684\u6570\u636e\u7ed3\u6784 Discover.proto - \u8282\u70b9\u53d1\u73b0\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784 TronInventoryItems.proto - \u8282\u70b9\u95f4\u533a\u5757\u4f20\u8f93\u76f8\u5173\u6570\u636e\u7ed3\u6784 contract/ - \u5408\u7ea6\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784 Tron.proto - \u5176\u5b83\u91cd\u8981\u7684\u6570\u636e\u7ed3\u6784\u5b9a\u4e49\uff0c\u5176\u4e2d\u5305\u62ec\u8d26\u6237\u3001\u533a\u5757\u3001\u4ea4\u6613\u3001\u8d44\u6e90\u3001\u8d85\u7ea7\u4ee3\u8868\u3001\u6295\u7968\u3001\u63d0\u6848\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784\u3002 common \u00b6 common\u6a21\u5757\u5bf9\u516c\u5171\u7ec4\u4ef6\u548c\u4e00\u4e9b\u5de5\u5177\u7c7b\u8fdb\u884c\u4e86\u5c01\u88c5\uff0c\u6bd4\u5982\u5f02\u5e38\u5904\u7406\u3001\u6307\u6807\u76d1\u63a7\u5de5\u5177\u7b49\uff0c\u4ee5\u65b9\u4fbf\u5176\u4ed6\u6a21\u5757\u8c03\u7528\u3002 common \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/common , \u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- /common/src/main/java/org/tron |-- common | |-- args | |-- config | |-- entity | |-- logsfilter | |-- overlay | |-- parameter | |-- prometheus | |-- runtime | |-- setting | |-- utils |-- core |-- config |-- db |-- db2 |-- exception common/prometheus - prometheus\u6307\u6807\u76d1\u63a7 common/utils - \u57fa\u7840\u6570\u636e\u7c7b\u578b\u5c01\u88c5\u7c7b core/config - \u8282\u70b9\u914d\u7f6e\u76f8\u5173\u7c7b core/exception - \u6240\u6709\u7684TRON\u7f51\u7edc\u5f02\u5e38\u5904\u7406\u76f8\u5173\u7c7b chainbase \u00b6 chainbase \u6a21\u5757\u662f\u6570\u636e\u5e93\u5c42\u9762\u7684\u62bd\u8c61\uff0c\u50cf PoW\u3001PoS\u3001DPoS \u8fd9\u7c7b\u57fa\u4e8e\u6982\u7387\u6027\u7684\u5171\u8bc6\u7b97\u6cd5\u4e0d\u53ef\u907f\u514d\u7684\u4f1a\u4ee5\u4e00\u5b9a\u7684\u6982\u7387\u53d1\u751f\u5207\u94fe\uff0c\u56e0\u6b64 chainbase \u5b9a\u4e49\u4e86\u4e00\u4e2a\u652f\u6301\u53ef\u56de\u9000\u6570\u636e\u5e93\u7684\u63a5\u53e3\u6807\u51c6\uff0c\u8be5\u63a5\u53e3\u8981\u6c42\u6570\u636e\u5e93\u5b9e\u73b0\u72b6\u6001\u56de\u6eda\u673a\u5236\u3001checkpoint\u5bb9\u707e\u673a\u5236\u7b49\u3002 \u53e6\u5916 chainbase \u6a21\u5757\u5177\u6709\u826f\u597d\u7684\u63a5\u53e3\u62bd\u8c61\u8bbe\u8ba1\uff0c\u4efb\u4f55\u6ee1\u8db3\u63a5\u53e3\u5b9e\u73b0\u7684\u6570\u636e\u5e93\u90fd\u53ef\u4ee5\u4f5c\u4e3a\u533a\u5757\u94fe\u7684\u5e95\u5c42\u5b58\u50a8\uff0c\u8d4b\u4e88\u5f00\u53d1\u8005\u66f4\u591a\u7684\u7075\u6d3b\u6027\uff0cLevelDB\u548cRocksDB\u662f\u9ed8\u8ba4\u63d0\u4f9b\u7684\u4e24\u79cd\u5177\u4f53\u5b9e\u73b0\u3002 chainbase \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/chainbase \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- chainbase.src.main.java.org.tron |-- common | |-- bloom | |-- error | |-- overlay | |-- runtime | |-- storage | | |-- leveldb | | |-- rocksdb | |-- utils | |-- zksnark |-- core |-- actuator |-- capsule |-- db | |-- RevokingDatabase.java | |-- TronStoreWithRevoking.java | |-- ...... |-- db2 | |-- common | |-- core | |-- SnapshotManager.java | |-- ...... |-- net |-- service |-- store common/ - \u516c\u5171\u7ec4\u4ef6\uff0c\u6bd4\u5982\u5f02\u5e38\u5904\u7406\u7c7b\u3001\u5de5\u5177\u7c7b storage/leveldb/ \u5b9e\u73b0\u4e86\u4f7f\u7528LevelDB\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u6570\u636e\u5e93 storage/rocksdb/ \u5b9e\u73b0\u4e86\u4f7f\u7528RocksDB\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u6570\u636e\u5e93 core/ - chainbase\u6a21\u5757\u6838\u5fc3\u4ee3\u7801 capsule/ \u5404\u4e2a\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u6bd4\u5982AccountCapsule\uff0cBlockCapsule\u7b49\uff0cAccountCapsule\u4e3aAccount\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u63d0\u4f9b\u4e86\u8d26\u6237\u6570\u636e\u7684\u4fee\u6539\u4e0e\u67e5\u8be2\uff1bBlockCapsule\u4e3aBlock\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u63d0\u4f9b\u4e86\u533a\u5757\u6570\u636e\u7684\u4fee\u6539\u4e0e\u67e5\u8be2\u3002 store/ \u5404\u4e2a\u6570\u636e\u5e93\uff0c\u6bd4\u5982 AccountStore \uff0c ProposalStore \u7b49\u3002 AccountStore \u662f\u8d26\u6237\u6570\u636e\u5e93\uff0c\u6570\u636e\u5e93\u540d\u79f0\u4e3a account \uff0c\u5b58\u50a8\u4e86TRON\u7f51\u7edc\u4e2d\u7684\u6240\u6709\u8d26\u6237\u4fe1\u606f\uff1b ProposalStore \u662f\u63d0\u6848\u6570\u636e\u5e93\uff0c\u6570\u636e\u5e93\u540d\u79f0\u4e3a proposal \uff0c\u5b58\u50a8\u4e86TRON\u7f51\u7edc\u4e2d\u7684\u6240\u6709\u63d0\u6848\u4fe1\u606f\u3002 db/ \u548c db2/ \u5b9e\u73b0\u4e86\u53ef\u56de\u9000\u6570\u636e\u5e93\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u4e24\u79cd\u53ef\u56de\u9000\u6570\u636e\u5e93\uff1a\u4f4d\u4e8e db/ \u76ee\u5f55\u4e0b AbstractRevokingStore \u548c\u4f4d\u4e8e db2/ \u76ee\u5f55\u4e0b SnapshotManager \u3002 SnapshotManager \u76f8\u6bd4\u4e0e AbstractRevokingStore \uff0c\u6570\u636e\u56de\u9000\u66f4\u7a33\u5b9a\uff0c\u5e76\u652f\u6301\u5e95\u5c42\u6570\u636e\u5e93\u7684\u6269\u5c55\uff0c\u56e0\u6b64Java-tron\u91c7\u7528 SnapshotManager \u53ef\u56de\u9000\u6570\u636e\u5e93\uff0c\u5176\u4e2d\u7684\u51e0\u4e2a\u91cd\u8981\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b\u5982\u4e0b\uff1a RevokingDatabase.java \u662f\u6570\u636e\u5e93\u5bb9\u5668\u7684\u63a5\u53e3\uff0c\u7528\u4e8e\u6240\u6709\u53ef\u56de\u9000\u6570\u636e\u5e93\u7684\u7ba1\u7406\uff0c SnapshotManager \u662f\u8be5\u63a5\u53e3\u7684\u4e00\u4e2a\u5b9e\u73b0 TronStoreWithRevoking.java \u662f\u652f\u6301\u53ef\u56de\u9000\u7684\u6570\u636e\u5e93\u7684\u57fa\u7c7b\uff0c\u6240\u6709\u7684\u53ef\u56de\u9000\u6570\u636e\u5e93\u90fd\u662f\u5b83\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u6bd4\u5982 BlockStore \uff0c TransactionStore \u7b49 consensus \u00b6 \u5171\u8bc6\u673a\u5236\u662f\u533a\u5757\u94fe\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u6a21\u5757\uff0c\u5e38\u89c1\u7684\u6709 PoW\u3001PoS\u3001DPoS\u3001PBFT \u7b49\uff0c\u8054\u76df\u94fe\u4ee5\u53ca\u5176\u4ed6\u4e00\u4e9b\u53ef\u4fe1\u7f51\u7edc\u4e2d\u4e5f\u4f1a\u91c7\u7528 Paxos\u3001Raft \u7b49\u5171\u8bc6\u673a\u5236\uff0c\u5171\u8bc6\u7684\u9009\u62e9\u9700\u8981\u548c\u4e1a\u52a1\u573a\u666f\u76f8\u5339\u914d\uff0c\u6bd4\u5982\u5bf9\u5171\u8bc6\u6548\u7387\u654f\u611f\u5b9e\u65f6\u6e38\u620f\u7c7b\u5c31\u4e0d\u9002\u5408\u91c7\u7528 PoW\uff0c\u800c\u5bf9\u5b9e\u65f6\u6027\u8981\u6c42\u6781\u9ad8\u7684\u4ea4\u6613\u6240\u6765\u8bf4 PBFT \u53ef\u80fd\u662f\u9996\u9009\u3002\u6240\u4ee5\u652f\u6301\u53ef\u66ff\u6362\u7684\u5171\u8bc6\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u540c\u65f6\u4e5f\u662f\u5b9e\u73b0\u7279\u5b9a\u5e94\u7528\u533a\u5757\u94fe\u7684\u91cd\u8981\u4e00\u73af\uff0cconsensus \u6a21\u5757\u6700\u7ec8\u76ee\u6807\u662f\u80fd\u591f\u8ba9\u5e94\u7528\u5f00\u53d1\u8005\u80fd\u591f\u50cf\u914d\u7f6e\u53c2\u6570\u90a3\u6837\u7b80\u5355\u7684\u5207\u6362\u5171\u8bc6\u673a\u5236\u3002 consensus \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/consensus \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- consensus/src/main/java/org/tron/consensus |-- Consensus.java |-- ConsensusDelegate.java |-- base | |-- ConsensusInterface.java | |-- ...... |-- dpos |-- pbft consensus \u6a21\u5757\u5c06\u5171\u8bc6\u8fc7\u7a0b\u62bd\u8c61\u6210\u51e0\u4e2a\u91cd\u8981\u7684\u90e8\u5206\uff0c\u5b9a\u4e49\u5728 ConsensusInterface \u63a5\u53e3\u4e2d\uff1a start - \u542f\u52a8\u5171\u8bc6\u670d\u52a1\uff0c\u53ef\u4ee5\u81ea\u5b9a\u5236\u542f\u52a8\u53c2\u6570 stop - \u505c\u6b62\u5171\u8bc6\u670d\u52a1 receiveBlock - \u5b9a\u4e49\u63a5\u6536\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 validBlock - \u5b9a\u4e49\u9a8c\u8bc1\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 applyBlock - \u5b9a\u4e49\u5904\u7406\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 \u76ee\u524dJava-tron\u57fa\u4e8e ConsensusInterface \u63a5\u53e3\u5b9e\u73b0\u4e86DPOS\u5171\u8bc6\u548cPBFT\u5171\u8bc6\uff0c\u5206\u522b\u4f4d\u4e8e dpos/ \u548c pbft/ \u76ee\u5f55\u4e0b\uff0c\u5f00\u53d1\u8005\u4e5f\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u9700\u6c42\u5b9e\u73b0 ConsensusInterface \u63a5\u53e3\uff0c\u6765\u81ea\u5b9a\u4e49\u5171\u8bc6\u673a\u5236\u3002 actuator \u00b6 \u4ee5\u592a\u574a\u521d\u521b\u6027\u7684\u5f15\u5165\u4e86\u865a\u62df\u673a\u5e76\u5b9a\u4e49\u4e86\u667a\u80fd\u5408\u7ea6\u8fd9\u79cd\u5f00\u53d1\u65b9\u5f0f\uff0c\u4f46\u5bf9\u4e8e\u4e00\u4e9b\u590d\u6742\u7684\u5e94\u7528\uff0c\u667a\u80fd\u5408\u7ea6\u4e0d\u591f\u7075\u6d3b\u4e14\u53d7\u9650\u4e8e\u6027\u80fd\uff0c\u8fd9\u4e5f\u662f Java-tron \u63d0\u4f9b\u521b\u5efa\u5e94\u7528\u94fe\u7684\u4e00\u4e2a\u539f\u56e0\u3002\u4e3a\u6b64 Java-tron \u72ec\u7acb\u51fa\u6765\u4e86 actuator \u6a21\u5757\uff0c\u8be5\u6a21\u5757\u4e3a\u5e94\u7528\u5f00\u53d1\u8005\u63d0\u4f9b\u4e00\u79cd\u65b0\u7684\u5f00\u53d1\u8303\u5f0f\uff1a\u53ef\u4ee5\u5c06\u5e94\u7528\u4ee3\u7801\u76f4\u63a5\u690d\u5165\u94fe\u4e2d\u800c\u4e0d\u518d\u5c06\u5e94\u7528\u4ee3\u7801\u8dd1\u5728\u865a\u62df\u673a\u4e2d\u3002 actuator\u662f\u4ea4\u6613\u7684\u6267\u884c\u5668\uff0c\u53ef\u4ee5\u5c06\u5e94\u7528\u770b\u6210\u662f\u4e0d\u540c\u4ea4\u6613\u7c7b\u578b\u7ec4\u6210\u7684\u4ea4\u6613\u96c6\uff0c\u6bcf\u7c7b\u4ea4\u6613\u90fd\u7531\u5bf9\u5e94\u7684 actuator \u8d1f\u8d23\u6267\u884c\u3002 actuator \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/actuator \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- actuator/src/main/java/org/tron/core |-- actuator | |-- AbstractActuator.java | |-- ActuatorCreator.java | |-- ActuatorFactory.java | |-- TransferActuator.java | |-- VMActuator.java | |-- ...... |-- utils |-- vm actuator/ - TRON\u7f51\u7edc\u4e2d\u5404\u79cd\u7c7b\u578b\u4ea4\u6613\u7684\u6267\u884c\u5668\uff0c\u5b9a\u4e49\u4e86\u4e0d\u540c\u7c7b\u578b\u4ea4\u6613\u7684\u5904\u7406\u903b\u8f91\uff0c\u6bd4\u5982 TransferActuator \u662f\u8f6c\u8d26TRX\u4ea4\u6613\u7684\u5904\u7406\u7c7b\uff0c FreezeBalanceV2Actuator \u662f\u8d28\u62bcTRX\u83b7\u53d6\u8d44\u6e90\u4ea4\u6613\u7684\u5904\u7406\u7c7b utils/ - \u6267\u884c\u4ea4\u6613\u6240\u9700\u7684\u5de5\u5177\u7c7b vm/ - \u865a\u62df\u673a\u76f8\u5173\u4ee3\u7801 actuator\u6a21\u5757\u5b9a\u4e49\u7684 Actuator \u63a5\u53e3\u67094\u4e2a\u65b9\u6cd5\uff1a * execute - \u8d1f\u8d23\u4ea4\u6613\u5177\u4f53\u9700\u8981\u6267\u884c\u7684\u52a8\u4f5c\uff0c\u53ef\u4ee5\u662f\u72b6\u6001\u4fee\u6539\u3001\u6d41\u7a0b\u8df3\u8f6c\u3001\u903b\u8f91\u5224\u65ad * validate - \u8d1f\u8d23\u9a8c\u8bc1\u4ea4\u6613\u7684\u6b63\u786e\u6027 * getOwnerAddress - \u83b7\u53d6\u4ea4\u6613\u53d1\u8d77\u65b9\u7684\u5730\u5740 * calcFee - \u5b9a\u4e49\u4ea4\u6613\u624b\u7eed\u8d39\u8ba1\u7b97\u903b\u8f91 \u5f00\u53d1\u8005\u4e5f\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u5b9e\u73b0 Actuator \u63a5\u53e3\uff0c\u6765\u5b9e\u73b0\u81ea\u5b9a\u4e49\u4ea4\u6613\u7c7b\u578b\u7684\u5904\u7406\u3002 crypto \u00b6 crypto\u662f\u4e00\u4e2a\u76f8\u5bf9\u72ec\u7acb\u7684\u6a21\u5757\uff0c\u4f46\u4e5f\u662f\u975e\u5e38\u91cd\u8981\u7684\u6a21\u5757\uff0cJava-tron\u4e2d\u7684\u6570\u636e\u5b89\u5168\u51e0\u4e4e\u5168\u7531\u8be5\u6a21\u5757\u6765\u4fdd\u8bc1\uff0c\u76ee\u524d\u652f\u6301SM2\u548cECKey\u52a0\u5bc6\u7b97\u6cd5\u3002 crypto \u6a21\u5757\u7684\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/crypto \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- crypto/src/main/java/org/tron/common/crypto |-- Blake2bfMessageDigest.java |-- ECKey.java |-- Hash.java |-- SignInterface.java |-- SignUtils.java |-- SignatureInterface.java |-- cryptohash |-- jce |-- sm2 |-- zksnark sm2 \u548c jce - \u63d0\u4f9bSM2\u548cECKey\u52a0\u5bc6\u7b97\u6cd5\u548c\u7b7e\u540d\u7b97\u6cd5 zksnark - \u63d0\u4f9b\u96f6\u77e5\u8bc6\u8bc1\u660e\u7b97\u6cd5 framework \u00b6 framework\u662f java-tron \u7684\u6838\u5fc3\u6a21\u5757\uff0c\u4e5f\u662f\u8282\u70b9\u7684\u5165\u53e3\uff0cframework \u6a21\u5757\u8d1f\u8d23\u5404\u4e2a\u6a21\u5757\u7684\u521d\u59cb\u5316\u53ca\u4e1a\u52a1\u903b\u8f91\u7684\u8df3\u8f6c\uff0cframework\u5305\u542b\u4e86\u8282\u70b9\u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\uff0cP2P\u7f51\u7edc\u76f8\u5173\u7684\u8282\u70b9\u53d1\u73b0\u4e0e\u7ba1\u7406\u6d41\u7a0b\u3001\u533a\u5757\u5e7f\u64ad\u53ca\u5904\u7406\u6d41\u7a0b\u3002 framework \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/framework \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- framework/src/main/java/org/tron |-- common | |-- application | |-- backup | |-- logsfilter | |-- net | |-- overlay | | |-- client | | |-- discover | | |-- message | | |-- server | |-- runtime | |-- zksnark |-- core | |-- Wallet.java | |-- capsule | |-- config | |-- consensus | |-- db | |-- metrics | |-- net | |-- services | |-- trie | |-- zen |-- keystore |-- program | |-- FullNode.java |-- tool program/FullNode.java - \u5b83\u662f\u7a0b\u5e8f\u7684\u5165\u53e3\u70b9\uff0c\u521d\u59cb\u5316\u5bf9\u5916\u7684HTTP\u3001gRPC\u548cjson-rpc\u63a5\u53e3\u670d\u52a1 core/services - \u5b9a\u4e49\u4e86\u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\uff0c\u5176\u5b50\u76ee\u5f55 http/ \u5305\u542b\u4e86\u6240\u6709\u7684http\u63a5\u53e3\u5904\u7406\u7c7b\uff0c json-rpc/ \u5305\u542b\u4e86\u6240\u6709\u7684json-rpc\u63a5\u53e3\u5904\u7406\u7c7b common/overlay/discover - \u8282\u70b9\u53d1\u73b0\u903b\u8f91 common/overlay/server - \u8282\u70b9\u7ba1\u7406\u53ca\u8282\u70b9\u95f4\u533a\u5757\u540c\u6b65\u903b\u8f91 core/net - \u6d88\u606f\u5904\u7406\uff0c\u5176\u5b50\u76ee\u5f55 /service \u4e3a\u4ea4\u6613\u53ca\u533a\u5757\u5e7f\u64ad\u3001\u533a\u5757\u6293\u53d6\u53ca\u540c\u6b65\u903b\u8f91 core/db/Manager.java - \u4ea4\u6613\u53ca\u533a\u5757\u6821\u9a8c\u5e76\u5904\u7406\u903b\u8f91 \u603b\u7ed3 \u00b6 \u672c\u6587\u4e3b\u8981\u4ecb\u7ecd\u4e86Java-tron\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ee5\u53ca\u5404\u4e2a\u529f\u80fd\u6a21\u5757\u7684\u4f5c\u7528\u3001\u4f4d\u7f6e\u53ca\u76ee\u5f55\u7ed3\u6784\uff0c\u901a\u8fc7\u672c\u6587\u60a8\u4f1a\u5bf9Java-tron\u7684\u6574\u4f53\u7ed3\u6784\u53ca\u5173\u952e\u63a5\u53e3\u6709\u4e86\u5927\u81f4\u7684\u4e86\u89e3\uff0c\u65b9\u4fbf\u540e\u7eed\u7684\u4ee3\u7801\u5206\u6790\u548c\u5f00\u53d1\u3002 ChainBase \u00b6 \u6982\u89c8 \u00b6 \u4f17\u6240\u5468\u77e5\u533a\u5757\u94fe\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u4e0d\u53ef\u7be1\u6539\u7684\u5206\u5e03\u5f0f\u8d26\u672c\uff0c\u975e\u5e38\u9002\u5408\u89e3\u51b3\u4fe1\u4efb\u7684\u95ee\u9898\uff0c\u73b0\u5b9e\u4e2d\u5f80\u5f80\u5229\u7528\u533a\u5757\u94fe\u6765\u8fdb\u884c\u8bb0\u8d26\u548c\u4ea4\u6613\uff0c\u6bd4\u5982\u5f88\u591a\u5e94\u7528\u91c7\u7528 BTC\u3001ETH\u3001TRX \u7b49\u6570\u5b57\u8d27\u5e01\u6765\u8fdb\u884c\u7ecf\u6d4e\u6d3b\u52a8\u4ee5\u4fdd\u8bc1\u8d44\u91d1\u7684\u516c\u5f00\u900f\u660e\u3002 \u800c\u5b9e\u73b0\u8fd9\u6837\u4e00\u4e2a\u4e0d\u53ef\u7be1\u6539\u7684\u5206\u5e03\u5f0f\u8d26\u672c\u662f\u4e00\u4e2a\u975e\u5e38\u590d\u6742\u7684\u7cfb\u7edf\u5de5\u7a0b\uff0c\u6d89\u53ca\u5230\u5f88\u591a\u6280\u672f\u9886\u57df\uff1a\u6bd4\u5982 p2p \u7f51\u7edc\u3001\u667a\u80fd\u5408\u7ea6\u3001\u6570\u636e\u5e93\u3001\u5bc6\u7801\u5b66\u3001\u5171\u8bc6\u673a\u5236\u7b49\u3002\u5176\u4e2d\u6570\u636e\u5e93\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u7684\u57fa\u7840\uff0c\u5404\u4e2a\u533a\u5757\u94fe\u56e2\u961f\u90fd\u5728\u63a2\u7d22\u6570\u636e\u5e93\u5c42\u9762\u7684\u8bbe\u8ba1\u4e0e\u4f18\u5316\u3002 Java-tron \u7684\u6570\u636e\u5e93\u6a21\u5757\u4e5f\u79f0\u4e3aChainBase \u6a21\u5757\uff0c\u672c\u6587\u4e3b\u8981\u4ecb\u7ecd\u4e00\u4e9b\u80cc\u666f\u77e5\u8bc6\uff0c\u5e76\u901a\u8fc7\u4ecb\u7ecd\u4ea4\u6613\u5904\u7406\u3001\u72b6\u6001\u56de\u6eda\u3001\u6570\u636e\u6301\u4e45\u5316\u7b49\u903b\u8f91\u4e3a\u5f00\u53d1\u8005\u5c55\u73b0ChainBase \u6a21\u5757\u7684\u5b9e\u73b0\u7ec6\u8282\u3002 \u9884\u5907\u77e5\u8bc6 \u00b6 \u6570\u636e\u5e93\u662f\u533a\u5757\u94fe\u7cfb\u7edf\u4e2d\u91cd\u8981\u7684\u4e00\u73af\uff0c\u5b83\u5b58\u50a8\u4e86\u533a\u5757\u94fe\u4e0a\u7684\u6240\u6709\u6570\u636e\uff0c\u662f\u533a\u5757\u94fe\u7cfb\u7edf\u6b63\u5e38\u8fd0\u884c\u7684\u57fa\u7840\uff0c\u6bcf\u4e2a\u5168\u8282\u70b9\u90fd\u4fdd\u5b58\u4e86\u4e00\u4efd\u5168\u91cf\u7684\u6570\u636e\uff0c\u5305\u542b\u533a\u5757\u6570\u636e\u548c\u72b6\u6001\u6570\u636e\uff0cJava-tron \u91c7\u7528 Account \u6a21\u578b\u6765\u4fdd\u5b58\u7528\u6237\u7684\u8d26\u6237\u72b6\u6001\u3002 \u8d26\u6237\u6a21\u578b \u00b6 \u76ee\u524d\u4e3b\u6d41\u7684\u8d26\u6237\u6a21\u578b\u6709\u4e24\u79cd\uff1a UTXO\u6a21\u578b Account\u6a21\u578b UTXO \u6a21\u578b\u662f\u65e0\u72b6\u6001\u7684\uff0c\u80fd\u66f4\u5bb9\u6613\u5e76\u53d1\u5904\u7406\u4ea4\u6613\uff0c\u5e76\u4e14\u62e5\u6709\u8f83\u597d\u7684\u9690\u79c1\u6027\uff0c\u4f46\u5728\u7f16\u7a0b\u7075\u6d3b\u5ea6\u65b9\u9762\u6709\u6240\u6b20\u7f3a\u3002 Account \u6a21\u578b\u4e2d\u7528\u6237\u6570\u636e\u90fd\u5b58\u653e\u5728\u5bf9\u5e94\u7684\u8d26\u6237\u4e2d\uff0c\u5e76\u4e14\u667a\u80fd\u5408\u7ea6\u4e5f\u4ee5\u4ee3\u7801\u7684\u5f62\u5f0f\u5b58\u653e\u5728 Account\u4e2d\uff0c\u8fd9\u79cd\u6a21\u578b\u66f4\u52a0\u76f4\u89c2\uff0c\u5f00\u53d1\u4eba\u5458\u66f4\u5bb9\u6613\u7406\u89e3\u3002\u51fa\u4e8e\u53ef\u7f16\u7a0b\u6027\uff0c\u7075\u6d3b\u6027\u7b49\u65b9\u9762\u7684\u8003\u8651\uff0cjava-tron \u91c7\u7528\u4e86 Account \u6a21\u578b\u3002 \u5171\u8bc6 \u00b6 \u76ee\u524d\u4e3b\u6d41\u7684\u5171\u8bc6\u6709 PoW\u3001PoS\u3001DPoS \u7b49\u3002PoW \u5373\u5de5\u4f5c\u91cf\u8bc1\u660e\uff0c\u6240\u6709\u8282\u70b9\u90fd\u53c2\u4e0e\u8ba1\u7b97\u4e00\u4e2a\u9884\u671f\u7684 hash \u7ed3\u679c\uff0c\u4f18\u5148\u8ba1\u7b97\u51fa\u7ed3\u679c\u7684\u8282\u70b9\u62e5\u6709\u51fa\u5757\u7684\u6743\u5229\uff0c\u4f46\u662f\u968f\u7740\u7b97\u529b\u4e0d\u65ad\u589e\u957f\uff0c\u8ba1\u7b97 hash \u6240\u9700\u7684\u80fd\u8017\u4e5f\u5728\u4e0d\u65ad\u589e\u5927\uff0c\u800c\u4e14\u5927\u77ff\u573a\u5784\u65ad\u4e86\u5927\u90e8\u5206\u7684\u7b97\u529b\uff0c\u8fd9\u4e5f\u8fdd\u80cc\u4e86\u53bb\u4e2d\u5fc3\u5316\u7684\u521d\u8877\u3002 \u4e3a\u4e86\u89e3\u51b3 PoW \u6240\u9762\u4e34\u7684\u95ee\u9898\uff0c\u6709\u4eba\u63d0\u51fa\u4e86PoS\uff08Proof of Stake\uff09\uff0c\u7b80\u5355\u7406\u89e3\u4e3a\uff1a\u6301\u5e01\u8d8a\u591a\u7684\u8282\u70b9\u83b7\u5f97\u51fa\u5757\u6743\u5229\u7684\u6982\u7387\u5c31\u8d8a\u5927\uff0c\u4f46\u8fd9\u6837\u4f1a\u5bfc\u81f4\u5784\u65ad\u95ee\u9898\uff0c\u6240\u4ee5\u53c8\u5bf9 PoS \u8fdb\u884c\u4e86\u6539\u8fdb\uff0c\u63d0\u51fa\u4e86 DPoS\uff08Delegated Proof of Stake\uff09\uff1a\u901a\u8fc7\u9009\u4e3e\u51fa\u7684\u8d85\u7ea7\u4ee3\u8868\u6765\u4fdd\u8bc1\u53bb\u4e2d\u5fc3\u5316\u7279\u6027\uff0c\u540c\u65f6\u8d85\u7ea7\u4ee3\u8868\u8f6e\u6d41\u8d1f\u8d23\u51fa\u5757\u6765\u63d0\u9ad8\u4e86\u51fa\u5757\u7684\u6548\u7387\u3002java-tron \u76ee\u524d\u91c7\u7528 DPoS \u5171\u8bc6\u673a\u5236\u3002 \u66f4\u591a\u7ec6\u8282\u53ef\u53c2\u770b\uff1a Delegated Proof of Stake \u6301\u4e45\u5316\u5b58\u50a8 \u00b6 \u533a\u5757\u94fe\u4e1a\u52a1\u548c\u4f20\u7edf\u4e92\u8054\u7f51\u4e1a\u52a1\u5b58\u5728\u4e00\u5b9a\u7684\u533a\u522b\uff0c\u533a\u5757\u94fe\u4e1a\u52a1\u5728\u6570\u636e\u5e93\u5c42\u9762\u5e76\u6ca1\u6709\u7279\u522b\u590d\u6742\u7684\u5904\u7406\u903b\u8f91\uff0c\u4f46\u533a\u5757\u94fe\u4e2d\u5b58\u5728\u5927\u91cfkey-value\u7684\u8bfb\u5199\u64cd\u4f5c\uff0c\u6240\u4ee5\u5bf9\u6570\u636e\u7684\u8bfb\u5199\u6027\u80fd\u6709\u7740\u8f83\u9ad8\u7684\u8981\u6c42\u3002 \u57fa\u4e8e\u8fd9\u65b9\u9762\u7684\u8003\u8651\uff0cjava-tron \u9ed8\u8ba4\u91c7\u7528 LevelDB \u4f5c\u4e3a\u5e95\u5c42\u6570\u636e\u5b58\u50a8\uff0c\u5e76\u4e14 java-tron \u6709\u7740\u826f\u597d\u7684\u67b6\u6784\u8bbe\u8ba1\uff0c\u91c7\u7528\u9762\u5411\u63a5\u53e3\u7f16\u7a0b\u7684\u6a21\u5f0f\u4f7f\u5f97 chainbase \u6a21\u5757\u62e5\u6709\u7740\u8f83\u597d\u7684\u6269\u5c55\u6027\uff0c\u4efb\u4f55\u5b9e\u73b0\u4e86 chainbase \u63a5\u53e3\u7684\u6570\u636e\u5e93\u90fd\u53ef\u4ee5\u4f5c\u4e3a java-tron \u7684\u5e95\u5c42\u5b58\u50a8\u5f15\u64ce\uff0c\u6bd4\u5982\u5728 chainbase v2 \u7248\u672c\u4e2d\u63d0\u4f9b\u4e86\u57fa\u4e8e RocksDB \u7684\u6570\u636e\u5e93\u5b9e\u73b0\u3002 \u4ea4\u6613\u9a8c\u8bc1 \u00b6 \u4f17\u6240\u5468\u77e5\u533a\u5757\u94fe\u4e2d\u4e3b\u8981\u5b58\u50a8\u7684\u662f\u4ea4\u6613\u6570\u636e\uff0c\u4ecb\u7ecd chainbase \u6a21\u5757\u524d\u9700\u8981\u9996\u5148\u4e86\u89e3 java-tron \u4e2d\u4ea4\u6613\u7684\u5904\u7406\u903b\u8f91\u3002 \u4ea4\u6613\u4f1a\u901a\u8fc7\u7f51\u7edc\u5e7f\u64ad\u5206\u53d1\u5230\u5404\u4e2a\u8282\u70b9\uff0c\u8282\u70b9\u63a5\u6536\u4ea4\u6613\u540e\uff0c\u9996\u5148\u4f1a\u5bf9\u4ea4\u6613\u7684\u7b7e\u540d\u505a\u6821\u9a8c\uff0c\u9a8c\u8bc1\u6210\u529f\u540e\u8fd8\u9700\u8981\u5bf9\u4ea4\u6613\u8fdb\u884c\u9884\u6267\u884c\uff0c\u4ee5\u6b64\u6765\u5224\u65ad\u8be5\u4ea4\u6613\u662f\u5426\u5408\u6cd5\u3002 \u6ce8\uff1ajava-tron \u7684\u5177\u4f53\u5b9e\u73b0\u548c\u4e0a\u56fe\u6709\u6240\u504f\u5dee\uff0c\u540c\u65f6\u4e3a\u4e86\u65b9\u4fbf\u8d77\u89c1\uff0c\u672c\u6587\u5c06 FullNode \u8282\u70b9\u548c SR \u7edf\u79f0\u4e3a\u8282\u70b9\u3002 \u6bd4\u5982\u5904\u7406\u4e00\u7b14\u8f6c\u8d26\u4ea4\u6613\uff1a\u7528\u6237A\u5411\u7528\u6237B\u8f6c\u8d26100\u4e2a TRX\uff0c\u9700\u8981\u9a8c\u8bc1\u7528\u6237A\u662f\u5426\u6709\u8db3\u591f\u7684\u4f59\u989d\u6765\u8fdb\u884c\u8f6c\u8d26\u3002 \u6570\u636e\u5e93\u4e2d\u7684 account \u5e93\u4fdd\u5b58\u4e86\u6240\u6709\u7528\u6237\u7684\u8d26\u6237\u4fe1\u606f\uff0c\u5305\u62ec\u7528\u6237\u7684\u4f59\u989d\u4fe1\u606f\uff0c\u90a3\u5982\u4f55\u5224\u65ad\u8fd9\u4e2a\u8f6c\u8d26\u4ea4\u6613\u662f\u5426\u5408\u6cd5\uff1fjava-tron \u7684\u903b\u8f91\u662f\uff1a\u5f53\u4ece\u7f51\u7edc\u4e2d\u63a5\u6536\u5230\u4ea4\u6613\u540e\uff0c\u4f1a\u7acb\u5373\u6267\u884c\u8be5\u4ea4\u6613\u64cd\u4f5c\uff0c\u5373\u5728\u672c\u5730\u7684\u6570\u636e\u5e93\u4e2d\u5c06\u8d26\u6237\u4fe1\u606f\u8fdb\u884c\u4fee\u6539\uff1a\uff08accountA - 100TRX\uff0caccountB + 100TRX\uff09\u3002\u5047\u5982\u8fd9\u4e2a\u64cd\u4f5c\u80fd\u591f\u6267\u884c\u6210\u529f\uff0c\u90a3\u4e48\u8bf4\u660e\u81f3\u5c11\u5728\u5f53\u524d\u72b6\u6001\u4e0b\u8fd9\u4e2a\u4ea4\u6613\u662f\u5408\u6cd5\u7684\uff0c\u53ef\u4ee5\u6253\u5305\u81f3\u533a\u5757\u4e2d\u3002 \u540d\u8bcd\u89e3\u91ca \u00b6 SR\uff1a\u8d85\u7ea7\u4ee3\u8868(Super Representative)\uff0c\u8d1f\u8d23\u4ea7\u5757 FullNode\uff1a\u5168\u8282\u70b9\uff0c\u5b58\u50a8\u5168\u91cf\u533a\u5757\u6570\u636e\uff0c\u8d1f\u8d23\u4ea4\u6613\u3001\u533a\u5757\u7684\u5e7f\u64ad\u548c\u6821\u9a8c\uff0c\u5e76\u63d0\u4f9b\u67e5\u8be2\u670d\u52a1 TRX\uff1a\u6ce2\u573a\u539f\u751f\u4ee3\u5e01 \u72b6\u6001\u56de\u6eda \u00b6 \u4e0a\u9762\u6211\u4eec\u8bb2\u5230java-tron\u901a\u8fc7\u9884\u6267\u884c\u6765\u9a8c\u8bc1\u4ea4\u6613\u662f\u5426\u5408\u6cd5\uff0c\u4f46\u6211\u4eec\u9700\u8981\u77e5\u9053\u7684\u662f\u8be5\u4ea4\u6613\u5728\u67d0\u4e2a\u8282\u70b9\u4e0a\u9a8c\u8bc1\u6210\u529f\u5e76\u4e0d\u4ee3\u8868\u8be5\u4ea4\u6613\u5df2\u6210\u529f\u4e0a\u94fe\uff0c\u56e0\u4e3a\u8be5\u4ea4\u6613\u5e76\u672a\u6253\u5305\u5230\u5df2\u5171\u8bc6\u7684\u533a\u5757\u4e2d\uff0c\u5b58\u5728\u88ab\u56de\u6eda\u7684\u98ce\u9669\u3002 java-tron \u7684\u5171\u8bc6\u9075\u5faa\u4e86\u4e00\u4e2a\u539f\u5219\uff1a\u5373\u8d85\u8fc72/3\u4e2a\u8d85\u7ea7\u4ee3\u8868\u8ba4\u540c\u7684\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u624d\u662f\u771f\u6b63\u6210\u529f\u4e0a\u94fe\u7684\u4ea4\u6613\u3002\u4e5f\u53ef\u4ee5\u7406\u89e3\u4e3a\uff1a \u4ea4\u6613\u88ab\u6253\u5305\u8fdb\u5165\u533a\u5757 \u8be5\u533a\u5757\u88ab\u8d85\u8fc72/3\u4e2a SR \u6240\u63a5\u53d7 \u6ee1\u8db3\u4e0a\u8ff0\u4e24\u70b9\u7684\u4ea4\u6613\u624d\u662f\u6210\u529f\u4e0a\u94fe\u7684\u4ea4\u6613\u3002java-tron \u4e2d\u4e00\u4e2a\u4ea4\u6613\u88ab\u6700\u7ec8\u786e\u8ba4\u9700\u8981\u7ecf\u5386\u4e09\u4e2a\u9636\u6bb5\uff1a \u4ea4\u6613\u6821\u9a8c \u4ea4\u6613\u6253\u5305\u8fdb\u533a\u5757 \u8be5\u533a\u5757\u88ab\u7f51\u7edc\u5927\u90e8\u5206\u8282\u70b9\u63a5\u6536\u5e76\u5e94\u7528 \u8fd9\u4e5f\u5c31\u5f15\u51fa\u4e86\u4e00\u4e2a\u95ee\u9898\uff1a\u5728 java-tron \u7684\u5b9e\u73b0\u4e2d\uff0c\u4e00\u4e2a\u8282\u70b9\u5982\u679c\u5bf9\u4ea4\u6613\u505a\u9a8c\u8bc1\u540e\uff0c\u5b83\u7684\u6570\u636e\u5e93\u72b6\u6001\u968f\u4e4b\u8fdb\u884c\u4e86\u6539\u53d8\uff0c\u5047\u5982\u8fd9\u4e2a\u4ea4\u6613\u6700\u7ec8\u5e76\u672a\u6253\u5305\u8fdb\u533a\u5757\u6216\u8be5\u533a\u5757\u5e76\u672a\u6ee1\u8db3\u8d85\u8fc72/3\u4e2a SR \u63a5\u53d7\uff0c\u90a3\u8fd9\u4e2a\u8282\u70b9\u7684\u72b6\u6001\u548c\u6574\u4e2a\u7f51\u7edc\u7684\u72b6\u6001\u5c31\u4f1a\u4e0d\u4e00\u81f4\u3002 \u6240\u4ee5 \u9664\u4e86\u5904\u7406\u88ab\u8d85\u8fc72/3\u4e2aSR\u8ba4\u53ef\u7684\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u6570\u636e\u5916\uff0c\u5176\u4f59\u6240\u6709\u5bf9\u4ea4\u6613\u505a\u5904\u7406\u800c\u4ea7\u751f\u7684\u6570\u636e\u72b6\u6001\u7684\u53d8\u5316\u90fd\u6709\u53ef\u80fd\u9700\u8981\u56de\u6eda \u3002\u800c\u4e14\u9700\u8981\u56de\u6eda\u7684\u60c5\u51b5\u4e0d\u6b62\u4e00\u79cd\uff0c\u603b\u5171\u4e09\u79cd\uff1a \u63a5\u6536\u5230\u65b0\u7684\u533a\u5757\u540e\uff0c\u56de\u6eda\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u751f\u4ea7\u533a\u5757\u540e\uff0c\u56de\u6eda\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u82e5\u53d1\u73b0\u5206\u53c9\u94fe\uff0c\u56de\u6eda\u5206\u53c9\u94fe\u4e2d\u533a\u5757\u7684\u4ea4\u6613\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u8fd93\u79cd\u60c5\u51b5\u9020\u6210\u7684\u6570\u636e\u72b6\u6001\u53d8\u5316\u90fd\u6709\u53ef\u80fd\u9700\u8981\u56de\u6eda\u3002\u4e0b\u9762\u4f9d\u6b21\u8bb2\u89e3\u4e3a\u4f55\u8fd9\u4e09\u5904\u9700\u8981\u56de\u6eda\u3002 \u63a5\u6536\u65b0\u533a\u5757\u540e\u7684\u72b6\u6001\u56de\u6eda \u00b6 \u5728\u63a5\u6536\u5230\u65b0\u7684\u533a\u5757\u65f6\uff0c\u8282\u70b9\u9700\u8981\u56de\u6eda\u5230\u4e0a\u4e2a\u533a\u5757\u7684\u7ed3\u675f\u65f6\u72b6\u6001\uff0c\u56de\u6eda\u6389\u6240\u6709\u4e4b\u540e\u9a8c\u8bc1\u7684\u4ea4\u6613\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u5047\u5982\u8282\u70b9\u5728\u533a\u5757\u9ad8\u5ea6\u4e3a1000\u65f6 accountA \u8d26\u6237\u4f59\u989d\u4e3a100\uff0c\u6b64\u65f6\u63a5\u6536\u5e76\u6821\u9a8c\u4e86\u4e00\u4e2a\u8f6c\u8d26\u4ea4\u6613t1\uff0c\u5e76\u5c06\u81ea\u5df1\u7684100TRX\u8f6c\u8d26\u7ed9\u4e86 accountB\uff0c\u5f53\u63a5\u6536\u5230\u4e86\u65b0\u7684block1001\u540e\uff0c\u8be5block\u5305\u542b\u4e86\u4e00\u4e2a accountA \u8f6c50TRX\u7ed9 accountC \u7684\u4ea4\u6613t2\uff0c\u7406\u8bba\u4e0at2\u5df2\u7ecf\u6253\u5305\u8fdb\u533a\u5757\uff0c\u4f18\u5148\u7ea7\u662f\u8981\u4f18\u4e8et1\uff0c\u4f46\u662f\u5982\u679c\u4e0d\u505a\u4efb\u4f55\u64cd\u4f5c\u7684\u8bdd\uff0ct2\u7684\u6821\u9a8c\u5c06\u65e0\u6cd5\u901a\u8fc7\uff0c\u56e0\u4e3a accountA \u6ca1\u6709\u8db3\u591f\u7684\u4f59\u989d\uff0c\u6240\u4ee5\u5728\u63a5\u6536\u5230\u65b0\u7684\u533a\u57571001\u540e\uff0c\u9700\u8981\u5c06\u4ea4\u6613t1\u6240\u4ea7\u751f\u7684\u7684\u72b6\u6001\u53d8\u66f4\u8fdb\u884c\u56de\u6eda\u3002 \u751f\u4ea7\u533a\u5757\u540e\u7684\u72b6\u6001\u56de\u6eda \u00b6 \u9996\u5148\u8bfb\u8005\u53ef\u80fd\u4f1a\u6709\u4e00\u4e2a\u7591\u95ee\uff1a\u5df2\u7ecf\u9a8c\u8bc1\u8fc7\u7684\u4ea4\u6613\u76f4\u63a5\u6253\u5305\u5230\u533a\u5757\u4e2d\u5373\u53ef\uff0c\u4e5f\u4e0d\u4f1a\u5bf9\u6570\u636e\u5e93\u72b6\u6001\u9020\u6210\u6539\u53d8\uff0c\u4e3a\u4f55\u8fd8\u6709\u6570\u636e\u5e93\u72b6\u6001\u7684\u53d8\u66f4\uff1f \u56e0\u4e3ajava-tron \u5728\u5c06\u4ea4\u6613\u6253\u5305\u5230\u533a\u5757\u65f6\u5bf9\u4ea4\u6613\u505a\u4e86\u4e8c\u6b21\u6821\u9a8c\uff0c\u505a\u4e8c\u6b21\u6821\u9a8c\u662f\u56e0\u4e3a\u4ea4\u6613\u7684\u65f6\u6548\u6027\u95ee\u9898\uff0c\u4f9d\u7136\u4ee5\u4e0a\u56fe\u4e3a\u4f8b\uff0c\u56fe\u4e2d\u53ef\u4ee5\u5f97\u77e5\u5728\u63a5\u6536\u5230\u533a\u57571001\u540e\u5bf9\u4ea4\u6613t1\u8fdb\u884c\u4e86\u56de\u6eda\uff0c\u5e76\u4e14\u5c06 accountA \u7684\u4f59\u989d\u51cf\u53bb50\uff0c\u4e4b\u540e\u8f6e\u5230\u8be5\u8282\u70b9\u6253\u5305\u51fa\u5757\uff0c\u4f46\u662f\u6b64\u65f6t1\u5df2\u7ecf\u53d8\u6210\u4e00\u4e2a\u975e\u6cd5\u7684\u4ea4\u6613\uff0c\u56e0\u4e3a accountA \u4e2d\u7684\u4f59\u989d\u5df2\u7ecf\u4e0d\u591f\u652f\u4ed8100\u4e2aTRX\uff0c\u76f4\u63a5\u5c06t1\u6253\u5305\u8fdb\u533a\u5757\u5fc5\u7136\u4e0d\u53ef\u53d6\uff0c\u6240\u4ee5\u9700\u8981\u5bf9\u4ea4\u6613\u518d\u6b21\u8fdb\u884c\u6821\u9a8c\uff0c\u8fd9\u4e5f\u5c31\u662f\u5728\u533a\u5757\u6253\u5305\u65f6\u4f9d\u7136\u9700\u8981\u5bf9\u4ea4\u6613\u505a\u4e8c\u6b21\u6821\u9a8c\u7684\u539f\u56e0\u3002 \u800c\u533a\u5757\u6253\u5305\u6210\u529f\u540e\uff0c\u8be5\u8282\u70b9\u4f1a\u5c06\u5411\u7f51\u7edc\u5e7f\u64ad\u8be5\u533a\u5757\uff0c\u540c\u65f6\u4e5f\u5728\u672c\u5730 apply\u8be5\u533a\u5757\uff0c\u800c apply \u7684\u903b\u8f91\u5219\u4f1a\u5bf9\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u518d\u6b21\u6821\u9a8c\uff0c\u6240\u4ee5\u5728\u6253\u5305\u5b8c\u533a\u5757\u540e\u4ecd\u7136\u9700\u8981\u6267\u884c\u56de\u6eda\u64cd\u4f5c\u3002 \u5206\u53c9\u94fe\u7684\u72b6\u6001\u56de\u6eda \u00b6 \u8fd9\u662f\u6700\u540e\u4e00\u79cd\u56de\u6eda\u7684\u60c5\u51b5\uff0c\u533a\u5757\u94fe\u4e0d\u53ef\u907f\u514d\u7684\u4f1a\u51fa\u73b0\u5206\u53c9\u7684\u60c5\u51b5\uff0c\u5c24\u5176\u662f\u57fa\u4e8e DPoS \u8fd9\u79cd\u51fa\u5757\u901f\u5ea6\u8f83\u5feb\u7684\u533a\u5757\u94fe\u7cfb\u7edf\u66f4\u5bb9\u6613\u51fa\u73b0\u5206\u53c9\u7684\u60c5\u51b5\u3002 java-tron \u5728\u5185\u5b58\u7ef4\u62a4\u4e86\u4e00\u4e2a\u5982\u56fe\u6240\u793a\u7684\u6570\u636e\u7ed3\u6784\uff1a java-tron\u4fdd\u5b58\u4e86\u6700\u8fd1\u8fd8\u672a\u8fbe\u6210\u5171\u8bc6\u7684\u6240\u6709\u533a\u5757\u3002\u5f53\u51fa\u73b0\u5206\u53c9\u94fe\u65f6\uff0c\u6839\u636e\u6700\u957f\u94fe\u539f\u5219\uff1a\u5047\u5982\u5206\u53c9\u94fe\u7684\u533a\u5757\u9ad8\u5ea6\u5927\u4e8e\u76ee\u524d\u4e3b\u94fe\u533a\u5757\u9ad8\u5ea6\uff0c\u5219\u9700\u8981\u5c06\u5206\u53c9\u94fe\u5207\u6362\u6210\u4e3b\u94fe\uff0c\u5207\u6362\u65f6\u5c31\u9700\u8981\u56de\u6eda\u6389\u4e4b\u524d\u4e3b\u94fe\u4e0a\u7684\u4e00\u90e8\u5206\u533a\u5757\u76f4\u5230\u5b83\u4eec\u5171\u540c\u7684\u7236\u533a\u5757\uff0c\u7136\u540e\u4ece\u8be5\u7236\u533a\u5757\u5904\u4f9d\u6b21 apply \u65b0\u7684\u4e3b\u94fe\u533a\u5757\u3002 \u5982\u56fe\uff0c\u6df1\u8272\u90e8\u5206\u7684 fork A \u539f\u5148\u4e3a\u4e3b\u94fe\uff0c\u7531\u4e8efork B \u7684\u9ad8\u5ea6\u4e0d\u65ad\u589e\u957f\u6700\u7ec8\u8d85\u8fc7\u4e86 A \u7684\u9ad8\u5ea6\uff0c\u6b64\u65f6\u5c31\u9700\u8981\u56de\u6eda\u6389 fork A \u4e2d\u9ad8\u5ea6\u4e3a1003\u30011002\u30011001\u7684\u4e09\u4e2a\u533a\u5757\u6570\u636e\uff0c\u7136\u540e\u4f9d\u6b21 apply fork B \u4e2d 1001'\u30011002'\u30011003'\u30011004'\u533a\u5757\u3002 \u72b6\u6001\u56de\u6eda\u5b9e\u73b0 \u00b6 \u672c\u7ae0\u8282\u4ece\u4ee3\u7801\u7684\u89d2\u5ea6\u8bb2\u89e3\u63a5\u6536\u4ea4\u6613\u3001\u4ea4\u6613\u9a8c\u8bc1\u3001\u751f\u6210\u533a\u5757\u3001\u9a8c\u8bc1\u533a\u5757\u3001\u4fdd\u5b58\u533a\u5757\uff0c\u6765\u66f4\u8fdb\u4e00\u6b65\u89e3\u6790java-tron\u7684chainbase\u6a21\u5757\u3002\u5982\u6ca1\u6709\u7279\u6b8a\u58f0\u660e\uff0c\u5219\u9ed8\u8ba4\u63cf\u8ff0\u7684\u4e3aFullnode\uff08\u5305\u542bSR\uff09\u7684\u903b\u8f91\u3002 \u4ea4\u6613\u63a5\u6536 \u00b6 \u8282\u70b9\u6536\u5230\u5e7f\u64ad\u8fc7\u6765\u7684\u4ea4\u6613\u540e\uff0c\u901a\u8fc7\u8c03\u7528Manager\u7c7b\u7684 pushTransaction(final TransactionCapsule trx) \u51fd\u6570\u5c06\u4ea4\u6613\u653e\u5230\u672c\u5730\u7684pushTransactionQueue\u7f13\u5b58\u961f\u5217\uff0c\u540c\u65f6\u5bf9\u8be5\u4ea4\u6613\u8fdb\u884c\u9a8c\u8bc1\uff0c\u6b64\u65b9\u6cd5\u7684\u8fd4\u56de\u6bd4\u8f83\u8003\u7a76\uff1a \u5982\u679c\u9a8c\u8bc1\u6210\u529f\u76f4\u63a5\u8fd4\u56detrue \u5bf9\u4e8e\u7528\u6237\u901a\u8fc7API\u5411\u8282\u70b9\u53d1\u9001\u7684\u4ea4\u6613\uff0c\u4ea4\u6613\u9a8c\u8bc1\u5931\u8d25\uff0c\u4f1a\u629b\u51fa\u5f02\u5e38\uff0c\u7528\u6237\u4f1a\u62ff\u5230\u5f02\u5e38\u4fe1\u606f\u3002\u5bf9\u4e8e\u8282\u70b9\u901a\u8fc7P2P\u7f51\u7edc\u4ece\u5176\u4ed6\u8282\u70b9\u63a5\u53d7\u5230\u7684\u4ea4\u6613\u53ea\u4f1a\u5c06\u5f02\u5e38\u8bb0\u5f55\u5728\u672c\u5730\u3002 \u4ea4\u6613\u9a8c\u8bc1\u6210\u529f\u4e4b\u540e\uff0c\u6ca1\u6709\u95ee\u9898\u7684\u4ea4\u6613\u4f1a\u653e\u5165pendingTransactionQueue\uff0cpendingTransactionQueue\u8d1f\u8d23\u5728\u751f\u6210\u533a\u5757\u65f6\u63d0\u4f9b\u4ea4\u6613\u96c6\u5408\u3002\u5982\u679c\u8282\u70b9\u4e3aSR\u8282\u70b9\u65f6\uff0c\u5f53\u8f6e\u5230\u5230\u5b83\u4ea7\u5757\u65f6\uff0c\u5c31\u4ecependingTransactionQueue\u4e2d\u62ff\u51fa\u6765\u5168\u90e8\u6216\u8005\u90e8\u5206\uff08\u53d6\u51b3\u4e8ependingTransactionQueue\u4e2d\u6709\u591a\u5c11\u4ea4\u6613\uff09\u6765\u751f\u6210\u4e00\u4e2a\u533a\u5757\u3002 \u6536\u5230\u65b0\u533a\u5757\u65f6\u7684\u72b6\u6001\u56de\u6eda \u00b6 \u8282\u70b9\u5728\u6536\u5230\u65b0\u533a\u5757\u524d\u4e5f\u4f1a\u6536\u5230\u4ea4\u6613\u5e7f\u64ad\u6216\u6536\u5230\u6765\u81ea\u5176\u4ed6\u8282\u70b9\u7684\u4ea4\u6613\u5e7f\u64ad\uff0c\u9700\u8981\u5bf9\u63a5\u6536\u5230\u7684\u4ea4\u6613\u8fdb\u884c\u9a8c\u8bc1\u6765\u5224\u65ad\u8be5\u4ea4\u6613\u662f\u5426\u80fd\u6b63\u786e\u7684\u6267\u884c\uff0c\u9a8c\u8bc1\u4e5f\u5c31\u610f\u5473\u7740\u9700\u8981\u6539\u53d8\u72b6\u6001\uff0c\u800c\u9a8c\u8bc1\u6210\u529f\u7684\u4ea4\u6613\u5e76\u4e0d\u4ee3\u8868\u8fd9\u4e2a\u4ea4\u6613\u5c31\u4e00\u5b9a\u80fd\u6700\u7ec8\u6267\u884c\uff0c\u8fd8\u8981\u518d\u7ecf\u8fc7\u6253\u5305\u8fdb\u533a\u5757\u548c\u56fa\u5316\u7684\u8fc7\u7a0b\uff0c\u8fd9\u6b65\u53ef\u4ee5\u8ba4\u4e3a\u662f\u63d0\u524d\u5148\u7b5b\u9009\u6389\u90a3\u4e9b\u660e\u663e\u9519\u8bef\u7684\u4ea4\u6613\uff0c\u8fd9\u91cc\u53ea\u662f\u9a8c\u8bc1\u3002 \u6240\u4ee5\u65b0\u7684\u533a\u5757\u5230\u6765\u65f6\u8fd9\u4e9b\u4ea4\u6613\u9a8c\u8bc1\u6240\u4ea7\u751f\u7684\u72b6\u6001\u90fd\u662f\u5e94\u8be5\u88ab\u56de\u6eda\u6389\u7684\uff0c\u53ea\u6709\u5728apply \u533a\u5757\u65f6\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u624d\u4e0d\u4f1a\u56de\u6eda\u3002 \u56de\u6eda\u65f6\u9700\u8981\u5c06pendingTransactionQueue\u4e2d\u7684\u4ea4\u6613\u632a\u81f3rePushTransactions\uff0c\u5e76\u6e05\u7a7apendingTransactionQueue\uff0c\u8be6\u7ec6\u89e3\u91ca\u770b\u56fe\u3002 \u4e3a\u4ec0\u4e48\u65b0\u7684\u533a\u5757\u5230\u6765\u540e\u9700\u8981\u6e05\u7a7apendingTransactionQueue\uff1f\u9996\u5148\u660e\u786e\u4e00\u70b9\uff0cpendingTransactionQueue\u961f\u5217\u8d1f\u8d23\u5728\u751f\u6210\u533a\u5757\u65f6\u63d0\u4f9b\u4ea4\u6613\u6570\u636e\uff0c\u4e5f\u5c31\u662f\u8bf4\u5b58\u653e\u7684\u662f\u9a8c\u8bc1\u8fc7\u7684\u53ef\u4ee5\u76f4\u63a5\u6253\u5305\u8fdb\u533a\u5757\u7684\u4ea4\u6613\uff0c\u4f46\u662f\u56e0\u4e3a\u65b0\u7684\u533a\u5757\u4e5f\u4f1a\u5bf9\u8d26\u6237\u72b6\u6001\u8fdb\u884c\u53d8\u66f4\uff0c\u53ef\u80fdpendingTransactionQueue\u91cc\u9762\u4e4b\u524d\u9a8c\u8bc1\u6ca1\u95ee\u9898\u7684\u4ea4\u6613\u5728apply\u65b0\u7684\u533a\u5757\u540e\u9a8c\u8bc1\u4e0d\u901a\u8fc7\uff08\u6700\u7b80\u5355\u7684\u4f8b\u5b50\uff1a\u65b0\u533a\u5757\u67d0\u7b14\u4ea4\u6613\u662f\u8d26\u6237A\u82b1\u8d39\u4e86\u4e00\u90e8\u5206token\uff0c\u5bfc\u81f4\u8d26\u6237A\u5728\u961f\u5217\u4e2d\u7684\u67d0\u7b14\u4ea4\u6613\u91d1\u989d\u4e0d\u591f\u652f\u4ed8\u4e86\uff09\u3002\u5c06\u4ea4\u6613\u632a\u81f3rePushTransactions\u540e\u4f1a\u6709\u540e\u53f0\u7ebf\u7a0b\u4e13\u95e8\u8d1f\u8d23\u5bf9\u8be5\u961f\u5217\u4e2d\u7684\u4ea4\u6613\u518d\u6b21\u9a8c\u8bc1\uff0c\u5982\u679c\u6ca1\u6709\u95ee\u9898\u5c31\u518d\u6b21\u653e\u8fdbpendingTransactionQueue\uff0c\u4e3a\u4ea7\u751f\u533a\u5757\u63d0\u4f9b\u6570\u636e\u3002 Java-tron\u4e2d\u5b58\u5728\u4e00\u4e2asession\u5bf9\u8c61\uff0c\u4e00\u4e2asession\u8868\u793a\u7684\u662f\u4e00\u4e2a\u533a\u5757\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0csession\u5bf9\u8c61\u4e3b\u8981\u7528\u6765\u56de\u6eda\uff0c\u6bd4\u5982\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e00\u4e2a\u533a\u5757\u7684\u72b6\u6001\u90fd\u9700\u8981\u901a\u8fc7session\u6765\u64cd\u4f5c\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u4e0a\u56fe\u56fe\u4e2d\u80fd\u770b\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\u6709\u5f88\u591a\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u5e93\uff0c\u5c31\u662f\u8fd9\u4e9b\u6570\u636e\u5171\u540c\u7ec4\u7ec7\u6210\u4e00\u4e2a\u5b8c\u6574\u7684\u533a\u5757\u94fe\uff0c\u6bd4\u5982\u533a\u5757\u5b58\u50a8\u5728 khasodb \u548c blockStore \u4e2d\uff0c\u8d26\u6237\u4fe1\u606f\u5b58\u50a8\u5728 accountStore \u4e2d.... \u8282\u70b9\u7ef4\u62a4\u4e86\u4e00\u4e2a session \u94fe\u8868\uff0c\u8be5\u94fe\u8868\u5b58\u50a8\u7684\u662f\u533a\u5757/\u4ea4\u6613\u5bf9\u5e94\u7684\u53d8\u66f4\u4fe1\u606f\uff0c\u8282\u70b9\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e9b\u53d8\u66f4\u4fe1\u606f\u8fdb\u884c\u56de\u9000\u3002\u4e0a\u56fe\u4e2d session1 \u662f\u5f53\u524d\u6700\u9ad8\u533a\u5757\u7684\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0c\u5f53\u6b21\u63a5\u6536\u5230\u4e00\u4e2a\u4ea4\u6613\u540e\u4f1a\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684 session2 \uff0c\u540e\u7eed\u63a5\u6536\u4e00\u4e2a\u4ea4\u6613\u90fd\u4f1a\u4ea7\u751f\u4e00\u4e2a\u4e34\u65f6\u7684tmpSession\uff0c\u8be5\u4ea4\u6613\u9a8c\u8bc1\u540e\uff0ctmpSession\u7acb\u9a6c\u5408\u5e76\u5230session2\u4e2d\uff0c\u518d\u6b21\u63a5\u53d7\u5230\u4e00\u4e2a\u65b0\u533a\u5757\u4e4b\u524d\uff0c\u6240\u6709\u7684\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u90fd\u4f1a\u4fdd\u5b58\u5728 session2 \u4e2d\uff0c\u5f53\u6709\u65b0\u533a\u5757\u5230\u6765\u65f6\uff0c\u76f4\u63a5\u6267\u884c session2 \u7684 reset \u65b9\u6cd5\u5373\u53ef\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e2a\u533a\u5757\u3002 \u751f\u4ea7\u533a\u5757\u65f6\u7684\u72b6\u6001\u56de\u6eda \u00b6 SR\u751f\u4ea7\u533a\u5757\u524d\u9700\u8981\u56de\u6eda\uff0c\u539f\u56e0\u6bd4\u8f83\u590d\u6742\uff0c\u6211\u4eec\u5148\u8003\u8651\u4e00\u4e2a\u573a\u666f\uff1a pendingTransactionQueue \u4e2d\u5b58\u653e\u662f\u5f53\u524d\u5df2\u7ecf\u9a8c\u8bc1\u8fc7\u7684\u4ea4\u6613\uff0c\u6240\u4ee5\u67d0SR\u8282\u70b9\u4ea7\u5757\u65f6\u53ea\u8981\u76f4\u63a5\u6253\u5305pendingTransactionQueue \u4e2d\u7684\u4ea4\u6613\u8fdb\u533a\u5757\uff0c\u6253\u5305\u5b8c\u4e4b\u540e\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e00\u4e2a\u533a\u5757\u7684\u72b6\u6001\u5373\u53ef\u3002 \u4f46\u662f\u8fd9\u79cd\u65b9\u6848\u5b58\u5728\u4e00\u4e2a\u95ee\u9898\uff1a\u5047\u5982\u8be5 SR \u8282\u70b9\u521a\u521a\u63a5\u6536\u5e76 apply \u4e00\u4e2a\u65b0\u7684\u533a\u5757\uff0c\u4ece\u524d\u9762\u7684\u5185\u5bb9\u53ef\u77e5 pendingTransactionQueue \u5c06\u88ab\u6e05\u7a7a\u81f3rePushTransactions\uff0c\u6b64\u65f6\u6b63\u597d\u8f6e\u5230\u8fd9\u4e2a SR \u6253\u5305\u533a\u5757\u4e86\uff0c\u4f46 SR \u7684 pendingTransactionQueue \u4e2d\u6ca1\u6709\u4ec0\u4e48\u4ea4\u6613\u3002\u6240\u4ee5\u771f\u6b63\u7684\u5b9e\u73b0\u662f\uff0c\u4ea7\u5757\u65f6\u4e0d\u6b62\u4ece pendingTransactionQueue \u8bfb\u53d6\u4ea4\u6613\uff0c\u5982\u679c pendingTransactionQueue \u4e2d\u4ea4\u6613\u8f83\u5c11\u65f6\uff0c\u8fd8\u4f1a\u4ece rePushTransactions \u4e2d\u8bfb\u53d6\u4ea4\u6613\u6765\u653e\u8fdb\u533a\u5757\uff0c\u800c\u901a\u8fc7\u4e0a\u9762\u7684\u5206\u6790\u53ef\u77e5 rePushTransactions \u4e2d\u7684\u4ea4\u6613\u6709\u53ef\u80fd\u5df2\u7ecf\u4e0d\u80fd\u901a\u8fc7\u4e86\uff0c\u6240\u4ee5\u9700\u8981\u5bf9\u4ea4\u6613\u518d\u6b21\u8fdb\u884c\u9a8c\u8bc1\u3002\u800c\u6b63\u662f\u56e0\u4e3a\u6709\u8fd9\u4e2a\u9a8c\u8bc1\u903b\u8f91\uff0c\u624d\u9700\u8981\u5728\u51fa\u5757\u524d\u5148\u5c06\u72b6\u6001\u56de\u6eda\u3002 \u751f\u4ea7\u533a\u5757\u7684\u8fc7\u7a0b\u4e2d\u4f1a\u5bf9\u4ea4\u6613\u518d\u6b21\u9a8c\u8bc1\uff0c\u6240\u4ee5\u4f1a\u4ea7\u751f\u72b6\u6001\u53d8\u66f4\uff0c\u4f46\u8fd9\u662f\u53ea\u662f\u533a\u5757\u751f\u6210\uff0c \u8fd8\u9700\u8981\u5e7f\u64ad\u533a\u5757\uff0c\u7531\u5e7f\u64ad\u63a5\u53d7\u5230\u7684\u533a\u5757\u4f1a\u771f\u6b63\u7684\u6539\u53d8\u72b6\u6001\uff0c\u6240\u4ee5\u751f\u6210\u533a\u5757\u6240\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u4e5f\u9700\u8981\u88ab\u56de\u6eda\u6389\u3002\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5f53\u533a\u5757\u751f\u4ea7\u5b8c\u6210\u540e\uff0c \u8fd8\u9700\u8981\u5c06session2'' \u56de\u6eda\u6389\u3002 \u533a\u5757\u6301\u4e45\u5316 \u00b6 java-tron\u91c7\u7528\u7684\u662f DPOS \u5171\u8bc6\u673a\u5236\uff0c java-tron \u7684 DPOS \u662f\u6295\u7968\u9009\u51fa\u676527\u4e2a\u8282\u70b9\u5f53\u51fa\u5757\u8282\u70b9\uff08\u4e5f\u79f0\u4e3aSR\uff09\uff0cSR\u6709\u51fa\u5757\u7684\u6743\u5229\u548c\u4e49\u52a1\uff0c\u5e76\u4e14\u88ab\u8d85\u8fc72/3\u4e2aSR\u8ba4\u53ef\u7684block\u5373\u4e3a\u5df2\u7ecf\u8fbe\u6210\u4e00\u81f4\u610f\u89c1\u7684\u533a\u5757\uff0c\u8fd9\u4e9b\u533a\u5757\u4e0d\u80fd\u518d\u88ab\u56de\u6eda\uff0c\u4e5f\u79f0\u4e3a\u56fa\u5316\u5757\uff0c\u53ea\u6709\u56fa\u5316\u7684\u533a\u5757\u624d\u80fd\u88ab\u5199\u5165\u6570\u636e\u5e93\uff0c java-tron\u4e2d SnapshotManager \u662f\u5b58\u50a8\u6a21\u5757\u7684\u5173\u952e\u5165\u53e3\uff0c\u6301\u6709\u4e86\u5f53\u524d\u6240\u6709\u4e1a\u52a1\u6570\u636e\u5e93\u7684\u5f15\u7528\uff0c\u5e76\u5c06\u6570\u636e\u5e93\u5f15\u7528\u5b58\u50a8\u5728\u4e00\u4e2a\u5217\u8868\u4e2d\u3002\u6bcf\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u90fd\u652f\u6301\u5728\u81ea\u8eab\u7684\u57fa\u7840\u4e0a\u65b0\u589e\u4e00\u5c42\u72b6\u6001\u96c6\uff1aSnapshotImpl\uff0cSnapshotImpl \u662f\u4e00\u4e2a\u5185\u5b58 HashMap\uff0c\u591a\u4e2a SnapshotImpl \u901a\u8fc7\u94fe\u8868\u5f62\u5f0f\u5173\u8054\uff0c\u4e00\u4e2a SnapshotImpl \u4fdd\u7559\u4e00\u6b21\u72b6\u6001\u53d8\u66f4\u6240\u6d89\u53ca\u7684\u6570\u636e\u4fee\u6539\uff0c\u4e14 SnapshotImpl \u4e4b\u95f4\u76f8\u4e92\u72ec\u7acb\uff0c\u901a\u8fc7\u8fd9\u79cd\u6570\u636e\u7ed3\u6784\u6765\u5c06\u6bcf\u4e2a\u72b6\u6001\u72ec\u7acb\u5f00\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u4e0a\u56fe\u4e2d SnapshotRoot \u662f\u5bf9\u6301\u4e45\u5316\u6570\u636e\u5e93\u7684\u5c01\u88c5\u7c7b\uff0c\u8d1f\u8d23\u5b58\u50a8\u5df2\u56fa\u5316\u7684\u6570\u636e\u3002 \u524d\u9762\u7684\u7ae0\u8282\u4e2d\u6211\u4eec\u8bb2\u5230session\uff0c\u4e00\u4e2asession\u8868\u793a\u7684\u662f\u4e00\u4e2a\u533a\u5757\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0c\u5b9e\u9645\u4e0a\u4e00\u4e2asession\u5305\u542b\u4e86\u5404\u4e2a\u6570\u636e\u5e93\u5bf9\u5e94SnapshotImpl\uff0c\u6bd4\u5982\u4e0a\u56fe\u4e2d\u533a\u57575\u8fd9\u4e00\u5c42\u6240\u6709\u7684 SnapshotImpl \u5171\u540c\u6784\u6210\u4e86\u533a\u57575\u5bf9\u6574\u4e2a\u6570\u636e\u5e93\u7684\u53d8\u66f4\u3002 \u8282\u70b9\u63a5\u6536\u5230\u65b0\u533a\u5757\u540e\u4ea7\u751f\u7684\u53d8\u66f4\u4e0d\u4f1a\u76f4\u63a5\u5b58\u50a8\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\uff0c\u800c\u662f\u9996\u5148\u5b58\u5728 snapshotImpl \u4e2d\uff0c\u6bcf\u63a5\u6536\u4e00\u4e2a\u533a\u5757\u5bf9\u5e94\u4ea7\u751f\u4e00\u4e2asnapshotImpl \u4e0d\u65ad\u7684\u63a5\u6536\u533a\u5757\u4f1a\u5bfc\u81f4 snapshotImpl \u8d8a\u6765\u8d8a\u591a\uff0c\u4ec0\u4e48\u65f6\u5019\u4f1a\u5199\u5165\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\u5462\uff1f SnapshotManager \u4e2d\u5b58\u5728\u4e24\u4e2a\u53d8\u91cf\uff1asize \u548c maxSize\uff0csize \u6b64\u5904\u6211\u4eec\u7b80\u5355\u7406\u89e3\u4e3a\u76ee\u524d\u5185\u5b58\u4e2d\u6709\u591a\u5c11\u5c42 snapshotImpl\uff0cmaxSIze \u5219\u8868\u793a\u76ee\u524d\u56fa\u5316\u5757\u548c\u6700\u65b0\u5757\u9ad8\u5ea6\u7684\u5dee\u503c\u3002 \u8fd9\u6837\u5c31\u5f88\u660e\u663e\u4e86\uff0c\u5982\u679c size > maxSize\uff0c\u90a3\u4e48\u8bf4\u660e\u6700\u5f00\u59cb\u7684 size-maxSize \u5c42\u7684snapshotImpl \u5bf9\u5e94\u7684\u533a\u5757\u5df2\u7ecf\u662f\u56fa\u5316\u5757\u4e86\uff0c\u5b83\u4eec\u53ef\u4ee5\u843d\u76d8\u4e86\uff0c\u7136\u540e\u4f1a\u5c06\u5e94\u8be5\u843d\u76d8\u7684 snapshotImpl \u5408\u5e76\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\uff0c\u8fd9\u6837\u6765\u786e\u4fdd snapshotImpl \u4e0d\u4f1a\u5360\u7528\u8fc7\u591a\u7684\u5185\u5b58\uff0c\u800c\u4e14\u4e5f\u4fdd\u8bc1\u4e86\u56fa\u5316\u5757\u80fd\u591f\u88ab\u53ca\u65f6\u7684\u6301\u4e45\u5316\u5b58\u50a8\u4e0b\u6765\u3002 \u6570\u636e\u5e93\u539f\u5b50\u6027 \u00b6 Java-tron \u7684\u6570\u636e\u5e93\u5b58\u50a8\u4e0e\u5176\u4ed6\u516c\u94fe\u7565\u6709\u533a\u522b\uff0c\u4f8b\u5982\u4ee5\u592a\u574a\u6301\u4e45\u5316\u5c42\u53ea\u91c7\u7528\u4e86\u4e00\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\uff0c\u4ee5\u592a\u574a\u4e2d\u7684\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u7528\u524d\u7f00\u52a0\u4ee5\u533a\u5206\uff0c\u5b58\u50a8\u5728\u4e00\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e2d\u3002\u800c java-tron \u76ee\u524d\u5219\u5c06\u4e0d\u540c\u4e1a\u52a1\u7c7b\u578b\u7684\u6570\u636e\u5b58\u653e\u5728\u5404\u81ea\u7684\u6570\u636e\u5e93\u5b9e\u4f8b\u4e2d\u3002 \u4e24\u8005\u5b9e\u73b0\u65b9\u5f0f\u5404\u6709\u5343\u79cb\uff0c\u5355\u5b9e\u4f8b\u65b9\u4fbf\u7ef4\u62a4\uff0c\u80fd\u591f\u7edf\u4e00\u5199\u5165\uff0c\u4f46\u7f3a\u70b9\u4e5f\u8f83\u660e\u663e\uff0c\u6bd4\u5982\u968f\u7740\u65f6\u95f4\u63a8\u79fb\u5355\u5e93\u6570\u636e\u91cf\u4e0d\u65ad\u589e\u957f\uff0c\u67d0\u4e9b\u4e1a\u52a1\u6570\u636e\u5e93\u7684\u9891\u7e41\u8bbf\u95ee\u53ef\u80fd\u4f1a\u62d6\u7d2f\u5176\u4ed6\u4e1a\u52a1\u7684\u8bfb\u5199\u6027\u80fd\u3002 \u591a\u5b9e\u4f8b\u5219\u4e0d\u5b58\u5728\u5404\u4e2a\u4e1a\u52a1\u6570\u636e\u8bfb\u5199\u76f8\u4e92\u5f71\u54cd\u7684\u95ee\u9898\uff0c\u4e14\u53ef\u4ee5\u6839\u636e\u5404\u81ea\u7684\u6570\u636e\u91cf\u4e0e\u6027\u80fd\u8981\u6c42\u914d\u7f6e\u4e0d\u540c\u7684\u53c2\u6570\uff0c\u8fbe\u5230\u6027\u80fd\u6700\u5927\u5316\uff0c\u8fd8\u53ef\u4ee5\u5c06\u6570\u636e\u91cf\u8f83\u5927\u7684\u5e93\u72ec\u7acb\u62c6\u5206\u51fa\u53bb\uff0c\u4ee5\u7f13\u89e3\u6570\u636e\u81a8\u80c0\u95ee\u9898\u3002\u4f46\u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u5b58\u5728\u4e00\u4e2a\u4e25\u91cd\u7684\u95ee\u9898\uff1a\u5e76\u6ca1\u6709\u539f\u751f\u5de5\u5177\u652f\u6301\u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e4b\u95f4\u7684\u539f\u5b50\u5199\u5165\u3002 Java-tron \u4e3a\u4e86\u4fdd\u8bc1\u6570\u636e\u5e93\u591a\u5b9e\u4f8b\u7684\u539f\u5b50\u5199\u5165\uff0c\u65b0\u589e\u4e86 checkpoint \u673a\u5236\uff0c\u5728\u591a\u5b9e\u4f8b\u843d\u76d8\u524d\u5c06\u53d8\u66f4\u7684\u6570\u636e\u7edf\u4e00\u5199\u5165 checkpoint\uff0c\u82e5\u591a\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u5728\u5199\u5165\u65f6\u53d1\u751f\u610f\u5916\uff0c\u670d\u52a1\u91cd\u542f\u65f6\u4ece checkpoint \u4e2d\u5c06\u53d8\u66f4\u7684\u6570\u636e\u7edf\u4e00\u6062\u590d\uff0c\u4fdd\u8bc1\u5199\u5165\u7684\u539f\u5b50\u6027\u3002 \u4e0a\u4e00\u8282\u4e2d\u56fa\u5316\u5757\u7684 snapshotImpl \u5199\u5165\u6570\u636e\u5e93\u7684\u8fc7\u7a0b\u4e3b\u8981\u5305\u542b\u4e86\u4e24\u6b65\uff1a \u521b\u5efa checkpoint snapshotImpl \u6267\u884c\u843d\u76d8\u64cd\u4f5c \u521b\u5efa checkpoint \u8fd9\u4e2a\u64cd\u4f5c\u6bd4\u8f83\u5173\u952e, checkpoint \u662f\u5c06\u5185\u5b58\u4e2d\u9700\u8981\u5199\u5165\u6570\u636e\u5e93\u7684 snapshotImpl \u5148\u6301\u4e45\u5316\u7684\u5b58\u50a8\u5728\u4e00\u4e2a tmp \u7684\u6570\u636e\u5e93\u4e2d\uff08\u76ee\u524d\u5e95\u5c42\u5b9e\u73b0\u7684\u662fleveldb\u3001rocksdb\uff09\uff0c\u521b\u5efa checkpoint \u6210\u529f\u4e4b\u540e\u624d\u4f1a\u8fdb\u884c snapshotimpl \u7684\u843d\u76d8\u64cd\u4f5c\uff0c\u5047\u5982\u6b64\u65f6\u843d\u76d8\u65f6\u673a\u5668\u5b95\u673a\uff0c\u90a3\u4e48\u8282\u70b9\u518d\u6b21\u542f\u52a8\u65f6\uff0c\u4f1a\u9996\u5148\u641c\u7d22\u662f\u5426\u5b58\u5728 tmp \u7684 checkpoint \u6570\u636e\uff0c\u5982\u679c\u5b58\u5728\u7684\u8bdd\uff0c\u4f1a\u5c06 checkpoint \u4e2d\u7684\u6570\u636e\u56de\u653e\u81f3 snapshotRoot \u4e2d\u3002 Checkpoint \u6570\u636e\u7ed3\u6784\u5982\u4e0b\uff1a checkpoint\u5c06\u4e00\u6b21\u72b6\u6001\u53d8\u66f4\u7684\u6240\u6709\u6570\u636e\u7edf\u4e00\u5b58\u653e\u5728\u4e00\u4e2a\u6570\u636e\u5e93\u4e2d\uff0c\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u91c7\u7528\u524d\u7f00\u52a0\u4ee5\u533a\u5206\uff0c\u5e76\u4e14\u4e3a\u4e86\u4fdd\u8bc1\u672c\u6b21\u6240\u6709\u7684\u53d8\u66f4\u6570\u636e\u80fd\u591f\u5168\u90e8\u843d\u76d8\uff0c\u5199\u5165\u65f6\u91c7\u7528\u6570\u636e\u5e93\u5e95\u5c42\u8c03\u7528writeBatch() \u7684\u65b9\u5f0f\u3002 \u8fd9\u79cd\u89e3\u51b3\u7684\u601d\u8def\u53ef\u4ee5\u603b\u7ed3\u4e3a\uff1a \u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e4b\u95f4\u65e0\u6cd5\u4fdd\u8bc1\u5199\u5165\u7684\u539f\u5b50\u6027\uff0c\u4f46\u5355\u6570\u636e\u5e93\uff08\u5927\u90e8\u5206\u4e3b\u6d41\u6570\u636e\u5e93\uff09\u652f\u6301\u539f\u5b50\u6027\u5199\u5165 \u5c06\u9700\u8981\u4fdd\u8bc1\u539f\u5b50\u6027\u5199\u5165\u7684\u6570\u636e\u96c6\u9996\u5148\u91c7\u7528\u539f\u5b50\u5199\u5165\u7684\u65b9\u5f0f\uff0c\u5199\u5165\u5230\u4e00\u4e2a\u4e34\u65f6\u5e93\uff0c\u7136\u540e\u5c06\u6570\u636e\u5206\u522b\u5199\u5165\u4e0d\u540c\u7684\u6570\u636e\u5e93\u5b9e\u4f8b\uff0c\u5982\u679c\u53d1\u751f\u610f\u5916\uff0c\u901a\u8fc7\u4e34\u65f6\u5e93\u7684\u6570\u636e\u6765\u6062\u590d\u5373\u53ef\u3002 \u603b\u7ed3 \u00b6 \u672c\u6587\u901a\u8fc7\u4ea4\u6613\u548c\u533a\u5757\u7684\u5904\u7406\u6d41\u7a0b\u6765\u5206\u6790\u4e86 chainbase \u6a21\u5757\u4e2d\u56de\u6eda\u548c\u6570\u636e\u5e93\u5199\u5165\u7684\u5b9e\u73b0\u7ec6\u8282\uff0c\u8fd8\u5206\u6790\u4e86\u6570\u636e\u5e93\u591a\u5b9e\u4f8b\u7684\u539f\u5b50\u5199\u5165\u7684\u539f\u7406\uff0c\u9632\u6b62\u610f\u5916\u5b95\u673a\u5bfc\u81f4\u6570\u636e\u5e93\u635f\u574f\uff0c\u5e0c\u671b\u901a\u8fc7\u9605\u8bfb\u672c\u6587\u80fd\u6709\u52a9\u4e8e\u5f00\u53d1\u8005\u8fdb\u4e00\u6b65\u4e86\u89e3\u548c\u5f00\u53d1java-tron\u6570\u636e\u5e93\u3002 \u7f51\u7edc \u00b6 \u6982\u8ff0 \u00b6 P2P\u662f\u4e00\u79cd\u5206\u5e03\u5f0f\u7f51\u7edc\uff0c\u7f51\u7edc\u7684\u53c2\u4e0e\u8005\u5171\u4eab\u4ed6\u4eec\u6240\u62e5\u6709\u7684\u4e00\u90e8\u5206\u786c\u4ef6\u8d44\u6e90\uff0c\u6bd4\u5982\u5904\u7406\u80fd\u529b\u3001\u5b58\u50a8\u80fd\u529b\u3001\u7f51\u7edc\u8fde\u63a5\u80fd\u529b\u3001\u6253\u5370\u673a\u7b49\uff0c\u8fd9\u4e9b\u5171\u4eab\u7684\u8d44\u6e90\u9700\u8981\u7531\u7f51\u7edc\u63d0\u4f9b\u670d\u52a1\u548c\u5185\u5bb9\uff0c\u80fd\u88ab\u5176\u5b83\u5bf9\u7b49\u8282\u70b9\u76f4\u63a5\u8bbf\u95ee\u800c\u65e0\u9700\u7ecf\u8fc7\u4e2d\u95f4\u5b9e\u4f53\u3002\u5728\u6b64\u7f51\u7edc\u4e2d\u7684\u53c2\u4e0e\u8005\u65e2\u662f\u670d\u52a1\u548c\u5185\u5bb9\u63d0\u4f9b\u8005\uff0c\u53c8\u662f\u670d\u52a1\u548c\u5185\u5bb9\u83b7\u53d6\u8005\u3002 \u533a\u522b\u4e8e\u4f20\u7edf\u7684Client/Server\u4e2d\u592e\u670d\u52a1\u5668\u7ed3\u6784\uff0cP2P\u7f51\u7edc\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u7684\u5730\u4f4d\u90fd\u662f\u5bf9\u7b49\u7684\u3002\u6bcf\u4e2a\u8282\u70b9\u5728\u5145\u5f53\u5ba2\u6237\u7aef\u7684\u540c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u670d\u52a1\u7aef\u7ed9\u5176\u5b83\u8282\u70b9\u63d0\u4f9b\u670d\u52a1\uff0c\u6781\u5927\u5730\u63d0\u9ad8\u4e86\u8d44\u6e90\u7684\u5229\u7528\u7387\u3002 \u533a\u5757\u94fe\u7f51\u7edc \u00b6 P2P \u662f\u533a\u5757\u94fe\u7ed3\u6784\u4e2d\u7684\u7f51\u7edc\u5c42\uff0c\u7f51\u7edc\u5c42\u7684\u4e3b\u8981\u76ee\u7684\u662f\u5b9e\u73b0\u533a\u5757\u94fe\u7f51\u7edc\u4e2d\u8282\u70b9\u4e4b\u95f4\u7684\u4fe1\u606f\u4f20\u64ad\u3001\u9a8c\u8bc1\u548c\u4ea4\u6d41\u3002\u533a\u5757\u94fe\u7f51\u7edc\u672c\u8d28\u4e0a\u662f\u4e00\u4e2aP2P\u7f51\u7edc\uff0c\u6bcf\u4e2a\u8282\u70b9\u65e2\u80fd\u63a5\u53d7\u4fe1\u606f\u4e5f\u80fd\u4ea7\u751f\u4fe1\u606f\u3002\u8282\u70b9\u4e4b\u95f4\u901a\u8fc7\u7ef4\u62a4\u4e00\u4e2a\u5171\u540c\u7684\u533a\u5757\u94fe\u6570\u636e\u6765\u4fdd\u6301\u901a\u4fe1\u3002 P2P\u7f51\u7edc\u4f5c\u4e3a\u533a\u5757\u94fe\u7684\u57fa\u7840\uff0c\u4e3a\u533a\u5757\u94fe\u5e26\u6765\u5982\u4e0b\u4f18\u70b9\uff1a \u9632\u6b62\u5355\u70b9\u653b\u51fb \u9ad8\u5bb9\u9519\u6027 \u8f83\u597d\u7684\u517c\u5bb9\u6027\u4e0e\u53ef\u6269\u5c55\u6027 TRON\u7f51\u7edc \u00b6 TRON\u67b6\u6784\u56fe\u5982\u4e0b\uff1a P2P\u7f51\u7edc\u4f5c\u4e3aTRON\u7684\u6700\u5e95\u5c42\u6a21\u5757\uff0c\u76f4\u63a5\u51b3\u5b9a\u4e86\u6574\u4e2a\u533a\u5757\u94fe\u7f51\u7edc\u7684\u7a33\u5b9a\u6027\u3002\u7f51\u7edc\u6a21\u5757\u6309\u7167\u529f\u80fd\u53ef\u4ee5\u5212\u5206\u6210\u4ee5\u4e0b\u56db\u90e8\u5206\uff1a \u8282\u70b9\u53d1\u73b0 \u8282\u70b9\u8fde\u63a5 \u533a\u5757\u540c\u6b65 \u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad \u4e0b\u9762\u5c06\u5206\u522b\u4ecb\u7ecd\u8fd9\u56db\u4e2a\u529f\u80fd\u90e8\u5206\u3002 \u8282\u70b9\u53d1\u73b0 \u00b6 \u8282\u70b9\u53d1\u73b0\u662f\u533a\u5757\u94fe\u8282\u70b9\u63a5\u5165\u533a\u5757\u94fe\u7f51\u7edc\u7684\u7b2c\u4e00\u6b65\u3002\u533a\u5757\u94fe\u7f51\u7edc\u662f\u4e00\u79cd\u7ed3\u6784\u5316\u7684P2P\u7f51\u7edc\u3002\u7ed3\u6784\u5316\u7f51\u7edc\u4f1a\u5c06\u6240\u6709\u8282\u70b9\u6309\u7167\u67d0\u79cd\u7ed3\u6784\u6709\u5e8f\u7684\u7ec4\u7ec7\u8d77\u6765\uff0c\u6bd4\u5982\u5f62\u6210\u4e00\u4e2a\u73af\u72b6\u7f51\u7edc\u6216\u8005\u6811\u72b6\u7684\u7f51\u7edc\u3002 \u7ed3\u6784\u5316\u7f51\u7edc\u666e\u904d\u57fa\u4e8eDHT(Distributed Hash Table\uff0c\u5206\u5e03\u5f0f\u54c8\u5e0c\u8868) \u7b97\u6cd5\u5b9e\u73b0\u3002\u5177\u4f53\u7684\u5b9e\u73b0\u65b9\u6848\u6709 Chord\u3001Pastry\u3001CAN\u3001Kademlia \u7b49\u7b97\u6cd5\u3002TRON \u7f51\u7edc\u91c7\u7528 Kademlia \u7b97\u6cd5\u3002 Kademlia \u7b97\u6cd5 \u00b6 Kademlia \u662f\u5206\u5e03\u5f0f\u6563\u5217\u8868(DHT\uff0cDistributed Hash Table)\u7684\u4e00\u79cd\u5b9e\u73b0\uff0c\u662f\u53bb\u4e2d\u5fc3\u5316 P2P \u7f51\u7edc\u4e2d\u6700\u6838\u5fc3\u7684\u4e00\u79cd\u8def\u7531\u5bfb\u5740\u6280\u672f\uff0c\u53ef\u4ee5\u5728\u65e0\u4e2d\u5fc3\u670d\u52a1\u5668\u7684\u60c5\u51b5\u4e0b\uff0c\u5728\u7f51\u7edc\u4e2d\u5feb\u901f\u627e\u5230\u76ee\u6807\u8282\u70b9\u3002 \u5173\u4e8e\u7b97\u6cd5\u7684\u8be6\u7ec6\u4ecb\u7ecd\u8bf7\u53c2\u8003 Kademlia \u3002 TRON \u5b9e\u73b0 \u00b6 TRON \u5b9e\u73b0\u7684 Kademlia \u7b97\u6cd5\uff0c\u8981\u70b9\u5982\u4e0b\uff1a \u8282\u70b9ID\uff1a\u968f\u673a\u4ea7\u751f\u7684512bit ID \u8282\u70b9\u8ddd\u79bb\uff1a\u8282\u70b9\u8ddd\u79bb\u901a\u8fc7\u4e24\u4e2a\u8282\u70b9\u7684ID\u5f02\u6216\u8fd0\u7b97\u5f97\u5230\uff0c\u516c\u5f0f\u4e3a\uff1a \u8282\u70b9\u8ddd\u79bb = 256 - \u8282\u70b9ID\u5f02\u6216\u7ed3\u679c\u7684\u524d\u5bfc0\u7684\u4e2a\u6570 \uff0c\u5982\u679c\u8ba1\u7b97\u7ed3\u679c\u4e3a\u8d1f\u6570\uff0c\u8ddd\u79bb\u7b49\u4e8e0\u3002 k\u6876\uff1a\u5373\u8282\u70b9\u8def\u7531\u8868\u3002\u6839\u636e\u8282\u70b9\u8ddd\u79bb\u7684\u8fdc\u8fd1\uff0c\u5c06\u8fdc\u7aef\u8282\u70b9\u5212\u5206\u5230\u4e0d\u540c\u7684\u6876\u4e2d\uff0c\u4e0e\u672c\u8282\u70b9\u8ddd\u79bb\u76f8\u540c\u7684\u8fdc\u7aef\u8282\u70b9\u88ab\u8bb0\u5f55\u5728\u76f8\u540c\u7684\u6876\u4e2d\uff0c\u6bcf\u4e2a\u6876\u6700\u591a\u5bb9\u7eb316\u4e2a\u8282\u70b9\u3002\u6839\u636e\u8282\u70b9\u8ddd\u79bb\u7684\u8ba1\u7b97\u516c\u5f0f\u5c31\u53ef\u4ee5\u770b\u51fa\uff0cTRON \u5b9e\u73b0\u7684 Kademlia \u7b97\u6cd5\u4e00\u5171\u7ef4\u62a4256\u4e2a\u6876\u3002 TRON \u8282\u70b9\u53d1\u73b0\u534f\u8bae\u5305\u62ec\u4ee5\u4e0b\u56db\u79cdUDP\u6d88\u606f\uff1a DISCOVER_PING - \u7528\u4e8e\u63a2\u6d4b\u2f00\u4e2a\u8282\u70b9\u662f\u5426\u5728\u7ebf DISCOVER_PONG - \u7528\u4e8e\u54cd\u5e94 DISCOVER_PING \u6d88\u606f DISCOVER_FIND_NODE - \u7528\u4e8e\u67e5\u627e\u4e0e\u2f6c\u6807\u8282\u70b9\u8ddd\u79bb\u6700\u8fd1\u7684\u5176\u5b83\u8282\u70b9 DISCOVER_NEIGHBORS - \u7528\u4e8e\u54cd\u5e94 DISCOVER_FIND_NODE \u6d88\u606f\uff0c\u4f1a\u8fd4\u56de\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u8282\u70b9\uff0c\u6700\u591a16\u4e2a \u521d\u59cb\u5316K\u6876 \u00b6 \u8282\u70b9\u542f\u52a8\u540e\uff0c\u4f1a\u8bfb\u53d6\u8282\u70b9\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u7684\u79cd\u5b50\u8282\u70b9\uff0c\u4ee5\u53ca\u6570\u636e\u5e93\u4e2d\u8bb0\u5f55\u7684\u5bf9\u7b49\u8282\u70b9\uff0c\u7136\u540e\u5411\u5b83\u4eec\u53d1\u9001 DISCOVER_PING \u6d88\u606f\uff0c\u5982\u679c\u6536\u5230\u56de\u590d DISCOVER_PONG \uff0c\u5728K\u6876\u6ca1\u6ee1\u7684\u60c5\u51b5\u4e0b\uff0c\u5c06\u76f8\u5e94\u8282\u70b9\u5199\u5165K\u6876\uff1b\u5982\u679c\u76f8\u5e94\u6876\u5df2\u7ecf\u8fbe\u5230\u4e8616\u4e2a\u8282\u70b9\uff0c\u5219\u5411\u6876\u4e2d\u6700\u65e9\u7684\u8282\u70b9\u53d1\u8d77\u6311\u6218\uff0c\u6311\u6218\u6210\u529f\uff0c\u5c06\u88ab\u6311\u6218\u8282\u70b9\u5220\u9664\uff0c\u5c06\u6311\u6218\u8282\u70b9\u52a0\u5165K\u6876\u3002K\u6876\u521d\u59cb\u5316\u5b8c\u6210\u540e\uff0c\u8fdb\u884c\u8282\u70b9\u53d1\u73b0\u6d41\u7a0b\u3002 \u53d1\u9001DISCOVER_FIND_NODE\u6d88\u606f\uff0c\u53d1\u73b0\u66f4\u591a\u8282\u70b9 \u00b6 \u8282\u70b9\u53d1\u73b0\u670d\u52a1\u4f1a\u5f00\u542f\u4e24\u4e2a\u8282\u70b9\u53d1\u73b0\u5b9a\u65f6\u4efb\u52a1\uff08 DiscoverTask \u548c RefreshTask \uff09\uff0c\u5468\u671f\u6267\u884c\u8282\u70b9\u53d1\u73b0\u8fc7\u7a0b\u6765\u66f4\u65b0k\u6876\u3002 DiscoverTask \u662f\u53d1\u73b0\u66f4\u591a\u8ddd\u79bb\u81ea\u5df1\u8fd1\u7684\u8282\u70b9\uff0c\u6bcf30s\u6267\u884c\u4e00\u6b21\uff0c\u6267\u884c\u6d41\u7a0b\u5982\u4e0b\u56fe\u6240\u793a: RefreshTask \u662f\u901a\u8fc7\u968f\u673a\u8282\u70b9ID\u6765\u6269\u5145\u672c\u5730k\u6876\uff0c\u5373\u53d1\u73b0\u8ddd\u79bb\u968f\u673a\u8282\u70b9ID\u66f4\u8fd1\u7684\u8282\u70b9\uff0c\u6bcf7.2s\u6267\u884c\u4e00\u6b21\uff0c\u6267\u884c\u6d41\u7a0b\u5982\u4e0b\u56fe\u6240\u793a: DiscoverTask \u548c RefreshTask \u4e2d\u4f7f\u7528\u7684\u8282\u70b9\u53d1\u73b0\u7b97\u6cd5\uff0c\u5728\u4e00\u6b21\u8c03\u7528\u4e2d\u4f1a\u6267\u884c8\u8f6e\uff0c\u6bcf\u8f6e\u5411K\u6876\u4e2d\u8ddd\u79bb\u76ee\u6807\u8282\u70b9 ID \u6700\u8fd1\u76843\u4e2a\u8282\u70b9\u53d1\u9001 DISCOVER_FIND_NODE \u6d88\u606f\uff0c\u5e76\u7b49\u5f85\u56de\u590d\u3002 \u63a5\u6536\u5230neighbors\u6d88\u606f\uff0c\u66f4\u65b0K\u6876 \u00b6 \u5f53\u672c\u8282\u70b9\u63a5\u6536\u5230\u8fdc\u7aef\u8282\u70b9\u56de\u590d\u7684 DISCOVER_NEIGHBORS \u6d88\u606f\u540e\uff0c\u4f1a\u4f9d\u6b21\u5411\u6536\u5230\u7684\u90bb\u5c45\u8282\u70b9\u53d1\u9001 DISCOVER_PING \u6d88\u606f\uff0c\u63a5\u4e0b\u6765\u5982\u679c\u6536\u5230\u4e86\u56de\u590d\u6d88\u606f DISCOVER_PONG \uff0c\u5219\u5224\u65ad\u76f8\u5e94\u7684K\u6876\u662f\u5426\u88c5\u6ee1\uff0c\u5982\u679cK\u6876\u672a\u6ee1\uff0c\u5219\u5c06\u65b0\u8282\u70b9\u52a0\u5165K\u6876\uff0c\u5982\u679cK\u6876\u6ee1\u4e86\uff0c\u5219\u5411\u5176\u4e2d\u7684\u67d0\u4e2a\u8282\u70b9\u53d1\u8d77\u6311\u6218\uff0c\u82e5\u6311\u6218\u6210\u529f(\u5411\u88ab\u6311\u6218\u7684\u8282\u70b9\u53d1\u9001 DISCOVER_PING \u6d88\u606f\uff0c\u5982\u679c\u672a\u80fd\u6536\u5230\u5176\u56de\u590d DISCOVER_PONG \uff0c\u5219\u4e3a\u6311\u6218\u6210\u529f\uff0c\u5426\u5219\u6311\u6218\u5931\u8d25)\uff0c\u5219\u5c06\u65e7\u8282\u70b9\u4eceK\u6876\u4e2d\u5220\u9664\uff0c\u5c06\u65b0\u8282\u70b9\u52a0\u5165K\u6876\u3002 \u8282\u70b9\u5468\u671f\u7684\u6267\u884c\u8282\u70b9\u53d1\u73b0\u4efb\u52a1\uff0c\u4e0d\u65ad\u7684\u66f4\u65b0K\u6876\uff0c\u6784\u5efa\u81ea\u5df1\u7684\u8282\u70b9\u8def\u7531\u8868\u3002\u63a5\u4e0b\u6765\u5c31\u662f\u8282\u70b9\u95f4\u5efa\u7acb\u8fde\u63a5\u7684\u8fc7\u7a0b\u4e86\u3002 \u8282\u70b9\u8fde\u63a5 \u00b6 \u5728\u4e86\u89e3\u8282\u70b9\u95f4\u5982\u4f55\u5efa\u7acbTCP\u8fde\u63a5\u4e4b\u524d\uff0c\u60a8\u9700\u8981\u9996\u5148\u4e86\u89e3peer\u8282\u70b9\u7c7b\u578b\u3002 peer\u8282\u70b9\u7ba1\u7406 \u00b6 \u8282\u70b9\u9700\u8981\u5bf9peer\u8282\u70b9\u8fdb\u884c\u7ba1\u7406\u5206\u7c7b\uff0c\u4ee5\u8fdb\u884c\u9ad8\u6548\u7a33\u5b9a\u7684\u8282\u70b9\u8fde\u63a5\u3002\u8fdc\u7aef\u8282\u70b9\u53ef\u4ee5\u5206\u4e3a\u5982\u4e0b\u51e0\u7c7b\uff1a Active nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0c\u7cfb\u7edf\u542f\u52a8\u540e\uff0c\u4f1a\u4e3b\u52a8\u4e0e\u5176\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\u3002\u5982\u679c\u8fde\u63a5\u5efa\u7acb\u5931\u8d25\uff0c\u5219\u5728\u6bcf\u4e2aTCP\u8fde\u63a5\u5b9a\u65f6\u4efb\u52a1\u4e2d\u90fd\u4f1a\u91cd\u65b0\u5c1d\u8bd5\u4e0e\u5176\u5efa\u7acb\u8fde\u63a5\u3002 Passive nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0c\u88ab\u52a8\u63a5\u53d7\u8fde\u63a5\u7684\u8282\u70b9\u3002 Trust nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0cActive nodes\u548cPassive nodes\u90fd\u662ftrust nodes\u3002\u5f53\u6536\u5230trust node\u7684\u8fde\u63a5\u8bf7\u6c42\u65f6\uff0c\u4f1a\u8df3\u8fc7\u5176\u5b83\u7684\u6761\u4ef6\u68c0\u67e5\uff0c\u76f4\u63a5\u63a5\u53d7\u8bf7\u6c42\u3002 badNodes\uff1a\u5f53\u6536\u5230\u5f02\u5e38\u7684\u534f\u8bae\u62a5\u6587\u65f6\uff0c\u4f1a\u5c06\u8282\u70b9\u52a0\u5165\u5230badNodes\uff0c\u751f\u6548\u65f6\u957f1\u4e2a\u5c0f\u65f6\uff0c\u5f53\u6536\u5230 badNodes \u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u4f1a\u76f4\u63a5\u62d2\u7edd\u8bf7\u6c42 recentlyDisconnectedNodes\uff1a\u5f53\u65ad\u5f00\u67d0\u6761\u8fde\u63a5\u540e\uff0c\u4f1a\u628a\u8282\u70b9\u52a0\u5165\u5230recentlyDisconnectedNodes\uff0c\u6709\u6548\u65f6\u957f30s\uff0c\u5f53\u6536\u5230 recentlyDisconnectedNodes \u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u4f1a\u76f4\u63a5\u62d2\u7edd\u8bf7\u6c42 \u5efa\u7acb\u8282\u70b9\u95f4TCP\u8fde\u63a5 \u00b6 \u5728\u8282\u70b9\u542f\u52a8\u540e\uff0c\u4f1a\u521b\u5efa\u4e00\u4e2a\u5efa\u7acb\u8282\u70b9\u95f4TCP\u8fde\u63a5\u7684\u5b9a\u65f6\u4efb\u52a1 poolLoopExecutor \uff0c\u7528\u4e8e\u9009\u62e9\u8282\u70b9\uff0c\u5e76\u4e0e\u4e4b\u5efa\u7acb\u8fde\u63a5\u3002\u5efa\u7acbTCP\u8fde\u63a5\u5b9a\u65f6\u4efb\u52a1\uff0c\u5de5\u4f5c\u8fc7\u7a0b\u5982\u4e0b\uff1a TCP\u8fde\u63a5\u4e3b\u8981\u5206\u4e3a\u4e24\u6b65\uff1a\u9996\u5148\uff0c\u786e\u5b9a\u8981\u4e0e\u4e4b\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\u7684\u5217\u8868\uff1b\u5217\u8868\u4e2d\u9700\u8981\u5305\u542bactive nodes\u4e2d\u8fd8\u6ca1\u6709\u6210\u529f\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\uff0c\u7136\u540e\u8ba1\u7b97\u8fd8\u9700\u8981\u5efa\u7acb\u8fde\u63a5\u7684\u6570\u91cf\uff0c\u4ece\u90bb\u5c45\u53d1\u73b0\u8282\u70b9\u5217\u8868\u91cc\u9762\u6839\u636e \u8282\u70b9\u8fc7\u6ee4\u7b56\u7565 \u8fc7\u6ee4\u51fa\u6ee1\u8db3\u8981\u6c42\u7684\u8282\u70b9\uff0c\u518d\u6839\u636e \u8282\u70b9\u6253\u5206\u7b56\u7565 \u5bf9\u8282\u70b9\u6253\u5206\u6392\u5e8f\uff0c\u5c06\u6700\u9ad8\u7684\u76f8\u5e94\u6570\u91cf\u7684\u8282\u70b9\u52a0\u5165\u5230\u8bf7\u6c42\u5217\u8868\u4e2d\u3002\u6700\u540e\uff0c\u4e0e\u8bf7\u6c42\u5217\u8868\u4e2d\u7684\u8282\u70b9\u5efa\u7acbTCP\u8fde\u63a5\u3002 \u8282\u70b9\u8fc7\u6ee4\u7b56\u7565 \u00b6 \u5efa\u7acb\u8282\u70b9\u8fde\u63a5\u65f6\uff0c\u9700\u8fc7\u6ee4\u6389\u5982\u4e0b\u51e0\u7c7b\u8282\u70b9\uff0c\u5e76\u5224\u65ad\u8282\u70b9\u81ea\u5df1\u7684\u8fde\u63a5\u6570\u662f\u5426\u8fbe\u5230\u4e86\u6700\u5927\u8fde\u63a5\u3002 \u81ea\u8eab\u8282\u70b9 recentlyDisconnectedNodes\u5217\u8868\u4e2d\u7684\u8282\u70b9 badNodes\u5217\u8868\u4e2d\u7684\u8282\u70b9 \u5df2\u7ecf\u5efa\u7acb\u4e86\u8fde\u63a5\u7684\u8282\u70b9 \u4e0e\u8be5\u8282\u70b9ip\u5efa\u7acb\u7684\u8fde\u63a5\u6570\u5df2\u7ecf\u8fbe\u5230\u4e86\u4e0a\u9650\u503cmaxConnectionsWithSameIp\u7684\u8282\u70b9 \u4f46\u662f\u5bf9\u4e8e\u53ef\u4fe1\u8282\u70b9\uff0c\u4f1a\u5ffd\u7565\u6389\u90e8\u5206\u8fc7\u6ee4\u7b56\u7565\uff0c\u59cb\u7ec8\u4e0e\u5176\u5efa\u7acb\u8fde\u63a5\u3002 \u8282\u70b9\u6253\u5206\u7b56\u7565 \u00b6 \u8282\u70b9\u5206\u6570\u7528\u4e8e\u786e\u5b9a\u5efa\u7acb\u8fde\u63a5\u7684\u4f18\u5148\u7ea7\uff0c\u5206\u6570\u8d8a\u9ad8\uff0c\u4f18\u5148\u7ea7\u8d8a\u9ad8\u3002\u6253\u5206\u7ef4\u5ea6\u5305\u62ec\uff1a \u4e22\u5305\u7387\uff1a\u4e22\u5305\u7387\u8d8a\u4f4e\uff0c\u8bf4\u660e\u6570\u636e\u901a\u4fe1\u8d28\u91cf\u8d8a\u597d\u3002\u5206\u6570\u4e0e\u4e22\u5305\u7387\u6210\u53cd\u6bd4\uff0c\u6700\u9ad8\u5206\u4e3a100\uff0c\u6700\u4f4e\u4e3a0 \u7f51\u7edc\u5ef6\u8fdf\uff1a\u7f51\u7edc\u5ef6\u65f6\u8d8a\u5c0f\uff0c\u8bf4\u660e\u7f51\u7edc\u8d28\u91cf\u8d8a\u597d\u3002\u5206\u6570\u4e0e\u5e73\u5747\u7f51\u7edc\u5ef6\u65f6\u6210\u53cd\u6bd4\uff0c\u6700\u9ad8\u5206\u4e3a20\uff0c\u6700\u4f4e\u4e3a0 TCP\u6d41\u91cf\uff1aTCP\u6d41\u91cf\u8d8a\u5927\uff0c\u8bf4\u660e\u901a\u4fe1\u6bd4\u8f83\u6d3b\u8dc3\u3002\u5206\u6570\u4e0eTCP\u6d41\u91cf\u6210\u6b63\u6bd4\uff0c\u6700\u9ad8\u5206\u4e3a20\uff0c\u6700\u4f4e\u4e3a0 \u65ad\u5f00\u8fde\u63a5\u6b21\u6570\uff1a\u65ad\u5f00\u8fde\u63a5\u6b21\u6570\u8d8a\u5c11\uff0c\u8bf4\u660e\u8282\u70b9\u8d8a\u7a33\u5b9a\u3002\u65ad\u5f00\u8fde\u63a5\u5206\u6570\u4e3a\u8d1f\u6570\uff0c\u4e14\u4e0e\u65ad\u5f00\u8fde\u63a5\u6b21\u6570\u4e3a\u6b63\u6bd4\uff0c\u503c\u4e3a\u65ad\u5f00\u8fde\u63a5\u6b21\u6570\u768410\u500d Handshake\uff1a\u66fe\u7ecfhandshake\u6210\u529f\u8fc7\u7684\u8282\u70b9\uff0c\u8868\u793a\u6709\u76f8\u540c\u7684\u533a\u5757\u94fe\u4fe1\u606f\uff0c\u56e0\u6b64\u4f18\u5148\u9009\u62e9\u548c\u4ed6\u4eec\u5efa\u7acb\u8fde\u63a5\u3002Handshake\u6210\u529f\u6b21\u6570\u5927\u4e8e0\u65f6\uff0cHandshake\u5f97\u5206\u4e3a20\uff0c\u5426\u5219\u5f97\u5206\u4e3a0 \u5904\u7f5a\u72b6\u6001\uff1a\u5904\u4e8e\u5904\u7f5a\u72b6\u6001\u7684\u8282\u70b9\uff0c\u5206\u6570\u4e3a0\uff0c\u4e0d\u53c2\u4e0e\u5176\u5b83\u7ef4\u5ea6\u6253\u5206\uff0c\u5305\u542b\u4ee5\u4e0b\u51e0\u79cd\u60c5\u51b5\uff1a \u8282\u70b9\u65ad\u5f00\u8fde\u63a5\u65f6\u95f4\u4e0d\u523060s \u8282\u70b9\u5728badNodes\u5217\u8868\u4e2d \u533a\u5757\u94fe\u4fe1\u606f\u4e0d\u4e00\u81f4 \u8ba1\u7b97\u8282\u70b9\u5206\u6570\u65f6\uff0c\u9996\u5148\u5224\u65ad\u8282\u70b9\u662f\u5426\u4e3a\u5904\u7f5a\u72b6\u6001\uff0c\u5982\u679c\u662f\uff0c\u5219\u5206\u6570\u8ba1\u4e3a0\uff0c\u5426\u5219\uff0c\u8282\u70b9\u5206\u6570\u4e3a\u5404\u4e2a\u7ef4\u5ea6\u7684\u5f97\u5206\u4e4b\u548c\u3002 \u63e1\u624b \u00b6 TCP \u8fde\u63a5\u5efa\u7acb\u6210\u529f\u540e\uff0c\u4e3b\u52a8\u53d1\u8d77TCP\u8fde\u63a5\u8bf7\u6c42\u7684\u8282\u70b9\uff0c\u4f1a\u5411\u90bb\u5c45\u8282\u70b9\u53d1\u9001\u63e1\u624b\u6d88\u606f P2P_HELLO \uff0c\u76ee\u7684\u4e3a\u4e86\u786e\u8ba4\u8282\u70b9\u95f4\u7684\u94fe\u8def\u4fe1\u606f\u662f\u5426\u4e00\u81f4\uff0c\u4ee5\u53ca\u662f\u5426\u9700\u8981\u53d1\u8d77\u533a\u5757\u540c\u6b65\u6d41\u7a0b\u3002 \u5f53\u90bb\u5c45\u8282\u70b9\u6536\u5230 P2P_HELLO \u540e\uff0c\u4f1a\u4e0e\u672c\u5730\u4fe1\u606f\u505a\u6bd4\u8f83\uff0c\u6bd4\u5982\u68c0\u67e5p2p version\u3001\u521b\u4e16\u5757\u4fe1\u606f\u662f\u5426\u4e00\u81f4\uff0c\u82e5\u4e00\u81f4\uff0c\u8fd8\u9700\u8981\u68c0\u67e5\u56fa\u5316\u5feb\uff0c\u4ee5\u53ca\u5224\u65ad\u662f\u5426\u662f\u91cd\u590d\u7684\u8fde\u63a5\u3001\u6076\u610f\u8282\u70b9\u7b49\u3002\u82e5\u6240\u6709\u7684\u68c0\u67e5\u6761\u4ef6\u90fd\u901a\u8fc7\uff0c\u5219\u4f1a\u56de\u590d P2P_HELLO \u6d88\u606f\uff0c\u7136\u540e\u8fdb\u884c\u533a\u5757\u540c\u6b65\u6216\u5e7f\u64ad\uff1b\u5426\u5219\uff0c\u65ad\u5f00\u8fde\u63a5\u3002 \u4fe1\u9053\u4fdd\u6d3b \u00b6 \u4fe1\u9053\u4fdd\u6d3b\u662f\u901a\u8fc7 P2P_PING \u3001 P2P_PONG TCP\u62a5\u6587\u6765\u5b8c\u6210\u7684\u3002\u5f53\u8282\u70b9\u4e0e\u90bb\u5c45\u8282\u70b9\u5efa\u7acb\u4e86TCP\u8fde\u63a5\u5e76\u63e1\u624b\u6210\u529f\u540e\uff0c\u8282\u70b9\u4f1a\u4e3a\u8fde\u63a5\u5f00\u542f\u4e00\u4e2a\u7ebf\u7a0b pingTask \u5b9a\u671f\u53d1\u9001 P2P_PING \u6d88\u606f\u4ee5\u7ef4\u62a4\u8be5TCP\u8fde\u63a5\uff0c\u6bcf10s\u8c03\u5ea6\u4e00\u6b21\u3002\u5982\u679c\u5728\u8d85\u65f6\u65f6\u95f4\u5185\u672a\u6536\u5230\u8282\u70b9\u56de\u590d\u7684 P2P_PONG \u6d88\u606f\uff0c\u5219\u65ad\u5f00\u8fde\u63a5\u3002 \u533a\u5757\u540c\u6b65 \u00b6 \u5728\u4e0e\u5bf9\u65b9\u8282\u70b9\u5b8c\u6210\u63e1\u624b\u540e\uff0c\u5982\u679c\u53d1\u73b0\u5bf9\u65b9\u8282\u70b9\u7684\u533a\u5757\u94fe\u6bd4\u672c\u5730\u7684\u533a\u5757\u94fe\u8981\u957f\uff0c\u6839\u636e\u6700\u957f\u94fe\u539f\u5219\uff0c\u4f1a\u89e6\u53d1\u533a\u5757\u540c\u6b65\u7684\u5904\u7406\u6d41\u7a0b syncService.startSync \u3002\u540c\u6b65\u8fc7\u7a0b\u4e2d\u7684\u62a5\u6587\u4ea4\u4e92\u5982\u4e0b\u56fe\uff1a \u8282\u70b9A\u5411\u5bf9\u65b9\u8282\u70b9B\u53d1\u9001 SYNC_BLOCK_CHAIN \u6d88\u606f\uff0c\u4ee5\u5ba3\u544a\u672c\u5730\u94fe\u7684\u6458\u8981\u4fe1\u606f\u3002\u5bf9\u65b9\u8282\u70b9B\u6536\u5230\u540e\uff0c\u8ba1\u7b97\u51fa\u8282\u70b9A\u7f3a\u5931\u7684\u533a\u5757\u6e05\u5355\uff0c\u5e76\u5c06\u7f3a\u5931\u533a\u5757\u7684id\u5217\u8868\u901a\u8fc7 BLOCK_CHAIN_INVENTORY \u6d88\u606f\u53d1\u9001\u7ed9\u8282\u70b9A\uff0c\u4e00\u6b21\u6700\u591a\u643a\u5e262000\u4e2a\u533a\u5757id\u3002 \u8282\u70b9A\u6536\u5230 BLOCK_CHAIN_INVENTORY \u6d88\u606f\u540e\uff0c\u53d6\u51fa\u7f3a\u5931\u533a\u5757id\uff0c\u5e76\u901a\u8fc7\u5f02\u6b65\u7684\u65b9\u5f0f\u5411\u8282\u70b9B\u53d1\u9001 FETCH_INV_DATA \u6d88\u606f\u4ee5\u8bf7\u6c42\u7f3a\u5c11\u7684\u533a\u5757\uff0c\u4e00\u6b21\u6700\u591a\u8bf7\u6c42100\u4e2a\u533a\u5757\u3002\u5982\u679c\u8fd8\u6709\u9700\u8981\u540c\u6b65\u7684\u533a\u5757\uff08\u5373 BLOCK_CHAIN_INVENTORY \u62a5\u6587\u4e2d\u7684remain_num\u5927\u4e8e0\uff09\uff0c\u4f1a\u89e6\u53d1\u65b0\u4e00\u8f6e\u7684\u533a\u5757\u540c\u6b65\u6d41\u7a0b\u3002 \u8282\u70b9B\u6536\u5230\u8282\u70b9A\u7684 FETCH_INV_DATA \u62a5\u6587\u540e\uff0c\u901a\u8fc7 BLOCK \u6d88\u606f\u5c06\u533a\u5757\u53d1\u9001\u7ed9\u8282\u70b9A\u3002\u8282\u70b9A\u6536\u5230 BLOCK \u62a5\u6587\u540e\uff0c\u5f02\u6b65\u5904\u7406\u8be5\u533a\u5757\u3002 \u94fe\u6458\u8981\u53ca\u7f3a\u5931\u533a\u5757\u6e05\u5355 \u00b6 \u4e0b\u9762\u6839\u636e\u51e0\u4e2a\u4e0d\u540c\u7684\u533a\u5757\u540c\u6b65\u573a\u666f\u793a\u4f8b\uff0c\u8bf4\u660e\u94fe\u6458\u8981\u548c\u8282\u70b9\u7f3a\u5c11\u7684\u533a\u5757\u6e05\u5355\u7684\u751f\u6210\u3002 \u94fe\u6458\u8981\uff1a\u6709\u5e8f\u7684\u533a\u5757blockID\u5217\u8868\uff0c\u5305\u62ec\uff1a\u6700\u9ad8\u56fa\u5316\u5757\u3001\u6700\u9ad8\u975e\u56fa\u5316\u5757\uff0c\u4ee5\u53ca\u4e4b\u95f4\u4e8c\u5206\u6cd5\u5bf9\u5e94\u7684\u533a\u5757 \u7f3a\u5931\u533a\u5757\u6e05\u5355\uff1a\u90bb\u5c45\u8282\u70b9\u6839\u636e\u94fe\u6458\u8981\u4e0e\u81ea\u5df1\u94fe\u8fdb\u884c\u6bd4\u8f83\uff0c\u786e\u5b9a\u5bf9\u65b9\u7f3a\u5931\u7684\u533a\u5757\u6e05\u5355\uff0c\u8fd4\u56de\u4e00\u7ec4\u8fde\u7eed\u7684\u533a\u5757blockID\u4ee5\u53ca\u5269\u4f59\u7684\u5757\u6570 \u666e\u901a\u573a\u666f \u00b6 \u672c\u5730\u5934\u5757\u9ad8\u5ea6\u4e3a1018\uff0c\u56fa\u5316\u5757\u9ad8\u5ea6\u4e3a1000\uff0c\u4e24\u4e2a\u8282\u70b9\u521a\u5efa\u7acb\u8fde\u63a5\uff0c\u6240\u4ee5\u5171\u540c\u5757\u9ad8\u5ea6\u4e3a0\uff0c\u901a\u8fc7\u4e8c\u5206\u65b9\u5f0f\u83b7\u53d6\u5230\u8282\u70b9A\u7684\u672c\u5730\u94fe\u6458\u8981\u4e3a\uff1a1000\u30011010\u30011015\u30011017\u30011018\u3002 \u8282\u70b9B\u6536\u5230\u8282\u70b9A\u7684\u94fe\u6458\u8981\u540e\uff0c\u7ed3\u5408\u672c\u5730\u94fe\u53ef\u4ee5\u751f\u4ea7\u8282\u70b9A\u7f3a\u5c11\u7684\u533a\u5757\u6e05\u5355\u4e3a\uff1a1018\u30011019\u30011020\u30011021\u3002\u4e4b\u540e\u8282\u70b9A\u6839\u636e\u7f3a\u5931\u533a\u5757\u6e05\u5355\uff0c\u8bf7\u6c42\u540c\u6b65\u533a\u57571019\u30011020\u30011021\u3002 \u5207\u94fe\u573a\u666f \u00b6 \u672c\u5730\u4e3b\u94fe\u5934\u5757\u9ad8\u5ea6\u4e3a1018\uff0c\u56fa\u5316\u5757\u9ad8\u5ea6\u4e3a1000\uff0c\u4e24\u4e2a\u8282\u70b9\u521a\u5efa\u7acb\u8fde\u63a5\uff0c\u6240\u4ee5\u5171\u540c\u5757\u9ad8\u5ea6\u4e3a0\uff0c\u901a\u8fc7\u4e8c\u5206\u65b9\u5f0f\u83b7\u53d6\u5230\u8282\u70b9A\u7684\u672c\u5730\u94fe\u6458\u8981\u4e3a\uff1a1000\u30011010\u30011015\u30011017\u30011018\u3002 \u8282\u70b9B\u6536\u5230\u8282\u70b9A\u7684\u94fe\u6458\u8981\u540e\uff0c\u53d1\u73b0\u672c\u5730\u4e3b\u94fe\u8ddf\u8282\u70b9A\u7684\u4e3b\u94fe\u4e0d\u5728\u540c\u4e00\u6761\u94fe\u4e0a\uff0c\u5bf9\u6bd4\u8282\u70b9A\u7684\u94fe\u6458\u8981\uff0c\u627e\u5230\u5171\u540c\u5757\u9ad8\u5ea6\u4e3a1015\uff0c\u5219\u8ba4\u4e3a\u8282\u70b9A\u7f3a\u5c11\u7684\u533a\u5757\u6e05\u5355\u4e3a\uff1a1015\u30011016'\u30011017'\u30011018'\uff0c1019'\u3002\u4e4b\u540e\u8282\u70b9A\u6839\u636e\u7f3a\u5931\u533a\u5757\u6e05\u5355\uff0c\u8bf7\u6c42\u540c\u6b65\u533a\u57571018'\uff0c1019'\u3002 \u53e6\u4e00\u79cd\u5207\u94fe\u573a\u666f\uff0c\u672c\u5730\u4e3b\u94fe\u5934\u5757\u9ad8\u5ea6\u4e3a1018\uff0c\u56fa\u5316\u5757\u9ad8\u5ea6\u4e3a1000\uff0c\u5171\u540c\u5757\u4e3a1017\u2018\uff0c\u4f4d\u4e8efork\u94fe\u4e0a\uff0c\u901a\u8fc7\u4e8c\u5206\u65b9\u5f0f\u83b7\u53d6\u5230\u8282\u70b9A\u7684\u672c\u5730\u94fe\u6458\u8981\u4e3a\uff1a1000\u30011009\u30011014\u30011016'\u30011017'\u3002 \u8282\u70b9B\u6536\u5230\u8282\u70b9A\u7684\u94fe\u6458\u8981\u540e\uff0c\u7ed3\u5408\u672c\u5730\u94fe\u53ef\u4ee5\u751f\u4ea7\u8282\u70b9A\u7f3a\u5c11\u7684\u533a\u5757\u6e05\u5355\u4e3a\uff1a1017'\u30011018'\u30011019'\u3002\u4e4b\u540e\u8282\u70b9A\u6839\u636e\u7f3a\u5931\u533a\u5757\u6e05\u5355\uff0c\u8bf7\u6c42\u540c\u6b65\u533a\u57571018'\uff0c1019'\u3002 \u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad \u00b6 \u5f53\u8d85\u7ea7\u4ee3\u8868\u8282\u70b9\u751f\u4ea7\u51fa\u65b0\u7684\u533a\u5757\uff0c\u6216\u8005\u5168\u8282\u70b9\u63a5\u6536\u5230\u7528\u6237\u53d1\u8d77\u7684\u65b0\u4ea4\u6613\u65f6\uff0c\u4f1a\u53d1\u8d77\u4ea4\u6613&\u533a\u5757\u5e7f\u64ad\u6d41\u7a0b\u3002\u5f53\u8282\u70b9\u63a5\u6536\u5230\u65b0\u533a\u5757\u6216\u8005\u65b0\u4ea4\u6613\u65f6\uff0c\u4f1a\u8f6c\u53d1\u76f8\u5e94\u7684\u533a\u5757\u6216\u4ea4\u6613\uff0c\u8f6c\u53d1\u4e0e\u5e7f\u64ad\u7684\u6d41\u7a0b\u4e00\u6837\u3002\u62a5\u6587\u4ea4\u4e92\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u5176\u4e2d\u6d89\u53ca\u5230\u7684\u6d88\u606f\u7c7b\u578b\u5305\u62ec\uff1a INVENTORY - \u5e7f\u64ad\u6e05\u5355\uff1a\u533a\u5757\u6216\u8005\u4ea4\u6613id\u5217\u8868 FETCH_INV_DATA - \u8bf7\u6c42\u9700\u8981\u83b7\u53d6\u7684\u6e05\u5355\u6570\u636e\uff1a\u533a\u5757\u6216\u8005\u4ea4\u6613id\u5217\u8868 BLOCK - \u533a\u5757\u6570\u636e TRXS - \u4ea4\u6613\u6570\u636e \u8282\u70b9A\u5c06\u5f85\u5e7f\u64ad\u4ea4\u6613\u6216\u533a\u5757\u901a\u8fc7 INVENTORY \u6e05\u5355\u6d88\u606f\u53d1\u9001\u5230\u8282\u70b9B\u3002\u8282\u70b9B\u6536\u5230 INVENTORY \u6e05\u5355\u6d88\u606f\u540e\uff0c\u9700\u8981\u68c0\u67e5\u5bf9\u65b9\u8282\u70b9\u7684\u72b6\u6001\uff0c\u5982\u679c\u53ef\u4ee5\u63a5\u6536\u8be5\u6d88\u606f\uff0c\u5219\u5c06\u6e05\u5355\u4e2d\u7684\u533a\u5757/\u4ea4\u6613\u653e\u5165\u5f85\u83b7\u53d6\u961f\u5217 invToFetch \u4e2d\u3002\u5982\u679c\u662f\u533a\u5757\u6e05\u5355\uff0c\u8fd8\u4f1a\u7acb\u5373\u89e6\u53d1\"\u83b7\u53d6\u533a\u5757&\u4ea4\u6613\u4efb\u52a1\"\uff0c\u6765\u5411\u8282\u70b9A\u53d1\u9001 FETCH_INV_DATA \u6d88\u606f\u83b7\u53d6\u533a\u5757&\u4ea4\u6613\u3002 \u8282\u70b9A\u6536\u5230 FETCH_INV_DATA \u6d88\u606f\u540e\uff0c\u4f1a\u68c0\u67e5\u662f\u5426\u53d1\u9001\u8fc7\u6e05\u5355\u6d88\u606f\u7ed9\u5bf9\u65b9\uff0c\u5982\u679c\u53d1\u9001\u8fc7\uff0c\u5219\u6839\u636e\u6e05\u5355\u6570\u636e\uff0c\u5411\u8282\u70b9B\u53d1\u9001\u4ea4\u6613\u6216\u8005\u533a\u5757\u6d88\u606f\u3002\u8282\u70b9B\u6536\u5230\u4ea4\u6613\u6216\u8005\u533a\u5757\u6d88\u606f\u540e\uff0c\u5904\u7406\u6d88\u606f\uff0c\u5e76\u89e6\u53d1\u8f6c\u53d1\u6d41\u7a0b\u3002 \u603b\u7ed3 \u00b6 \u672c\u6587\u4ecb\u7ecd\u4e86TRON\u6700\u5e95\u5c42\u6a21\u5757-P2P\u7f51\u7edc\u76f8\u5173\u7684\u5b9e\u73b0\u7ec6\u8282\uff0c\u5305\u62ec\u8282\u70b9\u53d1\u73b0\u3001\u8282\u70b9\u8fde\u63a5\u3001\u533a\u5757\u540c\u6b65\u3001\u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad\u6d41\u7a0b\uff0c\u5e0c\u671b\u901a\u8fc7\u9605\u8bfb\u672c\u6587\u80fd\u5e2e\u52a9\u5f00\u53d1\u8005\u8fdb\u4e00\u6b65\u4e86\u89e3\u548c\u5f00\u53d1java-tron\u7f51\u7edc\u76f8\u5173\u6a21\u5757\u3002","title":"\u6838\u5fc3\u6a21\u5757"},{"location":"developers/code-structure/#java-tron","text":"","title":"Java-tron\u6838\u5fc3\u6a21\u5757"},{"location":"developers/code-structure/#_1","text":"Java-tron\u662f\u57fa\u4e8eJava\u8bed\u8a00\u5f00\u53d1\u7684TRON\u7f51\u7edc\u5ba2\u6237\u7aef\uff0c\u5b83\u5b9e\u73b0\u4e86TRON\u767d\u76ae\u4e66\u4e2d\u6240\u63d0\u5230\u7684\u6240\u6709\u529f\u80fd\uff0c\u5305\u62ec\u5171\u8bc6\u673a\u5236\u3001\u5bc6\u7801\u5b66\u3001\u6570\u636e\u5e93\u3001TVM\u865a\u62df\u673a\u3001\u7f51\u7edc\u7ba1\u7406\u7b49\u3002\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u542f\u52a8Java-tron\u6765\u8fd0\u884c\u4e00\u4e2aTRON\u7f51\u7edc\u8282\u70b9\u3002\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u8be6\u7ec6\u63cf\u8ff0Java-tron\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ecb\u7ecd\u5176\u5404\u4e2a\u529f\u80fd\u6a21\u5757\u7684\u4f5c\u7528\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u540e\u7eed\u7684\u4ee3\u7801\u5206\u6790\u4e0e\u5f00\u53d1\u3002 Java-tron\u91c7\u7528\u6a21\u5757\u5316\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ee3\u7801\u7ed3\u6784\u6e05\u6670\uff0c\u6613\u4e8e\u7ef4\u62a4\u4e0e\u6269\u5c55\u3002Java-tron \u76ee\u524d\u5206\u4e3a7\u4e2a\u6a21\u5757\uff1a protocol \u3001 common \u3001 chainbase \u3001 consensus \u3001 actuator \u3001 crypto \u3001 framework \uff0c\u4e0b\u9762\u5206\u522b\u4ecb\u7ecd\u5404\u4e2a\u6a21\u5757\u7684\u529f\u80fd\u53ca\u5176\u4ee3\u7801\u7ec4\u7ec7\u7ed3\u6784\u3002","title":"\u4ee3\u7801\u7ed3\u6784"},{"location":"developers/code-structure/#protocol","text":"\u5bf9\u4e8e\u533a\u5757\u94fe\u8fd9\u79cd\u5206\u5e03\u5f0f\u7f51\u7edc\uff0c\u7b80\u6d01\u9ad8\u6548\u7684\u6570\u636e\u4ea4\u4e92\u534f\u8bae\u975e\u5e38\u91cd\u8981\uff0cprotocol\u6a21\u5757\u5b9a\u4e49\u4e86\uff1a \u8282\u70b9\u95f4\u901a\u4fe1\u534f\u8bae \u8282\u70b9\u5185\u90e8\u6a21\u5757\u95f4\u7684\u901a\u4fe1\u534f\u8bae \u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\u534f\u8bae \u4e0a\u8ff0\u534f\u8bae\u91c7\u7528\u4e86 Google Protobuf \u6570\u636e\u4ea4\u4e92\u683c\u5f0f\uff0c\u76f8\u6bd4\u4e8eJSON\u548cXML\uff0c Google Protobuf \u683c\u5f0f\u66f4\u9ad8\u6548\u548c\u7075\u6d3b\uff0c\u53ef\u4ee5\u901a\u8fc7ProtoBuf\u7f16\u8bd1\u5668\u4e3a\u5b9a\u4e49\u7684\u534f\u8bae\u6587\u4ef6\u751f\u6210\u7279\u5b9a\u8bed\u8a00\u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7684\u6e90\u4ee3\u7801\u3002Protobuf\u662f java-tron \u5b9e\u73b0\u8de8\u8bed\u8a00\u8de8\u5e73\u53f0\u7684\u57fa\u7840\u3002 protocol \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/protocol \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- protos |-- api | |-- api.proto | |-- zksnark.proto |-- core |-- Discover.proto |-- Tron.proto |-- TronInventoryItems.proto |-- contract protos/api/ - Java-tron\u8282\u70b9\u5bf9\u5916\u63d0\u4f9b\u7684gRPC\u63a5\u53e3\u53ca\u6570\u636e\u7ed3\u6784 protos/core/ - \u8282\u70b9\u95f4\u53ca\u8282\u70b9\u5185\u90e8\u5404\u4e2a\u6a21\u5757\u95f4\u901a\u4fe1\u7684\u6570\u636e\u7ed3\u6784 Discover.proto - \u8282\u70b9\u53d1\u73b0\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784 TronInventoryItems.proto - \u8282\u70b9\u95f4\u533a\u5757\u4f20\u8f93\u76f8\u5173\u6570\u636e\u7ed3\u6784 contract/ - \u5408\u7ea6\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784 Tron.proto - \u5176\u5b83\u91cd\u8981\u7684\u6570\u636e\u7ed3\u6784\u5b9a\u4e49\uff0c\u5176\u4e2d\u5305\u62ec\u8d26\u6237\u3001\u533a\u5757\u3001\u4ea4\u6613\u3001\u8d44\u6e90\u3001\u8d85\u7ea7\u4ee3\u8868\u3001\u6295\u7968\u3001\u63d0\u6848\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784\u3002","title":"protocol"},{"location":"developers/code-structure/#common","text":"common\u6a21\u5757\u5bf9\u516c\u5171\u7ec4\u4ef6\u548c\u4e00\u4e9b\u5de5\u5177\u7c7b\u8fdb\u884c\u4e86\u5c01\u88c5\uff0c\u6bd4\u5982\u5f02\u5e38\u5904\u7406\u3001\u6307\u6807\u76d1\u63a7\u5de5\u5177\u7b49\uff0c\u4ee5\u65b9\u4fbf\u5176\u4ed6\u6a21\u5757\u8c03\u7528\u3002 common \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/common , \u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- /common/src/main/java/org/tron |-- common | |-- args | |-- config | |-- entity | |-- logsfilter | |-- overlay | |-- parameter | |-- prometheus | |-- runtime | |-- setting | |-- utils |-- core |-- config |-- db |-- db2 |-- exception common/prometheus - prometheus\u6307\u6807\u76d1\u63a7 common/utils - \u57fa\u7840\u6570\u636e\u7c7b\u578b\u5c01\u88c5\u7c7b core/config - \u8282\u70b9\u914d\u7f6e\u76f8\u5173\u7c7b core/exception - \u6240\u6709\u7684TRON\u7f51\u7edc\u5f02\u5e38\u5904\u7406\u76f8\u5173\u7c7b","title":"common"},{"location":"developers/code-structure/#chainbase","text":"chainbase \u6a21\u5757\u662f\u6570\u636e\u5e93\u5c42\u9762\u7684\u62bd\u8c61\uff0c\u50cf PoW\u3001PoS\u3001DPoS \u8fd9\u7c7b\u57fa\u4e8e\u6982\u7387\u6027\u7684\u5171\u8bc6\u7b97\u6cd5\u4e0d\u53ef\u907f\u514d\u7684\u4f1a\u4ee5\u4e00\u5b9a\u7684\u6982\u7387\u53d1\u751f\u5207\u94fe\uff0c\u56e0\u6b64 chainbase \u5b9a\u4e49\u4e86\u4e00\u4e2a\u652f\u6301\u53ef\u56de\u9000\u6570\u636e\u5e93\u7684\u63a5\u53e3\u6807\u51c6\uff0c\u8be5\u63a5\u53e3\u8981\u6c42\u6570\u636e\u5e93\u5b9e\u73b0\u72b6\u6001\u56de\u6eda\u673a\u5236\u3001checkpoint\u5bb9\u707e\u673a\u5236\u7b49\u3002 \u53e6\u5916 chainbase \u6a21\u5757\u5177\u6709\u826f\u597d\u7684\u63a5\u53e3\u62bd\u8c61\u8bbe\u8ba1\uff0c\u4efb\u4f55\u6ee1\u8db3\u63a5\u53e3\u5b9e\u73b0\u7684\u6570\u636e\u5e93\u90fd\u53ef\u4ee5\u4f5c\u4e3a\u533a\u5757\u94fe\u7684\u5e95\u5c42\u5b58\u50a8\uff0c\u8d4b\u4e88\u5f00\u53d1\u8005\u66f4\u591a\u7684\u7075\u6d3b\u6027\uff0cLevelDB\u548cRocksDB\u662f\u9ed8\u8ba4\u63d0\u4f9b\u7684\u4e24\u79cd\u5177\u4f53\u5b9e\u73b0\u3002 chainbase \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/chainbase \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- chainbase.src.main.java.org.tron |-- common | |-- bloom | |-- error | |-- overlay | |-- runtime | |-- storage | | |-- leveldb | | |-- rocksdb | |-- utils | |-- zksnark |-- core |-- actuator |-- capsule |-- db | |-- RevokingDatabase.java | |-- TronStoreWithRevoking.java | |-- ...... |-- db2 | |-- common | |-- core | |-- SnapshotManager.java | |-- ...... |-- net |-- service |-- store common/ - \u516c\u5171\u7ec4\u4ef6\uff0c\u6bd4\u5982\u5f02\u5e38\u5904\u7406\u7c7b\u3001\u5de5\u5177\u7c7b storage/leveldb/ \u5b9e\u73b0\u4e86\u4f7f\u7528LevelDB\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u6570\u636e\u5e93 storage/rocksdb/ \u5b9e\u73b0\u4e86\u4f7f\u7528RocksDB\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u6570\u636e\u5e93 core/ - chainbase\u6a21\u5757\u6838\u5fc3\u4ee3\u7801 capsule/ \u5404\u4e2a\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u6bd4\u5982AccountCapsule\uff0cBlockCapsule\u7b49\uff0cAccountCapsule\u4e3aAccount\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u63d0\u4f9b\u4e86\u8d26\u6237\u6570\u636e\u7684\u4fee\u6539\u4e0e\u67e5\u8be2\uff1bBlockCapsule\u4e3aBlock\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u7c7b\uff0c\u63d0\u4f9b\u4e86\u533a\u5757\u6570\u636e\u7684\u4fee\u6539\u4e0e\u67e5\u8be2\u3002 store/ \u5404\u4e2a\u6570\u636e\u5e93\uff0c\u6bd4\u5982 AccountStore \uff0c ProposalStore \u7b49\u3002 AccountStore \u662f\u8d26\u6237\u6570\u636e\u5e93\uff0c\u6570\u636e\u5e93\u540d\u79f0\u4e3a account \uff0c\u5b58\u50a8\u4e86TRON\u7f51\u7edc\u4e2d\u7684\u6240\u6709\u8d26\u6237\u4fe1\u606f\uff1b ProposalStore \u662f\u63d0\u6848\u6570\u636e\u5e93\uff0c\u6570\u636e\u5e93\u540d\u79f0\u4e3a proposal \uff0c\u5b58\u50a8\u4e86TRON\u7f51\u7edc\u4e2d\u7684\u6240\u6709\u63d0\u6848\u4fe1\u606f\u3002 db/ \u548c db2/ \u5b9e\u73b0\u4e86\u53ef\u56de\u9000\u6570\u636e\u5e93\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u4e24\u79cd\u53ef\u56de\u9000\u6570\u636e\u5e93\uff1a\u4f4d\u4e8e db/ \u76ee\u5f55\u4e0b AbstractRevokingStore \u548c\u4f4d\u4e8e db2/ \u76ee\u5f55\u4e0b SnapshotManager \u3002 SnapshotManager \u76f8\u6bd4\u4e0e AbstractRevokingStore \uff0c\u6570\u636e\u56de\u9000\u66f4\u7a33\u5b9a\uff0c\u5e76\u652f\u6301\u5e95\u5c42\u6570\u636e\u5e93\u7684\u6269\u5c55\uff0c\u56e0\u6b64Java-tron\u91c7\u7528 SnapshotManager \u53ef\u56de\u9000\u6570\u636e\u5e93\uff0c\u5176\u4e2d\u7684\u51e0\u4e2a\u91cd\u8981\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b\u5982\u4e0b\uff1a RevokingDatabase.java \u662f\u6570\u636e\u5e93\u5bb9\u5668\u7684\u63a5\u53e3\uff0c\u7528\u4e8e\u6240\u6709\u53ef\u56de\u9000\u6570\u636e\u5e93\u7684\u7ba1\u7406\uff0c SnapshotManager \u662f\u8be5\u63a5\u53e3\u7684\u4e00\u4e2a\u5b9e\u73b0 TronStoreWithRevoking.java \u662f\u652f\u6301\u53ef\u56de\u9000\u7684\u6570\u636e\u5e93\u7684\u57fa\u7c7b\uff0c\u6240\u6709\u7684\u53ef\u56de\u9000\u6570\u636e\u5e93\u90fd\u662f\u5b83\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u6bd4\u5982 BlockStore \uff0c TransactionStore \u7b49","title":"chainbase"},{"location":"developers/code-structure/#consensus","text":"\u5171\u8bc6\u673a\u5236\u662f\u533a\u5757\u94fe\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u6a21\u5757\uff0c\u5e38\u89c1\u7684\u6709 PoW\u3001PoS\u3001DPoS\u3001PBFT \u7b49\uff0c\u8054\u76df\u94fe\u4ee5\u53ca\u5176\u4ed6\u4e00\u4e9b\u53ef\u4fe1\u7f51\u7edc\u4e2d\u4e5f\u4f1a\u91c7\u7528 Paxos\u3001Raft \u7b49\u5171\u8bc6\u673a\u5236\uff0c\u5171\u8bc6\u7684\u9009\u62e9\u9700\u8981\u548c\u4e1a\u52a1\u573a\u666f\u76f8\u5339\u914d\uff0c\u6bd4\u5982\u5bf9\u5171\u8bc6\u6548\u7387\u654f\u611f\u5b9e\u65f6\u6e38\u620f\u7c7b\u5c31\u4e0d\u9002\u5408\u91c7\u7528 PoW\uff0c\u800c\u5bf9\u5b9e\u65f6\u6027\u8981\u6c42\u6781\u9ad8\u7684\u4ea4\u6613\u6240\u6765\u8bf4 PBFT \u53ef\u80fd\u662f\u9996\u9009\u3002\u6240\u4ee5\u652f\u6301\u53ef\u66ff\u6362\u7684\u5171\u8bc6\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u540c\u65f6\u4e5f\u662f\u5b9e\u73b0\u7279\u5b9a\u5e94\u7528\u533a\u5757\u94fe\u7684\u91cd\u8981\u4e00\u73af\uff0cconsensus \u6a21\u5757\u6700\u7ec8\u76ee\u6807\u662f\u80fd\u591f\u8ba9\u5e94\u7528\u5f00\u53d1\u8005\u80fd\u591f\u50cf\u914d\u7f6e\u53c2\u6570\u90a3\u6837\u7b80\u5355\u7684\u5207\u6362\u5171\u8bc6\u673a\u5236\u3002 consensus \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/consensus \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- consensus/src/main/java/org/tron/consensus |-- Consensus.java |-- ConsensusDelegate.java |-- base | |-- ConsensusInterface.java | |-- ...... |-- dpos |-- pbft consensus \u6a21\u5757\u5c06\u5171\u8bc6\u8fc7\u7a0b\u62bd\u8c61\u6210\u51e0\u4e2a\u91cd\u8981\u7684\u90e8\u5206\uff0c\u5b9a\u4e49\u5728 ConsensusInterface \u63a5\u53e3\u4e2d\uff1a start - \u542f\u52a8\u5171\u8bc6\u670d\u52a1\uff0c\u53ef\u4ee5\u81ea\u5b9a\u5236\u542f\u52a8\u53c2\u6570 stop - \u505c\u6b62\u5171\u8bc6\u670d\u52a1 receiveBlock - \u5b9a\u4e49\u63a5\u6536\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 validBlock - \u5b9a\u4e49\u9a8c\u8bc1\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 applyBlock - \u5b9a\u4e49\u5904\u7406\u533a\u5757\u7684\u5171\u8bc6\u903b\u8f91 \u76ee\u524dJava-tron\u57fa\u4e8e ConsensusInterface \u63a5\u53e3\u5b9e\u73b0\u4e86DPOS\u5171\u8bc6\u548cPBFT\u5171\u8bc6\uff0c\u5206\u522b\u4f4d\u4e8e dpos/ \u548c pbft/ \u76ee\u5f55\u4e0b\uff0c\u5f00\u53d1\u8005\u4e5f\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u9700\u6c42\u5b9e\u73b0 ConsensusInterface \u63a5\u53e3\uff0c\u6765\u81ea\u5b9a\u4e49\u5171\u8bc6\u673a\u5236\u3002","title":"consensus"},{"location":"developers/code-structure/#actuator","text":"\u4ee5\u592a\u574a\u521d\u521b\u6027\u7684\u5f15\u5165\u4e86\u865a\u62df\u673a\u5e76\u5b9a\u4e49\u4e86\u667a\u80fd\u5408\u7ea6\u8fd9\u79cd\u5f00\u53d1\u65b9\u5f0f\uff0c\u4f46\u5bf9\u4e8e\u4e00\u4e9b\u590d\u6742\u7684\u5e94\u7528\uff0c\u667a\u80fd\u5408\u7ea6\u4e0d\u591f\u7075\u6d3b\u4e14\u53d7\u9650\u4e8e\u6027\u80fd\uff0c\u8fd9\u4e5f\u662f Java-tron \u63d0\u4f9b\u521b\u5efa\u5e94\u7528\u94fe\u7684\u4e00\u4e2a\u539f\u56e0\u3002\u4e3a\u6b64 Java-tron \u72ec\u7acb\u51fa\u6765\u4e86 actuator \u6a21\u5757\uff0c\u8be5\u6a21\u5757\u4e3a\u5e94\u7528\u5f00\u53d1\u8005\u63d0\u4f9b\u4e00\u79cd\u65b0\u7684\u5f00\u53d1\u8303\u5f0f\uff1a\u53ef\u4ee5\u5c06\u5e94\u7528\u4ee3\u7801\u76f4\u63a5\u690d\u5165\u94fe\u4e2d\u800c\u4e0d\u518d\u5c06\u5e94\u7528\u4ee3\u7801\u8dd1\u5728\u865a\u62df\u673a\u4e2d\u3002 actuator\u662f\u4ea4\u6613\u7684\u6267\u884c\u5668\uff0c\u53ef\u4ee5\u5c06\u5e94\u7528\u770b\u6210\u662f\u4e0d\u540c\u4ea4\u6613\u7c7b\u578b\u7ec4\u6210\u7684\u4ea4\u6613\u96c6\uff0c\u6bcf\u7c7b\u4ea4\u6613\u90fd\u7531\u5bf9\u5e94\u7684 actuator \u8d1f\u8d23\u6267\u884c\u3002 actuator \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/actuator \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- actuator/src/main/java/org/tron/core |-- actuator | |-- AbstractActuator.java | |-- ActuatorCreator.java | |-- ActuatorFactory.java | |-- TransferActuator.java | |-- VMActuator.java | |-- ...... |-- utils |-- vm actuator/ - TRON\u7f51\u7edc\u4e2d\u5404\u79cd\u7c7b\u578b\u4ea4\u6613\u7684\u6267\u884c\u5668\uff0c\u5b9a\u4e49\u4e86\u4e0d\u540c\u7c7b\u578b\u4ea4\u6613\u7684\u5904\u7406\u903b\u8f91\uff0c\u6bd4\u5982 TransferActuator \u662f\u8f6c\u8d26TRX\u4ea4\u6613\u7684\u5904\u7406\u7c7b\uff0c FreezeBalanceV2Actuator \u662f\u8d28\u62bcTRX\u83b7\u53d6\u8d44\u6e90\u4ea4\u6613\u7684\u5904\u7406\u7c7b utils/ - \u6267\u884c\u4ea4\u6613\u6240\u9700\u7684\u5de5\u5177\u7c7b vm/ - \u865a\u62df\u673a\u76f8\u5173\u4ee3\u7801 actuator\u6a21\u5757\u5b9a\u4e49\u7684 Actuator \u63a5\u53e3\u67094\u4e2a\u65b9\u6cd5\uff1a * execute - \u8d1f\u8d23\u4ea4\u6613\u5177\u4f53\u9700\u8981\u6267\u884c\u7684\u52a8\u4f5c\uff0c\u53ef\u4ee5\u662f\u72b6\u6001\u4fee\u6539\u3001\u6d41\u7a0b\u8df3\u8f6c\u3001\u903b\u8f91\u5224\u65ad * validate - \u8d1f\u8d23\u9a8c\u8bc1\u4ea4\u6613\u7684\u6b63\u786e\u6027 * getOwnerAddress - \u83b7\u53d6\u4ea4\u6613\u53d1\u8d77\u65b9\u7684\u5730\u5740 * calcFee - \u5b9a\u4e49\u4ea4\u6613\u624b\u7eed\u8d39\u8ba1\u7b97\u903b\u8f91 \u5f00\u53d1\u8005\u4e5f\u53ef\u4ee5\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u5b9e\u73b0 Actuator \u63a5\u53e3\uff0c\u6765\u5b9e\u73b0\u81ea\u5b9a\u4e49\u4ea4\u6613\u7c7b\u578b\u7684\u5904\u7406\u3002","title":"actuator"},{"location":"developers/code-structure/#crypto","text":"crypto\u662f\u4e00\u4e2a\u76f8\u5bf9\u72ec\u7acb\u7684\u6a21\u5757\uff0c\u4f46\u4e5f\u662f\u975e\u5e38\u91cd\u8981\u7684\u6a21\u5757\uff0cJava-tron\u4e2d\u7684\u6570\u636e\u5b89\u5168\u51e0\u4e4e\u5168\u7531\u8be5\u6a21\u5757\u6765\u4fdd\u8bc1\uff0c\u76ee\u524d\u652f\u6301SM2\u548cECKey\u52a0\u5bc6\u7b97\u6cd5\u3002 crypto \u6a21\u5757\u7684\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/crypto \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- crypto/src/main/java/org/tron/common/crypto |-- Blake2bfMessageDigest.java |-- ECKey.java |-- Hash.java |-- SignInterface.java |-- SignUtils.java |-- SignatureInterface.java |-- cryptohash |-- jce |-- sm2 |-- zksnark sm2 \u548c jce - \u63d0\u4f9bSM2\u548cECKey\u52a0\u5bc6\u7b97\u6cd5\u548c\u7b7e\u540d\u7b97\u6cd5 zksnark - \u63d0\u4f9b\u96f6\u77e5\u8bc6\u8bc1\u660e\u7b97\u6cd5","title":"crypto"},{"location":"developers/code-structure/#framework","text":"framework\u662f java-tron \u7684\u6838\u5fc3\u6a21\u5757\uff0c\u4e5f\u662f\u8282\u70b9\u7684\u5165\u53e3\uff0cframework \u6a21\u5757\u8d1f\u8d23\u5404\u4e2a\u6a21\u5757\u7684\u521d\u59cb\u5316\u53ca\u4e1a\u52a1\u903b\u8f91\u7684\u8df3\u8f6c\uff0cframework\u5305\u542b\u4e86\u8282\u70b9\u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\uff0cP2P\u7f51\u7edc\u76f8\u5173\u7684\u8282\u70b9\u53d1\u73b0\u4e0e\u7ba1\u7406\u6d41\u7a0b\u3001\u533a\u5757\u5e7f\u64ad\u53ca\u5904\u7406\u6d41\u7a0b\u3002 framework \u6a21\u5757\u7684\u4ee3\u7801\u8def\u5f84\u4e3a https://github.com/tronprotocol/java-tron/tree/develop/framework \uff0c\u5176\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a |-- framework/src/main/java/org/tron |-- common | |-- application | |-- backup | |-- logsfilter | |-- net | |-- overlay | | |-- client | | |-- discover | | |-- message | | |-- server | |-- runtime | |-- zksnark |-- core | |-- Wallet.java | |-- capsule | |-- config | |-- consensus | |-- db | |-- metrics | |-- net | |-- services | |-- trie | |-- zen |-- keystore |-- program | |-- FullNode.java |-- tool program/FullNode.java - \u5b83\u662f\u7a0b\u5e8f\u7684\u5165\u53e3\u70b9\uff0c\u521d\u59cb\u5316\u5bf9\u5916\u7684HTTP\u3001gRPC\u548cjson-rpc\u63a5\u53e3\u670d\u52a1 core/services - \u5b9a\u4e49\u4e86\u5bf9\u5916\u63d0\u4f9b\u7684\u670d\u52a1\uff0c\u5176\u5b50\u76ee\u5f55 http/ \u5305\u542b\u4e86\u6240\u6709\u7684http\u63a5\u53e3\u5904\u7406\u7c7b\uff0c json-rpc/ \u5305\u542b\u4e86\u6240\u6709\u7684json-rpc\u63a5\u53e3\u5904\u7406\u7c7b common/overlay/discover - \u8282\u70b9\u53d1\u73b0\u903b\u8f91 common/overlay/server - \u8282\u70b9\u7ba1\u7406\u53ca\u8282\u70b9\u95f4\u533a\u5757\u540c\u6b65\u903b\u8f91 core/net - \u6d88\u606f\u5904\u7406\uff0c\u5176\u5b50\u76ee\u5f55 /service \u4e3a\u4ea4\u6613\u53ca\u533a\u5757\u5e7f\u64ad\u3001\u533a\u5757\u6293\u53d6\u53ca\u540c\u6b65\u903b\u8f91 core/db/Manager.java - \u4ea4\u6613\u53ca\u533a\u5757\u6821\u9a8c\u5e76\u5904\u7406\u903b\u8f91","title":"framework"},{"location":"developers/code-structure/#_2","text":"\u672c\u6587\u4e3b\u8981\u4ecb\u7ecd\u4e86Java-tron\u7684\u4ee3\u7801\u7ed3\u6784\uff0c\u4ee5\u53ca\u5404\u4e2a\u529f\u80fd\u6a21\u5757\u7684\u4f5c\u7528\u3001\u4f4d\u7f6e\u53ca\u76ee\u5f55\u7ed3\u6784\uff0c\u901a\u8fc7\u672c\u6587\u60a8\u4f1a\u5bf9Java-tron\u7684\u6574\u4f53\u7ed3\u6784\u53ca\u5173\u952e\u63a5\u53e3\u6709\u4e86\u5927\u81f4\u7684\u4e86\u89e3\uff0c\u65b9\u4fbf\u540e\u7eed\u7684\u4ee3\u7801\u5206\u6790\u548c\u5f00\u53d1\u3002","title":"\u603b\u7ed3"},{"location":"developers/code-structure/#chainbase_1","text":"","title":"ChainBase"},{"location":"developers/code-structure/#_3","text":"\u4f17\u6240\u5468\u77e5\u533a\u5757\u94fe\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u4e0d\u53ef\u7be1\u6539\u7684\u5206\u5e03\u5f0f\u8d26\u672c\uff0c\u975e\u5e38\u9002\u5408\u89e3\u51b3\u4fe1\u4efb\u7684\u95ee\u9898\uff0c\u73b0\u5b9e\u4e2d\u5f80\u5f80\u5229\u7528\u533a\u5757\u94fe\u6765\u8fdb\u884c\u8bb0\u8d26\u548c\u4ea4\u6613\uff0c\u6bd4\u5982\u5f88\u591a\u5e94\u7528\u91c7\u7528 BTC\u3001ETH\u3001TRX \u7b49\u6570\u5b57\u8d27\u5e01\u6765\u8fdb\u884c\u7ecf\u6d4e\u6d3b\u52a8\u4ee5\u4fdd\u8bc1\u8d44\u91d1\u7684\u516c\u5f00\u900f\u660e\u3002 \u800c\u5b9e\u73b0\u8fd9\u6837\u4e00\u4e2a\u4e0d\u53ef\u7be1\u6539\u7684\u5206\u5e03\u5f0f\u8d26\u672c\u662f\u4e00\u4e2a\u975e\u5e38\u590d\u6742\u7684\u7cfb\u7edf\u5de5\u7a0b\uff0c\u6d89\u53ca\u5230\u5f88\u591a\u6280\u672f\u9886\u57df\uff1a\u6bd4\u5982 p2p \u7f51\u7edc\u3001\u667a\u80fd\u5408\u7ea6\u3001\u6570\u636e\u5e93\u3001\u5bc6\u7801\u5b66\u3001\u5171\u8bc6\u673a\u5236\u7b49\u3002\u5176\u4e2d\u6570\u636e\u5e93\u4f5c\u4e3a\u5e95\u5c42\u5b58\u50a8\u7684\u57fa\u7840\uff0c\u5404\u4e2a\u533a\u5757\u94fe\u56e2\u961f\u90fd\u5728\u63a2\u7d22\u6570\u636e\u5e93\u5c42\u9762\u7684\u8bbe\u8ba1\u4e0e\u4f18\u5316\u3002 Java-tron \u7684\u6570\u636e\u5e93\u6a21\u5757\u4e5f\u79f0\u4e3aChainBase \u6a21\u5757\uff0c\u672c\u6587\u4e3b\u8981\u4ecb\u7ecd\u4e00\u4e9b\u80cc\u666f\u77e5\u8bc6\uff0c\u5e76\u901a\u8fc7\u4ecb\u7ecd\u4ea4\u6613\u5904\u7406\u3001\u72b6\u6001\u56de\u6eda\u3001\u6570\u636e\u6301\u4e45\u5316\u7b49\u903b\u8f91\u4e3a\u5f00\u53d1\u8005\u5c55\u73b0ChainBase \u6a21\u5757\u7684\u5b9e\u73b0\u7ec6\u8282\u3002","title":"\u6982\u89c8"},{"location":"developers/code-structure/#_4","text":"\u6570\u636e\u5e93\u662f\u533a\u5757\u94fe\u7cfb\u7edf\u4e2d\u91cd\u8981\u7684\u4e00\u73af\uff0c\u5b83\u5b58\u50a8\u4e86\u533a\u5757\u94fe\u4e0a\u7684\u6240\u6709\u6570\u636e\uff0c\u662f\u533a\u5757\u94fe\u7cfb\u7edf\u6b63\u5e38\u8fd0\u884c\u7684\u57fa\u7840\uff0c\u6bcf\u4e2a\u5168\u8282\u70b9\u90fd\u4fdd\u5b58\u4e86\u4e00\u4efd\u5168\u91cf\u7684\u6570\u636e\uff0c\u5305\u542b\u533a\u5757\u6570\u636e\u548c\u72b6\u6001\u6570\u636e\uff0cJava-tron \u91c7\u7528 Account \u6a21\u578b\u6765\u4fdd\u5b58\u7528\u6237\u7684\u8d26\u6237\u72b6\u6001\u3002","title":"\u9884\u5907\u77e5\u8bc6"},{"location":"developers/code-structure/#_5","text":"\u76ee\u524d\u4e3b\u6d41\u7684\u8d26\u6237\u6a21\u578b\u6709\u4e24\u79cd\uff1a UTXO\u6a21\u578b Account\u6a21\u578b UTXO \u6a21\u578b\u662f\u65e0\u72b6\u6001\u7684\uff0c\u80fd\u66f4\u5bb9\u6613\u5e76\u53d1\u5904\u7406\u4ea4\u6613\uff0c\u5e76\u4e14\u62e5\u6709\u8f83\u597d\u7684\u9690\u79c1\u6027\uff0c\u4f46\u5728\u7f16\u7a0b\u7075\u6d3b\u5ea6\u65b9\u9762\u6709\u6240\u6b20\u7f3a\u3002 Account \u6a21\u578b\u4e2d\u7528\u6237\u6570\u636e\u90fd\u5b58\u653e\u5728\u5bf9\u5e94\u7684\u8d26\u6237\u4e2d\uff0c\u5e76\u4e14\u667a\u80fd\u5408\u7ea6\u4e5f\u4ee5\u4ee3\u7801\u7684\u5f62\u5f0f\u5b58\u653e\u5728 Account\u4e2d\uff0c\u8fd9\u79cd\u6a21\u578b\u66f4\u52a0\u76f4\u89c2\uff0c\u5f00\u53d1\u4eba\u5458\u66f4\u5bb9\u6613\u7406\u89e3\u3002\u51fa\u4e8e\u53ef\u7f16\u7a0b\u6027\uff0c\u7075\u6d3b\u6027\u7b49\u65b9\u9762\u7684\u8003\u8651\uff0cjava-tron \u91c7\u7528\u4e86 Account \u6a21\u578b\u3002","title":"\u8d26\u6237\u6a21\u578b"},{"location":"developers/code-structure/#_6","text":"\u76ee\u524d\u4e3b\u6d41\u7684\u5171\u8bc6\u6709 PoW\u3001PoS\u3001DPoS \u7b49\u3002PoW \u5373\u5de5\u4f5c\u91cf\u8bc1\u660e\uff0c\u6240\u6709\u8282\u70b9\u90fd\u53c2\u4e0e\u8ba1\u7b97\u4e00\u4e2a\u9884\u671f\u7684 hash \u7ed3\u679c\uff0c\u4f18\u5148\u8ba1\u7b97\u51fa\u7ed3\u679c\u7684\u8282\u70b9\u62e5\u6709\u51fa\u5757\u7684\u6743\u5229\uff0c\u4f46\u662f\u968f\u7740\u7b97\u529b\u4e0d\u65ad\u589e\u957f\uff0c\u8ba1\u7b97 hash \u6240\u9700\u7684\u80fd\u8017\u4e5f\u5728\u4e0d\u65ad\u589e\u5927\uff0c\u800c\u4e14\u5927\u77ff\u573a\u5784\u65ad\u4e86\u5927\u90e8\u5206\u7684\u7b97\u529b\uff0c\u8fd9\u4e5f\u8fdd\u80cc\u4e86\u53bb\u4e2d\u5fc3\u5316\u7684\u521d\u8877\u3002 \u4e3a\u4e86\u89e3\u51b3 PoW \u6240\u9762\u4e34\u7684\u95ee\u9898\uff0c\u6709\u4eba\u63d0\u51fa\u4e86PoS\uff08Proof of Stake\uff09\uff0c\u7b80\u5355\u7406\u89e3\u4e3a\uff1a\u6301\u5e01\u8d8a\u591a\u7684\u8282\u70b9\u83b7\u5f97\u51fa\u5757\u6743\u5229\u7684\u6982\u7387\u5c31\u8d8a\u5927\uff0c\u4f46\u8fd9\u6837\u4f1a\u5bfc\u81f4\u5784\u65ad\u95ee\u9898\uff0c\u6240\u4ee5\u53c8\u5bf9 PoS \u8fdb\u884c\u4e86\u6539\u8fdb\uff0c\u63d0\u51fa\u4e86 DPoS\uff08Delegated Proof of Stake\uff09\uff1a\u901a\u8fc7\u9009\u4e3e\u51fa\u7684\u8d85\u7ea7\u4ee3\u8868\u6765\u4fdd\u8bc1\u53bb\u4e2d\u5fc3\u5316\u7279\u6027\uff0c\u540c\u65f6\u8d85\u7ea7\u4ee3\u8868\u8f6e\u6d41\u8d1f\u8d23\u51fa\u5757\u6765\u63d0\u9ad8\u4e86\u51fa\u5757\u7684\u6548\u7387\u3002java-tron \u76ee\u524d\u91c7\u7528 DPoS \u5171\u8bc6\u673a\u5236\u3002 \u66f4\u591a\u7ec6\u8282\u53ef\u53c2\u770b\uff1a Delegated Proof of Stake","title":"\u5171\u8bc6"},{"location":"developers/code-structure/#_7","text":"\u533a\u5757\u94fe\u4e1a\u52a1\u548c\u4f20\u7edf\u4e92\u8054\u7f51\u4e1a\u52a1\u5b58\u5728\u4e00\u5b9a\u7684\u533a\u522b\uff0c\u533a\u5757\u94fe\u4e1a\u52a1\u5728\u6570\u636e\u5e93\u5c42\u9762\u5e76\u6ca1\u6709\u7279\u522b\u590d\u6742\u7684\u5904\u7406\u903b\u8f91\uff0c\u4f46\u533a\u5757\u94fe\u4e2d\u5b58\u5728\u5927\u91cfkey-value\u7684\u8bfb\u5199\u64cd\u4f5c\uff0c\u6240\u4ee5\u5bf9\u6570\u636e\u7684\u8bfb\u5199\u6027\u80fd\u6709\u7740\u8f83\u9ad8\u7684\u8981\u6c42\u3002 \u57fa\u4e8e\u8fd9\u65b9\u9762\u7684\u8003\u8651\uff0cjava-tron \u9ed8\u8ba4\u91c7\u7528 LevelDB \u4f5c\u4e3a\u5e95\u5c42\u6570\u636e\u5b58\u50a8\uff0c\u5e76\u4e14 java-tron \u6709\u7740\u826f\u597d\u7684\u67b6\u6784\u8bbe\u8ba1\uff0c\u91c7\u7528\u9762\u5411\u63a5\u53e3\u7f16\u7a0b\u7684\u6a21\u5f0f\u4f7f\u5f97 chainbase \u6a21\u5757\u62e5\u6709\u7740\u8f83\u597d\u7684\u6269\u5c55\u6027\uff0c\u4efb\u4f55\u5b9e\u73b0\u4e86 chainbase \u63a5\u53e3\u7684\u6570\u636e\u5e93\u90fd\u53ef\u4ee5\u4f5c\u4e3a java-tron \u7684\u5e95\u5c42\u5b58\u50a8\u5f15\u64ce\uff0c\u6bd4\u5982\u5728 chainbase v2 \u7248\u672c\u4e2d\u63d0\u4f9b\u4e86\u57fa\u4e8e RocksDB \u7684\u6570\u636e\u5e93\u5b9e\u73b0\u3002","title":"\u6301\u4e45\u5316\u5b58\u50a8"},{"location":"developers/code-structure/#_8","text":"\u4f17\u6240\u5468\u77e5\u533a\u5757\u94fe\u4e2d\u4e3b\u8981\u5b58\u50a8\u7684\u662f\u4ea4\u6613\u6570\u636e\uff0c\u4ecb\u7ecd chainbase \u6a21\u5757\u524d\u9700\u8981\u9996\u5148\u4e86\u89e3 java-tron \u4e2d\u4ea4\u6613\u7684\u5904\u7406\u903b\u8f91\u3002 \u4ea4\u6613\u4f1a\u901a\u8fc7\u7f51\u7edc\u5e7f\u64ad\u5206\u53d1\u5230\u5404\u4e2a\u8282\u70b9\uff0c\u8282\u70b9\u63a5\u6536\u4ea4\u6613\u540e\uff0c\u9996\u5148\u4f1a\u5bf9\u4ea4\u6613\u7684\u7b7e\u540d\u505a\u6821\u9a8c\uff0c\u9a8c\u8bc1\u6210\u529f\u540e\u8fd8\u9700\u8981\u5bf9\u4ea4\u6613\u8fdb\u884c\u9884\u6267\u884c\uff0c\u4ee5\u6b64\u6765\u5224\u65ad\u8be5\u4ea4\u6613\u662f\u5426\u5408\u6cd5\u3002 \u6ce8\uff1ajava-tron \u7684\u5177\u4f53\u5b9e\u73b0\u548c\u4e0a\u56fe\u6709\u6240\u504f\u5dee\uff0c\u540c\u65f6\u4e3a\u4e86\u65b9\u4fbf\u8d77\u89c1\uff0c\u672c\u6587\u5c06 FullNode \u8282\u70b9\u548c SR \u7edf\u79f0\u4e3a\u8282\u70b9\u3002 \u6bd4\u5982\u5904\u7406\u4e00\u7b14\u8f6c\u8d26\u4ea4\u6613\uff1a\u7528\u6237A\u5411\u7528\u6237B\u8f6c\u8d26100\u4e2a TRX\uff0c\u9700\u8981\u9a8c\u8bc1\u7528\u6237A\u662f\u5426\u6709\u8db3\u591f\u7684\u4f59\u989d\u6765\u8fdb\u884c\u8f6c\u8d26\u3002 \u6570\u636e\u5e93\u4e2d\u7684 account \u5e93\u4fdd\u5b58\u4e86\u6240\u6709\u7528\u6237\u7684\u8d26\u6237\u4fe1\u606f\uff0c\u5305\u62ec\u7528\u6237\u7684\u4f59\u989d\u4fe1\u606f\uff0c\u90a3\u5982\u4f55\u5224\u65ad\u8fd9\u4e2a\u8f6c\u8d26\u4ea4\u6613\u662f\u5426\u5408\u6cd5\uff1fjava-tron \u7684\u903b\u8f91\u662f\uff1a\u5f53\u4ece\u7f51\u7edc\u4e2d\u63a5\u6536\u5230\u4ea4\u6613\u540e\uff0c\u4f1a\u7acb\u5373\u6267\u884c\u8be5\u4ea4\u6613\u64cd\u4f5c\uff0c\u5373\u5728\u672c\u5730\u7684\u6570\u636e\u5e93\u4e2d\u5c06\u8d26\u6237\u4fe1\u606f\u8fdb\u884c\u4fee\u6539\uff1a\uff08accountA - 100TRX\uff0caccountB + 100TRX\uff09\u3002\u5047\u5982\u8fd9\u4e2a\u64cd\u4f5c\u80fd\u591f\u6267\u884c\u6210\u529f\uff0c\u90a3\u4e48\u8bf4\u660e\u81f3\u5c11\u5728\u5f53\u524d\u72b6\u6001\u4e0b\u8fd9\u4e2a\u4ea4\u6613\u662f\u5408\u6cd5\u7684\uff0c\u53ef\u4ee5\u6253\u5305\u81f3\u533a\u5757\u4e2d\u3002","title":"\u4ea4\u6613\u9a8c\u8bc1"},{"location":"developers/code-structure/#_9","text":"SR\uff1a\u8d85\u7ea7\u4ee3\u8868(Super Representative)\uff0c\u8d1f\u8d23\u4ea7\u5757 FullNode\uff1a\u5168\u8282\u70b9\uff0c\u5b58\u50a8\u5168\u91cf\u533a\u5757\u6570\u636e\uff0c\u8d1f\u8d23\u4ea4\u6613\u3001\u533a\u5757\u7684\u5e7f\u64ad\u548c\u6821\u9a8c\uff0c\u5e76\u63d0\u4f9b\u67e5\u8be2\u670d\u52a1 TRX\uff1a\u6ce2\u573a\u539f\u751f\u4ee3\u5e01","title":"\u540d\u8bcd\u89e3\u91ca"},{"location":"developers/code-structure/#_10","text":"\u4e0a\u9762\u6211\u4eec\u8bb2\u5230java-tron\u901a\u8fc7\u9884\u6267\u884c\u6765\u9a8c\u8bc1\u4ea4\u6613\u662f\u5426\u5408\u6cd5\uff0c\u4f46\u6211\u4eec\u9700\u8981\u77e5\u9053\u7684\u662f\u8be5\u4ea4\u6613\u5728\u67d0\u4e2a\u8282\u70b9\u4e0a\u9a8c\u8bc1\u6210\u529f\u5e76\u4e0d\u4ee3\u8868\u8be5\u4ea4\u6613\u5df2\u6210\u529f\u4e0a\u94fe\uff0c\u56e0\u4e3a\u8be5\u4ea4\u6613\u5e76\u672a\u6253\u5305\u5230\u5df2\u5171\u8bc6\u7684\u533a\u5757\u4e2d\uff0c\u5b58\u5728\u88ab\u56de\u6eda\u7684\u98ce\u9669\u3002 java-tron \u7684\u5171\u8bc6\u9075\u5faa\u4e86\u4e00\u4e2a\u539f\u5219\uff1a\u5373\u8d85\u8fc72/3\u4e2a\u8d85\u7ea7\u4ee3\u8868\u8ba4\u540c\u7684\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u624d\u662f\u771f\u6b63\u6210\u529f\u4e0a\u94fe\u7684\u4ea4\u6613\u3002\u4e5f\u53ef\u4ee5\u7406\u89e3\u4e3a\uff1a \u4ea4\u6613\u88ab\u6253\u5305\u8fdb\u5165\u533a\u5757 \u8be5\u533a\u5757\u88ab\u8d85\u8fc72/3\u4e2a SR \u6240\u63a5\u53d7 \u6ee1\u8db3\u4e0a\u8ff0\u4e24\u70b9\u7684\u4ea4\u6613\u624d\u662f\u6210\u529f\u4e0a\u94fe\u7684\u4ea4\u6613\u3002java-tron \u4e2d\u4e00\u4e2a\u4ea4\u6613\u88ab\u6700\u7ec8\u786e\u8ba4\u9700\u8981\u7ecf\u5386\u4e09\u4e2a\u9636\u6bb5\uff1a \u4ea4\u6613\u6821\u9a8c \u4ea4\u6613\u6253\u5305\u8fdb\u533a\u5757 \u8be5\u533a\u5757\u88ab\u7f51\u7edc\u5927\u90e8\u5206\u8282\u70b9\u63a5\u6536\u5e76\u5e94\u7528 \u8fd9\u4e5f\u5c31\u5f15\u51fa\u4e86\u4e00\u4e2a\u95ee\u9898\uff1a\u5728 java-tron \u7684\u5b9e\u73b0\u4e2d\uff0c\u4e00\u4e2a\u8282\u70b9\u5982\u679c\u5bf9\u4ea4\u6613\u505a\u9a8c\u8bc1\u540e\uff0c\u5b83\u7684\u6570\u636e\u5e93\u72b6\u6001\u968f\u4e4b\u8fdb\u884c\u4e86\u6539\u53d8\uff0c\u5047\u5982\u8fd9\u4e2a\u4ea4\u6613\u6700\u7ec8\u5e76\u672a\u6253\u5305\u8fdb\u533a\u5757\u6216\u8be5\u533a\u5757\u5e76\u672a\u6ee1\u8db3\u8d85\u8fc72/3\u4e2a SR \u63a5\u53d7\uff0c\u90a3\u8fd9\u4e2a\u8282\u70b9\u7684\u72b6\u6001\u548c\u6574\u4e2a\u7f51\u7edc\u7684\u72b6\u6001\u5c31\u4f1a\u4e0d\u4e00\u81f4\u3002 \u6240\u4ee5 \u9664\u4e86\u5904\u7406\u88ab\u8d85\u8fc72/3\u4e2aSR\u8ba4\u53ef\u7684\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u6570\u636e\u5916\uff0c\u5176\u4f59\u6240\u6709\u5bf9\u4ea4\u6613\u505a\u5904\u7406\u800c\u4ea7\u751f\u7684\u6570\u636e\u72b6\u6001\u7684\u53d8\u5316\u90fd\u6709\u53ef\u80fd\u9700\u8981\u56de\u6eda \u3002\u800c\u4e14\u9700\u8981\u56de\u6eda\u7684\u60c5\u51b5\u4e0d\u6b62\u4e00\u79cd\uff0c\u603b\u5171\u4e09\u79cd\uff1a \u63a5\u6536\u5230\u65b0\u7684\u533a\u5757\u540e\uff0c\u56de\u6eda\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u751f\u4ea7\u533a\u5757\u540e\uff0c\u56de\u6eda\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u82e5\u53d1\u73b0\u5206\u53c9\u94fe\uff0c\u56de\u6eda\u5206\u53c9\u94fe\u4e2d\u533a\u5757\u7684\u4ea4\u6613\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4 \u8fd93\u79cd\u60c5\u51b5\u9020\u6210\u7684\u6570\u636e\u72b6\u6001\u53d8\u5316\u90fd\u6709\u53ef\u80fd\u9700\u8981\u56de\u6eda\u3002\u4e0b\u9762\u4f9d\u6b21\u8bb2\u89e3\u4e3a\u4f55\u8fd9\u4e09\u5904\u9700\u8981\u56de\u6eda\u3002","title":"\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_11","text":"\u5728\u63a5\u6536\u5230\u65b0\u7684\u533a\u5757\u65f6\uff0c\u8282\u70b9\u9700\u8981\u56de\u6eda\u5230\u4e0a\u4e2a\u533a\u5757\u7684\u7ed3\u675f\u65f6\u72b6\u6001\uff0c\u56de\u6eda\u6389\u6240\u6709\u4e4b\u540e\u9a8c\u8bc1\u7684\u4ea4\u6613\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u5047\u5982\u8282\u70b9\u5728\u533a\u5757\u9ad8\u5ea6\u4e3a1000\u65f6 accountA \u8d26\u6237\u4f59\u989d\u4e3a100\uff0c\u6b64\u65f6\u63a5\u6536\u5e76\u6821\u9a8c\u4e86\u4e00\u4e2a\u8f6c\u8d26\u4ea4\u6613t1\uff0c\u5e76\u5c06\u81ea\u5df1\u7684100TRX\u8f6c\u8d26\u7ed9\u4e86 accountB\uff0c\u5f53\u63a5\u6536\u5230\u4e86\u65b0\u7684block1001\u540e\uff0c\u8be5block\u5305\u542b\u4e86\u4e00\u4e2a accountA \u8f6c50TRX\u7ed9 accountC \u7684\u4ea4\u6613t2\uff0c\u7406\u8bba\u4e0at2\u5df2\u7ecf\u6253\u5305\u8fdb\u533a\u5757\uff0c\u4f18\u5148\u7ea7\u662f\u8981\u4f18\u4e8et1\uff0c\u4f46\u662f\u5982\u679c\u4e0d\u505a\u4efb\u4f55\u64cd\u4f5c\u7684\u8bdd\uff0ct2\u7684\u6821\u9a8c\u5c06\u65e0\u6cd5\u901a\u8fc7\uff0c\u56e0\u4e3a accountA \u6ca1\u6709\u8db3\u591f\u7684\u4f59\u989d\uff0c\u6240\u4ee5\u5728\u63a5\u6536\u5230\u65b0\u7684\u533a\u57571001\u540e\uff0c\u9700\u8981\u5c06\u4ea4\u6613t1\u6240\u4ea7\u751f\u7684\u7684\u72b6\u6001\u53d8\u66f4\u8fdb\u884c\u56de\u6eda\u3002","title":"\u63a5\u6536\u65b0\u533a\u5757\u540e\u7684\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_12","text":"\u9996\u5148\u8bfb\u8005\u53ef\u80fd\u4f1a\u6709\u4e00\u4e2a\u7591\u95ee\uff1a\u5df2\u7ecf\u9a8c\u8bc1\u8fc7\u7684\u4ea4\u6613\u76f4\u63a5\u6253\u5305\u5230\u533a\u5757\u4e2d\u5373\u53ef\uff0c\u4e5f\u4e0d\u4f1a\u5bf9\u6570\u636e\u5e93\u72b6\u6001\u9020\u6210\u6539\u53d8\uff0c\u4e3a\u4f55\u8fd8\u6709\u6570\u636e\u5e93\u72b6\u6001\u7684\u53d8\u66f4\uff1f \u56e0\u4e3ajava-tron \u5728\u5c06\u4ea4\u6613\u6253\u5305\u5230\u533a\u5757\u65f6\u5bf9\u4ea4\u6613\u505a\u4e86\u4e8c\u6b21\u6821\u9a8c\uff0c\u505a\u4e8c\u6b21\u6821\u9a8c\u662f\u56e0\u4e3a\u4ea4\u6613\u7684\u65f6\u6548\u6027\u95ee\u9898\uff0c\u4f9d\u7136\u4ee5\u4e0a\u56fe\u4e3a\u4f8b\uff0c\u56fe\u4e2d\u53ef\u4ee5\u5f97\u77e5\u5728\u63a5\u6536\u5230\u533a\u57571001\u540e\u5bf9\u4ea4\u6613t1\u8fdb\u884c\u4e86\u56de\u6eda\uff0c\u5e76\u4e14\u5c06 accountA \u7684\u4f59\u989d\u51cf\u53bb50\uff0c\u4e4b\u540e\u8f6e\u5230\u8be5\u8282\u70b9\u6253\u5305\u51fa\u5757\uff0c\u4f46\u662f\u6b64\u65f6t1\u5df2\u7ecf\u53d8\u6210\u4e00\u4e2a\u975e\u6cd5\u7684\u4ea4\u6613\uff0c\u56e0\u4e3a accountA \u4e2d\u7684\u4f59\u989d\u5df2\u7ecf\u4e0d\u591f\u652f\u4ed8100\u4e2aTRX\uff0c\u76f4\u63a5\u5c06t1\u6253\u5305\u8fdb\u533a\u5757\u5fc5\u7136\u4e0d\u53ef\u53d6\uff0c\u6240\u4ee5\u9700\u8981\u5bf9\u4ea4\u6613\u518d\u6b21\u8fdb\u884c\u6821\u9a8c\uff0c\u8fd9\u4e5f\u5c31\u662f\u5728\u533a\u5757\u6253\u5305\u65f6\u4f9d\u7136\u9700\u8981\u5bf9\u4ea4\u6613\u505a\u4e8c\u6b21\u6821\u9a8c\u7684\u539f\u56e0\u3002 \u800c\u533a\u5757\u6253\u5305\u6210\u529f\u540e\uff0c\u8be5\u8282\u70b9\u4f1a\u5c06\u5411\u7f51\u7edc\u5e7f\u64ad\u8be5\u533a\u5757\uff0c\u540c\u65f6\u4e5f\u5728\u672c\u5730 apply\u8be5\u533a\u5757\uff0c\u800c apply \u7684\u903b\u8f91\u5219\u4f1a\u5bf9\u533a\u5757\u4e2d\u7684\u4ea4\u6613\u518d\u6b21\u6821\u9a8c\uff0c\u6240\u4ee5\u5728\u6253\u5305\u5b8c\u533a\u5757\u540e\u4ecd\u7136\u9700\u8981\u6267\u884c\u56de\u6eda\u64cd\u4f5c\u3002","title":"\u751f\u4ea7\u533a\u5757\u540e\u7684\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_13","text":"\u8fd9\u662f\u6700\u540e\u4e00\u79cd\u56de\u6eda\u7684\u60c5\u51b5\uff0c\u533a\u5757\u94fe\u4e0d\u53ef\u907f\u514d\u7684\u4f1a\u51fa\u73b0\u5206\u53c9\u7684\u60c5\u51b5\uff0c\u5c24\u5176\u662f\u57fa\u4e8e DPoS \u8fd9\u79cd\u51fa\u5757\u901f\u5ea6\u8f83\u5feb\u7684\u533a\u5757\u94fe\u7cfb\u7edf\u66f4\u5bb9\u6613\u51fa\u73b0\u5206\u53c9\u7684\u60c5\u51b5\u3002 java-tron \u5728\u5185\u5b58\u7ef4\u62a4\u4e86\u4e00\u4e2a\u5982\u56fe\u6240\u793a\u7684\u6570\u636e\u7ed3\u6784\uff1a java-tron\u4fdd\u5b58\u4e86\u6700\u8fd1\u8fd8\u672a\u8fbe\u6210\u5171\u8bc6\u7684\u6240\u6709\u533a\u5757\u3002\u5f53\u51fa\u73b0\u5206\u53c9\u94fe\u65f6\uff0c\u6839\u636e\u6700\u957f\u94fe\u539f\u5219\uff1a\u5047\u5982\u5206\u53c9\u94fe\u7684\u533a\u5757\u9ad8\u5ea6\u5927\u4e8e\u76ee\u524d\u4e3b\u94fe\u533a\u5757\u9ad8\u5ea6\uff0c\u5219\u9700\u8981\u5c06\u5206\u53c9\u94fe\u5207\u6362\u6210\u4e3b\u94fe\uff0c\u5207\u6362\u65f6\u5c31\u9700\u8981\u56de\u6eda\u6389\u4e4b\u524d\u4e3b\u94fe\u4e0a\u7684\u4e00\u90e8\u5206\u533a\u5757\u76f4\u5230\u5b83\u4eec\u5171\u540c\u7684\u7236\u533a\u5757\uff0c\u7136\u540e\u4ece\u8be5\u7236\u533a\u5757\u5904\u4f9d\u6b21 apply \u65b0\u7684\u4e3b\u94fe\u533a\u5757\u3002 \u5982\u56fe\uff0c\u6df1\u8272\u90e8\u5206\u7684 fork A \u539f\u5148\u4e3a\u4e3b\u94fe\uff0c\u7531\u4e8efork B \u7684\u9ad8\u5ea6\u4e0d\u65ad\u589e\u957f\u6700\u7ec8\u8d85\u8fc7\u4e86 A \u7684\u9ad8\u5ea6\uff0c\u6b64\u65f6\u5c31\u9700\u8981\u56de\u6eda\u6389 fork A \u4e2d\u9ad8\u5ea6\u4e3a1003\u30011002\u30011001\u7684\u4e09\u4e2a\u533a\u5757\u6570\u636e\uff0c\u7136\u540e\u4f9d\u6b21 apply fork B \u4e2d 1001'\u30011002'\u30011003'\u30011004'\u533a\u5757\u3002","title":"\u5206\u53c9\u94fe\u7684\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_14","text":"\u672c\u7ae0\u8282\u4ece\u4ee3\u7801\u7684\u89d2\u5ea6\u8bb2\u89e3\u63a5\u6536\u4ea4\u6613\u3001\u4ea4\u6613\u9a8c\u8bc1\u3001\u751f\u6210\u533a\u5757\u3001\u9a8c\u8bc1\u533a\u5757\u3001\u4fdd\u5b58\u533a\u5757\uff0c\u6765\u66f4\u8fdb\u4e00\u6b65\u89e3\u6790java-tron\u7684chainbase\u6a21\u5757\u3002\u5982\u6ca1\u6709\u7279\u6b8a\u58f0\u660e\uff0c\u5219\u9ed8\u8ba4\u63cf\u8ff0\u7684\u4e3aFullnode\uff08\u5305\u542bSR\uff09\u7684\u903b\u8f91\u3002","title":"\u72b6\u6001\u56de\u6eda\u5b9e\u73b0"},{"location":"developers/code-structure/#_15","text":"\u8282\u70b9\u6536\u5230\u5e7f\u64ad\u8fc7\u6765\u7684\u4ea4\u6613\u540e\uff0c\u901a\u8fc7\u8c03\u7528Manager\u7c7b\u7684 pushTransaction(final TransactionCapsule trx) \u51fd\u6570\u5c06\u4ea4\u6613\u653e\u5230\u672c\u5730\u7684pushTransactionQueue\u7f13\u5b58\u961f\u5217\uff0c\u540c\u65f6\u5bf9\u8be5\u4ea4\u6613\u8fdb\u884c\u9a8c\u8bc1\uff0c\u6b64\u65b9\u6cd5\u7684\u8fd4\u56de\u6bd4\u8f83\u8003\u7a76\uff1a \u5982\u679c\u9a8c\u8bc1\u6210\u529f\u76f4\u63a5\u8fd4\u56detrue \u5bf9\u4e8e\u7528\u6237\u901a\u8fc7API\u5411\u8282\u70b9\u53d1\u9001\u7684\u4ea4\u6613\uff0c\u4ea4\u6613\u9a8c\u8bc1\u5931\u8d25\uff0c\u4f1a\u629b\u51fa\u5f02\u5e38\uff0c\u7528\u6237\u4f1a\u62ff\u5230\u5f02\u5e38\u4fe1\u606f\u3002\u5bf9\u4e8e\u8282\u70b9\u901a\u8fc7P2P\u7f51\u7edc\u4ece\u5176\u4ed6\u8282\u70b9\u63a5\u53d7\u5230\u7684\u4ea4\u6613\u53ea\u4f1a\u5c06\u5f02\u5e38\u8bb0\u5f55\u5728\u672c\u5730\u3002 \u4ea4\u6613\u9a8c\u8bc1\u6210\u529f\u4e4b\u540e\uff0c\u6ca1\u6709\u95ee\u9898\u7684\u4ea4\u6613\u4f1a\u653e\u5165pendingTransactionQueue\uff0cpendingTransactionQueue\u8d1f\u8d23\u5728\u751f\u6210\u533a\u5757\u65f6\u63d0\u4f9b\u4ea4\u6613\u96c6\u5408\u3002\u5982\u679c\u8282\u70b9\u4e3aSR\u8282\u70b9\u65f6\uff0c\u5f53\u8f6e\u5230\u5230\u5b83\u4ea7\u5757\u65f6\uff0c\u5c31\u4ecependingTransactionQueue\u4e2d\u62ff\u51fa\u6765\u5168\u90e8\u6216\u8005\u90e8\u5206\uff08\u53d6\u51b3\u4e8ependingTransactionQueue\u4e2d\u6709\u591a\u5c11\u4ea4\u6613\uff09\u6765\u751f\u6210\u4e00\u4e2a\u533a\u5757\u3002","title":"\u4ea4\u6613\u63a5\u6536"},{"location":"developers/code-structure/#_16","text":"\u8282\u70b9\u5728\u6536\u5230\u65b0\u533a\u5757\u524d\u4e5f\u4f1a\u6536\u5230\u4ea4\u6613\u5e7f\u64ad\u6216\u6536\u5230\u6765\u81ea\u5176\u4ed6\u8282\u70b9\u7684\u4ea4\u6613\u5e7f\u64ad\uff0c\u9700\u8981\u5bf9\u63a5\u6536\u5230\u7684\u4ea4\u6613\u8fdb\u884c\u9a8c\u8bc1\u6765\u5224\u65ad\u8be5\u4ea4\u6613\u662f\u5426\u80fd\u6b63\u786e\u7684\u6267\u884c\uff0c\u9a8c\u8bc1\u4e5f\u5c31\u610f\u5473\u7740\u9700\u8981\u6539\u53d8\u72b6\u6001\uff0c\u800c\u9a8c\u8bc1\u6210\u529f\u7684\u4ea4\u6613\u5e76\u4e0d\u4ee3\u8868\u8fd9\u4e2a\u4ea4\u6613\u5c31\u4e00\u5b9a\u80fd\u6700\u7ec8\u6267\u884c\uff0c\u8fd8\u8981\u518d\u7ecf\u8fc7\u6253\u5305\u8fdb\u533a\u5757\u548c\u56fa\u5316\u7684\u8fc7\u7a0b\uff0c\u8fd9\u6b65\u53ef\u4ee5\u8ba4\u4e3a\u662f\u63d0\u524d\u5148\u7b5b\u9009\u6389\u90a3\u4e9b\u660e\u663e\u9519\u8bef\u7684\u4ea4\u6613\uff0c\u8fd9\u91cc\u53ea\u662f\u9a8c\u8bc1\u3002 \u6240\u4ee5\u65b0\u7684\u533a\u5757\u5230\u6765\u65f6\u8fd9\u4e9b\u4ea4\u6613\u9a8c\u8bc1\u6240\u4ea7\u751f\u7684\u72b6\u6001\u90fd\u662f\u5e94\u8be5\u88ab\u56de\u6eda\u6389\u7684\uff0c\u53ea\u6709\u5728apply \u533a\u5757\u65f6\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u624d\u4e0d\u4f1a\u56de\u6eda\u3002 \u56de\u6eda\u65f6\u9700\u8981\u5c06pendingTransactionQueue\u4e2d\u7684\u4ea4\u6613\u632a\u81f3rePushTransactions\uff0c\u5e76\u6e05\u7a7apendingTransactionQueue\uff0c\u8be6\u7ec6\u89e3\u91ca\u770b\u56fe\u3002 \u4e3a\u4ec0\u4e48\u65b0\u7684\u533a\u5757\u5230\u6765\u540e\u9700\u8981\u6e05\u7a7apendingTransactionQueue\uff1f\u9996\u5148\u660e\u786e\u4e00\u70b9\uff0cpendingTransactionQueue\u961f\u5217\u8d1f\u8d23\u5728\u751f\u6210\u533a\u5757\u65f6\u63d0\u4f9b\u4ea4\u6613\u6570\u636e\uff0c\u4e5f\u5c31\u662f\u8bf4\u5b58\u653e\u7684\u662f\u9a8c\u8bc1\u8fc7\u7684\u53ef\u4ee5\u76f4\u63a5\u6253\u5305\u8fdb\u533a\u5757\u7684\u4ea4\u6613\uff0c\u4f46\u662f\u56e0\u4e3a\u65b0\u7684\u533a\u5757\u4e5f\u4f1a\u5bf9\u8d26\u6237\u72b6\u6001\u8fdb\u884c\u53d8\u66f4\uff0c\u53ef\u80fdpendingTransactionQueue\u91cc\u9762\u4e4b\u524d\u9a8c\u8bc1\u6ca1\u95ee\u9898\u7684\u4ea4\u6613\u5728apply\u65b0\u7684\u533a\u5757\u540e\u9a8c\u8bc1\u4e0d\u901a\u8fc7\uff08\u6700\u7b80\u5355\u7684\u4f8b\u5b50\uff1a\u65b0\u533a\u5757\u67d0\u7b14\u4ea4\u6613\u662f\u8d26\u6237A\u82b1\u8d39\u4e86\u4e00\u90e8\u5206token\uff0c\u5bfc\u81f4\u8d26\u6237A\u5728\u961f\u5217\u4e2d\u7684\u67d0\u7b14\u4ea4\u6613\u91d1\u989d\u4e0d\u591f\u652f\u4ed8\u4e86\uff09\u3002\u5c06\u4ea4\u6613\u632a\u81f3rePushTransactions\u540e\u4f1a\u6709\u540e\u53f0\u7ebf\u7a0b\u4e13\u95e8\u8d1f\u8d23\u5bf9\u8be5\u961f\u5217\u4e2d\u7684\u4ea4\u6613\u518d\u6b21\u9a8c\u8bc1\uff0c\u5982\u679c\u6ca1\u6709\u95ee\u9898\u5c31\u518d\u6b21\u653e\u8fdbpendingTransactionQueue\uff0c\u4e3a\u4ea7\u751f\u533a\u5757\u63d0\u4f9b\u6570\u636e\u3002 Java-tron\u4e2d\u5b58\u5728\u4e00\u4e2asession\u5bf9\u8c61\uff0c\u4e00\u4e2asession\u8868\u793a\u7684\u662f\u4e00\u4e2a\u533a\u5757\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0csession\u5bf9\u8c61\u4e3b\u8981\u7528\u6765\u56de\u6eda\uff0c\u6bd4\u5982\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e00\u4e2a\u533a\u5757\u7684\u72b6\u6001\u90fd\u9700\u8981\u901a\u8fc7session\u6765\u64cd\u4f5c\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u4e0a\u56fe\u56fe\u4e2d\u80fd\u770b\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\u6709\u5f88\u591a\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u5e93\uff0c\u5c31\u662f\u8fd9\u4e9b\u6570\u636e\u5171\u540c\u7ec4\u7ec7\u6210\u4e00\u4e2a\u5b8c\u6574\u7684\u533a\u5757\u94fe\uff0c\u6bd4\u5982\u533a\u5757\u5b58\u50a8\u5728 khasodb \u548c blockStore \u4e2d\uff0c\u8d26\u6237\u4fe1\u606f\u5b58\u50a8\u5728 accountStore \u4e2d.... \u8282\u70b9\u7ef4\u62a4\u4e86\u4e00\u4e2a session \u94fe\u8868\uff0c\u8be5\u94fe\u8868\u5b58\u50a8\u7684\u662f\u533a\u5757/\u4ea4\u6613\u5bf9\u5e94\u7684\u53d8\u66f4\u4fe1\u606f\uff0c\u8282\u70b9\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e9b\u53d8\u66f4\u4fe1\u606f\u8fdb\u884c\u56de\u9000\u3002\u4e0a\u56fe\u4e2d session1 \u662f\u5f53\u524d\u6700\u9ad8\u533a\u5757\u7684\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0c\u5f53\u6b21\u63a5\u6536\u5230\u4e00\u4e2a\u4ea4\u6613\u540e\u4f1a\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684 session2 \uff0c\u540e\u7eed\u63a5\u6536\u4e00\u4e2a\u4ea4\u6613\u90fd\u4f1a\u4ea7\u751f\u4e00\u4e2a\u4e34\u65f6\u7684tmpSession\uff0c\u8be5\u4ea4\u6613\u9a8c\u8bc1\u540e\uff0ctmpSession\u7acb\u9a6c\u5408\u5e76\u5230session2\u4e2d\uff0c\u518d\u6b21\u63a5\u53d7\u5230\u4e00\u4e2a\u65b0\u533a\u5757\u4e4b\u524d\uff0c\u6240\u6709\u7684\u4ea4\u6613\u9a8c\u8bc1\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u90fd\u4f1a\u4fdd\u5b58\u5728 session2 \u4e2d\uff0c\u5f53\u6709\u65b0\u533a\u5757\u5230\u6765\u65f6\uff0c\u76f4\u63a5\u6267\u884c session2 \u7684 reset \u65b9\u6cd5\u5373\u53ef\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e2a\u533a\u5757\u3002","title":"\u6536\u5230\u65b0\u533a\u5757\u65f6\u7684\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_17","text":"SR\u751f\u4ea7\u533a\u5757\u524d\u9700\u8981\u56de\u6eda\uff0c\u539f\u56e0\u6bd4\u8f83\u590d\u6742\uff0c\u6211\u4eec\u5148\u8003\u8651\u4e00\u4e2a\u573a\u666f\uff1a pendingTransactionQueue \u4e2d\u5b58\u653e\u662f\u5f53\u524d\u5df2\u7ecf\u9a8c\u8bc1\u8fc7\u7684\u4ea4\u6613\uff0c\u6240\u4ee5\u67d0SR\u8282\u70b9\u4ea7\u5757\u65f6\u53ea\u8981\u76f4\u63a5\u6253\u5305pendingTransactionQueue \u4e2d\u7684\u4ea4\u6613\u8fdb\u533a\u5757\uff0c\u6253\u5305\u5b8c\u4e4b\u540e\u5c06\u72b6\u6001\u56de\u6eda\u5230\u4e0a\u4e00\u4e2a\u533a\u5757\u7684\u72b6\u6001\u5373\u53ef\u3002 \u4f46\u662f\u8fd9\u79cd\u65b9\u6848\u5b58\u5728\u4e00\u4e2a\u95ee\u9898\uff1a\u5047\u5982\u8be5 SR \u8282\u70b9\u521a\u521a\u63a5\u6536\u5e76 apply \u4e00\u4e2a\u65b0\u7684\u533a\u5757\uff0c\u4ece\u524d\u9762\u7684\u5185\u5bb9\u53ef\u77e5 pendingTransactionQueue \u5c06\u88ab\u6e05\u7a7a\u81f3rePushTransactions\uff0c\u6b64\u65f6\u6b63\u597d\u8f6e\u5230\u8fd9\u4e2a SR \u6253\u5305\u533a\u5757\u4e86\uff0c\u4f46 SR \u7684 pendingTransactionQueue \u4e2d\u6ca1\u6709\u4ec0\u4e48\u4ea4\u6613\u3002\u6240\u4ee5\u771f\u6b63\u7684\u5b9e\u73b0\u662f\uff0c\u4ea7\u5757\u65f6\u4e0d\u6b62\u4ece pendingTransactionQueue \u8bfb\u53d6\u4ea4\u6613\uff0c\u5982\u679c pendingTransactionQueue \u4e2d\u4ea4\u6613\u8f83\u5c11\u65f6\uff0c\u8fd8\u4f1a\u4ece rePushTransactions \u4e2d\u8bfb\u53d6\u4ea4\u6613\u6765\u653e\u8fdb\u533a\u5757\uff0c\u800c\u901a\u8fc7\u4e0a\u9762\u7684\u5206\u6790\u53ef\u77e5 rePushTransactions \u4e2d\u7684\u4ea4\u6613\u6709\u53ef\u80fd\u5df2\u7ecf\u4e0d\u80fd\u901a\u8fc7\u4e86\uff0c\u6240\u4ee5\u9700\u8981\u5bf9\u4ea4\u6613\u518d\u6b21\u8fdb\u884c\u9a8c\u8bc1\u3002\u800c\u6b63\u662f\u56e0\u4e3a\u6709\u8fd9\u4e2a\u9a8c\u8bc1\u903b\u8f91\uff0c\u624d\u9700\u8981\u5728\u51fa\u5757\u524d\u5148\u5c06\u72b6\u6001\u56de\u6eda\u3002 \u751f\u4ea7\u533a\u5757\u7684\u8fc7\u7a0b\u4e2d\u4f1a\u5bf9\u4ea4\u6613\u518d\u6b21\u9a8c\u8bc1\uff0c\u6240\u4ee5\u4f1a\u4ea7\u751f\u72b6\u6001\u53d8\u66f4\uff0c\u4f46\u8fd9\u662f\u53ea\u662f\u533a\u5757\u751f\u6210\uff0c \u8fd8\u9700\u8981\u5e7f\u64ad\u533a\u5757\uff0c\u7531\u5e7f\u64ad\u63a5\u53d7\u5230\u7684\u533a\u5757\u4f1a\u771f\u6b63\u7684\u6539\u53d8\u72b6\u6001\uff0c\u6240\u4ee5\u751f\u6210\u533a\u5757\u6240\u4ea7\u751f\u7684\u72b6\u6001\u53d8\u66f4\u4e5f\u9700\u8981\u88ab\u56de\u6eda\u6389\u3002\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5f53\u533a\u5757\u751f\u4ea7\u5b8c\u6210\u540e\uff0c \u8fd8\u9700\u8981\u5c06session2'' \u56de\u6eda\u6389\u3002","title":"\u751f\u4ea7\u533a\u5757\u65f6\u7684\u72b6\u6001\u56de\u6eda"},{"location":"developers/code-structure/#_18","text":"java-tron\u91c7\u7528\u7684\u662f DPOS \u5171\u8bc6\u673a\u5236\uff0c java-tron \u7684 DPOS \u662f\u6295\u7968\u9009\u51fa\u676527\u4e2a\u8282\u70b9\u5f53\u51fa\u5757\u8282\u70b9\uff08\u4e5f\u79f0\u4e3aSR\uff09\uff0cSR\u6709\u51fa\u5757\u7684\u6743\u5229\u548c\u4e49\u52a1\uff0c\u5e76\u4e14\u88ab\u8d85\u8fc72/3\u4e2aSR\u8ba4\u53ef\u7684block\u5373\u4e3a\u5df2\u7ecf\u8fbe\u6210\u4e00\u81f4\u610f\u89c1\u7684\u533a\u5757\uff0c\u8fd9\u4e9b\u533a\u5757\u4e0d\u80fd\u518d\u88ab\u56de\u6eda\uff0c\u4e5f\u79f0\u4e3a\u56fa\u5316\u5757\uff0c\u53ea\u6709\u56fa\u5316\u7684\u533a\u5757\u624d\u80fd\u88ab\u5199\u5165\u6570\u636e\u5e93\uff0c java-tron\u4e2d SnapshotManager \u662f\u5b58\u50a8\u6a21\u5757\u7684\u5173\u952e\u5165\u53e3\uff0c\u6301\u6709\u4e86\u5f53\u524d\u6240\u6709\u4e1a\u52a1\u6570\u636e\u5e93\u7684\u5f15\u7528\uff0c\u5e76\u5c06\u6570\u636e\u5e93\u5f15\u7528\u5b58\u50a8\u5728\u4e00\u4e2a\u5217\u8868\u4e2d\u3002\u6bcf\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u90fd\u652f\u6301\u5728\u81ea\u8eab\u7684\u57fa\u7840\u4e0a\u65b0\u589e\u4e00\u5c42\u72b6\u6001\u96c6\uff1aSnapshotImpl\uff0cSnapshotImpl \u662f\u4e00\u4e2a\u5185\u5b58 HashMap\uff0c\u591a\u4e2a SnapshotImpl \u901a\u8fc7\u94fe\u8868\u5f62\u5f0f\u5173\u8054\uff0c\u4e00\u4e2a SnapshotImpl \u4fdd\u7559\u4e00\u6b21\u72b6\u6001\u53d8\u66f4\u6240\u6d89\u53ca\u7684\u6570\u636e\u4fee\u6539\uff0c\u4e14 SnapshotImpl \u4e4b\u95f4\u76f8\u4e92\u72ec\u7acb\uff0c\u901a\u8fc7\u8fd9\u79cd\u6570\u636e\u7ed3\u6784\u6765\u5c06\u6bcf\u4e2a\u72b6\u6001\u72ec\u7acb\u5f00\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u4e0a\u56fe\u4e2d SnapshotRoot \u662f\u5bf9\u6301\u4e45\u5316\u6570\u636e\u5e93\u7684\u5c01\u88c5\u7c7b\uff0c\u8d1f\u8d23\u5b58\u50a8\u5df2\u56fa\u5316\u7684\u6570\u636e\u3002 \u524d\u9762\u7684\u7ae0\u8282\u4e2d\u6211\u4eec\u8bb2\u5230session\uff0c\u4e00\u4e2asession\u8868\u793a\u7684\u662f\u4e00\u4e2a\u533a\u5757\u5bf9\u72b6\u6001\u7684\u53d8\u66f4\uff0c\u5b9e\u9645\u4e0a\u4e00\u4e2asession\u5305\u542b\u4e86\u5404\u4e2a\u6570\u636e\u5e93\u5bf9\u5e94SnapshotImpl\uff0c\u6bd4\u5982\u4e0a\u56fe\u4e2d\u533a\u57575\u8fd9\u4e00\u5c42\u6240\u6709\u7684 SnapshotImpl \u5171\u540c\u6784\u6210\u4e86\u533a\u57575\u5bf9\u6574\u4e2a\u6570\u636e\u5e93\u7684\u53d8\u66f4\u3002 \u8282\u70b9\u63a5\u6536\u5230\u65b0\u533a\u5757\u540e\u4ea7\u751f\u7684\u53d8\u66f4\u4e0d\u4f1a\u76f4\u63a5\u5b58\u50a8\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\uff0c\u800c\u662f\u9996\u5148\u5b58\u5728 snapshotImpl \u4e2d\uff0c\u6bcf\u63a5\u6536\u4e00\u4e2a\u533a\u5757\u5bf9\u5e94\u4ea7\u751f\u4e00\u4e2asnapshotImpl \u4e0d\u65ad\u7684\u63a5\u6536\u533a\u5757\u4f1a\u5bfc\u81f4 snapshotImpl \u8d8a\u6765\u8d8a\u591a\uff0c\u4ec0\u4e48\u65f6\u5019\u4f1a\u5199\u5165\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\u5462\uff1f SnapshotManager \u4e2d\u5b58\u5728\u4e24\u4e2a\u53d8\u91cf\uff1asize \u548c maxSize\uff0csize \u6b64\u5904\u6211\u4eec\u7b80\u5355\u7406\u89e3\u4e3a\u76ee\u524d\u5185\u5b58\u4e2d\u6709\u591a\u5c11\u5c42 snapshotImpl\uff0cmaxSIze \u5219\u8868\u793a\u76ee\u524d\u56fa\u5316\u5757\u548c\u6700\u65b0\u5757\u9ad8\u5ea6\u7684\u5dee\u503c\u3002 \u8fd9\u6837\u5c31\u5f88\u660e\u663e\u4e86\uff0c\u5982\u679c size > maxSize\uff0c\u90a3\u4e48\u8bf4\u660e\u6700\u5f00\u59cb\u7684 size-maxSize \u5c42\u7684snapshotImpl \u5bf9\u5e94\u7684\u533a\u5757\u5df2\u7ecf\u662f\u56fa\u5316\u5757\u4e86\uff0c\u5b83\u4eec\u53ef\u4ee5\u843d\u76d8\u4e86\uff0c\u7136\u540e\u4f1a\u5c06\u5e94\u8be5\u843d\u76d8\u7684 snapshotImpl \u5408\u5e76\u5230\u6301\u4e45\u5316\u5b58\u50a8\u4e2d\uff0c\u8fd9\u6837\u6765\u786e\u4fdd snapshotImpl \u4e0d\u4f1a\u5360\u7528\u8fc7\u591a\u7684\u5185\u5b58\uff0c\u800c\u4e14\u4e5f\u4fdd\u8bc1\u4e86\u56fa\u5316\u5757\u80fd\u591f\u88ab\u53ca\u65f6\u7684\u6301\u4e45\u5316\u5b58\u50a8\u4e0b\u6765\u3002","title":"\u533a\u5757\u6301\u4e45\u5316"},{"location":"developers/code-structure/#_19","text":"Java-tron \u7684\u6570\u636e\u5e93\u5b58\u50a8\u4e0e\u5176\u4ed6\u516c\u94fe\u7565\u6709\u533a\u522b\uff0c\u4f8b\u5982\u4ee5\u592a\u574a\u6301\u4e45\u5316\u5c42\u53ea\u91c7\u7528\u4e86\u4e00\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\uff0c\u4ee5\u592a\u574a\u4e2d\u7684\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u7528\u524d\u7f00\u52a0\u4ee5\u533a\u5206\uff0c\u5b58\u50a8\u5728\u4e00\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e2d\u3002\u800c java-tron \u76ee\u524d\u5219\u5c06\u4e0d\u540c\u4e1a\u52a1\u7c7b\u578b\u7684\u6570\u636e\u5b58\u653e\u5728\u5404\u81ea\u7684\u6570\u636e\u5e93\u5b9e\u4f8b\u4e2d\u3002 \u4e24\u8005\u5b9e\u73b0\u65b9\u5f0f\u5404\u6709\u5343\u79cb\uff0c\u5355\u5b9e\u4f8b\u65b9\u4fbf\u7ef4\u62a4\uff0c\u80fd\u591f\u7edf\u4e00\u5199\u5165\uff0c\u4f46\u7f3a\u70b9\u4e5f\u8f83\u660e\u663e\uff0c\u6bd4\u5982\u968f\u7740\u65f6\u95f4\u63a8\u79fb\u5355\u5e93\u6570\u636e\u91cf\u4e0d\u65ad\u589e\u957f\uff0c\u67d0\u4e9b\u4e1a\u52a1\u6570\u636e\u5e93\u7684\u9891\u7e41\u8bbf\u95ee\u53ef\u80fd\u4f1a\u62d6\u7d2f\u5176\u4ed6\u4e1a\u52a1\u7684\u8bfb\u5199\u6027\u80fd\u3002 \u591a\u5b9e\u4f8b\u5219\u4e0d\u5b58\u5728\u5404\u4e2a\u4e1a\u52a1\u6570\u636e\u8bfb\u5199\u76f8\u4e92\u5f71\u54cd\u7684\u95ee\u9898\uff0c\u4e14\u53ef\u4ee5\u6839\u636e\u5404\u81ea\u7684\u6570\u636e\u91cf\u4e0e\u6027\u80fd\u8981\u6c42\u914d\u7f6e\u4e0d\u540c\u7684\u53c2\u6570\uff0c\u8fbe\u5230\u6027\u80fd\u6700\u5927\u5316\uff0c\u8fd8\u53ef\u4ee5\u5c06\u6570\u636e\u91cf\u8f83\u5927\u7684\u5e93\u72ec\u7acb\u62c6\u5206\u51fa\u53bb\uff0c\u4ee5\u7f13\u89e3\u6570\u636e\u81a8\u80c0\u95ee\u9898\u3002\u4f46\u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u5b58\u5728\u4e00\u4e2a\u4e25\u91cd\u7684\u95ee\u9898\uff1a\u5e76\u6ca1\u6709\u539f\u751f\u5de5\u5177\u652f\u6301\u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e4b\u95f4\u7684\u539f\u5b50\u5199\u5165\u3002 Java-tron \u4e3a\u4e86\u4fdd\u8bc1\u6570\u636e\u5e93\u591a\u5b9e\u4f8b\u7684\u539f\u5b50\u5199\u5165\uff0c\u65b0\u589e\u4e86 checkpoint \u673a\u5236\uff0c\u5728\u591a\u5b9e\u4f8b\u843d\u76d8\u524d\u5c06\u53d8\u66f4\u7684\u6570\u636e\u7edf\u4e00\u5199\u5165 checkpoint\uff0c\u82e5\u591a\u4e2a\u6570\u636e\u5e93\u5b9e\u4f8b\u5728\u5199\u5165\u65f6\u53d1\u751f\u610f\u5916\uff0c\u670d\u52a1\u91cd\u542f\u65f6\u4ece checkpoint \u4e2d\u5c06\u53d8\u66f4\u7684\u6570\u636e\u7edf\u4e00\u6062\u590d\uff0c\u4fdd\u8bc1\u5199\u5165\u7684\u539f\u5b50\u6027\u3002 \u4e0a\u4e00\u8282\u4e2d\u56fa\u5316\u5757\u7684 snapshotImpl \u5199\u5165\u6570\u636e\u5e93\u7684\u8fc7\u7a0b\u4e3b\u8981\u5305\u542b\u4e86\u4e24\u6b65\uff1a \u521b\u5efa checkpoint snapshotImpl \u6267\u884c\u843d\u76d8\u64cd\u4f5c \u521b\u5efa checkpoint \u8fd9\u4e2a\u64cd\u4f5c\u6bd4\u8f83\u5173\u952e, checkpoint \u662f\u5c06\u5185\u5b58\u4e2d\u9700\u8981\u5199\u5165\u6570\u636e\u5e93\u7684 snapshotImpl \u5148\u6301\u4e45\u5316\u7684\u5b58\u50a8\u5728\u4e00\u4e2a tmp \u7684\u6570\u636e\u5e93\u4e2d\uff08\u76ee\u524d\u5e95\u5c42\u5b9e\u73b0\u7684\u662fleveldb\u3001rocksdb\uff09\uff0c\u521b\u5efa checkpoint \u6210\u529f\u4e4b\u540e\u624d\u4f1a\u8fdb\u884c snapshotimpl \u7684\u843d\u76d8\u64cd\u4f5c\uff0c\u5047\u5982\u6b64\u65f6\u843d\u76d8\u65f6\u673a\u5668\u5b95\u673a\uff0c\u90a3\u4e48\u8282\u70b9\u518d\u6b21\u542f\u52a8\u65f6\uff0c\u4f1a\u9996\u5148\u641c\u7d22\u662f\u5426\u5b58\u5728 tmp \u7684 checkpoint \u6570\u636e\uff0c\u5982\u679c\u5b58\u5728\u7684\u8bdd\uff0c\u4f1a\u5c06 checkpoint \u4e2d\u7684\u6570\u636e\u56de\u653e\u81f3 snapshotRoot \u4e2d\u3002 Checkpoint \u6570\u636e\u7ed3\u6784\u5982\u4e0b\uff1a checkpoint\u5c06\u4e00\u6b21\u72b6\u6001\u53d8\u66f4\u7684\u6240\u6709\u6570\u636e\u7edf\u4e00\u5b58\u653e\u5728\u4e00\u4e2a\u6570\u636e\u5e93\u4e2d\uff0c\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u91c7\u7528\u524d\u7f00\u52a0\u4ee5\u533a\u5206\uff0c\u5e76\u4e14\u4e3a\u4e86\u4fdd\u8bc1\u672c\u6b21\u6240\u6709\u7684\u53d8\u66f4\u6570\u636e\u80fd\u591f\u5168\u90e8\u843d\u76d8\uff0c\u5199\u5165\u65f6\u91c7\u7528\u6570\u636e\u5e93\u5e95\u5c42\u8c03\u7528writeBatch() \u7684\u65b9\u5f0f\u3002 \u8fd9\u79cd\u89e3\u51b3\u7684\u601d\u8def\u53ef\u4ee5\u603b\u7ed3\u4e3a\uff1a \u591a\u6570\u636e\u5e93\u5b9e\u4f8b\u4e4b\u95f4\u65e0\u6cd5\u4fdd\u8bc1\u5199\u5165\u7684\u539f\u5b50\u6027\uff0c\u4f46\u5355\u6570\u636e\u5e93\uff08\u5927\u90e8\u5206\u4e3b\u6d41\u6570\u636e\u5e93\uff09\u652f\u6301\u539f\u5b50\u6027\u5199\u5165 \u5c06\u9700\u8981\u4fdd\u8bc1\u539f\u5b50\u6027\u5199\u5165\u7684\u6570\u636e\u96c6\u9996\u5148\u91c7\u7528\u539f\u5b50\u5199\u5165\u7684\u65b9\u5f0f\uff0c\u5199\u5165\u5230\u4e00\u4e2a\u4e34\u65f6\u5e93\uff0c\u7136\u540e\u5c06\u6570\u636e\u5206\u522b\u5199\u5165\u4e0d\u540c\u7684\u6570\u636e\u5e93\u5b9e\u4f8b\uff0c\u5982\u679c\u53d1\u751f\u610f\u5916\uff0c\u901a\u8fc7\u4e34\u65f6\u5e93\u7684\u6570\u636e\u6765\u6062\u590d\u5373\u53ef\u3002","title":"\u6570\u636e\u5e93\u539f\u5b50\u6027"},{"location":"developers/code-structure/#_20","text":"\u672c\u6587\u901a\u8fc7\u4ea4\u6613\u548c\u533a\u5757\u7684\u5904\u7406\u6d41\u7a0b\u6765\u5206\u6790\u4e86 chainbase \u6a21\u5757\u4e2d\u56de\u6eda\u548c\u6570\u636e\u5e93\u5199\u5165\u7684\u5b9e\u73b0\u7ec6\u8282\uff0c\u8fd8\u5206\u6790\u4e86\u6570\u636e\u5e93\u591a\u5b9e\u4f8b\u7684\u539f\u5b50\u5199\u5165\u7684\u539f\u7406\uff0c\u9632\u6b62\u610f\u5916\u5b95\u673a\u5bfc\u81f4\u6570\u636e\u5e93\u635f\u574f\uff0c\u5e0c\u671b\u901a\u8fc7\u9605\u8bfb\u672c\u6587\u80fd\u6709\u52a9\u4e8e\u5f00\u53d1\u8005\u8fdb\u4e00\u6b65\u4e86\u89e3\u548c\u5f00\u53d1java-tron\u6570\u636e\u5e93\u3002","title":"\u603b\u7ed3"},{"location":"developers/code-structure/#_21","text":"","title":"\u7f51\u7edc"},{"location":"developers/code-structure/#_22","text":"P2P\u662f\u4e00\u79cd\u5206\u5e03\u5f0f\u7f51\u7edc\uff0c\u7f51\u7edc\u7684\u53c2\u4e0e\u8005\u5171\u4eab\u4ed6\u4eec\u6240\u62e5\u6709\u7684\u4e00\u90e8\u5206\u786c\u4ef6\u8d44\u6e90\uff0c\u6bd4\u5982\u5904\u7406\u80fd\u529b\u3001\u5b58\u50a8\u80fd\u529b\u3001\u7f51\u7edc\u8fde\u63a5\u80fd\u529b\u3001\u6253\u5370\u673a\u7b49\uff0c\u8fd9\u4e9b\u5171\u4eab\u7684\u8d44\u6e90\u9700\u8981\u7531\u7f51\u7edc\u63d0\u4f9b\u670d\u52a1\u548c\u5185\u5bb9\uff0c\u80fd\u88ab\u5176\u5b83\u5bf9\u7b49\u8282\u70b9\u76f4\u63a5\u8bbf\u95ee\u800c\u65e0\u9700\u7ecf\u8fc7\u4e2d\u95f4\u5b9e\u4f53\u3002\u5728\u6b64\u7f51\u7edc\u4e2d\u7684\u53c2\u4e0e\u8005\u65e2\u662f\u670d\u52a1\u548c\u5185\u5bb9\u63d0\u4f9b\u8005\uff0c\u53c8\u662f\u670d\u52a1\u548c\u5185\u5bb9\u83b7\u53d6\u8005\u3002 \u533a\u522b\u4e8e\u4f20\u7edf\u7684Client/Server\u4e2d\u592e\u670d\u52a1\u5668\u7ed3\u6784\uff0cP2P\u7f51\u7edc\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u7684\u5730\u4f4d\u90fd\u662f\u5bf9\u7b49\u7684\u3002\u6bcf\u4e2a\u8282\u70b9\u5728\u5145\u5f53\u5ba2\u6237\u7aef\u7684\u540c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u670d\u52a1\u7aef\u7ed9\u5176\u5b83\u8282\u70b9\u63d0\u4f9b\u670d\u52a1\uff0c\u6781\u5927\u5730\u63d0\u9ad8\u4e86\u8d44\u6e90\u7684\u5229\u7528\u7387\u3002","title":"\u6982\u8ff0"},{"location":"developers/code-structure/#_23","text":"P2P \u662f\u533a\u5757\u94fe\u7ed3\u6784\u4e2d\u7684\u7f51\u7edc\u5c42\uff0c\u7f51\u7edc\u5c42\u7684\u4e3b\u8981\u76ee\u7684\u662f\u5b9e\u73b0\u533a\u5757\u94fe\u7f51\u7edc\u4e2d\u8282\u70b9\u4e4b\u95f4\u7684\u4fe1\u606f\u4f20\u64ad\u3001\u9a8c\u8bc1\u548c\u4ea4\u6d41\u3002\u533a\u5757\u94fe\u7f51\u7edc\u672c\u8d28\u4e0a\u662f\u4e00\u4e2aP2P\u7f51\u7edc\uff0c\u6bcf\u4e2a\u8282\u70b9\u65e2\u80fd\u63a5\u53d7\u4fe1\u606f\u4e5f\u80fd\u4ea7\u751f\u4fe1\u606f\u3002\u8282\u70b9\u4e4b\u95f4\u901a\u8fc7\u7ef4\u62a4\u4e00\u4e2a\u5171\u540c\u7684\u533a\u5757\u94fe\u6570\u636e\u6765\u4fdd\u6301\u901a\u4fe1\u3002 P2P\u7f51\u7edc\u4f5c\u4e3a\u533a\u5757\u94fe\u7684\u57fa\u7840\uff0c\u4e3a\u533a\u5757\u94fe\u5e26\u6765\u5982\u4e0b\u4f18\u70b9\uff1a \u9632\u6b62\u5355\u70b9\u653b\u51fb \u9ad8\u5bb9\u9519\u6027 \u8f83\u597d\u7684\u517c\u5bb9\u6027\u4e0e\u53ef\u6269\u5c55\u6027","title":"\u533a\u5757\u94fe\u7f51\u7edc"},{"location":"developers/code-structure/#tron","text":"TRON\u67b6\u6784\u56fe\u5982\u4e0b\uff1a P2P\u7f51\u7edc\u4f5c\u4e3aTRON\u7684\u6700\u5e95\u5c42\u6a21\u5757\uff0c\u76f4\u63a5\u51b3\u5b9a\u4e86\u6574\u4e2a\u533a\u5757\u94fe\u7f51\u7edc\u7684\u7a33\u5b9a\u6027\u3002\u7f51\u7edc\u6a21\u5757\u6309\u7167\u529f\u80fd\u53ef\u4ee5\u5212\u5206\u6210\u4ee5\u4e0b\u56db\u90e8\u5206\uff1a \u8282\u70b9\u53d1\u73b0 \u8282\u70b9\u8fde\u63a5 \u533a\u5757\u540c\u6b65 \u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad \u4e0b\u9762\u5c06\u5206\u522b\u4ecb\u7ecd\u8fd9\u56db\u4e2a\u529f\u80fd\u90e8\u5206\u3002","title":"TRON\u7f51\u7edc"},{"location":"developers/code-structure/#_24","text":"\u8282\u70b9\u53d1\u73b0\u662f\u533a\u5757\u94fe\u8282\u70b9\u63a5\u5165\u533a\u5757\u94fe\u7f51\u7edc\u7684\u7b2c\u4e00\u6b65\u3002\u533a\u5757\u94fe\u7f51\u7edc\u662f\u4e00\u79cd\u7ed3\u6784\u5316\u7684P2P\u7f51\u7edc\u3002\u7ed3\u6784\u5316\u7f51\u7edc\u4f1a\u5c06\u6240\u6709\u8282\u70b9\u6309\u7167\u67d0\u79cd\u7ed3\u6784\u6709\u5e8f\u7684\u7ec4\u7ec7\u8d77\u6765\uff0c\u6bd4\u5982\u5f62\u6210\u4e00\u4e2a\u73af\u72b6\u7f51\u7edc\u6216\u8005\u6811\u72b6\u7684\u7f51\u7edc\u3002 \u7ed3\u6784\u5316\u7f51\u7edc\u666e\u904d\u57fa\u4e8eDHT(Distributed Hash Table\uff0c\u5206\u5e03\u5f0f\u54c8\u5e0c\u8868) \u7b97\u6cd5\u5b9e\u73b0\u3002\u5177\u4f53\u7684\u5b9e\u73b0\u65b9\u6848\u6709 Chord\u3001Pastry\u3001CAN\u3001Kademlia \u7b49\u7b97\u6cd5\u3002TRON \u7f51\u7edc\u91c7\u7528 Kademlia \u7b97\u6cd5\u3002","title":"\u8282\u70b9\u53d1\u73b0"},{"location":"developers/code-structure/#kademlia","text":"Kademlia \u662f\u5206\u5e03\u5f0f\u6563\u5217\u8868(DHT\uff0cDistributed Hash Table)\u7684\u4e00\u79cd\u5b9e\u73b0\uff0c\u662f\u53bb\u4e2d\u5fc3\u5316 P2P \u7f51\u7edc\u4e2d\u6700\u6838\u5fc3\u7684\u4e00\u79cd\u8def\u7531\u5bfb\u5740\u6280\u672f\uff0c\u53ef\u4ee5\u5728\u65e0\u4e2d\u5fc3\u670d\u52a1\u5668\u7684\u60c5\u51b5\u4e0b\uff0c\u5728\u7f51\u7edc\u4e2d\u5feb\u901f\u627e\u5230\u76ee\u6807\u8282\u70b9\u3002 \u5173\u4e8e\u7b97\u6cd5\u7684\u8be6\u7ec6\u4ecb\u7ecd\u8bf7\u53c2\u8003 Kademlia \u3002","title":"Kademlia \u7b97\u6cd5"},{"location":"developers/code-structure/#tron_1","text":"TRON \u5b9e\u73b0\u7684 Kademlia \u7b97\u6cd5\uff0c\u8981\u70b9\u5982\u4e0b\uff1a \u8282\u70b9ID\uff1a\u968f\u673a\u4ea7\u751f\u7684512bit ID \u8282\u70b9\u8ddd\u79bb\uff1a\u8282\u70b9\u8ddd\u79bb\u901a\u8fc7\u4e24\u4e2a\u8282\u70b9\u7684ID\u5f02\u6216\u8fd0\u7b97\u5f97\u5230\uff0c\u516c\u5f0f\u4e3a\uff1a \u8282\u70b9\u8ddd\u79bb = 256 - \u8282\u70b9ID\u5f02\u6216\u7ed3\u679c\u7684\u524d\u5bfc0\u7684\u4e2a\u6570 \uff0c\u5982\u679c\u8ba1\u7b97\u7ed3\u679c\u4e3a\u8d1f\u6570\uff0c\u8ddd\u79bb\u7b49\u4e8e0\u3002 k\u6876\uff1a\u5373\u8282\u70b9\u8def\u7531\u8868\u3002\u6839\u636e\u8282\u70b9\u8ddd\u79bb\u7684\u8fdc\u8fd1\uff0c\u5c06\u8fdc\u7aef\u8282\u70b9\u5212\u5206\u5230\u4e0d\u540c\u7684\u6876\u4e2d\uff0c\u4e0e\u672c\u8282\u70b9\u8ddd\u79bb\u76f8\u540c\u7684\u8fdc\u7aef\u8282\u70b9\u88ab\u8bb0\u5f55\u5728\u76f8\u540c\u7684\u6876\u4e2d\uff0c\u6bcf\u4e2a\u6876\u6700\u591a\u5bb9\u7eb316\u4e2a\u8282\u70b9\u3002\u6839\u636e\u8282\u70b9\u8ddd\u79bb\u7684\u8ba1\u7b97\u516c\u5f0f\u5c31\u53ef\u4ee5\u770b\u51fa\uff0cTRON \u5b9e\u73b0\u7684 Kademlia \u7b97\u6cd5\u4e00\u5171\u7ef4\u62a4256\u4e2a\u6876\u3002 TRON \u8282\u70b9\u53d1\u73b0\u534f\u8bae\u5305\u62ec\u4ee5\u4e0b\u56db\u79cdUDP\u6d88\u606f\uff1a DISCOVER_PING - \u7528\u4e8e\u63a2\u6d4b\u2f00\u4e2a\u8282\u70b9\u662f\u5426\u5728\u7ebf DISCOVER_PONG - \u7528\u4e8e\u54cd\u5e94 DISCOVER_PING \u6d88\u606f DISCOVER_FIND_NODE - \u7528\u4e8e\u67e5\u627e\u4e0e\u2f6c\u6807\u8282\u70b9\u8ddd\u79bb\u6700\u8fd1\u7684\u5176\u5b83\u8282\u70b9 DISCOVER_NEIGHBORS - \u7528\u4e8e\u54cd\u5e94 DISCOVER_FIND_NODE \u6d88\u606f\uff0c\u4f1a\u8fd4\u56de\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u8282\u70b9\uff0c\u6700\u591a16\u4e2a","title":"TRON \u5b9e\u73b0"},{"location":"developers/code-structure/#_25","text":"\u5728\u4e86\u89e3\u8282\u70b9\u95f4\u5982\u4f55\u5efa\u7acbTCP\u8fde\u63a5\u4e4b\u524d\uff0c\u60a8\u9700\u8981\u9996\u5148\u4e86\u89e3peer\u8282\u70b9\u7c7b\u578b\u3002","title":"\u8282\u70b9\u8fde\u63a5"},{"location":"developers/code-structure/#peer","text":"\u8282\u70b9\u9700\u8981\u5bf9peer\u8282\u70b9\u8fdb\u884c\u7ba1\u7406\u5206\u7c7b\uff0c\u4ee5\u8fdb\u884c\u9ad8\u6548\u7a33\u5b9a\u7684\u8282\u70b9\u8fde\u63a5\u3002\u8fdc\u7aef\u8282\u70b9\u53ef\u4ee5\u5206\u4e3a\u5982\u4e0b\u51e0\u7c7b\uff1a Active nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0c\u7cfb\u7edf\u542f\u52a8\u540e\uff0c\u4f1a\u4e3b\u52a8\u4e0e\u5176\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\u3002\u5982\u679c\u8fde\u63a5\u5efa\u7acb\u5931\u8d25\uff0c\u5219\u5728\u6bcf\u4e2aTCP\u8fde\u63a5\u5b9a\u65f6\u4efb\u52a1\u4e2d\u90fd\u4f1a\u91cd\u65b0\u5c1d\u8bd5\u4e0e\u5176\u5efa\u7acb\u8fde\u63a5\u3002 Passive nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0c\u88ab\u52a8\u63a5\u53d7\u8fde\u63a5\u7684\u8282\u70b9\u3002 Trust nodes\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\uff0cActive nodes\u548cPassive nodes\u90fd\u662ftrust nodes\u3002\u5f53\u6536\u5230trust node\u7684\u8fde\u63a5\u8bf7\u6c42\u65f6\uff0c\u4f1a\u8df3\u8fc7\u5176\u5b83\u7684\u6761\u4ef6\u68c0\u67e5\uff0c\u76f4\u63a5\u63a5\u53d7\u8bf7\u6c42\u3002 badNodes\uff1a\u5f53\u6536\u5230\u5f02\u5e38\u7684\u534f\u8bae\u62a5\u6587\u65f6\uff0c\u4f1a\u5c06\u8282\u70b9\u52a0\u5165\u5230badNodes\uff0c\u751f\u6548\u65f6\u957f1\u4e2a\u5c0f\u65f6\uff0c\u5f53\u6536\u5230 badNodes \u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u4f1a\u76f4\u63a5\u62d2\u7edd\u8bf7\u6c42 recentlyDisconnectedNodes\uff1a\u5f53\u65ad\u5f00\u67d0\u6761\u8fde\u63a5\u540e\uff0c\u4f1a\u628a\u8282\u70b9\u52a0\u5165\u5230recentlyDisconnectedNodes\uff0c\u6709\u6548\u65f6\u957f30s\uff0c\u5f53\u6536\u5230 recentlyDisconnectedNodes \u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u4f1a\u76f4\u63a5\u62d2\u7edd\u8bf7\u6c42","title":"peer\u8282\u70b9\u7ba1\u7406"},{"location":"developers/code-structure/#tcp","text":"\u5728\u8282\u70b9\u542f\u52a8\u540e\uff0c\u4f1a\u521b\u5efa\u4e00\u4e2a\u5efa\u7acb\u8282\u70b9\u95f4TCP\u8fde\u63a5\u7684\u5b9a\u65f6\u4efb\u52a1 poolLoopExecutor \uff0c\u7528\u4e8e\u9009\u62e9\u8282\u70b9\uff0c\u5e76\u4e0e\u4e4b\u5efa\u7acb\u8fde\u63a5\u3002\u5efa\u7acbTCP\u8fde\u63a5\u5b9a\u65f6\u4efb\u52a1\uff0c\u5de5\u4f5c\u8fc7\u7a0b\u5982\u4e0b\uff1a TCP\u8fde\u63a5\u4e3b\u8981\u5206\u4e3a\u4e24\u6b65\uff1a\u9996\u5148\uff0c\u786e\u5b9a\u8981\u4e0e\u4e4b\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\u7684\u5217\u8868\uff1b\u5217\u8868\u4e2d\u9700\u8981\u5305\u542bactive nodes\u4e2d\u8fd8\u6ca1\u6709\u6210\u529f\u5efa\u7acb\u8fde\u63a5\u7684\u8282\u70b9\uff0c\u7136\u540e\u8ba1\u7b97\u8fd8\u9700\u8981\u5efa\u7acb\u8fde\u63a5\u7684\u6570\u91cf\uff0c\u4ece\u90bb\u5c45\u53d1\u73b0\u8282\u70b9\u5217\u8868\u91cc\u9762\u6839\u636e \u8282\u70b9\u8fc7\u6ee4\u7b56\u7565 \u8fc7\u6ee4\u51fa\u6ee1\u8db3\u8981\u6c42\u7684\u8282\u70b9\uff0c\u518d\u6839\u636e \u8282\u70b9\u6253\u5206\u7b56\u7565 \u5bf9\u8282\u70b9\u6253\u5206\u6392\u5e8f\uff0c\u5c06\u6700\u9ad8\u7684\u76f8\u5e94\u6570\u91cf\u7684\u8282\u70b9\u52a0\u5165\u5230\u8bf7\u6c42\u5217\u8868\u4e2d\u3002\u6700\u540e\uff0c\u4e0e\u8bf7\u6c42\u5217\u8868\u4e2d\u7684\u8282\u70b9\u5efa\u7acbTCP\u8fde\u63a5\u3002","title":"\u5efa\u7acb\u8282\u70b9\u95f4TCP\u8fde\u63a5"},{"location":"developers/code-structure/#_28","text":"TCP \u8fde\u63a5\u5efa\u7acb\u6210\u529f\u540e\uff0c\u4e3b\u52a8\u53d1\u8d77TCP\u8fde\u63a5\u8bf7\u6c42\u7684\u8282\u70b9\uff0c\u4f1a\u5411\u90bb\u5c45\u8282\u70b9\u53d1\u9001\u63e1\u624b\u6d88\u606f P2P_HELLO \uff0c\u76ee\u7684\u4e3a\u4e86\u786e\u8ba4\u8282\u70b9\u95f4\u7684\u94fe\u8def\u4fe1\u606f\u662f\u5426\u4e00\u81f4\uff0c\u4ee5\u53ca\u662f\u5426\u9700\u8981\u53d1\u8d77\u533a\u5757\u540c\u6b65\u6d41\u7a0b\u3002 \u5f53\u90bb\u5c45\u8282\u70b9\u6536\u5230 P2P_HELLO \u540e\uff0c\u4f1a\u4e0e\u672c\u5730\u4fe1\u606f\u505a\u6bd4\u8f83\uff0c\u6bd4\u5982\u68c0\u67e5p2p version\u3001\u521b\u4e16\u5757\u4fe1\u606f\u662f\u5426\u4e00\u81f4\uff0c\u82e5\u4e00\u81f4\uff0c\u8fd8\u9700\u8981\u68c0\u67e5\u56fa\u5316\u5feb\uff0c\u4ee5\u53ca\u5224\u65ad\u662f\u5426\u662f\u91cd\u590d\u7684\u8fde\u63a5\u3001\u6076\u610f\u8282\u70b9\u7b49\u3002\u82e5\u6240\u6709\u7684\u68c0\u67e5\u6761\u4ef6\u90fd\u901a\u8fc7\uff0c\u5219\u4f1a\u56de\u590d P2P_HELLO \u6d88\u606f\uff0c\u7136\u540e\u8fdb\u884c\u533a\u5757\u540c\u6b65\u6216\u5e7f\u64ad\uff1b\u5426\u5219\uff0c\u65ad\u5f00\u8fde\u63a5\u3002","title":"\u63e1\u624b"},{"location":"developers/code-structure/#_29","text":"\u4fe1\u9053\u4fdd\u6d3b\u662f\u901a\u8fc7 P2P_PING \u3001 P2P_PONG TCP\u62a5\u6587\u6765\u5b8c\u6210\u7684\u3002\u5f53\u8282\u70b9\u4e0e\u90bb\u5c45\u8282\u70b9\u5efa\u7acb\u4e86TCP\u8fde\u63a5\u5e76\u63e1\u624b\u6210\u529f\u540e\uff0c\u8282\u70b9\u4f1a\u4e3a\u8fde\u63a5\u5f00\u542f\u4e00\u4e2a\u7ebf\u7a0b pingTask \u5b9a\u671f\u53d1\u9001 P2P_PING \u6d88\u606f\u4ee5\u7ef4\u62a4\u8be5TCP\u8fde\u63a5\uff0c\u6bcf10s\u8c03\u5ea6\u4e00\u6b21\u3002\u5982\u679c\u5728\u8d85\u65f6\u65f6\u95f4\u5185\u672a\u6536\u5230\u8282\u70b9\u56de\u590d\u7684 P2P_PONG \u6d88\u606f\uff0c\u5219\u65ad\u5f00\u8fde\u63a5\u3002","title":"\u4fe1\u9053\u4fdd\u6d3b"},{"location":"developers/code-structure/#_30","text":"\u5728\u4e0e\u5bf9\u65b9\u8282\u70b9\u5b8c\u6210\u63e1\u624b\u540e\uff0c\u5982\u679c\u53d1\u73b0\u5bf9\u65b9\u8282\u70b9\u7684\u533a\u5757\u94fe\u6bd4\u672c\u5730\u7684\u533a\u5757\u94fe\u8981\u957f\uff0c\u6839\u636e\u6700\u957f\u94fe\u539f\u5219\uff0c\u4f1a\u89e6\u53d1\u533a\u5757\u540c\u6b65\u7684\u5904\u7406\u6d41\u7a0b syncService.startSync \u3002\u540c\u6b65\u8fc7\u7a0b\u4e2d\u7684\u62a5\u6587\u4ea4\u4e92\u5982\u4e0b\u56fe\uff1a \u8282\u70b9A\u5411\u5bf9\u65b9\u8282\u70b9B\u53d1\u9001 SYNC_BLOCK_CHAIN \u6d88\u606f\uff0c\u4ee5\u5ba3\u544a\u672c\u5730\u94fe\u7684\u6458\u8981\u4fe1\u606f\u3002\u5bf9\u65b9\u8282\u70b9B\u6536\u5230\u540e\uff0c\u8ba1\u7b97\u51fa\u8282\u70b9A\u7f3a\u5931\u7684\u533a\u5757\u6e05\u5355\uff0c\u5e76\u5c06\u7f3a\u5931\u533a\u5757\u7684id\u5217\u8868\u901a\u8fc7 BLOCK_CHAIN_INVENTORY \u6d88\u606f\u53d1\u9001\u7ed9\u8282\u70b9A\uff0c\u4e00\u6b21\u6700\u591a\u643a\u5e262000\u4e2a\u533a\u5757id\u3002 \u8282\u70b9A\u6536\u5230 BLOCK_CHAIN_INVENTORY \u6d88\u606f\u540e\uff0c\u53d6\u51fa\u7f3a\u5931\u533a\u5757id\uff0c\u5e76\u901a\u8fc7\u5f02\u6b65\u7684\u65b9\u5f0f\u5411\u8282\u70b9B\u53d1\u9001 FETCH_INV_DATA \u6d88\u606f\u4ee5\u8bf7\u6c42\u7f3a\u5c11\u7684\u533a\u5757\uff0c\u4e00\u6b21\u6700\u591a\u8bf7\u6c42100\u4e2a\u533a\u5757\u3002\u5982\u679c\u8fd8\u6709\u9700\u8981\u540c\u6b65\u7684\u533a\u5757\uff08\u5373 BLOCK_CHAIN_INVENTORY \u62a5\u6587\u4e2d\u7684remain_num\u5927\u4e8e0\uff09\uff0c\u4f1a\u89e6\u53d1\u65b0\u4e00\u8f6e\u7684\u533a\u5757\u540c\u6b65\u6d41\u7a0b\u3002 \u8282\u70b9B\u6536\u5230\u8282\u70b9A\u7684 FETCH_INV_DATA \u62a5\u6587\u540e\uff0c\u901a\u8fc7 BLOCK \u6d88\u606f\u5c06\u533a\u5757\u53d1\u9001\u7ed9\u8282\u70b9A\u3002\u8282\u70b9A\u6536\u5230 BLOCK \u62a5\u6587\u540e\uff0c\u5f02\u6b65\u5904\u7406\u8be5\u533a\u5757\u3002","title":"\u533a\u5757\u540c\u6b65"},{"location":"developers/code-structure/#_31","text":"\u4e0b\u9762\u6839\u636e\u51e0\u4e2a\u4e0d\u540c\u7684\u533a\u5757\u540c\u6b65\u573a\u666f\u793a\u4f8b\uff0c\u8bf4\u660e\u94fe\u6458\u8981\u548c\u8282\u70b9\u7f3a\u5c11\u7684\u533a\u5757\u6e05\u5355\u7684\u751f\u6210\u3002 \u94fe\u6458\u8981\uff1a\u6709\u5e8f\u7684\u533a\u5757blockID\u5217\u8868\uff0c\u5305\u62ec\uff1a\u6700\u9ad8\u56fa\u5316\u5757\u3001\u6700\u9ad8\u975e\u56fa\u5316\u5757\uff0c\u4ee5\u53ca\u4e4b\u95f4\u4e8c\u5206\u6cd5\u5bf9\u5e94\u7684\u533a\u5757 \u7f3a\u5931\u533a\u5757\u6e05\u5355\uff1a\u90bb\u5c45\u8282\u70b9\u6839\u636e\u94fe\u6458\u8981\u4e0e\u81ea\u5df1\u94fe\u8fdb\u884c\u6bd4\u8f83\uff0c\u786e\u5b9a\u5bf9\u65b9\u7f3a\u5931\u7684\u533a\u5757\u6e05\u5355\uff0c\u8fd4\u56de\u4e00\u7ec4\u8fde\u7eed\u7684\u533a\u5757blockID\u4ee5\u53ca\u5269\u4f59\u7684\u5757\u6570","title":"\u94fe\u6458\u8981\u53ca\u7f3a\u5931\u533a\u5757\u6e05\u5355"},{"location":"developers/code-structure/#_34","text":"\u5f53\u8d85\u7ea7\u4ee3\u8868\u8282\u70b9\u751f\u4ea7\u51fa\u65b0\u7684\u533a\u5757\uff0c\u6216\u8005\u5168\u8282\u70b9\u63a5\u6536\u5230\u7528\u6237\u53d1\u8d77\u7684\u65b0\u4ea4\u6613\u65f6\uff0c\u4f1a\u53d1\u8d77\u4ea4\u6613&\u533a\u5757\u5e7f\u64ad\u6d41\u7a0b\u3002\u5f53\u8282\u70b9\u63a5\u6536\u5230\u65b0\u533a\u5757\u6216\u8005\u65b0\u4ea4\u6613\u65f6\uff0c\u4f1a\u8f6c\u53d1\u76f8\u5e94\u7684\u533a\u5757\u6216\u4ea4\u6613\uff0c\u8f6c\u53d1\u4e0e\u5e7f\u64ad\u7684\u6d41\u7a0b\u4e00\u6837\u3002\u62a5\u6587\u4ea4\u4e92\u5982\u4e0b\u56fe\u6240\u793a\uff1a \u5176\u4e2d\u6d89\u53ca\u5230\u7684\u6d88\u606f\u7c7b\u578b\u5305\u62ec\uff1a INVENTORY - \u5e7f\u64ad\u6e05\u5355\uff1a\u533a\u5757\u6216\u8005\u4ea4\u6613id\u5217\u8868 FETCH_INV_DATA - \u8bf7\u6c42\u9700\u8981\u83b7\u53d6\u7684\u6e05\u5355\u6570\u636e\uff1a\u533a\u5757\u6216\u8005\u4ea4\u6613id\u5217\u8868 BLOCK - \u533a\u5757\u6570\u636e TRXS - \u4ea4\u6613\u6570\u636e \u8282\u70b9A\u5c06\u5f85\u5e7f\u64ad\u4ea4\u6613\u6216\u533a\u5757\u901a\u8fc7 INVENTORY \u6e05\u5355\u6d88\u606f\u53d1\u9001\u5230\u8282\u70b9B\u3002\u8282\u70b9B\u6536\u5230 INVENTORY \u6e05\u5355\u6d88\u606f\u540e\uff0c\u9700\u8981\u68c0\u67e5\u5bf9\u65b9\u8282\u70b9\u7684\u72b6\u6001\uff0c\u5982\u679c\u53ef\u4ee5\u63a5\u6536\u8be5\u6d88\u606f\uff0c\u5219\u5c06\u6e05\u5355\u4e2d\u7684\u533a\u5757/\u4ea4\u6613\u653e\u5165\u5f85\u83b7\u53d6\u961f\u5217 invToFetch \u4e2d\u3002\u5982\u679c\u662f\u533a\u5757\u6e05\u5355\uff0c\u8fd8\u4f1a\u7acb\u5373\u89e6\u53d1\"\u83b7\u53d6\u533a\u5757&\u4ea4\u6613\u4efb\u52a1\"\uff0c\u6765\u5411\u8282\u70b9A\u53d1\u9001 FETCH_INV_DATA \u6d88\u606f\u83b7\u53d6\u533a\u5757&\u4ea4\u6613\u3002 \u8282\u70b9A\u6536\u5230 FETCH_INV_DATA \u6d88\u606f\u540e\uff0c\u4f1a\u68c0\u67e5\u662f\u5426\u53d1\u9001\u8fc7\u6e05\u5355\u6d88\u606f\u7ed9\u5bf9\u65b9\uff0c\u5982\u679c\u53d1\u9001\u8fc7\uff0c\u5219\u6839\u636e\u6e05\u5355\u6570\u636e\uff0c\u5411\u8282\u70b9B\u53d1\u9001\u4ea4\u6613\u6216\u8005\u533a\u5757\u6d88\u606f\u3002\u8282\u70b9B\u6536\u5230\u4ea4\u6613\u6216\u8005\u533a\u5757\u6d88\u606f\u540e\uff0c\u5904\u7406\u6d88\u606f\uff0c\u5e76\u89e6\u53d1\u8f6c\u53d1\u6d41\u7a0b\u3002","title":"\u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad"},{"location":"developers/code-structure/#_35","text":"\u672c\u6587\u4ecb\u7ecd\u4e86TRON\u6700\u5e95\u5c42\u6a21\u5757-P2P\u7f51\u7edc\u76f8\u5173\u7684\u5b9e\u73b0\u7ec6\u8282\uff0c\u5305\u62ec\u8282\u70b9\u53d1\u73b0\u3001\u8282\u70b9\u8fde\u63a5\u3001\u533a\u5757\u540c\u6b65\u3001\u533a\u5757\u548c\u4ea4\u6613\u5e7f\u64ad\u6d41\u7a0b\uff0c\u5e0c\u671b\u901a\u8fc7\u9605\u8bfb\u672c\u6587\u80fd\u5e2e\u52a9\u5f00\u53d1\u8005\u8fdb\u4e00\u6b65\u4e86\u89e3\u548c\u5f00\u53d1java-tron\u7f51\u7edc\u76f8\u5173\u6a21\u5757\u3002","title":"\u603b\u7ed3"},{"location":"developers/contribution/","text":"\u6210\u4e3a\u6ce2\u573a\u793e\u533a\u5f00\u53d1\u8005 \u00b6 \u6ce2\u573a\u662f\u4e2a\u5168\u7403\u7684\uff0c\u5f00\u6e90\u7684\u53bb\u4e2d\u5fc3\u5316\u5e94\u7528\u7684\u5e73\u53f0\u3002 \u975e\u5e38\u611f\u8c22\u4f60\u5e2e\u52a9\u6211\u4eec\u5f00\u53d1\u6e90\u4ee3\u7801\uff01\u6211\u4eec\u6b22\u8fce\u548c\u611f\u6fc0\u6765\u81ea\u4e92\u8054\u7f51\u7684\u4efb\u4f55\u4eba\u7684\u8d21\u732e\uff0c\u5373\u4f7f\u662f\u5f88\u5c0f\u7684\u6f0f\u6d1e\u4fee\u590d\uff01 GitHub\u662f\u7528\u6765\u8ffd\u8e2a\u8bae\u9898\uff0c\u8d21\u732e\u4ee3\u7801\u3001\u5efa\u8bae\u3001\u7279\u6027\u8bf7\u6c42\u3001\u6587\u6863\u7b49\u3002 \u5982\u679c\u4f60\u60f3\u53c2\u4e0e\u6ce2\u573a\u5f00\u53d1\uff0c\u8bf7\u9075\u5faa\u6d41\u7a0b\uff1afork\uff0cfix\uff0ccommit\uff0csend a pull request (PR)\uff0c\u4ee5\u4f9b\u6ce2\u573a\u4e3b\u8981\u7ef4\u62a4\u8005\u5ba1\u67e5\u5e76\u4e14\u5408\u5e76\u5230\u4e3b\u5206\u652f\u3002\u5982\u679c\u4f60\u60f3\u63d0\u4ea4\u66f4\u590d\u6742\u7684\u6539\u52a8\uff0c\u4e3a\u4e86\u4fdd\u8bc1\u4f60\u7684\u6539\u52a8\u7b26\u5408\u6211\u4eec\u7684\u9879\u76ee\u9700\u6c42\u6216\u8005\u4f7f\u4f60\u7684\u6539\u52a8\u66f4\u6709\u6548\uff0c\u8bf7\u5148\u901a\u8fc7\u6211\u4eec\u7684\u901a\u4fe1\u9891\u9053\u4e0e\u6211\u4eec\u7684\u6838\u5fc3\u5f00\u53d1\u8005\u786e\u8ba4\u3002 \u6211\u4eec\u9f13\u52b1\u5c3d\u65e9\u63d0\u4ea4PR\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u5176\u4ed6\u793e\u533a\u5f00\u53d1\u8005\u77e5\u9053\u4f60\u5728\u5f00\u53d1\u7684\u8bae\u9898\u3002\u672a\u5f00\u53d1\u5b8c\u6210\u7684PR\u9700\u8981\u88ab\u6807\u6ce8\u201c\u8fdb\u884c\u4e2d\u201d\u72b6\u6001\u3002 \u793e\u533a\u5f00\u53d1\u8005\u9891\u9053 \u00b6 java-tron gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u7f51\u7edc\u76f8\u5173\u7684\u95ee\u9898 wallet-cli gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u7f51\u7edc\u5ba2\u6237\u7aef\u76f8\u5173\u7684\u95ee\u9898 documentation gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u76f8\u5173\u7684\u6587\u6863\u7684\u95ee\u9898 tips gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u6539\u8fdb\u63d0\u8bae\u76f8\u5173\u7684\u95ee\u9898 \u67e5\u770b \u6ce2\u573a\u5f00\u53d1\u8005\u6fc0\u52b1\u653f\u7b56 \u5982\u4f55\u53c2\u4e0eTIP\u7f16\u5199 \u00b6 \u8bf7\u67e5\u9605 \u5982\u4f55\u53c2\u4e0eTIP\u4e66\u5199 \u5982\u4f55\u8d21\u732ejava-tron\u4ee3\u7801 \u00b6 \u8bf7\u67e5\u9605 \u5982\u4f55\u53c2\u4e0ejava-tron\u7f16\u5199 \u62a5\u544a\u5b89\u5168\u95ee\u9898 \u00b6 \u6211\u4eec\u9ad8\u5ea6\u91cd\u89c6\u6240\u6709\u4e0e\u6ce2\u573a\u9879\u76ee\u5b89\u5168\u6709\u5173\u7684\u95ee\u9898\u3002\u6211\u4eec\u975e\u5e38\u611f\u8c22\u4f60\u5e2e\u52a9\u6211\u4eec\u589e\u5f3a\u6ce2\u573a\u9879\u76ee\u7684\u5b89\u5168\u6027\u3002 \u8bf7\u5728\u8fd9\u91cc\u62a5\u544a\u5b89\u5168\u6709\u5173\u7684\u95ee\u9898 https://hackerone.com/tronfoundation \u6211\u4eec\u4f1a\u4ece\u6838\u5fc3\u5f00\u53d1\u4eba\u5458\u4e2d\u59d4\u6d3e\u4e00\u4eba\u8ddf\u8fdb\u95ee\u9898\u3002\u9996\u5148\uff0c\u6211\u4eec\u4f1a\u786e\u8ba4\u95ee\u9898\u7684\u6709\u6548\u6027\u5e76\u4e14\u786e\u8ba4\u95ee\u9898\u6240\u5f71\u54cd\u7684\u7248\u672c\u3002\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u53bb\u6392\u67e5\u662f\u5426\u8fd8\u6709\u76f8\u4f3c\u7684\u95ee\u9898\u5b58\u5728\u3002\u6700\u540e\uff0c\u6211\u4eec\u4f1a\u4fee\u590d\u95ee\u9898\uff0c\u5e76\u53d1\u5e03\u65b0\u7684\u7248\u672c\u3002 \u5f53\u6211\u4eec\u6536\u5230\u4f60\u7684\u62a5\u544a\u540e\uff0c\u6211\u4eec\u4f1a\u53ca\u65f6\u901a\u77e5\u4f60\u6211\u4eec\u7684\u5904\u7406\u8fdb\u5ea6\u3002\u6211\u4eec\u6709\u53ef\u80fd\u4f1a\u9700\u8981\u4f60\u63d0\u4f9b\u66f4\u8be6\u7ec6\u7684\u95ee\u9898\u4fe1\u606f\u3002 \u5982\u679c\u4f60\u5bf9\u95ee\u9898\u7684\u4fee\u6539\u6709\u597d\u7684\u5efa\u8bae\uff0c\u8bf7\u63d0\u4ea4\u4e00\u4e2aPR\u3002 \u5982\u4f55\u53c2\u4e0e\u6ce2\u573a\u6587\u6863\u7684\u7f16\u5199 \u00b6 \u6211\u4eec\u6709\u4e24\u4e2a\u6587\u6863\u4ed3\u5e93\uff1a \u82f1\u6587\u6587\u6863 \u4e2d\u6587\u6587\u6863 \u6211\u4eec\u4f7f\u7528MkDocs\u6846\u67b6\u6765\u6784\u5efa\u6211\u4eec\u7684\u6587\u6863\u9879\u76ee\u3002\u6587\u6863\u4f7f\u7528Markdown\u8bed\u8a00\u4e66\u5199\uff0c\u901a\u8fc7\u5728YAML\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u6587\u6863\u8def\u5f84\u3002 \u4f60\u53ef\u4ee5\u5728/docs/\u6587\u4ef6\u5939\u4e0b\uff0c\u4fee\u6539\u3001\u6dfb\u52a0\u6587\u6863\u3002","title":"\u6210\u4e3a\u6ce2\u573a\u793e\u533a\u5f00\u53d1\u8005"},{"location":"developers/contribution/#_1","text":"\u6ce2\u573a\u662f\u4e2a\u5168\u7403\u7684\uff0c\u5f00\u6e90\u7684\u53bb\u4e2d\u5fc3\u5316\u5e94\u7528\u7684\u5e73\u53f0\u3002 \u975e\u5e38\u611f\u8c22\u4f60\u5e2e\u52a9\u6211\u4eec\u5f00\u53d1\u6e90\u4ee3\u7801\uff01\u6211\u4eec\u6b22\u8fce\u548c\u611f\u6fc0\u6765\u81ea\u4e92\u8054\u7f51\u7684\u4efb\u4f55\u4eba\u7684\u8d21\u732e\uff0c\u5373\u4f7f\u662f\u5f88\u5c0f\u7684\u6f0f\u6d1e\u4fee\u590d\uff01 GitHub\u662f\u7528\u6765\u8ffd\u8e2a\u8bae\u9898\uff0c\u8d21\u732e\u4ee3\u7801\u3001\u5efa\u8bae\u3001\u7279\u6027\u8bf7\u6c42\u3001\u6587\u6863\u7b49\u3002 \u5982\u679c\u4f60\u60f3\u53c2\u4e0e\u6ce2\u573a\u5f00\u53d1\uff0c\u8bf7\u9075\u5faa\u6d41\u7a0b\uff1afork\uff0cfix\uff0ccommit\uff0csend a pull request (PR)\uff0c\u4ee5\u4f9b\u6ce2\u573a\u4e3b\u8981\u7ef4\u62a4\u8005\u5ba1\u67e5\u5e76\u4e14\u5408\u5e76\u5230\u4e3b\u5206\u652f\u3002\u5982\u679c\u4f60\u60f3\u63d0\u4ea4\u66f4\u590d\u6742\u7684\u6539\u52a8\uff0c\u4e3a\u4e86\u4fdd\u8bc1\u4f60\u7684\u6539\u52a8\u7b26\u5408\u6211\u4eec\u7684\u9879\u76ee\u9700\u6c42\u6216\u8005\u4f7f\u4f60\u7684\u6539\u52a8\u66f4\u6709\u6548\uff0c\u8bf7\u5148\u901a\u8fc7\u6211\u4eec\u7684\u901a\u4fe1\u9891\u9053\u4e0e\u6211\u4eec\u7684\u6838\u5fc3\u5f00\u53d1\u8005\u786e\u8ba4\u3002 \u6211\u4eec\u9f13\u52b1\u5c3d\u65e9\u63d0\u4ea4PR\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u5176\u4ed6\u793e\u533a\u5f00\u53d1\u8005\u77e5\u9053\u4f60\u5728\u5f00\u53d1\u7684\u8bae\u9898\u3002\u672a\u5f00\u53d1\u5b8c\u6210\u7684PR\u9700\u8981\u88ab\u6807\u6ce8\u201c\u8fdb\u884c\u4e2d\u201d\u72b6\u6001\u3002","title":"\u6210\u4e3a\u6ce2\u573a\u793e\u533a\u5f00\u53d1\u8005"},{"location":"developers/contribution/#_2","text":"java-tron gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u7f51\u7edc\u76f8\u5173\u7684\u95ee\u9898 wallet-cli gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u7f51\u7edc\u5ba2\u6237\u7aef\u76f8\u5173\u7684\u95ee\u9898 documentation gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u76f8\u5173\u7684\u6587\u6863\u7684\u95ee\u9898 tips gitter channel \u8fd9\u4e2a\u9891\u9053\u7528\u6765\u5904\u7406\u8ddf\u6ce2\u573a\u6539\u8fdb\u63d0\u8bae\u76f8\u5173\u7684\u95ee\u9898 \u67e5\u770b \u6ce2\u573a\u5f00\u53d1\u8005\u6fc0\u52b1\u653f\u7b56","title":"\u793e\u533a\u5f00\u53d1\u8005\u9891\u9053"},{"location":"developers/contribution/#tip","text":"\u8bf7\u67e5\u9605 \u5982\u4f55\u53c2\u4e0eTIP\u4e66\u5199","title":"\u5982\u4f55\u53c2\u4e0eTIP\u7f16\u5199"},{"location":"developers/contribution/#java-tron","text":"\u8bf7\u67e5\u9605 \u5982\u4f55\u53c2\u4e0ejava-tron\u7f16\u5199","title":"\u5982\u4f55\u8d21\u732ejava-tron\u4ee3\u7801"},{"location":"developers/contribution/#_3","text":"\u6211\u4eec\u9ad8\u5ea6\u91cd\u89c6\u6240\u6709\u4e0e\u6ce2\u573a\u9879\u76ee\u5b89\u5168\u6709\u5173\u7684\u95ee\u9898\u3002\u6211\u4eec\u975e\u5e38\u611f\u8c22\u4f60\u5e2e\u52a9\u6211\u4eec\u589e\u5f3a\u6ce2\u573a\u9879\u76ee\u7684\u5b89\u5168\u6027\u3002 \u8bf7\u5728\u8fd9\u91cc\u62a5\u544a\u5b89\u5168\u6709\u5173\u7684\u95ee\u9898 https://hackerone.com/tronfoundation \u6211\u4eec\u4f1a\u4ece\u6838\u5fc3\u5f00\u53d1\u4eba\u5458\u4e2d\u59d4\u6d3e\u4e00\u4eba\u8ddf\u8fdb\u95ee\u9898\u3002\u9996\u5148\uff0c\u6211\u4eec\u4f1a\u786e\u8ba4\u95ee\u9898\u7684\u6709\u6548\u6027\u5e76\u4e14\u786e\u8ba4\u95ee\u9898\u6240\u5f71\u54cd\u7684\u7248\u672c\u3002\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u53bb\u6392\u67e5\u662f\u5426\u8fd8\u6709\u76f8\u4f3c\u7684\u95ee\u9898\u5b58\u5728\u3002\u6700\u540e\uff0c\u6211\u4eec\u4f1a\u4fee\u590d\u95ee\u9898\uff0c\u5e76\u53d1\u5e03\u65b0\u7684\u7248\u672c\u3002 \u5f53\u6211\u4eec\u6536\u5230\u4f60\u7684\u62a5\u544a\u540e\uff0c\u6211\u4eec\u4f1a\u53ca\u65f6\u901a\u77e5\u4f60\u6211\u4eec\u7684\u5904\u7406\u8fdb\u5ea6\u3002\u6211\u4eec\u6709\u53ef\u80fd\u4f1a\u9700\u8981\u4f60\u63d0\u4f9b\u66f4\u8be6\u7ec6\u7684\u95ee\u9898\u4fe1\u606f\u3002 \u5982\u679c\u4f60\u5bf9\u95ee\u9898\u7684\u4fee\u6539\u6709\u597d\u7684\u5efa\u8bae\uff0c\u8bf7\u63d0\u4ea4\u4e00\u4e2aPR\u3002","title":"\u62a5\u544a\u5b89\u5168\u95ee\u9898"},{"location":"developers/contribution/#_4","text":"\u6211\u4eec\u6709\u4e24\u4e2a\u6587\u6863\u4ed3\u5e93\uff1a \u82f1\u6587\u6587\u6863 \u4e2d\u6587\u6587\u6863 \u6211\u4eec\u4f7f\u7528MkDocs\u6846\u67b6\u6765\u6784\u5efa\u6211\u4eec\u7684\u6587\u6863\u9879\u76ee\u3002\u6587\u6863\u4f7f\u7528Markdown\u8bed\u8a00\u4e66\u5199\uff0c\u901a\u8fc7\u5728YAML\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u6587\u6863\u8def\u5f84\u3002 \u4f60\u53ef\u4ee5\u5728/docs/\u6587\u4ef6\u5939\u4e0b\uff0c\u4fee\u6539\u3001\u6dfb\u52a0\u6587\u6863\u3002","title":"\u5982\u4f55\u53c2\u4e0e\u6ce2\u573a\u6587\u6863\u7684\u7f16\u5199"},{"location":"developers/demo/","text":"\u5f00\u53d1\u793a\u4f8b \u00b6 \u672c\u6587\u5c06\u4ee5\u65b0\u589e\u4e00\u4e2a setPeer HTTP\u63a5\u53e3\u4e3a\u4f8b\u8bf4\u660e\u5982\u4f55\u53c2\u4e0eJava-tron\u5f00\u53d1\u3002\u5728\u5f00\u53d1\u524d\uff0c\u8bf7\u5148\u914d\u7f6e InteliJ IDE\u5f00\u53d1\u73af\u5883 \u3002 \u6709\u65f6\u7531\u4e8e\u7f51\u7edc\u539f\u56e0\uff0cJava-tron\u8282\u70b9\u53ef\u80fd\u65e0\u6cd5\u8fde\u63a5\u5230\u5bf9\u7b49\u8282\u70b9\uff0c\u5982\u679c\u80fd\u5728\u8282\u70b9\u8fd0\u884c\u65f6\u6dfb\u52a0\u4fe1\u4efb\u8282\u70b9\uff0c\u8fd9\u5c06\u4f7f\u8282\u70b9\u53ef\u4ee5\u5728\u8282\u70b9\u53d1\u73b0\u65e0\u6cd5\u5de5\u4f5c\u7684\u7684\u60c5\u51b5\u4e0b\u4e5f\u80fd\u8fde\u63a5\u5230\u7f51\u7edc\u3002 Fork Java-tron\u4ee3\u7801\u4ed3\u5e93 \u00b6 \u4ece https://github.com/tronprotocol/java-tron \u9879\u76ee\u4e2dFork\u4e00\u4e2a\u65b0\u7684repository\u5230\u81ea\u5df1\u4e2a\u4eba\u7684\u4ee3\u7801\u4ed3\u5e93\u4e2d\uff0c\u7136\u540e\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5c06\u4ee3\u7801\u514b\u9686\u5230\u672c\u5730: $ git clone https://github.com/yourname/java-tron.git $ git remote add upstream https://github.com/tronprotocol/java-tron.git \u540c\u6b65\u4ed3\u5e93 \u00b6 \u5f00\u53d1\u65b0\u529f\u80fd\u4e4b\u524d\uff0c\u5e94\u5148\u5c06\u4e2a\u4ebaFork\u7684\u4ed3\u5e93\u548c\u4e0a\u6e38\u4ed3\u5e93\u8fdb\u884c\u540c\u6b65\uff1a $ git fetch upstream $ git checkout develop $ git merge upstream/develop --no-ff \u521b\u5efa\u65b0\u5206\u652f \u00b6 \u4ece\u81ea\u5df1\u4ed3\u5e93\u7684develop\u5206\u652f\u62c9\u51fa\u4e00\u4e2a\u65b0\u7684\u5206\u652f\u7528\u4e8e\u672c\u5730\u5f00\u53d1\uff0c\u8bf7\u53c2\u8003 \u5206\u652f\u547d\u540d\u89c4\u8303 \uff0c\u5728\u672c\u4f8b\u4e2d\uff0c\u65b0\u5206\u652f\u7684\u540d\u79f0\u4e3a\uff1a feature/add-new-http-demo \u3002 $ git checkout -b feature/add-new-http-demo develop \u4ee3\u7801\u5b9e\u73b0 \u00b6 \u5728IDEA\u4e2d\u6253\u5f00Java-tron\u5de5\u7a0b\u3002\u5728 java-tron/framework/src/main/java/org/tron/core/services/http \u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2aservlet\u7528\u4e8e\u5904\u7406HTTP\u8bf7\u6c42\uff1aSetPeerServlet.java\uff0c\u8be5\u6587\u4ef6\u4e2d\u5e94\u5305\u542b\u4e24\u4e2a\u51fd\u6570 doGet \u548c doPost \u3002 doGet \u7528\u4e8e\u5904\u7406http get\u8bf7\u6c42\uff0c doPost \u7528\u4e8e\u5904\u7406http post\u8bf7\u6c42\u3002\u5982\u679c\u4e0d\u652f\u6301\u5176\u4e2d\u67d0\u79cd\u7c7b\u578b\u7684\u8bf7\u6c42\uff0c\u65b9\u6cd5\u5185\u5bb9\u4e3a\u7a7a\u5373\u53ef\u3002 @Component @Slf4j ( topic = \"API\" ) public class SetPeerServlet extends HttpServlet { protected void doGet ( HttpServletRequest request , HttpServletResponse response ) {} protected void doPost ( HttpServletRequest request , HttpServletResponse response ) {} } \u5728\u8be5\u793a\u4f8b\u4e2dsetPeer\u8bf7\u6c42\u5e94\u8be5\u901a\u8fc7post\u65b9\u5f0f\u53d1\u9001\uff0c\u56e0\u6b64\u9700\u8981\u5728 doPost \u65b9\u6cd5\u4e2d\u6dfb\u52a0\u5904\u7406\u903b\u8f91\uff0c doGet \u65b9\u6cd5\u5185\u5bb9\u4e3a\u7a7a\u3002 doPost \u65b9\u6cd5\u7684\u903b\u8f91\u4e3a\uff1a \u83b7\u53d6\u4f20\u5165\u7684\u53c2\u6570 \u901a\u8fc7addPeer\u65b9\u6cd5\u5c06peer\u4fe1\u606f\u6dfb\u52a0\u5230\u4fe1\u4efb\u8282\u70b9\u5217\u8868\u4e2d \u5c06addPeer\u7684\u5904\u7406\u7ed3\u679c\u8fd4\u56de\u7ed9\u524d\u7aef\u7528\u6237 @Component @Slf4j ( topic = \"API\" ) public class SetPeerServlet extends HttpServlet { @Autowired private ChannelManager channelManager ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) { try { PostParams params = PostParams . getPostParams ( request ); JSONObject jsonObject = JSONObject . parseObject ( params . getParams ()); String peerIpPort = String . valueOf ( jsonObject . get ( \"peer\" )); boolean res = addPeer ( peerIpPort ); if ( res ) { response . getWriter (). println ( \"Success to set trusted peer:\" + peerIpPort ); } else { response . getWriter (). println ( \"Fail to set the trusted peer:\" + peerIpPort ); } } catch ( Exception e ) { logger . error ( \"Exception occurs when setting peer: {}\" , e . getMessage ()); try { response . getWriter (). println ( Util . printErrorMsg ( e )); } catch ( IOException ioe ) { logger . error ( \"IOException occurs when setting peer: {}\" , ioe . getMessage ()); } } } ...... } \u5c06\u6dfb\u52a0\u4fe1\u4efb\u8282\u70b9\u7684\u5904\u7406\u903b\u8f91\u5355\u72ec\u653e\u5728 addPeer \u65b9\u6cd5\u4e2d\uff0c\u8fd9\u6837\u4e0d\u4f46\u53ef\u4ee5\u4f7f\u4ee3\u7801\u903b\u8f91\u66f4\u52a0\u6e05\u6670\uff0c\u800c\u4e14\u66f4\u6613\u4e8e\u6d4b\u8bd5\u3002 addPeer \u51fd\u6570\u7684\u903b\u8f91\u4e3a\uff1a \u68c0\u67e5\u7528\u6237\u8f93\u5165\u7684\u53c2\u6570\uff0c\u786e\u4fdd\u8282\u70b9ip\u548c\u7aef\u53e3\u4e0d\u4e3a\u7a7a \u901a\u8fc7 Node.instanceOf(peerIP) \u6784\u5efa\u8282\u70b9\u4fe1\u606f \u786e\u4fdd\u6dfb\u52a0\u7684\u4fe1\u4efb\u8282\u70b9\u4e0d\u662f\u81ea\u5df1 \u5c06\u8282\u70b9\u52a0\u5165\u5230\u81ea\u5df1\u7684\u4fe1\u4efb\u8282\u70b9\u5217\u8868\u4e2d boolean addPeer ( String peerIP ) { try { if ( peerIP != \"\" ) { Node node = Node . instanceOf ( peerIP ); if ( ! ( CommonParameter . PARAMETER . nodeDiscoveryBindIp . equals ( node . getHost ()) || CommonParameter . PARAMETER . nodeExternalIp . equals ( node . getHost ()) || Constant . LOCAL_HOST . equals ( node . getHost ())) || CommonParameter . PARAMETER . nodeListenPort != node . getPort ()) { InetAddress address = new InetSocketAddress ( node . getHost (), node . getPort ()). getAddress (); channelManager . getTrustNodes (). put ( address , node ); return true ; } } } catch ( Exception e ) { logger . error ( \"addPeer error - {}\" , e . getMessage ()); } return false ; } } \u5b8c\u6210SetPeerServlet\u7684\u5b9e\u73b0\uff0c\u8fd8\u9700\u8981\u5c06\u5176\u6ce8\u518c\u5230\u8282\u70b9HTTP API\u670d\u52a1\u5217\u8868\u4e2d\uff0c FullNodeHttpApiService \u662f\u8282\u70b9HTTP API\u670d\u52a1\u7684\u6ce8\u518c\u5165\u53e3\u3002 \u5728 FullNodeHttpApiService \u7c7b\u7684 start \u51fd\u6570\u4e2d\u8c03\u7528 context.addServlet \u65b9\u6cd5\u5c06SetPeerServlet\u6ce8\u518c\u5230\u670d\u52a1\u5217\u8868\u4e2d\uff0cHTTP \u63a5\u53e3\u7684\u540d\u5b57\u5b9a\u4e49\u4e3a /wallet/setpeer \u3002 public class FullNodeHttpApiService implements Service { ...... @Autowired private SetPeerServlet setPeerServlet ; ....... @Override public void start () { ...... context . addServlet ( new ServletHolder ( setPeerServlet ), \"/wallet/setpeer\" ); ....... } } \u7136\u540e\u53ef\u4ee5\u5bf9\u4ee5\u4e0a\u4ee3\u7801\u8fdb\u884c\u8c03\u8bd5\uff0c\u5728IDEA\u4e2d\u542f\u52a8Java-tron\u8282\u70b9\uff0c\u5728\u7ec8\u7aef\u4e2d\u901a\u8fc7Curl\u547d\u4ee4\u8bbf\u95ee\u8282\u70b9\uff1a $ curl --location --request POST 'http://127.0.0.1:16667/wallet/setpeer' \\ --header 'Content-Type: application/json' \\ --data-raw '{ \"peer\":\"192.163.3.2:16667\" }' \u8fd4\u56de\u7ed3\u679c\uff1a Success to set trusted peer:192.163.3.2:16667 \u81f3\u6b64\uff0c\u8be5\u529f\u80fd\u7684\u4ee3\u7801\u7f16\u5199\u5b8c\u6210\uff0c\u7136\u540e\u9700\u8981\u9488\u5bf9\u6539\u52a8\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\u3002\u5bf9\u4e8e\u7b80\u5355\u7684\u6539\u52a8\uff0c\u53ef\u4ee5\u5728\u5f00\u53d1\u4ee3\u7801\u5b8c\u6210\u4e4b\u540e\uff0c\u518d\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\uff0c\u4f46\u5bf9\u4e8e\u8f83\u5927\u7684\u6539\u52a8\uff0c\u5efa\u8bae\u5728\u5f00\u53d1\u7684\u540c\u65f6\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\u3002 \u7f16\u5199\u5355\u5143\u6d4b\u8bd5 \u00b6 Java-tron\u9879\u76ee\u7684\u5355\u5143\u6d4b\u8bd5\u57fa\u4e8eJUnit\u6846\u67b6\uff0c\u5173\u4e8eJUnit\u7684\u7528\u6cd5\u8bf7\u53c2\u8003 JUnit\u5b98\u7f51 \u3002\u4e0b\u9762\u7b80\u5355\u4ecb\u7ecdJava-tron\u5355\u5143\u6d4b\u8bd5\u7528\u4f8b\u89c4\u8303\u548c\u5e38\u7528\u6ce8\u89e3\u8bf4\u660e\u3002 Java-tron\u5355\u5143\u6d4b\u8bd5\u7528\u4f8b\u89c4\u8303 \u00b6 \u7f16\u5199Java-tron\u5355\u5143\u6d4b\u8bd5\u65f6\uff0c\u8bf7\u9075\u5b88\u5982\u4e0b\u89c4\u8303\uff1a \u6240\u6709\u6d4b\u8bd5\u7c7b\u5e94\u653e\u5728test\u76ee\u5f55\u4e0b\uff0c\u5e76\u4e14\u6d4b\u8bd5\u7c7b\u7684\u5305\u5e94\u8be5\u548c\u88ab\u6d4b\u8bd5\u4ee3\u7801\u5305\u7ed3\u6784\u4fdd\u6301\u4e00\u81f4\u3002\u4e00\u822c\u4f7f\u7528 Test \u4f5c\u4e3a\u7c7b\u540d\u7684\u540e\u7f00 \u6d4b\u8bd5\u65b9\u6cd5\u5fc5\u987b\u4f7f\u7528 @Test \u4fee\u9970\uff0c\u5e76\u4e14\u662fpublic void\u7c7b\u578b\uff0c\u4e00\u822c\u7528 test \u4f5c\u4e3a\u65b9\u6cd5\u540d\u7684\u524d\u7f00 \u6d4b\u8bd5\u7c7b\u4e2d\u7684\u6bcf\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u5fc5\u987b\u53ef\u4ee5\u72ec\u7acb\u6d4b\u8bd5\uff0c\u65b9\u6cd5\u95f4\u4e0d\u80fd\u6709\u4efb\u4f55\u4f9d\u8d56 \u5e38\u7528\u6ce8\u89e3\u8bf4\u660e \u00b6 \u4e0b\u9762\u4e3a\u4e00\u4e9b\u5e38\u7528\u7684\u6ce8\u89e3\u7684\u8bf4\u660e\uff0c\u5176\u5b83\u6ce8\u89e3\u8bf7\u53c2\u8003 JUnit\u5b98\u7f51\u6587\u6863 \u3002 @Test - \u5c06\u4e00\u4e2a\u666e\u901a\u65b9\u6cd5\u4fee\u9970\u6210\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5 @Ignore - \u6240\u4fee\u9970\u7684\u6d4b\u8bd5\u65b9\u6cd5\u4f1a\u88ab\u6d4b\u8bd5\u8fd0\u884c\u5668\u5ffd\u7565 @BeforeClass - \u4f1a\u5728\u6240\u6709\u7684\u65b9\u6cd5\u6267\u884c\u524d\u88ab\u6267\u884c\uff0cstatic\u65b9\u6cd5 \uff08\u5168\u5c40\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\uff0c\u800c\u4e14\u662f\u7b2c\u4e00\u4e2a\u8fd0\u884c\uff09 @AfterClass - \u4f1a\u5728\u6240\u6709\u7684\u65b9\u6cd5\u6267\u884c\u4e4b\u540e\u8fdb\u884c\u6267\u884c\uff0cstatic\u65b9\u6cd5 \uff08\u5168\u5c40\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\uff0c\u800c\u4e14\u662f\u6700\u540e\u4e00\u4e2a\u8fd0\u884c\uff09 @Before - \u4f1a\u5728\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u88ab\u8fd0\u884c\u524d\u6267\u884c\u4e00\u6b21 @After - \u4f1a\u5728\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u8fd0\u884c\u540e\u88ab\u6267\u884c\u4e00\u6b21 \u5355\u5143\u6d4b\u8bd5\u7c7b\u7684\u7ec4\u6210 \u00b6 \u4e00\u4e2a\u5355\u5143\u6d4b\u8bd5\u7c7b\u5e94\u5305\u542b\u4e00\u4e0b\u4e09\u90e8\u5206\u5185\u5bb9\uff1a @Before\u6216\u8005@BeforeClass\u4fee\u9970\u7684\u51fd\u6570\uff0c\u7528\u4e8e\u8fdb\u884c\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u524d\u7684\u521d\u59cb\u5316\u5de5\u4f5c @After\u6216\u8005@BeforeClass\u4fee\u9970\u7684\u51fd\u6570\uff0c\u7528\u4e8e\u5904\u7406\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u5b8c\u6210\u540e\u7684\u6570\u636e\u6e05\u7406\u5de5\u4f5c @Test\u4fee\u9970\u7684\u6d4b\u8bd5\u65b9\u6cd5 public class demoTest { @Before public void init () { // Initialization work before test case execution } @After public void destroy () { // Destroy work after test case execution } @Test public void testDemoMethod () { } } \u5bf9\u4e8e\u672c\u6587\u793a\u4f8b\uff0c\u5e94\u5728 framework/src/test/java/org/tron/core/services/http/ \u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\uff1aSetPeerServletTest.java \u6765\u7f16\u5199\u6d4b\u8bd5\u7528\u4f8b\u3002 public class SetPeerServletTest { private static TronApplicationContext context ; private static Application appT ; public static ChannelManager channelManager ; @Before public void init () { Args . setParam ( new String [] {}, Constant . TEST_CONF ); context = new TronApplicationContext ( DefaultConfig . class ); channelManager = context . getBean ( ChannelManager . class ); appT = ApplicationFactory . create ( context ); appT . initServices ( Args . getInstance ()); appT . startServices (); appT . startup (); } @After public void destroy () { Args . clearParam (); appT . shutdownServices (); appT . shutdown (); } @Test public void testAddPeer () { SetPeerServlet setPeerServlet = new SetPeerServlet (); Assert . assertFalse ( setPeerServlet . addPeer ( \"127.0.0.1\" )); } } CheckStyle\u4ee3\u7801\u98ce\u683c\u68c0\u67e5 \u00b6 \u9010\u4e2a\u68c0\u67e5\u4fee\u6539\u7684\u6587\u4ef6\uff0c\u5728\u53f3\u952e\u83dc\u5355\u4e2d\u9009\u62e9 Check Current File \uff0c\u5982\u679c\u68c0\u67e5\u51fa\u4ee3\u7801\u98ce\u683c\u95ee\u9898\uff0c\u8bf7\u6839\u636e\u63d0\u793a\u9010\u4e2a\u4fee\u6539\u3002 \u5bf9\u56fe\u4e2d\u4ee3\u7801\u98ce\u683c\u8b66\u544a\uff0c\u8fdb\u884c\u4fee\u590d\uff0c\u7136\u540e\uff0c\u518d\u4e00\u6b21\u68c0\u67e5\u8be5\u6587\u4ef6\uff0c\uff0c\u76f4\u81f3\u6ca1\u6709warning\u3002 \u63d0\u4ea4\u4ee3\u7801 \u00b6 \u4ee3\u7801\u5b8c\u6210\u4e4b\u540e\u63d0\u4ea4commit\uff0c\u8bf7\u53c2\u8003 commit\u89c4\u8303 \u3002 git add . git commit -m 'add a new http api setpeer' \u63d0\u4ea4\u65b0\u7684\u5206\u652f\u5230\u4e2a\u4eba\u8fdc\u7aef\u4ed3\u5e93\uff1a git push origin feature/add-new-http-demo \u63d0\u4ea4Pull Request \u00b6 \u5728Github\u4ece\u4f60\u81ea\u5df1\u7684\u4ed3\u5e93\u5411 tronprotocol/java-tron \u63d0\u4ea4\u4e00\u4e2a\u63a8\u9001\u4ee3\u7801\u8bf7\u6c42 Pull Request\u3002","title":"\u5f00\u53d1\u793a\u4f8b"},{"location":"developers/demo/#_1","text":"\u672c\u6587\u5c06\u4ee5\u65b0\u589e\u4e00\u4e2a setPeer HTTP\u63a5\u53e3\u4e3a\u4f8b\u8bf4\u660e\u5982\u4f55\u53c2\u4e0eJava-tron\u5f00\u53d1\u3002\u5728\u5f00\u53d1\u524d\uff0c\u8bf7\u5148\u914d\u7f6e InteliJ IDE\u5f00\u53d1\u73af\u5883 \u3002 \u6709\u65f6\u7531\u4e8e\u7f51\u7edc\u539f\u56e0\uff0cJava-tron\u8282\u70b9\u53ef\u80fd\u65e0\u6cd5\u8fde\u63a5\u5230\u5bf9\u7b49\u8282\u70b9\uff0c\u5982\u679c\u80fd\u5728\u8282\u70b9\u8fd0\u884c\u65f6\u6dfb\u52a0\u4fe1\u4efb\u8282\u70b9\uff0c\u8fd9\u5c06\u4f7f\u8282\u70b9\u53ef\u4ee5\u5728\u8282\u70b9\u53d1\u73b0\u65e0\u6cd5\u5de5\u4f5c\u7684\u7684\u60c5\u51b5\u4e0b\u4e5f\u80fd\u8fde\u63a5\u5230\u7f51\u7edc\u3002","title":"\u5f00\u53d1\u793a\u4f8b"},{"location":"developers/demo/#fork-java-tron","text":"\u4ece https://github.com/tronprotocol/java-tron \u9879\u76ee\u4e2dFork\u4e00\u4e2a\u65b0\u7684repository\u5230\u81ea\u5df1\u4e2a\u4eba\u7684\u4ee3\u7801\u4ed3\u5e93\u4e2d\uff0c\u7136\u540e\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5c06\u4ee3\u7801\u514b\u9686\u5230\u672c\u5730: $ git clone https://github.com/yourname/java-tron.git $ git remote add upstream https://github.com/tronprotocol/java-tron.git","title":"Fork Java-tron\u4ee3\u7801\u4ed3\u5e93"},{"location":"developers/demo/#_2","text":"\u5f00\u53d1\u65b0\u529f\u80fd\u4e4b\u524d\uff0c\u5e94\u5148\u5c06\u4e2a\u4ebaFork\u7684\u4ed3\u5e93\u548c\u4e0a\u6e38\u4ed3\u5e93\u8fdb\u884c\u540c\u6b65\uff1a $ git fetch upstream $ git checkout develop $ git merge upstream/develop --no-ff","title":"\u540c\u6b65\u4ed3\u5e93"},{"location":"developers/demo/#_3","text":"\u4ece\u81ea\u5df1\u4ed3\u5e93\u7684develop\u5206\u652f\u62c9\u51fa\u4e00\u4e2a\u65b0\u7684\u5206\u652f\u7528\u4e8e\u672c\u5730\u5f00\u53d1\uff0c\u8bf7\u53c2\u8003 \u5206\u652f\u547d\u540d\u89c4\u8303 \uff0c\u5728\u672c\u4f8b\u4e2d\uff0c\u65b0\u5206\u652f\u7684\u540d\u79f0\u4e3a\uff1a feature/add-new-http-demo \u3002 $ git checkout -b feature/add-new-http-demo develop","title":"\u521b\u5efa\u65b0\u5206\u652f"},{"location":"developers/demo/#_4","text":"\u5728IDEA\u4e2d\u6253\u5f00Java-tron\u5de5\u7a0b\u3002\u5728 java-tron/framework/src/main/java/org/tron/core/services/http \u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2aservlet\u7528\u4e8e\u5904\u7406HTTP\u8bf7\u6c42\uff1aSetPeerServlet.java\uff0c\u8be5\u6587\u4ef6\u4e2d\u5e94\u5305\u542b\u4e24\u4e2a\u51fd\u6570 doGet \u548c doPost \u3002 doGet \u7528\u4e8e\u5904\u7406http get\u8bf7\u6c42\uff0c doPost \u7528\u4e8e\u5904\u7406http post\u8bf7\u6c42\u3002\u5982\u679c\u4e0d\u652f\u6301\u5176\u4e2d\u67d0\u79cd\u7c7b\u578b\u7684\u8bf7\u6c42\uff0c\u65b9\u6cd5\u5185\u5bb9\u4e3a\u7a7a\u5373\u53ef\u3002 @Component @Slf4j ( topic = \"API\" ) public class SetPeerServlet extends HttpServlet { protected void doGet ( HttpServletRequest request , HttpServletResponse response ) {} protected void doPost ( HttpServletRequest request , HttpServletResponse response ) {} } \u5728\u8be5\u793a\u4f8b\u4e2dsetPeer\u8bf7\u6c42\u5e94\u8be5\u901a\u8fc7post\u65b9\u5f0f\u53d1\u9001\uff0c\u56e0\u6b64\u9700\u8981\u5728 doPost \u65b9\u6cd5\u4e2d\u6dfb\u52a0\u5904\u7406\u903b\u8f91\uff0c doGet \u65b9\u6cd5\u5185\u5bb9\u4e3a\u7a7a\u3002 doPost \u65b9\u6cd5\u7684\u903b\u8f91\u4e3a\uff1a \u83b7\u53d6\u4f20\u5165\u7684\u53c2\u6570 \u901a\u8fc7addPeer\u65b9\u6cd5\u5c06peer\u4fe1\u606f\u6dfb\u52a0\u5230\u4fe1\u4efb\u8282\u70b9\u5217\u8868\u4e2d \u5c06addPeer\u7684\u5904\u7406\u7ed3\u679c\u8fd4\u56de\u7ed9\u524d\u7aef\u7528\u6237 @Component @Slf4j ( topic = \"API\" ) public class SetPeerServlet extends HttpServlet { @Autowired private ChannelManager channelManager ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) { try { PostParams params = PostParams . getPostParams ( request ); JSONObject jsonObject = JSONObject . parseObject ( params . getParams ()); String peerIpPort = String . valueOf ( jsonObject . get ( \"peer\" )); boolean res = addPeer ( peerIpPort ); if ( res ) { response . getWriter (). println ( \"Success to set trusted peer:\" + peerIpPort ); } else { response . getWriter (). println ( \"Fail to set the trusted peer:\" + peerIpPort ); } } catch ( Exception e ) { logger . error ( \"Exception occurs when setting peer: {}\" , e . getMessage ()); try { response . getWriter (). println ( Util . printErrorMsg ( e )); } catch ( IOException ioe ) { logger . error ( \"IOException occurs when setting peer: {}\" , ioe . getMessage ()); } } } ...... } \u5c06\u6dfb\u52a0\u4fe1\u4efb\u8282\u70b9\u7684\u5904\u7406\u903b\u8f91\u5355\u72ec\u653e\u5728 addPeer \u65b9\u6cd5\u4e2d\uff0c\u8fd9\u6837\u4e0d\u4f46\u53ef\u4ee5\u4f7f\u4ee3\u7801\u903b\u8f91\u66f4\u52a0\u6e05\u6670\uff0c\u800c\u4e14\u66f4\u6613\u4e8e\u6d4b\u8bd5\u3002 addPeer \u51fd\u6570\u7684\u903b\u8f91\u4e3a\uff1a \u68c0\u67e5\u7528\u6237\u8f93\u5165\u7684\u53c2\u6570\uff0c\u786e\u4fdd\u8282\u70b9ip\u548c\u7aef\u53e3\u4e0d\u4e3a\u7a7a \u901a\u8fc7 Node.instanceOf(peerIP) \u6784\u5efa\u8282\u70b9\u4fe1\u606f \u786e\u4fdd\u6dfb\u52a0\u7684\u4fe1\u4efb\u8282\u70b9\u4e0d\u662f\u81ea\u5df1 \u5c06\u8282\u70b9\u52a0\u5165\u5230\u81ea\u5df1\u7684\u4fe1\u4efb\u8282\u70b9\u5217\u8868\u4e2d boolean addPeer ( String peerIP ) { try { if ( peerIP != \"\" ) { Node node = Node . instanceOf ( peerIP ); if ( ! ( CommonParameter . PARAMETER . nodeDiscoveryBindIp . equals ( node . getHost ()) || CommonParameter . PARAMETER . nodeExternalIp . equals ( node . getHost ()) || Constant . LOCAL_HOST . equals ( node . getHost ())) || CommonParameter . PARAMETER . nodeListenPort != node . getPort ()) { InetAddress address = new InetSocketAddress ( node . getHost (), node . getPort ()). getAddress (); channelManager . getTrustNodes (). put ( address , node ); return true ; } } } catch ( Exception e ) { logger . error ( \"addPeer error - {}\" , e . getMessage ()); } return false ; } } \u5b8c\u6210SetPeerServlet\u7684\u5b9e\u73b0\uff0c\u8fd8\u9700\u8981\u5c06\u5176\u6ce8\u518c\u5230\u8282\u70b9HTTP API\u670d\u52a1\u5217\u8868\u4e2d\uff0c FullNodeHttpApiService \u662f\u8282\u70b9HTTP API\u670d\u52a1\u7684\u6ce8\u518c\u5165\u53e3\u3002 \u5728 FullNodeHttpApiService \u7c7b\u7684 start \u51fd\u6570\u4e2d\u8c03\u7528 context.addServlet \u65b9\u6cd5\u5c06SetPeerServlet\u6ce8\u518c\u5230\u670d\u52a1\u5217\u8868\u4e2d\uff0cHTTP \u63a5\u53e3\u7684\u540d\u5b57\u5b9a\u4e49\u4e3a /wallet/setpeer \u3002 public class FullNodeHttpApiService implements Service { ...... @Autowired private SetPeerServlet setPeerServlet ; ....... @Override public void start () { ...... context . addServlet ( new ServletHolder ( setPeerServlet ), \"/wallet/setpeer\" ); ....... } } \u7136\u540e\u53ef\u4ee5\u5bf9\u4ee5\u4e0a\u4ee3\u7801\u8fdb\u884c\u8c03\u8bd5\uff0c\u5728IDEA\u4e2d\u542f\u52a8Java-tron\u8282\u70b9\uff0c\u5728\u7ec8\u7aef\u4e2d\u901a\u8fc7Curl\u547d\u4ee4\u8bbf\u95ee\u8282\u70b9\uff1a $ curl --location --request POST 'http://127.0.0.1:16667/wallet/setpeer' \\ --header 'Content-Type: application/json' \\ --data-raw '{ \"peer\":\"192.163.3.2:16667\" }' \u8fd4\u56de\u7ed3\u679c\uff1a Success to set trusted peer:192.163.3.2:16667 \u81f3\u6b64\uff0c\u8be5\u529f\u80fd\u7684\u4ee3\u7801\u7f16\u5199\u5b8c\u6210\uff0c\u7136\u540e\u9700\u8981\u9488\u5bf9\u6539\u52a8\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\u3002\u5bf9\u4e8e\u7b80\u5355\u7684\u6539\u52a8\uff0c\u53ef\u4ee5\u5728\u5f00\u53d1\u4ee3\u7801\u5b8c\u6210\u4e4b\u540e\uff0c\u518d\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\uff0c\u4f46\u5bf9\u4e8e\u8f83\u5927\u7684\u6539\u52a8\uff0c\u5efa\u8bae\u5728\u5f00\u53d1\u7684\u540c\u65f6\u7f16\u5199\u5355\u5143\u6d4b\u8bd5\u3002","title":"\u4ee3\u7801\u5b9e\u73b0"},{"location":"developers/demo/#_5","text":"Java-tron\u9879\u76ee\u7684\u5355\u5143\u6d4b\u8bd5\u57fa\u4e8eJUnit\u6846\u67b6\uff0c\u5173\u4e8eJUnit\u7684\u7528\u6cd5\u8bf7\u53c2\u8003 JUnit\u5b98\u7f51 \u3002\u4e0b\u9762\u7b80\u5355\u4ecb\u7ecdJava-tron\u5355\u5143\u6d4b\u8bd5\u7528\u4f8b\u89c4\u8303\u548c\u5e38\u7528\u6ce8\u89e3\u8bf4\u660e\u3002","title":"\u7f16\u5199\u5355\u5143\u6d4b\u8bd5"},{"location":"developers/demo/#java-tron","text":"\u7f16\u5199Java-tron\u5355\u5143\u6d4b\u8bd5\u65f6\uff0c\u8bf7\u9075\u5b88\u5982\u4e0b\u89c4\u8303\uff1a \u6240\u6709\u6d4b\u8bd5\u7c7b\u5e94\u653e\u5728test\u76ee\u5f55\u4e0b\uff0c\u5e76\u4e14\u6d4b\u8bd5\u7c7b\u7684\u5305\u5e94\u8be5\u548c\u88ab\u6d4b\u8bd5\u4ee3\u7801\u5305\u7ed3\u6784\u4fdd\u6301\u4e00\u81f4\u3002\u4e00\u822c\u4f7f\u7528 Test \u4f5c\u4e3a\u7c7b\u540d\u7684\u540e\u7f00 \u6d4b\u8bd5\u65b9\u6cd5\u5fc5\u987b\u4f7f\u7528 @Test \u4fee\u9970\uff0c\u5e76\u4e14\u662fpublic void\u7c7b\u578b\uff0c\u4e00\u822c\u7528 test \u4f5c\u4e3a\u65b9\u6cd5\u540d\u7684\u524d\u7f00 \u6d4b\u8bd5\u7c7b\u4e2d\u7684\u6bcf\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u5fc5\u987b\u53ef\u4ee5\u72ec\u7acb\u6d4b\u8bd5\uff0c\u65b9\u6cd5\u95f4\u4e0d\u80fd\u6709\u4efb\u4f55\u4f9d\u8d56","title":"Java-tron\u5355\u5143\u6d4b\u8bd5\u7528\u4f8b\u89c4\u8303"},{"location":"developers/demo/#_6","text":"\u4e0b\u9762\u4e3a\u4e00\u4e9b\u5e38\u7528\u7684\u6ce8\u89e3\u7684\u8bf4\u660e\uff0c\u5176\u5b83\u6ce8\u89e3\u8bf7\u53c2\u8003 JUnit\u5b98\u7f51\u6587\u6863 \u3002 @Test - \u5c06\u4e00\u4e2a\u666e\u901a\u65b9\u6cd5\u4fee\u9970\u6210\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5 @Ignore - \u6240\u4fee\u9970\u7684\u6d4b\u8bd5\u65b9\u6cd5\u4f1a\u88ab\u6d4b\u8bd5\u8fd0\u884c\u5668\u5ffd\u7565 @BeforeClass - \u4f1a\u5728\u6240\u6709\u7684\u65b9\u6cd5\u6267\u884c\u524d\u88ab\u6267\u884c\uff0cstatic\u65b9\u6cd5 \uff08\u5168\u5c40\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\uff0c\u800c\u4e14\u662f\u7b2c\u4e00\u4e2a\u8fd0\u884c\uff09 @AfterClass - \u4f1a\u5728\u6240\u6709\u7684\u65b9\u6cd5\u6267\u884c\u4e4b\u540e\u8fdb\u884c\u6267\u884c\uff0cstatic\u65b9\u6cd5 \uff08\u5168\u5c40\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\uff0c\u800c\u4e14\u662f\u6700\u540e\u4e00\u4e2a\u8fd0\u884c\uff09 @Before - \u4f1a\u5728\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u88ab\u8fd0\u884c\u524d\u6267\u884c\u4e00\u6b21 @After - \u4f1a\u5728\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u8fd0\u884c\u540e\u88ab\u6267\u884c\u4e00\u6b21","title":"\u5e38\u7528\u6ce8\u89e3\u8bf4\u660e"},{"location":"developers/demo/#_7","text":"\u4e00\u4e2a\u5355\u5143\u6d4b\u8bd5\u7c7b\u5e94\u5305\u542b\u4e00\u4e0b\u4e09\u90e8\u5206\u5185\u5bb9\uff1a @Before\u6216\u8005@BeforeClass\u4fee\u9970\u7684\u51fd\u6570\uff0c\u7528\u4e8e\u8fdb\u884c\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u524d\u7684\u521d\u59cb\u5316\u5de5\u4f5c @After\u6216\u8005@BeforeClass\u4fee\u9970\u7684\u51fd\u6570\uff0c\u7528\u4e8e\u5904\u7406\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u5b8c\u6210\u540e\u7684\u6570\u636e\u6e05\u7406\u5de5\u4f5c @Test\u4fee\u9970\u7684\u6d4b\u8bd5\u65b9\u6cd5 public class demoTest { @Before public void init () { // Initialization work before test case execution } @After public void destroy () { // Destroy work after test case execution } @Test public void testDemoMethod () { } } \u5bf9\u4e8e\u672c\u6587\u793a\u4f8b\uff0c\u5e94\u5728 framework/src/test/java/org/tron/core/services/http/ \u76ee\u5f55\u4e0b\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\uff1aSetPeerServletTest.java \u6765\u7f16\u5199\u6d4b\u8bd5\u7528\u4f8b\u3002 public class SetPeerServletTest { private static TronApplicationContext context ; private static Application appT ; public static ChannelManager channelManager ; @Before public void init () { Args . setParam ( new String [] {}, Constant . TEST_CONF ); context = new TronApplicationContext ( DefaultConfig . class ); channelManager = context . getBean ( ChannelManager . class ); appT = ApplicationFactory . create ( context ); appT . initServices ( Args . getInstance ()); appT . startServices (); appT . startup (); } @After public void destroy () { Args . clearParam (); appT . shutdownServices (); appT . shutdown (); } @Test public void testAddPeer () { SetPeerServlet setPeerServlet = new SetPeerServlet (); Assert . assertFalse ( setPeerServlet . addPeer ( \"127.0.0.1\" )); } }","title":"\u5355\u5143\u6d4b\u8bd5\u7c7b\u7684\u7ec4\u6210"},{"location":"developers/demo/#checkstyle","text":"\u9010\u4e2a\u68c0\u67e5\u4fee\u6539\u7684\u6587\u4ef6\uff0c\u5728\u53f3\u952e\u83dc\u5355\u4e2d\u9009\u62e9 Check Current File \uff0c\u5982\u679c\u68c0\u67e5\u51fa\u4ee3\u7801\u98ce\u683c\u95ee\u9898\uff0c\u8bf7\u6839\u636e\u63d0\u793a\u9010\u4e2a\u4fee\u6539\u3002 \u5bf9\u56fe\u4e2d\u4ee3\u7801\u98ce\u683c\u8b66\u544a\uff0c\u8fdb\u884c\u4fee\u590d\uff0c\u7136\u540e\uff0c\u518d\u4e00\u6b21\u68c0\u67e5\u8be5\u6587\u4ef6\uff0c\uff0c\u76f4\u81f3\u6ca1\u6709warning\u3002","title":"CheckStyle\u4ee3\u7801\u98ce\u683c\u68c0\u67e5"},{"location":"developers/demo/#_8","text":"\u4ee3\u7801\u5b8c\u6210\u4e4b\u540e\u63d0\u4ea4commit\uff0c\u8bf7\u53c2\u8003 commit\u89c4\u8303 \u3002 git add . git commit -m 'add a new http api setpeer' \u63d0\u4ea4\u65b0\u7684\u5206\u652f\u5230\u4e2a\u4eba\u8fdc\u7aef\u4ed3\u5e93\uff1a git push origin feature/add-new-http-demo","title":"\u63d0\u4ea4\u4ee3\u7801"},{"location":"developers/demo/#pull-request","text":"\u5728Github\u4ece\u4f60\u81ea\u5df1\u7684\u4ed3\u5e93\u5411 tronprotocol/java-tron \u63d0\u4ea4\u4e00\u4e2a\u63a8\u9001\u4ee3\u7801\u8bf7\u6c42 Pull Request\u3002","title":"\u63d0\u4ea4Pull Request"},{"location":"developers/deployment/","text":"\u90e8\u7f72\u6587\u6863 \u00b6 \u524d\u63d0 \u00b6 \u5206\u522b\u4e3afullnode\u548csoliditynode\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55 NOTE: \u539f\u5219\u4e0a\u4e0d\u9f13\u52b1\u7ee7\u7eed\u4f7f\u7528 SolidityNode, \u76ee\u524d FullNode \u53ef\u4ee5\u66ff\u4ee3 SolidityNode \u7684\u529f\u80fd. /deploy/fullnode /deploy/soliditynode \u514b\u9686\u6700\u65b0\u7684master\u5206\u652f\u4e0a\u7684\u4ee3\u7801 https://github.com/tronprotocol/java-tron \u5230 /deploy/java-tron \u8bf7\u786e\u4fdd\u5df2\u7ecf\u5b89\u88c5\u6070\u5f53\u7684\u4f9d\u8d56\u73af\u5883\u3002 JDK 1.8 (JDK 1.9+ is not supported yet) On Linux Ubuntu system (e.g. Ubuntu 16.04.4 LTS), ensure that the machine has Oracle JDK 8 , instead of having Open JDK 8 in the system. If you are building the source code by using Open JDK 8 , you will get Build Failed result. Open UDP ports for connection to the network MINIMUM 2 CPU Cores \u90e8\u7f72\u6307\u5357 \u00b6 \u7f16\u8bd1java-tron\u9879\u76ee cd /deploy/java-tron ./gradlew build \u590d\u5236FullNode.jar\u548cSolidityNode.jar\u4ee5\u53ca\u76f8\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\u5230\u5404\u81ea\u7684\u76ee\u5f55 download your needed configuration file from https://github.com/tronprotocol/TronDeployment. main_net_config.conf is the configuration for MainNet, and test_net_config.conf is the configuration for TestNet. please rename the configuration file to ` config.conf ` and use this config.conf to start FullNode and SoliditNode. cp build/libs/FullNode.jar ../fullnode cp build/libs/SolidityNode.jar ../soliditynode \u7528\u4ee5\u4e0b\u547d\u4ee4\u8fd0\u884cFullNode java -jar FullNode.jar -c config.conf // make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment \u914d\u7f6eSolidityNode\u914d\u7f6e\u6587\u4ef6 \u9700\u8981\u7f16\u8f91 config.conf \u6587\u4ef6\u6765\u8fde\u63a5\u672c\u5730\u7684FullNode\u3002\u4fee\u6539 node \u91cc\u7684 trustNode \u4e3a 127.0.0.1:50051 \uff0c\u8fd9\u662f\u9ed8\u8ba4rpc\u7aef\u53e3\u3002\u8bbe\u7f6e listen.port \u4e3a1024-65535\u95f4\u4efb\u610f\u6570\u5b57\u3002\u4e0d\u8981\u4f7f\u75280-1024\u95f4\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u53ef\u80fd\u4f1a\u5bfc\u81f4\u4e0e\u7cfb\u7edf\u670d\u52a1\u51b2\u7a81\u3002\u540c\u6837\uff0c\u4e3a\u4e86\u907f\u514d\u51b2\u7a81\uff0c\u53ef\u4ee5\u628a rpc port \u6539\u4e3a 50052 \u3002 \u8bf7\u4e3aFullNode\u8f6c\u53d1UDP\u7aef\u53e318888 rpc { port = 50052 } \u7528\u4ee5\u4e0b\u547d\u4ee4\u8fd0\u884cSolidityNode java -jar SolidityNode.jar -c config.conf //make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment \u5728\u516c\u94fe\u73af\u5883\u4e2d\u8fd0\u884c\u8d85\u7ea7\u8282\u70b9 java -jar FullNode.jar -p your private key --witness -c your config.conf ( Example\uff1a/data/java-tron/config.conf ) Example: java -jar FullNode.jar -p 650950B193DDDDB35B6E48912DD28F7AB0E7140C1BFDEFD493348F02295BD812 --witness -c /data/java-tron/config.conf \u8fd9\u4e0e\u8fd0\u884c\u4e00\u4e2a\u4e2a\u4eba\u6d4b\u8bd5\u7f51\u76f8\u4f3c\uff0c\u9664\u4e86 config.conf \u4e2d\u7684IP\u4e0d\u4e00\u6837\u3002 \u5728\u4e2a\u4eba\u6d4b\u8bd5\u7f51\u73af\u5883\u4e2d\u8fd0\u884c\u8d85\u7ea7\u8282\u70b9 \u4f60\u9700\u8981\u4fee\u6539\u4e00\u4e0bconfig.conf\u914d\u7f6e\u6587\u4ef6\u5185\u5bb9\uff1a Replace existing entry in genesis.block.witnesses with your address Replace existing entry in seed.node ip.list with your ip list The first Super Node start, needSyncCheck should be set false Set p2p version to 61 cd build/libs java -jar FullNode.jar -p your private key --witness -c your config.conf ( Example\uff1a/data/java-tron/config.conf ) Example: java -jar FullNode.jar -p 650950B193DDDDB35B6E48912DD28F7AB0E7140C1BFDEFD493348F02295BD812 --witness -c /data/java-tron/config.conf \u65e5\u5fd7\u4e0e\u7f51\u7edc\u8fde\u63a5\u9a8c\u8bc1 \u00b6 \u65e5\u5fd7\u4f4d\u4e8e /deploy/\\*/logs/tron.log \u3002 \u4f7f\u7528 tail -f /logs/tron.log/ \u547d\u4ee4\u6765\u67e5\u770b\u5757\u540c\u6b65\u65e5\u5fd7\u3002 \u4f60\u53ef\u4ee5\u770b\u5230\u7c7b\u4f3c\u5982\u4e0b\u5757\u540c\u6b65\u7684\u65e5\u5fd7\u4fe1\u606f\uff1a FullNode \u00b6 12:00:57.658 INFO [pool-7-thread-1] [o.t.c.n.n.NodeImpl](NodeImpl.java:830) Success handle block Num:236610,ID:0000000000039c427569efa27cc2493c1fff243cc1515aa6665c617c45d2e1bf SolidityNode \u00b6 12:00:40.691 INFO [pool-17-thread-1] [o.t.p.SolidityNode](SolidityNode.java:88) sync solidity block, lastSolidityBlockNum:209671, remoteLastSolidityBlockNum:211823 \u4f18\u96c5\u7684\u505c\u6b62\u8282\u70b9 \u00b6 \u521b\u5efastop.sh\u6587\u4ef6\uff0c\u4f7f\u7528\u547d\u4ee4 kill -15 \u5173\u95edFullNode.jar\uff08\u6216\u8005SolidityNode.jar\uff09\u3002 \u4fee\u6539pid= ps -ef |grep FullNode.jar |grep -v grep |awk '{print $2}' \u6765\u627e\u5230\u6b63\u786e\u7684pid\u3002 #!/bin/bash while true ; do pid = ` ps -ef | grep FullNode.jar | grep -v grep | awk '{print $2}' ` if [ -n \" $pid \" ] ; then kill -15 $pid echo \"The java-tron process is exiting, it may take some time, forcing the exit may cause damage to the database, please wait patiently...\" sleep 1 else echo \"java-tron killed successfully!\" break fi done \u5feb\u901f\u90e8\u7f72\u8282\u70b9 \u00b6 \u4e0b\u8f7d\u5feb\u901f\u90e8\u7f72\u811a\u672c\uff0c\u6839\u636e\u90e8\u7f72\u8282\u70b9\u7c7b\u578b\uff0c\u6267\u884c\u811a\u672c\u3002 \u4f7f\u7528\u8303\u56f4 \u00b6 \u811a\u672c\u53ef\u4ee5\u518dLinux/MacOS\u4e0a\u4f7f\u7528\uff0c\u4e0d\u652f\u6301Windows\u7cfb\u7edf\u3002 \u53ea\u652f\u6301FullNode\u4e0eSolidityNode\u7684\u90e8\u7f72\u3002 \u4e0b\u8f7d\u8fd0\u884c\u811a\u672c \u00b6 wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh \u53c2\u6570\u542b\u4e49 \u00b6 bash deploy_tron.sh --app [ FullNode | SolidityNode ] --net [ mainnet | testnet | privatenet ] --db [ keep | remove | backup ] --heap-size --app Optional, Running application. The default node is Fullnode and it could be FullNode or SolidityNode. --net Optional, Connecting network. The default network is mainnet and it could be mainnet, testnet. --db Optional, The way of data processing could be keep, remove and backup. Default is keep. If you launch two different networks, like from mainnet to testnet or from testnet to mainnet, you need to delete database. --trust-node Optional, It only works when deploying SolidityNode. Default is 127 .0.0.1:50051. The specified gRPC service of Fullnode, like 127 .0.0.1:50051 or 13 .125.249.129:50051. --rpc-port Optional, Port of grpc. Default is 50051 . If you deploy SolidityNode and FullNode on the same host\uff0cyou need to configure different ports. --commit Optional, commitid of project. --branch Optional, branch of project. Mainnet default is latest release and Testnet default is master. --heap-size Optional, jvm option: Xmx. The default heap-size is 0 .8 * memory size. --work_space Optional, default is current directory. \u90e8\u7f72FullNode \u00b6 wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh bash deploy_tron.sh \u90e8\u7f72SolidityNode \u00b6 wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh # User can self-configure the IP and Port of GRPC service in the turst-node field of SolidityNode. trust-node is the fullnode you just deploy. bash deploy_tron.sh --app SolidityNode --trust-node FullNode\u548cSolidityNode\u90e8\u7f72\u5728\u540c\u4e00\u4e3b\u673a\u4e0a \u00b6 # You need to configure different gRPC ports on the same host because gRPC port is available on SolidityNode and FullNodeConfigure and it cannot be set as default value 50051. In this case the default value of rpc port is set as 50041. wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh bash deploy_tron.sh --app FullNode bash deploy_tron.sh --app SolidityNode --rpc-port 50041 Grpc Gateway\u90e8\u7f72 \u00b6 \u524d\u63d0 \u00b6 \u8bf7\u53c2\u7167\uff1a https://github.com/tronprotocol/grpc-gateway \u5b89\u88c5Golang, Protoc, \u5e76\u4e14\u8bbe\u7f6e$GOPATH\u73af\u5883\u53d8\u91cf\u3002 \u4e0b\u8f7d\u8fd0\u884c\u811a\u672c \u00b6 wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_grpc_gateway.sh -O deploy_grpc_gateway.sh \u53c2\u6570\u542b\u4e49 \u00b6 bash deploy_grpc_gateway.sh --rpchost [ rpc host ip ] --rpcport [ rpc port number ] --httpport [ http port number ] --rpchost The fullnode or soliditynode IP where the grpc service is provided. Default value is \"localhost\" . --rpcport The fullnode or soliditynode port number grpc service is consuming. Default value is 50051 . --httpport The port intends to provide http service provided by grpc gateway. Default value is 18890 . \u793a\u4f8b \u00b6 \u4f7f\u7528\u9ed8\u8ba4\u914d\u7f6e\uff1a bash deploy_grpc_gateway.sh \u4f7f\u7528\u81ea\u5b9a\u4e49\u914d\u7f6e\uff1a bash deploy_grpc_gateway.sh --rpchost 127 .0.0.1 --rpcport 50052 --httpport 18891 \u4e8b\u4ef6\u8ba2\u9605\u90e8\u7f72 \u00b6 api \u6a21\u5757\u5b9a\u4e49\u4e86\u4ecb\u4e8ejava-tron\u4e0e\u63d2\u4ef6\u95f4\u7684\u4e8b\u4ef6\u8ba2\u9605\u63a5\u53e3\u3002 app \u6a21\u5757\u662f\u52a0\u8f7d\u63d2\u4ef6\u793a\u4f8b\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u7528\u6765\u8c03\u8bd5\u3002 kafkaplugin \u6a21\u5757\u662fkafka\u7684\u5b9e\u73b0\u3002\u5b83\u5b9e\u73b0\u4e86IPluginEventListener\uff0c\u5b83\u4ecejava-tron\u63a5\u53d7\u4e8b\u4ef6\u5e76\u8f6c\u7ed9kafka\u670d\u52a1\u3002 mongodbplugin \u6a21\u5757\u662fmongodb\u7684\u5b9e\u73b0\u3002 \u642d\u5efa\u8fd0\u884c\u73af\u5883 \u00b6 Clone the repo git clone https://github.com/tronprotocol/event-plugin.git Go to eventplugin cd event-plugin run ./gradlew build \u8fd9\u4e00\u6b65\u4f1a\u751f\u6210 plugin-kafka-1.0.0.zip \uff0c\u4f4d\u4e8e event-plugin/build/plugins/ \u76ee\u5f55\u4e0b\u3002 \u7f16\u8f91java-tron\u7684 config.conf \u6587\u4ef6\uff0c\u589e\u52a0\u4ee5\u4e0b\u5b57\u6bb5 \u00b6 event.subscribe = { path = \"\" // absolute path of plugin server = \"\" // target server address to receive event triggers dbconfig=\"\" // dbname|username|password topics = [ { triggerName = \"block\" // block trigger, the value can't be modified enable = false topic = \"block\" // plugin topic, the value could be modified }, { triggerName = \"transaction\" enable = false topic = \"transaction\" }, { triggerName = \"contractevent\" enable = true topic = \"contractevent\" }, { triggerName = \"contractlog\" enable = true topic = \"contractlog\" } ] filter = { fromblock = \"\" // the value could be \"\", \"earliest\" or a specified block number as the beginning of the queried range toblock = \"\" // the value could be \"\", \"latest\" or a specified block number as end of the queried range contractAddress = [ \"\" // contract address you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract address. ] contractTopic = [ \"\" // contract topic you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract topic. ] } } path *: \"plugin-kafka-1.0.0.zip\"\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84 server : Kafka\u670d\u52a1\u5730\u5740 topics : \u6bcf\u4e00\u79cd\u4e8b\u4ef6\u5339\u914d\u4e00\u4e2aKafka\u4e3b\u9898\uff0c\u6211\u4eec\u652f\u6301\u56db\u79cd\u4e8b\u4ef6\u8ba2\u9605\uff1a\u533a\u5757\u4e8b\u4ef6\uff0c\u4ea4\u6613\u4e8b\u4ef6\uff0c\u5408\u7ea6\u4e8b\u4ef6\u4ee5\u53ca\u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6 dbconfig *: mongodb\u7684\u914d\u7f6e\uff0cdbname|username|password\u3002\u5982\u679c\u4f7f\u7528kafka\uff0c\u53ef\u4ee5\u5ffd\u7565\u8fd9\u4e2a\u53c2\u6570\u3002 triggerName : \u89e6\u53d1\u7c7b\u578b\uff0c\u53ea\u8bfb\u3002 enable : \u662f\u5426\u5f00\u542f\u4e8b\u4ef6\u8ba2\u9605\u3002 topic *: kafka\u63a5\u6536\u4e8b\u4ef6\u7684\u4e3b\u9898\u3002\u8bf7\u786e\u4fddKafka\u5728\u8fd0\u884c\u4e2d\u3002 filter : \u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4\u9009\u9879\u3002 \u6ce8\u610f *: \u5982\u679c\u670d\u52a1\u5668\u5730\u5740\u4e0d\u662f127.0.0.1, \u8bf7\u5728config/server.properties\u6587\u4ef6\u4e2d\u8bbe\u7f6elisteners=PLAINTEXT://:9092\uff0cadvertised.listeners to PLAINTEXT://host_ip:9092 \u5b89\u88c5Kafka \u00b6 Mac\u73af\u5883 : brew install kafka Linux\u73af\u5883 : cd /usr/local wget http://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.10-0.10.2.2.tgz tar -xzvf kafka_2.10-0.10.2.2.tgz mv kafka_2.10-0.10.2.2 kafka add \"export PATH= $PATH :/usr/local/kafka/bin\" to end of /etc/profile source /etc/profile kafka-server-start.sh /usr/local/kafka/config/server.properties & \u6ce8\u610f : \u8bf7\u786e\u4fddKafka\u7684\u7248\u672c\u4e0ebuild.gradle\u4e2deventplugin\u9879\u76ee\u7684\u7248\u672c\u4e00\u81f4\u3002 \u8fd0\u884cKafka \u00b6 Mac\u73af\u5883 : zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties Linux\u73af\u5883 : zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties & Sleep about 3 seconds kafka-server-start.sh /usr/local/kafka/config/server.properties & \u521b\u5efa\u4e3b\u9898\u63a5\u53d7\u4e8b\u4ef6\uff0c\u4e3b\u9898\u7684\u5b9a\u4e49\u4f4d\u4e8econfig.conf\u6587\u4ef6\u4e2d \u00b6 Mac\u73af\u5883 : kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent Linux\u73af\u5883 : kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent Kafka\u7528\u6237 \u00b6 Mac\u73af\u5883 : kafka-console-consumer --bootstrap-server localhost:9092 --topic block kafka-console-consumer --bootstrap-server localhost:9092 --topic transaction kafka-console-consumer --bootstrap-server localhost:9092 --topic contractlog kafka-console-consumer --bootstrap-server localhost:9092 --topic contractevent Linux\u73af\u5883 : kafka-console-consumer.sh --zookeeper localhost:2181 --topic block kafka-console-consumer.sh --zookeeper localhost:2181 --topic transaction kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractlog kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractevent \u5728Java-tron\u4e2d\u52a0\u8f7d\u63d2\u4ef6 \u00b6 add --es to command line, for example: java -jar FullNode.jar -p privatekey -c config.conf --es \u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4 \u00b6 \u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4\u53c2\u6570\u5728config.conf\u6587\u4ef6\u4e2d\u8bbe\u7f6e\uff1a filter = { fromblock = \"\" // the value could be \"\", \"earliest\" or a specified block number as the beginning of the queried range toblock = \"\" // the value could be \"\", \"latest\" or a specified block number as end of the queried range contractAddress = [ \"TVkNuE1BYxECWq85d8UR9zsv6WppBns9iH\" // contract address you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract address. ] contractTopic = [ \"f0f1e23ddce8a520eaa7502e02fa767cb24152e9a86a4bf02529637c4e57504b\" // contract topic you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract topic. ] } \u4e0b\u8f7d\u5e76\u5b89\u88c5MongoDB \u00b6 \u5efa\u8bae\u914d\u7f6e \u00b6 CPU/ RAM: 16Core / 32G DISK: 500G System: CentOS 64 MongoDB\u7684\u7248\u672c\u662f 4.0.4 \uff0c\u4ee5\u4e0b\u662f\u5b89\u88c5\u547d\u4ee4: cd /home/java-tron curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz tar zxvf mongodb-linux-x86_64-4.0.4.tgz mv mongodb-linux-x86_64-4.0.4 mongodb \u8bbe\u8ba1\u73af\u5883\u53d8\u91cf \u00b6 export MONGOPATH=/home/java-tron/mongodb/ export PATH= PATH: PATH: MONGOPATH/bin \u521b\u5efa\u914d\u7f6e\u6587\u4ef6 \u00b6 The path is : /etc/mongodb/mgdb.conf cd /etc/mongodb touch mgdb.conf \u521b\u5efa\u6570\u636e\u548c\u65e5\u5fd7\u6587\u4ef6\u5939\uff0c\u5e76\u628a\u5b83\u4eec\u7684\u7edd\u5bf9\u8def\u5f84\u52a0\u5165mgdb.conf \u793a\u4f8b \u00b6 dbpath=/home/java-tron/mongodb/data logpath=/home/java-tron/mongodb/log/mongodb.log port=27017 logappend=true fork=true bind_ip=0.0.0.0 auth=true wiredTigerCacheSizeGB=2 \u6ce8\u610f \u00b6 bind_ip must be configured to 0.0.0.0\uff0cotherwise remote connection will be refused. wiredTigerCacheSizeGB, must be configured to prevent OOM \u8fd0\u884cMongoDB \u00b6 mongod --config /etc/mongodb/mgdb.conf \u521b\u5efa\u7ba1\u7406\u5458\u8d26\u6237 \u00b6 - mongo - use admin - db.createUser ({ user: \"root\" ,pwd: \"admin\" ,roles: [{ role: \"root\" ,db: \"admin\" }]}) \u521b\u5efa\u4e8b\u4ef6\u65e5\u5fd7\u4ee5\u53ca\u6240\u6709\u8005\u8d26\u6237 \u00b6 db.auth(\"root\", \"admin\") use eventlog db.createUser({user:\"tron\",pwd:\"123456\",roles:[{role:\"dbOwner\",db:\"eventlog\"}]}) database: eventlog, username:tron, password: 123456 \u9632\u706b\u5899\u7b56\u7565 \u00b6 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT \u8fdc\u7a0b\u8fde\u63a5mongo \u00b6 mongo 47.90.245.68:27017 use eventlog db.auth(\"tron\", \"123456\") show collections db.block.find() \u67e5\u8be2\u533a\u5757\u4e8b\u4ef6\u89e6\u53d1\u6570\u636e \u00b6 db.block.find({blockNumber: {$lt: 1000}}); // \u8fd4\u56de\u533a\u5757\u9ad8\u5ea6\u5c0f\u4e8e1000\u7684\u6570\u636e \u8bbe\u7f6e\u6570\u636e\u5e93\u7d22\u5f15 \u00b6 cd / { projectPath } sh insertIndex.sh \u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u90e8\u7f72 \u00b6 \u4e0b\u8f7d\u4ee3\u7801 \u00b6 git clone https://github.com/tronprotocol/tron-eventquery.git cd troneventquery \u7f16\u8bd1 \u00b6 mvn package \u4ee3\u7801\u7f16\u8bd1\u6210\u529f\u540e\uff0c\u5728/troneventquery\u76ee\u5f55\u4e0b\u4f1a\u751f\u6210troneventquery.jar\u6587\u4ef6\u3002 \u9700\u8981\u521b\u5efa\u4e00\u4e2aconfig.conf\u914d\u7f6e\u6587\u4ef6\u7528\u6765\u8bbe\u7f6emongodb\u7684\u914d\u7f6e\u5c5e\u6027\uff0c\u6211\u4eec\u5728/troneventquery/config.conf\u4e2d\u63d0\u4f9b\u4e86\u4e2a\u793a\u4f8b\uff0c\u5982\u679c\u6709\u9700\u8981\u53ef\u4ee5\u8fdb\u884c\u4fee\u6539\u3002 \u6ce8\u610f\uff1a config.conf\u6587\u4ef6\u5e94\u8be5\u4f4d\u4e8e/troneventquery\u6587\u4ef6\u5939\u4e0b\u3002 mongo.host=IP mongo.port=27017 mongo.dbname=eventlog mongo.username=tron mongo.password=123456 mongo.connectionsPerHost=8 mongo.threadsAllowedToBlockForConnectionMultiplier=4 mongo.dbname \u7684\u503c\u662f\u6307\u5b9a\u7684\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u5e93\u7684\u540d\u79f0\uff0c\u4e0d\u53ef\u4ee5\u4fee\u6539\u3002 \u8fd0\u884c \u00b6 troneventquery/deploy.sh \u662f\u7528\u6765\u90e8\u7f72\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u7684\u3002 troneventquery/insertIndex.sh \u662f\u7528\u6765\u8bbe\u7f6emongodb\u7d22\u5f15\u6765\u52a0\u901f\u67e5\u8be2\u7684\u3002 \u9ad8\u7ea7\u914d\u7f6e \u00b6 Read the Advanced Configuration","title":"\u90e8\u7f72\u6587\u6863"},{"location":"developers/deployment/#_1","text":"","title":"\u90e8\u7f72\u6587\u6863"},{"location":"developers/deployment/#_2","text":"\u5206\u522b\u4e3afullnode\u548csoliditynode\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55 NOTE: \u539f\u5219\u4e0a\u4e0d\u9f13\u52b1\u7ee7\u7eed\u4f7f\u7528 SolidityNode, \u76ee\u524d FullNode \u53ef\u4ee5\u66ff\u4ee3 SolidityNode \u7684\u529f\u80fd. /deploy/fullnode /deploy/soliditynode \u514b\u9686\u6700\u65b0\u7684master\u5206\u652f\u4e0a\u7684\u4ee3\u7801 https://github.com/tronprotocol/java-tron \u5230 /deploy/java-tron \u8bf7\u786e\u4fdd\u5df2\u7ecf\u5b89\u88c5\u6070\u5f53\u7684\u4f9d\u8d56\u73af\u5883\u3002 JDK 1.8 (JDK 1.9+ is not supported yet) On Linux Ubuntu system (e.g. Ubuntu 16.04.4 LTS), ensure that the machine has Oracle JDK 8 , instead of having Open JDK 8 in the system. If you are building the source code by using Open JDK 8 , you will get Build Failed result. Open UDP ports for connection to the network MINIMUM 2 CPU Cores","title":"\u524d\u63d0"},{"location":"developers/deployment/#_3","text":"\u7f16\u8bd1java-tron\u9879\u76ee cd /deploy/java-tron ./gradlew build \u590d\u5236FullNode.jar\u548cSolidityNode.jar\u4ee5\u53ca\u76f8\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\u5230\u5404\u81ea\u7684\u76ee\u5f55 download your needed configuration file from https://github.com/tronprotocol/TronDeployment. main_net_config.conf is the configuration for MainNet, and test_net_config.conf is the configuration for TestNet. please rename the configuration file to ` config.conf ` and use this config.conf to start FullNode and SoliditNode. cp build/libs/FullNode.jar ../fullnode cp build/libs/SolidityNode.jar ../soliditynode \u7528\u4ee5\u4e0b\u547d\u4ee4\u8fd0\u884cFullNode java -jar FullNode.jar -c config.conf // make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment \u914d\u7f6eSolidityNode\u914d\u7f6e\u6587\u4ef6 \u9700\u8981\u7f16\u8f91 config.conf \u6587\u4ef6\u6765\u8fde\u63a5\u672c\u5730\u7684FullNode\u3002\u4fee\u6539 node \u91cc\u7684 trustNode \u4e3a 127.0.0.1:50051 \uff0c\u8fd9\u662f\u9ed8\u8ba4rpc\u7aef\u53e3\u3002\u8bbe\u7f6e listen.port \u4e3a1024-65535\u95f4\u4efb\u610f\u6570\u5b57\u3002\u4e0d\u8981\u4f7f\u75280-1024\u95f4\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u53ef\u80fd\u4f1a\u5bfc\u81f4\u4e0e\u7cfb\u7edf\u670d\u52a1\u51b2\u7a81\u3002\u540c\u6837\uff0c\u4e3a\u4e86\u907f\u514d\u51b2\u7a81\uff0c\u53ef\u4ee5\u628a rpc port \u6539\u4e3a 50052 \u3002 \u8bf7\u4e3aFullNode\u8f6c\u53d1UDP\u7aef\u53e318888 rpc { port = 50052 } \u7528\u4ee5\u4e0b\u547d\u4ee4\u8fd0\u884cSolidityNode java -jar SolidityNode.jar -c config.conf //make sure that your config.conf is downloaded from https://github.com/tronprotocol/TronDeployment \u5728\u516c\u94fe\u73af\u5883\u4e2d\u8fd0\u884c\u8d85\u7ea7\u8282\u70b9 java -jar FullNode.jar -p your private key --witness -c your config.conf ( Example\uff1a/data/java-tron/config.conf ) Example: java -jar FullNode.jar -p 650950B193DDDDB35B6E48912DD28F7AB0E7140C1BFDEFD493348F02295BD812 --witness -c /data/java-tron/config.conf \u8fd9\u4e0e\u8fd0\u884c\u4e00\u4e2a\u4e2a\u4eba\u6d4b\u8bd5\u7f51\u76f8\u4f3c\uff0c\u9664\u4e86 config.conf \u4e2d\u7684IP\u4e0d\u4e00\u6837\u3002 \u5728\u4e2a\u4eba\u6d4b\u8bd5\u7f51\u73af\u5883\u4e2d\u8fd0\u884c\u8d85\u7ea7\u8282\u70b9 \u4f60\u9700\u8981\u4fee\u6539\u4e00\u4e0bconfig.conf\u914d\u7f6e\u6587\u4ef6\u5185\u5bb9\uff1a Replace existing entry in genesis.block.witnesses with your address Replace existing entry in seed.node ip.list with your ip list The first Super Node start, needSyncCheck should be set false Set p2p version to 61 cd build/libs java -jar FullNode.jar -p your private key --witness -c your config.conf ( Example\uff1a/data/java-tron/config.conf ) Example: java -jar FullNode.jar -p 650950B193DDDDB35B6E48912DD28F7AB0E7140C1BFDEFD493348F02295BD812 --witness -c /data/java-tron/config.conf","title":"\u90e8\u7f72\u6307\u5357"},{"location":"developers/deployment/#_4","text":"\u65e5\u5fd7\u4f4d\u4e8e /deploy/\\*/logs/tron.log \u3002 \u4f7f\u7528 tail -f /logs/tron.log/ \u547d\u4ee4\u6765\u67e5\u770b\u5757\u540c\u6b65\u65e5\u5fd7\u3002 \u4f60\u53ef\u4ee5\u770b\u5230\u7c7b\u4f3c\u5982\u4e0b\u5757\u540c\u6b65\u7684\u65e5\u5fd7\u4fe1\u606f\uff1a","title":"\u65e5\u5fd7\u4e0e\u7f51\u7edc\u8fde\u63a5\u9a8c\u8bc1"},{"location":"developers/deployment/#fullnode","text":"12:00:57.658 INFO [pool-7-thread-1] [o.t.c.n.n.NodeImpl](NodeImpl.java:830) Success handle block Num:236610,ID:0000000000039c427569efa27cc2493c1fff243cc1515aa6665c617c45d2e1bf","title":"FullNode"},{"location":"developers/deployment/#soliditynode","text":"12:00:40.691 INFO [pool-17-thread-1] [o.t.p.SolidityNode](SolidityNode.java:88) sync solidity block, lastSolidityBlockNum:209671, remoteLastSolidityBlockNum:211823","title":"SolidityNode"},{"location":"developers/deployment/#_5","text":"\u521b\u5efastop.sh\u6587\u4ef6\uff0c\u4f7f\u7528\u547d\u4ee4 kill -15 \u5173\u95edFullNode.jar\uff08\u6216\u8005SolidityNode.jar\uff09\u3002 \u4fee\u6539pid= ps -ef |grep FullNode.jar |grep -v grep |awk '{print $2}' \u6765\u627e\u5230\u6b63\u786e\u7684pid\u3002 #!/bin/bash while true ; do pid = ` ps -ef | grep FullNode.jar | grep -v grep | awk '{print $2}' ` if [ -n \" $pid \" ] ; then kill -15 $pid echo \"The java-tron process is exiting, it may take some time, forcing the exit may cause damage to the database, please wait patiently...\" sleep 1 else echo \"java-tron killed successfully!\" break fi done","title":"\u4f18\u96c5\u7684\u505c\u6b62\u8282\u70b9"},{"location":"developers/deployment/#_6","text":"\u4e0b\u8f7d\u5feb\u901f\u90e8\u7f72\u811a\u672c\uff0c\u6839\u636e\u90e8\u7f72\u8282\u70b9\u7c7b\u578b\uff0c\u6267\u884c\u811a\u672c\u3002","title":"\u5feb\u901f\u90e8\u7f72\u8282\u70b9"},{"location":"developers/deployment/#_7","text":"\u811a\u672c\u53ef\u4ee5\u518dLinux/MacOS\u4e0a\u4f7f\u7528\uff0c\u4e0d\u652f\u6301Windows\u7cfb\u7edf\u3002 \u53ea\u652f\u6301FullNode\u4e0eSolidityNode\u7684\u90e8\u7f72\u3002","title":"\u4f7f\u7528\u8303\u56f4"},{"location":"developers/deployment/#_8","text":"wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh","title":"\u4e0b\u8f7d\u8fd0\u884c\u811a\u672c"},{"location":"developers/deployment/#_9","text":"bash deploy_tron.sh --app [ FullNode | SolidityNode ] --net [ mainnet | testnet | privatenet ] --db [ keep | remove | backup ] --heap-size --app Optional, Running application. The default node is Fullnode and it could be FullNode or SolidityNode. --net Optional, Connecting network. The default network is mainnet and it could be mainnet, testnet. --db Optional, The way of data processing could be keep, remove and backup. Default is keep. If you launch two different networks, like from mainnet to testnet or from testnet to mainnet, you need to delete database. --trust-node Optional, It only works when deploying SolidityNode. Default is 127 .0.0.1:50051. The specified gRPC service of Fullnode, like 127 .0.0.1:50051 or 13 .125.249.129:50051. --rpc-port Optional, Port of grpc. Default is 50051 . If you deploy SolidityNode and FullNode on the same host\uff0cyou need to configure different ports. --commit Optional, commitid of project. --branch Optional, branch of project. Mainnet default is latest release and Testnet default is master. --heap-size Optional, jvm option: Xmx. The default heap-size is 0 .8 * memory size. --work_space Optional, default is current directory.","title":"\u53c2\u6570\u542b\u4e49"},{"location":"developers/deployment/#fullnode_1","text":"wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh bash deploy_tron.sh","title":"\u90e8\u7f72FullNode"},{"location":"developers/deployment/#soliditynode_1","text":"wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh # User can self-configure the IP and Port of GRPC service in the turst-node field of SolidityNode. trust-node is the fullnode you just deploy. bash deploy_tron.sh --app SolidityNode --trust-node ","title":"\u90e8\u7f72SolidityNode"},{"location":"developers/deployment/#fullnodesoliditynode","text":"# You need to configure different gRPC ports on the same host because gRPC port is available on SolidityNode and FullNodeConfigure and it cannot be set as default value 50051. In this case the default value of rpc port is set as 50041. wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_tron.sh -O deploy_tron.sh bash deploy_tron.sh --app FullNode bash deploy_tron.sh --app SolidityNode --rpc-port 50041","title":"FullNode\u548cSolidityNode\u90e8\u7f72\u5728\u540c\u4e00\u4e3b\u673a\u4e0a"},{"location":"developers/deployment/#grpc-gateway","text":"","title":"Grpc Gateway\u90e8\u7f72"},{"location":"developers/deployment/#_10","text":"\u8bf7\u53c2\u7167\uff1a https://github.com/tronprotocol/grpc-gateway \u5b89\u88c5Golang, Protoc, \u5e76\u4e14\u8bbe\u7f6e$GOPATH\u73af\u5883\u53d8\u91cf\u3002","title":"\u524d\u63d0"},{"location":"developers/deployment/#_11","text":"wget https://raw.githubusercontent.com/tronprotocol/TronDeployment/master/deploy_grpc_gateway.sh -O deploy_grpc_gateway.sh","title":"\u4e0b\u8f7d\u8fd0\u884c\u811a\u672c"},{"location":"developers/deployment/#_12","text":"bash deploy_grpc_gateway.sh --rpchost [ rpc host ip ] --rpcport [ rpc port number ] --httpport [ http port number ] --rpchost The fullnode or soliditynode IP where the grpc service is provided. Default value is \"localhost\" . --rpcport The fullnode or soliditynode port number grpc service is consuming. Default value is 50051 . --httpport The port intends to provide http service provided by grpc gateway. Default value is 18890 .","title":"\u53c2\u6570\u542b\u4e49"},{"location":"developers/deployment/#_13","text":"\u4f7f\u7528\u9ed8\u8ba4\u914d\u7f6e\uff1a bash deploy_grpc_gateway.sh \u4f7f\u7528\u81ea\u5b9a\u4e49\u914d\u7f6e\uff1a bash deploy_grpc_gateway.sh --rpchost 127 .0.0.1 --rpcport 50052 --httpport 18891","title":"\u793a\u4f8b"},{"location":"developers/deployment/#_14","text":"api \u6a21\u5757\u5b9a\u4e49\u4e86\u4ecb\u4e8ejava-tron\u4e0e\u63d2\u4ef6\u95f4\u7684\u4e8b\u4ef6\u8ba2\u9605\u63a5\u53e3\u3002 app \u6a21\u5757\u662f\u52a0\u8f7d\u63d2\u4ef6\u793a\u4f8b\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u7528\u6765\u8c03\u8bd5\u3002 kafkaplugin \u6a21\u5757\u662fkafka\u7684\u5b9e\u73b0\u3002\u5b83\u5b9e\u73b0\u4e86IPluginEventListener\uff0c\u5b83\u4ecejava-tron\u63a5\u53d7\u4e8b\u4ef6\u5e76\u8f6c\u7ed9kafka\u670d\u52a1\u3002 mongodbplugin \u6a21\u5757\u662fmongodb\u7684\u5b9e\u73b0\u3002","title":"\u4e8b\u4ef6\u8ba2\u9605\u90e8\u7f72"},{"location":"developers/deployment/#_15","text":"Clone the repo git clone https://github.com/tronprotocol/event-plugin.git Go to eventplugin cd event-plugin run ./gradlew build \u8fd9\u4e00\u6b65\u4f1a\u751f\u6210 plugin-kafka-1.0.0.zip \uff0c\u4f4d\u4e8e event-plugin/build/plugins/ \u76ee\u5f55\u4e0b\u3002","title":"\u642d\u5efa\u8fd0\u884c\u73af\u5883"},{"location":"developers/deployment/#java-tron-configconf","text":"event.subscribe = { path = \"\" // absolute path of plugin server = \"\" // target server address to receive event triggers dbconfig=\"\" // dbname|username|password topics = [ { triggerName = \"block\" // block trigger, the value can't be modified enable = false topic = \"block\" // plugin topic, the value could be modified }, { triggerName = \"transaction\" enable = false topic = \"transaction\" }, { triggerName = \"contractevent\" enable = true topic = \"contractevent\" }, { triggerName = \"contractlog\" enable = true topic = \"contractlog\" } ] filter = { fromblock = \"\" // the value could be \"\", \"earliest\" or a specified block number as the beginning of the queried range toblock = \"\" // the value could be \"\", \"latest\" or a specified block number as end of the queried range contractAddress = [ \"\" // contract address you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract address. ] contractTopic = [ \"\" // contract topic you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract topic. ] } } path *: \"plugin-kafka-1.0.0.zip\"\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84 server : Kafka\u670d\u52a1\u5730\u5740 topics : \u6bcf\u4e00\u79cd\u4e8b\u4ef6\u5339\u914d\u4e00\u4e2aKafka\u4e3b\u9898\uff0c\u6211\u4eec\u652f\u6301\u56db\u79cd\u4e8b\u4ef6\u8ba2\u9605\uff1a\u533a\u5757\u4e8b\u4ef6\uff0c\u4ea4\u6613\u4e8b\u4ef6\uff0c\u5408\u7ea6\u4e8b\u4ef6\u4ee5\u53ca\u5408\u7ea6\u65e5\u5fd7\u4e8b\u4ef6 dbconfig *: mongodb\u7684\u914d\u7f6e\uff0cdbname|username|password\u3002\u5982\u679c\u4f7f\u7528kafka\uff0c\u53ef\u4ee5\u5ffd\u7565\u8fd9\u4e2a\u53c2\u6570\u3002 triggerName : \u89e6\u53d1\u7c7b\u578b\uff0c\u53ea\u8bfb\u3002 enable : \u662f\u5426\u5f00\u542f\u4e8b\u4ef6\u8ba2\u9605\u3002 topic *: kafka\u63a5\u6536\u4e8b\u4ef6\u7684\u4e3b\u9898\u3002\u8bf7\u786e\u4fddKafka\u5728\u8fd0\u884c\u4e2d\u3002 filter : \u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4\u9009\u9879\u3002 \u6ce8\u610f *: \u5982\u679c\u670d\u52a1\u5668\u5730\u5740\u4e0d\u662f127.0.0.1, \u8bf7\u5728config/server.properties\u6587\u4ef6\u4e2d\u8bbe\u7f6elisteners=PLAINTEXT://:9092\uff0cadvertised.listeners to PLAINTEXT://host_ip:9092","title":"\u7f16\u8f91java-tron\u7684 config.conf \u6587\u4ef6\uff0c\u589e\u52a0\u4ee5\u4e0b\u5b57\u6bb5"},{"location":"developers/deployment/#kafka","text":"Mac\u73af\u5883 : brew install kafka Linux\u73af\u5883 : cd /usr/local wget http://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.10-0.10.2.2.tgz tar -xzvf kafka_2.10-0.10.2.2.tgz mv kafka_2.10-0.10.2.2 kafka add \"export PATH= $PATH :/usr/local/kafka/bin\" to end of /etc/profile source /etc/profile kafka-server-start.sh /usr/local/kafka/config/server.properties & \u6ce8\u610f : \u8bf7\u786e\u4fddKafka\u7684\u7248\u672c\u4e0ebuild.gradle\u4e2deventplugin\u9879\u76ee\u7684\u7248\u672c\u4e00\u81f4\u3002","title":"\u5b89\u88c5Kafka"},{"location":"developers/deployment/#kafka_1","text":"Mac\u73af\u5883 : zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties Linux\u73af\u5883 : zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties & Sleep about 3 seconds kafka-server-start.sh /usr/local/kafka/config/server.properties &","title":"\u8fd0\u884cKafka"},{"location":"developers/deployment/#configconf","text":"Mac\u73af\u5883 : kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent Linux\u73af\u5883 : kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic block kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic transaction kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractlog kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic contractevent","title":"\u521b\u5efa\u4e3b\u9898\u63a5\u53d7\u4e8b\u4ef6\uff0c\u4e3b\u9898\u7684\u5b9a\u4e49\u4f4d\u4e8econfig.conf\u6587\u4ef6\u4e2d"},{"location":"developers/deployment/#kafka_2","text":"Mac\u73af\u5883 : kafka-console-consumer --bootstrap-server localhost:9092 --topic block kafka-console-consumer --bootstrap-server localhost:9092 --topic transaction kafka-console-consumer --bootstrap-server localhost:9092 --topic contractlog kafka-console-consumer --bootstrap-server localhost:9092 --topic contractevent Linux\u73af\u5883 : kafka-console-consumer.sh --zookeeper localhost:2181 --topic block kafka-console-consumer.sh --zookeeper localhost:2181 --topic transaction kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractlog kafka-console-consumer.sh --zookeeper localhost:2181 --topic contractevent","title":"Kafka\u7528\u6237"},{"location":"developers/deployment/#java-tron","text":"add --es to command line, for example: java -jar FullNode.jar -p privatekey -c config.conf --es","title":"\u5728Java-tron\u4e2d\u52a0\u8f7d\u63d2\u4ef6"},{"location":"developers/deployment/#_16","text":"\u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4\u53c2\u6570\u5728config.conf\u6587\u4ef6\u4e2d\u8bbe\u7f6e\uff1a filter = { fromblock = \"\" // the value could be \"\", \"earliest\" or a specified block number as the beginning of the queried range toblock = \"\" // the value could be \"\", \"latest\" or a specified block number as end of the queried range contractAddress = [ \"TVkNuE1BYxECWq85d8UR9zsv6WppBns9iH\" // contract address you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract address. ] contractTopic = [ \"f0f1e23ddce8a520eaa7502e02fa767cb24152e9a86a4bf02529637c4e57504b\" // contract topic you want to subscribe, if it's set to \"\", you will receive contract logs/events with any contract topic. ] }","title":"\u4e8b\u4ef6\u8ba2\u9605\u8fc7\u6ee4"},{"location":"developers/deployment/#mongodb","text":"","title":"\u4e0b\u8f7d\u5e76\u5b89\u88c5MongoDB"},{"location":"developers/deployment/#_17","text":"CPU/ RAM: 16Core / 32G DISK: 500G System: CentOS 64 MongoDB\u7684\u7248\u672c\u662f 4.0.4 \uff0c\u4ee5\u4e0b\u662f\u5b89\u88c5\u547d\u4ee4: cd /home/java-tron curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz tar zxvf mongodb-linux-x86_64-4.0.4.tgz mv mongodb-linux-x86_64-4.0.4 mongodb","title":"\u5efa\u8bae\u914d\u7f6e"},{"location":"developers/deployment/#_18","text":"export MONGOPATH=/home/java-tron/mongodb/ export PATH= PATH: PATH: MONGOPATH/bin","title":"\u8bbe\u8ba1\u73af\u5883\u53d8\u91cf"},{"location":"developers/deployment/#_19","text":"The path is : /etc/mongodb/mgdb.conf cd /etc/mongodb touch mgdb.conf \u521b\u5efa\u6570\u636e\u548c\u65e5\u5fd7\u6587\u4ef6\u5939\uff0c\u5e76\u628a\u5b83\u4eec\u7684\u7edd\u5bf9\u8def\u5f84\u52a0\u5165mgdb.conf","title":"\u521b\u5efa\u914d\u7f6e\u6587\u4ef6"},{"location":"developers/deployment/#_20","text":"dbpath=/home/java-tron/mongodb/data logpath=/home/java-tron/mongodb/log/mongodb.log port=27017 logappend=true fork=true bind_ip=0.0.0.0 auth=true wiredTigerCacheSizeGB=2","title":"\u793a\u4f8b"},{"location":"developers/deployment/#_21","text":"bind_ip must be configured to 0.0.0.0\uff0cotherwise remote connection will be refused. wiredTigerCacheSizeGB, must be configured to prevent OOM","title":"\u6ce8\u610f"},{"location":"developers/deployment/#mongodb_1","text":"mongod --config /etc/mongodb/mgdb.conf","title":"\u8fd0\u884cMongoDB"},{"location":"developers/deployment/#_22","text":"- mongo - use admin - db.createUser ({ user: \"root\" ,pwd: \"admin\" ,roles: [{ role: \"root\" ,db: \"admin\" }]})","title":"\u521b\u5efa\u7ba1\u7406\u5458\u8d26\u6237"},{"location":"developers/deployment/#_23","text":"db.auth(\"root\", \"admin\") use eventlog db.createUser({user:\"tron\",pwd:\"123456\",roles:[{role:\"dbOwner\",db:\"eventlog\"}]}) database: eventlog, username:tron, password: 123456","title":"\u521b\u5efa\u4e8b\u4ef6\u65e5\u5fd7\u4ee5\u53ca\u6240\u6709\u8005\u8d26\u6237"},{"location":"developers/deployment/#_24","text":"iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT","title":"\u9632\u706b\u5899\u7b56\u7565"},{"location":"developers/deployment/#mongo","text":"mongo 47.90.245.68:27017 use eventlog db.auth(\"tron\", \"123456\") show collections db.block.find()","title":"\u8fdc\u7a0b\u8fde\u63a5mongo"},{"location":"developers/deployment/#_25","text":"db.block.find({blockNumber: {$lt: 1000}}); // \u8fd4\u56de\u533a\u5757\u9ad8\u5ea6\u5c0f\u4e8e1000\u7684\u6570\u636e","title":"\u67e5\u8be2\u533a\u5757\u4e8b\u4ef6\u89e6\u53d1\u6570\u636e"},{"location":"developers/deployment/#_26","text":"cd / { projectPath } sh insertIndex.sh","title":"\u8bbe\u7f6e\u6570\u636e\u5e93\u7d22\u5f15"},{"location":"developers/deployment/#_27","text":"","title":"\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u90e8\u7f72"},{"location":"developers/deployment/#_28","text":"git clone https://github.com/tronprotocol/tron-eventquery.git cd troneventquery","title":"\u4e0b\u8f7d\u4ee3\u7801"},{"location":"developers/deployment/#_29","text":"mvn package \u4ee3\u7801\u7f16\u8bd1\u6210\u529f\u540e\uff0c\u5728/troneventquery\u76ee\u5f55\u4e0b\u4f1a\u751f\u6210troneventquery.jar\u6587\u4ef6\u3002 \u9700\u8981\u521b\u5efa\u4e00\u4e2aconfig.conf\u914d\u7f6e\u6587\u4ef6\u7528\u6765\u8bbe\u7f6emongodb\u7684\u914d\u7f6e\u5c5e\u6027\uff0c\u6211\u4eec\u5728/troneventquery/config.conf\u4e2d\u63d0\u4f9b\u4e86\u4e2a\u793a\u4f8b\uff0c\u5982\u679c\u6709\u9700\u8981\u53ef\u4ee5\u8fdb\u884c\u4fee\u6539\u3002 \u6ce8\u610f\uff1a config.conf\u6587\u4ef6\u5e94\u8be5\u4f4d\u4e8e/troneventquery\u6587\u4ef6\u5939\u4e0b\u3002 mongo.host=IP mongo.port=27017 mongo.dbname=eventlog mongo.username=tron mongo.password=123456 mongo.connectionsPerHost=8 mongo.threadsAllowedToBlockForConnectionMultiplier=4 mongo.dbname \u7684\u503c\u662f\u6307\u5b9a\u7684\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u5e93\u7684\u540d\u79f0\uff0c\u4e0d\u53ef\u4ee5\u4fee\u6539\u3002","title":"\u7f16\u8bd1"},{"location":"developers/deployment/#_30","text":"troneventquery/deploy.sh \u662f\u7528\u6765\u90e8\u7f72\u4e8b\u4ef6\u8ba2\u9605\u6570\u636e\u67e5\u8be2\u670d\u52a1\u7684\u3002 troneventquery/insertIndex.sh \u662f\u7528\u6765\u8bbe\u7f6emongodb\u7d22\u5f15\u6765\u52a0\u901f\u67e5\u8be2\u7684\u3002","title":"\u8fd0\u884c"},{"location":"developers/deployment/#_31","text":"Read the Advanced Configuration","title":"\u9ad8\u7ea7\u914d\u7f6e"},{"location":"developers/governance/","text":"\u7f51\u7edc\u6cbb\u7406 \u00b6 TRON\u7f51\u7edc\u7684\u6cbb\u7406\u662f\u901a\u8fc7\u4fee\u6539 \u7f51\u7edc\u53c2\u6570 \u6765\u5b8c\u6210\u7684\uff0c\u7f51\u7edc\u53c2\u6570\u7684\u4fee\u6539\uff0c\u6211\u4eec\u4e5f\u79f0\u4e3a\u7f51\u7edc\u5347\u7ea7\u3002\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u63d0\u51fa\u4fee\u6539\u7f51\u7edc\u53c2\u6570\u7684\u8ba8\u8bba\uff0c\u4f46\u53ea\u6709\u8d85\u7ea7\u4ee3\u8868\u6216\u8005\u8d85\u7ea7\u4ee3\u8868\u5408\u4f19\u4eba\u53ef\u4ee5\u5728\u94fe\u4e0a\u63d0\u4ea4\u6295\u7968\u8bf7\u6c42\uff0c\u5728\u6295\u7968\u622a\u6b62\u524d\uff0c27\u540d\u8d85\u7ea7\u4ee3\u8868\u53ef\u5bf9\u63d0\u8bae\u8fdb\u884c\u6295\u7968\uff0c\u6295\u7968\u622a\u6b62\u65f6\u95f4\u5230\u8fbe\u4e14\u6295\u7968\u6570\u91cf\u8fbe\u5230\u8981\u6c42\u540e\uff0c\u63d0\u8bae\u5373\u751f\u6548\u3002 \u60a8\u53ef\u4ee5\u5728 \u8fd9\u91cc \u770b\u5230\u4ee5\u5f80\u5df2\u7ecf\u5b8c\u6210\u7684\u63d0\u8bae\u6295\u7968\u7684\u5217\u8868\u3002 \u53d1\u8d77\u63d0\u8bae\u6295\u7968\u5e94\u9075\u5faa\u5982\u4e0b\u6d41\u7a0b\uff1a \u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba \u793e\u533a\u8ba8\u8bba \u53d1\u8d77\u6295\u7968\u8bf7\u6c42 \u6295\u7968\u548c\u751f\u6548 \u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba \u00b6 \u4efb\u4f55TRON\u7f51\u7edc\u53c2\u4e0e\u8005\u90fd\u53ef\u4ee5\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba\uff0c\u8bf7\u5728 TIP\u4ed3\u5e93 \u521b\u5efa\u63d0\u8bae\u6295\u7968\u8ba8\u8bbaIssue\uff0c\u8be5Issue\u7528\u6765\u8be6\u7ec6\u4ecb\u7ecd\u63d0\u8bae\uff0c\u5305\u542b\u672c\u6b21\u63d0\u8bae\u7684\u52a8\u673a\u3001\u8981\u4fee\u6539\u7684TRON\u7f51\u7edc\u53c2\u6570\u53ca\u5176\u503c\u3001\u6280\u672f\u89c4\u8303\u3001\u4ee5\u53ca\u4fee\u6539\u540e\u7684\u5f71\u54cd\u7b49\u7b49\uff0c\u65b0\u7684\u63d0\u8bae\u6295\u7968\u8ba8\u8bba\u53ef\u53c2\u8003\u8fd9\u4e2a \u793a\u4f8b \u3002 \u4e0b\u9762\u662f\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u8ba8\u8bba\u7684\u89c4\u8303\u3002 \u6807\u9898 \u00b6 \u6211\u4eec\u5e0c\u671bTRON\u751f\u6001\u6240\u6709\u7528\u6237\u90fd\u80fd\u53c2\u4e0e\u5230\u7f51\u7edc\u6cbb\u7406\u4e2d\uff0c\u4e3a\u4e86\u80fd\u591f\u5728\u793e\u533a\u8fdb\u884c\u66f4\u597d\u7684\u5ba3\u4f20\uff0c\u5efa\u8bae\u60a8\u4e3a\u63d0\u8bae\u6295\u7968\u8fdb\u884c\u547d\u540d\uff0c\u5e76\u5c06\u540d\u79f0\u5199\u5728\u6807\u9898\u7684\u6700\u524d\u9762\uff0c\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\uff1a Palma Upgrade\uff1aproposal to change the unit price of energy to 420 sun \u4e3b\u4f53\u5185\u5bb9 \u00b6 \u8ba8\u8bba\u4e2d\u5e94\u8be6\u7ec6\u4ecb\u7ecd\u8be5\u63d0\u8bae\u7684\u5185\u5bb9\uff0c\u5305\u62ec\u52a8\u673a\u3001\u9884\u4f30\u7684\u53d1\u8d77\u63d0\u6848\u7684\u65f6\u95f4\u53ca\u751f\u6548\u65f6\u95f4\u3001\u5982\u4f55\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u3001\u8be5\u63d0\u6848\u7684\u6280\u672f\u89c4\u8303\u6216\u80cc\u666f\u4fe1\u606f\u7b49\uff1a # Simple Summary \u7b80\u8981\u4ecb\u7ecd\u8be5\u63d0\u8bae\u8981\u4fee\u6539\u7684TRON\u7f51\u7edc\u53c2\u6570\u53ca\u503c\uff0c\u5e76\u6982\u62ec\u5176\u4f5c\u7528\u3002 # Motivation \u63cf\u8ff0\u63d0\u8bae\u7684\u52a8\u673a\uff0c\u73b0\u5728\u9047\u5230\u7684\u95ee\u9898\u662f\u4ec0\u4e48\uff0c\u4e5f\u5c31\u662f\u4e3a\u4ec0\u4e48\u9700\u8981\u4fee\u6539\u67d0\u4e2a\u6216\u67d0\u4e9b\u52a8\u6001\u53c2\u6570\u3002 # Timeline \u5199\u660e\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u65e5\u671f\uff0c\u4ee5\u53ca\u9884\u4f30\u7684\u63d0\u8bae\u751f\u6548\u65e5\u671f\u3002\u63d0\u8baeissue\u53d1\u51fa\u540e\u4e00\u822c\u7559\u51fa\u4e24\u5468\u7684\u65f6\u95f4\u4f9b\u793e\u533a\u8ba8\u8bba\uff0c\u56e0\u6b64\uff0c\u5728Issue\u4e2d\u8bbe\u7f6e\u7684\u63d0\u6848\u53d1\u8d77\u65f6\u95f4\u5e94\u4e3aIssue\u63d0\u51fa\u65f6\u95f4\u7684\u4e24\u5468\u4ee5\u540e\u3002 # How to Initialize the Voting Request \u6307\u660e\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u8bf7\u6c42\u7684\u547d\u4ee4\u3002 # Technical Specification / Background \u63d0\u8bae\u7684\u5177\u4f53\u6280\u672f\u89c4\u8303\u6216\u8005\u80cc\u666f\u4fe1\u606f \u793e\u533a\u8ba8\u8bba \u00b6 \u5728\u63d0\u8bae\u8ba8\u8bba\u53d1\u8d77\u540e\uff0c\u8ba8\u8bba\u7684\u53d1\u8d77\u4eba\u5e94\u8be5\u5c3d\u529b\u5728\u793e\u533a\u4e2d\u8fdb\u884c\u63a8\u5e7f\uff0c\u5438\u5f15\u793e\u533a\u7528\u6237\u5bf9\u63d0\u8bae\u8fdb\u884c\u8ba8\u8bba\uff0c\u5e76\u6839\u636e\u8ba8\u8bba\u7684\u7ed3\u679c\u6765\u66f4\u65b0\u63d0\u8bae\u3002 \u53d1\u8d77\u6295\u7968\u8bf7\u6c42 \u00b6 \u4e00\u822c\u5728\u63d0\u8bae\u4e2d\u8bbe\u7f6e\u7684\u6295\u7968\u8bf7\u6c42\u7684\u53d1\u8d77\u65f6\u95f4\u662f\u8be5\u63d0\u8bae\u8ba8\u8bba\u53d1\u8d77\u4e24\u5468\u540e\uff0c\u5f53\u793e\u533a\u5bf9\u63d0\u8bae\u8fdb\u884c\u4e86\u5145\u5206\u8ba8\u8bba\uff0c\u5f62\u6210\u793e\u533a\u5171\u8bc6\u540e\uff0c\u8d85\u7ea7\u4ee3\u8868\u6216\u8d85\u7ea7\u4ee3\u8868\u5408\u4f19\u4eba\u4f1a\u5728\u94fe\u4e0a\u53d1\u8d77\u6295\u7968\u8bf7\u6c42\u3002 \u6295\u7968\u548c\u751f\u6548 \u00b6 \u94fe\u4e0a\u53d1\u8d77\u7684\u6295\u7968\u7684\u6709\u6548\u671f\u662f3\u5929\uff0c\u5728\u6295\u7968\u6709\u6548\u671f\u5185\uff0c\u6240\u670927\u4e2a\u8d85\u7ea7\u4ee3\u8868\u5747\u53ef\u4ee5\u4e3a\u63d0\u8bae\u8fdb\u884c\u6295\u7968\uff0c\u6295\u7968\u622a\u6b62\u65f6\u95f4\u8fbe\u5230\u540e\uff0c\u5982\u679c\u83b7\u5f97\u7684\u7968\u6570\u5927\u4e8e\u6216\u8005\u7b49\u4e8e18\u7968\uff0c\u8be5\u63d0\u6848\u5c06\u751f\u6548\u3002","title":"\u6cbb\u7406\u6d41\u7a0b"},{"location":"developers/governance/#_1","text":"TRON\u7f51\u7edc\u7684\u6cbb\u7406\u662f\u901a\u8fc7\u4fee\u6539 \u7f51\u7edc\u53c2\u6570 \u6765\u5b8c\u6210\u7684\uff0c\u7f51\u7edc\u53c2\u6570\u7684\u4fee\u6539\uff0c\u6211\u4eec\u4e5f\u79f0\u4e3a\u7f51\u7edc\u5347\u7ea7\u3002\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u63d0\u51fa\u4fee\u6539\u7f51\u7edc\u53c2\u6570\u7684\u8ba8\u8bba\uff0c\u4f46\u53ea\u6709\u8d85\u7ea7\u4ee3\u8868\u6216\u8005\u8d85\u7ea7\u4ee3\u8868\u5408\u4f19\u4eba\u53ef\u4ee5\u5728\u94fe\u4e0a\u63d0\u4ea4\u6295\u7968\u8bf7\u6c42\uff0c\u5728\u6295\u7968\u622a\u6b62\u524d\uff0c27\u540d\u8d85\u7ea7\u4ee3\u8868\u53ef\u5bf9\u63d0\u8bae\u8fdb\u884c\u6295\u7968\uff0c\u6295\u7968\u622a\u6b62\u65f6\u95f4\u5230\u8fbe\u4e14\u6295\u7968\u6570\u91cf\u8fbe\u5230\u8981\u6c42\u540e\uff0c\u63d0\u8bae\u5373\u751f\u6548\u3002 \u60a8\u53ef\u4ee5\u5728 \u8fd9\u91cc \u770b\u5230\u4ee5\u5f80\u5df2\u7ecf\u5b8c\u6210\u7684\u63d0\u8bae\u6295\u7968\u7684\u5217\u8868\u3002 \u53d1\u8d77\u63d0\u8bae\u6295\u7968\u5e94\u9075\u5faa\u5982\u4e0b\u6d41\u7a0b\uff1a \u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba \u793e\u533a\u8ba8\u8bba \u53d1\u8d77\u6295\u7968\u8bf7\u6c42 \u6295\u7968\u548c\u751f\u6548","title":"\u7f51\u7edc\u6cbb\u7406"},{"location":"developers/governance/#_2","text":"\u4efb\u4f55TRON\u7f51\u7edc\u53c2\u4e0e\u8005\u90fd\u53ef\u4ee5\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba\uff0c\u8bf7\u5728 TIP\u4ed3\u5e93 \u521b\u5efa\u63d0\u8bae\u6295\u7968\u8ba8\u8bbaIssue\uff0c\u8be5Issue\u7528\u6765\u8be6\u7ec6\u4ecb\u7ecd\u63d0\u8bae\uff0c\u5305\u542b\u672c\u6b21\u63d0\u8bae\u7684\u52a8\u673a\u3001\u8981\u4fee\u6539\u7684TRON\u7f51\u7edc\u53c2\u6570\u53ca\u5176\u503c\u3001\u6280\u672f\u89c4\u8303\u3001\u4ee5\u53ca\u4fee\u6539\u540e\u7684\u5f71\u54cd\u7b49\u7b49\uff0c\u65b0\u7684\u63d0\u8bae\u6295\u7968\u8ba8\u8bba\u53ef\u53c2\u8003\u8fd9\u4e2a \u793a\u4f8b \u3002 \u4e0b\u9762\u662f\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u8ba8\u8bba\u7684\u89c4\u8303\u3002","title":"\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u8ba8\u8bba"},{"location":"developers/governance/#_3","text":"\u6211\u4eec\u5e0c\u671bTRON\u751f\u6001\u6240\u6709\u7528\u6237\u90fd\u80fd\u53c2\u4e0e\u5230\u7f51\u7edc\u6cbb\u7406\u4e2d\uff0c\u4e3a\u4e86\u80fd\u591f\u5728\u793e\u533a\u8fdb\u884c\u66f4\u597d\u7684\u5ba3\u4f20\uff0c\u5efa\u8bae\u60a8\u4e3a\u63d0\u8bae\u6295\u7968\u8fdb\u884c\u547d\u540d\uff0c\u5e76\u5c06\u540d\u79f0\u5199\u5728\u6807\u9898\u7684\u6700\u524d\u9762\uff0c\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\uff1a Palma Upgrade\uff1aproposal to change the unit price of energy to 420 sun","title":"\u6807\u9898"},{"location":"developers/governance/#_4","text":"\u8ba8\u8bba\u4e2d\u5e94\u8be6\u7ec6\u4ecb\u7ecd\u8be5\u63d0\u8bae\u7684\u5185\u5bb9\uff0c\u5305\u62ec\u52a8\u673a\u3001\u9884\u4f30\u7684\u53d1\u8d77\u63d0\u6848\u7684\u65f6\u95f4\u53ca\u751f\u6548\u65f6\u95f4\u3001\u5982\u4f55\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u3001\u8be5\u63d0\u6848\u7684\u6280\u672f\u89c4\u8303\u6216\u80cc\u666f\u4fe1\u606f\u7b49\uff1a # Simple Summary \u7b80\u8981\u4ecb\u7ecd\u8be5\u63d0\u8bae\u8981\u4fee\u6539\u7684TRON\u7f51\u7edc\u53c2\u6570\u53ca\u503c\uff0c\u5e76\u6982\u62ec\u5176\u4f5c\u7528\u3002 # Motivation \u63cf\u8ff0\u63d0\u8bae\u7684\u52a8\u673a\uff0c\u73b0\u5728\u9047\u5230\u7684\u95ee\u9898\u662f\u4ec0\u4e48\uff0c\u4e5f\u5c31\u662f\u4e3a\u4ec0\u4e48\u9700\u8981\u4fee\u6539\u67d0\u4e2a\u6216\u67d0\u4e9b\u52a8\u6001\u53c2\u6570\u3002 # Timeline \u5199\u660e\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u7684\u65e5\u671f\uff0c\u4ee5\u53ca\u9884\u4f30\u7684\u63d0\u8bae\u751f\u6548\u65e5\u671f\u3002\u63d0\u8baeissue\u53d1\u51fa\u540e\u4e00\u822c\u7559\u51fa\u4e24\u5468\u7684\u65f6\u95f4\u4f9b\u793e\u533a\u8ba8\u8bba\uff0c\u56e0\u6b64\uff0c\u5728Issue\u4e2d\u8bbe\u7f6e\u7684\u63d0\u6848\u53d1\u8d77\u65f6\u95f4\u5e94\u4e3aIssue\u63d0\u51fa\u65f6\u95f4\u7684\u4e24\u5468\u4ee5\u540e\u3002 # How to Initialize the Voting Request \u6307\u660e\u53d1\u8d77\u63d0\u8bae\u6295\u7968\u8bf7\u6c42\u7684\u547d\u4ee4\u3002 # Technical Specification / Background \u63d0\u8bae\u7684\u5177\u4f53\u6280\u672f\u89c4\u8303\u6216\u8005\u80cc\u666f\u4fe1\u606f","title":"\u4e3b\u4f53\u5185\u5bb9"},{"location":"developers/governance/#_5","text":"\u5728\u63d0\u8bae\u8ba8\u8bba\u53d1\u8d77\u540e\uff0c\u8ba8\u8bba\u7684\u53d1\u8d77\u4eba\u5e94\u8be5\u5c3d\u529b\u5728\u793e\u533a\u4e2d\u8fdb\u884c\u63a8\u5e7f\uff0c\u5438\u5f15\u793e\u533a\u7528\u6237\u5bf9\u63d0\u8bae\u8fdb\u884c\u8ba8\u8bba\uff0c\u5e76\u6839\u636e\u8ba8\u8bba\u7684\u7ed3\u679c\u6765\u66f4\u65b0\u63d0\u8bae\u3002","title":"\u793e\u533a\u8ba8\u8bba"},{"location":"developers/governance/#_6","text":"\u4e00\u822c\u5728\u63d0\u8bae\u4e2d\u8bbe\u7f6e\u7684\u6295\u7968\u8bf7\u6c42\u7684\u53d1\u8d77\u65f6\u95f4\u662f\u8be5\u63d0\u8bae\u8ba8\u8bba\u53d1\u8d77\u4e24\u5468\u540e\uff0c\u5f53\u793e\u533a\u5bf9\u63d0\u8bae\u8fdb\u884c\u4e86\u5145\u5206\u8ba8\u8bba\uff0c\u5f62\u6210\u793e\u533a\u5171\u8bc6\u540e\uff0c\u8d85\u7ea7\u4ee3\u8868\u6216\u8d85\u7ea7\u4ee3\u8868\u5408\u4f19\u4eba\u4f1a\u5728\u94fe\u4e0a\u53d1\u8d77\u6295\u7968\u8bf7\u6c42\u3002","title":"\u53d1\u8d77\u6295\u7968\u8bf7\u6c42"},{"location":"developers/governance/#_7","text":"\u94fe\u4e0a\u53d1\u8d77\u7684\u6295\u7968\u7684\u6709\u6548\u671f\u662f3\u5929\uff0c\u5728\u6295\u7968\u6709\u6548\u671f\u5185\uff0c\u6240\u670927\u4e2a\u8d85\u7ea7\u4ee3\u8868\u5747\u53ef\u4ee5\u4e3a\u63d0\u8bae\u8fdb\u884c\u6295\u7968\uff0c\u6295\u7968\u622a\u6b62\u65f6\u95f4\u8fbe\u5230\u540e\uff0c\u5982\u679c\u83b7\u5f97\u7684\u7968\u6570\u5927\u4e8e\u6216\u8005\u7b49\u4e8e18\u7968\uff0c\u8be5\u63d0\u6848\u5c06\u751f\u6548\u3002","title":"\u6295\u7968\u548c\u751f\u6548"},{"location":"developers/gpg/","text":"\u8fd9\u4e2a\u6587\u6863\u662f\u5173\u4e8e\u5b98\u65b9\u652f\u6301\u7684PGP key\u7684\u8bf4\u660e \u00b6 Users: pgp < KEYS or gpg --import KEYS or gpg --keyserver hkp://keys.gnupg.net --search-keys support@tron.network pub rsa3072 2020-10-20 [SC] fingerprint = C07A AC17 C98D 205F 0CE3 0BF9 7F0A F58B 65C7 EEF4 uid Tron-Support support@tron.network sub rsa3072 2020-10-20 [E] -----BEGIN PGP PUBLIC KEY BLOCK----- mQGNBF+O4sMBDADTV2ymtGL+iZOAqc+U+jG8SLJRZlrw3k0Yc9aPeMvVvikAC7Sl j+3vTU5JjCYWPmcRqkHo1RyNImZg2GoikMB+y4/kAu/IHYyIbKlXQiC/XDPQ0Gpk 0mq74Df/24DFXBjYm9lpvisavaaVnQOxxwvLdVxBMdKZoZALcmy3dSBHVuqOfqrV znD5zE6fSpGonCiCZSx34VRCe5rNTBj0DnTjmBo3WzroxkjMqVeXpt8hWmfwUPGb EjvkopzGk+RtHfZvJrLrDsd3XF0M1iDzHSpBpVTs2kIoEMN2wK6YbMdYJk6mQDs4 3IH1uEiwNNd+npUDSPX2mUuPDmcZgO2msiXC/SuSSxZ3tEWQQ/g9Uzf5gv494em5 DNGmoS5EUDnWjv1CtmHsBclxmb1VS72CsxQobnUcQ4LosKJ1eCK6cgOCTbPAtwGf VitXUZRubwfUmPKEQOaoUoYtdOR50V0aSHfDFnNO3yhyZESUZBtNK9J7JdBTaGdo Z/TXxUbpNF5ZHrcAEQEAAbQjVHJvbi1TdXBwb3J0IDxzdXBwb3J0QHRyb24ubmV0 d29yaz6JAc4EEwEIADgWIQTAeqwXyY0gXwzjC/l/CvWLZcfu9AUCX47iwwIbAwUL CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRB/CvWLZcfu9GtCDACRsKze6Bk9TJik bz5IkdUfCBY9I8wCgcjqqO1knC47vwAwSt9GckEMu9LYTrrTzbedgBH0PF3FHFxy DpnQf9UgQ1AGOLm8H2ZN0W7ZF9wHtDJKjvV4GKIOmIi9tJ57LqqLAaPGbO01DAx4 0PoEM4257fbKGYnAUUgKZxRJBAMhE8DdlsnQ1qqPeVVxmBFYD8zEjvW0ROfV59FI OfReFJoCvJoX9LpMGLi1HwichJkcItXwtNAdFbNLJSYc8ZatcmDkkHTwRn2wRHBc aJOFGjZma2xjkCXB+4QFwjI2ng9Y2HpufwquP0ptUepq7kf1WeFdzChXlIOx+35y pK67EQxr/ExpIl8Sti2Oe4pPzhOoRVs05y+9ghVQ9rN7/16y7/w3GAZelrvEucM8 KYPBPIBILu7atuXHDhgeCDfbUIR3npAkFZJpW702BUg8jP/opwGlPvB7+A3+7r0e zLlwVyfKXTq1SbeaMgUyQ44vJpXBTiz2cqQZ5LC/OJuumw6NgBW5AY0EX47iwwEM AJjdQnztPlnTydbRf/XgAbNX5dFDE2+T86LW03ke/oHMFWTg3iWoQs/dAh3ucPw7 imU05mJr4+FrVFmU1NULLfG5T7dEPzPkZYN/pKa7EwBV2alLN6tab7gpS3ABYtnq GFZSOAGa9dwwhpAmItSG+2nBL76+7fdGmxzUsoGtjbM/m2nrMtuj/04y/aGD6xC8 6Ncup+syJtjhN2i+98PqNwhlAd9wYrzed8fzUH/84tXAIdKLZS7wdQA6fWyj78nW I9wMlS5h/QDBsDXDd9/Bv4FgUfIFgLR+K6M6gx6Hl4AyWN1JvWIlvuqPLqcEv3b5 bZlOCRB5NsuEzLBdEaydN8oEcL9G578o0sAp6qbdza/Mtbq+n1y9FSItuYJxHtZC RpeICwKgOS48YeLRjvBYhogTT2GqPaoT/a6iMKT4c+MgbvgD487SjagYlf0CJ6PD ENnjIZfERXgwAFq528CWJjYwF9acjEGQkcJzH5+R3Ev5d/YdlQLFtdUirB4rc/5T JQARAQABiQG2BBgBCAAgFiEEwHqsF8mNIF8M4wv5fwr1i2XH7vQFAl+O4sMCGwwA CgkQfwr1i2XH7vSfaQv/f8kcLDn+wCN7egSqt4XXKOpDLyKIB/cczGfRWQG4pZns 3rFjnvqKnYMTkm6vnf0JW8jUgW5V2PxNxVOKC0/KhbYX3QikUqO1wcjr7a4JsOtH PNZd8SXCRvLLifyw6QkK5FnFNLBA8oV5bej73gpEaSqF0kXZI9UP9dfvCp0R22Zw 48TxEbhj9i8x6pWZ4hckbojGVYqeo3LdTVMA75FXVfFzVoRJgvow0lEXqTKTPASU PuWejMXfqdN1Vu20IJvCgij7l0RTwK7ushX6a6mX5QAGIb4Qa3UkHGtEgwOJ/QVF WzjNwu0praNGHqIqirxpBT6ze/Oz47IsSGY727+4Edanz73upPwkt54Rb6wimxKf MTSixi+cpzJgsVBiJY4VRIuGSq3ITXZjaEoM7Zu6+0KIb19r6PcuP+wMZJPkup0/ 8nrS3HspazsZUq5kz3fFy2MkXv7dXduQN3iqKEtmedcCDCnglnzi0O/Ryl2niqWw iCwhvZAEFCYiEkUJdk+A =G5T7 -----END PGP PUBLIC KEY BLOCK-----","title":"\u8fd9\u4e2a\u6587\u6863\u662f\u5173\u4e8e\u5b98\u65b9\u652f\u6301\u7684PGP key\u7684\u8bf4\u660e"},{"location":"developers/gpg/#pgp-key","text":"Users: pgp < KEYS or gpg --import KEYS or gpg --keyserver hkp://keys.gnupg.net --search-keys support@tron.network pub rsa3072 2020-10-20 [SC] fingerprint = C07A AC17 C98D 205F 0CE3 0BF9 7F0A F58B 65C7 EEF4 uid Tron-Support support@tron.network sub rsa3072 2020-10-20 [E] -----BEGIN PGP PUBLIC KEY BLOCK----- mQGNBF+O4sMBDADTV2ymtGL+iZOAqc+U+jG8SLJRZlrw3k0Yc9aPeMvVvikAC7Sl j+3vTU5JjCYWPmcRqkHo1RyNImZg2GoikMB+y4/kAu/IHYyIbKlXQiC/XDPQ0Gpk 0mq74Df/24DFXBjYm9lpvisavaaVnQOxxwvLdVxBMdKZoZALcmy3dSBHVuqOfqrV znD5zE6fSpGonCiCZSx34VRCe5rNTBj0DnTjmBo3WzroxkjMqVeXpt8hWmfwUPGb EjvkopzGk+RtHfZvJrLrDsd3XF0M1iDzHSpBpVTs2kIoEMN2wK6YbMdYJk6mQDs4 3IH1uEiwNNd+npUDSPX2mUuPDmcZgO2msiXC/SuSSxZ3tEWQQ/g9Uzf5gv494em5 DNGmoS5EUDnWjv1CtmHsBclxmb1VS72CsxQobnUcQ4LosKJ1eCK6cgOCTbPAtwGf VitXUZRubwfUmPKEQOaoUoYtdOR50V0aSHfDFnNO3yhyZESUZBtNK9J7JdBTaGdo Z/TXxUbpNF5ZHrcAEQEAAbQjVHJvbi1TdXBwb3J0IDxzdXBwb3J0QHRyb24ubmV0 d29yaz6JAc4EEwEIADgWIQTAeqwXyY0gXwzjC/l/CvWLZcfu9AUCX47iwwIbAwUL CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRB/CvWLZcfu9GtCDACRsKze6Bk9TJik bz5IkdUfCBY9I8wCgcjqqO1knC47vwAwSt9GckEMu9LYTrrTzbedgBH0PF3FHFxy DpnQf9UgQ1AGOLm8H2ZN0W7ZF9wHtDJKjvV4GKIOmIi9tJ57LqqLAaPGbO01DAx4 0PoEM4257fbKGYnAUUgKZxRJBAMhE8DdlsnQ1qqPeVVxmBFYD8zEjvW0ROfV59FI OfReFJoCvJoX9LpMGLi1HwichJkcItXwtNAdFbNLJSYc8ZatcmDkkHTwRn2wRHBc aJOFGjZma2xjkCXB+4QFwjI2ng9Y2HpufwquP0ptUepq7kf1WeFdzChXlIOx+35y pK67EQxr/ExpIl8Sti2Oe4pPzhOoRVs05y+9ghVQ9rN7/16y7/w3GAZelrvEucM8 KYPBPIBILu7atuXHDhgeCDfbUIR3npAkFZJpW702BUg8jP/opwGlPvB7+A3+7r0e zLlwVyfKXTq1SbeaMgUyQ44vJpXBTiz2cqQZ5LC/OJuumw6NgBW5AY0EX47iwwEM AJjdQnztPlnTydbRf/XgAbNX5dFDE2+T86LW03ke/oHMFWTg3iWoQs/dAh3ucPw7 imU05mJr4+FrVFmU1NULLfG5T7dEPzPkZYN/pKa7EwBV2alLN6tab7gpS3ABYtnq GFZSOAGa9dwwhpAmItSG+2nBL76+7fdGmxzUsoGtjbM/m2nrMtuj/04y/aGD6xC8 6Ncup+syJtjhN2i+98PqNwhlAd9wYrzed8fzUH/84tXAIdKLZS7wdQA6fWyj78nW I9wMlS5h/QDBsDXDd9/Bv4FgUfIFgLR+K6M6gx6Hl4AyWN1JvWIlvuqPLqcEv3b5 bZlOCRB5NsuEzLBdEaydN8oEcL9G578o0sAp6qbdza/Mtbq+n1y9FSItuYJxHtZC RpeICwKgOS48YeLRjvBYhogTT2GqPaoT/a6iMKT4c+MgbvgD487SjagYlf0CJ6PD ENnjIZfERXgwAFq528CWJjYwF9acjEGQkcJzH5+R3Ev5d/YdlQLFtdUirB4rc/5T JQARAQABiQG2BBgBCAAgFiEEwHqsF8mNIF8M4wv5fwr1i2XH7vQFAl+O4sMCGwwA CgkQfwr1i2XH7vSfaQv/f8kcLDn+wCN7egSqt4XXKOpDLyKIB/cczGfRWQG4pZns 3rFjnvqKnYMTkm6vnf0JW8jUgW5V2PxNxVOKC0/KhbYX3QikUqO1wcjr7a4JsOtH PNZd8SXCRvLLifyw6QkK5FnFNLBA8oV5bej73gpEaSqF0kXZI9UP9dfvCp0R22Zw 48TxEbhj9i8x6pWZ4hckbojGVYqeo3LdTVMA75FXVfFzVoRJgvow0lEXqTKTPASU PuWejMXfqdN1Vu20IJvCgij7l0RTwK7ushX6a6mX5QAGIb4Qa3UkHGtEgwOJ/QVF WzjNwu0praNGHqIqirxpBT6ze/Oz47IsSGY727+4Edanz73upPwkt54Rb6wimxKf MTSixi+cpzJgsVBiJY4VRIuGSq3ITXZjaEoM7Zu6+0KIb19r6PcuP+wMZJPkup0/ 8nrS3HspazsZUq5kz3fFy2MkXv7dXduQN3iqKEtmedcCDCnglnzi0O/Ryl2niqWw iCwhvZAEFCYiEkUJdk+A =G5T7 -----END PGP PUBLIC KEY BLOCK-----","title":"\u8fd9\u4e2a\u6587\u6863\u662f\u5173\u4e8e\u5b98\u65b9\u652f\u6301\u7684PGP key\u7684\u8bf4\u660e"},{"location":"developers/incentives/","text":"\u793e\u533a\u5f00\u53d1\u8005\u6fc0\u52b1\u8ba1\u5212 \u00b6 \u6ce2\u573a\u793e\u533a\u5f00\u53d1\u8005\u6fc0\u52b1\u8ba1\u5212\u91c7\u7528\u79ef\u5206\u5236\u3002\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7\u4e3a\u6ce2\u573a\u505a\u8d21\u732e\u6765\u83b7\u5f97\u79ef\u5206\u3002 \u5f53\u4e00\u4e2aissue\uff08\u6216PR\uff09\u88ab\u5173\u95ed\u65f6\uff0c\u5b83\u5c06\u88ab\u8f6c\u79fb\u5230\u5956\u52b1\u5206\u914d\u9879\u76ee\u3002\u6838\u5fc3\u5f00\u53d1\u4eba\u5458\u5c06\u5bf9issue\u6216PR\u8fdb\u884c\u8bc4\u8bba\uff0c\u4ee5\u5206\u6570\u8868\u793a\u6bcf\u4e2a\u8d21\u732e\u8005\u7684\u5956\u52b1\u3002\u5956\u52b1\u5206\u914d\u9879\u76ee\u5141\u8bb8\u8d21\u732e\u8005\u8ddf\u8e2a\u5956\u52b1\u6d41\u7a0b\u72b6\u6001\u3002 \u4f60\u53ef\u4ee5\u5728 Tronscan \u67e5\u770b\u4f60\u7684\u79ef\u5206\u6392\u540d\u3002 \u5956\u52b11\uff1a \u5728\u6bcf\u4e2a\u6708\u7ed3\u675f\u524d\uff0c\u6211\u4eec\u4f1a\u7edf\u8ba1\u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u9879\u76ee\u7684\u5f00\u53d1\u8005\u5f53\u6708\u6240\u83b7\u5f97\u7684\u79ef\u5206\uff0c\u5e76\u7ed9\u4e88\u524d\u4e94\u540d\u5f00\u53d1\u8005\u73b0\u91d1\u5956\u52b1\u3002 \u5728\u6bcf\u4e00\u5e74\u7ed3\u675f\u524d\uff0c\u6211\u4eec\u4f1a\u7edf\u8ba1\u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u9879\u76ee\u7684\u5f00\u53d1\u8005\u5f53\u5e74\u6240\u83b7\u5f97\u7684\u79ef\u5206\uff0c\u5e76\u7ed9\u4e88\u524d\u4e94\u540d\u5f00\u53d1\u8005\u73b0\u91d1\u5956\u52b1\u3002 \u5728Tronscan\u4e0a\uff0c\u6211\u4eec\u4f1a\u516c\u5e03\u83b7\u5f97\u73b0\u91d1\u5956\u52b1\u7684\u7528\u6237\u3002 \u66f4\u6709\u673a\u4f1a\u628a\u5f00\u53d1\u8005\u7167\u7247\u5c55\u793a\u5728\u6ce2\u573a\u5b98\u7f51\u4e2d\u3002 No. 1 No. 2 No. 3 No. 4 No. 5 200 USD 180 USD 150 USD 120 ~140 USD 100 ~ 120 USD \u5956\u52b12\uff1a \u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u5f00\u53d1\u7684\u5f00\u53d1\u8005\uff0c\u90fd\u53ef\u4ee5\u83b7\u5f97\u6ce2\u573a\u8363\u8a89\u5f00\u53d1\u8005\u8bc1\u4e66\u3002\u6211\u4eec\u4f1a\u5728\u6ce2\u573a\u5b98\u7f51\u5bf9\u53c2\u4e0e\u7684\u5f00\u53d1\u8005\u516c\u5f00\u81f4\u8c22\u3002 \u5f00\u53d1\u8005\u53ef\u4ee5\u53c2\u4e0e\u4ee5\u4e0b\u5185\u5bb9\uff1a \u975e\u4ee3\u7801\u76f8\u5173 \u00b6 1. TIP \u00b6 \u63cf\u8ff0\uff1aTRON Improvement Proposal\uff08TIP\uff09 \u8303\u56f4\uff1a\u4efb\u4f55\u4e0e\u6ce2\u573a\u76f8\u5173\u7684\u6539\u8fdb\u63d0\u8bae\u3002\u6bd4\u5982\u65b0\u7684\u529f\u80fd\u3001TRC\u534f\u8bae\u3001protocol\u6539\u8fdb\u3001\u7f16\u7a0b\u5de5\u5177\uff0c\u7b49\u7b49\u3002 \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5 2. \u6587\u6863 \u00b6 \u63cf\u8ff0\uff1a\u4fee\u6b63\u3001\u66f4\u65b0\u3001\u65b0\u589e\u4e0e\u6ce2\u573a\u76f8\u5173\u7684\u6280\u672f\u6587\u6863\u3002 \u8303\u56f4\uff1a\u673a\u5236\u4e0e\u7b97\u6cd5\u3001\u7f51\u7edc\u67b6\u6784\u4e0e\u6570\u636e\u5e93\u3001\u5408\u7ea6\u6216\u8005\u5176\u4ed6\u6280\u672f\u76f8\u5173\u7684\u6587\u6863\u3002 \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5 3. Issue \u00b6 \u63cf\u8ff0\uff1a\u521b\u5efa\u5173\u4e8ebug\u3001\u63d0\u95ee\u3001\u6539\u8fdb\u7b49\u76f8\u5173\u7684\u4e3b\u9898\u6765\u8ba8\u8bba\u3002 \u8303\u56f4\uff1ajava-tron, \u6ce2\u573a\u751f\u6001 \u79ef\u5206\uff1a Critical High Medium Low 10 8 5 < 2 \u4ee3\u7801\u76f8\u5173 \u00b6 1. \u65b0\u529f\u80fd\u5f00\u53d1 \u00b6 \u63cf\u8ff0\uff1a\u4e3a\u6ce2\u573a\u7f51\u7edc\u5f00\u53d1\u65b0\u529f\u80fd\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 100 80 50 < 20 2. \u62a5\u544abug \u00b6 \u63cf\u8ff0\uff1a\u62a5\u544a\u6ce2\u573a\u7f51\u7edc\u4e0a\u7684bug\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5 3. \u4fee\u590dbug \u00b6 \u63cf\u8ff0\uff1a\u4fee\u590d\u6ce2\u573a\u7f51\u7edc\u4e0a\u7684bug\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 40 30 20 < 10 4. \u5b89\u5168\u76f8\u5173 \u00b6 \u63cf\u8ff0\uff1a\u53d1\u73b0\u6ce2\u573a\u7f51\u7edc\u7684\u5b89\u5168\u9690\u60a3\u6216\u8005\u589e\u5f3a\u6ce2\u573a\u7f51\u7edc\u7684\u5b89\u5168\u6027 \u8303\u56f4\uff1ajava-tron, \u6ce2\u573a\u751f\u6001 \u79ef\u5206\uff1a Critical High Medium Low 100 80 50 < 20 5. \u5176\u4ed6 \u00b6 \u63cf\u8ff0\uff1a\u4ee3\u7801\u4f18\u5316\uff0c\u7b49\u7b49 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5 \u60f3\u8981\u83b7\u5f975\u5206\uff08\u6216\u8005\u9ad8\u4e8e5\u5206\uff09\u7684\u8bc4\u5206\uff0c \u4e00\u4e2aPR\u7684\u5185\u5bb9\u5e94\u8be5\u662f\u5177\u6709\u521b\u65b0\u6027\uff0c\u5b9e\u7528\u6027\uff0c\u5173\u952e\u6027\u6216\u8005\u80fd\u4f53\u73b0\u51fa\u5de5\u4f5c\u91cf\u3002 \u4e00\u4e2aPR\u5e94\u8be5\u4e13\u6ce8\u4e8e\u89e3\u51b3\u4e00\u7c7b\u95ee\u9898\uff0c\u56e0\u800c\u8bf7\u4e0d\u8981\u628a\u4e00\u4e2aPR\u62c6\u6210\u82e5\u5e72\u4e2a\u7c7b\u4f3c\u7684PR\u63d0\u4ea4\u3002","title":"\u793e\u533a\u5f00\u53d1\u8005\u6fc0\u52b1\u8ba1\u5212"},{"location":"developers/incentives/#_1","text":"\u6ce2\u573a\u793e\u533a\u5f00\u53d1\u8005\u6fc0\u52b1\u8ba1\u5212\u91c7\u7528\u79ef\u5206\u5236\u3002\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7\u4e3a\u6ce2\u573a\u505a\u8d21\u732e\u6765\u83b7\u5f97\u79ef\u5206\u3002 \u5f53\u4e00\u4e2aissue\uff08\u6216PR\uff09\u88ab\u5173\u95ed\u65f6\uff0c\u5b83\u5c06\u88ab\u8f6c\u79fb\u5230\u5956\u52b1\u5206\u914d\u9879\u76ee\u3002\u6838\u5fc3\u5f00\u53d1\u4eba\u5458\u5c06\u5bf9issue\u6216PR\u8fdb\u884c\u8bc4\u8bba\uff0c\u4ee5\u5206\u6570\u8868\u793a\u6bcf\u4e2a\u8d21\u732e\u8005\u7684\u5956\u52b1\u3002\u5956\u52b1\u5206\u914d\u9879\u76ee\u5141\u8bb8\u8d21\u732e\u8005\u8ddf\u8e2a\u5956\u52b1\u6d41\u7a0b\u72b6\u6001\u3002 \u4f60\u53ef\u4ee5\u5728 Tronscan \u67e5\u770b\u4f60\u7684\u79ef\u5206\u6392\u540d\u3002 \u5956\u52b11\uff1a \u5728\u6bcf\u4e2a\u6708\u7ed3\u675f\u524d\uff0c\u6211\u4eec\u4f1a\u7edf\u8ba1\u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u9879\u76ee\u7684\u5f00\u53d1\u8005\u5f53\u6708\u6240\u83b7\u5f97\u7684\u79ef\u5206\uff0c\u5e76\u7ed9\u4e88\u524d\u4e94\u540d\u5f00\u53d1\u8005\u73b0\u91d1\u5956\u52b1\u3002 \u5728\u6bcf\u4e00\u5e74\u7ed3\u675f\u524d\uff0c\u6211\u4eec\u4f1a\u7edf\u8ba1\u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u9879\u76ee\u7684\u5f00\u53d1\u8005\u5f53\u5e74\u6240\u83b7\u5f97\u7684\u79ef\u5206\uff0c\u5e76\u7ed9\u4e88\u524d\u4e94\u540d\u5f00\u53d1\u8005\u73b0\u91d1\u5956\u52b1\u3002 \u5728Tronscan\u4e0a\uff0c\u6211\u4eec\u4f1a\u516c\u5e03\u83b7\u5f97\u73b0\u91d1\u5956\u52b1\u7684\u7528\u6237\u3002 \u66f4\u6709\u673a\u4f1a\u628a\u5f00\u53d1\u8005\u7167\u7247\u5c55\u793a\u5728\u6ce2\u573a\u5b98\u7f51\u4e2d\u3002 No. 1 No. 2 No. 3 No. 4 No. 5 200 USD 180 USD 150 USD 120 ~140 USD 100 ~ 120 USD \u5956\u52b12\uff1a \u6bcf\u4e2a\u53c2\u4e0e\u6ce2\u573a\u5f00\u53d1\u7684\u5f00\u53d1\u8005\uff0c\u90fd\u53ef\u4ee5\u83b7\u5f97\u6ce2\u573a\u8363\u8a89\u5f00\u53d1\u8005\u8bc1\u4e66\u3002\u6211\u4eec\u4f1a\u5728\u6ce2\u573a\u5b98\u7f51\u5bf9\u53c2\u4e0e\u7684\u5f00\u53d1\u8005\u516c\u5f00\u81f4\u8c22\u3002 \u5f00\u53d1\u8005\u53ef\u4ee5\u53c2\u4e0e\u4ee5\u4e0b\u5185\u5bb9\uff1a","title":"\u793e\u533a\u5f00\u53d1\u8005\u6fc0\u52b1\u8ba1\u5212"},{"location":"developers/incentives/#_2","text":"","title":"\u975e\u4ee3\u7801\u76f8\u5173"},{"location":"developers/incentives/#1-tip","text":"\u63cf\u8ff0\uff1aTRON Improvement Proposal\uff08TIP\uff09 \u8303\u56f4\uff1a\u4efb\u4f55\u4e0e\u6ce2\u573a\u76f8\u5173\u7684\u6539\u8fdb\u63d0\u8bae\u3002\u6bd4\u5982\u65b0\u7684\u529f\u80fd\u3001TRC\u534f\u8bae\u3001protocol\u6539\u8fdb\u3001\u7f16\u7a0b\u5de5\u5177\uff0c\u7b49\u7b49\u3002 \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5","title":"1. TIP"},{"location":"developers/incentives/#2","text":"\u63cf\u8ff0\uff1a\u4fee\u6b63\u3001\u66f4\u65b0\u3001\u65b0\u589e\u4e0e\u6ce2\u573a\u76f8\u5173\u7684\u6280\u672f\u6587\u6863\u3002 \u8303\u56f4\uff1a\u673a\u5236\u4e0e\u7b97\u6cd5\u3001\u7f51\u7edc\u67b6\u6784\u4e0e\u6570\u636e\u5e93\u3001\u5408\u7ea6\u6216\u8005\u5176\u4ed6\u6280\u672f\u76f8\u5173\u7684\u6587\u6863\u3002 \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5","title":"2. \u6587\u6863"},{"location":"developers/incentives/#3-issue","text":"\u63cf\u8ff0\uff1a\u521b\u5efa\u5173\u4e8ebug\u3001\u63d0\u95ee\u3001\u6539\u8fdb\u7b49\u76f8\u5173\u7684\u4e3b\u9898\u6765\u8ba8\u8bba\u3002 \u8303\u56f4\uff1ajava-tron, \u6ce2\u573a\u751f\u6001 \u79ef\u5206\uff1a Critical High Medium Low 10 8 5 < 2","title":"3. Issue"},{"location":"developers/incentives/#_3","text":"","title":"\u4ee3\u7801\u76f8\u5173"},{"location":"developers/incentives/#1","text":"\u63cf\u8ff0\uff1a\u4e3a\u6ce2\u573a\u7f51\u7edc\u5f00\u53d1\u65b0\u529f\u80fd\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 100 80 50 < 20","title":"1. \u65b0\u529f\u80fd\u5f00\u53d1"},{"location":"developers/incentives/#2-bug","text":"\u63cf\u8ff0\uff1a\u62a5\u544a\u6ce2\u573a\u7f51\u7edc\u4e0a\u7684bug\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5","title":"2. \u62a5\u544abug"},{"location":"developers/incentives/#3-bug","text":"\u63cf\u8ff0\uff1a\u4fee\u590d\u6ce2\u573a\u7f51\u7edc\u4e0a\u7684bug\u3002 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 40 30 20 < 10","title":"3. \u4fee\u590dbug"},{"location":"developers/incentives/#4","text":"\u63cf\u8ff0\uff1a\u53d1\u73b0\u6ce2\u573a\u7f51\u7edc\u7684\u5b89\u5168\u9690\u60a3\u6216\u8005\u589e\u5f3a\u6ce2\u573a\u7f51\u7edc\u7684\u5b89\u5168\u6027 \u8303\u56f4\uff1ajava-tron, \u6ce2\u573a\u751f\u6001 \u79ef\u5206\uff1a Critical High Medium Low 100 80 50 < 20","title":"4. \u5b89\u5168\u76f8\u5173"},{"location":"developers/incentives/#5","text":"\u63cf\u8ff0\uff1a\u4ee3\u7801\u4f18\u5316\uff0c\u7b49\u7b49 \u8303\u56f4\uff1ajava-tron, wallet-cli \u79ef\u5206\uff1a Critical High Medium Low 20 15 10 < 5 \u60f3\u8981\u83b7\u5f975\u5206\uff08\u6216\u8005\u9ad8\u4e8e5\u5206\uff09\u7684\u8bc4\u5206\uff0c \u4e00\u4e2aPR\u7684\u5185\u5bb9\u5e94\u8be5\u662f\u5177\u6709\u521b\u65b0\u6027\uff0c\u5b9e\u7528\u6027\uff0c\u5173\u952e\u6027\u6216\u8005\u80fd\u4f53\u73b0\u51fa\u5de5\u4f5c\u91cf\u3002 \u4e00\u4e2aPR\u5e94\u8be5\u4e13\u6ce8\u4e8e\u89e3\u51b3\u4e00\u7c7b\u95ee\u9898\uff0c\u56e0\u800c\u8bf7\u4e0d\u8981\u628a\u4e00\u4e2aPR\u62c6\u6210\u82e5\u5e72\u4e2a\u7c7b\u4f3c\u7684PR\u63d0\u4ea4\u3002","title":"5. \u5176\u4ed6"},{"location":"developers/issue-workflow/","text":"Issue\u5de5\u4f5c\u6d41\u7a0b \u00b6 \u6211\u4eec\u9f13\u52b1\u793e\u533a\u8d21\u732e\u8005\u53c2\u4e0eJava-tron issue \u7684\u63d0\u51fa\u4e0e\u8ba8\u8bba\uff0c\u60a8\u53ef\u4ee5\u5c06\u60a8\u9047\u5230\u7684\u95ee\u9898\u6216\u8005\u60f3\u6cd5\u901a\u8fc7issue\u7684\u5f62\u5f0f\u63d0\u51fa\uff0c\u4e5f\u53ef\u4ee5\u53c2\u4e0eissue\u7684\u8ba8\u8bba\u6216\u8005\u5e2e\u52a9\u7ed9\u51fa\u89e3\u51b3\u529e\u6cd5\u3002\u60a8\u7684\u6bcf\u4e00\u6b21\u63d0\u95ee\u6216\u8005\u7559\u8a00\u90fd\u5728\u63a8\u52a8Java-tron\u5411\u66f4\u597d\u7684\u65b9\u5411\u53d1\u5c55\uff0c\u6211\u4eec\u611f\u8c22\u60a8\u4e3aJava-tron\u6240\u505a\u7684\u8d21\u732e\u3002 \u63d0\u4ea4Issue \u00b6 \u5982\u679c\u60a8\u9047\u5230\u4e86java-tron\u76f8\u5173\u7684\u95ee\u9898\u6216\u53d1\u73b0\u4e86\u76f8\u5173bug\uff0c\u6b22\u8fce\u63d0\u4ea4\u4e00\u4e2aIssue\uff0c\u4f46\u8bf7\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219: \u641c\u7d22\u73b0\u6709\u95ee\u9898 \u8bf7\u68c0\u67e5\u662f\u5426\u6709\u4eba\u5df2\u7ecf\u62a5\u544a\u4e86\u60a8\u7684\u95ee\u9898\u6216\u8bf7\u6c42\u4e86\u60a8\u7684\u60f3\u6cd5\uff0c\u8fd9\u6837\u4e0d\u4f46\u53ef\u4ee5\u5feb\u901f\u7684\u89e3\u51b3\u60a8\u9047\u5230\u7684\u95ee\u9898\uff0c\u800c\u4e14\u8fd8\u907f\u514d\u4e86\u91cd\u590d\u7684\u95ee\u9898\u3002 \u63d0\u4ea4Issue \u8bf7\u9009\u62e9\u60a8\u8981\u62a5\u544a\u7684Issue\u7c7b\u578b\uff0c\u5e76\u6839\u636e\u6a21\u677f\u8981\u6c42\u586b\u5199Issue\u5185\u5bb9\u3002 Ask a question - \u8bf7\u8be6\u7ec6\u9610\u660e\u60a8\u9047\u5230\u7684\u95ee\u9898\u3001\u671f\u671b\u7684\u7ed3\u679c\u548c\u5b9e\u9645\u770b\u5230\u7684\u7ed3\u679c\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u793e\u533a\u53c2\u4e0e\u8005\u66f4\u597d\u7684\u4e86\u89e3\u60a8\u7684\u95ee\u9898\uff0c\u66f4\u5feb\u7684\u7ed9\u51fa\u89e3\u51b3\u529e\u6cd5\u3002 Report a bug - \u9664\u4e86\u9610\u660e\u95ee\u9898\u3001\u671f\u671b\u7684\u7ed3\u679c\u548c\u770b\u5230\u7684\u7ed3\u679c\u4e4b\u5916\uff0c\u8fd8\u5e94\u8bf4\u660ebug\u7684\u590d\u73b0\u6b65\u9aa4\uff0c\u5e76\u9644\u4e0a\u51fa\u73b0\u95ee\u9898\u65f6\u7684java-tron log\u4ee5\u53ca\u8c03\u7528\u6808\u3002 Request a feature - \u8bf7\u9610\u660e\u4e3a\u4ec0\u4e48\u9700\u8981\u8be5\u529f\u80fd\u3001\u8be5\u529f\u80fd\u7684\u7528\u4f8b\u3001\u5b9e\u73b0\u65b9\u6848\uff0c\u4ee5\u53ca\u60a8\u662f\u5426\u613f\u610f\u5b9e\u73b0\u8be5\u529f\u80fd\u3002 \u5904\u7406\u6d41\u7a0b \u00b6 Issue\u7684\u5904\u7406\u6d41\u7a0b\u5982\u4e0b\uff1a \u6807\u8bb0Issue - \u6211\u4eec\u6bcf\u5468\u4e3e\u884c\u4e00\u6b21\u4f1a\u8bae\uff0c\u5bf9Issue\u8fdb\u884c\u5206\u7c7b\uff0c\u5e76\u4f7f\u7528\u5408\u9002\u7684\u6807\u7b7e\u6807\u8bb0Issue\u3002 \u5206\u914dIssue - \u5c06Issue\u5206\u914d\u7ed9\u4e00\u4f4d\u6216\u8005\u51e0\u4f4d\u793e\u533a\u6838\u5fc3\u5f00\u53d1\u8005\uff0c\u6838\u5fc3\u5f00\u53d1\u8005\u4f1a\u53c2\u4e0eIssue\u7684\u8c03\u67e5\u548c\u8ba8\u8bba\u3002 \u793e\u533a\u8ba8\u8bba - \u6240\u6709\u7684\u793e\u533a\u53c2\u4e0e\u8005\u5747\u53ef\u53c2\u4e0eIssue\u7684\u8c03\u67e5\u4e0e\u8ba8\u8bba\uff0c\u5e76\u5c06\u60f3\u6cd5\u6216\u8005\u610f\u89c1\u5199\u5230\u8bc4\u8bba\u91cc\uff0c\u4ece\u793e\u533a\u8ba8\u8bba\u7684\u4e2d\u6211\u4eec\u4f1a\u5f97\u5230\u95ee\u9898\u7684\u89e3\u51b3\u65b9\u6848\u3002 \u5173\u95edIssue - Issue\u63d0\u4ea4\u8005\u53ef\u4ee5\u968f\u65f6\u5173\u95edIssue\uff0c\u5f53\u95ee\u9898\u5f97\u5230\u4e86\u89e3\u51b3\uff0c\u6216\u8005\u957f\u65f6\u95f4\u672a\u5f97\u5230\u793e\u533a\u8ba8\u8bba\uff0c\u6211\u4eec\u4f1a\u5173\u95ed\u8be5Issue\uff0cIssue\u63d0\u4ea4\u8005\u6216\u5176\u4ed6\u7528\u6237\u4e5f\u53ef\u4ee5\u6839\u636e\u9700\u8981\u91cd\u65b0\u6253\u5f00\u8be5Issue\u3002 Issue\u6807\u7b7e \u00b6 \u6839\u636eIssue\u7279\u5f81\u4f7f\u7528\u5982\u4e0b\u6807\u7b7e\uff1a topic topic: Block/Transaction topic: Build topic: Consensus topic: DB topic: Deployment topic: Documentation topic: Event subscribe topic: gRPC/HTTP api topic: Net topic: Performance topic: Resource manage topic: Shielded Transaction topic: Smart contract topic: Solidity topic: Testnet/Privatenet type type: Announcement type: Bug type: Enhancement type: Feature Request type: Manual type: Other type: Question resolution resolution: Duplicated resolution: Needs More Information resolution: Wontfix improvement","title":"Issue\u5de5\u4f5c\u6d41\u7a0b"},{"location":"developers/issue-workflow/#issue","text":"\u6211\u4eec\u9f13\u52b1\u793e\u533a\u8d21\u732e\u8005\u53c2\u4e0eJava-tron issue \u7684\u63d0\u51fa\u4e0e\u8ba8\u8bba\uff0c\u60a8\u53ef\u4ee5\u5c06\u60a8\u9047\u5230\u7684\u95ee\u9898\u6216\u8005\u60f3\u6cd5\u901a\u8fc7issue\u7684\u5f62\u5f0f\u63d0\u51fa\uff0c\u4e5f\u53ef\u4ee5\u53c2\u4e0eissue\u7684\u8ba8\u8bba\u6216\u8005\u5e2e\u52a9\u7ed9\u51fa\u89e3\u51b3\u529e\u6cd5\u3002\u60a8\u7684\u6bcf\u4e00\u6b21\u63d0\u95ee\u6216\u8005\u7559\u8a00\u90fd\u5728\u63a8\u52a8Java-tron\u5411\u66f4\u597d\u7684\u65b9\u5411\u53d1\u5c55\uff0c\u6211\u4eec\u611f\u8c22\u60a8\u4e3aJava-tron\u6240\u505a\u7684\u8d21\u732e\u3002","title":"Issue\u5de5\u4f5c\u6d41\u7a0b"},{"location":"developers/issue-workflow/#issue_1","text":"\u5982\u679c\u60a8\u9047\u5230\u4e86java-tron\u76f8\u5173\u7684\u95ee\u9898\u6216\u53d1\u73b0\u4e86\u76f8\u5173bug\uff0c\u6b22\u8fce\u63d0\u4ea4\u4e00\u4e2aIssue\uff0c\u4f46\u8bf7\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219: \u641c\u7d22\u73b0\u6709\u95ee\u9898 \u8bf7\u68c0\u67e5\u662f\u5426\u6709\u4eba\u5df2\u7ecf\u62a5\u544a\u4e86\u60a8\u7684\u95ee\u9898\u6216\u8bf7\u6c42\u4e86\u60a8\u7684\u60f3\u6cd5\uff0c\u8fd9\u6837\u4e0d\u4f46\u53ef\u4ee5\u5feb\u901f\u7684\u89e3\u51b3\u60a8\u9047\u5230\u7684\u95ee\u9898\uff0c\u800c\u4e14\u8fd8\u907f\u514d\u4e86\u91cd\u590d\u7684\u95ee\u9898\u3002 \u63d0\u4ea4Issue \u8bf7\u9009\u62e9\u60a8\u8981\u62a5\u544a\u7684Issue\u7c7b\u578b\uff0c\u5e76\u6839\u636e\u6a21\u677f\u8981\u6c42\u586b\u5199Issue\u5185\u5bb9\u3002 Ask a question - \u8bf7\u8be6\u7ec6\u9610\u660e\u60a8\u9047\u5230\u7684\u95ee\u9898\u3001\u671f\u671b\u7684\u7ed3\u679c\u548c\u5b9e\u9645\u770b\u5230\u7684\u7ed3\u679c\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u793e\u533a\u53c2\u4e0e\u8005\u66f4\u597d\u7684\u4e86\u89e3\u60a8\u7684\u95ee\u9898\uff0c\u66f4\u5feb\u7684\u7ed9\u51fa\u89e3\u51b3\u529e\u6cd5\u3002 Report a bug - \u9664\u4e86\u9610\u660e\u95ee\u9898\u3001\u671f\u671b\u7684\u7ed3\u679c\u548c\u770b\u5230\u7684\u7ed3\u679c\u4e4b\u5916\uff0c\u8fd8\u5e94\u8bf4\u660ebug\u7684\u590d\u73b0\u6b65\u9aa4\uff0c\u5e76\u9644\u4e0a\u51fa\u73b0\u95ee\u9898\u65f6\u7684java-tron log\u4ee5\u53ca\u8c03\u7528\u6808\u3002 Request a feature - \u8bf7\u9610\u660e\u4e3a\u4ec0\u4e48\u9700\u8981\u8be5\u529f\u80fd\u3001\u8be5\u529f\u80fd\u7684\u7528\u4f8b\u3001\u5b9e\u73b0\u65b9\u6848\uff0c\u4ee5\u53ca\u60a8\u662f\u5426\u613f\u610f\u5b9e\u73b0\u8be5\u529f\u80fd\u3002","title":"\u63d0\u4ea4Issue"},{"location":"developers/issue-workflow/#_1","text":"Issue\u7684\u5904\u7406\u6d41\u7a0b\u5982\u4e0b\uff1a \u6807\u8bb0Issue - \u6211\u4eec\u6bcf\u5468\u4e3e\u884c\u4e00\u6b21\u4f1a\u8bae\uff0c\u5bf9Issue\u8fdb\u884c\u5206\u7c7b\uff0c\u5e76\u4f7f\u7528\u5408\u9002\u7684\u6807\u7b7e\u6807\u8bb0Issue\u3002 \u5206\u914dIssue - \u5c06Issue\u5206\u914d\u7ed9\u4e00\u4f4d\u6216\u8005\u51e0\u4f4d\u793e\u533a\u6838\u5fc3\u5f00\u53d1\u8005\uff0c\u6838\u5fc3\u5f00\u53d1\u8005\u4f1a\u53c2\u4e0eIssue\u7684\u8c03\u67e5\u548c\u8ba8\u8bba\u3002 \u793e\u533a\u8ba8\u8bba - \u6240\u6709\u7684\u793e\u533a\u53c2\u4e0e\u8005\u5747\u53ef\u53c2\u4e0eIssue\u7684\u8c03\u67e5\u4e0e\u8ba8\u8bba\uff0c\u5e76\u5c06\u60f3\u6cd5\u6216\u8005\u610f\u89c1\u5199\u5230\u8bc4\u8bba\u91cc\uff0c\u4ece\u793e\u533a\u8ba8\u8bba\u7684\u4e2d\u6211\u4eec\u4f1a\u5f97\u5230\u95ee\u9898\u7684\u89e3\u51b3\u65b9\u6848\u3002 \u5173\u95edIssue - Issue\u63d0\u4ea4\u8005\u53ef\u4ee5\u968f\u65f6\u5173\u95edIssue\uff0c\u5f53\u95ee\u9898\u5f97\u5230\u4e86\u89e3\u51b3\uff0c\u6216\u8005\u957f\u65f6\u95f4\u672a\u5f97\u5230\u793e\u533a\u8ba8\u8bba\uff0c\u6211\u4eec\u4f1a\u5173\u95ed\u8be5Issue\uff0cIssue\u63d0\u4ea4\u8005\u6216\u5176\u4ed6\u7528\u6237\u4e5f\u53ef\u4ee5\u6839\u636e\u9700\u8981\u91cd\u65b0\u6253\u5f00\u8be5Issue\u3002","title":"\u5904\u7406\u6d41\u7a0b"},{"location":"developers/issue-workflow/#issue_2","text":"\u6839\u636eIssue\u7279\u5f81\u4f7f\u7528\u5982\u4e0b\u6807\u7b7e\uff1a topic topic: Block/Transaction topic: Build topic: Consensus topic: DB topic: Deployment topic: Documentation topic: Event subscribe topic: gRPC/HTTP api topic: Net topic: Performance topic: Resource manage topic: Shielded Transaction topic: Smart contract topic: Solidity topic: Testnet/Privatenet type type: Announcement type: Bug type: Enhancement type: Feature Request type: Manual type: Other type: Question resolution resolution: Duplicated resolution: Needs More Information resolution: Wontfix improvement","title":"Issue\u6807\u7b7e"},{"location":"developers/java-tron/","text":"\u5f00\u53d1\u8005\u6307\u5357 \u00b6 \u975e\u5e38\u611f\u8c22\u60a8\u5e2e\u52a9\u6211\u4eec\u5f00\u53d1Java-tron\u6e90\u4ee3\u7801\uff01\u6211\u4eec\u6b22\u8fce\u6765\u81ea\u4efb\u4f55\u4eba\u5bf9Java-tron\u7ed9\u4e88\u7684\u7684\u8d21\u732e\uff0c\u5373\u4f7f\u662f\u5f88\u5c0f\u7684\u4fee\u590d\uff0c\u6211\u4eec\u4e5f\u8868\u793a\u611f\u6fc0\u3002 GitHub\u53ef\u4ee5\u7528\u4e8e\u8ddf\u8e2a\u95ee\u9898\u3001\u8d21\u732e\u4ee3\u7801\u3001\u63d0\u51fa\u5efa\u8bae\u3001\u8bf7\u6c42\u65b0\u529f\u80fd\u4ee5\u53ca\u7ba1\u7406\u6587\u6863\u3002\u5982\u679c\u60a8\u60f3\u53c2\u4e0eJava-tron\u5f00\u53d1\uff0c\u8bf7\u9075\u5faa\u5982\u4e0bGithub\u4ee3\u7801\u63d0\u4ea4\u6d41\u7a0b\uff1a Fork Java-tron\u4ed3\u5e93 \u4fee\u6539\u4ee3\u7801 \u63d0\u4ea4\u6539\u52a8 \u53d1\u9001\u4e00\u4e2apull request \u7ef4\u62a4\u8005\u5ba1\u67e5\u5e76\u5408\u5e76\u5230\u4e3b\u5206\u652f \u5bf9\u4e8e\u5c0f\u7684\u4fee\u590d\uff0c\u60a8\u53ef\u4ee5\u76f4\u63a5\u53d1\u9001\u4e00\u4e2apull request (PR)\uff0c\u4f46\u8bf7\u786e\u4fddPR\u4e2d\u5305\u542b\u8be6\u7ec6\u7684\u63cf\u8ff0\u3002\u5bf9\u4e8e\u590d\u6742\u7684\u6539\u52a8\uff0c\u60a8\u9700\u8981\u5411 TIP\u4ed3\u5e93 \u63d0\u4ea4\u4e00\u4e2aissue\uff0c\u4ee5\u8be6\u7ec6\u8bf4\u660e\u60a8\u7684\u52a8\u673a\u548c\u5b9e\u73b0\u8ba1\u5212\u7b49\u3002\u5173\u4e8e\u5982\u4f55\u63d0\u4ea4TIP issue\uff0c\u8bf7\u53c2\u89c1 TIP\u89c4\u8303 \u3002 \u6211\u4eec\u9f13\u52b1Java-tron\u5f00\u53d1\u8005\u5c3d\u65e9\u63d0\u4ea4PR\uff0c\u5373\u4f7f\u6ca1\u6709\u5b8c\u5168\u5f00\u53d1\u5b8c\u6210\uff0c\u4e5f\u53ef\u4ee5\u5148\u63d0\u4ea4PR\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u5176\u5b83\u5f00\u53d1\u8005\u4e86\u89e3\u5230\u8fd9\u4e2aPR\u5bf9\u5e94\u7684TIP Issue\u5df2\u7ecf\u5904\u4e8e In Progress \u72b6\u6001\u3002 Java-tron\u5f00\u53d1\u8005\u5e94\u57fa\u4e8e develop \u5206\u652f\u8fdb\u884c\u5f00\u53d1\u5e76\u63d0\u4ea4PR\uff0c\u5ba1\u67e5\u8005\u5c06\u6839\u636e \u4ee3\u7801\u5ba1\u67e5\u6307\u5357 \u5bf9\u63d0\u4ea4\u7684PR\u8fdb\u884c\u5ba1\u67e5\u3002 \u5206\u652f\u7ba1\u7406 \u00b6 java-tron\u9879\u76ee\u5206\u652f\u53ea\u6709master\u3001develop\u3001 release-* \u3001 feature-* \u3001 hotfix-* \u5206\u652f\uff1a develop \u5206\u652f develop\u5206\u652f\u53ea\u80fd\u5408\u5e76\u5176\u4ed6Fork\u7684\u5206\u652f\u3001 release-* \u5206\u652f\u3002\u5f53\u51b3\u5b9a\u8981\u53d1\u4e00\u4e2a\u65b0\u7248\u672c\u7684\u65f6\u5019\uff0c\u9700\u8981\u4ecedevelop\u5206\u652f\u62c9\u51fa\u4e00\u4e2a release-* \u5206\u652f\u3002 master \u5206\u652f master\u5206\u652f\u53ea\u80fd\u5728\u53d1\u5e03\u65b0\u7248\u672c\u65f6\u5408\u5e76 release-* \u5206\u652f\u3001 hotfix-* \u5206\u652f\u3002 release \u5206\u652f release-* \u5206\u652f\u662f\u51c6\u5907\u53d1\u7248\u524d\u5b9a\u7248\u7684\u5206\u652f\uff0c\u5b83\u662f\u4ece develop \u5206\u652f\u62c9\u51fa\u6765\u7684\u4e00\u4e2a\u5206\u652f\uff0c\u6b64\u5206\u652f\u7ecf\u8fc7\u56de\u5f52\u6d4b\u8bd5\u4e4b\u540e\uff0c\u6700\u7ec8\u5408\u5e76\u5230 master \uff0c\u540c\u65f6\u8fd9\u4e2a\u5206\u652f\u6c38\u4e45\u4fdd\u7559\u5728\u4ed3\u5e93\u4e2d\u3002\u5982\u679c\u9047\u5230 release-* \u5206\u652f\u6709bug\uff0c\u540e\u7eed\u4fee\u590dbug\u7684\u4ee3\u7801\u76f4\u63a5\u5408\u5e76\u5230 release-* \u5206\u652f\u4e0a\u3002\u901a\u8fc7\u56de\u5f52\u6d4b\u8bd5\u540e\uff0c\u5c06 release-* \u5206\u652f\u5408\u5e76\u56de develop \u5206\u652f\u3002 release-* \u5206\u652f\u5b9e\u9645\u4e0a\u4e3a\u6bcf\u6b21\u7684\u53d1\u7248\u4fdd\u7559\u4e86\u4e00\u4e2a\u5feb\u7167\u3002 feature \u5206\u652f feature-* \u5206\u652f\u662f\u91cd\u8981\u7684\u529f\u80fd\u7279\u6027\u5206\u652f\uff0c\u5b83\u662f\u4ece develop \u5206\u652f\u62c9\u51fa\u6765\u7684\u4e00\u4e2a\u5206\u652f\u3002 feature-* \u5206\u652f\u5f00\u53d1\u5b8c\u6210\u4e4b\u540e\u5408\u5e76\u56de develop \u5206\u652f\uff0c\u5e76\u4e14 feature-* \u652f\u662f\u53ef\u4ee5\u88ab\u7ef4\u62a4\u7684\u3002 hotfix \u5206\u652f \u4ece master \u5206\u652f\u62c9\u51fa\u6765\uff0c\u5408\u5e76\u56demaster\u5206\u652f\u548c develop \u5206\u652f\u3002 hotfix \u5206\u652f\u53ea\u80fd\u5408\u5e76Fork\u4ed3\u5e93\u7684PR\uff08\u4e00\u5b9a\u662f\u7528\u4e8e\u4fee\u590dbug\u7684PR\uff09\u3002 hotfix \u5206\u652f\u53ea\u7528\u6765\u7248\u672c\u4e0a\u7ebf\u4e4b\u540e\u53d1\u73b0\u7684bug\u4fee\u590d\u3002 \u4ee3\u7801\u63d0\u4ea4\u6d41\u7a0b \u00b6 \u5982\u679c\u60a8\u60f3\u4e3aJava-tron\u8d21\u732e\u4ee3\u7801\uff0c\u5e94\u8be5\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a Fork Java-tron\u4ee3\u7801\u4ed3\u5e93 \u4ece https://github.com/tronprotocol/java-tron \u9879\u76ee\u4e2dFork\u4e00\u4e2a\u65b0\u7684repository\u5230\u81ea\u5df1\u4e2a\u4eba\u7684\u4ee3\u7801\u4ed3\u5e93\u4e2d\uff0c\u7136\u540e\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5c06\u4ee3\u7801\u514b\u9686\u5230\u672c\u5730: $ git clone https://github.com/yourname/java-tron.git $ git remote add upstream https://github.com/tronprotocol/java-tron.git \uff08\u5907\u6ce8\uff1aupstream\u6307\u7684\u662f\u4e0a\u6e38\u7684\u9879\u76ee\u4ed3\u5e93\uff0c\u5373tronprotocol\u4e2d\u7684repository\uff0cupstream\u53ef\u4ee5\u4efb\u610f\u547d\u540d\uff0c\u4f46\u662f\u4e60\u60ef\u4e0a\u547d\u540d\u4e3aupstream\uff09 \u5728Fork\u7684\u4ed3\u5e93\u4e2d\u4fee\u6539\u4ee3\u7801 \u5f00\u53d1\u65b0\u529f\u80fd\u4e4b\u524d\u5148\u5c06\u4e2a\u4ebaFork\u7684\u4ed3\u5e93\u548c\u4e0a\u6e38\u4ed3\u5e93\u8fdb\u884c\u540c\u6b65\uff1a git fetch upstream git checkout develop git merge upstream/develop --no-ff (\u6dfb\u52a0--no-ff\u53ef\u4ee5\u5173\u95ed\u9ed8\u8ba4\u7684\u5feb\u901f\u5408\u5e76\u6a21\u5f0f) \u4ece\u81ea\u5df1\u4ed3\u5e93\u7684develop\u5206\u652f\u62c9\u51fa\u4e00\u4e2a\u65b0\u7684\u5206\u652f\u7528\u4e8e\u672c\u5730\u5f00\u53d1\uff0c\u8bf7\u53c2\u8003 \u5206\u652f\u547d\u540d\u89c4\u8303 \u3002 git checkout -b feature/branch_name develop \u7f16\u5199\u65b0\u7684\u4ee3\u7801,\u5b8c\u6210\u4e4b\u540e\u63d0\u4ea4commit\uff0c\u8bf7\u53c2\u8003 commit\u89c4\u8303 \u3002 git add . git commit -m 'commit message' \u63d0\u4ea4\u65b0\u7684\u5206\u652f\u5230\u4e2a\u4eba\u8fdc\u7aef\u4ed3\u5e93\uff1a git push origin new_feature Push\u4ee3\u7801 \u4ece\u4f60\u81ea\u5df1\u7684\u4ed3\u5e93\u5411 tronprotocol/java-tron \u63d0\u4ea4\u4e00\u4e2a\u63a8\u9001\u4ee3\u7801\u8bf7\u6c42 Pull Request\uff08PR\uff09\u3002\u5efa\u8bae\u9009\u62e9\u7ea2\u6846\u7684\u9009\u9879\uff0c\u5c06tronprotocol\u7684\u5206\u652f\u9009\u6210base\u5206\u652f\uff0c\u5c06\u4e2a\u4eba\u7684Fork\u4ed3\u5e93\u7684\u5206\u652f\u9009\u6210compare\u5206\u652f\u3002 \u4ee3\u7801\u5ba1\u67e5\u6307\u5357 \u00b6 \u5c06\u4ee3\u7801\u5408\u5e76\u5230Java-tron\u7684\u552f\u4e00\u65b9\u6cd5\u662f\u53d1\u9001\u4e00\u4e2apull repuest\uff08PR\uff09\uff0c\u800c\u63d0\u4ea4\u7684PRs\u9700\u8981\u88ab\u5ba1\u67e5\u901a\u8fc7\u540e\uff0c\u624d\u53ef\u4ee5\u5408\u5e76\u5230\u4e3b\u5206\u652f\u3002\u4e0b\u9762\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u6211\u4eec\u5bf9\u4ee3\u7801\u63d0\u4ea4\u8005\u548c\u4ee3\u7801\u5ba1\u67e5\u8005\u7684\u671f\u671b\u3002 \u5ba1\u67e5\u6d41\u7a0b \u00b6 \u5bf9\u4e8e\u4efb\u4f55PR\uff0c\u6211\u4eec\u9700\u8981\u5224\u65ad\u662f\u5426\u503c\u5f97\u5c06\u5176\u5305\u542b\u5728\u4e3b\u5206\u652f\u4e2d\u3002\u4e3a\u4e86\u505a\u51fa\u51b3\u5b9a\uff0c\u6211\u4eec\u5fc5\u987b\u4e86\u89e3\u8fd9\u4e2aPR\u662f\u505a\u4ec0\u4e48\u7684\u3002\u5982\u679cPR\u7684\u63d0\u4ea4\u8005\u5bf9PR\u6ca1\u6709\u63d0\u4f9b\u8db3\u591f\u7684\u63cf\u8ff0\u5185\u5bb9\u6216PR\u7684\u4ee3\u7801\u6539\u52a8\u592a\u5927\uff0c\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u8981\u6c42PR\u63d0\u4ea4\u8005\u7ed9\u4e88\u9002\u5f53\u7684\u89e3\u91ca\u4e0e\u8bf4\u660e\u3002 \u5ba1\u67e5\u8005\u5e94\u8be5\u68c0\u67e5PR\u7684\u4ee3\u7801\u98ce\u683c\u4ee5\u53ca\u529f\u80fd\u7684\u5b8c\u6574\u6027\uff0c\u5e76\u5728GitHub\u4e2d\u7ed9\u4e88\u8bc4\u8bba\u3002\u5ba1\u6838\u8005\u5e94\u8be5\u4e00\u76f4\u8ddf\u8fdbPR\uff0c\u76f4\u81f3\u6ee1\u8db3\u8981\u6c42\uff0c\u7136\u540e\u6279\u51c6PR\u3002\u6700\u540e\u7531Java-tron\u7ef4\u62a4\u8005\u5c06\u6279\u51c6\u7684PR\u5408\u5e76\u5230\u4e3b\u5206\u652f\u3002 \u5f53\u4e0ePR\u63d0\u4ea4\u8005\u6c9f\u901a\u65f6\uff0c\u8bf7\u6ce8\u610f\uff0c\u8981\u61c2\u5f97\u793c\u8c8c\u548c\u5c0a\u91cd\u3002 \u529f\u80fd\u68c0\u67e5 \u00b6 \u5bf9\u4e8e\u4fee\u590d\u95ee\u9898\u7684PRs\uff0c\u5ba1\u67e5\u4eba\u5458\u5e94\u8be5\u5c1d\u8bd5\u91cd\u73b0\u95ee\u9898\uff0c\u5e76\u9a8c\u8bc1PR\u786e\u5b9e\u4fee\u590d\u4e86\u95ee\u9898\u3002\u4e3a\u4e86\u5e2e\u52a9\u5ba1\u67e5\u8005\u53ef\u4ee5\u5feb\u901f\u7684\u68c0\u67e5\u95ee\u9898\u7684\u4fee\u590d\u60c5\u51b5\uff0cPR\u63d0\u4ea4\u8005\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u5355\u5143\u6d4b\u8bd5\uff0c\u8fd9\u4e2a\u5355\u5143\u6d4b\u8bd5\u4f1a\u5728\u6ca1\u6709\u4ee3\u7801\u66f4\u6539\u7684\u60c5\u51b5\u4e0b\u5931\u8d25\uff0c\u800c\u5728\u5305\u542b\u4e86\u66f4\u6539\u4ee3\u7801\u7684\u60c5\u51b5\u4e0b\u901a\u8fc7\u3002 \u5bf9\u4e8e\u6dfb\u52a0\u65b0\u529f\u80fd\u7684PRs\uff0c\u5ba1\u6838\u4eba\u5458\u5e94\u8be5\u5c1d\u8bd5\u4f7f\u7528\u8be5\u529f\u80fd\u5e76\u5bf9\u4f7f\u7528\u7684\u611f\u53d7\u7ed9\u51fa\u8bc4\u8bba\u3002\u4f8b\u5982:\u4e00\u4e2aPR\u6dfb\u52a0\u4e86\u4e00\u4e2a\u65b0\u7684\u547d\u4ee4\u884c\u53c2\u6570\uff0c\u90a3\u4e48\u5ba1\u67e5\u8005\u5e94\u8be5\u4f7f\u7528\u8be5\u53c2\u6570\uff0c\u5e76\u5bf9\u8be5\u53c2\u6570\u662f\u5426\u6709\u7528\u7ed9\u51fa\u81ea\u5df1\u7684\u610f\u89c1\u3002 \u4efb\u4f55\u4e00\u4e2aPR\uff0c\u53ea\u8981\u6539\u52a8\u4ee3\u7801\uff0c\u90fd\u5e94\u63d0\u4f9b\u8db3\u591f\u7684\u5355\u5143\u6d4b\u8bd5\uff0c\u4ee5\u4fdd\u8bc1\u57fa\u7840\u529f\u80fd\u6b63\u5e38\u3002\u8bc4\u5ba1\u8005\u5e94\u8be5\u9a8c\u8bc1\u5355\u5143\u6d4b\u8bd5\u662f\u5426\u8986\u76d6\u4e86\u65b0\u4ee3\u7801\u3002 \u4ee3\u7801\u89c4\u8303 \u00b6 \u6211\u4eec\u5e0c\u671b\u9075\u5faa\u4e00\u4e2a\u5171\u540c\u7684\u5f00\u53d1\u6d41\u7a0b\u548c\u4ee3\u7801\u89c4\u8303\u3002\u4e3a\u6b64\uff0c\u6211\u4eec\u6709\u4ee5\u4e0b\u5efa\u8bae\u3002 \u4f7f\u7528\u4ee3\u7801\u89c4\u8303\u5de5\u5177\u6765\u68c0\u67e5\u4ee3\u7801 \u5728\u63d0\u4ea4\u4e4b\u524d\u68c0\u67e5\u4ee3\u7801 \u6807\u51c6\u5316\u7684\u6d4b\u8bd5 Sonar \u68c0\u67e5\u548c Travis CI \u6301\u7eed\u96c6\u6210\u68c0\u67e5\u5c06\u5728PR\u63d0\u4ea4\u540e\u81ea\u52a8\u89e6\u53d1\uff0c\u4e00\u65e6\u6240\u6709\u68c0\u67e5\u901a\u8fc7\uff0c java-tron \u7ef4\u62a4\u8005\u5c06\u5ba1\u67e5\u8be5PR\uff0c\u5e76\u5728\u5fc5\u8981\u65f6\u7ed9\u4e88\u53cd\u9988\u4fee\u6539\u3002\u4e00\u65e6\u901a\u8fc7\uff0c\u6211\u4eec\u5c06\u5173\u95ed\u8be5PR\uff0c\u5e76\u5c06\u5176\u5408\u5e76\u5230 develop \u5206\u652f\u3002 \u6211\u4eec\u5f88\u9ad8\u5174\u6536\u5230\u63a8\u9001\u4ee3\u7801\u8bf7\u6c42\uff0c\u5e76\u5c3d\u6700\u5927\u52aa\u529b\u4ee5\u53ca\u6700\u5feb\u7684\u901f\u5ea6\u5ba1\u67e5\u5b83\u4eec\u3002\u4e00\u4e2a\u4e0d\u786e\u5b9a\u7684\u9519\u522b\u5b57\u662f\u5426\u503c\u5f97\u63d0\u4ea4\u4e00\u4e2a\u63a8\u9001\u8bf7\u6c42\uff1f \u8bf7\u53bb\u5904\u7406\u5b83! \u6211\u4eec\u4f1a\u5f88\u611f\u8c22\u4f60\u7684\u8d21\u732e\u3002 \u5982\u679c\u4f60\u7684\u63a8\u9001\u4ee3\u7801\u8bf7\u6c42\u5728\u7b2c\u4e00\u6b21\u5c1d\u8bd5\u65f6\u6ca1\u6709\u88ab\u63a5\u53d7\uff0c\u8bf7\u4e0d\u8981\u7070\u5fc3\uff0c\u56e0\u4e3a\u8fd9\u53ef\u80fd\u662f\u4e00\u4e2a\u758f\u5ffd\u3002\u8bf7\u5c3d\u53ef\u80fd\u591a\u5730\u89e3\u91ca\u63cf\u8ff0\u4f60\u7684\u4ee3\u7801\uff0c\u8ba9\u6211\u4eec\u66f4\u5bb9\u6613\u7406\u89e3\u3002 \u8bf7\u786e\u4fdd\u4f60\u7684\u63d0\u4ea4\u9075\u5faa\u4ee5\u4e0b\u7f16\u7801\u51c6\u5219\uff1a \u4ee3\u7801\u5fc5\u987b\u7b26\u5408: Google Code Style \u4ee3\u7801\u5fc5\u987b\u901a\u8fc7\u9759\u6001\u4ee3\u7801\u5206\u6790Sonar\u68c0\u6d4b \u62c9\u53d6\u4ee3\u7801\u5fc5\u987b\u4ee5 develop \u5206\u652f\u4e3a\u57fa\u7840 \u5206\u652f\u547d\u540d\u89c4\u8303 \u00b6 \u5206\u652f\u547d\u540d\u5e94\u9075\u5faa\u5982\u4e0b\u89c4\u8303\uff1a master \u5206\u652f\u548c develop \u5206\u652f\u56fa\u5b9a\u4e3a\"master\"\u548c\"develop\" \u7248\u672c\u5f00\u53d1\u5206\u652f\u540d\u79f0\u4e3a\u7248\u672c\u53f7\uff0c\u7531\u9879\u76ee\u8d1f\u8d23\u4eba\u6307\u5b9a\uff0c\u4f8b\u5982\uff1aOdyssey-v3.1.3\uff0c3.1.3\u7b49 hotfix \u5206\u652f\u4ee5 hotfix/ \u4f5c\u4e3a\u524d\u7f00\uff0c\u540d\u79f0\u4e3aBug\u7b80\u5355\u63cf\u8ff0\uff0c\u591a\u4e2a\u5355\u8bcd\u7528\u8fde\u63a5\u7b26\"-\"\u8fdb\u884c\u8fde\u63a5\uff0c\u4f8b\u5982\uff1ahotfix/typo\uff0chotfix/null-point-exception\u7b49 feature \u5206\u652f\u4ee5 feature/ \u4f5c\u4e3a\u524d\u7f00\uff0c\u540d\u79f0\u4e3a\u8be5\u65b0\u7279\u6027\u7684\u7b80\u8981\u63cf\u8ff0\uff0c\u591a\u4e2a\u5355\u8bcd\u7528\u8fde\u63a5\u7b26\"-\"\u8fdb\u884c\u8fde\u63a5\uff0c\u4f8b\u5982\uff1afeature/new_resource_model\u7b49 Pull Request\u89c4\u8303 \u00b6 Pull Request\u5e94\u9075\u5faa\u5982\u4e0b\u89c4\u8303\uff1a \u4e00\u4e2aPR\u53ea\u56f4\u7ed5\u4e00\u4ef6\u4e8b \u907f\u514d\u4ee3\u7801\u6539\u52a8\u91cf\u7279\u522b\u5927\u7684PR PR\u6807\u9898\u2014\u2014\u6982\u8ff0\u6b64\u6b21PR\u7684\u76ee\u6807 PR\u8bf4\u660e\u2014\u2014\u9762\u5411\u672a\u6765\u7684Reviewer \u5982\u679c\u9700\u8981\u53cd\u9988\uff0c\u8bf7\u8be6\u8ff0\u9700\u8981\u54ea\u4e9b\u53cd\u9988 Commit\u63cf\u8ff0\u89c4\u8303 \u00b6 \u63d0\u4ea4PR\u65f6\u63d0\u4f9b\u7684\u63cf\u8ff0\u5185\u5bb9\u5e94\u9075\u5faa\u4ee5\u4e0b\u89c4\u8303\uff0c\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u6a21\u677f\u5bf9PR\u5185\u5bb9\u8fdb\u884c\u8bf4\u660e\uff1a ():