快速術語表
這個快速術語表包含許多與以太坊相關的術語。這些術語在本書中都有使用,所以請將其加入書籤以便快速參考。
- 帳戶 Account
-
帳戶可以是外部擁有帳戶 (EOA, externally owned account) 或是合約帳戶 (contract address)。兩者必定包含地址、餘額、隨機數 (nonce)。而合約帳戶則是多了資料儲存空間 (storage) 及程式碼 (code) 的部份。
- 地址 Address
-
一般來說,以太坊區塊鏈上的地址代表的是 EOA 或是合約的地址,用來接收或是傳送交易(transaction)。更俱體地說,私鑰先使用 ECDSA 計算出公鑰,接著對公鑰作出 Keccak 雜湊,接著取其雜湊最右邊的40位元組,並以16進制字串方式表達該40位元組,然後在字串前面加上 “0x” 字串後,該字串即為該私鑰所對應之以太坊地址(Ethereum Address)。
- 斷言 Assert
-
在 Solidity 中,assert(false) 編譯為 0xfe, 是一個無效的操作碼,用盡所有剩餘的燃氣(Gas),並恢復所有更改。 當 assert() 語句失敗時,說明發生了嚴重的錯誤或異常,你必須修復你的程式碼。 你應該使用 assert 來避免永遠不應該發生的條件。
- 大端序 Big-endian
-
大端序是進位制數值系統的表示方法,將代表最大值的數字放在第一位 (即手寫順序的最左邊,或電腦記憶體中的最低位址)。反之,若將代表最小數值的數字放在第一位,該表示方法稱為小端序(little-endian)。
- 比特幣改進提議 BIPs
-
比特幣改進提議(Bitcoin Improvement Proposals)。比特幣社區成員提交的一組提案,旨在改進比特幣。例如,BIP-21 是改進比特幣統一資源識別碼(URI)方案的建議。
- 區塊 Block
-
區塊是關於所包含的交易的所需資訊(區塊頭)的集合,以及稱為ommer的一組其他區塊頭。它被礦工添加到以太坊網路中。
- 區塊鏈 Blockchain
-
在以太坊中,區塊鏈是由區塊所組成之序列,序列上的每個區塊都被工作量證明 (proof-of-work) 系統驗證過,每個區塊都連結至前一個區塊,可往前追溯至創始區塊 (genesis block)。在比特幣協議下會明定的區塊鏈的大區塊空間限制 (maximum block size),但在以太坊中則沒有明確規定區塊大小,而是透過燃氣限制 (gas limit) 來規範每個區塊所能使用的指令上限。
- 拜占庭分叉 Byzantium Fork
-
拜占庭是大都會(Metropolis)發展階段的兩大分叉之一。它包括 EIP-649:大都會難度炸彈延遲和區塊獎勵減少,其中冰河時代(見下文)延遲1年,而區塊獎勵從5個以太坊減至3個以太坊。
- 編譯 Compiling
-
將高階程式語言(例如 Solidity)編寫的程式碼轉換為低階語言(例如 EVM Bytecode )。
- 共識 Consensus
-
當大量節點(通常是網路上的大多數節點)在各自本地通過驗證的最佳區塊鏈中都有完全相同的區塊狀態。 不要與共識規則混淆。
- 共識規則 Consensus rules
-
完整節點為了與其他節點保持一致,所需遵循的區塊驗證規則。不要與共識混淆。
- 君士坦丁堡 Constantinople
-
大都會階段的第二部分,2018年中期的計劃。預計將包括切換到混合工作證明/權益證明共識演算法,以及其他變更。
- 合約帳戶 Contract account
-
合約帳戶附有程式碼,該程式碼在收到其它帳戶(合約帳戶 或 EOA) 的交易(transaction) 時便可執行。
- 合約創建交易 Contract creation transaction
-
一個特殊的交易,以“零地址”作為收件人,用於註冊合約並將其記錄在以太坊區塊鏈中(請參閱“零地址”)。
- 去中心化自治組織 DAO
-
去中心化自治組織(Decentralised Autonomous Organization)。 沒有層級管理的公司和其他組織。也可能是指2016年4月30日發佈的名為“The DAO”的合約,該合約於2016年6月遭到黑客攻擊,最終在第1,192,000個區塊激起了硬分叉(代號 DAO),恢復了被攻擊的 DAO 合約,並導致了以太坊和以太坊經典兩個競爭系統。
- 去中心化應用 DApp
-
去中心化應用(Decentralised Application)。 狹義上,它至少是智能合約和 web 用戶界面。更廣泛地說,DApp 是一個基於開放式、分散式、點對點基礎架構服務的 Web 應用程式。另外,許多 DApp 包括去中心化儲存和/或消息協議和平臺。
- 契約 Deed
-
ERC721 提案中引入的非同質性代幣(NFT, Non-Fungible Token)標準。與ERC20代幣不同,契約證明了所有權並且不可互換,雖然它們還未在任何管轄區被認可為合法檔案,至少目前沒有。
- 難度 Difficulty
-
該設定可調節全網進行工作量證明 (proof of work) 時的計算量。
- 數位簽章 Digital signature
-
數位簽章演算法是一個過程,用戶可以使用私鑰為文件生成稱為“簽名”的短字串數據,以便具有簽名、文件,和相應公鑰的任何人,都可以驗證(1 )該檔案由該特定私鑰的所有者“簽名”,以及(2)該檔案在簽署後未被更改。
- 橢圓曲線數位簽章演算法 ECDSA
-
橢圓曲線數位簽章演算法( Elliptic Curve Digital Signature Algorithm,ECDSA )是以太坊用來確保資金只能由合法所有者使用的加密演算法。
- 以太坊改進建議 EIP
-
以太坊改進建議(Ethereum Improvement Proposals)。描述以太坊平臺的建議標準。 EIP 是向以太坊社區提供資訊的設計文件,描述新的功能,或處理過程、環境。有關更多資訊,請參見 https://github.com/ethereum/EIPs (另請參見下面的 ERC 定義)。
- 以太坊名稱服務 ENS
-
以太坊名稱服務(Ethereum Name Service)。更多資訊,參見 https://github.com/ethereum/ens/.
- 熵 Entropy
-
在密碼學領域,表示可預測性的缺乏或隨機性水平。在生成秘密資訊(如主私鑰)時,演算法通常依賴高熵源來確保輸出不可預測。
- 外部擁有帳戶 EOA
-
外部擁有帳戶(Externally Owned Account)。 由或為以太坊的真人用戶創建的帳戶。
- 以太坊註釋請求 ERC
-
以太坊註釋請求(Ethereum Request for Comments)。一些 EIP 被標記為 ERC,表示試圖定義以太坊使用的特定標準的建議。
- Ethash
-
以太坊1.0的工作量證明演算法。更多資訊,參見 https://github.com/ethereum/wiki/wiki/Ethash.
- 以太 Ether
-
以太(Ether),是以太坊生態系統中使用的原生貨幣,在執行智能合約時用來支付燃氣(Gas)費用。它的符合是 Ξ, 極客用的大寫 Xi 字符.
- 事件 Event
-
事件允許EVM日誌工具的使用。Dapp 可以監聽事件,並在事件發生時觸發 Javascript 的回呼函式 。更多資訊,參見 http://solidity.readthedocs.io/en/develop/contracts.html#events。
- 以太坊虛擬機 EVM
-
以太坊虛擬機(Ethereum Virtual Machine)。 一種以堆疊(Stack)為基底,執行 Bytecode 的虛擬機。在以太坊中,執行模型明確說明了系統狀態在給定一系列 Bytecode 指令和少量環境數據的情況下該如何發生改變。 這是通過虛擬狀態機的正式模型指定的。
- EVM組合語言 EVM Assembly Language
-
人類可讀形式的 Bytecode 。
- 備用函式 Fallback function
-
這是一個默認預設(default)的函式,當合約收到不含資料(data)欄位的交易(transaction)時,或是收到未被合約所宣告之函數呼叫時,這個備用的函式便會被執行。
- 水龍頭 Faucet
-
一個服務,為想要在testnet上做測試的開發人員提供免費的測試以太幣。
- Finney
-
以太幣的一種單位。1015 finney = 1 ether。
- 分叉 Fork
-
指因協議改變造成原始鏈一分為二,或指挖礦時因為兩條潛在區塊鏈而產生的暫時分歧。
- 前沿 Frontier
-
以太坊的試驗開發階段,從2015年7月至2016年3月。
- Ganache
-
私有以太坊區塊鏈,你可以在上面進行測試、執行命令,並控制此區塊鏈的運作以檢視狀態變化。
- 燃氣 Gas
-
以太坊用於執行智能合約的虛擬燃料。以太坊虛擬機使用會計機制來衡量 gas 的消耗量並限制計算資源的消耗。參見“圖靈完備”。 燃氣是執行智能合約的每條指令產生的計算單位。燃氣與以太幣(Ether)掛鉤。燃氣類似於行動網路上的通話時間。因此,以法定貨幣進行交易的價格是 gas x(ETH /gas)x(法定貨幣/ETH)。
- 燃氣限制 Gas limit
-
每筆交易或區塊中所有交易的最多 gas 使用上限。
- 創世區塊 Genesis block
-
區塊鏈中的第一個塊,用來初始化特定的網路和加密數位貨幣。
- Geth
-
Go語言的以太坊。Go 編寫的最突出的以太坊協議實現之一。
- 硬分叉 Hard fork
-
硬分叉也稱為硬分叉更改,是區塊鏈中的一種永久性分歧。通常發生在未升級節點無法驗證已升級節點(遵循新共識規則)創建的的區塊時。不要與分叉,軟分叉,軟體分叉或Git分叉混淆。
- 雜湊值 Hash
-
通過雜湊函式為不定長度的數據生成的固定長度指紋。
- 分層確定錢包 HD wallet
-
使用分層確定密鑰生成和傳輸協議的錢包(BIP32)。
- 分層確定錢包種子 HD wallet seed
-
HD錢包種子或根種子是一個可能很短的值,用作生成HD錢包的主私鑰和主鏈碼的種子。錢包種子可以用助記詞(mnemonic words)表示,使人們更容易複製,備份和恢復私鑰。
- 家園 Homestead
-
以太坊的第二個發展階段,於2016年3月在1,150,000區塊啟動。
- 互換客戶端地址協議 Inter exchange Client Address Protocol (ICAP)
-
以太坊地址編碼,與國際銀行帳號(IBAN)編碼部分兼容,為以太坊地址提供多樣的,校驗和的,可互操作的編碼。 ICAP地址可以編碼以太坊地址或通過以太坊名稱註冊表註冊的常用名稱。他們總是以XE開始。其目的是引入一個新的IBAN國家程式碼:XE,X表示"extended", 加上以太坊的E,用於非管轄貨幣(例如XBT,XRP,XCP)。
- 冰河時代 Ice Age
-
以太坊在200,000區塊的硬分叉,提出難度指數級增長(又名難度炸彈),引發了到權益證明 Proof-of-Stake 的過渡。
- 集成開發環境 IDE (Integrated Development Environment)
-
集成的用戶界面,結合了程式碼編輯器、編譯器、執行環境和除錯器。
- 不可變的部署程式碼問題 Immutable Deployed Code Problem
-
一旦部署了合約(或庫)的程式碼,它就成為不可變的。修復可能的bug並添加新特性是軟體開發週期的關鍵。這對智能合約開發來說是一個挑戰。
- 內部交易(又稱“消息”)Internal transaction (also "message")
-
從一個合約地址發送到另一個合約地址或 EOA 的交易。
- 密鑰推導方法 Key Derivation Function (KDF)
-
也稱為密碼擴展演算法,它被keystore格式使用,以防止對密碼加密的暴力破解,字典或彩虹表攻擊。它重複對密碼進行雜湊。
- Keccak256
-
以太坊使用的加密雜湊方法。雖然在早期 Ethereum 程式碼中寫作 SHA-3,但是由於在 2015 年 8 月 SHA-3 完成標準化時,NIST 調整了填充演算法,所以 Keccak256 不同於標準的 NIST-SHA3。Ethereum 也在後續的程式碼中開始將 SHA-3 的寫法替換成 Keccak256 。
- Keystore 檔案
-
JSON 編碼的檔案,包含一個以密碼加密過後的(隨機生成)私鑰,以提供額外的安全性。
- LevelDB
-
LevelDB是一種開源的硬碟鍵值儲存系統。LevelDB是輕量的,單一目標的持久化庫,支持許多平臺。
- 庫 Library
-
以太坊中的庫,是一種特殊類型的合約:沒有可被支付的函式(payable function),沒有後備函式(fallback function),沒有數據儲存。所以它不能接收或儲存以太,或儲存數據。庫以預先部署程式碼的形式,提供其他合約調用唯讀計算。
- 輕量級客戶端 Lightweight client
-
輕量級客戶端是以太坊客戶端的其中一種,它不在本地儲存區塊鏈的副本,也不驗證區塊和交易。它提供了錢包的功能,可以創建和廣播交易。
- 消息 Message
-
內部交易,不會被序列化,且只在EVM中發送。
- 消息呼叫 Message call
-
將消息從一個帳戶傳送到另一個帳戶的動作。如果目標帳戶為 EVM 程式碼,虛擬機將被啟動,並帶有消息中附帶的狀態。
- METoken
-
Mastering Ethereum Token. 本書中用於演示的 ERC20 代幣。
- 大都會階段 Metropolis Stage
-
大都會是以太坊的第三個開發階段,在2017年10月啟動。
- 礦工 Miner
-
通過重複雜湊計算,為新的區塊尋找有效的工作量證明的網路節點。
- Mist
-
Mist是以太坊基金會創建的第一個以太坊瀏覽器。它還包含一個基於瀏覽器的錢包,這是 ERC20 代幣標準的首次實施(Fabian Vogelsteller,ERC20 的作者也是 Mist 的主要開發人員)。Mist 也是第一個引入camelCase校驗碼(EIP-155)的錢包。Mist 運行完整節點,提供完整的 DApp 瀏覽器,支持基於Swarm的儲存和ENS地址
- 網路 Network
-
將交易和區塊傳播到每個以太坊節點(網路參與者)的對等網路。
非同質性代幣 NFT (Non-Fungible Token) ERC721 提議的代幣標準。 NFT 可被追蹤及交易,但每一枚代幣都是唯一且有區別的。這些代幣不像 ERC20 標準的代幣一樣可相互替換。NFT 可用來代表數位所有權或是實體資產。
- 節點 Node
-
參與到對等網路的軟體客戶端。
- 隨機數 Nonce
-
密碼學中,隨機數指代只可以用一次的數值。在以太坊中用到兩類隨機數。 - 帳戶隨機數 - 這只是一個帳戶的交易計數。 - 工作量證明隨機數- 用於獲得工作證明的區塊中的隨機值(取決於當時的難度)。
- 叔塊 Ommer
-
祖父節點的子節點,但它本身並不是父節點。當礦工找到一個有效的區塊時,另一個礦工可能已經發布了一個競爭的區塊,並添加到區塊鏈頂部。像比特幣一樣,以太坊中的孤兒區塊可以被新的區塊作為ommers包含,並獲得部分獎勵。術語 "ommer" 是對父節點的兄弟姐妹節點的性別中立的稱呼,但也可以表示為“叔叔”。
- Parity
-
以太坊客戶端軟體最突出的支持共同操作(多重簽名)的實現之一。
- 權益證明 Proof-of-Stake (PoS)
-
權益證明是密碼貨幣區塊鏈協議旨在實現分佈式共識的一種方法。權益證明要求用戶證明一定數量的密碼貨幣(網路中的“股份”)的所有權,以便能夠參與交易驗證。
- 工作量證明 Proof-of-Work (PoW)
-
一份需要大量計算才能找到的數據(證明)。在以太坊,礦工必須找到符合網路難度目標的 Ethash 演算法數字解答。
- 收據 Receipt
-
以太坊客戶端返回的數據,表示特定交易的結果,包括交易的雜湊值,其區塊編號,使用的燃氣量,以及在部署智能合約時的合約地址。
- 重入攻擊 Re-entrancy Attack
-
當攻擊者合約(Attacker contracts)調用受害者合約(Victim contracts)的函式時,可以使用這種攻擊。攻擊者合約調用受害者合約中的某一個函式,並讓此函式在執行結束前回頭調用攻擊者合約,攻擊者合約執行後會再次調用受害者合約,並且不斷遞回下去。以這種方式,可以透過跳過受害者合約中的某些部分(如狀態檢查)來盜取資金。 攻擊者必須執行的唯一技巧是在用完燃氣之前中斷遞迴調用,並避免盜用的以太被還原。
- 獎勵 Reward
-
在每個新產生的區塊中會包含一定數量的以太幣,以獎勵找到工作量證明解答的礦工。
- 遞迴長度前綴 Recursive Length Prefix (RLP)
-
RLP 是一種編碼標準,由以太坊開發人員設計用來編碼和序列化任意複雜度和長度的物件(資料結構)。
- 中本聰 Satoshi Nakamoto
-
Satoshi Nakamoto 是設計比特幣及其原始實現Bitcoin Core的個人或團隊的名字。作為實現的一部分,他們也設計了第一個區塊鏈。在這個過程中,他們是第一個解決數位貨幣的雙重支付問題的。他們的真實身份至今仍是個謎。
- Vitalik Buterin
-
Vitalik Buterin 是俄國-加拿大的開發者和作家,以太坊和 Bitcoin 雜誌的聯合創始人。
- Gavin Wood
-
Gavin Wood 是英國的開發者,以太坊的聯合創始人和前 CTO。在2014年8月他提出了 Solidity,用於編寫智能合約的面向合約的程式語言。
- 密鑰(私鑰) Secret key (aka private key)
-
允許以太坊用戶通過創建數位簽章(參見公鑰,地址,ECDSA)證明帳戶或合約的所有權的加密數字。
- SHA
-
安全雜湊演算法(SHA, Secure Hash Algorithm) 是美國國家標準與技術研究院(NIST)發佈的一系列加密雜湊函數。
- SELFDESTRUCT 操作碼
-
只要整個網路存在,智能合同就會存在並可執行。如果它們被編程為自毀的或使用委託調用(delegatecall)或調用程式碼(callcode)執行該操作,它們將從區塊鏈中消失。 一旦執行自毀操作,儲存在合同地址處的剩餘Ether將被發送到另一個地址,並將儲存和程式碼從狀態中移除。 儘管這是預期的行為,但自毀合同的修剪可能或不會被以太坊客戶實施。 SELFDESTRUCT 之前稱作 SUICIDE, 在EIP6中, SUICIDE 重命名為 SELFDESTRUCT。
- 寧靜 Serenity
-
以太坊第四個也是最後一個開發階段。寧靜還沒有計劃發佈的日期。
- Serpent
-
語法類似於Python的過程式(命令式)程式語言。也可以用來編寫函數式(宣告式)程式碼,儘管它不是完全沒有副作用的。首先由Vitalik Buterin創建。
- 智能合約 Smart Contract
-
在以太坊的計算框架上執行的程式。
- Solidity
-
過程式(命令式)程式語言,語法類似於Javascript, C++ 或 Java。以太坊智能合約最流行和最常使用的語言。由 Gavin Wood(本書的聯合作者)首先創造。
- Solidity inline assembly
-
內聯彙編Solidity中包含的使用EVM彙編(EVM 程式碼的人類可讀形式)的程式碼。內聯彙編試圖解決手動編寫彙編時遇到的固有難題和其他問題。
- Spurious Dragon
-
在#2,675,00塊的硬分叉,來解決更多的拒絕服務攻擊向量,以及另一種狀態清除。還有轉播攻擊保護機制。
- Swarm
-
一種去中心化(P2P)的儲存網路。與Web3和Whisper共同使用來構建 DApps。
- Tangerine Whistle
-
在 #2,463,00 塊的硬分叉,改變了某些IO密集操作的燃氣計算方式,並從拒絕服務攻擊中清除累積狀態,這種攻擊利用了這些操作的低燃氣成本。
- 測試網 Testnet
-
一個測試網路(簡稱testnet),用於模擬以太網主要網路的行為。
- 交易 Transaction
-
以特定地址為目標,由發送帳戶簽署並提交到以太坊區塊鏈的數據。交易包含元數據,例如交易的燃氣限額(Gas Limit)。
- Truffle
-
一個最常用的以太坊開發框架。包含一些 NodeJS 包,可以使用 Node Package Manager (NPM) 安裝。
- 圖靈完備 Turing Complete
-
在計算理論中,如果數據操縱規則(如計算機的指令集,程式設計語言或細胞自動機)可用於模擬任何圖靈機,則它被稱為圖靈完備或計算上通用的。這個概念是以英國數學家和計算機科學家阿蘭圖靈命名的。
- Vyper
-
一種高級程式語言,類似Serpent,有 Python 式的語法,旨在接近純函數式語言。由 Vitalik Buterin 首先創造。
- 錢包 Wallet
-
擁有你的所有密鑰的軟體。作為訪問和控制以太坊帳戶並與智能合約互動的界面。請注意,密鑰不需要儲存在你的錢包中,並且可以從不連網儲存裝置(例如USB或紙張)中存取以提高安全性。儘管名字為錢包,但它從不儲存實際的硬幣或代幣。
- Web3
-
Web 的第三個版本。有 Gavin Wood 首先提出,Web3 代表了 Web 應用程式的新願景和焦點:從集中擁有和管理的應用程式到基於去中心化協議的應用程式。
- Wei
-
以太的最小單位,1018 wei = 1 ether.
- Whisper
-
一種去中心化(P2P)消息系統。與Web3和Swarm一起使用來構建 DApps。
- 零地址 Zero address
-
特殊的以太坊地址,全部由
0
組成(即0x0000000000000000000000000000000000000000
),被指定為創建一個智能合約所發起的交易(Transaction)的目標地址(即to
參數的值)。