Solidity事件对于智能合约开发者来说是不可或缺的,它允许我们对智能合约中特定变量进行测试,以自动化的方式改变前端等。总的来说,知道如何在Solidity中使用事件可以使智能合约的开发变得更加容易。
在本文,我们将从智能合约开发者的角度来研究以太坊虚拟机的日志和事件功能,包括日志和事件的用途,索引事件,以及如何在Hardhat和Brownie中使用日志和事件。
EVM是以太坊和许多其他区块链的核心。EVM有一个日志功能,用于将数据“写”到智能合约之外的数据结构中。其中一个重要的数据是Solidity事件。事件允许我们“打印”在区块链上的信息,这种方式比在智能合约中保存到公共存储变量更容易搜索,且更省gas费。
日志是区块链上的一种特殊数据结构。它们不能被智能合约访问,但能提供关于交易和区块中发生的信息。正是因为它们不能被智能合约访问,才使得它们的使用成本更低。
Solend发起提案提议授予Solend Labs紧急权力以临时接管巨鲸账户:6月19日消息,Solana 生态借贷协议 Solend 发起治理提案,提议:对占借款总额 20% 以上的巨鲸制定特殊的保证金要求。如果用户的借款超过主池所有借款的 20%,则需要 35% 的特殊清算门槛。该政策将在提案获得批准后生效;授予 Solend Labs 紧急权力以暂时接管鲸鱼的账户,以便清算可以在场外交易中执行,避免将 Solana 推到极限,这将通过智能合约升级来完成。一旦鲸鱼的账户达到安全水平,紧急权力将被撤销。该提案将于 5.5 个小时后投票截止。
此前消息,Solend 创始人 Rooter 发推敦促某个巨鲸(3oSE 开头地址)尽快偿还贷款,否则会进一步降低 SOL 价格,让其他账户面临清算。Solend 已临时禁用其 Main Pool 的 USDC、USDT 和 SOL 借款。[2022/6/19 4:38:35]
你也可以观看下面的关于Solidity中的事件和日志的视频:
Terra链上锁仓量超越Solana链上锁仓量:金色财经报道,据defillama数据显示,Terra链上锁仓量为117.6亿美元,目前已超越Solana链上锁仓量,Solana链上锁仓量为108.8亿美元。[2021/12/14 7:37:57]
https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0
那么,什么是事件呢?
事件允许我们轻松查询在区块和交易中发生的“东西”。如果你运行一个区块链节点,你可以通过订阅它们来“监听”到某些事件。事实上,这就是Chainlink网络的工作方式。Chainlink网络在某些地址订阅某些事件,并根据发出的事件内容,从现实世界返回数据。
事件能用来做什么?
现在,如果你不是Chainlink或Ethereum节点运营商,你可能会问事件对你有什么影响呢。通过Solidity事件,你可以做:
SOL突破170美元 市值突破500亿美元:9月7日消息,据CoinGekco数据显示,SOL现报173.53美元,24小时涨幅达22.1%。Solana(SOL)市值突破500亿美元,达到504.3亿美元,市值排名第七位。[2021/9/7 23:05:38]
测试你的智能合约中的特定变量;
索引变量以重建存储状态;
监听事件用于改变前端状态;
创建子图以更快地读取数据;
还可以完成其他许多事情。对工程师来说,事件有各种各样的用例。事实上,事件是Chainlink节点运作的核心组成部分。Chainlink节点会监听数据请求和外部计算事件,这正是是他们知道如何响应的根源。
事件是什么样子的?
下面的数据结构就是在Solidity中定义一个事件的方式:
Saber在Solana链上推出算法稳定币FRAX交易池:7月15日消息,基于Solana的去中心化交易所Saber在Solana链上推出算法稳定币FRAX交易池,用户可将wFRAX(WormholeFRAX)与Saber上任何的稳定币进行交易,并可以向wFRAX-USDC流动性池中添加流动性以获取收益。
Saber通过虫洞桥(Wormholebridge)将以太坊上的FRAX跨链至Solana。Saber表示未来几天将于FraxFinance社区合作推出流动性激励措施的提案以推动FRAX在Solana上的使用。[2021/7/15 0:54:13]
你可以把事件看作是一个新的特殊类型。我们已经创建了一个名为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文档,从现在开始创作吧!。
标签:SOLSOLASolanaLANAsol币发行价格是多少solana币怎么挖矿solana币总量solana币今日价格
1.什么是BitMart?Launchpad?BitMart?Launchpad是为平台的全球用户提供的优惠抢购IEO项目的机会,符合资格的用户可轻松参加.
1900/1/1 0:00:00尊敬的AAX用戶: AAX即將上線QUIDD,具體時間安排如下:開放充幣時間:2022年2月14日17:00(東八區時間)開放提幣時間:2022年2月14日17:00(東八區時間)開放交易時間:2022年2月17日17:00(東八區時.
1900/1/1 0:00:00尊敬的用户: BKEXGlobalETP专区将于2022年2月9日15:00上线BTTC3L、BTTC3S,具体详情如下:? 交易标的 BKEX Global将于今日12:00首发上线YAM:据BKEX Global公告.
1900/1/1 0:00:00公告編號2022020901各位關心ZBG的投資者們和項目方:關於“ZBG新年紅包大派送”活動已圓滿結束,活動獎勵均已發送完畢。獎勵查看方式:登錄ZBG賬戶—資產—賬單—“活動獎勵”.
1900/1/1 0:00:00Gucci在TheSandbox上获得了“未公开的数量”的土地,下一个会是谁呢?房地产市场在过去的十几年间持续火热已不是什么秘密,但疫情引发了另一场飞速发展的土地热潮.
1900/1/1 0:00:00据Cointelegraph2月8日消息,Web3开发平台Alchemy宣布以102亿美元的估值完成新一轮2亿美元融资,Lightspeed和SilverLake领投,多位现有投资方参投.
1900/1/1 0:00:00