以太坊概述
以太坊是一個基於區塊鏈的開源分布式軟件平颱,是比特幣最大的競爭對手。以太坊於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合約的基本結構如下:
Pragma編譯指令:此行指定智能合約兼容的Solidity編譯器版本。例如:
Solidity
pragma solidity ^0.8.0;
合約定義:此行定義合約及其名稱。
例如:
Solidity
contract SimpleToken {
狀態變量:將合約狀態存儲在區塊鏈上的變量。比如,您可以存儲代幣的總供應量:
Solidity
uint256 public totalSupply;
函數:函數定義了合約的行爲,可以被外部用戶或其他合約調用。以下是一個簡單的代幣轉移函數:
Solidity
function transfer(address recipient, uint256 amount) public {
// ... transfer logic ...
}
Solidity
event Transfer(address indexed from, address indexed to, uint256 value);
修飾符:修飾符用於修改函數的行爲,通常用於訪問控製或預設條件檢查。以下是用於檢查髮送者是否擁有足夠代幣進行轉移的修飾符:
JavaScript
modifier hasEnoughTokens(uint256 amount) {
require(balanceOf[msg.sender] >= amount, "Insufficient balance");
_;
}
構造函數:構造函數是一個特殊的函數,用於在部署合約時初始化合約的狀態變量。例如,初始化代幣的總供應量:
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");
_;
}
}
要點
以太坊概述
以太坊是一個基於區塊鏈的開源分布式軟件平颱,是比特幣最大的競爭對手。以太坊於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合約的基本結構如下:
Pragma編譯指令:此行指定智能合約兼容的Solidity編譯器版本。例如:
Solidity
pragma solidity ^0.8.0;
合約定義:此行定義合約及其名稱。
例如:
Solidity
contract SimpleToken {
狀態變量:將合約狀態存儲在區塊鏈上的變量。比如,您可以存儲代幣的總供應量:
Solidity
uint256 public totalSupply;
函數:函數定義了合約的行爲,可以被外部用戶或其他合約調用。以下是一個簡單的代幣轉移函數:
Solidity
function transfer(address recipient, uint256 amount) public {
// ... transfer logic ...
}
Solidity
event Transfer(address indexed from, address indexed to, uint256 value);
修飾符:修飾符用於修改函數的行爲,通常用於訪問控製或預設條件檢查。以下是用於檢查髮送者是否擁有足夠代幣進行轉移的修飾符:
JavaScript
modifier hasEnoughTokens(uint256 amount) {
require(balanceOf[msg.sender] >= amount, "Insufficient balance");
_;
}
構造函數:構造函數是一個特殊的函數,用於在部署合約時初始化合約的狀態變量。例如,初始化代幣的總供應量:
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");
_;
}
}
要點