Skip to content

Latest commit

 

History

History
323 lines (219 loc) · 20.2 KB

術語.asciidoc

File metadata and controls

323 lines (219 loc) · 20.2 KB

快速術語表

這個快速術語表包含許多與以太坊相關的術語。這些術語在本書中都有使用,所以請將其加入書籤以便快速參考。

賬戶 Account

包含地址、餘額,隨機數,以及可選存儲和代碼的對象。賬戶可以是合約賬戶或外部擁有賬戶(EOA,externally owned account).

地址 Address

一般來說,這代表一個EOA或合約,它可以在區塊鏈上接收(目標地址)或發送(源地址)交易。更具體地說,它是ECDSA公鑰的Keccak散列的最右邊的160位。

斷言 Assert

在 Solidity 中,assert(false) 編譯為 0xfe, 是一個無效的操作碼,用盡所有剩餘的燃氣(Gas),並恢復所有更改。 當 assert() 語句失敗時,說明發生了嚴重的錯誤或異常,你必須修復你的代碼。 你應該使用 assert 來避免永遠不應該發生的條件。

大端序 Big-endian

一種數值的位置表示形式,最高有效位放在最前面。對應小端序(little-endian),最低有效位在前。

比特幣改進提議 BIP

比特幣改進提議,Bitcoin Improvement Proposals。比特幣社區成員提交的一組提案,旨在改進比特幣。例如,BIP-21是改進比特幣統一資源標識符(URI)方案的建議。

區塊 Block

區塊是關於所包含的交易的所需信息(區塊頭)的集合,以及稱為ommer的一組其他區塊頭。它被礦工添加到以太坊網絡中。

區塊鏈 Blockchain

由工作證明系統驗證的一系列區塊,每個區塊都連接到它的前任,一直到創始區塊。這與比特幣協議不同,因為它沒有塊大小限制;它改為使用不同的燃氣限制。

拜占庭分叉 Byzantium Fork

拜占庭是大都會( Metropolis )發展階段的兩大分叉之一。它包括EIP-649:大都會難度炸彈延遲和區塊獎勵減少,其中冰河時代(見下文)延遲1年,而區塊獎勵從5個以太坊減至3個以太坊。

編譯 Compiling

將高級編程語言(例如Solidity)編寫的代碼轉換為低級語言(例如EVM字節碼)

共識 Consensus

大量節點,通常是網絡上的大多數節點,在其本地驗證的最佳區塊鏈中都有相同的區塊的情況。 不要與共識規則混淆。

共識規則 Consensus rules

完整節點為了與其他節點保持一致,遵循的區塊驗證規則。不要與共識混淆。

君士坦丁堡 Constantinople

大都會階段的第二部分,2018年中期的計劃。預計將包括切換到混合工作證明/權益證明共識算法,以及其他變更。

合約賬戶 Contract account

包含代碼的賬戶,每當它從另一個賬戶(EOA或合約)收到交易時執行。

合約創建交易 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提案中引入了不可替代的標記標準。與ERC20代幣不同,契約證明了所有權並且不可互換,雖然它們還未在任何管轄區都被認可為合法文件,至少目前不是。

難度 Difficulty

網絡範圍的設置,控制產生工作量證明需要多少計算。

數字簽名 Digital signature

數字簽名算法是一個過程,用戶可以使用私鑰為文檔生成稱為“簽名”的短字符串數據,以便具有簽名,文檔,和相應公鑰的任何人,都可以驗證(1 )該文件由該特定私鑰的所有者“簽名”,以及(2)該文件在簽署後未被更改。

橢圓曲線數字簽名算法 ECDSA

橢圓曲線數字簽名算法( Elliptic Curve Digital Signature Algorithm,ECDSA )是以太坊用來確保資金只能由合法所有者使用的加密算法。

以太坊改進建議 EIP

