Show / Hide Table of Contents
构造交易
RpcClient
封装了交易构造模块,通过该模块可以使用特定的参数和方法构造 Neo N3 中的交易,完成个性化的功能,本篇主要介绍这部分的使用方法。
如果使用SDK构造要添加签名的交易,需要确保构造的RpcClient对象和其连接的区块链网络有相同的配置,否则 SDK 构造的交易在区块链中将无法验签通过,具体做法是:构造RpcClient对象时Load Neo-CLI 节点的 config.json,例如: RpcClient client = new RpcClient(new Uri(" http://localhost:20332"), null, null, ProtocolSettings.Load("config.json" )) 。
交易构造步骤
-
构造交易脚本,决定交易要执行什么样的功能,比如转账交易:
-
构造 TransactionManagerFactory
,将 RpcClient
作为参数; 构造 TransactionManager
, 将 Script
和 Signers
作为参数。
-
添加签名(单签或者多签),将账户的 KeyPair
作为签名的参数;并且签名。
-
校验签名,并将 Witness
添加至交易体。
如果签名数量不够或手续费不够会引发异常。
交易构造示例
构造 NEP17 转账交易
下面的示例实现了从sender账户转账1024个NEO到receiver账户的功能。构建不同交易时需要关注交易中脚本和所需签名的不同。
WalletAPI
封装了上面的过程,NEP17 转账可以简化为:
构造交易向多签账户转账
下面的示例实现了向多签账户转账 10 个 GAS 的功能。多签账户的 scripthash 由多签合约脚本的 hash 得来。因为发送方为普通账户,添加签名的过程与上一个示例没有区别。
构造交易从多签账户转账
下面的示例实现了从多签账户转出1024个GAS的功能。多签账户的scripthash由多签合约脚本的hash得来。因为需要从多签账户转账,添加签名时要根据多签合约要求的签名数量添加。