Bitcoin-Core

將 esplora 配置為指向 bitcoind 伺服器的 ip 地址

  • January 5, 2021

我有 2 台伺服器正在執行:

  1. Ubuntu 18.04 執行 bitcoind 守護程序(v0.18.1 完全區塊鏈同步)
  2. 執行 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 節點配合使用。

引用自:https://bitcoin.stackexchange.com/questions/91746