摘要:通常的做法是分享者將文件用接收者的公鑰加密,接收者從網(wǎng)絡(luò)下載后用私鑰解密。而在命令的完整形式是注意其中的,如果不帶這個(gè)參數(shù),那么久表示使用默認(rèn)的也就是節(jié)點(diǎn)。
IPFS是什么
IPFS(InterPlanetary File System)是一個(gè)內(nèi)容尋址、版本化、點(diǎn)對(duì)點(diǎn)的分布式文件系統(tǒng)。
內(nèi)容尋址 - 文件不是以URL尋址,而是根據(jù)文件內(nèi)容的Hash值尋址,一旦內(nèi)容確定,文件地址也就確定
版本化 - 類似于git,可以跟蹤文件的歷史變化情況
點(diǎn)對(duì)點(diǎn) - 所有運(yùn)行ipfs的設(shè)備點(diǎn)對(duì)點(diǎn)組成一個(gè)去中心化網(wǎng)絡(luò)
安裝啟動(dòng)IPFS bin包安裝在官方網(wǎng)站下載對(duì)應(yīng)平臺(tái)的安裝包,本文使用linux-64位版本
或直接使用網(wǎng)址下載
> wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz
解壓安裝包,將可執(zhí)行文件放在環(huán)境變量目錄
> tar xvfz go-ipfs_v0.4.15_linux-amd64.tar.gz > mv ipfs /usr/local/bin/
初始化ipfs節(jié)點(diǎn)
> ipfs init initializing ipfs node at /root/.go-ipfs generating 2048-bit RSA keypair...done peer identity: QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR to get started, enter: ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
根據(jù)提示,檢查安裝狀態(tài)
> ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme Hello and Welcome to IPFS! ██╗██████╗ ███████╗███████╗ ██║██╔══██╗██╔════╝██╔════╝ ██║██████╔╝█████╗ ███████╗ ██║██╔═══╝ ██╔══╝ ╚════██║ ██║██║ ██║ ███████║ ╚═╝╚═╝ ╚═╝ ╚══════╝ If you"re seeing this, you have successfully installed IPFS and are now interfacing with the ipfs merkledag! ------------------------------------------------------- | Warning: | | This is alpha software. use at your own discretion! | | Much is missing or lacking polish. There are bugs. | | Not yet secure. Read the security notes for more. | ------------------------------------------------------- Check out some of the other files in this directory: ./about ./help ./quick-start <-- usage examples ./readme <-- this file ./security-notes
前面完成了ipfs節(jié)點(diǎn)的配置,接下來(lái)就是啟動(dòng)ipfs守護(hù)進(jìn)程,可以在另一個(gè)終端啟動(dòng),也可以在本終端加上&后臺(tái)啟動(dòng)
> ipfs daemon Initializing daemon... Successfully raised file descriptor limit to 2048. Swarm listening on /ip4/127.0.0.1/tcp/4001 Swarm listening on /ip4/172.17.0.1/tcp/4001 Swarm listening on /ip4/172.22.16.1/tcp/4001 Swarm listening on /ip4/192.168.0.116/tcp/4001 Swarm listening on /ip4/192.168.122.1/tcp/4001 Swarm listening on /ip6/::1/tcp/4001 Swarm listening on /p2p-circuit/ipfs/QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR Swarm announcing /ip4/10.103.255.235/tcp/48240 Swarm announcing /ip4/127.0.0.1/tcp/4001 Swarm announcing /ip4/172.17.0.1/tcp/4001 Swarm announcing /ip4/172.22.16.1/tcp/4001 Swarm announcing /ip4/192.168.0.116/tcp/4001 Swarm announcing /ip4/192.168.122.1/tcp/4001 Swarm announcing /ip6/::1/tcp/4001 API server listening on /ip4/127.0.0.1/tcp/5001 Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080 Daemon is ready
在另一個(gè)終端輸入以下命令確保連接進(jìn)ipfs網(wǎng)絡(luò)
> ipfs swarm peers /ip4/103.214.109.178/tcp/4001/ipfs/QmfZeNauweuRYWNXMjPhB4Tu2CPU6aD5eide9PEhVtHP6A /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ /ip4/104.223.59.174/tcp/4001/ipfs/QmeWdgoZezpdHz1PX8Ly8AeDQahFkBNtHn6qKeNtWP1jB6 /ip4/104.233.106.156/tcp/4001/ipfs/QmSaLHB9dK7UphxcSWSdySVQyayux2yVMUELnAN8VV96x2 /ip4/106.38.77.82/tcp/49777/ipfs/QmfT3BCVYjLiVVB197mR1P4uhdR7zsKZsE7HLzCV1qSbHJ /ip4/107.172.55.210/tcp/4001/ipfs/QmcYfPreozdQMKyo5omUhvTShCKRjdeiQhS7328J7CLLXe /ip4/109.129.112.32/tcp/56478/ipfs/QmRYXX6mvvQQWR1kB1pC5c5dbcwASqyoQ6sjxH2czzPNBs ......
到現(xiàn)在,已經(jīng)可以從ipfs網(wǎng)絡(luò)中獲取文件了,以一個(gè)官方圖片為例
> ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg > cat.jpg
那么將在本目錄下得到一張貓的圖片
另外,可以在瀏覽器中訪問(wèn)http://localhost:5001/webui來(lái)使用ipfs的控制臺(tái)
使用add將一個(gè)文件添加到ipfs網(wǎng)絡(luò)(可以被其他節(jié)點(diǎn)訪問(wèn)到)
> cat 187J3X1.txt Hello!187J3X1! > ipfs add 187J3X1.txt added QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj 187J3X1.txt
文件要能被網(wǎng)絡(luò)中所有節(jié)點(diǎn)訪問(wèn)需要一定時(shí)間,在某個(gè)運(yùn)行ipfs的節(jié)點(diǎn),使用get命令可以獲取到本文件
> ipfs get QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj
更多命令可查看幫助信息
> ipfs --help源碼安裝
可以從Github下載源碼,自行編譯安裝
使用GPG完成私密文件分享在ipfs文件系統(tǒng)中,只要知道文件的Hash,就可以從節(jié)點(diǎn)獲取文件。所以ipfs天生缺乏隱私性,加入需要分享私密的文件給別人。通常的做法是分享者將文件用接收者的公鑰加密,接收者從ipfs網(wǎng)絡(luò)下載后用私鑰解密。GPG可以完成加解密的功能。
GPG同樣可以使用bin包安裝或源碼安裝
bin包安裝以u(píng)buntu 為例
> sudo apt-get install gnupg源碼安裝
(TODO)
密鑰生成接收者使用gen-key生成密鑰對(duì)
> gpg --gen-key gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
加密方案使用默認(rèn)RSA就行
Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection?
密鑰長(zhǎng)度依然選擇默認(rèn)
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
設(shè)置密鑰過(guò)期時(shí)間,選擇永遠(yuǎn)不過(guò)期
Please specify how long the key should be valid. 0 = key does not expire= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0)
輸入秘鑰創(chuàng)建者一些信息
You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter)" Real name: chenmo Email address: [email protected] Comment: You selected this USER-ID: "chenmo <[email protected]>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
創(chuàng)建私鑰密碼(非常重要)
You need a Passphrase to protect your secret key. Enter passphrase: Repeat passphrase:
接下來(lái),程序?qū)㈤_始生成密鑰,為了使生成過(guò)程使用的隨機(jī)數(shù)更加隨機(jī),你可以采用敲鍵盤、移動(dòng)鼠標(biāo)等方式增加隨機(jī)數(shù)的隨機(jī)特性。
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. f Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 186 more bytes)
本機(jī)生成的秘鑰對(duì)可以用--list-keys命令查看
gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/F0AA19A1 2018-07-08 uid chenmo <[email protected]> sub 2048R/54C6ABC4 2018-07-08
其中的F0AA19A1就是公鑰id, 54C6ABC4是私鑰id
可以使用armor命令將秘鑰導(dǎo)出為filename文件
gpg --armor --output [filename] --export [密鑰id]密鑰分享
接收者需要告訴發(fā)送者自己的公鑰,以便發(fā)送者加密。這可以通過(guò)公鑰服務(wù)器完成。本文使用
hkp://pgp.mit.edu
> gpg --send-keys [公鑰id] --keyserver hkp://pgp.mit.edu gpg: "--keyserver" not a key ID: skipping gpg: "hkp://pgp.mit.edu" not a key ID: skipping gpg: sending key [公鑰id] to hkp server keys.gnupg.net
發(fā)送方搜索該密鑰
> gpg --keyserver hkp://pgp.mit.edu -search-keys [公鑰id]加密文件
發(fā)送方加密待分享的文件ipfs_demo.txt
> cat ipfs_demo.txt This file is just for test --- 187J3X1 > gpg --encrypt --recipient [公鑰id] ipfs_demo.txt
將加密后的文件ipfs_demo.txt.gpg 添加到ipfs網(wǎng)絡(luò)中
> ipfs add ipfs_demo.txt.gpg added QmbvjL7BnCpUgzrJj2E2QkhqRBJeWKmo1TCfpMmKEQMYYc ipfs_demo.txt.gpg解密文件
接收方獲取文件
>ipfs get QmQRLCz3c6BwtkcACxwwraDX62g4ZAS7fQmrn3Y3rJh1xN Saving file(s) to QmQRLCz3c6BwtkcACxwwraDX62g4ZAS7fQmrn3Y3rJh1xN 24 B / 24 B [======================================================] 100.00% 0s
該操作可能會(huì)有一定時(shí)間延時(shí),也可通過(guò)網(wǎng)頁(yè)訪問(wèn)文件地址來(lái)接收文件
接下來(lái)用私鑰解密出原文件
gpg --decrypt QmbvjL7BnCpUgzrJj2E2QkhqRBJeWKmo1TCfpMmKEQMYYc > ipfs_demo.txt You need a passphrase to unlock the secret key for user: "chenmo <[email protected]>" 2048-bit RSA key, ID 54C6ABC4, created 2018-07-08 (main key ID F0AA19A1) gpg: encrypted with 2048-bit RSA key, ID 54C6ABC4, created 2018-07-08 "chenmo <[email protected]>" > cat ipfs_demo.txt This file is just for test --- 187J3X1添加文件
在ipfs守護(hù)進(jìn)程啟動(dòng)之后,可以使用ipfs add命令將文件添加到ipfs網(wǎng)絡(luò)
> echo "Hello!187J3X1!" > 187J3X1.txt > ipfs add 187J3X1.txt added QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj 187J3X1.txt
其中QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj就是文件內(nèi)容的Hash值,一旦文件內(nèi)容改變,這個(gè)值就會(huì)改變。需要注意,這個(gè)值與文件名完全沒(méi)有關(guān)系,它只是內(nèi)容的Hash,不管文件名是什么,只要內(nèi)容一樣,它的Hash值就是一樣的。
本地位置ipfs的本地存儲(chǔ)空間在~/.ipfs,所有ipfs自身的文件和本地添加到ipfs網(wǎng)絡(luò)的文件都存放在此目錄
> ls /.ipfs api blocks config datastore datastore_spec keystore repo.lock version
從此目錄下這里可以找到剛才添加的文件
grep -rn "187J3X1" Binary file blocks/ZF/CIQIXJZ7NCVBEU67XHWSTICDNGNRD2SIAE33W4SSDI6LZTE4PLRSZFA.data matches讀取文件
使用ipfs cat命令可以獲取添加到ipfs網(wǎng)絡(luò)中的文件,如果文件內(nèi)容就在本地,那么顯示將會(huì)很快,如果是在另一個(gè)節(jié)點(diǎn),那么要等本節(jié)點(diǎn)從網(wǎng)絡(luò)中獲得該文件內(nèi)容后,才會(huì)顯示
> ipfs cat QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj Hello!187J3X1!
可以將文件內(nèi)容重定向到一個(gè)文件,文件名完全不必與原來(lái)的一樣,因?yàn)樵趇pfs網(wǎng)絡(luò)中存儲(chǔ)的只有內(nèi)容,沒(méi)有文件名
> ipfs cat QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj > recv.txt > cat recv.txt Hello!187J3X1!添加文件名信息
向ipfs網(wǎng)站中添加單個(gè)文件是沒(méi)有文件名等信息的,通過(guò)在ipfs add命令中添加-w選項(xiàng),可以將該文件的文件名和所處文件夾的信息一同添加到ipfs網(wǎng)絡(luò)
> pwd /home/yc/workspace/ipfs/tmp > ipfs add -w 187J3X1.txt added QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj 187J3X1.txt added Qmdjqtwaj2vFkQ4P49qbnR9ksFphkSvUEf3S5rPNDVo7Kn
與剛才僅添加一個(gè)文件不同的是,這里會(huì)得到兩個(gè)Hash值,第一個(gè)QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj是文件內(nèi)容的Hash值,與之前的一樣,另一個(gè)Qmdjqtwaj2vFkQ4P49qbnR9ksFphkSvUEf3S5rPNDVo7Kn就是文件所處目錄的信息的Hash值。
使用ipfs ls命令可以列出這種層次關(guān)系(不能使用ipfs cat)
ipfs ls -v Qmdjqtwaj2vFkQ4P49qbnR9ksFphkSvUEf3S5rPNDVo7Kn Hash Size Name QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj 23 187J3X1.txt
可以利用目錄和文件關(guān)系找到顯示文件的內(nèi)容
> ipfs cat Qmdjqtwaj2vFkQ4P49qbnR9ksFphkSvUEf3S5rPNDVo7Kn/187J3X1.txt Hello!187J3X1!添加目錄
通過(guò)在ipfs add命令中添加-r選項(xiàng),可以將一個(gè)目錄和其中的內(nèi)容添加到ipfs網(wǎng)絡(luò)中
> pwd /home/yc/workspace/ipfs/tmp > echo "My Second file" > Second_file.txt > ls 187J3X1.txt Second_file.txt > ipfs add -r . added QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj tmp/187J3X1.txt added QmT96ZpTMV9kjtfEySjovvnfi92NxRqkogVtiwtD5Xs7rX tmp/Second_file.txt added QmZ813ofgBrNuUpH8VFCR4A8LVkp1vSZcmxnET5PqCtj65 tmp
可以看到該命令將整個(gè)目錄的內(nèi)容都添加到了ipfs網(wǎng)絡(luò),前兩個(gè)Hash值是文件,最后一個(gè)Hash值是目錄。通過(guò)"ipfs ls"查看
> ipfs ls -v QmZ813ofgBrNuUpH8VFCR4A8LVkp1vSZcmxnET5PqCtj65 Hash Size Name QmRTxTkdXeUmG9GxJBA7B8Ad8hticjNwkucCY96mkzusXj 23 187J3X1.txt QmT96ZpTMV9kjtfEySjovvnfi92NxRqkogVtiwtD5Xs7rX 23 Second_file.txtIPNS是什么
在ipfs中,一個(gè)文件的Hash值完全取決于其內(nèi)容,修改它的內(nèi)容,其相應(yīng)的Hash值也會(huì)發(fā)生改變。如果我們把修改前后的文件都通過(guò)ipfs add添加到ipfs網(wǎng)絡(luò)中,那么我們將可以通過(guò)這兩個(gè)Hash值訪問(wèn)到前后兩個(gè)版本的內(nèi)容。這種靜態(tài)特性有利于提高數(shù)據(jù)的安全,比如 Alice 可以將一份自己簽名(私鑰加密)的文件放到ipfs中,那么即使她后來(lái)對(duì)文件進(jìn)行了修改并重新簽名和發(fā)布,那么之前的文件依然存在,她不能抵賴曾經(jīng)發(fā)布過(guò)老版本的文件。但對(duì)于一些需要保持動(dòng)態(tài)性的文件來(lái)說(shuō),比如網(wǎng)頁(yè),在新版本出現(xiàn)后,舊版本的內(nèi)容將毫無(wú)意義。并且,總不能要求網(wǎng)頁(yè)訪問(wèn)者每次要在瀏覽器中輸入不同的ipfs地址來(lái)訪問(wèn)不同時(shí)期的網(wǎng)頁(yè)吧。
IPNS(Inter-Planetary Naming System)提供了一種為文件增加動(dòng)態(tài)性的解決方案。它允許節(jié)點(diǎn)的PeerID限定的命名空間提供一個(gè)指向具體ipfs文件(目錄)Hash的指針,通過(guò)改變這個(gè)指針每次都指向最新的文件內(nèi)容,可以使得其他人始終訪問(wèn)最新的內(nèi)容。
例子> echo "This is old version file" > myfile.txt > ipfs add myfile.txt added QmQECo2p8LdVcjtkEWDVNVM7Hrsc7arW52P5vz5BVuvEgR myfile.txt
使用ipfs publish命令發(fā)布本節(jié)點(diǎn)ipns到ipfs的映射
> ipfs name publish /ipfs/QmQECo2p8LdVcjtkEWDVNVM7Hrsc7arW52P5vz5BVuvEgR Published to QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR: /ipfs/QmQECo2p8LdVcjtkEWDVNVM7Hrsc7arW52P5vz5BVuvEgR
而QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR正是本節(jié)點(diǎn)的ID,這一點(diǎn)可以通過(guò)ipfs id看到
ipfs id { "ID": "QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR", ......
使用命令ipfs resolve可以解析ipns到ipfs的映射關(guān)系
> ipfs name resolve QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR /ipfs/QmQECo2p8LdVcjtkEWDVNVM7Hrsc7arW52P5vz5BVuvEgR
在本地執(zhí)行該命令,很快就可以得到結(jié)果。如果在其他節(jié)點(diǎn)執(zhí)行,會(huì)花費(fèi)一些時(shí)間。
可以看出解析的結(jié)果正是myfile.txt文件的內(nèi)容。
這一點(diǎn)也可以在瀏覽器中驗(yàn)證
在ipfs.io/ipfs/直接輸入文件內(nèi)容的Hash
在ipfs.io/ipns/輸入節(jié)點(diǎn)的id
現(xiàn)在對(duì)文件進(jìn)行修改,并添加到ipfs網(wǎng)絡(luò)
> echo "This is new version file" > myfile.txt > ipfs add myfile.txt added Qmdzqe3yA4JZM5wQe2hV8pfi9CA7aWUq8vHAJd7p7USJQb myfile.txt
再修改ipns到ipfs的映射關(guān)系,使本節(jié)點(diǎn)的id映射到新的文件內(nèi)容Hash
> ipfs name publish Qmdzqe3yA4JZM5wQe2hV8pfi9CA7aWUq8vHAJd7p7USJQb Published to QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR: /ipfs/Qmdzqe3yA4JZM5wQe2hV8pfi9CA7aWUq8vHAJd7p7USJQb
驗(yàn)證其映射關(guān)系
> ipfs name resolve QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR /ipfs/Qmdzqe3yA4JZM5wQe2hV8pfi9CA7aWUq8vHAJd7p7USJQb
在瀏覽器中驗(yàn)證:
ipfs + 新Hash顯示新內(nèi)容
ipns + 節(jié)點(diǎn)ID 顯示新內(nèi)容
ipfs + 舊Hash 顯示舊內(nèi)容
上面的例子中,我們修改ipns下的節(jié)點(diǎn)ID和ipfs文件內(nèi)容的映射關(guān)系,使得雖然訪問(wèn)的是同一個(gè)地址但實(shí)際訪問(wèn)的文件內(nèi)容卻不相同,這不僅適用于單個(gè)文件,我們完全可以對(duì)一個(gè)目錄作這種操作。
但是一個(gè)節(jié)點(diǎn)的ID只有一個(gè),假設(shè)我需要同時(shí)保留多個(gè)這樣的映射實(shí)例,該怎么辦呢?
其實(shí)ipns的映射關(guān)系除了節(jié)點(diǎn)ID<->文件內(nèi)容,還有一種是key<->文件內(nèi)容
通過(guò)ipfs key list命令可以看到本節(jié)點(diǎn)的key
> ipfs key list -l QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR self
可以看到,節(jié)點(diǎn)默認(rèn)具有一個(gè)名為self的key,它的值正是節(jié)點(diǎn)ID。
而在ipfs name publish命令的完整形式是
ipfs name publish [--resolve=false] [--lifetime=| -t] [--ttl= ] [--key= | -k] [--]
注意其中的key,如果不帶這個(gè)參數(shù),那么久表示使用默認(rèn)的key, 也就是節(jié)點(diǎn)ID。
可以使用ipfs key gen創(chuàng)建新的key,這里創(chuàng)建一個(gè)名為another的key
> ipfs key gen --type=rsa --size=2048 another QmYTpEqtNYvNFUwFysuRsEufNDJJBBEJfqsqrFXDT93sEE > ipfs key list -l QmQQ5t88W44Je5WgvmgpV1xSZTg1y5UXdYFHcQQ7EayxwR self QmYTpEqtNYvNFUwFysuRsEufNDJJBBEJfqsqrFXDT93sEE another
嘗試用新的key,映射一個(gè)ipfs文件內(nèi)容
> echo "This is another file" > another.txt > ipfs add another.txt added QmPoyokqso3BKYCqwiU1rspLE59CPCv5csYhcPkEd6xvtm another.txt > ipfs name publish --key=another QmPoyokqso3BKYCqwiU1rspLE59CPCv5csYhcPkEd6xvtm Published to QmYTpEqtNYvNFUwFysuRsEufNDJJBBEJfqsqrFXDT93sEE: /ipfs/QmPoyokqso3BKYCqwiU1rspLE59CPCv5csYhcPkEd6xvtm
用ipfs resolve解析
> ipfs resolve /ipns/QmYTpEqtNYvNFUwFysuRsEufNDJJBBEJfqsqrFXDT93sEE /ipfs/QmPoyokqso3BKYCqwiU1rspLE59CPCv5csYhcPkEd6xvtm小結(jié)
IPNS可以為ipfs的動(dòng)態(tài)內(nèi)容提供映射,用戶通過(guò)publish操作,使得其他人訪問(wèn)固定的IPNS地址就可以最終訪問(wèn)到不同的ipfs文件內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24400.html
摘要:之后,存儲(chǔ)端礦工節(jié)點(diǎn)會(huì)在一定時(shí)間間隔可配置,默認(rèn)為秒自動(dòng)啟動(dòng)密封過(guò)程,即獲取之前微支付通道中暫存區(qū)域的所有數(shù)據(jù),并將其密封到礦工的承諾存儲(chǔ)區(qū)域中。 歡迎大家來(lái)到第四章,經(jīng)過(guò)前章 【Filecoin源碼倉(cāng)庫(kù)全解析】第三章(下):存儲(chǔ)提供方(礦工)的配置操作的內(nèi)容閱讀后,我們應(yīng)該會(huì)對(duì)Filecoin市場(chǎng)機(jī)制中的礦工對(duì)象有了更詳細(xì)的認(rèn)知,對(duì)礦工事務(wù)的生命周期有了具象化地理解。 本章,我們將重...
摘要:如上圖,驗(yàn)證過(guò)程可以表述為驗(yàn)證者會(huì)按照一定的規(guī)則向礦工提起挑戰(zhàn),挑戰(zhàn)是隨機(jī)生成的,礦工不能提前獲知。三時(shí)空證明如圖所示,可以理解為礦工一定時(shí)間內(nèi)持續(xù)地生成復(fù)制證明和接受挑戰(zhàn)和驗(yàn)證的過(guò)程,并通過(guò)這個(gè)過(guò)程,更新全網(wǎng)存儲(chǔ)算力。 歡迎大家來(lái)到第七章,經(jīng)過(guò)前章《【Filecoin源碼倉(cāng)庫(kù)全解析】第六章:如何單機(jī)部署多節(jié)點(diǎn)集群及礦池設(shè)計(jì)思路》的介紹,我們分享了如何在單機(jī)部署多節(jié)點(diǎn)集群的知識(shí)以及礦池...
摘要:我們將在這一章源碼倉(cāng)庫(kù)全解析第五章檢索服務(wù)礦工的配置操作中介紹與存儲(chǔ)市場(chǎng)并駕齊驅(qū)而又息息相關(guān)的檢索市場(chǎng),以及體系中另一重要角色檢索服務(wù)礦工的基本配置操作。 對(duì)不起,你們可能關(guān)注了一個(gè)愛(ài)拖更的公眾號(hào)... 不過(guò)不拖更,可能這篇也不會(huì)有這么多 猛料... 歡迎大家來(lái)到第五章,經(jīng)過(guò)前章 《【Filecoin源碼倉(cāng)庫(kù)全解析】第四章:存儲(chǔ)需求方(用戶)的配置操作》的內(nèi)容閱讀后,我們應(yīng)該對(duì)存儲(chǔ)需求...
摘要:作者簡(jiǎn)介董天一,中國(guó)區(qū)技術(shù)布道人,指南作者。相關(guān)文章和視頻推薦董天一什么是二圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 作者簡(jiǎn)介:董天一,IPFS/Filecoin中國(guó)區(qū)技術(shù)布道人,《IPFS指南》作者。畢業(yè)于北京大學(xué)軟件與微電子學(xué)院曾擔(dān)任甲骨文亞洲研發(fā)中心(中國(guó))數(shù)據(jù)庫(kù)開發(fā)工程師資深區(qū)塊鏈技術(shù)開發(fā)者,現(xiàn)致力于IPFS/Filecoin在中國(guó)的技術(shù)推廣。 前兩篇介紹了IP...
摘要:我們會(huì)在后面的源碼倉(cāng)庫(kù)全解析第三章下存儲(chǔ)提供方礦工的配置操作章節(jié)重點(diǎn)介紹這個(gè)過(guò)程。參考文獻(xiàn)本章贊助品牌深圳牛鏈科技有限公司,是一家專注存儲(chǔ)類礦機(jī)研發(fā)生產(chǎn)銷售托管為一體的高科技企業(yè)。感謝深圳牛鏈科技有限公司對(duì)嘉樂(lè)的原創(chuàng)內(nèi)容提供支持。 歡迎大家來(lái)到第三章,經(jīng)過(guò) 前章《【Filecoin源碼倉(cāng)庫(kù)全解析】第二章:如何創(chuàng)建賬戶錢包并獲取FIL Mock代幣的內(nèi)容閱讀后,我們應(yīng)該能順利在Filec...
閱讀 1276·2021-11-24 09:39
閱讀 1533·2021-09-07 09:59
閱讀 3490·2019-08-30 15:54
閱讀 2486·2019-08-30 11:00
閱讀 2678·2019-08-29 15:06
閱讀 2169·2019-08-26 13:52
閱讀 438·2019-08-26 13:24
閱讀 2505·2019-08-26 12:20