區塊鏈的類型
在本文中,我們將介紹在區塊鏈的鍊結(chain)建立的因素、區塊鏈解決方案中的玩家、可用的不同類型的區塊鏈以及如何對它們進行分類。還涵蓋了智慧合約、基於區塊鏈的代幣以及Gas在以太坊中的工作原理。
在深入研究各種類型的區塊鏈之前,必須了解區塊鏈的機制在區塊鏈中將資料區塊鏈接在一起。將區塊鏈接在一起的目的是"資料不變性",它本質上建立了我們鏈接資料的"持久性",並確保它不會在沒有人注意到的情況下被更改。將區塊鏈接在一起是從一個新區塊的header開始。這個header包含有關區塊本身的資訊,包括平台版本、timestamp、難度等級、nonce以及它所鏈接的前一個區塊資料的hash值。而來自當前區塊的所有資料,包括其header都是經過哈希處理,當前區塊的哈希值將被copy並被存儲在下一個區塊的header中。
在以太坊中,nonce 就是我們在其他區塊鍊文章介紹的那樣。每筆交易(在外部帳戶中)都有一個nonce。它是從特定地址發送的交易數量。每當我們發送交易時,nonce 都會增加 1。交易中使用 nonce 的原因是為了確保交易是按順序執行。
通過這個鏈接過程,所有區塊都鏈接在一起,因此,更改區塊鏈中任何區塊中的資料將導致該區塊的哈希值與存儲在引用它的下一個區塊的eader中的哈希值不匹配。任何希望更改存儲在區塊鏈上的記錄的人都將被迫重新驗證網路上大多數節點上的每個後續區塊。除了非常小的網路之外,這樣做將需要大量且非常不切實際的計算能力,相對於網路攻擊者可以實現的潛在回報或收益是非常小的。
區塊鏈的另一個key point是資料能是append-only,而不是傳統的資料存儲(提供CRUD功能),區塊鏈上的資料不能delete或update(只有create/read)。這意味著寫入區塊鏈的所有資料都是永久性的 — — 在評估潛在的區塊鏈解決方案時要牢記的一個重要考慮因素。這種append-only機制提供了所有事件的詳細歷史記錄,而不僅僅是當前狀態的快照。
許多人沒有意識到實際上有許多不同類型的區塊鏈技術是可用並選擇使用哪一種是一項重要的決定,而且可能會產生長期影響。
Public 與 Private Blockchain
在選擇正確的區塊鏈技術時,首先要確定要決定的是"誰"能將資料寫入區塊鏈中?基本上,誰能將資料寫入區塊練的這一決定將產生兩種不同的區塊鏈類型:
- Public Blockchain— 這種類型是任何人都可以些入資料進入區塊鍊
- Private Blockchain — 只有特定人可以將資料寫入
一般來說,Private blockchain在公司和私人組織需要建立安全且是許可制的應用程式,其中辨認用戶的身份的並且這個區塊練需要是高效能的要求是很重要的。 Private blockchain的網路比其Public blockchain網路要小得多,規劃和提供所有組件的適當正常運行時間是一個關鍵考慮因素。
Public blockchain可以包含任何類型的資料,儘管它們目前主要用於記錄多方財務價值上的交換。 Public blockchain上的一個區塊可以寫入各種不相關的交易,無論是財務交易還是其他交易。
Open 與 Closed Blockchain
選擇正確的區塊鏈技術的第二個決定是誰能從區塊鏈中讀取資料? 也只有兩個選項可供選擇:
- Open Blockchain — 每個人都可以讀取資料
- Closed Blockchain — 只有特定人員才可以讀取資料
重要的是要注意,在討論Public與Private、Open與Closed時,我們討論的是解決方案矩陣上的變量點,而不是絕對值或二進制值。 確定需要哪種類型的區塊鏈的一種好方法是確定是否”所有參與者都被認為是平等的”,或者某些參與者是否應該具有其他人沒有的”能力或權限”? 回答這個問題將有助於解決方案使用許可制或非許可制的區塊鏈技術。 許可制區塊鏈的一個例子是選舉委員會主席可以將候選人加入到選舉清單中。 所有人都可以交換和交易的加密貨幣是非許可制的區塊鏈的一個例子。
開源
大多數Public Blockchain都是開源項目,任何開發人員或組織都可以使用這個開源代碼庫來建立自己的private instance。 這些insatnce可以複製其Public blockchain的現有功能,或者可能包含在source code由企業的開發人員分叉和修改後實現的附加邏輯。
智慧合約
智慧合約,也稱為chaincode,是一種將規則和決策點寫到區塊鏈上的交易和流程中的方法。 對於那些具有開發背景的人來說,智慧合約可以被認為是傳統開發術語中的一類。 智慧合約直接發佈到區塊鏈,並允許交易自動化且確保它們都遵循相同的商業/邏輯規則。 每個智慧合約及其執行的交易都會記錄或交易的形式存在於區塊鏈上。 因此,智慧合約也作為區塊鏈上的永久實體存在 — — 這是在評估智慧合約作為潛在解決方案組件時的重要一點。
智慧合約提供了:
- 自治(Autonomy):任何人都可以開發智慧合約,不需要律師、經紀人或稽核等中間人
- 備份(backup):部署到其中的區塊鏈和智慧合約可以提供永久記錄,即使建立者不再從事該業務,也可以進行稽核、洞察和可追溯性
- 效率:去除流程的中間人通常會顯著提高流程效率
- 準確性:用可執行代碼代替人工中間人可確保流程始終以相同的方式執行
- 節省成本:去除中間人的機制通常可以顯著降低成本
Tokens(代幣)/Coins(硬幣)
一些平台提供內建的代幣架構,用於在區塊鏈上建立自己的代幣或硬幣。 這些硬幣或代幣可以在區塊鏈系統中呈現貨幣價值。 代幣可以與現實世界的資產來連結,但這不是必需的。 Public和Private blockchain都可以發行代幣或硬幣。
通過發行自己的代幣/硬幣,資產的部分所有權是一種創造性的用途或選項。 在區塊鏈上發行代幣/硬幣的一些主要好處包括:
- 在區塊鏈上可以追踪代幣的所有權
- 代幣的交易和交換在區塊鏈上進行管理
在區塊鏈上有兩種類型的代幣:
- Equity tokens — 代表現實世界中的資產所有權
- Utility tokens — 代表這個區塊鏈平台本身使用上的信用,也就是擁有這個代幣可以使用哪些功能或價值
以太坊區塊鏈有一個代幣標準,這是目前為止最廣泛使用的區塊鏈標準。 而標準是:
• ERC20 — 最常見的標準。 目前唯一被接受的 ERC 標準。
• ERC223 — 提議的新代幣標準,將可以兼容ERC20。 改進智慧合約轉移會更安全、更快、更便宜。
- ERC721 — NFT(non-fungible tokens)非同質化代幣,可用於資產代幣化
以太坊中的Gas
以太坊區塊鏈特有的是gas的這個概念。這個概念誕生於以太坊的開發者看到比特幣的一些限制,特別是它的開發語言,稱為比特幣腳本。比特幣腳本的主要限制之一是無法在該語言中執行循環(loops)或迭代(iterations)。這嚴重限制了開發人員可以在比特幣腳本中建立的函數類型。以太坊開發人員引入了 gas 的概念,來彌補比特幣腳本中缺乏的功能,以便為開發人員提供圖靈完整的智慧合約開發語言,例如 Solidity 和 Viper。
Gas 只是用戶用來支付在以太坊區塊鏈上處理或驗證的交易成本的方式,也就是交易手續費。 Gas 是給予所有礦工(node)的單獨獎勵,獨立於共識挖礦獎勵(Consensus mining reward)。 Gas 用於補償網路上所有節點記錄單個交易所產生的成本。以太坊區塊鏈上的每筆交易(寫入)都必須使用 gas 提交,任何未使用的 gas 交易都會被拒絕。而從區塊鏈讀取資料不被視為交易,因此不會產生 gas 成本。 Gas 的概念不僅支付了在其帳本副本上記錄交易的成本,而且還可以防止無限循環並關閉某些安全漏洞。
一個函數(在智慧合約中)用盡 gas 將被消滅掉,並且不會將 gas 返還給用戶。要注意的是,gas 的管理是在協議等級(Protocol level)處理的 — — 協議本身將從用戶的錢包中刪除以太幣,將其轉換為請求的 gas 量,並在將其轉換回來後將任何未使用的 gas 退回到錢包。用戶不需要干預甚至不需要意識到這種情況的發生。這也意味著開發人員只需要在其功能中考慮交易的 gas 成本;他們無需擔心如何管理將以太幣轉換為 gas 以及將 gas 轉換回以太幣。未完成交易的順序不是由每筆交易支付的最高或最低 gas 決定的。
最後,計算處理交易所需的Gas量是可能的,但一般的經驗法則是,智慧合約中的寫入操作越多,所需的Gas就越多。 Gas 通常與以太幣脫鉤,因此實際 Gas 價格成本保持不變,而只是以太幣價格波動。如果不使用以太坊區塊鏈,重要的是要確定一個人將如何實施他們自己的 gas/fee/incentive 系統,或者以其他方式補償節點在記錄新的單一交易的行為。
Gas也與所執行的操作類型相關 — — 更複雜的操作將需要比簡單操作更多的Gas。 Eth Gas Station 等線上計算器可用於幫助開發人員和架構師根據正在執行的操作估算 gas 成本。
無區塊的解決方案
IoTA 等一些平台被稱為“無區塊”解決方案。 這些平台的獨特之處在於,每個單獨的交易都由少數peer nodes驗證,而不是交易被組合成區塊後由整個網路驗證。 與傳統的區塊鏈解決方案相比,無區塊解決方案可以提供更高的效能和交易能量,但與傳統的區塊鏈解決方案相比,安全性有所降低。