成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【翻譯】理解 IPFS 白皮書 第1部分

Ilikewhite / 2139人閱讀

摘要:理解白皮書第部分原文鏈接哦不,白皮書加密貨幣區(qū)塊鏈?zhǔn)澜缦矏郯灼?,也不例外。要理解的工作原理,最好一步一步地學(xué)習(xí)白皮書。從開始,白皮書中明確提到了三個實現(xiàn)。白皮書指出小值等于或小于直接存儲在上。

理解 IPFS 白皮書 第 1 部分

原文鏈接:https://decentralized.blog/un...

哦不,白皮書!

加密貨幣 / 區(qū)塊鏈?zhǔn)澜缦矏郯灼?,IPFS 也不例外。 它起源于著名的由中本聰編寫的白皮書 Bitcoin: A Peer-to-Peer Electronic Cash System(反過來又引用了另一篇你不想知道的白皮書)。 當(dāng)我們深入加密貨幣時,我們將在后續(xù)的文章中看看比特幣白皮書。

關(guān)于白皮書,你需要了解的兩件事:

它們以 PDF 格式分發(fā)(因為它比 HTML 更難更改?。?/p>

白皮書很難,看起來很可怕并且包含至少一個數(shù)學(xué)公式。

IPFS 白皮書原文在這里: IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3) 。 并且,理所應(yīng)當(dāng)?shù)赝泄茉?IPFS 上。

要理解 IPFS 的工作原理,最好一步一步地學(xué)習(xí)白皮書。 我將用兩個章節(jié)內(nèi)來一窺 IPFS 的底層技術(shù):

Distributed Hash Tables 分布式哈希表

Block Exchanges - BitTorrent 塊交換

Version Control Systems - Git 版本控制系統(tǒng)

Self-Certified Filesystems - SFS 自我認(rèn)證的文件系統(tǒng)

對應(yīng)到 ISO 協(xié)議棧如下圖:

好了,我們開始吧!

分布式散列表 (DHT) 什么是 DHT?

DHT 就像 Python 中的 dict 對象或 Perl 的哈希(如果你有鍵,你就可以檢索到相應(yīng)的值),但 DHT 的數(shù)據(jù)分布在多個節(jié)點上。 維基百科文章 Distributed hash table 給出了很好的介紹。

在 IPFS 的例子中,鍵是內(nèi)容的哈希。 因此,向 IPFS 節(jié)點詢問具有哈希 QmcPx9ZQboyHw8T7Afe4DbWFcJYocef5Pe4H3u7eK1osnQ 的內(nèi)容,于是 IPFS 節(jié)點將在 DHT 中查找哪些節(jié)點保存了對應(yīng)的內(nèi)容。

如何有效地找到特定值(快速,盡可能少的網(wǎng)絡(luò)請求)以及如何管理 DHT 以便更改(進(jìn)入 / 離開網(wǎng)絡(luò)的節(jié)點或表中的新條目)容易被承受。這兩個問題在已有的 DHT 的實現(xiàn)方式各不相同。

其中一種實現(xiàn)稱為 Pastry,我喜歡這兩個視頻,其中 路由 (如何查找值)和 動態(tài) (如何處理節(jié)點添加 / 刪除)得到了很好的解釋。

Kademlia 和它的朋友們

回到白皮書。 從 Kademlia 開始,白皮書中明確提到了三個 DHT 實現(xiàn)。 Kademlia 有自己的 白皮書 ,但我們暫時不去管。

Kademlia 是幾乎所有流行的 P2P 系統(tǒng)中都會使用的 DHT 協(xié)議,另外關(guān)于 Kedemlia 的 維基百科 也有很好介紹。

簡而言之,Kedemlia 使用節(jié)點的 ID 逐步接近具有所需哈希的節(jié)點(來自維基百科文章):

在搜索某些值時,算法需要知道相關(guān)的密鑰并分幾步探索網(wǎng)絡(luò)。 每個步驟都會找到更靠近密鑰的節(jié)點,直到聯(lián)系的節(jié)點返回該值或找不到更近的節(jié)點。 這非常有效:與許多其他 DHT 一樣,Kademlia 在總共 n 個節(jié)點的系統(tǒng)中僅需要聯(lián)系 O(log(n)) 個節(jié)點。

