skyone

skyone

Hello, World

麻雀錢包(比特幣)

image

由 Artūras Kokorevas 拍攝

麻雀錢包 (比特幣)#

理論#

  1. UTXO 是什麼

    • UTXO, 全稱為未花費的交易支出.

    • 在比特幣中,任何一筆交易都有一個 input, 以及相應的 output

    • 相較於 EVM 生態,BTC 更像是紙幣,而 EVM 更像是銀行 [👉 以下例子均不考慮實際 RMB 面額限制 👈]

      • 舉個例子,你有 100 元現金 RMB, 一張紙幣,10 元轉帳給老王,gas 設置為 5, 那麼最後你會剩下一張面額為 85 的 UTXO, 你的一張 100 元紙幣,變成了一張面額為 85 的紙幣
      • 上面的花銷中,100 元紙幣就作為交易的 input, 而 output 分別是
        1. 85 (返回給自己的 UTXO), 會返回給你自己的錢包,
        2. 10 (這個 UTXO, 即面額為 10 的紙幣) 是給到了對方的錢包
        3. 5 (面額為 5 的紙幣) 是給到了礦工的錢包
      • 後面你再花錢,只能花這 1 張紙幣 (面額為 85). 作為交易的輸入,去發起新的交易.
      • 最後 你想把自己面額 85 的 UTXO 拆掉,拆成 30+50, 那麼你發起第二筆交易,接收方是自己,面額為 50. 那麼,input 是 85 的 UTXO, output 有三個
        1. 自己發給自己,面額為 50 的 UTXO
        2. 剩下的面額為 30 的 UTXO
        3. 還有面額為 5 的 UTXO 進了礦工的錢包
  2. 加速交易的兩種方法

    ❤️ ❤️ ❤️ 不管你用 RBF 還是用 CPFP, 都需要確保自己 UTXO 的餘額是足夠的,不然是無法加速的 ❤️ ❤️ ❤️

    1. RBF, 全稱為Replace-by-fee, 即未確認的交易,可以用新的交易 (並給予新交易更高的 gas) 來替代掉,

      • 首先明確 只有是你自己的 UTXO 作為 input, 才能去發起 RBF 🍎

      • 其次,來這裡查看你的交易是否可以 RBF, 比如下面這一筆就可以進行 RBF

      image

      • 最後 舉個例子來說明,RBF 是什麼
        • 同樣以上面錢包裡只有 30+50 這兩筆 UTXO 來說,我新發起一筆交易,利用 50 的 UTXO 再次向老王轉帳 10, gas 設置為 5, 這筆交易記為交易 1
        • 那麼如果交易 1 成交,
          • 那麼我的錢包裡應該會有兩個 UTXO, 分別是 30, 35 這兩張,前者是沒動的 UTXO, 後者是交易 1 完成後返回來的 UTXO
          • 老王錢包裡則是 10+10, 兩張 UTXO
          • 礦工錢包是 5+5+5 三張 UTXO
        • 但是我發起交易 1 之後,我想加速一下 (這裡有兩個方面)
          1. 我不想給老王錢了,想賴掉
            • 那麼這時候就可以用 RBF 來加速,發起一筆新的交易,稱之為交易 2, 交易 2 是利用面額為 50 的這筆 UTXO, 給自己轉 20, gas 設置為 10.
            • 這筆交易 2 完成之後
              • 我的錢包裡會有 20 + 20 + 30, 這三張 UTXO
              • 老王的錢包只有 10, 一張 UTXO
              • 礦工的錢包裡有 5+5+10, 三張 UTXO
            • 交易 2 會成交,因此可以賴掉給老王的轉帳 🍓
          2. 我嫌棄 gas 太低,想快點成交
            • 同樣可以用 RBF 進行交易,發起一筆新的交易 2, 利用面額為 50 的這筆 UTXO, 給老王轉帳 10, gas 設置為 10
            • 那麼交易 2 完成之後
              • 我的錢包裡會有 30+30 這兩張
              • 老王錢包裡會有 10+10 這兩張
              • 礦工錢包裡則是 5+5+10, 這三張
    2. CPFP, 全稱為 Child Pays For Parent, 即利用發起一筆 gas 高的子交易,來加速父交易,

      因為想要確認高 gas 的子交易,就一定要確認父交易

      • 首先明白,所謂子交易指的是,子交易的 input, 用的是未能確認的父交易的 output.
        • 即我發起交易 1, 給老王轉帳 100 gas 設置為 10. 100 作為交易 1 的 output.
        • 老王想用我給他的這 100 作為 input, 給老李轉 50, 但是由於我的這筆交易 1 還沒確認,因此他只能發起一筆子交易交易 2, gas 設置為 20, 來加速父交易.
        • 這裡的父交易即交易 1, 子交易即為交易 2.

