傻瓜加密貨幣:比特幣及其他
已發表: 2022-03-11比特幣在互聯網上引起了很多轟動。 它被嘲笑,被攻擊,最終被接受,成為我們生活的一部分。 然而,比特幣並不孤單。 目前,有超過 700 種 AltCoin 實現,它們使用類似的原理和各種加密貨幣算法。
那麼,你需要什麼來創造像比特幣這樣的東西?
在不試圖了解您創建一個去中心化、匿名的貨幣/信息交換系統的個人動機(但仍然希望它在道德和法律活動的範圍內)的情況下,讓我們首先分解我們新支付系統的基本要求:
- 所有交易都應通過互聯網進行
- 我們不希望有一個中央機構來處理交易
- 用戶應該是匿名的,並且只能通過他們的虛擬身份來識別
- 單個用戶可以擁有任意數量的虛擬身份
- 必須以受控方式添加價值供應(新的虛擬票據)
去中心化的互聯網信息共享
滿足我們列表中的前兩個要求,取消在 Internet 上進行信息交換的中央機構,已經成為可能。 您需要的是點對點 (P2P)網絡。
P2P 網絡中的信息共享類似於朋友和家人之間的信息共享。 如果您與至少一個網絡成員共享信息,最終該信息將到達網絡的所有其他成員。 唯一的區別是,在數字網絡中,這些信息不會以任何方式改變。
您可能聽說過 BitTorrent,它是最流行的 P2P 文件共享(內容交付)系統之一。 另一個流行的 P2P 共享應用程序是 Skype,以及其他聊天系統。
底線是您可以實施或使用現有的開源 P2P 協議之一來支持您的新加密貨幣,我們將其稱為Topcoin 。
哈希算法
要了解數字身份,我們需要了解加密哈希的工作原理。 散列是將任意大小的數字數據映射到固定大小的數據的過程。 簡單來說,散列是一個獲取一些可讀信息並製作一些毫無意義的東西的過程。
您可以將散列與從政客那裡獲得答案進行比較。 您提供給他們的信息清晰易懂,而他們提供的輸出看起來像是隨機的單詞流。
一個好的散列算法需要幾個要求:
- 哈希算法的輸出長度必須是固定的(一個好的值是 256 字節)
- 即使輸入數據的最小變化也必須產生顯著的輸出差異
- 相同的輸入總是會產生相同的輸出
- 一定沒有辦法反轉輸出值來計算輸入
- 計算 HASH 值不應該是計算密集型的,應該很快
如果您看一下簡單的統計數據,我們將擁有有限(但巨大)數量的可能 HASH 值,這僅僅是因為我們的 HASH 長度是有限的。 然而,我們的散列算法(我們將其命名為 Politician256)應該足夠可靠,以至於它只為不同的輸入生成重複的散列值,其頻率與動物園裡的猴子設法在打字機上正確鍵入哈姆雷特一樣頻繁!
如果您認為哈姆雷特只是一個名字或一個詞,請立即停止閱讀,或者閱讀有關無限猴子定理的內容。
電子簽名
簽署論文時,您只需將簽名附加到文檔文本即可。 數字簽名是類似的:您只需要將您的個人數據附加到您正在簽名的文檔中。
如果您了解散列算法遵循即使輸入數據的最小變化也必須在輸出中產生顯著差異的規則,那麼很明顯,為原始文檔創建的 HASH 值將不同於為文檔創建的 HASH 值。附上簽名。
原始文檔和為該文檔生成的帶有您的個人數據的 HASH 值的組合是一個數字簽名文檔。
這就是我們獲取您的虛擬身份的方式,該身份被定義為您在創建該 HASH 值之前附加到文檔的數據。
接下來,您需要確保您的簽名不能被複製,並且沒有人可以代表您執行任何交易。 確保您的簽名安全的最佳方法是自己保存,並為其他人提供不同的方法來驗證已簽名的文檔。 同樣,我們可以依靠現成的技術和算法。 我們需要使用的是公鑰密碼學,也稱為非對稱密碼學。
要完成這項工作,您需要創建一個private key和一個public key 。 這兩個鍵將具有某種數學相關性並相互依賴。 您將用於製作這些密鑰的算法將確保每個私鑰都有不同的公鑰。 正如他們的名字所暗示的那樣,私鑰是您將為自己保留的信息,而公鑰是您將共享的信息。
如果您使用您的私鑰(您的身份)和原始文檔作為簽名算法的輸入值來創建 HASH 值,假設您將密鑰保密,您可以確定沒有其他人可以為該文檔生成相同的 HASH 值.
如果有人需要驗證您的簽名,他或她將使用原始文檔、您生成的 HASH 值和您的公鑰作為簽名驗證算法的輸入,以驗證這些值是否匹配。
如何發送比特幣/金錢
假設您已經實現了 P2P 通信、創建數字身份(私鑰和公鑰)的機制,並為用戶提供了使用他們的私鑰簽署文檔的方法,那麼您就可以開始向同行發送信息了。
由於我們沒有中央機構來驗證您有多少錢,因此系統必須每次都詢問您,然後檢查您是否撒謊。 因此,您的交易記錄可能包含以下信息:
- 我有 100 頂幣
- 我想寄 10 個硬幣給我的藥劑師買藥(你可以在此處包括你的藥劑師公鑰)
- 我想給系統一個硬幣作為交易費用(我們稍後再討論)
- 我想保留剩下的89個硬幣
剩下要做的就是用您的私鑰對交易記錄進行數字簽名,並將交易記錄傳輸給網絡中的同行。 屆時,每個人都會收到某人(您的虛擬身份)正在向其他人(您的藥劑師的虛擬身份)匯款的信息。