這里面的細(xì)節(jié)開始變得非常復(fù)雜,我認(rèn)為它不會幫助我們達(dá)到理解 IPFS 的目標(biāo),所以我們繼續(xù)前進(jìn)。 如果你喜歡類似的東西:這里有一個 很好的介紹 ,如果你想深入挖掘 Kademlia 白皮書的鏈接是 ^^^(譯者注:沒有理解這個符號的涵義,在和作者溝通中)。

IPFS 白皮書提到了另外兩個改進(jìn)了標(biāo)準(zhǔn) Kedemlia 的 DHT 實現(xiàn):

Coral DSHT:提高查找性能并減少資源使用。

S/Kademlia:使 Kademlia 更能抵御惡意攻擊。

IPFS DHT 實戰(zhàn)

DHT 在 IPFS 中用于路由,換句話說:

宣布向網(wǎng)絡(luò)添加數(shù)據(jù)

幫助定位任何節(jié)點請求的數(shù)據(jù)。

白皮書指出:

小值(等于或小于 1KB)直接存儲在 DHT 上。 對于更大的值,DHT 存儲引用,即存儲數(shù)據(jù)塊對等的節(jié)點的 ID 值。

那么我們來看一下我們是否可以通過直接訪問 DHT 并添加和檢索小數(shù)據(jù)塊。

$ ipfs daemon # 確保能成功運行(首先安裝配置好 ipfs)

$ echo "my tiny text" | ipfs add # 向當(dāng)前節(jié)點添加一個小于 1KB 的文本文件
QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF

$ ipfs cat QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF # 檢查
my tiny text

$ ipfs dht get /ipfs/QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF
# returns not found

所以現(xiàn)在我們有那個文本,我們想從 DHT 訪問它,但顯然,支持的 ipfs dht get 請求是以 / ipns / 開頭的鍵。

好的,所以我們創(chuàng)建了一個 IPNS ,看看我們是否可以直接查詢:

$ ipfs name publish QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF # point a IPNS address to our content
Published to QmYebHWdWStasXWZQiXuFacckKC33HTbicXPkdSi5Yfpz6: /ipfs/QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF

$ ipfs resolve QmYebHWdWStasXWZQiXuFacckKC33HTbicXPkdSi5Yfpz6 # check it
# never returns, hmm IPNS doesn"t seem to be ready for production

$ ipfs dht get /ipns/QmYebHWdWStasXWZQiXuFacckKC33HTbicXPkdSi5Yfpz6 # same thing but directly
# does return binary data starting with 4/ipfs/QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF

它確實有效,但現(xiàn)在似乎僅限于 IPNS 。我們還可以用 DHT 做些什么?

使用 DHT 找出哪些節(jié)點可以提供指定的數(shù)據(jù):

$ ipfs dht findprovs QmfQKcXMLGvCxx6opNDwb1ptD1LJER6MPHdsMHCB1CXpFF
QmYebHWdWStasXWZQiXuFacckKC33HTbicXPkdSi5Yfpz6
QmRf4ERGvYpVo6HRa2VueZT8pWi8YvyLS3rW6ad2y83tdN

# ^^^ there are both my nodes, so that works
# Now ask the DHT for the address of the first peer that was returned
$ ipfs dht findpeer QmYebHWdWStasXWZQiXuFacckKC33HTbicXPkdSi5Yfpz6
/ip4/176.92.234.78/tcp/4001
/ip4/85.74.239.218/tcp/38689
/ip4/127.0.0.1/tcp/4001
/ip4/192.168.1.30/tcp/4001
/ip6/::1/tcp/4001
/ip4/192.168.1.3/tcp/4001
/ip4/176.92.234.78/tcp/40443

# Oooh nice! We will visit this address notation in the next episode.

總而言之,我們在實踐中看到了一些和 DHT 相關(guān)的東西,但這項技術(shù)不像我希望的那樣直觀和實用。

是時候轉(zhuǎn)向應(yīng)用在 IPFS 的下一個令人興奮的技術(shù)了:

BitTorrent BitTorrent 如何運作?

我們都知道 BitTorrent,但我們中的一些人(對,我也是)需要深入挖掘才能真正理解它。 這個演講是一個很好的介紹: Feross Aboukhadijeh:WebTorrent - JSConf.Asia 2014 。 演講者討論了他如何實現(xiàn)可以在瀏覽器中運行的 BitTorrent 客戶端,這要歸功于 WebRTC(一種很酷的技術(shù),可能以后會在我們的項目派上用場)。 它同樣徹底闡述了 DHT 的工作機制。

