Hi, I am Funbi.
Have fun. Be active with Each1.
 
 
 

Wakacoin 區塊鏈

一個完全去中心化的公有鏈
每個人都可以取得和使用 Wakacoin
 

什麼是區塊鏈?

區塊鏈的概念簡單來說是一種記帳方式,這種記帳方式是讓每個參與者都持有一份帳本,比如有一萬個參與者,就有一萬本帳本,而這些帳本透過區塊鏈技術保持著同步,因此即便有少數帳本被竄改,在同步時仍會被回復成多數帳本所記載的資料,所以,這樣的記帳方式具有無法被竄改的特性。

史上第一個應用區塊鏈技術並廣為人知的是比特幣,比特幣問世至今十幾年,以其實際的運作證明了區塊鏈這種記帳方式是可行的。

然而,每一條區塊鏈會有一份專屬的共識協議,記載了數位貨幣的發行數量與種種規範,這樣子的規範固然具有不可竄改的優點,但也侷限了每一條區塊鏈的應用,因此,當區塊鏈這個概念被越來越多人理解與採用後,勢必會發展出許多條區塊鏈以因應各種應用場景。

本文接下來將說明一條「完全去中心化」的區塊鏈,稱之為 Wakacoin。

Wakacoin、比特幣、以太坊區塊鏈比較表  

Wakacoin比特幣以太坊
賬本開始時間202020092015
架構複雜度讓它盡可能簡單簡單非常複雜
智能合約YesNoYes
原生加密幣供給量每年大約 5 萬個大約 2 千萬個首年度初始供應 7,200 萬個
之後每年大約新增 1,800 萬個
出塊時間大約 10 分鐘大約 10 分鐘大約 12 秒
交易手續費
每筆交易 1 個 wakacoin
無固定費用

由用戶自行設定手續費,如果手續費設定太低,可能不會有礦工願意處理該交易。

如果您的交易超過幾天都沒有被任何區塊收錄,那麼很可能是您的費用設置過低,您需要再次提交新交易並設置更高的費用。

而您之前所提交的舊交易,您只能假設永遠不會有礦工願意處理,因為以區塊鏈實現電子現金,為了避免雙重花費,已經提交的交易是不可以取消的。
無固定費用

由用戶自行設定手續費,如果手續費設定太低,可能不會有礦工願意處理該交易。
安全性在 Wakacoin 開放原始碼中,每筆交易都被要求得超過 255 個確認。

Wakacoin 智能合約的用戶可以通過添加新合約來修復合約漏洞。Wakacoin 智能合約機制完整保留了用戶創建新智能合約和添加修正版的版本紀錄,確保這些智能合約的內容未經篡改並且可以被公眾驗證。
建議用戶每筆交易至少等待六個確認。理論上,等待超過 120 個確認可以避免 51% 攻擊。縱觀以太坊的歷史,有很多駭客攻擊成功的例子。以太坊的硬分叉導致以太幣分裂為不同的加密貨幣,進而衍生出更多的攻擊方式,如重放攻擊。
開放原始碼https://github.com/wakacoin/https://github.com/bitcoin/https://github.com/ethereum/

賬本開始時間

Wakacoin 區塊鏈的開發者參考了 2009 年到 2019 年這十年的區塊鏈歷史經驗,包括共識協議、系統架構、開源代碼,然後從零開始構建 Wakacoin 區塊鏈。

Wakacoin 的設計是一種新的區塊鏈,旨在解決比特幣和以太坊這兩個早期區塊鏈的問題,並考慮到量子計算機時代到來後的問題。

後量子密碼學(PQC)將取代現有的密碼系統,例如 RSA 和 ECC,這些系統正受到成熟的量子電腦的嚴重威脅,這是現在進行式,已非憑空想像,美國國家標準與技術研究院(NIST)已經選定了四種演算法作為 PQC 的標準。全球所有系統,而不僅僅是區塊鏈,都必須了解何時切換到 PQC。

