Blockstream/esplora
サイト
2025/07/16: commit_id=52de3ccf39c56ff839e26829ccd6d18f169832f7
用途
Blockstream/electrsを使ったブロックエクスプローラー。
インストール
$ git clone https://github.com/Blockstream/esplora && cd esplora
$ npm install
Dockerコンテナ版もあるが、Bitcoin regtestで試したところBitcoinノードとElectrsも一緒に起動した。 私の用途に合わなかったのでそれ以上試していない。
実行
Elctrs の REST API が http://localhost:3002/ で動いている場合はこうなる。
環境変数の終わりは / を付けること。
この設定だとSTATIC_ROOTとAPI_URLが同じlocalhostではあるもののポート番号が異なるためOriginが別と判断される。
ここではSTATIC_ROOTからAPI_URLを呼び出す経路に影響がある。
関連する設定で、esplora には環境変数CORS_ALLOWが、electrs には --corsがある。
どちらに対して設定するかというと、「アクセスを許可する」なのでAPIを提供するelectrsに--cors="http://localhost:5000"などとして相手を許すようにしておく。
HOST=http://localhost
export CORS_ALLOW="*"
# Don't forget last "/"
$ export STATIC_ROOT=$HOST:5000/
$ export API_URL=$HOST:3002/
$ npm run dev-server
STATIC_ROOTがブラウザでアクセスするURLである。
別PC だった場合はこれに IPアドレスなどを設定するとよさそうなのだが、”Unexpected token” で500エラーになる。
おそらくこのissueと同じだろうが、まだOPENのままだった。
Electrs を立ち上げたPC が headless の Raspberry Pi3 だったのでブラウザが使えないから外部からアクセスできるようにしようとしているのであった。
それをあきらめ、Electrs にアクセスするAPI_URLを別PC で動かしている URL にして Esplora 自体はブラウザが使用できる PCで立ち上げようと考えた。
が、これはこれで CORS がうんぬんということでエラーになった。
開発サーバの設定にCORS_ALLOWがあるのでURLだったり”*“だったりを書いてみたのだが、どうにも解決しなかった。
その他
regtestでvoutをSpentしたトランザクションにジャンプしたかったのでちょっと改造した(Gemini Code Assist)。