由 Artūras Kokorevas 拍攝
麻雀錢包 (比特幣)#
理論#
-
UTXO 是什麼
-
UTXO, 全稱為未花費的交易支出.
-
在比特幣中,任何一筆交易都有一個 input, 以及相應的 output
-
相較於 EVM 生態,BTC 更像是紙幣,而 EVM 更像是銀行 [👉 以下例子均不考慮實際 RMB 面額限制 👈]
- 舉個例子,你有 100 元現金 RMB, 一張紙幣,10 元轉帳給老王,gas 設置為 5, 那麼最後你會剩下一張面額為 85 的 UTXO, 你的一張 100 元紙幣,變成了一張面額為 85 的紙幣
- 上面的花銷中,100 元紙幣就作為交易的 input, 而 output 分別是
- 85 (返回給自己的 UTXO), 會返回給你自己的錢包,
- 10 (這個 UTXO, 即面額為 10 的紙幣) 是給到了對方的錢包
- 5 (面額為 5 的紙幣) 是給到了礦工的錢包
- 後面你再花錢,只能花這 1 張紙幣 (面額為 85). 作為交易的輸入,去發起新的交易.
- 最後 你想把自己面額 85 的 UTXO 拆掉,拆成 30+50, 那麼你發起第二筆交易,接收方是自己,面額為 50. 那麼,input 是 85 的 UTXO, output 有三個
- 自己發給自己,面額為 50 的 UTXO
- 剩下的面額為 30 的 UTXO
- 還有面額為 5 的 UTXO 進了礦工的錢包
-
-
加速交易的兩種方法
❤️ ❤️ ❤️ 不管你用 RBF 還是用 CPFP, 都需要確保自己 UTXO 的餘額是足夠的,不然是無法加速的 ❤️ ❤️ ❤️
-
RBF, 全稱為Replace-by-fee, 即未確認的交易,可以用新的交易 (並給予新交易更高的 gas) 來替代掉,
-
首先明確 只有是你自己的 UTXO 作為 input, 才能去發起 RBF 🍎
-
其次,來這裡查看你的交易是否可以 RBF, 比如下面這一筆就可以進行 RBF
- 最後 舉個例子來說明,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 之後,我想加速一下 (這裡有兩個方面)
- 我不想給老王錢了,想賴掉
- 那麼這時候就可以用 RBF 來加速,發起一筆新的交易,稱之為交易 2, 交易 2 是利用面額為 50 的這筆 UTXO, 給自己轉 20, gas 設置為 10.
- 這筆交易 2 完成之後
- 我的錢包裡會有 20 + 20 + 30, 這三張 UTXO
- 老王的錢包只有 10, 一張 UTXO
- 礦工的錢包裡有 5+5+10, 三張 UTXO
- 交易 2 會成交,因此可以賴掉給老王的轉帳 🍓
- 我嫌棄 gas 太低,想快點成交
- 同樣可以用 RBF 進行交易,發起一筆新的交易 2, 利用面額為 50 的這筆 UTXO, 給老王轉帳 10, gas 設置為 10
- 那麼交易 2 完成之後
- 我的錢包裡會有 30+30 這兩張
- 老王錢包裡會有 10+10 這兩張
- 礦工錢包裡則是 5+5+10, 這三張
- 我不想給老王錢了,想賴掉
-
-
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.
- 首先明白,所謂子交易指的是,子交易的 input, 用的是未能確認的父交易的 output.
-
實踐#
-
以麻雀錢包來說,啟動測試網 >>>> 工具 --> 重啟測試網
可以在測試網多玩一玩 ⚱
-
連接時,可能不會很順利,Clash 開 Direct 會好一些,如下圖
-
領水合集
-
面板介紹
-
-
-
-
-
-
介紹下左邊的這幾個面板
-
交易指的是你作為接收方或者發送方的交易
-
發送,是給某個地址發送 BTC,
- payto 字段是發送給誰
- label 是標識字符,類似於註釋
- amount 是發送多少
- 手續費這裡,可以自己拖動來調節 gas, 最後的手續費 = 交易大小 * gas
-
接收這裡,即你可以選擇用某個地址接受外部轉帳
-
地址這裡注意,這裡面的地址都是你可以用的地址,由於一套助記詞生成 N 多地址,所以這些地址都歸屬於你了,他們名下的 UTXO 你也都可以用,如果想用某個 UTXO, 直接選擇該 UTXO, 然後 “發送選中的” 即可 如下圖
-
UTXOs 這一欄,即你可以花的 UTXO, 與上面同理,想花哪個選中,選擇小飛機圖標即可,如下圖
-
設定這一欄,就不過多敘述了 :walking:
-
-
-
BRF 實踐
- 交易 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
- 交易 B 替代 交易 A, 針對的是 “我不想給老王錢了,想賴掉” 這種情況,大概原理如下
- 我發起交易 A, 用 tb1qn2zt7xzc4nwe4m5rzg8jt4gr446h069vjunapj 地址中的一個面值為 8135sats 的 utxo (簡稱 U1), 給 tb1q4eqr370h7w37quke9nes5yc9ncnpctfpejv8df 地址轉帳 294sats, gas 為 158sats
- 後發起交易 B, 同樣用 U1, 給 tb1q4eqr370h7w37quke9nes5yc9ncnpctfpejv8df 轉帳 294sats, gas 為 748
- 最後交易 B 成交,交易 A 沒有成交
- 交易 B 替代 交易 A, 針對的是 “我嫌棄 gas 太低,想快點成交” 這種情況,大概原理如下
-
CPFP 實踐
- 父交易 和 子交易, 大概經過如下
- 我首先發起父交易,即 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
- 父交易 和 子交易, 大概經過如下
-
再強調一點,玩 BRC20 的話,不要 RBF, 用 CPFP (至於為什麼 我了解不多,不多說)
-
在麻雀中,想發起加速的時候,手續費和金額為什麼標紅?
- 如果有一個 utxo, 並不是自己發起的,只是別人給我的,並且這個 UTXO 的價值只有 546, 那就是太小了,
- 換句話說,這個 UTXO 的餘額不足以支撐新 UTXO 的輸入以及提升 gas 的費用 (即不足以支付 children)