您的位置:首页 > 科技 > IT业 > 智能合约中最常见的11种函数

智能合约中最常见的11种函数

2024/10/5 22:27:10 来源:https://blog.csdn.net/qq_38420688/article/details/140605082  浏览:    关键词:智能合约中最常见的11种函数

下面列出了一些常见的智能合约函数及其用途,并提供了一些基本的示例。

1. 构造函数 (constructor)

构造函数用于初始化智能合约的状态变量。它只在合约部署时被调用一次。

示例:

contract MyContract {address public owner;constructor() {owner = msg.sender;}
}

2. 接收函数 (receivefallback)

这些函数在没有数据的交易调用时被触发,常用于接收Ether。

示例:

contract MyContract {receive() external payable {// 自动接收Ether}fallback() external payable {// 同上}
}

3. 支付函数 (payable)

允许函数接收Ether。

示例:

function donate() public payable {// 可以接收Ether的函数
}

4. 转移Ether (transfersendcall)

用于向其他地址发送Ether。

示例:

function withdraw(uint amount) public {require(msg.sender == owner);(bool success, ) = msg.sender.call{value: amount}("");require(success, "Transfer failed.");
}

5. 事件 (event)

用于通知区块链上的变化,通常与外部系统交互时使用。

示例:

event Transfer(address indexed from, address indexed to, uint value);function transfer(address to, uint value) public {// 转账逻辑emit Transfer(msg.sender, to, value);
}

6. 访问控制 (modifier)

确保只有特定角色的账户可以调用某些函数。

示例:

modifier onlyOwner() {require(msg.sender == owner, "Not owner");_;
}function setSomething(uint newValue) public onlyOwner {// 只有owner可以调用
}

7. 状态变量 (state variables)

存储在区块链上的数据,如余额、所有权等。

示例:

uint public balance;
address public owner;

8. 映射 (mapping)

用于存储键值对,常用于追踪账户余额。

示例:

mapping(address => uint) public balances;

9. 数组 (array)

用于存储一系列同类型的数据。

示例:

uint[] public timestamps;

10. 结构体 (struct)

组合多种数据类型的复杂数据结构。

示例:

struct User {uint age;string name;
}
User public user;

11. 枚举 (enum)

定义一组有限的命名常量。

示例:

enum Status { Active, Pending, Completed }
Status public status;

注意,这些示例仅展示了基础概念,实际的智能合约可能需要更复杂的错误检查和安全措施。编写智能合约时务必小心,因为一旦部署,代码通常是不可更改的,任何错误都可能导致资金损失或其他严重后果。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com