Lección 2

以太坊和Solidity基础知识

第二课将介绍以太坊和Solidity编程语言,帮助您了解以太坊的生态系统及其作为去中心化应用平台的作用。同时,通过Solidity基础知识的介绍,您还能学习合约的结构以及使用该语言编写代码的基础知识。

以太坊概述

以太坊是一个基于区块链的开源分布式软件平台,是比特币最大的竞争对手。以太坊于2013年由加密货币研究员维塔利克·布特林首次提出,他建议在比特币中添加一种用于编程的脚本语言。2015年7月30日,以太坊正式启动。它的开发由在线进行的众筹支持,这是一种常见的加密货币发行方式。

阅读更多:什么是以太坊?

以太坊的原生加密货币被称为以太币(Ether,ETH),拥有名为Solidity的特色编程语言。区块链是以太坊的底层技术,是一种分布式账本,维护着一个永久的、防篡改的记录列表。这种去中心化架构使开发人员能够创建各种去中心化应用(dApp),从平台强大的生态系统和多样性中受益。

以太坊的核心功能之一是支持智能合约。我们在第1课中已经讲到,智能合约是基于预定义条件自动执行的数字合约,实现了一个无需中间人的去信任环境,可以安全透明地执行交易。以太坊网络上的矿工曾经通过挖矿获取以太币,这些代币不仅是一种货币,还用于支付平台的使用费;在“合并(The Merge)”之后,以太坊过渡到权益证明(PoS)机制,由验证者(非矿工)验证交易并创建新区块。验证者并不挖掘以太币,而是通过参与网络获得以太币的交易费用和区块奖励。以太币仍用于支付平台上的使用费,但其发行和分配都不同于之前的工作量证明(PoW)机制。

以太坊能够托管各类dApp和智能合约,吸引了开发人员和企业的极大关注,使其成为在金融、供应链和游戏等各个行业构建创新解决方案的领先平台。随着以太坊生态系统的不断发展,以太坊仍然处于区块链技术的最前沿,不断推动创新并打造了一个充满活力的开发人员和用户社区。

阅读更多:什么是合并(The Merge)?

阅读更多:什么是DApp?

Solidity编程语言简介

Solidity是一种高级、静态类型的编程语言,专门为在以太坊区块链上编写智能合约而设计。Solidity由以太坊的核心团队开发,其语法受到JavaScript的影响,对广大开发者来说更加熟悉且易于上手。Solidity是图灵完备的,开发人员可以在他们的智能合约中创建复杂的逻辑并实现各种功能。Solidity编译成以太坊虚拟机(EVM)字节码,在以太坊网络上执行。

在Solidity中,开发人员可以自定义数据结构、创建用户定义的函数并实施访问控制机制等功能。通过Solidity可以创建各种去中心化应用,包括去中心化金融(DeFi)平台、非同质化代币(NFT)、去中心化自治组织(DAO)等。

Solidity合约结构示例