舉例來說,銀行網站或我們日常生活中使用的線上服務無需運營商向使用者解釋何時切換到 PQC。當需要切換時,全球所有系統都必須更新,否則將容易受到駭客攻擊。但是,開源專案必須在官方文件中明確說明切換到 PQC 的細節,以便開源使用者能夠達成共識。

由於 Wakacoin 區塊鏈是一個採用工作量證明(PoW)機制的開源區塊鏈,隨著用戶數量增加,它會自然而然越來越去中心化。Each1.net 作為首個 Wakacoin 礦池,幫助使用者可以透過瀏覽器挖礦。它的目標是幫助那些沒有程式設計技能的人也有機會成為早期用戶。畢竟,世界上 99% 的人口都不是程式設計師。真正的公平應該意味著,在早期階段,世界上的每個人都可以免費獲得 Wakacoin,而不僅僅是程式設計師受益。

架構複雜度

在加密貨幣的存儲結構上,比特幣和 Wakacoin 採用地址,以太坊採用賬戶。

使用地址作為加密幣存儲結構的優點是架構簡單,隱私保護度高。 以太坊採用賬戶概念作為加密幣存儲結構的優勢在於更接近用戶的直覺認知。然而,堅持用戶的直覺認知意味著其架構往往會很複雜。

以太坊將出塊時間縮短到十幾秒,導致在礦工挖礦的過程中會出現大量的候選區塊。試想一下,當全球多個節點同時挖礦,出塊時間只有十幾秒的時候,必然會同時產生大量的候選區塊。以太坊使用複雜的規則來解決這個問題。此外,以太坊將智能合約直接嵌入到區塊鏈中,這是另一個複雜的功能。由於以太坊的架構非常複雜,最終所產出的區塊鏈體積也非常龐大,你可能很難找到有人擁有完整的以太坊區塊鏈帳本。

今天,我們都可以理解幾個事實。首先,區塊鏈確實是一種有用的技術。其次,區塊鏈的概念是一個非常低效的 P2P 網絡。第三,架構越簡單,開源代碼越容易被一個人獨立理解;反之,複雜的架構需要一群人共同維護,每個人往往只能理解其中一部分的開源代碼。最後,由於區塊鏈是基於分佈式賬本的概念來實現賬本不可篡改的理想,所有持有完整賬本的節點都應該能夠隨時驗證手中的賬本。

Wakacoin 的架構設計為盡可能簡單,並以原創理念實現智能合約功能。Wakacoin 區塊鏈的架構比比特幣更簡單,不支持任何腳本語言。這意味著 Wakacoin 區塊鏈的開源代碼可以很容易被程式師理解,確認開源代碼的內容確實是安全可靠的。

智能合約

比特幣區塊鏈沒有實現智能合約功能。幾年後,有人將中間層概念用作比特幣的智能合約層。

以太坊使用複雜的腳本語言在區塊鏈中實現智能合約功能。這種方法有很多缺點,包括使區塊鏈複雜化,使區塊鏈效率更低;增加區塊鏈的規模,人們不確定是否還有礦工擁有完整的以太坊區塊鏈,更不用說驗證整個區塊鏈; 用戶編寫的智能合約代碼不能有任何漏洞,當智能合約出現漏洞時,用戶無法修復漏洞,即使只是可以被駭客利用的安全漏洞; 使用以太坊區塊鏈智能合約構建的 web3 應用程序,運作時的效率非常低,用戶體驗非常差。

Wakacoin 智能合約的用戶可以通過添加新合約來修復合約漏洞。Wakacoin 智能合約機制完整保留了用戶創建新智能合約和添加修正版本的版本紀錄,確保這些智能合約可以被公眾驗證並且合約內容未經篡改。

Wakacoin 以合約鏈的形式實現智能合約功能。每個地址的密鑰可以生成和管理一條合約鏈,並將合約鏈的區塊哈希以交易的形式存儲在主鏈中。