更多資料:

Peer-to-peer networking with BitTorrent (PDF)。 如果你只想讀一篇文章,那就選這篇。

Peer to Peer Content Delivery - BitTorrent(視頻)+ 幻燈片 (PDF)。

The BitTorrent Protocol Specification v2(標(biāo)準(zhǔn)規(guī)范,讀起來不會很困難)。

BitTorrent 和 IPFS

IPFS 中的數(shù)據(jù)(塊)交換受 BitTorrent 的啟發(fā),但并不是和 BitTorrent 完全一樣的機制。 白皮書提到了 IPFS 使用的兩個 BitTorrent 的特性:

tit-for-tat(譯者注:針鋒相對)的策略(如果你不分享數(shù)據(jù),你也不會收到數(shù)據(jù))

優(yōu)先獲取稀有的數(shù)據(jù)(提高性能等等,請參閱上面的第一個 PDF)

一個值得注意的區(qū)別是,在 BitTorrent 中,每個文件都有多帶帶的一組對等節(jié)點(彼此形成一個 P2P 網(wǎng)絡(luò)),而 IPFS 則是所有數(shù)據(jù)都在對等節(jié)點形成的一個大集群中。 IPFS BitTorrent 的變種被稱為 BitSwap,我將在下一篇中討論它。

我們在實踐一下 swarm 吧。

# Make sure you have the daemon running
$ ipfs swarm peers
/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx
/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu
/ip4/178.62.61.185/tcp/4001/ipfs/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3

當(dāng)你剛啟動守護(hù)進(jìn)程時,你會連接到幾個 “種子對等節(jié)點”。 過了一會兒,對等節(jié)點的數(shù)量迅速增長。

另一個查詢 swarm 的命令:

$ ipfs swarm addrs
QmNRuQrwtGgeVQgndTny4A4Rukg7GR7vzDJrVJxUBfqevk (4)
        /ip4/127.0.0.1/tcp/4001
        /ip4/172.31.41.39/tcp/4001
        /ip4/35.167.26.28/tcp/4001
        /ip6/::1/tcp/4001
QmNSJohkvvBVmHeN7KUZnm4X84GA6Znbv6ZmvsTAjbw3AB (5)
        /ip4/10.0.1.8/tcp/4001
        /ip4/127.0.0.1/tcp/4001
        /ip4/174.44.163.74/tcp/16012
        /ip6/::1/tcp/4001
        /ip6/fd15:462e:f8fd:695e:9161:27dd:7f78:d242/tcp/4001
QmNTJyhCYcbv5GdnqtdEwTfJCgY6pV4PJiNTtAmuoxnQak (3)
        /ip4/127.0.0.1/tcp/4001
        /ip4/94.176.232.68/tcp/4001
        /ip6/::1/tcp/4001
QmNTZy7TfXvsHczwwV3EYbxRZN5gthgicG9GiroD7C4ZrP (4)
        /ip4/127.0.0.1/tcp/4001
        /ip4/172.20.255.127/tcp/4001
        /ip4/54.229.227.53/tcp/4001
        /ip6/::1/tcp/4001
        .

這些是本地節(jié)點在 swarm 中已知的地址,頂部的哈希是 peerId。

有了這些信息,您就可以連接到對等節(jié)點,比如這樣:

$ ipfs swarm connect /ip4/114.91.202.180/tcp/34746/ipfs/QmfTgdg6GkqJtUrWAYo69GjcLrjQq9LjTjgW3KZ1ux1X6U
connect QmfTgdg6GkqJtUrWAYo69GjcLrjQq9LjTjgW3KZ1ux1X6U success

后面會介紹更多的關(guān)于 BitSwap 的信息。

休息一下吧

Pfew(?),到這里已經(jīng)學(xué)習(xí)到了很多理論和干貨,但是我們的 IPFS 白皮書的學(xué)習(xí)路程甚至還未過半! 因此,為了讓它們更全面地被理解,并為了休息,放空大腦,去公園散散步,順便聽聽這個播客:The Quiet Master of Cryptocurrency — Nick Szabo。 它到無處不在,但我發(fā)現(xiàn)它非常有趣。它把觀察視角從比特級別拉遠(yuǎn)到一些到 “什么是錢?” 之類的(宏觀的)東西。

強烈建議聽一下,當(dāng)你聽完后,我們繼續(xù)。