Solidity合约是独立的代码片段,由变量、函数、事件和修饰符等元素组成。Solidity合约的基本结构如下:

  1. Pragma编译指令:此行指定智能合约兼容的Solidity编译器版本。例如:

    Solidity
    pragma solidity ^0.8.0;
    
  2. 合约定义:此行定义合约及其名称。
    例如:

    Solidity
    contract SimpleToken {
    
  3. 状态变量:将合约状态存储在区块链上的变量。比如,您可以存储代币的总供应量:

    Solidity
    uint256 public totalSupply;
    
  4. 函数:函数定义了合约的行为,可以被外部用户或其他合约调用。以下是一个简单的代币转移函数:

    Solidity
    function transfer(address recipient, uint256 amount) public {
     // ... transfer logic ...
    }
    
  5. 事件:事件用于记录合约中的特定操作,可以被外部用户或合约监控。以下是代币合约中的转移事件:
    Solidity
    event Transfer(address indexed from, address indexed to, uint256 value);
    
  6. 修饰符:修饰符用于修改函数的行为,通常用于访问控制或预设条件检查。以下是用于检查发送者是否拥有足够代币进行转移的修饰符:

    JavaScript
    modifier hasEnoughTokens(uint256 amount) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. 构造函数:构造函数是一个特殊的函数,用于在部署合约时初始化合约的状态变量。例如,初始化代币的总供应量:

JavaScript
constructor(uint256 _totalSupply) {
    totalSupply = _totalSupply;
    balanceOf[msg.sender] = _totalSupply;
}

综上所述,一个简单的代币的Solidity合约可能如下:

TypeScript
pragma solidity ^0.8.0;

contract SimpleToken {
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;

    event Transfer(address indexed from, address indexed to, uint256 value);

    modifier hasEnoughTokens(uint256 amount) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

要点

  • 以太坊是一个基于区块链的平台,支持智能合约和去中心化应用(dApp)。
  • 以太坊的原生加密货币是以太币(ETH)。
  • Solidity是一种高级编程语言,用于在以太坊上编写智能合约。
  • 以太坊上的智能合约会根据预定义的条件自动执行。
  • 以太坊已过渡到权益证明(PoS)机制,用于验证交易和创建新区块。
  • Solidity允许开发人员定义数据结构、创建函数、实现访问控制等功能。
  • 以太坊的生态系统吸引了各行各业的开发人员和组织。
  • Solidity合约由Pragma编译指令、合约定义、状态变量、函数、事件、修饰符和构造函数组成。
  • Solidity合约可用于创建DeFi平台、NFT、DAO等。
Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 2

以太坊和Solidity基础知识

第二课将介绍以太坊和Solidity编程语言,帮助您了解以太坊的生态系统及其作为去中心化应用平台的作用。同时,通过Solidity基础知识的介绍,您还能学习合约的结构以及使用该语言编写代码的基础知识。

以太坊概述

以太坊是一个基于区块链的开源分布式软件平台,是比特币最大的竞争对手。以太坊于2013年由加密货币研究员维塔利克·布特林首次提出,他建议在比特币中添加一种用于编程的脚本语言。2015年7月30日,以太坊正式启动。它的开发由在线进行的众筹支持,这是一种常见的加密货币发行方式。

阅读更多:什么是以太坊?

以太坊的原生加密货币被称为以太币(Ether,ETH),拥有名为Solidity的特色编程语言。区块链是以太坊的底层技术,是一种分布式账本,维护着一个永久的、防篡改的记录列表。这种去中心化架构使开发人员能够创建各种去中心化应用(dApp),从平台强大的生态系统和多样性中受益。

以太坊的核心功能之一是支持智能合约。我们在第1课中已经讲到,智能合约是基于预定义条件自动执行的数字合约,实现了一个无需中间人的去信任环境,可以安全透明地执行交易。以太坊网络上的矿工曾经通过挖矿获取以太币,这些代币不仅是一种货币,还用于支付平台的使用费;在“合并(The Merge)”之后,以太坊过渡到权益证明(PoS)机制,由验证者(非矿工)验证交易并创建新区块。验证者并不挖掘以太币,而是通过参与网络获得以太币的交易费用和区块奖励。以太币仍用于支付平台上的使用费,但其发行和分配都不同于之前的工作量证明(PoW)机制。

以太坊能够托管各类dApp和智能合约,吸引了开发人员和企业的极大关注,使其成为在金融、供应链和游戏等各个行业构建创新解决方案的领先平台。随着以太坊生态系统的不断发展,以太坊仍然处于区块链技术的最前沿,不断推动创新并打造了一个充满活力的开发人员和用户社区。

阅读更多:什么是合并(The Merge)?

阅读更多:什么是DApp?

Solidity编程语言简介

Solidity是一种高级、静态类型的编程语言,专门为在以太坊区块链上编写智能合约而设计。Solidity由以太坊的核心团队开发,其语法受到JavaScript的影响,对广大开发者来说更加熟悉且易于上手。Solidity是图灵完备的,开发人员可以在他们的智能合约中创建复杂的逻辑并实现各种功能。Solidity编译成以太坊虚拟机(EVM)字节码,在以太坊网络上执行。

在Solidity中,开发人员可以自定义数据结构、创建用户定义的函数并实施访问控制机制等功能。通过Solidity可以创建各种去中心化应用,包括去中心化金融(DeFi)平台、非同质化代币(NFT)、去中心化自治组织(DAO)等。

Solidity合约结构示例

Solidity合约是独立的代码片段,由变量、函数、事件和修饰符等元素组成。Solidity合约的基本结构如下:

  1. Pragma编译指令:此行指定智能合约兼容的Solidity编译器版本。例如:

    Solidity
    pragma solidity ^0.8.0;
    
  2. 合约定义:此行定义合约及其名称。
    例如:

    Solidity
    contract SimpleToken {
    
  3. 状态变量:将合约状态存储在区块链上的变量。比如,您可以存储代币的总供应量:

    Solidity
    uint256 public totalSupply;
    
  4. 函数:函数定义了合约的行为,可以被外部用户或其他合约调用。以下是一个简单的代币转移函数:

    Solidity
    function transfer(address recipient, uint256 amount) public {
     // ... transfer logic ...
    }
    
  5. 事件:事件用于记录合约中的特定操作,可以被外部用户或合约监控。以下是代币合约中的转移事件:
    Solidity
    event Transfer(address indexed from, address indexed to, uint256 value);
    
  6. 修饰符:修饰符用于修改函数的行为,通常用于访问控制或预设条件检查。以下是用于检查发送者是否拥有足够代币进行转移的修饰符:

    JavaScript
    modifier hasEnoughTokens(uint256 amount) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. 构造函数:构造函数是一个特殊的函数,用于在部署合约时初始化合约的状态变量。例如,初始化代币的总供应量:

JavaScript
constructor(uint256 _totalSupply) {
    totalSupply = _totalSupply;
    balanceOf[msg.sender] = _totalSupply;
}

综上所述,一个简单的代币的Solidity合约可能如下:

TypeScript
pragma solidity ^0.8.0;

contract SimpleToken {
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;

    event Transfer(address indexed from, address indexed to, uint256 value);

    modifier hasEnoughTokens(uint256 amount) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

要点

  • 以太坊是一个基于区块链的平台,支持智能合约和去中心化应用(dApp)。
  • 以太坊的原生加密货币是以太币(ETH)。
  • Solidity是一种高级编程语言,用于在以太坊上编写智能合约。
  • 以太坊上的智能合约会根据预定义的条件自动执行。
  • 以太坊已过渡到权益证明(PoS)机制,用于验证交易和创建新区块。
  • Solidity允许开发人员定义数据结构、创建函数、实现访问控制等功能。
  • 以太坊的生态系统吸引了各行各业的开发人员和组织。
  • Solidity合约由Pragma编译指令、合约定义、状态变量、函数、事件、修饰符和构造函数组成。
  • Solidity合约可用于创建DeFi平台、NFT、DAO等。
Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.