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

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

1. 构造函数 (constructor)

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

示例:

solidity 复制代码
contract MyContract {
    address public owner;

    constructor() {
        owner = msg.sender;
    }
}

2. 接收函数 (receivefallback)

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

示例:

solidity 复制代码
contract MyContract {
    receive() external payable {
        // 自动接收Ether
    }

    fallback() external payable {
        // 同上
    }
}

3. 支付函数 (payable)

允许函数接收Ether。

示例:

solidity 复制代码
function donate() public payable {
    // 可以接收Ether的函数
}

4. 转移Ether (transfersendcall)

用于向其他地址发送Ether。

示例:

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

5. 事件 (event)

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

示例:

solidity 复制代码
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)

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

示例:

solidity 复制代码
modifier onlyOwner() {
    require(msg.sender == owner, "Not owner");
    _;
}

function setSomething(uint newValue) public onlyOwner {
    // 只有owner可以调用
}

7. 状态变量 (state variables)

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

示例:

solidity 复制代码
uint public balance;
address public owner;

8. 映射 (mapping)

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

示例:

solidity 复制代码
mapping(address => uint) public balances;

9. 数组 (array)

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

示例:

solidity 复制代码
uint[] public timestamps;

10. 结构体 (struct)

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

示例:

solidity 复制代码
struct User {
    uint age;
    string name;
}
User public user;

11. 枚举 (enum)

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

示例:

solidity 复制代码
enum Status { Active, Pending, Completed }
Status public status;

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

相关推荐
moz与京4 小时前
【面试向】热门技术话题(上)
人工智能·物联网·机器学习·面试·web3·区块链·元宇宙
熊文豪12 小时前
【华为OD】区块链文件转储系统
算法·华为od·区块链
木西14 小时前
React Native DApp 开发全栈实战·从 0 到 1 系列(永续合约交易-前端部分)
react native·web3·智能合约
OpenBuild.xyz1 天前
Web3 开发者周刊 66 | 重新审视L2:跨链桥与定序器背后的信任裂痕
web3·区块链·业界资讯·周报·数字货币
微三云-轩1 天前
区块链:重构企业数字化的信任核心与创新动力
人工智能·小程序·区块链·生活·我店
天涯学馆2 天前
在Solidity中实现DAO:从概念到代码的全面剖析
智能合约·solidity·以太坊
luckys.one2 天前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
凡哥btczf6662 天前
M61S 214T矿机详细参数解析与性能评估
区块链
MicroTech20252 天前
微算法科技(NASDAQ: MLGO)采用分片技术(Sharding)与异步共识机制,实现节点负载均衡,提升交易处理效率
科技·区块链·分片技术
openHiTLS密码开源社区2 天前
X448 算法签名验签流程深度解析及代码示例
物联网·区块链·签名·椭圆曲线·x448·密钥生成