日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Factom(公证通)--基于区块链的存证系统

發布時間:2024/4/17 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Factom(公证通)--基于区块链的存证系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Factom這個Solution在2014年的時候就已經推出了,現在已經2018年了,我才來寫這一篇分析文章可能有些遲了,但是它是十分具有參考價值的。因為現階段來開區塊鏈雖然炒得火熱--養貓、養狗、草泥馬之類的,但是真正成熟的應用比較少,有很多連基本的鏈平臺都沒有開發完全。而bitcoin作為區塊鏈的1.0時代的代表,也是區塊鏈行業的標桿存在,它的生態是最完整的--礦池、錢包、交易所。但是相對于區塊鏈2.0Ethereum來講功能就比較單一了,它的智能合約--公鑰腳本功能單一,不是圖靈完備的。基于bitcoin開發的應用就比較少,而ethereum上面的應用就多達800多個(養貓應該是最火的了)。 但bitcoin不是說不能基于它去做一些事情,它也有一些擴展協議可以讓bitcoin Blockchain來發揮更大的作用,比如說 OP_RETRUN 擴展交易。而Factom就是基于這個協議,如果換做此時此刻的話,Factom的創始人可能會選擇更加方便的Ethereum,而不是Bitcoin,但在14年的時候以太坊還不是很成熟,而Bitcoin則更加的穩定可靠,時至今日Bitcoin很少會因為本身的漏洞而造成財產損失,大多數都是因為交易所遭受攻擊而導致大量的Bitcoin被黑客盜取。這一點一要歸功于 pow這個被人‘詬病’的協議,二、它沒有支持圖靈完備的智能合約,功能單一也有好處,有時越簡單粗暴的越可靠,像以太坊就因為智能合約sdk的漏洞造成過兩次大規模的ether泄露。 一、Bitcoin的 OP_RETRUN協議介紹 OP_RETURN是一個腳本操作碼,用于將事務輸出標記為無效。由于任何帶有OP_RETURN的輸出可證明是不可靠的,OP_RETURN輸出可以用來燒毀比特幣。 比特幣社區的許多成員認為使用OP_RETURN是不負責任的,部分原因是比特幣旨在為金融交易提供記錄,而不是任意數據的記錄。此外,對于外部大規模復制數據存儲的需求本質上是無限的,這一點顯而易見。盡管如此,與在區塊鏈中存儲數據的一些其他方式相比,OP_RETURN具有不會創建虛假UTXO條目的優勢。 從比特幣核心版本0.9.0: 這種變化并不意味著將數據存儲在區塊鏈中。 OP_RETURN類型的交易請求創建了一個可證明的可修剪txo,以避免數據存儲方案(其中一些已經部署)將諸如圖像之類的任意數據存儲為永遠不可用的TX輸出,從而膨脹了比特幣的UTXO數據庫。 在區塊鏈中存儲任意數據仍然是一個壞主意,在其他地方存儲非貨幣數??據的成本更低,效率更高。 二、Factom的基本原理 在闡述基本原理之前,我先說幾個有關于Factom的關鍵詞: Factoids : factom發行的代幣,使用factom的服務時要消耗代幣,而且不可以交易。 Entry Credits:提交Entry時要消耗 Credits,而Credits是用Factoids換取的,可以交易。 Entry:提交到Factom上存儲的文件 Entry Block:記錄Entry完整性(Hash值)證明的區塊 Directory Block:記錄Entry Block塊完整性(Hash值)證明的區塊 ChainID:APPlication的賬本ID APPlication:基于Factom服務開發的應用 Federated Servers:用來管理運行Factom的分布式服務集群 Auditing Servers:審查節點,這些審查節點負責審查Federated Servers的生成的賬本是否合法 看到這,你想必應該猜測到了,Factom是有自己的賬本--chain的,不光Factom有每一個App都有自己對應的chain。 factom存證充分的利用了Merkle Hash tree,它的最基本原理就是: 首先將一段時間內上傳的數據都納入到Merkle Hash tree(間接或者直接);然后每隔10min中Root Hash加入到OP_RETRUN交易中,錨定到bitcoin區塊鏈。 稍微了解過bitcoin原理的老鐵應該都知道Merkle tree的精妙之處--假定root hash是正確的,則在不知道其他葉子節點的情況下,仍然能證明單個葉子結點的完整性。這樣做的好處就是你可以不需要關心其他葉子結點(在Bitcoin中是Utxo,在factom中是Entry數據),也能證明自己的完整性,有老鐵可能就問了這么費勁干啥?咋不直接把Entry的Hash錨定到Bitcoin上?貴啊!現在一個Bitcoin市值$14,000左右,礦工費最低要0.0009(不同礦池收費標注不同),而且十分鐘才能添加一塊,還要等待6個塊確認,不說礦工費開銷大,效率也低啊。利用Merkle tree可以上傳最少的數據 32bytes(上面說過一個OP_RETURN最多40),同時又能證明大量的數據完整性,何樂而不為? 本圖將Factom大致的邏輯關系已經呈現的很清楚了: 1.APP的運營者先去Factom上買Factoids,然后將Factoids兌換成Entry Credit 2.APP將數據提交到Factom Servers,加入該APP對應的Entry Chain 3.將 當前周期內上傳 Entry 打包成 EntryBlocks(白皮書上顯示 1min鐘生成一個塊); 4.將 當前周期內生成的EntryBlocks 打包成 Directory Blocks; 5.間隔一段時間(白皮書顯示是10min,正好是比特幣生成區塊的平均時間)將未錨定的Diretory Blocks加入到一個Merkle tree中(按照白皮書說法應該是10塊); 6.將root hash 錨定到Bitcoin中 APP參照了中本聰在bitcoin白皮書中提到的SPV原理,只要關心和自己相關的數據就好了。 三、Factom的組織架構 Factom整個架構體系中有三層,如下: APPLication --------------------------------------- FACTOM Server| Audis Server --------------------------------------- BItcoin Miners Factom 的賬本有四層,如下: APP Entry Chains | FactorId Chain | Credit Chain ------------------------------------------------------ Entry Blocks ------------------------------------------------------ Directory Blocks ----------------------------------------------------- Bitcoin Blocks 3.1 我們先按照架構體系來說:
  • APPlication :由開發者開發面向用戶的應用,它們都使用了Factom的服務來做數據存儲證明。我們下面描述一下APP加入Factom的過程:
