月亮链 月亮链
Ctrl+D收藏月亮链
首页 > BNB > 正文

区块链:理解以太坊上的事件日志_以太坊

作者:

时间: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”包括“四个主题”。因此,单个日志记录中可以包含的最大主题数是四个。

BlockVC创始人徐英凯:新金融可以从资产创新、技术创新和模式创新三部分来理解:金色财经现场报道,8月6日“2020 Cointelegraph中文大湾区·国际区块链周”在深圳举行。BlockVC创始人徐英凯在“新金融,新生态,新格局”圆桌论坛上表示,新金融可以从资产创新、技术创新、模式创新三部分来理解。资产创新方面,数字资产本身就是信息金融资产,本身是商品,有些也被当做具有使用权的货币来使用,这就创造了新型资产;技术创新则是区块链与互联网的结合,尤其是移动终端的普遍,移动化与DeFi的结合,会使得新金融有更大的发展;模式创新部分,传统金融的银行保险通过与数字经济结合,会出现不少金融产品,不管是供应链还是保险资产,以后会有越来越多的基于区块链的新型金融模式出现。[2020/8/6]

以太坊日志记录中的主题

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

动态 | 韩国吉尔医疗中心医院将创建一个基于区块链的健康数据管理解决方案:据cointelegraph报道,区块链驱动的医疗数据市场Longenesis和生物技术公司insilicon Medicine已与韩国吉尔医疗中心医院(hospital Gil medical Center)达成协议,将创建一个基于区块链的健康数据管理解决方案。作为合作的一部分,双方打算开发一个基于Bitfury的Exonum区块链框架的区块链驱动平台,以提高数据收集的效率,促进医学研究进程,并确保患者同意的透明管理。[2019/4/24]

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

以太坊日志记录中的数据

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

声音 | 赵余:“彩虹表攻击”可以简单理解为“字典攻击”:EOS LaoMao 的赵余在《宁话区块链》之全球EOS节点答疑的节目中称 “前两天发生的’彩虹表攻击’,是由于有些开发者通过设计的自定义助记词功能不完善。既没有过滤空字符串,也没有强制用户设置足够长的助记词。导致黑客可以通过简单的穷举,就能拿到部分账户的私钥。EOS 彩虹表攻击始末:EOS 官方库 eosjs-ecc(https://github.com/EOSIO/eosjs-ecc) 提供了一个自定义助记词生成密钥的接口。有些开发者使用这个接口,做了一个用户可以自定义助记词的密钥生成工具。但是由于产品设计问题,具体问题是下面两个:1. 没有过滤空字符串;2. 没有强制要求用户自己填写的助记词的长度必须达到足够安全的长度(比如 12 个独立的单词作为助记词,就可以认为安全性很高了)。导致部分用户,使用了简单的字母或单词作为助记词生成了自己的私钥。比如 a, b, c, hello, world 等等。这就导致黑客可以轻而易举地“穷举”常见的单词,字母,以及单词组合,进而拿到用户私钥,最终转移用户资产。这个“穷举”的方法,一般也被称为“彩虹表”攻击。对于使用自定义助记词功能生成私钥的用户,建议自查助记词长度,确保助记词长度不少于 12 个单词。”[2018/7/17]

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

中纪委机关报谈区块链发展:如何让监管理解并适度监管是挑战:今日东方财富网发文称,在今年的全国两会上,“区块链”成为一些代表委员热议的话题,近日中纪委机关报谈到区块链发展时,认为:如何让监管理解并适度监管是挑战。[2018/3/6]

触发事件

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

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

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

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

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

中国纪检监察报:中国区块链发展的最大挑战是“如何让监管理解区块链并适度监管”: 中国纪检监察报发文表示,区块链底层技术获得实质性突破之前的这个阶段,恰恰是一个战略机遇期。如果中国区块链行业能紧密合作,监管能够适当包容、鼓励,中国在区块链领域引领全球指日可待。实际上,区块链技术最终必然演化为“监管融入技术”的模式,区块链的难以篡改、共享账本和分布式的特性,更易于监管介入,获得更加全面实时的监管数据。让监管机构本身也参与到技术中去,通过技术本身实现对技术的监管,最终化解区块链与监管的冲突。[2018/3/6]

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意味着什么?

标签:区块链以太坊GASHTT区块链专业是什么意思near币是下一个以太坊吗ugas币什么时候爆发htt币被

BNB热门资讯
ETH:简述 ETH 与 ETH 2.0 挖矿基础信息与特征_HER

以太坊2.0的分片与过渡会分阶段进行,期间以太坊1.0的PoW挖矿产业还会继续。原文标题:《一文读懂ETH与ETH2.0基础与挖矿特点》撰文:Future小哥哥ETH是Ethereum网络的原生.

1900/1/1 0:00:00
APP:App Annie:新冠肺炎疫情已永久改变移动消费行为(附下载地址)_区块链dapp开发pdf

目前100000人已关注加入我们扫一扫下载全网最新数据报告查看完整报告请阅读全文查看完整报告请阅读全文以上资料均从网络公开资料收集整理而成.

1900/1/1 0:00:00
区块链:被低估的预言机:数据要素到底有多大能量?_WEB3.0

Web3.0很好地承接了区块链技术下一步的方向问题,但是这几年Web3.0还处在一个非常早期的“打地基”阶段,然后我们去除各个时期热点的影响.

1900/1/1 0:00:00
比特币:比特币历史性突破「偷袭」成功,机构散户「全军覆没」 | CFTC COT 比特币持仓周报_波场币和比特币的区别在哪里

撰文:712月19日,CFTC公布了最新一期的CME比特币期货周报,本期周报的统计周期结束节点恰好止于比特币正式完成历史性的20000美元整数关口突破的前夕.

1900/1/1 0:00:00
数字资产:冒志鸿:美国证券交易委员会最新指引是否为应用通证创新开启绿灯?_arcblock

美国证券交易委员会上周发布了《数字资产投资合同分析框架》以及针对一家商务旅行初创公司发行通证出具的首份无异议函。一言以蔽之,《框架》将判断证券的「豪威测试」原则应用于数字资产进行定性分析.

1900/1/1 0:00:00
FIL:深度解析Filecoin挖矿质押机制,质押到底是好是坏?_EUROe Stablecoin

1、Filecoin的质押机制介绍Filecoin矿机咨询微.信Filecoin有三种不同的质押机制:前置质押、后置质押、市场质押.

1900/1/1 0:00:00