以太坊中比mapping更便宜的存储方案:事件日志?

以太坊中比mapping更便宜的存储方案:事件日志?

logs.jpg

在我的前一篇文章中《以太坊 + IPFS 数据存储可行方案》 提到以太坊中以mapping存储的方式,为了节约gas,可以先将内容存在IPFS上,再存入mapping中。但今天看到一篇文章《智能合约事件应该这么用!》 有提到:mapping存储并不是最优方案,合约事件才是!

1
2
3
4
5
6
7
8
9
pragma solidity ^0.5.10;

contract DocumentRegistry {
event Registered(uint256 hash, address sender);

function register(uint256 hash) public {
emit Registered(hash, msg.sender);
}
}

看了一下案例,大体明白它的意思。就是说:任何触发的事件其实已经存入区块链了! 如果你只是想把数据存入区块链中,用事件的方式就可以解决,而无需用mapping存储!这样可以更节约gas! 具体对比数据:日志每个字节花费8个Gas,而合约存储(mapping)是每32个字节20,000个Gas!

嗯,但是又有新的问题:如何遍历读取事件日志呢?因为在合约中是没有办法读取到的,只能遍历区块去获取?what,这又是什么鬼?好吧,文章只是讲了前半段,至于如何读取区块是什么也没谈啊。我只能留着这个大问号去google!

问题解决留待下回分解!


This page is synchronized from the post: ‘以太坊中比mapping更便宜的存储方案:事件日志?’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×