首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web3j从TransactionReceipt解码函数

Web3j从TransactionReceipt解码函数
EN

Ethereum用户
提问于 2018-05-28 13:31:55
回答 1查看 931关注 0票数 2

我正在使用运行版本1.8.8-稳定的Geth节点连接到testnet,还使用了web3j库3.4.0版本。

我部署了一个智能契约,并使用web3j包装工具与契约进行交互,一切看起来都正常。

我想要做的是从新开采的区块中解码信息。也就是说,我订阅并可以从新挖掘的块中检索所有事务。

我知道交易与我的智能合同有关,因为智能合同中的"to“地址是相同的。但是,我如何才能识别被调用的函数呢?

对不起我的英语,我希望有人能帮我。这里是我从事务散列中检索的事务收据的一个示例。有什么方法可以理解所谓的智能合同的功能吗?

代码语言:javascript
复制
TransactionReceipt{ 

transactionHash='0x6583a913786bc0010937806c4a97e8fcac673b1cd9e25c79074df76ae235f4f5',

transactionIndex='0x0',

blockHash='0x624ed9afc8a45c0b79a1c471fe732d00b813cc476f264e9ada0d3a15a7cf6198'

blockNumber='0x5e4cf' 

cumulativeGasUsed='0x9495', 

gasUsed='0x9495', 

contractAddress='null', 

root='0x3a175640d6654236151ffc9f9afbd9087a656b2b46ead9df5587725a77d3bd7a',

status='null', 

from='0x145107ef476743eaabf8df07cefd47b17d87506c',

to='0x70104c2d70145d745ee9308e0ee428e1d96e6142', 

logs=[Log{removed=false, logIndex='0x0', transactionIndex='0x0', transactionHash='0x6583a913786bc0010937806c4a97e8fcac673b1cd9e25c79074df76ae235f4f5', blockHash='0x624ed9afc8a45c0b79a1c471fe732d00b813cc476f264e9ada0d3a15a7cf6198', blockNumber='0x5e4cf', address='0x70104c2d70145d745ee9308e0ee428e1d96e6142', data='0x0000000000000000000000000000000000000000000000000000000000000064', type='null', topics=[0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000145107ef476743eaabf8df07cefd47b17d87506c, 0x00000000000000000000000061259ec0cfc824e41b5ca2cc64f6453476b165b4]}],

logsBloom='0x00000000000008000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000040000000000080020000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000'
}
EN

回答 1

Ethereum用户

发布于 2018-05-28 15:17:54

事件可以从智能契约函数中发出。事件提供EVM日志记录功能。在您的契约中调用一个函数时,您可以发出这样的事件,在Web3j中,您可以订阅或侦听这些事件,这样您就可以准确地知道调用了哪个函数。

您可能需要更改智能契约代码,以在所需函数中添加事件。

举个例子:

坚固性

代码语言:javascript
复制
event DoThis();
function doSomething() public returns (bool){
   emit DoThis();
   return true;
}

Web3j

代码语言:javascript
复制
contractInstance.DoThisEventObservable(null, DefaultBlockParameterName.LATEST).subscribe(response -> {
            // TODO : your task
            System.out.println("response.log = " + response.log);
        });
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/49737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档