基于以太坊的智能合约开发Solidity(事件&日志篇)

javascript 复制代码
//声明版本号(程序中的版本号要和编译器版本号一致)
pragma solidity ^0.5.17;
//合约
contract EventTest
{

    //状态变量
    uint public Variable;

    //构造函数
    constructor() public
    {
        Variable = 100;
    }

    event ValueChanged(uint newValue);  //事件声明
    event Log(string, uint);

    //调用该函数,修改状态变量的值并触发事件
    function setValue(uint newValue) public 
    {
        Variable = newValue;
        emit ValueChanged(newValue);  //触发事件
        emit Log("New_Variable = ", newValue);  //记录日志
    }
    
}

(1)事件用于记录在区块链上的特定活动,"emit ValueChanged(newValue);"语句的作用是触发ValueChanged事件(首先需要声明事件)。

①触发事件后会生成相应日志,上图黄框就是"emit ValueChanged(newValue);"语句产生的日志,其中"form"指的是触发事件的合约账户。

②事件主要是供外部应用程序监听,外部应用程序可以监听事件以获取合约中特定活动的通知

(2)日志的作用是在智能合约中记录重要信息,"emit Log("New_Variable = ", newValue);"语句的作用就是生成一个日志(同样需要先声明,日志可以由字符串、整型等数据类型组成),通过以太坊区块链浏览器或特定工具可以查看记录的日志信息。

(3)触发事件和记录日志实际上是同一件事,声明时使用关键字event,触发时使用关键字emit,只是二者的目的不同,事件名一般按照实际行为命名,而日志常声明为"Log"或"log"。

相关推荐
Amos_Web14 小时前
Solana 智能合约编译问题排查与修复总结
前端·rust·区块链
blockcoach19 小时前
刘教链|BTC突破7个月阻力位,84k还有多远?
区块链
Tattoo_Welkin1 天前
【好用的工具记录-Foundry 智能合约开发工具包】
智能合约
混凝土拌意大利面3 天前
量子退相干提升区块链安全新范式
算法·安全·区块链·共识算法
MicroTech20253 天前
微算法科技(NASDAQ: MLGO)区块链水印方案:守护压缩感知图像的全维度安全
安全·去中心化·区块链
李可以量化3 天前
【2026 量化工具选型】通达信 TdxQuant vs 迅投 QMT/miniQMT 深度对比:新手该怎么选?
大数据·人工智能·区块链·通达信·qmt·量化 qmt ptrade
MicroTech20254 天前
微算法科技(NASDAQ :MLGO)适用于去中心化系统的量子区块链交换协议模型:量子时代的分布式可信交互底座
科技·去中心化·区块链
互联网科技看点5 天前
AtlasX Protocol 获 200 万美元种子轮融资
大数据·人工智能·区块链
myan5 天前
AI多智能体应用将助推区块链支付崛起
人工智能·区块链
TechubNews5 天前
BTC 短暂突破 7.6 万美元,加密市场预期改善,8 万美元成关键测试位?
区块链