智能合约中最常见的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;

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

相关文章
|
6月前
|
IDE 编译器 区块链
基于 Solidity 的智能合约详解
基于 Solidity 的智能合约详解
68 2
|
存储 前端开发 JavaScript
区块链智能合约编程语言 Solidity
上文介绍了[区块链生态发展](https://wangbinguang.blog.csdn.net/article/details/131440404),我们知道以太坊的到来可以使开发人员基于区块链开发DApp,本文介绍 Solidity 编程语言的使用,然后基于 Solidity 编写一个简单的智能合约。
130 1
|
区块链
Jvav 调用 Conflux 智能合约
Jvav 调用 Conflux 智能合约
118 0
|
存储 区块链 数据库
Solidity开发智能合约
一个简单的智能合约 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。
1521 0
|
JavaScript 前端开发 区块链
【区块链Solidity】智能合约与Solidity介绍
【区块链Solidity】智能合约与Solidity介绍
149 0
|
存储 JavaScript 前端开发
【智能合约】Solidity 基础知识 | 以太坊智能合约编程语言
目录 注意事项 编译器选择 一些说明 1. 变量 1.1 状态变量 1.2 局部变量 2. 数据类型 2.1 值类型 2.1.1 布尔类型(Booleans): 2.1.2 整型(Integers): 2.1.3 定长浮点型(Fixed Point Numbers): 2.1.4 定长字节数组(Fixed-size byte arrays) 2.1.5 有理数和整型常量(Rational and Integer Literals) 2.1.6 枚举(Enums) 2.1.7 函数类型(Function Types) 修饰符 函数定义 函数返回值 构造函数 2.1.8 地址类型(Address)
425 0
【智能合约】Solidity 基础知识 | 以太坊智能合约编程语言
|
JSON Go 区块链
【智能合约】Go语言调用智能合约 | geth
目录 1. 获取abi文件 2. 安装abigen工具 3. remix连接私有链 4. 合约部署 5. 初始化私有链节点创世块 6. 合约部署 7. 调用
1390 0
【智能合约】Go语言调用智能合约 | geth
|
区块链
智能合约有哪些特点?DAPP智能合约系统模式开发
智能合约系统开发,DAPP智能合约系统模式开发
282 0
智能合约有哪些特点?DAPP智能合约系统模式开发
|
存储 安全 测试技术
智能合约中存在的3种最常见的误解
智能合约中存在的3种最常见的误解
246 0
|
区块链
solidity 智能合约之间的调用
solidity 智能合约之间的调用
640 0