交易模块
模块概述
在NULS2.0的生态体系中,交易会在链中或者链与链之间流转,各条链的节点不仅要处理链内的交易,可能还会处理跨链的交易,于是每个节点需要处理的交易会越来越多,并且更复杂,因此我们需要一个但单独的模块来统一处理各种交易。而从NULS2.0的架构设计来看,我们需要一个独立的模块来处理交易的收集、验证、为区块组装提供安全的交易数据、存储等功能,对于所有交易来说,这些功能具有共用性、统一性,因此我们把交易管理作为一个独立的模块来运行。
交易处理逻辑
- 收集交易
- 本地验证
- 广播转发交易给其他节点
- 提取可打包的交易
- 提交、回滚交易
- 保存未确认的、可打包的以及已确认的交易
- 提供交易的数据
接口列表
tx_register
注册模块交易/Register module transactions
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
moduleCode | string | 注册交易的模块code | 是 |
list | list | 待注册交易的数据 | 是 |
txType | int | 交易类型 | 是 |
systemTx | boolean | 是否是系统交易 | 是 |
unlockTx | boolean | 是否是解锁交易 | 是 |
verifySignature | boolean | 交易是否需要签名 | 是 |
verifyFee | boolean | 交易是否需要验证手续费 | 是 |
delList | list<integer> | 待移除已注册交易数据 | 否 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否注册成功 |
tx_getTx
根据hash获取交易, 先查未确认, 查不到再查已确认/Get transaction by tx hash
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHash | string | 待查询交易hash | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
tx | string | 获取到的交易的序列化数据的字符串 |
tx_newTx
接收本地新交易/receive a new transaction
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
tx | string | 交易序列化数据字符串 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
hash | string | 交易hash |
tx_batchVerify
验证区块所有交易/Verify all transactions in the block
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txList | list<string> | 待验证交易序列化数据字符串集合 | 是 |
blockHeader | string | 对应的区块头 | 是 |
preStateRoot | string | 前一个区块状态根 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否验证成功 |
contractList | list<string> | 智能合约新产生的交易 |
tx_rollback
回滚区块的交易/transaction rollback
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHashList | list<string> | 待回滚交易集合 | 是 |
blockHeader | string | 区块头 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
tx_cs_state
设置节点打包状态(由共识模块设置)/Set the node packaging state
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
packaging | boolean | 是否正在打包 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
N/A | void | 无特定返回值,没有错误即设置成功 |
tx_packableTxs
获取可打包的交易集/returns a list of packaged transactions
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
endTimestamp | long | 截止时间 | 是 |
maxTxDataSize | int | 交易集最大容量 | 是 |
blockTime | long | 本次出块区块时间 | 是 |
packingAddress | string | 当前出块地址 | 是 |
preStateRoot | string | 前一个区块的状态根 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
list | list<string> | 可打包交易集 |
stateRoot | string | 当前出块的状态根 |
packageHeight | long | 本次打包区块的高度 |
tx_backPackableTxs
共识模块把不能打包的交易还回来,重新加入待打包列表/back packaged transactions
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txList | list<string> | 交易序列化数据字符串集合 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
tx_save
保存新区块的交易/Save the confirmed transaction
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txList | list<string> | 待保存的交易集合 | 是 |
contractList | list<string> | 智能合约交易 | 是 |
blockHeader | string | 区块头 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
tx_gengsisSave
保存创世块的交易/Save the transactions of the Genesis block
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txList | list<string> | 待保存的交易集合 | 是 |
blockHeader | string | 区块头 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
tx_getSystemTypes
获取所有系统交易类型/Get system transaction types
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
list | list<integer> | 系统交易类型集合 |
tx_getConfirmedTx
根据hash获取已确认交易(只查已确认)/Get confirmed transaction by tx hash
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHash | string | 待查询交易hash | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
tx | string | 获取到的交易的序列化数据的字符串 |
tx_getBlockTxs
获取区块的完整交易,如果没有查询到,或者查询到的不是区块完整的交易数据,则返回空集合/Get block transactions
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHashList | list<string> | 待查询交易hash集合 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
txList | list<string> | 返回交易序列化数据字符串集合 |
tx_getBlockTxsExtend
根据hash列表,获取交易,先查未确认,再查已确认/Get transactions by hashs
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHashList | list<string> | 待查询交易hash集合 | 是 |
allHits | boolean | true:必须全部查到才返回数据,否则返回空list; false:查到几个返回几个 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
txList | list<string> | 返回交易序列化数据字符串集合 |
tx_getNonexistentUnconfirmedHashs
查询传入的交易hash中,不在未确认库中的交易hash/Get nonexistent unconfirmed transaction hashs
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHashList | list<string> | 待查询交易hash集合 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
txList | list<string> | 返回交易序列化数据字符串集合 |
tx_bl_state
设置节点区块同步状态(由区块模块设置)/Set the node block state
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
status | int | 是否进入等待, 不处理交易 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
N/A | void | 无特定返回值,没有错误即设置成功 |
tx_blockHeight
接收最新区块高度/Receive the latest block height
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
height | long | 区块高度 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | boolean | 是否成功 |
tx_getTxClient
根据hash获取交易,先查未确认,查不到再查已确认/Get transaction by tx hash
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHash | string | 待查询交易hash | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
tx | string | 获取到的交易的序列化数据的字符串 |
height | string | 获取到的交易的确认高度,未确认交易高度为-1 |
status | string | 获取到的交易是否确认的状态 |
tx_verifyTx
验证交易接口,包括含基础验证、验证器、账本验证/Verify transation
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
tx | string | 待验证交易完整字符串 | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
value | string | 交易hash |
transferCMDTest
scope:public
version:1.0
参数列表
无参数
返回值
无返回值
tx_getConfirmedTxClient
根据hash获取已确认交易(只查已确认)/Get confirmed transaction by tx hash
scope:public
version:1.0
参数列表
参数名 | 参数类型 | 参数描述 | 是否非空 |
chainId | int | 链id | 是 |
txHash | string | 待查询交易hash | 是 |
返回值
字段名 | 字段类型 | 参数描述 |
tx | string | 获取到的交易的序列化数据的字符串 |
height | string | 获取到的交易的确认高度 |
status | string | 获取到的交易是否确认的状态 |
Last Updated: 2019/9/3 下午4:38:35