版本控制系統(tǒng) - Git

白皮書關(guān)于版本控制系統(tǒng)的整個部分都復(fù)制在這里:

版本控制系統(tǒng)提供了對隨時間變化的文件進(jìn)行建模的設(shè)施,并有效地分發(fā)不同的版本。

流行版本控制系統(tǒng) Git 提供了強大的 Merkle DAG 對象模型,以分布式友好的方式捕獲對文件系統(tǒng)樹的更改。

不可更改的對象表示文件(blob),目錄(樹)和更改(提交)。

通過加密 hash 對象的內(nèi)容,讓對象可尋址。

鏈接到其他對象是嵌入的,形成一個 Merkle DAG。這提供了有用的完整性和 workflow 屬性。

大多數(shù)版本元數(shù)據(jù)(分支,標(biāo)簽等等)都只是指針引用,因此創(chuàng)建和更新的代價都很小。

版本改變只是更新引用或者添加對象。

分布式版本改變對其他用戶而言只是轉(zhuǎn)移對象和更新遠(yuǎn)程引用。

讓我們逐行理解它:

Ad 1. 不可變對象表示文件(blob),目錄(樹)和更改(提交)。

Git 只添加數(shù)據(jù)。 所以 blob,樹和提交是不可變的。 其中任何一個數(shù)據(jù)的最終版本是由特殊的引用決定的(見第 4 和第 5 點)。

Ad 2. 通過加密 hash 對象的內(nèi)容,讓對象可尋址。

在 git 中,引用它們時不使用文件或目錄名。 Git 使用 SHA1 散列內(nèi)容(或列出或提交)并在其數(shù)據(jù)庫中使用這些散列值。這篇文章對于它的工作機制有很深刻的洞察: Git under the hood (從 “現(xiàn)在讓我們來看看 Git 如何做到這一切” 這一節(jié)開始閱讀)

Ad 3. 鏈接到其他對象是嵌入的,形成一個 Merkle DAG。這提供了有用的完整性和 workflow 屬性。

哦,天哪,一個 Merkle DAG! 不用擔(dān)心,它實際上并不像聽起來那么可怕。

Merkle 樹是二叉樹,其中父級包含兩個子節(jié)點的哈希值的拼接后內(nèi)容的哈希值。 這解釋了完整性屬性的由來:數(shù)據(jù)塊中的任何更改都會導(dǎo)致根節(jié)點發(fā)生更改。 只需要一點點元數(shù)據(jù)(叔節(jié)點和父節(jié)點,可以是不受信任的)和受信任的根節(jié)點,我們就可以驗證塊的有效性。

現(xiàn)在,Merkle DAG 與 Merkle 樹不同。不同之處在于解釋:Merkle DAG 和 JRFC 20 - Merkle DAG

簡而言之:Merkle DAG 更通用,因為它不是二叉樹而是圖,任何節(jié)點都可以包含數(shù)據(jù),而不僅僅是 Merkle 樹中的葉子節(jié)點。

它仍然有點模糊,當(dāng)我們看一下 IPFS Merkle DAG 時,我會再次討論它。

Ad 4. 和 5. 大多數(shù)版本控制元數(shù)據(jù)(分支,標(biāo)簽等)只是指針引用,因此創(chuàng)建和更新成本低廉。版本更改僅更新引用或添加對象。

這里提供了一個可視化的方式觀察 git 的運行機制: Git for Computer Scientists 這里可以看出分支,HEAD 和標(biāo)簽僅僅是對提交的引用。

Ad 6. 將版本更改分發(fā)給其他用戶只是傳輸對象和更新遠(yuǎn)程引用。

這里說的是什么,我覺得沒有必要解釋:)

自我認(rèn)證的文件系統(tǒng) - SFS

這項技術(shù)用于實現(xiàn) IPFS 的 IPNS 名稱系統(tǒng)。它允許我們?yōu)檫h(yuǎn)程文件系統(tǒng)生成地址,用戶可以驗證地址的有效性。

白皮書指出:

SFS 引入了一種用于構(gòu)建自我認(rèn)證文件系統(tǒng)的技術(shù):使用以下方案尋址遠(yuǎn)程文件系統(tǒng)
/sfs/:
其中 Location 是服務(wù)器網(wǎng)絡(luò)地址,另外:
HostID = hash(public_key || Location)
因此,SFS 文件系統(tǒng)的命名實際上對其服務(wù)器進(jìn)行認(rèn)證。