以太坊改進建議,Ethereum Improvement Proposals,描述以太坊平臺的建議標準。 EIP是向以太坊社區提供信息的設計文檔,描述新的功能,或處理過程,或環境。有關更多信息,請參見 https://github.com/ethereum/EIPs(另請參見下面的ERC定義)。

熵 Entropy

在密碼學領域,表示可預測性的缺乏或隨機性水平。在生成祕密信息(如主私鑰)時,算法通常依賴高熵源來確保輸出不可預測。

以太坊名稱服務 ENS

以太坊名稱服務,Ethereum Name Service. 更多信息,參見 https://github.com/ethereum/ens/.

外部擁有賬戶 EOA

外部擁有賬戶,Externally Owned Account. 由或為以太坊的真人用戶創建的賬戶。

以太坊註釋請求 ERC

以太坊註釋請求 Ethereum Request for Comments. 一些 EIP 被標記為 ERC,表示試圖定義以太坊使用的特定標準的建議。

Ethash

以太坊1.0的工作量證明算法。更多信息,參見 https://github.com/ethereum/wiki/wiki/Ethash.

以太 Ether

以太 Ether,是以太坊生態系統中使用的本地貨幣,在執行智能合約時承擔燃氣費用。它的符合是 Ξ, 極客用的大寫 Xi 字符.

Event

事件允許EVM日誌工具的使用,後者可以用來在DApp的用戶界面中調用JavaScript回調來監聽這些事件。更多信息,參見 http://solidity.readthedocs.io/en/develop/contracts.html#events。

以太坊虛擬機 EVM

Ethereum Virtual Machine, 基於棧的,執行字節碼的虛擬機。在以太坊中,執行模型指定了系統狀態如何在給定一系列字節碼指令和少量環境數據的情況下發生改變。 這是通過虛擬狀態機的正式模型指定的。

EVM彙編語言 EVM Assembly Language

字節碼的人類可讀形式。

後備方法 Fallback function

默認的方法,當缺少數據或聲明的方法名時執行。

水龍頭 Faucet

一個網站,為想要在testnet上做測試的開發人員提供免費測試以太形式的獎勵。

前沿 Frontier

以太坊的試驗開發階段,從2015年7月至2016年3月。

Ganache

私有以太坊區塊鏈,你可以在上面進行測試,執行命令,在控制區塊鏈如何運作時檢查狀態。

燃氣 Gas

以太坊用於執行智能合約的虛擬燃料。以太坊虛擬機使用會計機制來衡量天然氣的消耗量並限制計算資源的消耗。參見“圖靈完備”。 燃氣是執行智能合約的每條指令產生的計算單位。燃氣與以太加密貨幣掛鉤。燃氣類似於蜂窩網絡上的通話時間。因此,以法定貨幣進行交易的價格是 gas (ETH /gas)(法定貨幣/ETH)。

燃氣限制 Gas limit

在談論區塊時,它們也有一個名為燃氣限制的區域。它定義了整個區塊中所有交易允許消耗的最大燃氣量。

創世區塊 Genesis block

區塊鏈中的第一個塊,用來初始化特定的網絡和加密數字貨幣。

Geth

Go語言的以太坊。Go編寫的最突出的以太坊協議實現之一。

硬分叉 Hard fork

硬分叉也稱為硬分叉更改,是區塊鏈中的一種永久性分歧,通常發生在非升級節點無法驗證升級節點創建的遵循新共識規則的區塊時。不要與分叉,軟分叉,軟件分叉或Git分叉混淆。

哈希值 Hash

通過哈希方法為可變大小的數據生成的固定長度的指紋。

分層確定錢包 HD wallet

使用分層確定密鑰生成和傳輸協議的錢包(BIP32)。

分層確定錢包種子 HD wallet seed

HD錢包種子或根種子是一個可能很短的值,用作生成HD錢包的主私鑰和主鏈碼的種子。錢包種子可以用助記詞表示,使人們更容易複製,備份和恢復私鑰。

