Permalink
Find file Copy path
e33081d Sep 25, 2018
3 contributors

Users who have contributed to this file

@4GPTT @nanfengpo @sean-liu55
403 lines (319 sloc) 14.3 KB

交易的合约类型

合约支持多种类型,是TRON网络中的基本单位。下面详细介绍每种合约及参数。
1.创建账户 AccountCreateContract
2.转账 TransferContract
3.转账发布的Token TransferAssetContract
4.投票超级节点 VoteWitnessContract
5.创建超级节点候选人 WitnessCreateContract
6.发布Token AssetIssueContract
7.更新超级节点候选人URL WitnessUpdateContract
8.购买发行的Token ParticipateAssetIssueContract
9.更新账户 AccountUpdateContract
10.冻结资产 FreezeBalanceContract
11.解冻资产 UnfreezeBalanceContract
12.提取奖励 WithdrawBalanceContract
13.解冻发布的Token UnfreezeAssetContract
14.更新通证参数 UpdateAssetContract
15.创建提议 ProposalCreateContract
16.赞成提议 ProposalApproveContract
17.删除提议 ProposalDeleteContract
18.设置账户ID SetAccountIdContract
19.创建智能合约 CreateSmartContract
20.触发智能合约 TriggerSmartContract
21.更新合约 UpdateSettingContract
22.创建交易所 ExchangeCreateContract
23.给交易所注资 ExchangeInjectContract
24.从交易所撤资 ExchangeWithdrawContract
25.在交易所交易 ExchangeTransactionContract\

1.创建账户 AccountCreateContract

AccountCreatContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
account_address: 将要创建的账户地址。
type:账户类型——比如:0 代表的账户类型是Normal

 message AccountCreateContract {
   bytes owner_address = 1;
   bytes account_address = 2;
   AccountType type = 3;
 }

2.转账 TransferContract

TransferContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
to_address: 目标账户地址。
amount:转账金额,单位为 sun。

 message TransferContract {
   bytes owner_address = 1;
   bytes to_address = 2;
   int64 amount = 3;
 }

3.转账发布的Token TransferAssetContract

TransferAssetContract包含4种参数:
asset_name:发布Token的名称。
owner_address:合约持有人地址——比如: “0xu82h…7237”
to_address: 目标账户地址。
amount:转账Token的数量。

 message TransferAssetContract {
   bytes asset_name = 1;
   bytes owner_address = 2;
   bytes to_address = 3;
   int64 amount = 4;
 }

4.投票超级节点 VoteWitnessContract

VoteWitnessContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
vote_address: 超级节点候选人的地址。
vote_count:投给超级节点候选人的票数。
votes:超级节点候选人列表。
support:是否支持,这里应该是恒为true,暂未使用该参数。

 message VoteWitnessContract {
   message Vote {
     bytes vote_address = 1;
     int64 vote_count = 2;
   }
   bytes owner_address = 1;
   repeated Vote votes = 2;
   bool support = 3;
 }

5.创建超级节点候选人 WitnessCreateContract

WitnessCreateContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
url: 超级节点后续人网址。

 message WitnessCreateContract {
   bytes owner_address = 1;
   bytes url = 2;
 }

6.发布Token AssetIssueContract

AssetIssueContract包含17种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
name:发布Token的名称——比如:“SiCongcontract”abbr: 。
total_supply:发行总的token数量——比如:100000000
frozen_supply:冻结Token的数量和冻结时间列表。
trx_num:对应TRX数量——比如:232241
num: 对应的自定义资产数目。
start_time:开始时间——比如:20170312
end_time:结束时间——比如:20170512
order:相同asset_name时,order递增,默认初始值为0。
vote_score:合约的评分——比如:12343
description:Token的描述——比如:”trondada”
url:Token的url地址链接。
free_asset_net_limit:每个账户可以使用的免费带宽(转移该资产时使用)。
public_free_asset_net_limit:所有账户可以使用的免费带宽(转移该资产时使用)。
public_free_asset_net_usage:所有账户使用免费带宽(转移该资产时使用)。
public_latest_free_net_time:最近一次转移该Token使用免费带宽的时间。

 message AssetIssueContract {
   message FrozenSupply {
     int64 frozen_amount = 1;
     int64 frozen_days = 2;
   }
   bytes owner_address = 1;
   bytes name = 2;
   bytes abbr = 3;
   int64 total_supply = 4;
   repeated FrozenSupply frozen_supply = 5;
   int32 trx_num = 6;
   int32 num = 8;
   int64 start_time = 9;
   int64 end_time = 10;
   int64 order = 11; // the order of tokens of the same name
   int32 vote_score = 16;
   bytes description = 20;
   bytes url = 21;
   int64 free_asset_net_limit = 22;
   int64 public_free_asset_net_limit = 23;
   int64 public_free_asset_net_usage = 24;
   int64 public_latest_free_net_time = 25;
 }

7.更新超级节点候选人URL WitnessUpdateContract

WitnessUpdateContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
update_url: 超级节点更新后的url。

 message WitnessUpdateContract {
   bytes owner_address = 1;
   bytes update_url = 12;
 }

8.购买发行的Token ParticipateAssetIssueContract

ParticipateAssetIssueContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
to_address:发行Token所有者地址。
account_name: 发行Token的名称,包括Token名称和order
amount:购买发行Token使用TRX的数量,单位是 sun。

 message ParticipateAssetIssueContract {
   bytes owner_address = 1;
   bytes to_address = 2;
   bytes asset_name = 3;
   int64 amount = 4;
 }

