火星链 火星链
Ctrl+D收藏火星链

以太坊:理解以太坊上的事件日志

作者:

时间:1900/1/1 0:00:00

译文出自:登链翻译计划

译者:Tiny熊

序言:先阅读一下以太坊虚拟机,可能会有所帮助,在本文中,我会跳过基础知识直接研究。

在传统编程中,应用程序经常使用日志来捕获和描述特定时刻的情况。这些日志通常用于调试应用程序,检测特定事件或将日志中发生的事情通知查看者。事实证明,在编写智能合约或与智能合约进行交互时,日志也非常有用!那么以太坊是如何做的呢?

以太坊上的日志

EVM当前有5个操作码用于触发事件日志:LOG0,LOG1_,LOG2,_LOG3和LOG4。

这些操作码可用于创建“日志记录”。日志记录就是用于描述智能合约中的事件,例如代币转移、所有权变更等。

以太坊黄皮书-拜占庭版本69351d5(2018-12-10)

每个日志记录都包含“主题(topics)”和“数据”。主题是32字节(256位)的“词”,用于描述事件中发生的事情。不同的操作码(LOG0…LOG4)来描述需要包含在日志记录中的主题数。例如,“LOG1”包括“一个主题”,而“LOG4”包括“四个主题”。因此,单个日志记录中可以包含的最大主题数是四个。

加密社区回应查理·芒格抨击加密货币:在他这个年龄无法理解新技术并不奇怪:12月3日消息,亿万富翁投资者查理·芒格 (Charlie Munger) 周五在Sohn Hearts and Minds会议上发表讲话,强调了他对加密货币的普遍厌恶及其在市场上造成的淘金热。他永远不会参与这个市场,并希望加密货币没有被发明。他表示赞同中国的加密禁令,认为这做出了正确的决定。

加密社区的许多人随后对芒格对比特币的最新评论做出了反应,许多人指出,在他这个年龄无法理解像比特币这样的新技术并不奇怪。Synthetix创始人Kain Warwick还强调,尽管芒格愿意通过卖好东西赚钱,但伯克希尔哈撒韦公司是可口可乐的最大股东,可口可乐被认为是“许多健康问题的重要贡献者”。加密和区块链播客系列The Crypto Corner的项目总监Jamil Hasan指出,芒格不投资加密不应该让这个行业感到困扰:“如果查理芒格不购买加密,我没关系。我敢肯定,查理也买了一些我不需要的东西。”(Cointelegraph)[2021/12/3 12:49:39]

以太坊日志记录中的主题

声音 | 瑞士加密货币银行SEBA高管:需要一个加密银行让人们理解区块链在银行部门的用例:据消息,瑞士加密货币银行SEBA托管存储和交易银行业务负责人Phil Dettwiler表示,比特币确实是一个投资机会,鉴于其估值不断上升,他强调了比特币作为价值储存工具的资格。而Dettwiler被问及为什么在使用比特币不需要银行的情况下甚至需要加密银行时,他表示,需要一个加密银行来让人们理解区块链在银行部门的用例。Phil Dettwiler说:“纯粹的比特币最大化主义者可能永远不会进入一家银行,但看看区块链的三难困境:分散、可扩展性和安全性……我确实认为,为了增加安全,我正在减少一些权力下放,这是值得的,特别是在带来便利的同时。”[2020/2/15]

日志记录的第一部分由一组主题组成。这些主题用于描述事件。第一个主题通常为事件名称及其参数类型(uint256,string等)签名(keccak256哈希)。一个例外是触发“匿名事件”没有事件签名。由于主题只能容纳32个字节的数据,因此无法将数组或字符串等的内容用作主题。而是应将其作为数据包括在日志记录中,而不是作为主题。如果要尝试包含大于32个字节的主题,则该主题需要被hash计算。因此,仅当你知道原始输入时,才可以知道此哈希表示的内容。

声音 | 朱嘉明:必须重新理解货币体系、金融秩序、资本规则和商业模式的关系:在数字资产研究院与OK联合主办的《Libra:一场牵动全球的智慧、技术、经济、、权力的全方位博弈》线下研讨会上,朱嘉明教授发表《Facebook数字货币在全息货币经济体系中的位置》的主题演讲。

