將 esplora 配置為指向 bitcoind 伺服器的 ip 地址
我有 2 台伺服器正在執行:
- Ubuntu 18.04 執行 bitcoind 守護程序(v0.18.1 完全區塊鏈同步)
- 執行 esplora 的 Ubuntu 18.04(本地單頁網站工作,但沒有來自本地區塊鏈的數據)
兩台伺服器都在同一個網路上。
如何將 esplora 配置為指向 bitcoind 伺服器的 IP 地址?我想使用我自己的完整區塊鏈並使用 esplora(又名個人區塊鏈瀏覽器)進行探索。
bitcoind 伺服器已經配置好並且可以工作了。所以剩下的唯一部分(我認為)是將 esplora 配置為指向 bitcoind 伺服器。我找不到任何關於如何做到這一點的明確說明。
esplora 只是 web ui 前端,您還需要設置(分叉的)電子後端用於索引和提供 esplora 查詢的 HTTP API 。
電工可以使用兩種方法索引比特幣區塊鏈:
blk
直接從磁碟讀取文件,或者使用 bitcoind rpc 查詢區塊。第一種方法要快得多,但需要電子使用者擁有對比特幣數據目錄的文件系統訪問權限,這通常意味著在同一台伺服器上執行它們(從技術上講,您可以遠端執行此操作,但您將失去大部分性能提升,所以不多這樣做的目的)。如果您有兩個單獨的伺服器,則第二種方法可以工作,但我不推薦它(會非常緩慢)。要設置電子,安裝 Rust並:
$ sudo apt install clang cmake # required for building rust-rocksdb $ git clone https://github.com/blockstream/electrs && cd electrs $ git checkout new-index $ cargo run --release --bin electrs -- -vvv --daemon-dir ~/.bitcoin
如果比特幣數據目錄不在
~/.bitcoin
,請更改--daemon-dir
為指向它。它應該自動從 cookie 文件中獲取 rpc 憑據。如果要從遠端 bitcoind 節點索引,請設置--jsonrpc-import --daemon-rpc-addr <addr:port> --cookie <user:pass>
.預設情況下,electrs 會將其 HTTP API 伺服器綁定在
127.0.0.1:3000
. 要啟用遠端訪問,建議在電者前面設置一個帶 tls 的反向代理(如 nginx)。您也可以設置--http-addr <host:ip>
讓電子直接接受遠端連接,但您可能不應該這樣做。初始索引過程將花費相當長的時間和磁碟空間(在索引期間最高可達 1TB,然後在壓縮後縮小到約 450GB)。要測試它是否有效,您可以嘗試向電子 HTTP API 發出請求:
$ curl http://localhost:3000/blocks/tip/height $ curl http://localhost:3000/address/1EMBaSSyxMQPV2fmUsdB7mMfMoocgfiMNw
然後,要啟動 esplora 並將其指向您的電子伺服器,安裝 nodejs並:
$ git clone https://github.com/Blockstream/esplora && cd esplora $ npm install # needs to be set to the URL where the electrs HTTP API is available for # requests coming from the user's browser. if you're browsing from the same # machine running electrs, this should work: $ export API_URL=http://localhost:3000/ # start a dev server on port 5000 (on-the-fly babel/browserify transpilation, slow, cpu hog) $ npm run dev-server # or pre-build the web ui as a static directory with: $ npm run dist
然後,您將在 http://localhost:5000/ 上獲得 esplora web ui。與電工一樣,建議設置一個啟用 tls 的前端 http 伺服器以進行遠端訪問,或者反向代理開發伺服器,或者(更理想地)直接提供預建構的靜態文件。
您需要做的最後一件事是配置電工以接受來自 esplora web ui 的跨域請求。為此,添加
--cors <origin>
到cargo run
命令的末尾。如果您在本地訪問 esplora,--cors http://localhost:5000
應該可以。否則,將其設置為提供 esplora web ui 的來源。或者,--cors '*'
如果您可以允許來自所有來源的 cors 請求,就使用它。或者,您也可以使用esplora docker 映像,它可以更輕鬆地設置所有內容(bitcoind+electrs+esplora),但這不能很好地與現有的 bitcoind 節點配合使用。