惑星間ファイルシステム-ネットワークへのコピーが不要

IPFSには誰もが良いアイデアを持っていますが、欠点は1つしかありませんでした。 ネットワークにアップロードされたデータはブロックストレージにコピーされ、占有スペースが2倍になりました。 さらに、ファイルは再利用に適していないブロックにカットされました。


この欠点を解消する実験的なオプション--nocopy 。 それを使用するには、いくつかの条件を満たす必要があります。


新しいタイプの識別子も登場しました。 また、分析します。


思い出させてください:InterPlanetary File Systemは、新しい分散ファイル共有ネットワーク(HTTPサーバー、 コンテンツ配信ネットワーク )です。 それについての話は、記事「IPFS Interplanetary File System」で始めました。

画像


--nocopy


このオプションは、IPFSがソースファイルをブロックソースとして使用することを強制します。 したがって、ファイルはブロックストレージにコピーされず、2倍のスペースを占有しません。


このオプションを使用するには、次の手順を実行します。


  1. ファイルストアを有効にする必要があります


     ipfs config --json Experimental.FilestoreEnabled true 

  2. 「.ipfs」ディレクトリが置かれているディレクトリ(通常はユーザーディレクトリにあります)に、ネットワークにアップロードする必要があるディレクトリまたはファイルへのリンクを作成する必要があります。


    ファイルはハードリンクでリンクできます:


     fsutil hardlink "[  .ipfs]\[ ]" "[  ]\[ ]" 

    または


     mklink /h "[  .ipfs]\[ ]" "[  ]\[ ]" 

    ディレクトリはシンボリックリンクでリンクできます。


     linkd "[  .ipfs]\[ ]" "[  ]\[ ]" 

    または


     mklink /j "[  .ipfs]\[ ]" "[  ]\[ ]" 

  3. そして今追加します


     ipfs add -r -w --nocopy "[  .ipfs]\[   ]" 

    -wは、ターゲットをディレクトリにラップし、その名前を保持します。


    結果は、識別子CIDv1およびCIDv0(マルチキャッシュ)になります



ウェブシード


これで、 マグネットまたはトレントに WebSeedを追加できます。


ファイルの場合:


 http://127.0.0.1:8080/ipfs/[]/[ ] http://gateway.ipfs.io/ipfs/[]/[ ] 

カタログの場合:


 http://127.0.0.1:8080/ipfs/[]/ http://gateway.ipfs.io/ipfs/[]/ 

Webシードマグネットの例


 magnet:?xt=urn:btih:953edbe75de612bc966194d2ee60099b3bc1a1aa&dn=Magnet-.txt&ws=http://gateway.ipfs.io/ipfs/QmfQCxNW9r2974xR5dXopXfQqsEvgexhza6aQgqTGL7Yh3/Magnet-.txt 

コンテンツ識別子(CID)


これらのIPFSの変更により、RAWブロックが登場しました。 --nocopyは、RAWブロックの使用を自動的に有効にします。 ただし、-- --raw-leavesこのモードを有効にすることができ--raw-leaves 。 これに関して、新しいCID(コンテンツID)またはロシア語の「コンテンツID」が登場しました。


古いID


CIDv0と呼ばれ、通常は定数プレフィックス「Qm」が付いています。


CIDv0はBase58の単なるマルチハッシュです


 [varint ID ][varint  ][] 

CIDv0の例: QmPbs8syAxac39bcNuMLpHXnqjKUguqakCM8LN8sZVPD9R


新しいID


RAWブロックには独自のCIDがあります。 定数接頭辞「zb2rh」で区別できます。


CIDv1には詳細情報が含まれています。


 [ ][varint  CID][varint  ][varint ID ][varint  ][] 

CIDv1の例: zb2rhe143L6sgu2Nba4TZgFMdPidGMA6hmWhK9wLUoVGWYsR7


分解しましょう


  1. z - base58ビットコイン [ ベースプレフィックス ]


    base58: b2rhe143L6sgu2Nba4TZgFMdPidGMA6hmWhK9wLUoVGWYsR7
    に翻訳する
    HEX: 01 55 12 20 6D542257CBD1BE7FD0AE8914F42066BCBF1E79487EF67B959A86DBEE4670B386


  2. 01 -v1 [ CIDの varintバージョン]


  3. 55生のバイナリ[varint コンテンツタイプ ]


  4. 12 - sha2-256 [varint hash ID ]


  5. 20-32バイト[varint hash length]


  6. 6D542257CBD1BE7FD0AE8914F42066BCBF1E79487EF67B959A86DBEE4670B386 -sha2-256ダイジェスト[ハッシュ]



おわりに


--nocopyオプション--nocopy 、Wikipedia dumpなど世界と共有したい場合に--nocopy 。 または、その他の有用だが非常に大量の情報。


参照資料


Windowsのリンク、シンボリックでなく、
ipfsコマンドリファレンス
実験的なIPFS機能のリスト


その他の部品


  1. IPFS惑星間ファイルシステム
  2. IPFS惑星間ファイルシステムでサイトを公開します
  3. Windows用のIPFS惑星間ファイルシステムでサイトをホストします
  4. これ以上ネットワークにコピーする必要はありません
  5. サイトをローカルホスト(ローカルIPFSゲートウェイ)に切り替えます
  6. IPFSでグローバルゲートウェイまたはサイトをローカライズします


Source: https://habr.com/ru/post/J331010/


All Articles