這已經(jīng)不言而喻了,我們將在下一篇中看到它的實際應(yīng)用:Understanding the IPFS White Paper part 2

希望你將對這篇文章的看法通過推特給我 @pors。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24141.html

相關(guān)文章

  • 【董天一】IPFS的競爭對手們(二)

    摘要:資深區(qū)塊鏈技術(shù)開發(fā)者,現(xiàn)致力于在中國的技術(shù)推廣的競爭對手。接上一篇,今天繼續(xù)講的競爭對手們。小編對比了里面各個項目的源代碼熱度,顯然遠(yuǎn)遠(yuǎn)超過其他競爭對手。 作者簡介:董天一 ,IPFS/Filecoin中國區(qū)技術(shù)布道人 ,《IPFS指南》作者。畢業(yè)于北京大學(xué)軟件與微電子學(xué)院曾擔(dān)任甲骨文亞洲研發(fā)中心(中國)數(shù)據(jù)庫開發(fā)工程師。資深區(qū)塊鏈技術(shù)開發(fā)者,現(xiàn)致力于IPFS/Filecoin在中國的...

    xiaoxiaozi 評論0 收藏0
  • 【董天一】什么是IPFS(三)

    摘要:作者簡介董天一,中國區(qū)技術(shù)布道人,指南作者。相關(guān)文章和視頻推薦董天一什么是二圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 作者簡介:董天一,IPFS/Filecoin中國區(qū)技術(shù)布道人,《IPFS指南》作者。畢業(yè)于北京大學(xué)軟件與微電子學(xué)院曾擔(dān)任甲骨文亞洲研發(fā)中心(中國)數(shù)據(jù)庫開發(fā)工程師資深區(qū)塊鏈技術(shù)開發(fā)者,現(xiàn)致力于IPFS/Filecoin在中國的技術(shù)推廣。 前兩篇介紹了IP...

    jasperyang 評論0 收藏0
  • 【董天一】IPFS的競爭對手們(一)

    摘要:作者簡介董天一中國區(qū)技術(shù)布道人指南作者。資深區(qū)塊鏈技術(shù)開發(fā)者,現(xiàn)致力于在中國的技術(shù)推廣的競爭對手。的共享硬盤代幣每月支付一次。相關(guān)文章和視頻推薦董天一和競爭對手們二圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 作者簡介:董天一 ,IPFS/Filecoin中國區(qū)技術(shù)布道人 ,《IPFS指南》作者。畢業(yè)于北京大學(xué)軟件與微電子學(xué)院曾擔(dān)任甲骨文亞洲研發(fā)中心(中國)數(shù)據(jù)庫開發(fā)工程師...

    xiguadada 評論0 收藏0
  • Awesome Blockchain 區(qū)塊鏈技術(shù)導(dǎo)航

    摘要:區(qū)塊鏈技術(shù)導(dǎo)航收集整理最全面最優(yōu)質(zhì)的區(qū)塊鏈技術(shù)開發(fā)相關(guān)資源。以后找不到文檔資料的時候去導(dǎo)航站看看。先亮個像,我長這樣導(dǎo)航站內(nèi)容區(qū)塊鏈開發(fā)所涉及的資源如項目白皮書黃皮書文檔及翻譯地址庫開發(fā)工具鏈開發(fā)案例音視頻課程等。 區(qū)塊鏈技術(shù)導(dǎo)航:收集整理最全面最優(yōu)質(zhì)的區(qū)塊鏈(BlockChain)技術(shù)開發(fā)相關(guān)資源。以后找不到文檔資料的時候去導(dǎo)航站看看。 先亮個像,我長這樣:showImg(https...

    Jrain 評論0 收藏0
  • IPFS安裝編譯

    摘要:白皮書官網(wǎng)安裝參考安裝如果沒有環(huán)境,首先需要安裝環(huán)境配置環(huán)境變量執(zhí)行加入執(zhí)行強制保存退出。預(yù)編譯安裝包安裝上述這個問題暫時還沒解決,依賴以及中國網(wǎng)關(guān)的問題。 filecoin白皮書 官網(wǎng):ipfs.io [TOC] 安裝 參考: IPFS Alpha Demo go-ipfs#build-from-source 安裝Go IPFS 如果沒有Go環(huán)境,首先需要安裝Go環(huán)境: br...

    JerryWangSAP 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<