比特幣中的只讀區塊鏈,更新檔創意
這個問題與使用比特幣網路所需的(已經接近 2 GB 並且一直在增加)區塊鏈下載有關,並且引用了之前的問題:
回答前請閱讀
目前,如果我在 20 台機器上執行 bitcoind,或者在同一台機器上執行 20 個 bitcoind,它們每個都需要下載和儲存 2 GB 區塊鏈,總共使用 40 GB 磁碟空間和大量頻寬來下載 20 次。
我認為讓它變得更好的最簡單方法是擁有一個“只讀”區塊鏈,其中一個 bitcoind 寫入它,而其他只使用它只讀來檢查交易。
這可以用作我自己信任的區塊鏈提供商,用於我所有的機器和 bitcoind 執行,在同一台機器上或遠端使用 sshfs 或其他安裝選項。
現在的問題:
1-如何在 bitcoind 中實現這個?最簡單的方法是什麼?
2-這對比特幣網路本身來說是個問題嗎?
規則:我不想要“嘗試 poolserverj”或“你不需要”之類的答案;)
我已經為管理多個錢包的一個 bitcoind(帶有一份區塊鏈副本)做了工作原型:https ://bitcointalk.org/index.php?topic=71542.msg96212恕我直言,使用目前程式碼庫是最簡單的事情,它會實現目標是獨立提供多個使用者的錢包,同時僅將資源用於一個執行的 bitcoind。
但是圍繞它的討論不知何故消失了,看起來沒有人嘗試過原型,我只得到了一些私人詢問。
問題歸結為信任第三方。目前的客戶只信任創世塊的名稱——你可以獨立地驗證所有其他塊都來自於它,並且已經被最高難度保護。
理論上,您可以僅儲存塊的雜湊序列(每塊 32 個字節)。但是當你收到一筆比特幣交易時,你需要有證據證明:
- 來自比特幣來源的足夠資金(“輸入交易”)。
- 這些資金以前沒有用過。
比特幣地址有資金的證明很短——你只需要知道包含交易的區塊,以及交易雜湊是區塊“默克爾根”一部分的證明(我認為這通常只需要幾百字節的數據,而且您不必信任提供者的來源——因為您自己根據儲存的區塊鏈雜湊驗證它)。
但是第二部分,知道輸入尚未花費要困難得多-您必須“證明是否定的”。知道輸入尚未被使用的唯一方法是查看自輸入創建以來的所有交易,並驗證它們中沒有一個已經花費輸入。
我認為你必須依賴一個受信任的來源,然後,它確實保留了整個區塊鏈。您可以依賴來自受信任服務(或可能是多個獨立受信任服務)的簽名“聲明”,即特定輸入尚未通過給定塊用完。