Solidity log 日志

使用 solidity 编写的智能合约,调试时可以通过打印 Log 的方式,查看合约运行过程中的数据。

我们可以使用以下方法:

在合约中创建一个event,命名为 Log。在想要打印日志的地方调用事件 emit Log(...),就可以查看运行过程中的数据。

1. 范例

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SolidityTest {
    // 定义事件
    event Log(address);

    constructor()  {
        // 调用事件
        emit Log(msg.sender);
        emit Log(address(this));
    }
}

Log(msg.sender) 在日志中输出了合约部署者的地址。

Log(address(this)) 在日志中输出了合约地址。

查看合约在部署时的日志结果:

[
    {
        "from": "0xE3Ca443c9fd7AF40A2B5a95d43207E763e56005F",
        "topic": "0x2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
        "event": "log",
        "args": {
            // 合约部署者的地址
            "0": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
        }
    },
    {
        "from": "0xE3Ca443c9fd7AF40A2B5a95d43207E763e56005F",
        "topic": "0x2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
        "event": "log",
        "args": {
            // 合约地址
            "0": "0xE3Ca443c9fd7AF40A2B5a95d43207E763e56005F"
        }
    }
]

下一章:Solidity 合约继承

Solidity 语言是一种面向对象的编程语言,提供了对合约继承的支持,继承是扩展合约功能的一种方式。Solidity 语言的合约继承通过关键字 is 来实现。1. 继承示例继承通过关键字 is 来实现,例如:/ ...