Open zyd82 opened 3 years ago
看样上次讨论,我理解错了,我以为是两个IssueCoin交易,在一起sign, 一起sendRaw, 那个如果有问题是bug, 可是当前提出的问题,倒不是bug, 原因如下
因为我们发送交易(jt_sendTransaction)包括签署(jt_signTransaction), 需要填写sequence, 现在基本上都不填,实际上是节点自动获得发送帐户的sequence帮填进去了,而且如果一次发送中某个发送帐户有多条发送的话,sequence会自动+1,以保证发送成功,但是这种情况不适用多次调用的情形
上边贴子里边两次调用的结果是一样的,我特意比较了下,是一样的,因为sequence一样,其他参数也一样,所以这是一个一样的交易,所以在一起发到jt_sendRawTransaction的时候,第一个会成功,第二个会报错(因为已经发送过了)
建议的使用方式是,都在jt_signTransaction中签署,生成两个transactionBlob, 然后再使用jt_sendRawTransaction一起发送,这样就都会成功了
另外一个原因,也是因为jt_signTransaction只是一个本地调用(虽然调用的是节点的服务),不会影响节点的验证交易及处理交易的状态,所以,多次sign都是无状态调用
@caivega 也就是说用jt_signTransaction一个一个签署同一账户的交易,再用jt_sendRawTransaction一次性发送所有transactionBlob,这种操作是不支持的,对吧? 正确的做法应该是用jt_signTransaction一次性签署多个交易参数组,再用jt_sendRawTransaction一次性发送所有transactionBlob,这样子才行,对吧?
版本:v0.5.3-dev-20201220-1ca4d11e354ca988b4087eb9275355b4ec105d0c 测试用例:jt_sendTransaction_002000
1、用jt_signTransaction签名一个100个底层币的交易,获得如下签名交易
2、再用jt_signTransaction签名一个200个底层币的交易,获得如下签名交易
3、用jt_sendRawTransaction同时发送这两个签名交易,返回2个交易哈希
4、2个交易哈希中只有一个能查询到交易信息,另外一个查不到交易。2个交易哈希的查询结果如下
5、通过观察交易接收钱包的余额,也可以看到只有一个交易是成功了