第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讚同其觀點或證實其描述。