RGB 錢包指南

RGB 相容錢包使用指南

RGB 錢包使用指南:從安裝到發送資產

本文提供 RGB 協議錢包的完整使用教學,涵蓋錢包選擇、安裝配置、資產收發流程以及常見問題排除。

錢包選擇與環境準備

支援 RGB 的錢包

錢包名稱平台特點適合用戶
Iris WalletAndroid/iOS完整 RGB 支援、客戶端驗證進階用戶
XverseWeb/Extension比特幣 + RGB、Stacks 整合偏好瀏覽器擴展
BitMaskWeb無需安裝、瀏覽器直接使用初學者
BlueWalletiOS/Android簡單易用、 Lightning 整合入門用戶

安裝前準備

在安裝 RGB 錢包前,需要準備以下環境:

  1. 比特幣節點或 RPC
  1. 存儲空間
  1. 網路要求

安裝與初始化

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充值比特幣到錢包
ERRINSUFFICIENTBTCBTC 餘額不足增加比特幣餘額支付礦工費
ERRINVALIDPROOF證明無效聯繫發送方確認交易
ERRCONTRACTNOT_FOUND合約不存在檢查合約 ID 是否正確
ERROUTPOINTSPENTUTXO 已被花費使用新的 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()}")

安全建議

最佳實踐

  1. 錢包安全
  1. 助記詞管理
  1. 交易安全
  1. 節點安全

總結

RGB 錢包提供了強大的比特幣資產管理能力,但需要用戶理解客戶端驗證模型。使用本指南的步驟,你可以:

記住:使用 RGB 時,你的資產安全最終取決於你自己的助記詞保護和驗證能力。


更新日期:2026-02-23

版本:1.0

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!