链资讯 链资讯
Ctrl+D收藏链资讯
首页 > TUSD > 正文

HAI:Solidity中的事件和日志_AIN

作者:

时间:

Solidity事件对于智能合约开发者来说是不可或缺的,它允许我们对智能合约中特定变量进行测试,以自动化的方式改变前端等。总的来说,知道如何在Solidity中使用事件可以使智能合约的开发变得更加容易。

在本文,我们将从智能合约开发者的角度来研究以太坊虚拟机的日志和事件功能,包括日志和事件的用途,索引事件,以及如何在Hardhat和Brownie中使用日志和事件。

EVM是以太坊和许多其他区块链的核心。EVM有一个日志功能,用于将数据“写”到智能合约之外的数据结构中。其中一个重要的数据是Solidity事件。事件允许我们“打印”在区块链上的信息,这种方式比在智能合约中保存到公共存储变量更容易搜索,且更省gas费。

日志是区块链上的一种特殊数据结构。它们不能被智能合约访问,但能提供关于交易和区块中发生的信息。正是因为它们不能被智能合约访问,才使得它们的使用成本更低。

BitMEX已恢复Solana链上USDT充提:11月21日消息,BitMEX发推称,已经于UTC时间今日10点恢复Solana链上USDT充提服务。

据此前报道,11月17日,BitMEX宣布暂停Solana链上USDT充值。[2022/11/21 7:52:15]

你也可以观看下面的关于Solidity中的事件和日志的视频:

https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0

那么,什么是事件呢?

事件允许我们轻松查询在区块和交易中发生的“东西”。如果你运行一个区块链节点,你可以通过订阅它们来“监听”到某些事件。事实上,这就是Chainlink网络的工作方式。Chainlink网络在某些地址订阅某些事件,并根据发出的事件内容,从现实世界返回数据。

Solana网络的交易量已超过1000亿:金色财经报道,Watcher.Guru在社交媒体上称,Solana网络的交易量已超过1000亿。[2022/9/22 7:14:14]

事件能用来做什么?

现在,如果你不是Chainlink或Ethereum节点运营商,你可能会问事件对你有什么影响呢。通过Solidity事件,你可以做:

测试你的智能合约中的特定变量;

索引变量以重建存储状态;

监听事件用于改变前端状态;

创建子图以更快地读取数据;

还可以完成其他许多事情。对工程师来说,事件有各种各样的用例。事实上,事件是Chainlink节点运作的核心组成部分。Chainlink节点会监听数据请求和外部计算事件,这正是是他们知道如何响应的根源。

Solana发布多链通信协议Wormhole2.0版本:8月9日消息,Solana已将其多链通信协议Wormhole进行2.0版本升级,该升级版本于周一在以太坊挑战者上推出。简单来说,互操作性协议将帮助代币和NFT加密资产、甚至价格数据,在通常不相互通信的区块链网络之间流动。Wormhole在发布时支持Terra、以太坊和币安智能链。Wormhole为非原生资产进入Solana的DeFi生态系统开辟了一条更快(开发人员声称更简单)的途径。(CoinDesk)[2021/8/9 1:44:16]

事件是什么样子的?

下面的数据结构就是在Solidity中定义一个事件的方式:

你可以把事件看作是一个新的特殊类型。我们已经创建了一个名为storedNumber的事件“类型”。事件的名字叫storedNumber,可以容纳一些变量。在这个事件中,有两种参数:有索引的和无索引的。索引参数也被称为“主题”,是事件中的可搜索参数。我们会在后文更多地谈及这些内容。

中币(ZB)将于5月11日上线SOL(Solana):根据官方公告,中币(ZB)将于2021年5月11日上线SOL(Solana),并在12:00开放SOL充值。5月12日16:00开放SOL/USDT和SOL/QC交易。

Solana由前高通,英特尔和Dropbox工程师于2017年底创立的一种单链委托权益证明协议。Solana扩展解决方案的核心是名为“历史证明(PoH)”的分散式时钟,旨在解决分布式网络中没有单个可信赖时间源的时间问题。通过使用可验证的延迟功能,PoH允许每个节点使用SHA256计算在本地生成时间戳。这样就无需在整个网络上广播时间戳,从而提高了整体网络效率。而SOL是Solana区块链的本地令牌,Solana使用委托权益证明共识算法来激励令牌持有者验证交易。更多详情请查看中币官方公告。[2021/5/11 21:47:47]

然后我们可以像下面这样发出一个事件:

下面是一个完整的合约实例:

现在,只要我们调用这个例子中的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文档,从现在开始创作吧!。

标签:HAIDITLIDAINadultchainRadditarium NetworkSOLID币Floki Chain

TUSD热门资讯
COM:XT.COM關於支持Harmony(ONE)網絡升級及硬分叉的公告_HTT

尊敬的XT.COM用戶:XT.COM將支持Harmony網絡升級及硬分叉,具體安排如下:XT.COM現已暫停ONE代幣的充值、提現業務,以支持Harmony將於Harmony區塊高度22.

COM:雙幣投資新產品上線(2022-02-09)_Harmony

親愛的用戶: 雙幣投資現已上線新一批不同交割日和行使價格的產品。申購開始:2022年02月09日18:00申購方式:先到先得點擊查看新產品交割日及行使價格您可通過雙幣投資產品在理想的時間/價格下.

USDT:欧易关于AXS杠杆交易、余币宝及永续合约正式上线的公告_usdt币怎么开户

尊敬的欧易OKEx用户:欧易OKEx将于2021年7月28日17:00(HKT)?在网页端、APP端及API正式上线AXS的杠杆交易、余币宝及AXSUSDT永续合约.

DIT:比特币熊市的生存指南_SOLID

比特币从最近的高点下跌了40%,所以可以理解很多人担心会出现长期熊市。目前还不清楚比特币是否会很快恢复,或者目前的情况会变成长期的下跌。无论如何,为熊市做好准备总比预测熊市好.

NFT:为什么NFT可以卖到数十万美元?_数字资产

NFT的潜在价值由许多重要变量丰富,包括所有权、身份、稀缺性、美学、社区、技术和作用。每个价值本身都很重要,并有助于增加某个NFT的愿望和价值.

NFT:每日行情解读 | 美国通胀超预期,加密资产受此影响下跌_okex

北京时间周四21:30,美国公布1月通胀数据,美国1月CPI年率录得7.5%,创近四十年新高。美国利率期货走势暗示,美联储加速收紧货币政策概率大增,这对于加密货币这种风险资产而言是一种利空,这也.