setup 0: 一個APP在初始化加入Factom體系時候做的第一件事就是充錢(不充錢你怎么能變強?),你將公鑰發送給Factom Server,Factom Server會分配給你一筆 Factoids,這筆交易會記錄在FactorId Chain中。 setup 1 : 服務器 會向你反饋一個Entry 確認信息, 同時會向外廣播這個確認信息(我們前面說過factom 是有一個分布式服務集群的) setup2:APP用Factoids換取Entry Credit, 服務器會將這筆交易記錄在Credit Chain中,同時向外廣播。 setup3:APP上傳第一個實體Entry(初始化,里面包含著你自己定義的Entry校驗規則的Hash值,或其他細則),服務器會幫你創建一個對應ChainId的賬本,同時扣除相應的Credit,向外廣播消息。 ps: ChainId ID是由APP自己定義的ChainName的Hash值。 創建后提交一個Entry的過程就是setup 1~3的過程,當然客戶端看起來就這么簡單,在服務端就復雜多了。同時這里面我們要重點強調的是,Factom服務器不負責校驗Entry 數據的合法性,數據的合法性是在APP這一端校驗的。我們可以在創建賬本的時候將校驗規則(比如一個審計程序)的Hash加入到第一個Entry中,這個審計程序在APP運行,這樣就能屏蔽掉那些無效的Entry。
  • Factom Servers: factom有一個分布式的服務集群,每一個服務器都會負責一維護部分APP的賬本,同時將更新同步到其他服務器中。Factom中服務器有兩種類型,一種是記賬服務器,一種是審查服務器。
