事务交易

生成签名交易

可以使用Visionweb来完成此内容,关于Visionweb的使用,请参照:
Visionweb Github
Visionweb API docs

或者,您可以使用 API签名和广播流 来生成一个已签署的交易。

上面的文档中已给出使用API的完整流程,此处的以Visionweb为主,使用freezeBalance作为示例。

创建交易

创建一个未签名的,用于冻结资产的交易。
Visionweb冻结资产

签署交易

对创建的交易进行签名。
Visionweb 交易签名

❗️
不要在任何面向 Web /面向用户的应用程序中进行签名,这将暴露私钥。
使用在线签名的方案时,出于安全方面的考虑,请使用本地节点。

广播交易

对已签名的交易进行广播。
Visionweb 广播交易

📘
Visionweb中广播交易的方法是sendrawtransaction,没有broadcast关键词,详见源文件。

交易确认方法

VISION的区块确认的机制是某个区块产出后, 12个不同的FV基于这个区块产出后续区块后, 这个区块视为被确认。

一个交易是否被确认需要这个交易所在的区块被确认,VISION提供/walletsolidty/ 接口给用户更加方便的查询被确认的交易,下面是描述对不同类型的交易的确认方法。

transferContract 和 transferAssetContract能够通过/walletsolidity/gettransactioninfobyid或者/walletsolidity/gettransactionbyid查询到交易,即可确认。
TriggerSmartContract有两种判断方式:
1. 通过/walletsolidity/gettransactioninfobyid 接口查到transactionInfo.receipt.result=success (建议不要用transactionInfo.result去判断,因为对于http 接口,成功的交易默认不返回该字段)。

2. 通过/walletsolidity/gettransactionbyid 接口查到transaction.ret.contractRet =success
InternalTransaction通过/walletsolidity/gettransactioninfobyid查询,

1. HTTP 接口: 对于成功的交易,默认不返回 rejected 字段, 对于失败的交易,rejected=true。

2. GRPC 接口: 对于成功的交易,rejected=false(表示当前 internalTransaction 没有被舍弃), 对于失败的交易,rejected=true。

多类型交易

Vision Network中支持多种不同类型的交易:
protobuf文件
VISIONWEB.TRANSACTIONBUILDER
请阅读这些内容,了解更多细节。