使用 Wakacoin 區塊鏈智能合約有很多優勢。由於用戶可以在用戶端的合約鏈內構建無限多合約後,才傳送一個合約鏈的最新區塊哈希到主鏈進行防竄改認證,這意味著許多合約卻僅僅只要支付一筆交易手續費,所以使得使用 Wakacoin 區塊鏈智能合約的成本可以非常低。此外,使用 Wakacoin 區塊鏈智能合約構建的 web3 應用程序的運行效率與人們日常生活中常用的一般應用程序相同。

交易手續費

在比特幣區塊鏈中,由於處理交易需要巨大的計算資源,超過 10% 的礦工不願意處理任何交易,他們只願意專注於獲取新幣,並且這種趨勢仍在持續上升中。此外,對於比特幣區塊鏈的用戶來說,如何設置交易手續費是一件很麻煩的事情。再者,在比特幣白皮書中,當比特幣區塊鏈停止鑄造新幣時,交易費是否仍足以吸引礦工繼續維護比特幣區塊鏈是一個不確定的議題。

在 Wakacoin 共識協議中,每筆交易都有 1 wakacoin 的固定費用,這確保了始終有足夠的激勵來吸引礦工處理交易。礦工現在加入還是十年後加入是公平的。當交易量越大時,交易費總量就越高。當礦工越多時,交易量就越大。依此類推。

以比特幣為例。比特幣於2009年推出,大約在2014年左右出現擁堵,這也是史上第二個區塊鏈 (以太坊) 誕生的原因。由於基於中本聰理論所建構的區塊鏈無法在同一個區塊內處理過多的交易,Wakacoin區塊鏈 採用固定的 1 枚 wakacoin 交易費,鼓勵直接使用該區塊鏈的鏈上交易者只進行大宗 wakacoins 交易。一個 5MB 的區塊最多只能記錄 5,000 筆交易,理想情況下,每筆交易都盡可能包含大量的 wakacoins。由於每年僅發行 5萬枚 wakacoins(原生加密幣),因此 wakacoins 將非常適合用於價值儲存。

Wakacoin區塊鏈 原生支援 智能合約功能,可以讓用戶透過智能合約發行代幣 (token)。例如,CBS(Coin Birds Stablecoin)是第一個使用 Wakacoin 智能合約發行的品牌代幣。用戶可以效仿 CBS 的做法,發行以自有品牌命名的代幣,用於日常消費,例如購買咖啡。

安全性

在 Wakacoin 的開源代碼中規定每筆交易需要經過 255 次確認。由於超過 255 個區塊的哈希疊加保證了鏈的安全性和交易的安全性,使得駭客無法進行 51% 攻擊,鏈的保護不再需要考慮算力的多寡。

Wakacoin區塊鏈最優先考慮的是安全性,一個數位貨幣系統必須 100%安全 才有真正的長期價值。基於比特幣的經驗,超過120次確認(即超過120個哈希堆疊)已經是無可爭議的安全(不考慮量子計算的情況下)。無論算力多龐大,堆疊超過 120 個哈希在理論上就是無可爭議的安全。如果您具有電腦科學背景,您可以運用數學證明,即使您擁有世界上所有的算力,您也無法篡改疊加了超過 120個雜湊值的區塊資料(即超過120個哈希堆疊的區塊)。

假設世界上只有三台算力相當的電腦在運行 Wakacoin 區塊鏈。其中一台是誠實的,另外兩台是不誠實的(由同一攻擊者控制)。這意味著攻擊者擁有足夠的算力發動 51% 攻擊。然而,由於 Wakacoin 區塊鏈的開源程式碼規定每筆交易需要 255 次確認,攻擊者仍然無法透過 51% 攻擊竊取任何 wakacoins。

51%攻擊指的是不誠實節點的數量多於誠實節點。然而,如果給誠實節點足夠的時間來驗證不誠實節點提交的區塊,誠實節點會拒絕那些無法驗證的區塊。因此,51%攻擊很難針對超過6次確認的區塊發動。比特幣社群的專家普遍認為,超過120次確認的區塊是徹底安全的。

由於 Wakacoin 區塊鏈開源程式碼規定每筆交易需要 255 個確認,因此針對 Wakacoin 區塊鏈的 51% 攻擊毫無意義。這是因為誠實節點至少有兩天的時間來驗證不誠實節點傳遞的區塊。

