使用IPFS和IPNS更新文件夹而不改变哈希

IPFS

开启本地节点

1
ipfs daemon

进入localhost:5001

公钥生成

ipfs key gen -t rsa -s 2048 test_key

1
k2k4r8mk2m9yeoc9rkrtv8mtkgz2f64xegx1juhu64gymr4rpupz5s4w

查看ipfs管理的所有密钥对

ipfs key list

1
2
self #ipfs节点使用的
test_key #本次生成的

添加文件夹到IPFS

ipfs add -r .\ID\ -w

1
2
3
4
5
6
17.38 KiB / 52.13 KiB [============================>---------------------------------------------------------]  33.33%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id1.json
34.75 KiB / 52.13 KiB [=========================================================>----------------------------] 66.67%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id2.json
52.13 KiB / 52.13 KiB [======================================================================================] 100.00%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id3.json
52.13 KiB / 52.13 KiB [======================================================================================] 100.00%added QmPdjDJnVWZ66bgEmNgomFFGTjK4f92RqLTz3X49PYkY4P ID
52.13 KiB / 52.13 KiB [======================================================================================] 100.00%added QmTyB4zdsgtqiEbSjzzBk6dTbgjfpLQAy43CWfDa6HZsmE
52.13 KiB / 52.13 KiB [======================================================================================] 100.00%

IPNS

IPNS类似于域名系统,由IPFS节点自己维护。IPNS是一个PKI名称空间, IPNS名称公钥哈希私钥则用来发布签名的名称。 当发布解析名称时,默认情况下总是使用发布者自身的节点ID,也就是节点公钥的哈希,但是可以更改。

使用自己的节点ID发布文件夹

ipfs name publish /ipfs/QmTyB4zdsgtqiEbSjzzBk6dTbgjfpLQAy43CWfDa6HZsmE

1
Published to k51qzi5uqu5dm4jjl8g22b9n5xw8rzyuogczvn2r3iq12ismy325lhrw3rfpkw: /ipfs/QmTyB4zdsgtqiEbSjzzBk6dTbgjfpLQAy43CWfDa6HZsmE

再次添加一个文件并发布文件夹

ipfs add -r .\ID\ -w

1
2
3
4
5
6
7
17.38 KiB / ? [-------------------------------------------------------=---------------------------------------------] added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id1.json
34.75 KiB / 69.51 KiB [==========================================>-------------------------------------------] 50.00%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id2.json
52.13 KiB / 69.51 KiB [================================================================>---------------------] 75.00%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id3.json
69.51 KiB / 69.51 KiB [======================================================================================] 100.00%added QmPPccUJ3LYgpQR1KbgJusgTDSjGoF4Gc1Krys6hotEhzo ID/id4.json
69.51 KiB / 69.51 KiB [======================================================================================] 100.00%added QmbenETDgNe9Z6MHCiLA3efa2zzsia1JycDnUPPEXW4H91 ID
69.51 KiB / 69.51 KiB [======================================================================================] 100.00%added QmNRswcWMcHeUj9MureWc9mK36wsWHkubKikKkdRuQzV8u
69.51 KiB / 69.51 KiB [======================================================================================] 100.00%

ipfs name publish /ipfs/QmNRswcWMcHeUj9MureWc9mK36wsWHkubKikKkdRuQzV8u

1
Published to k51qzi5uqu5dm4jjl8g22b9n5xw8rzyuogczvn2r3iq12ismy325lhrw3rfpkw: /ipfs/QmNRswcWMcHeUj9MureWc9mK36wsWHkubKikKkdRuQzV8u

查看更新结果

http://localhost:5001/ipfs/bafybeihcyruaeza7uyjd6ugicbcrqumejf6uf353e5etdkhotqffwtguva/#/ipns/k51qzi5uqu5dm4jjl8g22b9n5xw8rzyuogczvn2r3iq12ismy325lhrw3rfpkw/ID