以太坊知識庫

Ethereum Knowledge

帳戶 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 :

以太幣的一種單位。10^15^ 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 :

以太的最小單位,10^18^ wei = 1 ether.

Whisper :

一種去中心化(P2P)消息系統。與Web3和Swarm一起使用來構建 DApps。

零地址 Zero address :

特殊的以太坊地址,全部由 0 組成(即 0x0000000000000000000000000000000000000000),被指定為創建一個智能合約所發起的交易(Transaction)的目標地址(即 to 參數的值)。

Latest Posts

比特幣的區塊時間戳保護規則
比特幣的區塊時間戳保護規則

摘要: 我們檢查了比特幣鮮為人知的兩個規則,這些規則用於防止不法礦工操縱區塊時間戳以獲得不公平的高額挖礦報酬。我們討論了為什麼可能選擇類似2小時MAX_FUTURE_BLOCK_TIME值之類的常數,以及該值會對比特幣現金有何特定的影響。我們得出的結論是,考慮到實施規則時缺乏功能網路,比特幣的時間保護規則似乎相當有效,令人讚嘆。6 NOVEMBER 2019, BITMEX RESEARCH

過去到現在的Bitcoin性能測試
過去到現在的Bitcoin性能測試

摘要: 我們成功地進行了 35 次初始區塊下載(Initial Block Download, IBD),並記錄了節點與網路同步所花費的時間,從而測試了 Bitcoin Core 的性能。我們使用了從 2012 年到 2019 年的軟體版本。結果表明,軟體性能得到了顯著而持續的改善,但差異也很大。即使使用最新的電腦硬體,舊版本的 Bitcoin 仍難以克服 2015 年至 2016 年期間的交易量提升。因此,我們得出結論,如果沒有軟體增強功能,今天的初始同步幾乎是不可能的。2019年11月29日, BITMEX Research

使用區塊鏈和感知雜湊達到去中心化之圖像共享和版權保護
使用區塊鏈和感知雜湊達到去中心化之圖像共享和版權保護

本篇文章翻譯自 Decentralised Image Sharing and Copyright Protection using Blockchain and Perceptual Hashes,媒體區塊鏈的範疇越來越發人深省,究竟該如何透過去中心化的機制來達到版權保護呢?一起來閱讀本篇文章吧!