COLUMN

コラム

booster-httpを使ったファイル転送

2023.11.03

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では、プロジェクトの将来の方向性を決定するためのフィードバックや要望をお寄せください。皆様のご意見が、このサービスを素晴らしいものにするための一助となっています。皆様からのご意見をお待ちしております!

まずは資料請求

お忙しい経営者の方や資産運用の担当者の方に
資料送付や最適なプランのご提案を無料で行っております。

    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。