朱嘉明认为,Facebook数字货币迫使我们必须重新思考和理解货币体系、金融秩序、资本规则和商业模式的关系。[2019/6/20]

总之,主题应该仅用于需要搜索查询(例如:地址)的数据。可以将主题视为事件的索引键,它们都映射到相同的值,接下来将讨论。

以太坊日志记录中的数据

日志记录的第二部分包含额外的数据。主题和数据在一起组成日志记录,主题和数据每自有其优点和缺点。例如,主题是可搜索的,但数据却不能。而数据比主题“便宜得多”。此外,尽管主题最多有4个,但数据却没有限制,这意味着它可以包括大量或复杂数据,例如数组或字符串。因此,事件数据(如果有)可以视为_值_。

让我们看一些示例,看看主题,数据和日志记录是如何使用的。

触发事件

德国柯莱特咨询集团推出区块链医疗信息管理解决方案:据cointelegraph报道称,德国柯莱特咨询集团宣布推出基于区块链技术的敏感医疗数据管理解决方案。利用该集团的Hypertrust X-Chain数据管理系统,柯莱特咨询集团希望为整个医疗行业提供一个安全的数字平台,便于交换患者数据。基于区块链技术的去中心化数据存储,该系统能够让所有参与治理过程的各方在授权的条件下获得患者信息。[2018/4/11]

以下实现了ERC20的代币合约,使用了Transfer事件:

由于这不是匿名事件,因此第一个主题将包括事件签名:

现在,让我们看一下此Solidity事件的参数(from_,to,_value):

由于前两个参数声明为indexed,因此被视为主题。最后一个参数没有indexed,它将作为数据(而不是单独的主题)。这意味着我们可以进行这样的搜索:查找所有从地址0x0000...到地址0x0000…的转账日志,或者是“所有转账到地址0x0000…的日志”,但没法搜索“转账金额为x的转账。我们知道了此事件将具有3个主题,这意味着此日志记录操作将使用LOG3操作码。

“艾伦秀”主持人艾伦?德格内雷斯:不理解比特币就把它看做是只山羊:艾伦?德格内雷斯(Ellen Degeneres)是美国著名娱乐节目“艾伦秀”的主持人,最近她发表了对于比特币的评论,并且把它比做成是“山羊”。艾伦把比特币的数字特性比作是“一只可爱的山羊”,换句话说,它只存在于互联网上,而无法完全传达对数字货币的深刻理解。不过,艾伦还是做了一些解释,她认为比特币运作有点像股市,而且人们可以把比特币存储在线上或线下的数字钱包中。由于最近市场波动,比特币价格已经从去年十二月的近2万美元,下跌到了约7000美元。对于艾伦来说,她认为比特币就像是个“数字古董巡演”,可以让你成为百万富翁,也会让你彻底破产。[2018/2/17]

现在,我们只需要了解如何包含数据(即最后的参数)即可。LOG3需要5个参数:

LOG3(memoryStart,memoryLength,topic1,topic2,topic3)

通过以下方式从内存中读取事件数据:

memory

幸运的是,像Solidity,Vyper或Bamboo这样的高级智能合约程序设计语言将为我们处理将事件数据写入内存的过程,我们可以在触发日志时直接将数据作为参数传递。

检索事件日志

通过使用web3JavaScript库,可用于与本地或远程以太坊节点进行交互,我们能够订阅新的事件日志:

每当发生新的SAI代币转账时,此代码都会通知我们,接收到事件通知,这对很多应用程序都很有用。例如,一旦你在以太坊地址上收到代币,钱包界面就可以提醒你。

日志的gas成本

根据黄皮书、日志的基础成本是375gas。另外每个的主题需要额外支付375gas的费用。最后,每个字节的数据需要8个gas。

这实际上是很便宜!可以计算一下一个ERC-20代币转移事件的成本。首先,基本成本为375gas。其次,“转移”事件包含3个主题,这是另外的375_3=1125gas。最后,我们为所包含的每个数据字节添加8gas。由于数据仅包含ERC-20转账的数量,最大为32字节,因此用于记录日志数据所需的最大gas量为8_32=256gas。这总计要花费1756gas的总gas成本。作为对比参考,标准的以太币(非代币)转账要花费21000gas,是事件成本的十倍以上了!

