Skip to content

Latest commit

 

History

History
325 lines (212 loc) · 7.45 KB

File metadata and controls

325 lines (212 loc) · 7.45 KB

Electrum server in rust (Electrs)

Electrum server เป็นตัวช่วยชั้นดีในการเชื่อมต่อโหนดเข้ากับ Wallet ได้ไวกว่า RPC จากโหนดโดยตรง และ Wallet ที่ใช้ร่วมกับ Hardware Wallet ส่วนมากจะใช้ Electrum server ในการเชื่อมต่อโหนดของตัวเอง

หน้าที่หลักคือการนำ UTXO จากโหนดมาทำ index ใหม่เพื่อให้ Wallet ค้นหาเจอง่ายและไวกว่า RPC โดยตรง

ในคู่มือนี้จะติดตั้ง Electrum server ที่เขียนขึ้นด้วยภาษา Rust ที่ชื่อว่า Electrs

Requirements

[!NOTE]

วิธีติดตั้ง Electrs

สามารถอ่านเอกสารการติดตั้งอย่างเป็นทางการได้ที่ Github ของผู้พัฒนาโดยตรง

ตรวจสอบการอัปเดตของระบบก่อน

sudo apt update

ติดตั้ง Cargo & Rust เพื่อ build Electrs

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Note

เลือกข้อ 1 หรือกด Enter เลยก็ได้

ตั้งค่าให้ใช้งานได้

. "$HOME/.cargo/env"  

ตรวจสอบเวอร์ชั่น Cargo & Rust

rustc --version
cargo --version

Note

cargo & rustc v 1.90.0

จัดการ Firewall และเพิ่ม ZMQ ใน bitcoin.conf

เปิด Port สำหรับ Electrs :50001

sudo ufw allow 50001/tcp comment 'electrs tcp'
sudo ufw allow 50002/tcp comment 'electrs ssl'
sudo ufw reload

เพิ่ม ZMQ ในไฟล์ bitcoin.conf

nano ~/.bitcoin/bitcoin.conf

เพิ่ม ZMQ ตามนี้

zmqpubrawblock=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28333
zmqpubhashblock=tcp://0.0.0.0:28334
whitelist=127.0.0.1

Note

ZMQ เป็นฟังก์ชันที่ทำให้ Electrs สามารถดึงไฟล์ Raw block & tx จากโหนดได้

รีสตาร์ท bitcoind

sudo systemctl restart bitcoind

ตรวจสอบให้แน่ใจว่าทำงาน

sudo systemctl satatus bitcoind

ติดตั้ง Electrs

ติดตั้งเครื่องมือที่ต้องใช้เพื่อ Build

sudo apt install -y build-essential libclang-dev git

ดาวน์โหลดซอร์สโค้ดโดยตรงจาก GitHub แล้วเข้าไปที่โฟลเดอร์ electrs

git clone https://github.com/romanz/electrs && cd electrs

Build electrs ใช้เวลาประมาณ 20 นาที

cargo build --locked --release

ตรวจสอบเวอร์ชั่น electrs

./target/release/electrs --version

ตั้งค่า Electrs

สร้างไฟล์ electrs.toml

nano ~/electrs/electrs.toml

configuration

# connect bitcoind
network = "bitcoin"
cookie_file = "/home/username/.bitcoin/.cookie"
daemon_rpc_addr = "127.0.0.1:8332"
daemon_p2p_addr = "127.0.0.1:8333"

# electrs setting
electrum_rpc_addr = "0.0.0.0:50001"
db_dir = "/home/username/electrs/db"

log_filters = "INFO"

Note

อย่าลืมเปลี่ยน USERNAME ให้ตรงกับ user ของคุณ

ทดสอบ electrs

./target/release/electrs

Note

ถ้าไม่เจอ Error แสดงว่าใช้ได้ สามารถกด Ctrl+C เพื่อออกได้เลย

สร้าง Systemd service

การสร้าง Systemd Service เพื่อให้ระบบสามารถเรียกใช้ Electrs โดยอัตโนมัติในพื้นหลังได้หลังปิด-เปิดเครื่อง

สร้างไฟล์ electrs.service

sudo nano /etc/systemd/system/electrs.service

configuration

[Unit]
Description=Electrs
After=bitcoind.service

[Service]
WorkingDirectory=/home/username/electrs
ExecStart=/home/username/electrs/target/release/electrs
User=username
Group=username
Type=simple
KillMode=process
TimeoutSec=60
Restart=always
RestartSec=60

Environment="RUST_BACKTRACE=1"

# Hardening measures
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target

Note

อย่าลืมเปลี่ยน USERNAME ให้ตรงกับ user ของคุณ

เปิดใช้งาน electrs.service

sudo systemctl daemon-reload
sudo systemctl enable electrs.service
sudo systemctl start electrs.service

ตรวจสอบว่า electrs ทำงานไหม

sudo systemctl status electrs.service

ตัวอย่าง:

$ sudo systemctl status electrs
● electrs.service - electrs
     Loaded: loaded (/etc/systemd/system/electrs.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-10-15 07:26:12 +07; 11h ago
   Main PID: 979 (electrs)
      Tasks: 20 (limit: 9067)
     Memory: 246.8M (peak: 632.1M)
        CPU: 45.892s
     CGroup: /system.slice/electrs.service
             └─979 /home/satoshi/electrs/target/release/electrs

วิธีตรวจสอบ log

journalctl -fu electrs

ตั้งค่า Hiddenservice Tor

เพิ่ม Hiddenservice เพื่อให้เข้าถึง electrs ผ่าน Tor ได้

แก้ไข Tor configuration

sudo nano /etc/tor/torrc

เพิ่ม configuration

# Electrs
HiddenServiceDir /var/lib/tor/electrs
HiddenServiceVersion 3
HiddenServicePort 50001 127.0.0.1:50001
HiddenServiceEnableIntroDoSDefense 1

สร้าง Directory สำหรับ Hidden Service

sudo mkdir -p /var/lib/tor/electrs

เปลี่ยน Ownership และ Permissions ของ Directory

sudo chown -R debian-tor:debian-tor /var/lib/tor/electrs
sudo chmod 700 /var/lib/tor/electrs

restart tor

sudo systemctl restart tor

วิธีตรวจสอบ Tor address

sudo cat /var/lib/tor/electrs/hostname
$ sudo cat /var/lib/tor/electrs/hostname
<tor-address>.onion

Back to Linux/x86 README