API 签名和广播示例
# 介绍
TRON 网络具有各种 API 调用,允许用户与区块链进行交互。可以在<a href="https://developers.tron.network/v3.0/reference" target="_blank"> API 参考页</a>中找到这些API 调用,其中列出了来自完整节点的 API 调用,Solidity Node 和 TronWeb。虽然一些 API 调用用作获取单个信息的独立请求,但也有许多 API 调用修改用户 TRX 钱包,因此需要签署和广播事务。本指南引导用户完成 TRX Balance Freezing 示例,以显示 API 签名和广播流程。
# 冻结示例
最常用的API之一是 `/ wallet / freezebalance` 调用。此 API 调用冻结用户指定的钱包地址内的TRX余额,并向钱包所有者提供带宽或能量和 TRON Power(投票权)。此 API 调用接受 `owner_address`,`frozen_balance`,`frozen_duration` 和 `resource` 的四个输入参数:
* `owner_address` 是字符串格式的 TRX 钱包地址。
* `frozen_balance` 是以整数格式冻结在面额中的 TRX 的数量。
* `frozen_duration` 是以整数格式冻结的持续时间。
* `resource` 是冻结资源的类型。这可以是字符串格式的 “ENERGY” 或 “BANDWIDTH”。<br>
1. **进行交易**:通过调用 API 来获取 JSON 数据来冻结余额:

下面是示例 JSON 输出。它列出了与冻结余额交易相关的各种属性。此 JSON 输出将用于对事务进行签名。
```shell
{
"transaction":{
"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
}
},
"privateKey":"your private key"
}- 签署交易:
/ wallet / gettransactionsignAPI 调用接受两个参数。一个是transaction参数,它接受上一步的 JSON 输出。另一个是privateKey参数,它需要与冻结的 TRX 地址关联的私钥来对事务进行签名。
下面是示例 JSON 输出,带有签名 ID:
{
"signature":[
"8e6582cead9ef92d7731e356b0131dca2dfe18d701bdaecb5591781af5493391127d10b4864cf45a0f56b10ed97af102864cff8205e14c8bf29b0e50d85f681801"
],
"txID":"ddcbaf061eaa2454975ae8faefbeb0b410329ef9e5bb43b64d4065a7d66720c7",
"raw_data":{
"contract":[
{
"parameter":{
"value":{
"resource":"ENERGY",
"frozen_duration":3,
"frozen_balance":1000000,
"owner_address":"41928c9af0651632157ef27a2cf17ca72c575a4d21"
},
"type_url":"type.googleapis.com/protocol.FreezeBalanceContract"
},
"type":"FreezeBalanceContract"
}
],
"ref_block_bytes":"ee08",
"ref_block_hash":"7b2480cc92edd8a2",
"expiration":1540253364000,
"timestamp":1540253304828
}
}- 广播事务:
/ wallet / broadcasttransactionAPI 调用接受一个参数,即签署事务的 JSON 输出数据。
下面是示例 JSON 输出,确认成功的事务广播。
{"result": true}Updated 9 months ago