為什麼 Wakacoin 區塊鏈採用 255 個確認而不是 120 個確認?因為 120 個確認意味著大約需要一天時間產生 120 個區塊,而 255 個確認則是大約需要兩天。考慮到安全性的最大化,一天和兩天對使用者來說沒有區別。然而,兩天時間意味著可以讓維護區塊鏈的工程師們有更多的應變時間。此外,開放原始碼中設定所需要的確認數量涉及到一個參數欄位。最小的參數欄位是 uint8 類型,範圍為 0 到 255,因此乾脆地將其指定為 uint8 最大值 255。

此參數在開源程式碼中為 spendableOutputConfirmations,如果您有興趣可以參見 https://github.com/wakacoin/blockchain/blob/master/src/wakacoin/config.go

當比特幣剛出現時,由於無人擁有相關經驗,最初的想法是用它來買咖啡之類的東西,因此對確認次數沒有強制性要求。試想一下,一次確認需要10分鐘。後來人們發現,至少要6次確認,也就是一個小時。 120次確認大約需要一天的時間。

如果我們願意接受每筆交易需要兩天(255 次確認)才能完成,以此換取無可爭議的安全性,那麼即使世界上只有一台電腦運行 Wakacoin 區塊鏈,意味著即使算力非常低,Wakacoin 區塊鏈仍然是完全安全的。

大多數人的擔憂實際上源於一種刻板印象,即區塊鏈需要強大的算力才能確保該區塊鏈的安全。事實上,如果你用個人電腦在一秒鐘內對一個數位內容生成其雜湊值 (hash),與你用超級電腦(即擁有強大運算能力)對相同數位內容生成的雜湊值 (hash) 是相同的。根據中本聰的論文,區塊鏈唯一的安全隱患是51%攻擊 (比特幣區塊鏈運行多年的實踐結果也證明了確實如此)。強大的運算能力可以增加51%攻擊的難度。 51%攻擊的目標是最新生成的區塊,也就是尚未獲得六次確認的最新交易。

因此,由於超過 255 個區塊的哈希疊加保證了鏈的安全性和交易的安全性,駭客無法進行 51% 攻擊,Wakacoin 區塊鏈的保護不再需要考慮算力大小。

Wakacoin 白皮書  

共識協議:
  1. 使用工作量證明(Proof-of-Work,PoW)。
  2. 每個區塊的容量上限為 5 MB, 並且最多包含 5 千筆交易。
  3. 平均每 10 分鐘生成一個區塊。
  4. 出塊獎勵為「鑄幣」+「交易費用」。
  5. 鑄幣:一開始,每個區塊鑄幣 5,000 枚 Wakacoin,然後,每 2160 個區塊鑄幣數量減半,直到降至每個區塊固定鑄幣 1 枚 Wakacoin。
  6. 交易費用:每筆交易的費用為 1 枚 Wakacoin。

由於 Wakacoin 在其共識協議中採取固定的交易手續費 -- 每筆交易必須支付 1 wakacoin 手續費給礦工,確保了公平性與永續性;公平性指的是礦工無論何時參與,都有可能得到相同的出塊獎勵;永續性指的是永遠都有足夠的誘因激勵礦工參與。

進一步說明  

Wakacoin 區塊鏈是「完全去中心化」的公有鏈,支持各種傳統的區塊鏈運作模式,比如說礦機挖礦、礦池、交易所等應用,而要建置這些應用,需要下載與使用區塊鏈的原始碼。

Wakacoin 智能合約  

Wakacoin 智能合約支持所有格式的合約,包括純文本、圖像、影片、程式碼等。詳情請參閱開發者指南

開放原始碼 & 開發者指南  

Wakacoin 區塊鏈在 GitHub 上的初始開源: https://github.com/wakacoin/blockchain

Wakacoin 區塊鏈的最新版本: https://each1.net/public/wakacoin

Wakacoin 開發者指南: https://each1.net/wakacoin/developer