9.更新账户 AccountUpdateContract

AccountUpdateContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
account_name: 账户名称——比如: "SiCongsaccount”

 // Update account name. Account name is not unique now.
 message AccountUpdateContract {
   bytes account_name = 1;
   bytes owner_address = 2;
 }

10.冻结资产 FreezeBalanceContract

FreezeBalanceContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
frozen_balance:冻结资产的数量。
frozen_duration:冻结资产的时间段。
resource: 冻结TRX获取资源的类型。 receiver_address :接收资源的账户。

 message FreezeBalanceContract {
   bytes owner_address = 1;
   int64 frozen_balance = 2;
   int64 frozen_duration = 3;
   ResourceCode resource = 10;
   bytes receiver_address = 15;
 }

11.解冻资产 UnfreezeBalanceContract

UnfreezeBalanceContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
resource: 解冻资源的类型。
receiver_address :接收资源的账户。

 message UnfreezeBalanceContract {
   bytes owner_address = 1;
   ResourceCode resource = 10;
   bytes receiver_address = 13;
 }

12.提取奖励 WithdrawBalanceContract

WithdrawBalanceContract包含1种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”

 message WithdrawBalanceContract {
   bytes owner_address = 1;
 }

13.解冻发布的Token UnfreezeAssetContract

UnfreezeAssetContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”

 message UnfreezeAssetContract {
   bytes owner_address = 1;
 }

14.更新通证参数 UpdateAssetContract

UpdateAssetContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
description: 通证的描述。
url:通证的Url。
new_limit:每个调用者可以消耗Bandwidth point的限制。
new_public_limit: 所有调用者可以消耗Bandwidth points的限制。

 message UpdateAssetContract {
   bytes owner_address = 1;
   bytes description = 2;
   bytes url = 3;
   int64 new_limit = 4;
   int64 new_public_limit = 5;
 }

15.创建提议 ProposalCreateContract

ProposalCreateContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
parameters: 提议。

 message ProposalCreateContract {
   bytes owner_address = 1;
   map<int64, int64> parameters = 2;
 }

16.赞成提议 ProposalApproveContract

ProposalApproveContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
proposal_id: 提议的Id。
is_add_approval:是否赞成提议。

 message ProposalApproveContract {
   bytes owner_address = 1;
   int64 proposal_id = 2;
   bool is_add_approval = 3; // add or remove approval
 }

17.删除提议 ProposalDeleteContract

ProposalDeleteContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
proposal_id: 提议ID。

 message ProposalDeleteContract {
   bytes owner_address = 1;
   int64 proposal_id = 2;
 }

18.设置账户ID SetAccountIdContract

SetAccountIdContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
account_id: 账户Id。

 // Set account id if the account has no id. Account id is unique and case insensitive.
 message SetAccountIdContract {
   bytes account_id = 1;
   bytes owner_address = 2;
 }

19.创建智能合约 CreateSmartContract

CreateSmartContract包含2种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
new_contract: 智能合约。

 message CreateSmartContract {
   bytes owner_address = 1;
   SmartContract new_contract = 2;
 }

20.触发智能合约 TriggerSmartContract

TriggerSmartContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
contract_address: 合约地址。
call_value:TRX的值。
data:操作参数。

 message TriggerSmartContract {
   bytes owner_address = 1;
   bytes contract_address = 2;
   int64 call_value = 3;
   bytes data = 4;
 }

21.更新合约 UpdateSettingContract

UpdateSettingContract包含3种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
contract_address: 合约地址。
consume_user_resource_percent:将要更新的账户消耗资源的百分比。

 message UpdateSettingContract {
   bytes owner_address = 1;
   bytes contract_address = 2;
   int64 consume_user_resource_percent = 3;
 }

22.创建交易所 ExchangeCreateContract

ExchangeCreateContract包含5种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
first_token_id: 第1种token的id 。
first_token_balance:第1种token的balance。
second_token_id:第2种token的id。
second_token_balance:第2种token的balance。

 message ExchangeCreateContract {
   bytes owner_address = 1;
   bytes first_token_id = 2;
   int64 first_token_balance = 3;
   bytes second_token_id = 4;
   int64 second_token_balance = 5;
 }

23.给交易所注资 ExchangeInjectContract

ExchangeInjectContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
exchange_id: 交易对的id。
token_id:要注资的token的id。
quant:要注资的token的金额。

 message ExchangeInjectContract {
   bytes owner_address = 1;
   int64 exchange_id = 2;
   bytes token_id = 3;
   int64 quant = 4;
 }

24.从交易所撤资 ExchangeWithdrawContract

ExchangeWithdrawContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
exchange_id: 交易对的id。
token_id:要撤资的token的id。
quant:要撤资的token的金额。

 message ExchangeWithdrawContract {
   bytes owner_address = 1;
   int64 exchange_id = 2;
   bytes token_id = 3;
   int64 quant = 4;
 }

25.在交易所交易 ExchangeTransactionContract

ExchangeTransactionContract包含4种参数:
owner_address:合约持有人地址——比如: “0xu82h…7237”
exchange_id: 交易对的id。
token_id:要卖出的token的id。
quant:要卖出的token的金额。

 message ExchangeTransactionContract {
   bytes owner_address = 1;
   int64 exchange_id = 2;
   bytes token_id = 3;
   int64 quant = 4;
 }