對投入和產出支出限制和整合感到困惑
我相信這個問題的答案對於已經知道答案的人來說是微不足道的,但對我來說卻不是。
我最近第一次想花一些收到的比特幣,發現相關的交易費用很高(比我想花的還多!),原因有兩個:
- 由於網路擁塞,目前費用自然很高。
- 該地址有來自許多來源的少量比特幣,這顯然是有問題的。
我花了一些時間研究這個問題,並了解到一個地址中的所有錢都必須一次用完。我讀到了無法拆分硬幣的類比。因此需要更改地址等。我了解了“合併”以及如何在低費用期間合併交易。
在實驗中,我使用較低的費用將不同地址的 3 個輸入合併為 1 個新地址。交易花了幾個星期才確認,但現在已經成功地讓這筆錢更值得花,因為合併減少了未來的費用。好吧,夠公平的。
現在我想對我的主要比特幣地址執行此操作,該地址有 22 個接收到的輸入。因此,我將以(相對)較低的費用將它們全部整合到 1 個新地址中,當它最終確認時,我最終將能夠消費。
但完全是偶然的,我在 Electrum 中發現了一些奇怪的東西:
- 如果我右鍵點擊一個地址,則有一個秘密功能“支出來源”可以讓我選擇源地址。(這很有用,因為以前我知道選擇源地址的唯一方法是捏造支出和費用數字,直到它們與特定地址的總數完全匹配,從而欺騙程序使用該地址。)
- 在“發送”選項卡上,Electrum然後列出每個接收到該源地址的輸入。如果我右鍵點擊各個輸入,我可以刪除它們。 什麼?!?!?
這與我花了幾天時間閱讀的所有內容相矛盾,即我必須一次花費全部輸入。
這個配置有效嗎?或者當我嘗試送出事務時會出現錯誤嗎?或者地址的所有其他輸入是否會永久失去?我太害怕嘗試了。
也許,例如,能夠從交易中刪除特定輸入的設計目的是清除“灰塵”的一種方式,以防止有人可以通過向其發送許多 1-satoshi 輸入來對比特幣地址進行 DoS 攻擊,從而導致地址在不產生巨額費用的情況下變得幾乎無法消費。但是這種設計將永遠丟棄未使用的輸入,或者將它們作為費用贈送給礦工。
如果只花費一個地址的一部分是有效的,而我不會失去其餘的,那我為什麼要等 3 週來等待這個愚蠢的整合雲雀呢?以及為什麼Electrum 愚蠢地試圖強迫我一次性花掉所有地址,當我非常高興將剩下的該死的錢留在原處時,費用卻顯著增加。為什麼網上有這麼多文章解釋為什麼你必須一次性花掉所有投入?
我很害怕如果我嘗試這個我會失去我所有的比特幣,所以我希望連結到區塊鏈上的範例交易,以使我自己確信這個部分輸入的東西是有效的。
我花了一些時間研究這個問題,並了解到一個地址中的所有錢都必須一次用完。
這是不正確的。地址的概念甚至不存在於協議級別。
交易有輸入和輸出。每個輸出構造一個“硬幣”,它有一個數量和一個鎖定腳本(編碼花費它的條件,這通常 - 但不一定 - 可以表示為地址)。輸入消耗硬幣(整體而言 - 每枚硬幣只能花費一次)。交易可以看作是熔化舊幣,並用它們重新鑄造新幣。
關於您花費的硬幣的鎖定腳本沒有規則。它們可以都相同,也可以不同,並且可能存在具有相同鎖定腳本的其他代幣沒有被同一交易花費。簡單地說,比特幣協議沒有“所有幣都關聯同一個鎖定腳本”的概念——這只是錢包軟體和區塊瀏覽器添加的,供人類消費。
這個配置有效嗎?或者當我嘗試送出事務時會出現錯誤嗎?或者地址的所有其他輸入是否會永久失去?我太害怕嘗試了。
這是有效的。
以及為什麼 Electrum 愚蠢地試圖強迫我一次性花掉所有地址,當我非常高興將剩下的該死的錢留在原處時,費用卻顯著增加。為什麼網上有這麼多文章解釋為什麼你必須一次性花掉所有投入?
我只能在這裡推測,但一個原因可能是隱私。根據定義,與同一地址/鎖定腳本關聯的多個硬幣可以由同一個人使用。因此,如果您在多個不同的交易中花費,您將向網路透露這兩個交易與同一實體(您)相關。因此,最好始終同時花費所有這些硬幣,以盡量減少您透露的金額。
當然,在理想情況下,您不會重複使用地址,並且您從一開始就不會有多個硬幣與同一個地址相關聯(可能除了垃圾郵件)。