Appchain web3和Ethereum Web3 接口不兼容


#1

web3.appchain.getTransaction和web3.getTransaction返回结果完全不兼容。

Appchain的返回结果是:
{“hash”:“0x776d12405e4f43b8964d8a9e5a8beba8a3e0fba330d573686979388274ca5869”,“content”:“0x0a540a286165323538613437623562323865636466303666663431373830653763383133326166363232633418c0843d205c32200000000000000000000000000000000000000000000000000000000000065536380112416cd723f5ca8e9a4ede52c2dfe90729e2e757492ec4d5bc2fc80f99837880006f4f4abaf4ee2178d691068c4c845a7060bf97312fd8ffaecf74f34262cbf385ba01”,“blockNumber”:“0x6”,“blockHash”:“0x694e182eb875c3f61c65aaf06779f64ca3bcc02cae2bf6194c2e2d946bace75e”,“index”:“0x0”}

但是web3.js的官方文档是:
web3.eth.getTransaction(‘0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b§234’)
.then(console.log);

{
“hash”: “0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b”,
“nonce”: 2,
“blockHash”: “0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46”,
“blockNumber”: 3,
“transactionIndex”: 0,
“from”: “0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b”,
“to”: “0x6295ee1b4f6dd65047762f924ecd367c17eabf8f”,
“value”: ‘123450000000000000’,
“gas”: 314159,
“gasPrice”: ‘2000000000000’,
“input”: “0x57cb2fc4”
}


#2

@keith 这个能尽快修改一下吗?


#3

这不是 bug 啊,我们并不是一定会跟以太坊 100% 兼容。这块可能需要应用层适配一下。


#4

我的意思是,能不能把content的内容解析出来后返回,而不是说结果和以太坊的保持一致


#5

我们讨论下, 如果决定做的话下午可以发个版本


#6

我用web3.utils.hexToAscii解析content的十六进制字符串,出来是乱码啊!需要啥特殊处理吗?


#7

解析 content 需要使用 nervos.base.unsigner(tx.content), 如果是0.19版本之前的 sdk, 则是 nervos.appchain.unsigner 方法


#8

多谢。需要把signer库加入进来。
const signer = require("@nervos/signer");
signer.unsigned("content hex string)


#9

@keith 保持现在这样子吧!类似timestamp的信息 transaction是没有的