實踐#

  1. 麻雀錢包來說,啟動測試網 >>>> 工具 --> 重啟測試網

    image

    可以在測試網多玩一玩 ⚱

  2. 連接時,可能不會很順利,Clash 開 Direct 會好一些,如下圖

    image

  3. 領水合集

    1. https://testnet-faucet.com/btc-testnet/
    2. https://bitcoinfaucet.uo1.net/send.php
    3. https://testnet-faucet.mempool.co/
  4. 面板介紹

    • image

    • image

    • image

    • image

    • image

      • 介紹下左邊的這幾個面板

      • 交易指的是你作為接收方或者發送方的交易

      • 發送,是給某個地址發送 BTC,

        • payto 字段是發送給誰
        • label 是標識字符,類似於註釋
        • amount 是發送多少
        • 手續費這裡,可以自己拖動來調節 gas, 最後的手續費 = 交易大小 * gas
      • 接收這裡,即你可以選擇用某個地址接受外部轉帳

      • 地址這裡注意,這裡面的地址都是你可以用的地址,由於一套助記詞生成 N 多地址,所以這些地址都歸屬於你了,他們名下的 UTXO 你也都可以用,如果想用某個 UTXO, 直接選擇該 UTXO, 然後 “發送選中的” 即可 如下圖image

      • UTXOs 這一欄,即你可以花的 UTXO, 與上面同理,想花哪個選中,選擇小飛機圖標即可,如下圖image

      • 設定這一欄,就不過多敘述了 :walking:

  5. BRF 實踐

    1. 交易 B 替代 交易 A, 針對的是 “我嫌棄 gas 太低,想快點成交” 這種情況,大概原理如下
      • 我首先發起交易 A, 用 tb1qn2zt7xzc4nwe4m5rzg8jt4gr446h069vjunapj 地址中的一個面值為 1282sats 的 utxo (簡稱 U1), 給 tb1q66spu0n20ru23yhc6katlwu4j9xl4sn9yxrnwh 這個地址轉帳 1131sats, gas 花 151stas. (151 + 1131 = 1282)
      • 後面發起 RBF, 即為交易 B, 用上面的 U1 以及 另外一個面值為 1712sats 的 UTXO (簡稱 U2), 這兩個 utxo, 作為 input, 給 tb1q66spu0n20ru23yhc6katlwu4j9xl4sn9yxrnwh 這個地址轉了 2610sats, gas 花了 384, (1282 + 1712 = 2610 + 384)
      • 最後可見,交易 B 成交,而交易 A 並沒有成交
      • 這一筆之所以用兩個 UTXO, 是因為 U1 的餘額不足以支撐交易 B
    2. 交易 B 替代 交易 A, 針對的是 “我不想給老王錢了,想賴掉” 這種情況,大概原理如下
      • 我發起交易 A, 用 tb1qn2zt7xzc4nwe4m5rzg8jt4gr446h069vjunapj 地址中的一個面值為 8135sats 的 utxo (簡稱 U1), 給 tb1q4eqr370h7w37quke9nes5yc9ncnpctfpejv8df 地址轉帳 294sats, gas 為 158sats
      • 後發起交易 B, 同樣用 U1, 給 tb1q4eqr370h7w37quke9nes5yc9ncnpctfpejv8df 轉帳 294sats, gas 為 748
      • 最後交易 B 成交,交易 A 沒有成交
  6. CPFP 實踐

    1. 父交易子交易, 大概經過如下
      • 我首先發起父交易,即 tb1qn2zt7xzc4nwe4m5rzg8jt4gr446h069vjunapj (簡稱地址 A) 一張面額為 12281sats 的 UTXO (U1) 作為 input, 向 tb1q4eqr370h7w37quke9nes5yc9ncnpctfpejv8df (簡稱地址 B) 轉帳 1000sats, 其餘的 11140sats 退回到 tb1qzk35rutqjcuj7la95hvvcdqkczjv7dqwtyh6ls (簡稱地址 C)
      • 然後我用地址 C 收到的 11140sats, 發起向 tb1q80262jz5ytdfhj38ur4l7duect6qppc4j6unj7 (簡稱地址 D) 轉帳 1000sats 的子交易.
      • 由於子交易的提速,所以父交易的有效費率 由 1.01-->1.43, 而子交易的有效費率 由 1.85-->1.43
  7. 再強調一點,玩 BRC20 的話,不要 RBF, 用 CPFP (至於為什麼 我了解不多,不多說)

  8. 在麻雀中,想發起加速的時候,手續費和金額為什麼標紅?

    1. 如果有一個 utxo, 並不是自己發起的,只是別人給我的,並且這個 UTXO 的價值只有 546, 那就是太小了,
    2. 換句話說,這個 UTXO 的餘額不足以支撐新 UTXO 的輸入以及提升 gas 的費用 (即不足以支付 children)

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。