你的工作完成了。 然而,直到整個網絡同意你確實有 100 個硬幣,你的藥物才會被支付,因此可以執行這個交易。 只有在您的交易得到驗證後,您的藥劑師才會收到資金並將藥物寄給您。
加密貨幣礦工:一種新的代理品種
眾所周知,礦工是非常努力工作的人,在我看來,他們的薪水嚴重偏低。 在加密貨幣的數字世界中,礦工扮演著非常相似的角色,除了在這種情況下,他們做的是計算密集型的工作,而不是挖掘成堆的泥土。 與真正的礦工不同,一些加密貨幣礦工在過去五年中賺取了一筆不小的財富,但許多其他人在這種冒險的努力中損失了一筆財富。
礦工是系統的核心組成部分,其主要目的是確認用戶請求的每筆交易的有效性。
為了確認您的交易的有效性(或幾個其他用戶請求的幾筆交易的組合),礦工將做兩件事。
首先,他們將依賴於“每個人都知道一切”這一事實,這意味著系統中執行的每筆交易都被複製並可供網絡中的任何對等方使用。 他們將查看您的交易歷史,以驗證您實際上有 100 個硬幣。 確認您的帳戶餘額後,他們將生成特定的 HASH 值。 這個哈希值必須有特定的格式; 它必須以一定數量的零開頭。
計算此 HASH 值有兩個輸入:
- 交易記錄數據
- 礦工的工作量證明
考慮到即使是輸入數據的最小變化也必須產生輸出 HASH 值的顯著差異,礦工的任務非常艱鉅。 他們需要為工作量證明變量找到一個特定值,該變量將產生一個以零開頭的 HASH。 如果您的系統在每個經過驗證的交易中需要至少 40 個零,那麼礦工將需要計算大約 2^40 個不同的 HASH 值才能找到正確的工作量證明。
一旦礦工為工作量證明找到合適的價值,他或她就有權獲得交易費(您願意支付的單一硬幣),該費用可以作為驗證交易的一部分添加。 每個經過驗證的交易都會傳輸到網絡中的對等點,並以稱為區塊鏈的特定數據庫格式存儲。
但是,如果礦工數量增加,他們的硬件變得更有效率,會發生什麼? 比特幣曾經在 CPU、GPU 和 FPGA 上開採,但最終礦工們開始設計自己的 ASIC 芯片,這些芯片比這些早期的解決方案強大得多。 隨著哈希率的上升,挖礦難度也會上升,從而確保平衡。 當更多的哈希算力被引入網絡時,難度會上升,反之亦然; 如果許多礦工因為他們的運營不再有利可圖而決定退出,那麼難度會重新調整以匹配新的哈希率。
傻瓜區塊鏈:全球加密貨幣分類帳
區塊鏈包含系統中執行的所有交易的歷史記錄。 每筆經過驗證的交易或一批交易都成為鏈中的另一個環。 每個區塊鏈開發公司都依賴於這個公共賬本。
因此,比特幣區塊鏈本質上是一個公共分類賬,其中交易按時間順序列出。
比特幣區塊鏈中的第一環稱為創世區塊
要了解有關區塊鏈如何工作的更多信息,我建議閱讀 Nermin Hajdarbegovic 的 Blockchain Technology Explained: Powering Bitcoin。
您的系統中活躍的礦工數量沒有限制。 這意味著兩個或多個礦工可以驗證同一個交易。 如果發生這種情況,系統將通過簡單地計算零來檢查每個礦工在驗證交易方面投入的總精力。 投入更多精力(發現更多前導零)的礦工將佔上風,他或她的區塊將被接受。
控制貨幣供應
比特幣系統的第一條規則是最多可以生成 21,000,000 個比特幣。 這個數字還沒有達到,按照目前的趨勢,預計到 2140 年會達到這個數字。
這可能會讓您質疑這樣一個系統的實用性,因為 2100 萬台聽起來並不多。 但是,比特幣系統支持小數點到小數點後八位(0.00000001)。 比特幣的這個最小單位被稱為中本聰,以紀念比特幣協議背後的匿名開發者中本聰。
創建新硬幣作為對驗證交易的礦工的獎勵。 該獎勵不是您創建交易記錄時指定的交易費用,而是系統定義的。 獎勵金額隨著時間的推移而減少,一旦達到發行的硬幣總數(21m),最終將設置為零。 發生這種情況時,交易費用將發揮更重要的作用,因為礦工可能會選擇優先考慮更有價值的交易進行驗證。
除了設置最大硬幣數量的上限外,比特幣系統還使用一種有趣的方式來限制每日新硬幣的生產。 通過校準工作量證明計算所需的前導零的最小數量,驗證交易和獲得新硬幣獎勵所需的時間始終設置為大約 10 分鐘。 如果將新塊添加到區塊鏈之間的時間減少,系統可能會要求工作量證明生成 45 或 50 個前導零。
因此,通過限制生成新硬幣的速度和數量,比特幣系統有效地控制了貨幣供應量。
開始“打印”你自己的貨幣
如您所見,製作自己的比特幣版本並不難。 通過利用以創新方式實施的現有技術,您擁有加密貨幣所需的一切。
- 所有交易均使用 P2P 通信通過 Internet 進行,因此無需中央機構
- 用戶可以利用異步加密技術執行匿名交易,並且僅通過他們的私鑰/公鑰組合來識別他們
- 您已經實現了所有交易的經過驗證的全局分類帳,該分類帳已安全複製到網絡中的每個對等方
- 您擁有安全、自動化和受控的貨幣供應,無需中央機構即可確保您的貨幣穩定
最後值得一提的是,從本質上講,加密貨幣是一種在分佈式對等網絡中將匿名價值/信息從一個用戶轉移到另一個用戶的方式。
考慮用隨機數據替換交易記錄中的硬幣,這些數據甚至可能使用異步密碼術進行加密,因此只有發送者和接收者才能解密它。 現在考慮將其應用於物聯網之類的東西!
許多科技巨頭已經在探索在物聯網平台中使用區塊鏈技術,但這並不是這項相對較新的技術的唯一潛在應用。
如果您認為沒有理由創建自己的替代貨幣(惡作劇除外),您可以嘗試使用相同或類似的方法來做其他事情,例如分佈式身份驗證、創建遊戲中使用的虛擬貨幣、社交網絡和其他應用程序,或者您可以繼續為您的電子商務業務創建一個新的忠誠度計劃,這將獎勵普通客戶虛擬代幣,以後可以兌換。