booster-httpの最新リリースにより、ファイルコインストレージプロバイダーはHTTPプロトコルでブロックとファイルを提供できるようになりました。
つまり、SPはロードバランサーやリバースプロキシといったHTTPトラフィックを管理するツールのエコシステムを活用でき、クライアントはブラウザから直接アップロードされたファイルを要求することができるのです。
これらの新機能は、booster-httpの既存の機能である、ピースまたはピース上の範囲を提供する機能を拡張するものです。以下のステップバイステップのチュートリアルを使って、実際に試してみてください。
サービング・ヴィンセント
Storage ProviderからVincent Van Goghのwikipediaページを提供することを想像してみよう。まず、wikipediaにアクセスして、HTMLファイルとアセットをデスクトップのvincentというフォルダに保存しましょう。
取引する
アップロード用のファイルを準備するために、フォルダをCARファイルに変換する必要があります。go-carライブラリのcar実行ファイルを利用することができます:
$ go install github.com/ipld/go-car/cmd/car@latest
$ car c –version=1 –file=vincent.car ~/Desktop/vincent
$ car inspect vincent.car
Version: 1
Roots: bafybeidqindpi4ucx7kmrtnw3woc6jtl7bqvyiokrkpbbuy6gs6trn57tm
Root blocks present in data: Yes
Block count: 110
…
boostと契約するために、ファイルのcompを取得する必要があります。stream-commpユーティリティを使用することができます:
$ go install github.com/filecoin-project/go-fil-commp-hashhash/cmd/stream-commp@latest
$ stream-commp < vincent.car
CommPCid: baga6ea4seaqjaxked6ovoj5f3bdisfeuwtjhrzh3s34mg5cyzevgoebe7tdckdi
Payload: 1101978 bytes
Unpadded piece: 2084101 bytes
Padded piece: 2097152 bytes
CARv1 detected in stream:
Blocks: 110
Roots: 1
1: bafybeidqindpi4ucx7kmrtnw3woc6jtl7bqvyiokrkpbbuy6gs6trn57tm
Boostは、Webサーバーからファイルをダウンロードする必要があります。簡単なnodejsのWebサーバーをインストールしましょう:
$ npm install -g serve
$ serve
┌─────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ – Local: http://localhost:3000 │
│ – Network: http://192.168.1.2:3000 │
│ │
│ Copied local address to clipboard! │
│ │
└─────────────────────────────────────────┘
さあ、ブーストと契約しよう:
$ boost deal –verified=false \
–provider=f012345 \
–http-url=https://localhost:3000/vincent.car \
–commp=baga6ea4seaqjaxked6ovoj5f3bdisfeuwtjhrzh3s34mg5cyzevgoebe7tdckdi \
–car-size=1101978 \
–piece-size=2097152 \
–payload-cid=bafybeidqindpi4ucx7kmrtnw3woc6jtl7bqvyiokrkpbbuy6gs6trn57tm
sent deal proposal
deal uuid: 346157ae-c1f4-4462-9b40-9bcd27754135
storage provider: f012345
client wallet: t3r3hr3xl27unpefvipve2f4hlfvdnq3forgr253z6dqahufvanatdandxm74zikheccvx74ys7by5vzafq2va
payload cid: bafybeidqindpi4ucx7kmrtnw3woc6jtl7bqvyiokrkpbbuy6gs6trn57tm
url: http://localhost:3000/vincent.car
commp: baga6ea4seaqjaxked6ovoj5f3bdisfeuwtjhrzh3s34mg5cyzevgoebe7tdckdi
start epoch: 135479
end epoch: 653879
provider collateral: 0
注:規模に応じたディールメーキングのためのデータを準備するために、データプレップツールを使用することをお勧めします。
ディールを公開する
Storage Providerでは、ディールをパブリッシュし、シーリングサブシステムに引き渡されるのを待ちます。
ディールの詳細ページで、ディールデータルートのCIDがCARファイルのペイロードCIDと一致していることを確認してください:
ディールを提供する
最初にbooster-httpを構築します:
$ make booster-http
boostd、lotus daemon、lotus-minerへの接続をセットアップします:
$ boostd auth api-info –perm=admin
$ lotus auth api-info –perm=admin
$ lotus-miner auth api-info –perm=admin
Run booster-http:
$ ./booster-http -vv run –api-boost=$BOOST_API_INFO –api-fullnode=$FULLNODE_API_INFO –api-storage=$MINER_API_INFO
2023-04-03T14:20:40.806+0200 INFO booster booster-http/run.go:324 Using boost API at ws://127.0.0.1:1288/rpc/v0
2023-04-03T14:20:40.807+0200 INFO booster lib/api.go:38 Using full node API at ws://127.0.0.1:1234/rpc/v1`
2023-04-03T14:20:40.808+0200 INFO booster lib/api.go:64 Using storage API at ws://127.0.0.1:2345/rpc/v0
2023-04-03T14:20:40.811+0200 INFO booster lib/api.go:106 Miner address: f01000
2023-04-03T14:20:40.868+0200 INFO booster booster-http/run.go:210 Starting booster-http node on port 7777 with base path ”
2023-04-03T14:20:40.869+0200 INFO booster booster-http/run.go:217 serving IPFS gateway at /ipfs/ (serving blocks, CARs)
2023-04-03T14:20:40.869+0200 INFO booster booster-http/run.go:219 serving raw pieces at /piece/
これで、ファイルの生データをHTTPで取得できるようになりました:
$ curl –output /tmp/museum.jpg “http://localhost:7777/ipfs/bafybeidqindpi4ucx7kmrtnw3woc6jtl7bqvyiokrkpbbuy6gs6trn57tm/vincent/Vincent%20van%20Gogh_files/Caf%C3%A9tafel_met_absint_-_s0186V1962_-_Van_Gogh_Museum.jpg**?format=raw**”
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11830 100 11830 0 0 140k 0 –:–:– –:–:– –:–:– 175k
$ open /tmp/museum.jpg
ウェブブラウザにファイルを提供する
上記のcurlリクエストでは、format=rawというクエリパラメータをURLに付加して、ファイルの生のブロックデータを取得しました。このファイルをウェブブラウザで直接開こうとすると、クエリパラメータを追加することなく、エラーメッセージが表示されます:
デフォルトでは、booster-http はウェブブラウザで読み込める形式のファイルを提供しません。これは、不正なコンテンツとしてフラグを立てられる可能性のあるコンテンツを提供することからストレージプロバイダを保護するためです。
ウェブブラウザへのファイル配信を有効にするには、起動時に booster-http に -serve-files=true を渡します。これで、Web ブラウザから直接ファイルを開くことができるようになりました:
また、CARアーカイブの全ファイルを閲覧することも可能です:
なお、booster-http(およびbooster-bitswap)は、https://badbits.dwebops.pub/denylist.json で管理されている denylist を使用して、既知のフラグ付きコンテンツを自動的にフィルタリングします。
まずは、Boostの最新リリース(v1.7.2)にアップデートして、新しいbooster-httpの機能を試してみてください。このブログ記事の例や、http検索に関するBoostのドキュメントを参考にすることができます。
Boostの最新情報は、Githubをフォローすることで確認できます。Boost Discussion Boardでは、プロジェクトの将来の方向性を決定するためのフィードバックや要望をお寄せください。皆様のご意見が、このサービスを素晴らしいものにするための一助となっています。皆様からのご意見をお待ちしております!
コメント