Lição 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等。
Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 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等。
Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.