# 交易接口

支持发送交易,包括转账、节点staking、节点注册、节点投票、节点领取奖励、调用合约等。

在发送交易前,请确保:

1.您已拥有一个链上账户。可通过getAccount查询此账户是否已经在链上创建。

2.获取链访问身份令牌,使用requestToken命令获取。

# 交易费用说明

在RPC API中,账户余额、交易保证金等TOP token单位为uTOP,1TOP=1*10^6 uTOP。

TOP Network链上发送交易会消耗一定的gas资源,如果账户余额大于等于100*10^6 uTOP,系统会免费赠与25,000 Tgas。

每笔交易都至少需要100,000 uTOP token作为交易保证金,否则交易将被丢弃。

在账户gas资源充足的情况下,交易保证金在交易成功后会立即退回到您的账户。如gas资源不足以支付交易费用,则需要从交易保证金中扣除一笔费用用来兑换gas资源以支付交易费用,扣除的TOP token将被销毁。

如交易保证金也不足以兑换足够的gas资源,那么交易最终将失败。

交易所消耗的资源详细信息请参见 资源模型

对于调用部署在Beacon系统合约的交易,系统还会自动从发送方账户里扣除100*10^6 uTOP token的服务费,并销毁。

需要扣除手续费的Beacon系统合约交易包括:

注册矿工、启动节点、更新矿工信息、增加矿工保证金、减少矿工保证金、修改矿工昵称、设置分红比例、更新矿工类型、赎回矿工保证金、注销矿工、发起提案、撤回提案、表决提案。

# 接口说明

请求方式

sendTransaction

请求参数

参数名称 是否必选 类型 说明
authorization String 交易体签名。采用ECDSA数字签名算法。具体请参见 交易签名
ext String 预留字段,空字符串。
last_tx_nonce Uint64 交易发送方上次交易的nonce,用于交易的排序和去重。
note String 交易备注。
premium_price Uint32 预留字段,为"0"。
receiver_action_name String 调用合约时,合约的函数名。系统合约函数请参见 系统智能合约 API。非合约交易时,默认为空。
receiver_action_param String 接收方执行内容。不同action type执行内容的序列化请参见 action param 序列化
receiver_account String 交易接受方账户地址。
send_timestamp Uint64 交易发送时间戳GMT。
sender_action_name String 预留字段,空字符串。
sender_action_param String 发送方执行内容。不同action type执行内容的序列化请参见 action param 序列化
sender_account String 交易发送方账户地址。
tx_deposit Uint32 交易保证金,最低为0.1*10^6 uTOP。
tx_expire_duration Uint16 交易到期时长,超过则被丢弃,默认100s。
tx_structure_version String 交易结构版本号。默认为"2",暂未使用。
tx_type Uint16 交易类型,不同的交易类型,action中action_param(执行内容)及action type(执行类型)不同。
xtransaction_type_run_contract = 3, // 调用智能合约
xtransaction_type_transfer = 4, // 转账
xtransaction_type_vote = 20, //投票
xtransaction_type_abolish_vote = 21, //取消投票
xtransaction_type_pledge_token_gas = 22, // 锁定TOP token兑换gas
xtransaction_type_redeem_token_gas = 23, // 解锁兑换gas锁定的TOP token
xtransaction_type_pledge_token_vote = 27, // 锁定TOP token兑换选票
xtransaction_type_redeem_token_vote = 28, // 解锁兑换选票锁定的TOP token

返回参数

参数名称 类型 说明
tx_hash String 本次交易hash,可用于查询交易结果。
tx_len Uint16 交易大小,交易消耗的gas和交易大小相关。

请求样例

以转账交易为例:

curl -X POST --data 'target_account_addr=T80000a62be6926c19321b644672975e028f875669fb53&body={"params": {"authorization": "0x019c01db8e4fd9cd79e7efdd89f238691345a272836ef2325dd251984028cde98f6f93cd98bda7bfe55fc0b8c5a9e6ab5b0c44342081e92f2b2dd08dfe6f072583", "tx_expire_duration": 100, "send_timestamp": 1638257801, "tx_deposit": 200000, "premium_price": 0, "tx_type": 4, "tx_structure_version": 2, "last_tx_nonce": 1, "ext": "", "note": "fix_account_by_god", "amount": 200300000, "token_name": "", "sender_account": "T80000a62be6926c19321b644672975e028f875669fb53", "sender_action_name": "", "sender_action_param": "", "receiver_account": "T800004978b1ad8b4ae8400cb787ad709b04b331a4a440", "receiver_action_name": "", "receiver_action_param": "", "edge_nodeid": ""}}&method=sendTransaction&sequence_id=4&identity_token=521d0ca2-4679-45ad-9a7f-c30be870bc72&version=1.0&signature=AQQKSIR7VIPLYTGC73IZIQZHHJNM2IOKO4HMMYKTKCNZDGHX5BAA'  http://localhost:19081

返回样例

  • 成功返回
{
	"errmsg": "ok",
	"errno": 0,
	"sequence_id": "2",
	"tx_hash": "0x34ca8f317107ce6b01c933b017f28e6cf0f84f2e31627a8349f167c1aa9ade10",
	"tx_len": 306
}
Please use command 'get transaction' to query transaction status later on!!!

TOP Network交易共识需要一定的时间,不会立刻返回交易共识结果,可通过get transaction查询交易详细信息查看交易共识最终结果。

  • 失败返回
{
	"errmsg": "ok",
	"errno": 0,
	"sequence_id": "3",
	"tips": "Please use command 'get transaction' to query transaction status later on!!!",
	"tx_hash": "0xc73f6295bc5b6be1ace273d59504f4c97d1b01cd2d3301c47cf042e28795e35b",
	"tx_len": 306
}

同样的,交易失败的情况下,也不会直接返回交易共识结果,需要通过get transaction查询交易详细信息查看交易共识最终结果。