家園 Homestead

以太坊的第二個發展階段,於2016年3月在1,150,000區塊啟動。

冰河時代 Ice Age

以太坊在200,000區塊的硬分叉,提出難度指數級增長(又名難度炸彈),引發了到權益證明Proof-of-Stake的過渡。

集成開發環境 IDE (Integrated Development Environment)

集成的用戶界面,結合了代碼編輯器、編譯器、運行時和調試器。

不可變的部署代碼問題 Immutable Deployed Code Problem

一旦部署了契約(或庫)的代碼,它就成為不可變的。修復可能的bug並添加新特性是軟件開發週期的關鍵。這對智能合約開發來說是一個挑戰。

互換客戶端地址協議 Inter exchange Client Address Protocol (ICAP)

以太坊地址編碼,與國際銀行帳號(IBAN)編碼部分兼容,為以太坊地址提供多樣的,校驗和的,可互操作的編碼。 ICAP地址可以編碼以太坊地址或通過以太坊名稱註冊表註冊的常用名稱。他們總是以XE開始。其目的是引入一個新的IBAN國家代碼:XE,X表示"extended", 加上以太坊的E,用於非管轄貨幣(例如XBT,XRP,XCP)。

內部交易(又稱“消息”)Internal transaction (also "message")

從一個合約地址發送到另一個合約地址或EOA的交易。

Keccak256

以太坊使用的加密哈希方法,Keccak256 被標準化為 SHA-3.

密鑰推導方法 Key Derivation Function (KDF)

也稱為密碼擴展算法,它被keystore格式使用,以防止對密碼加密的暴力破解,字典或彩虹表攻擊。它重複對密碼進行哈希。

Keystore 文件

JSON 編碼的文件,包含一個(隨機生成的)私鑰,被一個密碼加密,以提供額外的安全性。

LevelDB

LevelDB是一種開源的磁盤鍵值存儲系統。LevelDB是輕量的,單一目標的持久化庫,支持許多平臺。

庫 Library

以太坊中的庫,是特殊類型的合約,沒有用於支付的方法,沒有後備方法,沒有數據存儲。所以它不能接收或存儲以太,或存儲數據。庫用作之前部署的代碼,其他合約可以調用只讀計算。

輕量級客戶端 Lightweight client

輕量級客戶端是一個以太坊客戶端,它不存儲區塊鏈的本地副本,也不驗證塊和事務。它提供了錢包的功能,可以創建和廣播交易。

消息 Message

內部交易,從未被序列化,只在EVM中發送。

大都會階段 Metropolis Stage

大都會是以太坊的第三個開發階段,在2017年10月啟動。

METoken

Mastering Ethereum Token. 本書中用於演示的 ERC20 代幣。

礦工 Miner

通過重複哈希計算,為新的區塊尋找有效的工作量證明的網絡節點。

Mist

Mist是以太坊基金會創建的第一個以太坊瀏覽器。它還包含一個基於瀏覽器的錢包,這是ERC20令牌標準的首次實施(Fabian Vogelsteller,ERC20的作者也是Mist的主要開發人員)。Mist也是第一個引入camelCase校驗碼(EIP-155)的錢包。Mist運行完整節點,提供完整的DApp瀏覽器,支持基於Swarm的存儲和ENS地址

網絡 Network

將交易和區塊傳播到每個以太坊節點(網絡參與者)的對等網絡。

節點 Node

參與到對等網絡的軟件客戶端。

隨機數 Nonce

密碼學中,隨機數指代只可以用一次的數值。在以太坊中用到兩類隨機數。

  • 賬戶隨機數 - 這只是一個賬戶的交易計數。

  • 工作量證明隨機數- 用於獲得工作證明的區塊中的隨機值(取決於當時的難度)。

Ommer