我們來講一下servers的工作過程,首先介紹幾個關鍵詞: process list: 每一個服務器都要維護一個list,這個列表里面存儲著本服務器和其他服務器負責的chain。   Weighted Number of Entry Credits: 根據消費的Credits計算出投票權重用于選擇Factom Server Weighted Number of Entries:根據Entry計算出投票權重用于選擇Factom Server。 Factom? Servers一個記錄周期如下:
  • ?所有服務器重設其進程列表(Process List)為空。
  • 用戶通與其Entry信用的積分(Entry Credit)相關的公鑰提交付款
  • 根據用于支付的公鑰,輪值服務器接受該付款。
  • 該服務器向網絡廣播該支付被接受。
  • 用戶看到支付被接受, 然后提交Entry。
  • 根據Entry的ChainID,其中一臺服務器把Entry加入其進程列表,并添加進入到相應鏈的區塊中(如果這是該鏈的第一個Entry, 那就創建這個新鏈)。
  • 服務器對網絡廣播該Entry的確認,內容含有Entry在Process list 中的位置(Index) + Hash(Entry)(鏈接到Entry付款)+ Hash(process list)。
  • 所有其他服務器更新該服務器的process list,驗證該列表,并更新該鏈的區塊。
  • 只要用戶可以驗證到相關的 process list 中包含自己的提交的數據Entry,那么他們就可以有相當的信心相信它會被成功地被錄入到Factom上。
  • 在一分鐘結束時,所有服務器確認process list 的 高度,揭示一個確定性的秘密數值(該值為一個Reverse Hash 值,即一條較長的,連續的區塊鏈哈希值的原像值),還有被處理區塊的一系列哈希值(將與 process list 中的最后一項相匹配)。
  • 那一分鐘的目錄區塊(Directory Block)是由所有服務器中定義的所有Entry區塊(Entry Block)組合到一起建造而生成的。因此,每個服務器都擁有所有的Entry區塊(Entry Block),所有的目錄區塊(Directory Block),和所有Entry(all Entries)。
  • 使用Reverse Hash值的集合來創造一個種子,為下一輪的ChainIDs重新分配服務器。
  • 在完成10個目錄區塊后,請執行以下操作:
  • 對最后一分鐘的Entry塊創建梅克爾根(Merkle Root),按ChainID排序。
  • 創建最后一分鐘的目錄區塊,并計算其梅克爾根(Merkle Root)。
  • 用10個目錄區塊的梅克爾根(Merkle Root)創建一個錨定。
  • 用服務器的反向哈希值集合來創建一個種子,再用其選擇下一個服務器來把錨定寫到比特幣區塊鏈
  • .重復。 (又從第1部開始循環)
  • Factom 為了防止腐敗發生,所以它的Servers集群中記賬的服務器是會不斷變化的,每隔4個小時進行一次選舉,由user投票來決定哪些服務器能夠成為Factom的記賬服務器,用戶投票的權重是根據Weighted Number of Entry Credits和Weighted Number of Entries計算出來的,所有的服務器都會參選最后進行一個排名,然后選擇前n名成為Federated Servers 其余的為Auditing Servers。 為了防止被選擇的服務器發生故障,每隔四秒就要廣播心跳包(Entry 確認信息),如果一臺服務器沒有收到 X 的心跳包就會發送一個SFM信息認為X是故障的,如果大多數(沒有給出閾值)認為X服務器是故障的,那么X服務器就會降級,由第n+1名服務器升級為Federated Servers,X 降級為Auditing Servers。 ps0:大家可能會困惑既然合法性校驗放在了client side,那么Auditing Servers有個卵用?Auditing Servers 有兩個作用: 一、審查Federated Servers生成塊是否符合規則;二、為Entry 提供存在性證明(Proof of existence)(這是從Factom社區里面得到的回復)。 ps1:Weighted Number of Entry Credits: 加權最近六個月購入的入場券數量(每月購買金額,當月加權6次,前5次加權等) ;Weighted Number of Entries: 加權最近六個月使用的條目數量(每月使用的條目數量,當前月份加權6個,前一個加權5個)。
    • bitcoin miner:這一層我就不多說了。

      上面就是按照體系架構來講述一下它工作的基本流程,Factom的實現比較復雜。

    3.2 我們再按照賬本層次來說:
    • Directory Blocks
    目錄塊中引用的每個Entry塊占用64個字節(兩個32字節散列,Entry Block的ChainID和Merkle根)。一百萬個這樣的條目將導致一組目錄塊大小約為64MB。如果平均的每個Entry Block有5個Entry,64 MB的Directory Blocks將提供500萬個不同Entry的高級管理。Factom服務器收集Entry Block的Merkle根并將它們打包到目錄塊中。十個連續的目錄塊通過Merkle樹散列,Merkle根被記錄在比特幣區塊鏈中。這允許區塊鏈的最小擴展,并且仍然允許通過比特幣散列權限保護分類賬。將Merkle根加入比特幣區塊鏈的過程稱為“錨定”。有關更多詳細信息,請參閱“附錄:比特幣時間戳”部分。從帶寬和存儲的角度來看,輸入到目錄塊中的數據是最昂貴的。如果Factom用戶希望在鏈中找到數據,那么他們需要從賬本創建時開始的所有目錄塊。會增加目錄塊大小的Active 包括 APP chain 的創建和首次更新。這些Active將 APP 程序細化賬本規則的 花費 進行了公示。相比記錄一個Entry,APP必須要花費更多的Entry積分來執行這些特殊的Active,這樣可以阻止目錄塊的膨脹。也就是說實際上Directory block中記錄的是一個map<chainId, Entry Block Merkle Root Hash>的表。
    • Entry Blocks
    Entry Block Later 是系統中的第二層級。APP 將擁有各自的ChainID。在 Entry Blocks 里,APP可以ChainID為線索擴展搜索所有相關的條目。每個目錄塊中包含的chainId 都會有一個更新的Entry Block。Entry Block包含上傳的Entry的散列值。Entry的哈希證明了數據的存在,同時也充當在分布式哈希表(DHT)網絡中查找Entry的Key。 (更多細節參見“Factom點對點網絡Entry Block 有意不包含 Entry 本身。這使得Entry Block 很小。從Entry Block 中分離 Entry 還可以使審計人員更容易審計。審核員可以在一個單獨的鏈中,這個鏈用來記錄那些來自普通鏈中的被批準或被拒絕的Entry。審核員可以在其Entry中增加拒絕的理由。如果應用程序信任審核員,他們可以交叉引用審核員批準或拒絕每個Entry,而不需要知道Entry是什么。然后應用程序將只嘗試下載通過審計的Entry。多個審計人員可以引用相同的Entry,并且條目將只在分布式散列表(DHT)上存在一次。預計條目將比散列占用的僅僅32個字節大得多。要忽略的事物列表不一定要讓應用程序忽略完整的對象。輸入塊包含與ChainID相關的所有可能的輸入項。如果一個Entry沒有在Entry Block中被引用,那么可以假定它不存在,這允許應用程序證明是否定的。 ps:現在Factom并未構建起DHT存儲,他們準備和IPFS進行合作來存儲文件。
    • Entrys
      記錄是被用戶創建并提交到Factom的。通過散列和編碼信息,用戶可以確保記錄的隱私性。如果編碼或隱藏數據是不必要的話,那么記錄可以替換成為純文本。通過記錄一份文檔的一段哈希值,Factom可以提供基本的發布證明(proof of publication)。稍后, 人們可以生成文檔的哈希值, 并和之前鏈塊記錄的哈希值進行比對, 來判斷文檔是否是當初發布的那個版本。這在數據的處理可以有很大的靈活性,可以出現類似超鏈接的東西。數據還可以更龐大,但不能過于龐大.,因為數據越大需要付的費用也越多。這和比特幣比較相似,超過100兆字節的比特幣轉賬數據是可能發生的,但需要支付更多的轉賬費用。Factom可以處理比比特幣網絡里大得多的數據,由于比特幣的完整節點需掃描完整的區塊鏈數據,所以區塊鏈體積不能太大。在Factom中完整節點只需要掃描最高級的目錄區塊(Directory Block), 并不需要掃描全部的鏈塊數據。如果人不對鏈數據感興趣的話,完全可以忽略它。 ps:Factom實際上到底有沒有存儲這些Entry 鏈接的文件尚未得知,我在社區中詢問但是沒有得到解答。 最后給大家上一個總體的賬本結構圖,如下: 參考網址:
  • https://www.factom.com/devs/docs/guide/factom-white-paper-1-0
  • http://www.8btc.com/factombaipishu
  • https://en.bitcoin.it/wiki/OP_RETURN
  • https://www.cnblogs.com/fengzhiwu/p/5524324.html
  • ---------------------------------------------------分割線----------------------------------------------------- 以上的內容一部分來自我自己從白皮書中的翻譯,一部分引用于上面的網址,其中還有一些不確定性,我在注釋中已經指出,如果哪位老鐵知道答案的話請在評論區留言,我會及時改正。下面我闡述一個自己并不成熟的觀點,就是基于pow鏈的存證系統有多大價值?我們知道現在數據存證常用的是數字簽名,既可以保證數據的完整性,又能保證數據的合法性。最多我再多云備份幾份,你這個存證系統到底有什么存在的必要?   從密碼學破解的角度來看,篡改Factom中的Hash證明要比篡改簽名難度等級要高。因為Factom錨定到了bitcoin上,這是一種信任的傳遞,你如果要想篡改出來一個合法的Hash證明首先要從bitcoin區塊下手。而且隨著時間的推移,后續塊的增多篡改的難度越大,這相比從公鑰推導出私鑰的難度要更大!(當然這是在私鑰沒有被竊取的條件下,如果你的用戶私鑰被竊取,或者說你的Factom賬號被竊取,你仍然可以去篡改Entry的Hash證明。)     但是,從現階段來看,這兩者都是基本“零”可能。然而當量子計算機出現的時候情況就不一樣了,量子計算理論上可以暴力破解非對稱加密,雖然格密碼理論上能夠抵御量子計算,但現有的PKI體系還是難免會收到沖擊。而這個時候Factom的作用就體現出來了,你可以去破解ecc和rsa的證書去偽造證明,但是你依然很難篡改Bitcoin賬本。因為區塊鏈賬本是靠強大的hash算力保護的,而量子計算機在破解hash算法上并沒有什么優勢,所以偽造區塊依舊很難,只要是已經存在的賬本正確性依舊難以動搖。 附,量子計算機維基百科: 歷史 隨著計算機科學的發展,史蒂芬·威斯納在1969年最早提出“基于量子力學的計算設備”。而關于“基于量子力學的信息處理”的最早文章則是由亞歷山大·豪勒夫(1973)、帕帕拉維斯基(1975)、羅馬·印戈登(1976)和尤里·馬尼(1980)年發表[2][3][4] [5]。史蒂芬·威斯納的文章發表于1983年[6]。1980年代一系列的研究使得量子計算機的理論變得豐富起來。1982年,理查德·費曼在一個著名的演講中提出利用量子體系實現通用計算的想法。緊接著1985年大衛·杜斯提出了量子圖靈機模型[7]。人們研究量子計算機最初很重要的一個出發點是探索通用計算機的計算極限。當使用計算機模擬量子現象時,因為龐大的希爾伯特空間而數據量也變得龐大。一個完好的模擬所需的運算時間則變得相當長,甚至是不切實際的天文數字。理查德·費曼當時就想到如果用量子系統所構成的計算機來模擬量子現象則運算時間可大幅度減少,從而量子計算機的概念誕生。半導體靠控制集成電路來記錄及運算信息,量子計算機則希望控制原子或小分子的狀態,記錄和運算信息。 量子計算機在1980年代多處于理論推導狀態。1994年彼得·秀爾(Peter Shor)提出量子質因數分解算法[8],證明量子計算機能做出離散對數運算[9],而且速度遠勝傳統電腦。因為量子不像半導體只能記錄0與1,可以同時表示多種狀態。如果把半導體比喻成單一樂器,量子計算機就像交響樂團,一次運算可以處理多種不同狀況,因此,一個40比特的量子計算機,就能在很短時間內解開1024位電腦花上數十年解決的問題。因其對于現在通行于銀行及網絡等處的RSA加密算法可以破解而構成威脅之后,量子計算機變成了熱門的話題,除了理論之外,也有不少學者著力于利用各種量子系統來實現量子計算機。 基本概念 傳統計算機即對輸入信號序列按一定算法進行變換的機器,其算法由計算機的內部邏輯電路實現。
  • 輸入態和輸出態都是傳統信號,用量子力學的語言來描述,也即是:其輸入態和輸出態都是某一力學量的本征態。如輸入二進制序列用量子記號 0110110,用量子記號則為| 0110110> 。所有的輸入態均相互正交。對傳統計算機不可能輸入如下疊加態:c1 |0110110> + c2|1001001>
  • 傳統計算機內部的每一步變換都演化為正交態,而一般的量子變換沒有這個性質,因此,傳統計算機中的變換(或計算)只對應一類特殊集。
  • 量子計算機分別對傳統計算機的限制作了推廣。量子計算機的輸入用一個具有有限能級的量子系統來描述,如二能級系統(稱為量子比特(qubits)),量子計算機的變換(即量子計算)包括所有可能的正變換。
  • 量子計算機的輸入態和輸出態為一般的疊加態,其相互之間通常不正交;
  • 量子計算機中的變換為所有可能的正變換。得出輸出態之后,量子計算機對輸出態進行一定的測量,給出計算結果;
  • 傳統計算是一類特殊的量子計算,量子計算對傳統計算作了極大的擴充,其最本質的特征為量子疊加性量子相干性。量子計算機對每一個疊加分量實現的變換相當于一種經典計算,所有這些傳統計算同時完成,并按一定的概率振幅疊加起來,給出量子計算機的輸出結果。這種計算稱為量子并行計算。

    轉載于:https://www.cnblogs.com/cnblogs-wangzhipeng/p/8270075.html

    總結

    以上是生活随笔為你收集整理的Factom(公证通)--基于区块链的存证系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。