Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 70.6MB ·虚拟内存 1300.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
使用 solidity 编写的智能合约,调试时可以通过打印 Log 的方式,查看合约运行过程中的数据。
我们可以使用以下方法:
在合约中创建一个event,命名为 Log。在想要打印日志的地方调用事件 emit Log(...),就可以查看运行过程中的数据。
// 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 语言的合约继承通过关键字 is 来实现。1. 继承示例继承通过关键字 is 来实现,例如:/ ...