父節點的子節點,但它本身並不是父節點。當礦工找到一個有效的區塊時,另一個礦工可能已經發布了一個競爭的區塊,並添加到區塊鏈頂部。像比特幣一樣,以太坊中的孤兒區塊可以被新的區塊作為ommers包含,並獲得部分獎勵。術語 "ommer" 是對父節點的兄弟姐妹節點的性別中立的稱呼,但也可以表示為“叔叔”。

麻痺問題 Paralysis Problem

加密貨幣密鑰管理的一種通用的強大方法是多重簽名交易,更一般地稱為密鑰共享。但是,如果其中一個共享密鑰丟失會發生什麼?結果將是所有資金的丟失。 這不是唯一的壞情況。密鑰共享的持有者也可能有不同的想法,關於應該如何花錢不能達成協議。我們使用術語 麻痺問題 Paralysis Problem 來表示任何這些尷尬的情況。

麻痺證明系統 Paralysis Proof System

麻痺證明有助於解決加密貨幣中普遍存在的密鑰管理問題。參見 Paralysis Problem。麻痺證明系統可以容忍在玩家不能一致行動的環境中的系統癱瘓。使用智能合約,以太坊可以相對容易地實現癱瘓證明系統。

Parity

以太坊客戶端軟件最突出的互操作實現之一。

權益證明 Proof-of-Stake (PoS)

權益證明是加密貨幣區塊鏈協議旨在實現分佈式共識的一種方法。權益證明要求用戶證明一定數量的加密貨幣(網絡中的“股份”)的所有權,以便能夠參與交易驗證。

工作量證明 Proof-of-Work (PoW)

一份需要大量計算才能找到的數據(證明)。在以太坊,礦工必須找到符合網絡難度目標的Ethash算法的數字解決方案。

收據 Receipt

以太坊客戶端返回的數據,表示特定交易的結果,包括交易的哈希值,其區塊編號,使用的燃氣量,以及在部署智能合約時的合約地址。

重入攻擊 Reentrancy Attack

當攻擊者合約(Attacker contracts)調用受害者合約(Victim contracts)的方法時,可以重複這種攻擊。讓我們稱它為victim.withdraw(),在對該合約函數的原始調用完成之前,再次調用victim.withdraw()方法,持續遞歸調用它自己。 遞歸調用可以通過攻擊者合約的後備方法實現。 攻擊者必須執行的唯一技巧是在用完燃氣之前中斷遞歸調用,並避免盜用的以太被還原。

Require

在Solidity中,require(false)編譯為 0xfd,它是 REVERT 操作碼。REVERT指令提供了一種停止執行和恢復狀態更改的方式,不消耗所有提供的燃氣並且能夠返回原因。 應使用require函數來確保滿足有效條件,如輸入或合同狀態變量,或者驗證調用外部合約的返回值。 在*拜占庭*網絡升級之前,有兩種實際的方式來還原交易:耗盡燃氣或執行無效指令。這兩個選項都消耗了所有剩餘的氣體。 在*Byzantium*網絡升級之前,在*黃皮書*中無法找到此操作碼,並且因為該操作碼沒有規範,所以當EVM執行到它時,會拋出一個 invalid opcode error

還原 Revert

當需要處理與 require() 相同的情況,但使用更復雜的邏輯時,使用revert()。 例如,如果你的代碼有一些嵌套的 if/else 邏輯流程,你會發現使用 require() 而不是require()是合理的。

獎勵 Reward

Ether(ETH)的數量,包含在每個新區塊中的金額作為網絡對找到工作證明解決方案的礦工的獎勵。

遞歸長度前綴 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

安全哈希算法 Secure Hash Algorithm,SHA 是美國國家標準與技術研究院(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

由原始帳戶簽署的提交到以太坊區塊鏈的數據,並以特定地址為目標。交易包含元數據,例如交易的燃氣限額。

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

特殊的以太坊地址,所有20個位都為0,A special Ethereum address, with all 20-bytes as zeros, that is specified as a destination address in the "contract creation transaction".