Factom(公证通)--基于区块链的存证系统
生活随笔
收集整理的這篇文章主要介紹了
Factom(公证通)--基于区块链的存证系统
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Factom這個(gè)Solution在2014年的時(shí)候就已經(jīng)推出了,現(xiàn)在已經(jīng)2018年了,我才來寫這一篇分析文章可能有些遲了,但是它是十分具有參考價(jià)值的。因?yàn)楝F(xiàn)階段來開區(qū)塊鏈雖然炒得火熱--養(yǎng)貓、養(yǎng)狗、草泥馬之類的,但是真正成熟的應(yīng)用比較少,有很多連基本的鏈平臺(tái)都沒有開發(fā)完全。而bitcoin作為區(qū)塊鏈的1.0時(shí)代的代表,也是區(qū)塊鏈行業(yè)的標(biāo)桿存在,它的生態(tài)是最完整的--礦池、錢包、交易所。但是相對(duì)于區(qū)塊鏈2.0Ethereum來講功能就比較單一了,它的智能合約--公鑰腳本功能單一,不是圖靈完備的。基于bitcoin開發(fā)的應(yīng)用就比較少,而ethereum上面的應(yīng)用就多達(dá)800多個(gè)(養(yǎng)貓應(yīng)該是最火的了)。 但bitcoin不是說不能基于它去做一些事情,它也有一些擴(kuò)展協(xié)議可以讓bitcoin Blockchain來發(fā)揮更大的作用,比如說 OP_RETRUN 擴(kuò)展交易。而Factom就是基于這個(gè)協(xié)議,如果換做此時(shí)此刻的話,Factom的創(chuàng)始人可能會(huì)選擇更加方便的Ethereum,而不是Bitcoin,但在14年的時(shí)候以太坊還不是很成熟,而Bitcoin則更加的穩(wěn)定可靠,時(shí)至今日Bitcoin很少會(huì)因?yàn)楸旧淼穆┒炊斐韶?cái)產(chǎn)損失,大多數(shù)都是因?yàn)榻灰姿馐芄舳鴮?dǎo)致大量的Bitcoin被黑客盜取。這一點(diǎn)一要?dú)w功于 pow這個(gè)被人‘詬病’的協(xié)議,二、它沒有支持圖靈完備的智能合約,功能單一也有好處,有時(shí)越簡(jiǎn)單粗暴的越可靠,像以太坊就因?yàn)橹悄芎霞ssdk的漏洞造成過兩次大規(guī)模的ether泄露。 一、Bitcoin的 OP_RETRUN協(xié)議介紹 OP_RETURN是一個(gè)腳本操作碼,用于將事務(wù)輸出標(biāo)記為無效。由于任何帶有OP_RETURN的輸出可證明是不可靠的,OP_RETURN輸出可以用來燒毀比特幣。 比特幣社區(qū)的許多成員認(rèn)為使用OP_RETURN是不負(fù)責(zé)任的,部分原因是比特幣旨在為金融交易提供記錄,而不是任意數(shù)據(jù)的記錄。此外,對(duì)于外部大規(guī)模復(fù)制數(shù)據(jù)存儲(chǔ)的需求本質(zhì)上是無限的,這一點(diǎn)顯而易見。盡管如此,與在區(qū)塊鏈中存儲(chǔ)數(shù)據(jù)的一些其他方式相比,OP_RETURN具有不會(huì)創(chuàng)建虛假UTXO條目的優(yōu)勢(shì)。 從比特幣核心版本0.9.0: 這種變化并不意味著將數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈中。 OP_RETURN類型的交易請(qǐng)求創(chuàng)建了一個(gè)可證明的可修剪txo,以避免數(shù)據(jù)存儲(chǔ)方案(其中一些已經(jīng)部署)將諸如圖像之類的任意數(shù)據(jù)存儲(chǔ)為永遠(yuǎn)不可用的TX輸出,從而膨脹了比特幣的UTXO數(shù)據(jù)庫(kù)。 在區(qū)塊鏈中存儲(chǔ)任意數(shù)據(jù)仍然是一個(gè)壞主意,在其他地方存儲(chǔ)非貨幣數(shù)??據(jù)的成本更低,效率更高。 二、Factom的基本原理 在闡述基本原理之前,我先說幾個(gè)有關(guān)于Factom的關(guān)鍵詞: Factoids : factom發(fā)行的代幣,使用factom的服務(wù)時(shí)要消耗代幣,而且不可以交易。 Entry Credits:提交Entry時(shí)要消耗 Credits,而Credits是用Factoids換取的,可以交易。 Entry:提交到Factom上存儲(chǔ)的文件 Entry Block:記錄Entry完整性(Hash值)證明的區(qū)塊 Directory Block:記錄Entry Block塊完整性(Hash值)證明的區(qū)塊 ChainID:APPlication的賬本ID APPlication:基于Factom服務(wù)開發(fā)的應(yīng)用 Federated Servers:用來管理運(yùn)行Factom的分布式服務(wù)集群 Auditing Servers:審查節(jié)點(diǎn),這些審查節(jié)點(diǎn)負(fù)責(zé)審查Federated Servers的生成的賬本是否合法 看到這,你想必應(yīng)該猜測(cè)到了,Factom是有自己的賬本--chain的,不光Factom有每一個(gè)App都有自己對(duì)應(yīng)的chain。 factom存證充分的利用了Merkle Hash tree,它的最基本原理就是: 首先將一段時(shí)間內(nèi)上傳的數(shù)據(jù)都納入到Merkle Hash tree(間接或者直接);然后每隔10min中Root Hash加入到OP_RETRUN交易中,錨定到bitcoin區(qū)塊鏈。 稍微了解過bitcoin原理的老鐵應(yīng)該都知道Merkle tree的精妙之處--假定root hash是正確的,則在不知道其他葉子節(jié)點(diǎn)的情況下,仍然能證明單個(gè)葉子結(jié)點(diǎn)的完整性。這樣做的好處就是你可以不需要關(guān)心其他葉子結(jié)點(diǎn)(在Bitcoin中是Utxo,在factom中是Entry數(shù)據(jù)),也能證明自己的完整性,有老鐵可能就問了這么費(fèi)勁干啥?咋不直接把Entry的Hash錨定到Bitcoin上?貴啊!現(xiàn)在一個(gè)Bitcoin市值$14,000左右,礦工費(fèi)最低要0.0009(不同礦池收費(fèi)標(biāo)注不同),而且十分鐘才能添加一塊,還要等待6個(gè)塊確認(rèn),不說礦工費(fèi)開銷大,效率也低啊。利用Merkle tree可以上傳最少的數(shù)據(jù) 32bytes(上面說過一個(gè)OP_RETURN最多40),同時(shí)又能證明大量的數(shù)據(jù)完整性,何樂而不為? 本圖將Factom大致的邏輯關(guān)系已經(jīng)呈現(xiàn)的很清楚了: 1.APP的運(yùn)營(yíng)者先去Factom上買Factoids,然后將Factoids兌換成Entry Credit 2.APP將數(shù)據(jù)提交到Factom Servers,加入該APP對(duì)應(yīng)的Entry Chain 3.將 當(dāng)前周期內(nèi)上傳 Entry 打包成 EntryBlocks(白皮書上顯示 1min鐘生成一個(gè)塊); 4.將 當(dāng)前周期內(nèi)生成的EntryBlocks 打包成 Directory Blocks; 5.間隔一段時(shí)間(白皮書顯示是10min,正好是比特幣生成區(qū)塊的平均時(shí)間)將未錨定的Diretory Blocks加入到一個(gè)Merkle tree中(按照白皮書說法應(yīng)該是10塊); 6.將root hash 錨定到Bitcoin中 APP參照了中本聰在bitcoin白皮書中提到的SPV原理,只要關(guān)心和自己相關(guān)的數(shù)據(jù)就好了。 三、Factom的組織架構(gòu) Factom整個(gè)架構(gòu)體系中有三層,如下: APPLication --------------------------------------- FACTOM Server| Audis Server --------------------------------------- BItcoin Miners Factom 的賬本有四層,如下: APP Entry Chains | FactorId Chain | Credit Chain ------------------------------------------------------ Entry Blocks ------------------------------------------------------ Directory Blocks ----------------------------------------------------- Bitcoin Blocks 3.1 我們先按照架構(gòu)體系來說: ?所有服務(wù)器重設(shè)其進(jìn)程列表(Process List)為空。 用戶通與其Entry信用的積分(Entry Credit)相關(guān)的公鑰提交付款 根據(jù)用于支付的公鑰,輪值服務(wù)器接受該付款。 該服務(wù)器向網(wǎng)絡(luò)廣播該支付被接受。 用戶看到支付被接受, 然后提交Entry。 根據(jù)Entry的ChainID,其中一臺(tái)服務(wù)器把Entry加入其進(jìn)程列表,并添加進(jìn)入到相應(yīng)鏈的區(qū)塊中(如果這是該鏈的第一個(gè)Entry, 那就創(chuàng)建這個(gè)新鏈)。 服務(wù)器對(duì)網(wǎng)絡(luò)廣播該Entry的確認(rèn),內(nèi)容含有Entry在Process list 中的位置(Index) + Hash(Entry)(鏈接到Entry付款)+ Hash(process list)。 所有其他服務(wù)器更新該服務(wù)器的process list,驗(yàn)證該列表,并更新該鏈的區(qū)塊。 只要用戶可以驗(yàn)證到相關(guān)的 process list 中包含自己的提交的數(shù)據(jù)Entry,那么他們就可以有相當(dāng)?shù)男判南嘈潘鼤?huì)被成功地被錄入到Factom上。 在一分鐘結(jié)束時(shí),所有服務(wù)器確認(rèn)process list 的 高度,揭示一個(gè)確定性的秘密數(shù)值(該值為一個(gè)Reverse Hash 值,即一條較長(zhǎng)的,連續(xù)的區(qū)塊鏈哈希值的原像值),還有被處理區(qū)塊的一系列哈希值(將與 process list 中的最后一項(xiàng)相匹配)。 那一分鐘的目錄區(qū)塊(Directory Block)是由所有服務(wù)器中定義的所有Entry區(qū)塊(Entry Block)組合到一起建造而生成的。因此,每個(gè)服務(wù)器都擁有所有的Entry區(qū)塊(Entry Block),所有的目錄區(qū)塊(Directory Block),和所有Entry(all Entries)。 使用Reverse Hash值的集合來創(chuàng)造一個(gè)種子,為下一輪的ChainIDs重新分配服務(wù)器。 在完成10個(gè)目錄區(qū)塊后,請(qǐng)執(zhí)行以下操作: 對(duì)最后一分鐘的Entry塊創(chuàng)建梅克爾根(Merkle Root),按ChainID排序。 創(chuàng)建最后一分鐘的目錄區(qū)塊,并計(jì)算其梅克爾根(Merkle Root)。 用10個(gè)目錄區(qū)塊的梅克爾根(Merkle Root)創(chuàng)建一個(gè)錨定。 用服務(wù)器的反向哈希值集合來創(chuàng)建一個(gè)種子,再用其選擇下一個(gè)服務(wù)器來把錨定寫到比特幣區(qū)塊鏈 .重復(fù)。 (又從第1部開始循環(huán)) Factom 為了防止腐敗發(fā)生,所以它的Servers集群中記賬的服務(wù)器是會(huì)不斷變化的,每隔4個(gè)小時(shí)進(jìn)行一次選舉,由user投票來決定哪些服務(wù)器能夠成為Factom的記賬服務(wù)器,用戶投票的權(quán)重是根據(jù)Weighted Number of Entry Credits和Weighted Number of Entries計(jì)算出來的,所有的服務(wù)器都會(huì)參選最后進(jìn)行一個(gè)排名,然后選擇前n名成為Federated Servers 其余的為Auditing Servers。 為了防止被選擇的服務(wù)器發(fā)生故障,每隔四秒就要廣播心跳包(Entry 確認(rèn)信息),如果一臺(tái)服務(wù)器沒有收到 X 的心跳包就會(huì)發(fā)送一個(gè)SFM信息認(rèn)為X是故障的,如果大多數(shù)(沒有給出閾值)認(rèn)為X服務(wù)器是故障的,那么X服務(wù)器就會(huì)降級(jí),由第n+1名服務(wù)器升級(jí)為Federated Servers,X 降級(jí)為Auditing Servers。 ps0:大家可能會(huì)困惑既然合法性校驗(yàn)放在了client side,那么Auditing Servers有個(gè)卵用?Auditing Servers 有兩個(gè)作用: 一、審查Federated Servers生成塊是否符合規(guī)則;二、為Entry 提供存在性證明(Proof of existence)(這是從Factom社區(qū)里面得到的回復(fù))。 ps1:Weighted Number of Entry Credits: 加權(quán)最近六個(gè)月購(gòu)入的入場(chǎng)券數(shù)量(每月購(gòu)買金額,當(dāng)月加權(quán)6次,前5次加權(quán)等) ;Weighted Number of Entries: 加權(quán)最近六個(gè)月使用的條目數(shù)量(每月使用的條目數(shù)量,當(dāng)前月份加權(quán)6個(gè),前一個(gè)加權(quán)5個(gè))。 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 ---------------------------------------------------分割線----------------------------------------------------- 以上的內(nèi)容一部分來自我自己從白皮書中的翻譯,一部分引用于上面的網(wǎng)址,其中還有一些不確定性,我在注釋中已經(jīng)指出,如果哪位老鐵知道答案的話請(qǐng)?jiān)谠u(píng)論區(qū)留言,我會(huì)及時(shí)改正。下面我闡述一個(gè)自己并不成熟的觀點(diǎn),就是基于pow鏈的存證系統(tǒng)有多大價(jià)值?我們知道現(xiàn)在數(shù)據(jù)存證常用的是數(shù)字簽名,既可以保證數(shù)據(jù)的完整性,又能保證數(shù)據(jù)的合法性。最多我再多云備份幾份,你這個(gè)存證系統(tǒng)到底有什么存在的必要? 從密碼學(xué)破解的角度來看,篡改Factom中的Hash證明要比篡改簽名難度等級(jí)要高。因?yàn)镕actom錨定到了bitcoin上,這是一種信任的傳遞,你如果要想篡改出來一個(gè)合法的Hash證明首先要從bitcoin區(qū)塊下手。而且隨著時(shí)間的推移,后續(xù)塊的增多篡改的難度越大,這相比從公鑰推導(dǎo)出私鑰的難度要更大!(當(dāng)然這是在私鑰沒有被竊取的條件下,如果你的用戶私鑰被竊取,或者說你的Factom賬號(hào)被竊取,你仍然可以去篡改Entry的Hash證明。) 但是,從現(xiàn)階段來看,這兩者都是基本“零”可能。然而當(dāng)量子計(jì)算機(jī)出現(xiàn)的時(shí)候情況就不一樣了,量子計(jì)算理論上可以暴力破解非對(duì)稱加密,雖然格密碼理論上能夠抵御量子計(jì)算,但現(xiàn)有的PKI體系還是難免會(huì)收到?jīng)_擊。而這個(gè)時(shí)候Factom的作用就體現(xiàn)出來了,你可以去破解ecc和rsa的證書去偽造證明,但是你依然很難篡改Bitcoin賬本。因?yàn)閰^(qū)塊鏈賬本是靠強(qiáng)大的hash算力保護(hù)的,而量子計(jì)算機(jī)在破解hash算法上并沒有什么優(yōu)勢(shì),所以偽造區(qū)塊依舊很難,只要是已經(jīng)存在的賬本正確性依舊難以動(dòng)搖。 附,量子計(jì)算機(jī)維基百科: 歷史 隨著計(jì)算機(jī)科學(xué)的發(fā)展,史蒂芬·威斯納在1969年最早提出“基于量子力學(xué)的計(jì)算設(shè)備”。而關(guān)于“基于量子力學(xué)的信息處理”的最早文章則是由亞歷山大·豪勒夫(1973)、帕帕拉維斯基(1975)、羅馬·印戈登(1976)和尤里·馬尼(1980)年發(fā)表[2][3][4] [5]。史蒂芬·威斯納的文章發(fā)表于1983年[6]。1980年代一系列的研究使得量子計(jì)算機(jī)的理論變得豐富起來。1982年,理查德·費(fèi)曼在一個(gè)著名的演講中提出利用量子體系實(shí)現(xiàn)通用計(jì)算的想法。緊接著1985年大衛(wèi)·杜斯提出了量子圖靈機(jī)模型[7]。人們研究量子計(jì)算機(jī)最初很重要的一個(gè)出發(fā)點(diǎn)是探索通用計(jì)算機(jī)的計(jì)算極限。當(dāng)使用計(jì)算機(jī)模擬量子現(xiàn)象時(shí),因?yàn)辇嫶蟮?span style="color:#003884;text-decoration:underline;">希爾伯特空間而數(shù)據(jù)量也變得龐大。一個(gè)完好的模擬所需的運(yùn)算時(shí)間則變得相當(dāng)長(zhǎng),甚至是不切實(shí)際的天文數(shù)字。理查德·費(fèi)曼當(dāng)時(shí)就想到如果用量子系統(tǒng)所構(gòu)成的計(jì)算機(jī)來模擬量子現(xiàn)象則運(yùn)算時(shí)間可大幅度減少,從而量子計(jì)算機(jī)的概念誕生。半導(dǎo)體靠控制集成電路來記錄及運(yùn)算信息,量子計(jì)算機(jī)則希望控制原子或小分子的狀態(tài),記錄和運(yùn)算信息。 量子計(jì)算機(jī)在1980年代多處于理論推導(dǎo)狀態(tài)。1994年彼得·秀爾(Peter Shor)提出量子質(zhì)因數(shù)分解算法后[8],證明量子計(jì)算機(jī)能做出離散對(duì)數(shù)運(yùn)算[9],而且速度遠(yuǎn)勝傳統(tǒng)電腦。因?yàn)榱孔硬幌?span style="color:#003884;text-decoration:underline;">半導(dǎo)體只能記錄0與1,可以同時(shí)表示多種狀態(tài)。如果把半導(dǎo)體比喻成單一樂器,量子計(jì)算機(jī)就像交響樂團(tuán),一次運(yùn)算可以處理多種不同狀況,因此,一個(gè)40比特的量子計(jì)算機(jī),就能在很短時(shí)間內(nèi)解開1024位電腦花上數(shù)十年解決的問題。因其對(duì)于現(xiàn)在通行于銀行及網(wǎng)絡(luò)等處的RSA加密算法可以破解而構(gòu)成威脅之后,量子計(jì)算機(jī)變成了熱門的話題,除了理論之外,也有不少學(xué)者著力于利用各種量子系統(tǒng)來實(shí)現(xiàn)量子計(jì)算機(jī)。 基本概念 傳統(tǒng)計(jì)算機(jī)即對(duì)輸入信號(hào)序列按一定算法進(jìn)行變換的機(jī)器,其算法由計(jì)算機(jī)的內(nèi)部邏輯電路實(shí)現(xiàn)。 輸入態(tài)和輸出態(tài)都是傳統(tǒng)信號(hào),用量子力學(xué)的語言來描述,也即是:其輸入態(tài)和輸出態(tài)都是某一力學(xué)量的本征態(tài)。如輸入二進(jìn)制序列用量子記號(hào) 0110110,用量子記號(hào)則為| 0110110> 。所有的輸入態(tài)均相互正交。對(duì)傳統(tǒng)計(jì)算機(jī)不可能輸入如下疊加態(tài):c1 |0110110> + c2|1001001> 傳統(tǒng)計(jì)算機(jī)內(nèi)部的每一步變換都演化為正交態(tài),而一般的量子變換沒有這個(gè)性質(zhì),因此,傳統(tǒng)計(jì)算機(jī)中的變換(或計(jì)算)只對(duì)應(yīng)一類特殊集。 量子計(jì)算機(jī)分別對(duì)傳統(tǒng)計(jì)算機(jī)的限制作了推廣。量子計(jì)算機(jī)的輸入用一個(gè)具有有限能級(jí)的量子系統(tǒng)來描述,如二能級(jí)系統(tǒng)(稱為量子比特(qubits)),量子計(jì)算機(jī)的變換(即量子計(jì)算)包括所有可能的正變換。 量子計(jì)算機(jī)的輸入態(tài)和輸出態(tài)為一般的疊加態(tài),其相互之間通常不正交; 量子計(jì)算機(jī)中的變換為所有可能的正變換。得出輸出態(tài)之后,量子計(jì)算機(jī)對(duì)輸出態(tài)進(jìn)行一定的測(cè)量,給出計(jì)算結(jié)果; 傳統(tǒng)計(jì)算是一類特殊的量子計(jì)算,量子計(jì)算對(duì)傳統(tǒng)計(jì)算作了極大的擴(kuò)充,其最本質(zhì)的特征為量子疊加性和量子相干性。量子計(jì)算機(jī)對(duì)每一個(gè)疊加分量實(shí)現(xiàn)的變換相當(dāng)于一種經(jīng)典計(jì)算,所有這些傳統(tǒng)計(jì)算同時(shí)完成,并按一定的概率振幅疊加起來,給出量子計(jì)算機(jī)的輸出結(jié)果。這種計(jì)算稱為量子并行計(jì)算。
- APPlication :由開發(fā)者開發(fā)面向用戶的應(yīng)用,它們都使用了Factom的服務(wù)來做數(shù)據(jù)存儲(chǔ)證明。我們下面描述一下APP加入Factom的過程:
- Factom Servers: factom有一個(gè)分布式的服務(wù)集群,每一個(gè)服務(wù)器都會(huì)負(fù)責(zé)一維護(hù)部分APP的賬本,同時(shí)將更新同步到其他服務(wù)器中。Factom中服務(wù)器有兩種類型,一種是記賬服務(wù)器,一種是審查服務(wù)器。
- bitcoin miner:這一層我就不多說了。
上面就是按照體系架構(gòu)來講述一下它工作的基本流程,Factom的實(shí)現(xiàn)比較復(fù)雜。
3.2 我們?cè)侔凑召~本層次來說:- Directory Blocks
- Entry Blocks
- Entrys
轉(zhuǎn)載于:https://www.cnblogs.com/cnblogs-wangzhipeng/p/8270075.html
總結(jié)
以上是生活随笔為你收集整理的Factom(公证通)--基于区块链的存证系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL和PostgreSQL的常用语
- 下一篇: Day18 (一)类的加载器