Solidity事件对于智能合约开发者来说是不可或缺的,它允许我们对智能合约中特定变量进行测试,以自动化的方式改变前端等。总的来说,知道如何在Solidity中使用事件可以使智能合约的开发变得更加容易。
在本文,我们将从智能合约开发者的角度来研究以太坊虚拟机的日志和事件功能,包括日志和事件的用途,索引事件,以及如何在Hardhat和Brownie中使用日志和事件。
EVM是以太坊和许多其他区块链的核心。EVM有一个日志功能,用于将数据“写”到智能合约之外的数据结构中。其中一个重要的数据是Solidity事件。事件允许我们“打印”在区块链上的信息,这种方式比在智能合约中保存到公共存储变量更容易搜索,且更省gas费。
日志是区块链上的一种特殊数据结构。它们不能被智能合约访问,但能提供关于交易和区块中发生的信息。正是因为它们不能被智能合约访问,才使得它们的使用成本更低。
Solana Labs联合创始人:PoW受算力的控制比PoS受权益的控制更多:金色财经报道,Solana Labs联合创始人Anatoly Yakovenko在社交媒体表示,PoW受算力的控制比PoS受权益的控制更多。在PoS机制中,任何人都可以在任何时候否决任何决定,并在不损失状态的情况下自行分叉,并以最小的硬件成本实现与母链类似的安全水平。而在PoW机制中,创建一个具有类似安全性的分叉成本与母链的成本相等。因此,少数用户无法拥有否决权。[2022/9/22 7:15:01]
你也可以观看下面的关于Solidity中的事件和日志的视频:
https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0
那么,什么是事件呢?
事件允许我们轻松查询在区块和交易中发生的“东西”。如果你运行一个区块链节点,你可以通过订阅它们来“监听”到某些事件。事实上,这就是Chainlink网络的工作方式。Chainlink网络在某些地址订阅某些事件,并根据发出的事件内容,从现实世界返回数据。
Solana生态自动化网络Clockwork完成400万美元融资:8月30日消息,据外媒报道,Solana生态去中心化自动化网络Clockwork完成400万美元种子轮融资,Multicoin Capital和Asymmetric领投,参投方包括Solana Ventures和ElCap Ventures。本轮融资将用于扩大团队、建立社区和支持与合作伙伴项目的集成。
Clockwork的创始人兼首席执行官NickGarfield在表示,Clockwork可以使开发人员能够使用Solana验证器网络安排重复性任务并自动化链上工作流程。(TheBlock)[2022/8/31 12:58:45]
事件能用来做什么?
现在,如果你不是Chainlink或Ethereum节点运营商,你可能会问事件对你有什么影响呢。通过Solidity事件,你可以做:
测试你的智能合约中的特定变量;
索引变量以重建存储状态;
基于 Solana 的宇宙项目 Solice 将于3月底开启首波土地销售:3月24日消息,基于 Solana 的宇宙项目 Solice 近日宣布将于本月底(3月最后一周)开启第一波土地销售。Solice 元宇宙总共将有 60000 块土地待售,有 1x1、3x3、6x6、9x9 和 12x12 等各种尺寸。 所有不同规格的土地将对所有个人和机构投资者等各方开放,但选定合作伙伴仅适用12x12 规格的土地。第一波计划销售1200 个地块(2765 个土地)。
与此同时,Solice 推出了市场, 第一波土地销售将在 Solice 市场开启。该市场将使用户能够买卖 Solice 发布的所有官方 NFT,市场流动代币为 $SLC 。去年12月,Solice 完成由三箭资本领投的430万美元融资。[2022/3/24 14:15:48]
监听事件用于改变前端状态;
创建子图以更快地读取数据;
还可以完成其他许多事情。对工程师来说,事件有各种各样的用例。事实上,事件是Chainlink节点运作的核心组成部分。Chainlink节点会监听数据请求和外部计算事件,这正是是他们知道如何响应的根源。
SOL上线火币最高上涨41.9%:火币全球站行情显示,火币已于12月3日20:00开放SOL (Solana) 交易,截至20:30,SOL最高涨至2.3456 USDT,最高上涨41.9%,现价约2.1654 USDT,涨幅为31%。
火币还开启了“首周充值、首周交易、锁仓ETH/BETH,三重赚币SOL活动”。活动共计奖励10.8万SOL(价值约23万美元)。12月3日至12月10日上线首周,从外部地址向平台成功充值S的用户,将按照净充值数量瓜分总计2.5万 SOL代币奖励;在火币参与SOL现货交易的用户,将按照交易量排名,参与用户瓜分2万SOL 的奖励。[2020/12/3 23:01:24]
事件是什么样子的?
下面的数据结构就是在Solidity中定义一个事件的方式:
BitMax上线Insolar Staking预体验:据官方消息,BitMax交易所已于北京时间2020年7月2日22:00开启Insolar(XNS)Staking预体验。BitMax用户可提前体验XNS代币的Staking存币生息。BitMax Staking业务的主要特点包括支持快速解质押、质押资产参与杠杆交易等。更多详情请至BTMX官网查询。[2020/7/3]
你可以把事件看作是一个新的特殊类型。我们已经创建了一个名为storedNumber的事件“类型”。事件的名字叫storedNumber,可以容纳一些变量。在这个事件中,有两种参数:有索引的和无索引的。索引参数也被称为“主题”,是事件中的可搜索参数。我们会在后文更多地谈及这些内容。
然后我们可以像下面这样发出一个事件:
下面是一个完整的合约实例:
现在,只要我们调用这个例子中的store函数,它就会发出一个storedNumber类型的事件。让我们看看一个调用store函数、输入为1的示例交易。我们可以在KovanEtherscan上看到这个事务。
滚动到交易的“日志”部分,我们可以看到以下内容:
一个事件可以分解为:
Address:地址,发出事件的合约或账户的地址。
Topics:主题,事件的索引参数。
Data:数据,事件的非索引参数的ABI编码或“哈希”。由于我们知道合约的ABI,我们可以在“Dec”或“Decoded”模式下查看它,或者在其原始的“hex”、“Hexidecimal”或“Encoded”模式下查看。如果我们没有验证过合约,我们就无法看到解码的版本。
你可以在Solidity文档中阅读更多关于事件的内容。“日志”和“事件”经常被互换使用,因为作为智能合约的开发者,我们通常只关心日志中的“事件”。然而,从技术上讲,日志也包括blockhash、address,以及通过调用eth_getLogs返回给你的区块链节点的其他数据。你也可以阅读更多有关布隆过滤器的内容,这是这些事件能被简单查询到的原因。
Hardhat中的事件
现在我们已经了解了什么是事件,让我们学习如何在Hardhat中访问并使用它们。你可以克隆下面的repo,然后跟着操作:
gitclonehttps://github.com/PatrickAlphaC/hardhat-events-logs
cdhardhat-events-logs
你需要跟着README.md中的说明完成依赖工具的安装,其中包括Node、Yarn和Git。
如果你跟着README.md操作,你将能够:
部署一个智能合约;
创建一个发出事件的交易;
查看这些事件的上下文。
如果你在这一过程中遇到问题,请在Githubrepo上新建一个Issue!我们可以通过检查transactionReceipt对象的logs属性来查看日志。
Brownie中的事件
Brownie中的事件几乎是相同的,因为合约是完全相同的。
你可以克隆下面的repo,然后跟着操作:
你需要跟着README.md中的说明完成依赖工具的安装,其中包括Node、Python、eth-brownie和Git。
如果你跟着README.md操作,你将能够:
部署一个智能合约;
创建一个发出事件的交易;
查看这些事件的上下文。
如果你在这一过程中遇到问题,请在Githubrepo上新建一个Issue!你会发现这里的主要区别是,我们使用打印语句来打印出事务的日志:
总结
日志和事件是智能合约开发的重要组成部分,也是Chainlink和TheGraph等项目的关键基础设施。要想了解更多关于开发强大的智能合约的信息,请务必前往查看Chainlink文档,从现在开始创作吧!。
美国司法部在2022年2月的一份声明中宣布,在控制了被盗资金的钱包后,它已成功扣押了2016年对加密交易所Bitifinex的黑客攻击中流失的大部分比特币.
1900/1/1 0:00:00自问世以来,以太坊链已成为加密领域应用最为广泛的区块链协议,其代币ETH也已成为最受欢迎的加密货币之一,截至目前,市值仅次于比特币.
1900/1/1 0:00:00哈喽大家好,我是DeFiworld的布哥,2ChoicesDAO的出题贡献者。今天的话题是:美联储加息对Crypto有怎样的影响?这一期内容我会以普通人的视角来讲,让你尽可能的理解我的每一句话.
1900/1/1 0:00:00“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战.
1900/1/1 0:00:00我们最新研究的三个关键见解DAO的发展速度可能比历史上任何行业都快。12个月前,DAO总共持有5亿美元,现在拥有超过110亿美元。这个空间充满了新的用例,并吸引了来自各背景的建设者.
1900/1/1 0:00:001.02022年,一个忙碌开始 2.0合作伙伴:WMT上线kucoin、ZB、AstroSwap、MinswapWMT和chainlink宣布了技术合作.
1900/1/1 0:00:00