第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等。
免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第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等。
免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表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.