# 交易模块

# 模块概述

在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 16:38:35