如果我们假设gas价格为1gwei,那么操作的总成本将为1756gwei,相当于0.000001756ETH。如果以太坊的当前价格在200美元左右,那么总计为$0.0003512。请记住,这是在全球范围内将数据永久存储的费用。

声明:这只是日志记录操作本身的成本。任何以太坊交易至少需要21000gas,并且交易的输入数据每字节最多花费16gas。通常,要转账和日志记录ERC-20代币,费用在40,000–60,000gas。

结论

日志是一种以少量价格将少量数据存储在以太坊区块链上的优雅方法。具体来说,事件日志有助于让其他人知道发生了什么事情,而无需他们单独查询合约。

参考文献

Wood,G.(2014)。以太坊:一个安全的去中心化通用交易账本

以太坊基金会Solidity文档

Web3文档

本翻译由CellNetwork赞助支持。

来源:https://medium.com/mycrypto/understanding-event-logs-on-the-ethereum-blockchain-f4ae7ba50378

参考资料

登链翻译计划:https://github.com/lbc-team/Pioneer

Tiny熊:https://learnblockchain.cn/people/15

以太坊虚拟机:https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e

以太坊黄皮书:https://ethereum.github.io/yellowpaper/paper.pdf

keccak256:https://en.wikipedia.org/wiki/SHA-3

Solidity:https://learnblockchain.cn/docs/solidity/

Vyper:https://github.com/ethereum/vyper

Bamboo:https://github.com/cornellblockchain/bamboo

web3:https://learnblockchain.cn/docs/web3.js/

Wood,G.(2014)。以太坊:一个安全的去中心化通用交易账本:https://ethereum.github.io/yellowpaper/paper.pdf

以太坊基金会Solidity文档:https://solidity.readthedocs.io/en/latest/

Web3文档:https://learnblockchain.cn/docs/web3.js/

CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/9558537.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

币安为何推出第三条链?这对BNB意味着什么?

标签:以太坊GASHTTTPS以太坊交易所排名GASGCHTTtps币圈

芝麻开门交易所热门资讯
ITA:Vitalik Buterin:解析 PoS 与 PoW 机制安全性优劣

总体而言PoS系统仍然利大于弊:更高的效率、应对攻击并从攻击中复原的能力更强。原文标题:《Vitalik:权益证明vs.工作量证明(2020年11月)》撰文:VitalikButerin,以太坊.

1900/1/1 0:00:00
LANA:浅谈fileocin/Fil币价不涨不跌,这是为什么?——UNI

这里是IPFS资讯快车,想进filecoin技术交流群的以及与圈内大佬深入沟通,或者了解更多FIL资讯,深入了解FIL的(+V:FIL101).

1900/1/1 0:00:00
ETH:在以太坊上部署智能合约和管理交易

要在以太坊上构建去中心化应用,你需要知道如何发送交易、签名并广播到网络。通过交易可以转移以太币、部署自己的合约以及与其他智能合约交互.

1900/1/1 0:00:00
DAPP:以太坊 2.0 正在进行中,而 DeFi 领域也涌现出了更多麻烦

12月到了,很多人对2020年的即将结束和2021年的开始而兴奋不已。这一周从以太坊2.0发布到治理NFT.

1900/1/1 0:00:00
ITA:Vitalik Buterin:论区块链验证去中心化与效率权衡

区块链如何在避免过度中心化的同时保障验证效率?原文标题:《VitalikButerin:区块链验证的哲学》撰文:VitalikButerin,以太坊联合创始人编译:洒脱喜区块链最强大的特性之一.

1900/1/1 0:00:00
CHA:Chainlink 的劲敌?Pantera 合伙人解读 API3 运作机制

API3使第三方服务能够运行自己的预言机,区块链应用能去中心化方式与第三方服务实现互操作性。撰文:PaulVeradittakit,PanteraCapital合伙人近期PanteraCapit.

1900/1/1 0:00:00