RGB 錢包指南
RGB 相容錢包使用指南
RGB 錢包使用指南:從安裝到發送資產
本文提供 RGB 協議錢包的完整使用教學,涵蓋錢包選擇、安裝配置、資產收發流程以及常見問題排除。
錢包選擇與環境準備
支援 RGB 的錢包
| 錢包名稱 | 平台 | 特點 | 適合用戶 |
|---|---|---|---|
| Iris Wallet | Android/iOS | 完整 RGB 支援、客戶端驗證 | 進階用戶 |
| Xverse | Web/Extension | 比特幣 + RGB、Stacks 整合 | 偏好瀏覽器擴展 |
| BitMask | Web | 無需安裝、瀏覽器直接使用 | 初學者 |
| BlueWallet | iOS/Android | 簡單易用、 Lightning 整合 | 入門用戶 |
安裝前準備
在安裝 RGB 錢包前,需要準備以下環境:
- 比特幣節點或 RPC
- 自營比特幣節點(推薦)
- 公共 Electrum 伺服器
- Bitcoin Core RPC
- 存儲空間
- 完整節點:500GB+
- 修剪節點:10GB
- 僅監控:1GB
- 網路要求
- 穩定網路連接
- 可選:Tor 節點(隱私增強)
安裝與初始化
Iris Wallet 安裝流程
步驟 1:下載應用
┌─────────────────────────────────────────┐
│ Google Play / F-Droid │
│ 搜尋 "Iris Wallet" │
│ 下載並安裝 │
└─────────────────────────────────────────┘
│
▼
步驟 2:創建錢包
┌─────────────────────────────────────────┐
│ Iris Wallet │
│ ┌─────────────────────────────────┐ │
│ │ 創建新錢包 / 導入已有 │ │
│ └─────────────────────────────────┘ │
│ │
│ 選擇「創建新錢包」 │
│ 選擇錢包類型: │
│ • Single Sig(單簽) │
│ • Multi Sig(多簽) │
└─────────────────────────────────────────┘
│
▼
步驟 3:備份助記詞
┌─────────────────────────────────────────┐
│ ⚠️ 重要:助記詞備份 ⚠️ │
│ │
│ 12/24 個單詞,必須: │
│ • 手寫在紙上(至少2份) │
│ • 存放在安全位置 │
│ • 切勿截圖或存數位檔 │
│ • 遠離網路設備 │
└─────────────────────────────────────────┘
│
▼
步驟 4:連接比特幣節點
┌─────────────────────────────────────────┐
│ 節點配置 │
│ ┌─────────────────────────────────┐ │
│ │ 使用自己的節點: │ │
│ │ • Electrum RPC │ │
│ │ • Bitcoin Core │ │
│ │ │ │
│ │ 或使用公共節點: │ │
│ │ • electrum.blockstream.info │ │
│ │ • electrumx.luisfernando.ml │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
錢包配置選項
# Iris Wallet 高級配置示例
class WalletConfig:
"""錢包配置選項"""
# 網路連接
NETWORK = {
"type": "bitcoin", # bitcoin / testnet
"network": "mainnet", # mainnet / signet
"electrum_server": "ssl://electrum.blockstream.info:50002",
"proxy": "socks5://127.0.0.1:9050" # 可選:Tor
}
# 隱私設置
PRIVACY = {
"client_side_filtering": True, # 客戶端過濾
"tor_for_all": False, # 所有流量走 Tor
"utxo_exposure": "relevant" # relevant / all / minimal
}
# 驗證設置
VERIFICATION = {
"spv_enabled": True, # SPV 驗證
"confirmations_needed": 1, # 確認數
"full_utxo_scan": False # 完整 UTXO 掃描
}
接收 RGB 資產
接收流程詳解
接收 RGB 資產流程:
1. 獲取比特幣地址
┌─────────────────────────────────────────┐
│ 錢包 → 接收 → 選擇比特幣地址 │
│ │
│ 接收地址格式示例: │
│ bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh │
└─────────────────────────────────────────┘
│
▼
2. 獲取 RGB 專屬地址(可選)
┌─────────────────────────────────────────┐
│ 某些錢包提供 RGB 專屬格式: │
│ • RGB20 地址(代幣) │
│ • RGB21 地址(NFT) │
│ │
│ 格式:bc1r...$rgb20/xxxxx │
└─────────────────────────────────────────┘
│
▼
3. 等待比特幣確認
┌─────────────────────────────────────────┐
│ 比特幣區塊確認後,RGB 資產會自動 │
│ 顯示在錢包中 │
│ │
│ 確認時間參考: │
│ • 1 確認:~10 分鐘 │
│ • 6 確認:~60 分鐘(推薦) │
└─────────────────────────────────────────┘
接收測試
# 使用命令行檢查 RGB 余額
# 通過 RGB Lib
from rgb_lib import RGBWallet, BitcoinNetwork
# 初始化錢包
wallet = RGBWallet.from_mnemonic(
mnemonic="your twelve word mnemonic...",
network=BitcoinNetwork.MAINNET
)
# 獲取比特幣地址
btc_address = wallet.bitcoin_address()
print(f"比特幣地址: {btc_address}")
# 檢查 RGB 余額
rgb_balances = wallet.rgb20_balances()
for contract_id, balance in rgb_balances.items():
print(f"資產合約: {contract_id}")
print(f"余額: {balance}")
發送 RGB 資產
發送流程
發送 RGB 資產步驟:
1. 輸入接收者資訊
┌─────────────────────────────────────────┐
│ 發送 RGB 資產 │
│ │
│ 接收地址:________________ │
│ 資產數量:________________ │
│ │
│ ⚠️ 請仔細核對地址, │
│ 錯誤的地址將導致資產永久丟失 │
└─────────────────────────────────────────┘
│
▼
2. 選擇比特幣 UTXO
┌─────────────────────────────────────────┐
│ RGB 資產綁定在比特幣 UTXO 上 │
│ 發送時需要選擇正確的 UTXO │
│ │
│ 錢包會自動選擇可用 UTXO │
│ 或可手動指定 │
└─────────────────────────────────────────┘
│
▼
3. 設置網路費用
┌─────────────────────────────────────────┐
│ 費用類型: │
│ • 經濟(慢) │
│ • 標準 │
│ • 快速 │
│ │
│ 費用計算: │
│ • 手續費率:sat/vB │
│ • 需要足夠的 BTC 支付礦工費 │
└─────────────────────────────────────────┘
│
▼
4. 確認並廣播
┌─────────────────────────────────────────┐
│ 交易詳情: │
│ • 發送數量:100 RGB │
│ • 接收地址:bc1q... │
│ • 網路費用:50 sat │
│ │
│ 確認發送後,交易被廣播到比特幣網路 │
└─────────────────────────────────────────┘
發送程式碼示例
from rgb_lib import RGBWallet, BitcoinNetwork, transfer
# 加載錢包
wallet = RGBWallet.from_mnemonic(
mnemonic="your mnemonic words...",
network=BitcoinNetwork.MAINNET
)
# 準備轉帳參數
transfer_params = {
"contract_id": "rgb1...", # 資產合約 ID
"amount": 100, # 發送數量
"recipient": "bc1q...", # 接收者比特幣地址
"utxo": "outpoint", # 要花費的 UTXO
}
# 創建轉帳交易
# 注意:此操作需要錢包有足夠的比特幣餘額支付礦工費
try:
tx = wallet.transfer(
contract_id=transfer_params["contract_id"],
amount=transfer_params["amount"],
recipient=transfer_params["recipient"],
UTXO=transfer_params["utxo"]
)
# 廣播交易
txid = wallet.broadcast(tx)
print(f"交易已廣播: {txid}")
except InsufficientFunds as e:
print(f"比特幣餘額不足: {e}")
except InvalidUTXO as e:
print(f"UTXO 無效: {e}")
發RGB資產
資產發行流程
RGB 資產發行步驟:
1. 選擇資產類型
┌─────────────────────────────────────────┐
│ RGB20:同質化代幣 │
│ • 可分割 │
│ • 可互換 │
│ • 適合穩定幣、治理代幣 │
│ │
│ RGB21:非同質化代幣 │
│ • 不可分割 │
│ • 唯一識別 │
│ • 適合藝術品、收藏品 │
└─────────────────────────────────────────┘
│
▼
2. 填寫資產資訊
┌─────────────────────────────────────────┐
│ 資產詳情: │
│ │
│ 名稱:Bitcoin Plus (BTC+) │
│ 符號:BTC+ │
│ 總供應量:21000000 │
│ 小數位數:8 │
│ 描述:比特幣收益代幣 │
└─────────────────────────────────────────┘
│
▼
3. 發送鑄造交易
┌─────────────────────────────────────────┐
│ 發送一筆比特幣交易: │
│ • 輸入:你的比特幣 UTXO │
│ • 輸出:OP_RETURN (RGB Genesis Data) │
│ │
│ 這筆交易確認後,資產即被鑄造完成 │
└─────────────────────────────────────────┘
│
▼
4. 驗證與分發
┌─────────────────────────────────────────┐
│ 發行完成後: │
│ • 資產自動顯示在錢包 │
│ • 可發送給其他用戶 │
│ • 余額實時更新 │
│ │
│ ⚠️ 請備份 Genesis Transaction ID │
│ 這是資產的唯一識別標識 │
└─────────────────────────────────────────┘
發行程式碼示例
from rgb_lib import RGBWallet, RGB20, BitcoinNetwork
# 初始化發行錢包
issuer_wallet = RGBWallet.from_mnemonic(
mnemonic="issuer mnemonic...",
network=BitcoinNetwork.MAINNET
)
# 定義 RGB20 資產
asset = RGB20(
name="Bitcoin Stable",
ticker="BTCS",
description="比特幣支持的穩定幣",
precision=8,
amount=1_000_000_000_0000, # 總供應量 (考慮小數位)
addresses=[issuer_wallet.bitcoin_address()], # 初始持有者
)
# 創建 Genesis 交易
# 這需要一筆比特幣交易來承載資產元數據
genesis_utxo = "your_btc_utxo_outpoint"
try:
# 鑄造資產
contract_id = issuer_wallet.mint_rgb20(
asset_data=asset,
genesis_utxo=genesis_utxo
)
print(f"資產已發行!")
print(f"合約 ID: {contract_id}")
print(f"請備份此 ID,這是資產的唯一標識")
except Exception as e:
print(f"發行失敗: {e}")
客戶端驗證
驗證流程
RGB 客戶端驗證機制:
┌─────────────────────────────────────────────────────────────┐
│ 比特幣區塊鏈 │
│ (僅作為數據可用性) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 交易廣播 │
│ │ │
│ ▼ │
│ ┌─────────────┐ 挑戰者可以質詢任何交易 │
│ │ 比特幣區塊 │◄──────────────────┐ │
│ └─────────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────────┐ │ │
│ │ OP_RETURN │ │ │
│ │ (承諾/證明數據) │ │ │
│ └─────────────────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────────┐ │ │
│ │ 客戶端驗證 │ │ │
│ │ (錢包本地執行) │◄───────────┘ │
│ └─────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 驗證結果 │ │
│ │ • 餘額正確 │ │
│ │ • 轉移有效 │ │
│ │ • 歷史可追溯 │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
驗證檢查清單
class RGBClientValidator:
"""RGB 客戶端驗證器"""
def __init__(self, wallet):
self.wallet = wallet
def validate_incoming_transfer(self, transfer_proof):
"""
驗證收到的轉帳
檢查項目:
1. 轉帳金額正確
2. 發送者確實擁有這些資產
3. 沒有雙花
4. 證明鏈完整
"""
checks = []
# 1. 驗證 UTXO 綁定
utxo_bound = self.verify_utxo_binding(
transfer_proof.utxo,
transfer_proof.amount
)
checks.append(("UTXO 綁定", utxo_bound))
# 2. 驗證資產所有權
ownership = self.verify_ownership(
transfer_proof.sender,
transfer_proof.amount
)
checks.append(("所有權", ownership))
# 3. 驗證歷史沒有雙花
no_double_spend = self.verify_no_double_spend(
transfer_proof.history
)
checks.append(("無雙花", no_double_spend))
# 4. 驗證證明完整性
proof_complete = self.verify_proof_integrity(transfer_proof)
checks.append(("證明完整", proof_complete))
# 總結
all_passed = all(result for _, result in checks)
return {
"valid": all_passed,
"checks": checks,
"message": "所有驗證通過" if all_passed else "驗證失敗"
}
def verify_utxo_binding(self, utxo, amount):
"""驗證 UTXO 綁定"""
# 檢查比特幣區塊鏈上是否存在該 UTXO
# 檢查 UTXO 是否未被花費
pass
def verify_ownership(self, sender, amount):
"""驗證所有權"""
# 檢查發送方歷史餘額
# 確認轉移金額 <= 歷史餘額
pass
def verify_no_double_spend(self, history):
"""驗證無雙花"""
# 檢查每筆轉移都花費了不同的 UTXO
pass
def verify_proof_integrity(self, proof):
"""驗證證明完整性"""
# 檢查密碼學簽名
# 檢查 Merkle 證明
pass
常見問題排除
問題診斷流程
RGB 錢包問題診斷:
┌─────────────────────────────────────────┐
│ 問題類型 │
│ │
│ [連接問題] [餘額問題] [交易問題] │
└──────────┬──────────┬──────────┬────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 檢查網路 │ │ 檢查節點 │ │ 檢查UTXO │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 重新同步 │ │ 更換節點 │ │ 檢查餘額 │
└──────────┘ └──────────┘ └──────────┘
常見錯誤與解決
| 錯誤代碼 | 描述 | 解決方案 |
|---|---|---|
| ERRNOUTXO | 沒有可用的 UTXO | 充值比特幣到錢包 |
| ERRINSUFFICIENTBTC | BTC 餘額不足 | 增加比特幣餘額支付礦工費 |
| ERRINVALIDPROOF | 證明無效 | 聯繫發送方確認交易 |
| ERRCONTRACTNOT_FOUND | 合約不存在 | 檢查合約 ID 是否正確 |
| ERROUTPOINTSPENT | UTXO 已被花費 | 使用新的 UTXO |
| ERRNODEUNREACHABLE | 節點無法連接 | 更換節點或檢查網路 |
恢復錢包
# 從助記詞恢復錢包
from rgb_lib import RGBWallet, BitcoinNetwork
# 使用助記詞恢復
recovered_wallet = RGBWallet.from_mnemonic(
mnemonic="your twelve word mnemonic phrase...",
network=BitcoinNetwork.MAINNET
)
# 重新掃描區塊鏈以獲取余額
recovered_wallet.rescan_utxo()
# 檢查恢復的餘額
print(f"比特幣餘額: {recovered_wallet.btc_balance()}")
print(f"RGB20 餘額: {recovered_wallet.rgb20_balances()}")
print(f"RGB21 餘額: {recovered_wallet.rgb21_balances()}")
安全建議
最佳實踐
- 錢包安全
- 使用硬體錢包存放大額資產
- 啟用錢包加密
- 定期備份錢包資料
- 助記詞管理
- 手寫備份,切勿數位化存儲
- 存放在多個安全位置
- 測試備份恢復
- 交易安全
- 首次交易使用小額測試
- 仔細核對地址
- 設置交易密碼(若支援)
- 節點安全
- 使用自己的比特幣節點
- 啟用 SSL/TLS 連接
- 考慮使用 Tor
總結
RGB 錢包提供了強大的比特幣資產管理能力,但需要用戶理解客戶端驗證模型。使用本指南的步驟,你可以:
- 正確安裝和配置 RGB 錢包
- 安全地接收和發送 RGB 資產
- 發行自己的 RGB 資產
- 驗證交易的正確性
- 解決常見問題
記住:使用 RGB 時,你的資產安全最終取決於你自己的助記詞保護和驗證能力。
更新日期:2026-02-23
版本:1.0
相關文章
- 什麼是 RGB 協議? — 理解比特幣上的智慧合約與客戶端驗證。
- RGB 與其他協議比較 — RGB 與 Ordinals、Stacks 比較
- RGB 與 Ordinals 比較 — 深入比較 RGB 協議與 Ordinals 協議的設計差異。
- RGB 資產發行 — 使用 RGB 協議發行同質化與非同質化代幣。
- RGB 資產與智慧合約 — RGB 資產發行與智慧合約
延伸閱讀與來源
這篇文章對您有幫助嗎?
請告訴我們如何改進:
0 人覺得有帮助
評論
發表評論
注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。
目前尚無評論,成為第一個發表評論的人吧!