赞
踩
下面列出了一些常见的智能合约函数及其用途,并提供了一些基本的示例。
constructor
)构造函数用于初始化智能合约的状态变量。它只在合约部署时被调用一次。
示例:
contract MyContract {
address public owner;
constructor() {
owner = msg.sender;
}
}
receive
或 fallback
)这些函数在没有数据的交易调用时被触发,常用于接收Ether。
示例:
contract MyContract {
receive() external payable {
// 自动接收Ether
}
fallback() external payable {
// 同上
}
}
payable
)允许函数接收Ether。
示例:
function donate() public payable {
// 可以接收Ether的函数
}
transfer
或 send
或 call
)用于向其他地址发送Ether。
示例:
function withdraw(uint amount) public {
require(msg.sender == owner);
(bool success, ) = msg.sender.call{value: amount}("");
require(success, "Transfer failed.");
}
event
)用于通知区块链上的变化,通常与外部系统交互时使用。
示例:
event Transfer(address indexed from, address indexed to, uint value);
function transfer(address to, uint value) public {
// 转账逻辑
emit Transfer(msg.sender, to, value);
}
modifier
)确保只有特定角色的账户可以调用某些函数。
示例:
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function setSomething(uint newValue) public onlyOwner {
// 只有owner可以调用
}
state variables
)存储在区块链上的数据,如余额、所有权等。
示例:
uint public balance;
address public owner;
mapping
)用于存储键值对,常用于追踪账户余额。
示例:
mapping(address => uint) public balances;
array
)用于存储一系列同类型的数据。
示例:
uint[] public timestamps;
struct
)组合多种数据类型的复杂数据结构。
示例:
struct User {
uint age;
string name;
}
User public user;
enum
)定义一组有限的命名常量。
示例:
enum Status { Active, Pending, Completed }
Status public status;
注意,这些示例仅展示了基础概念,实际的智能合约可能需要更复杂的错误检查和安全措施。编写智能合约时务必小心,因为一旦部署,代码通常是不可更改的,任何错误都可能导致资金损失或其他严重后果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。