-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathipns_解析
73 lines (56 loc) · 3.08 KB
/
ipns_解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
当我们传文件到一个 ipfs 私有链中, 每次hash值是不同的, 为了保证每次其他程序调用url的一致性
使用ipns来完成 hash 相互 对应关系, 用一个hash来对应文件变化
例如:
先生成 ipns 需要绑定的 hash 值
# ipfs key gen --type=rsa --size=2048 appurl
QmXdnSCnvpvpJEvMCdU2ffjdtv53J5HmggQnE7S2BbuRQi
列出所有已经创建的key列表
# ipfs key list
app
添加文件或文件目录内容到ipfs私有网络
# ipfs add -r ./testdir
added QmVXoaLPccW3B4fb8dkedzqvNjLrn8ZhKnDknkjAbjYCbH testdir/block.bin
added QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR testdir/v1.txt
added Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2 testdir
把新添加的文件或目录的 hash 值绑定到 ipns 的 hash 上
# ipfs name publish --key=app /ipfs/Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2
或者
# ipfs name publish --key=QmXdnSCnvpvpJEvMCdU2ffjdtv53J5HmggQnE7S2BbuRQi /ipfs/Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2
对 ipns 的访问 http://10.10.20.222:8080/ipns/QmRB5ZpwF5HrCF5XYXorg5M1cidKvmnFhcJW6Z9paVmv2u #注意这里访问的是 ipns
block.bin
v1.txt
当有程序更新时,再次添加新的内容到ipfs私有网络
# ipfs add -r ./testdir
added QmVXoaLPccW3B4fb8dkedzqvNjLrn8ZhKnDknkjAbjYCbH testdir/block.bin
added QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR testdir/v1.txt
added QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR testdir/v2.txt #添加了一个新文件
added QmbbZUUcYrchQH1VTbQAWoQqeZ61555LqjfAJXarzZgJRe testdir
再次把新添加的文件或目录的 hash 值绑定到 ipns 的原有 hash 上
# ipfs name publish --key=app /ipfs/QmbbZUUcYrchQH1VTbQAWoQqeZ61555LqjfAJXarzZgJRe
或者
# ipfs name publish --key=QmXdnSCnvpvpJEvMCdU2ffjdtv53J5HmggQnE7S2BbuRQi /ipfs/QmbbZUUcYrchQH1VTbQAWoQqeZ61555LqjfAJXarzZgJRe
再次访问 http://10.10.20.222:8080/ipns/QmXdnSCnvpvpJEvMCdU2ffjdtv53J5HmggQnE7S2BbuRQi #注意这里访问的是 ipns
block.bin
v1.txt
v2.txt
内容产生了变化
这样使用ipns技术保持了其他程序访问ipfs网络文件的一致性
反向解析一个 ipns
# ipfs name resolve /ipns/QmRB5ZpwF5HrCF5XYXorg5M1cidKvmnFhcJW6Z9paVmv2u
/ipfs/Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2 获得对象 hash
# ipfs ls /ipfs/Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2 获得对象内容
QmbT9pR8pyppjjuZrMvbDGgxBA48FWRa1i2RVJ1GgvH9jd 456 testdir/
QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR 76 v1.txt
QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR 76 v2.txt
QmZnGK3W5YD6MmF4U4Rq2eZSMDMnWGpVnDXtLjPSBDckFR 76 v3.txt
将 ipfs 文件系统mount到linux上
# ipfs name publish --key=self /ipfs/Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2
# ipfs mount
或者
# ipfs mount --ipns-path=/tmp/ipns-test
IPFS mounted at: /ipfs
IPNS mounted at: /tmp/ipns-te
#进入 /tmp/ipns-test 可看到其内容
如果修改 /tmp/ipns-test 内容ipfs 会产生新的版本
# ipfs name resolve ${ipfs id}
/ipfs/QmVFBZ9Ap8RX8gn92LZHVvv3mGTBNoY9zsW4JwTMZUxZ31 这里已经和原来挂载的Qmazfniey1migA3F7DeyE4f5EmZzwPsZUg9vPuUanLfkM2不同