讓付款更輕鬆!開發者提議為比特幣建造一個新帳戶系統
Wendy/張詠晴編譯
2019-12-04 14:55

 

比特幣沒有傳統意義上的「帳戶」。相反,每次支付時,資金都被發送到一個唯一的「交易輸出」。在這樣的輸出中,比特幣地址可能會被重複使用,在這種情況下,地址的作用有點像比特幣帳戶。

 

然而,以這種方式重複使用地址,會導致不同的幣和交易對應到同一個用戶變得很簡單,這對隱私來說是很糟糕的。因此,在每次支付後,比特幣用戶都會被建議生成一個新地址。

 

雖然這是為了保護隱私,但西班牙開發者José Femenías Cañuelo認為,這對用戶來說並不友好。

 

Cañuelo說:「在某種程度上,我們已經習慣了比特幣支付的方式,但確實是太粗暴了,就像使用沒有域名的互聯網,只依賴於IP地址——而且更糟,因為密碼地址更長,更難辨認,而且不斷變化。」

 

為了解決這個問題,在過去的一年裡,這位開發者想出了如何在比特幣上安裝一個帳戶系統。Cañuelo在白皮書中詳細闡述了這個想法,並且提出了他的layer 2協議:Easypaysy。

 

雖然保留了比特幣最有價值的屬性——如隱私和自主(不需要依賴託管)——但Cañuelo相信,他的提議將顯著改善比特幣的用戶體驗:它將讓支付變得不可否認,且頻率更高。

 

支付

 

我們有了一個帳戶和一個帳戶ID。現在,有人——我們就叫他「付款人」——想要支付給帳戶的所有者,我們稱他為「收款人」。付款人有收款人的助記符ID。(帳戶ID,無論以何種形式,都可以簡單地與任何人共享,就像郵件地址或電話號碼一樣。)

 

要進行付款,付款人的第一步是將助記符ID轉換回規範ID。使用BIP 39格式,付款人只需將助記符ID中的單詞轉換回數字,並得到規範ID:btc@543847.636/577。

 

使用規範ID,付款人可以使用校驗和來確保區塊高度和交易序號匹配。這並不是必須的,但可以作為一項額外的檢查,以確保沒有打字錯誤,或者防止有人惡意提交一個類似的帳戶。

 

付款人現在知道到哪裡去找帳戶了:這是543847區塊的第636筆交易。所以他查了一下。

 

該交易包含Rendezvous descriptor:OP_RETURN輸出中的JSON文件。Rendezvous descriptor指定帳戶願意接收哪種類型的付款以及如何接收,可以是協議支持的所有類型,也可以任意進行選擇。

 

在收款人接受的付款類型中,付款人選擇他喜歡的付款方式並進行付款,這筆交易就完成了。

 

支付類型

 

那麼這個提案中包含了哪些支付方式呢?

 

類型0

 

第一種支付類型——類型0——是最簡單的類型,但也是隱私方面最糟糕的類型。類型0的支付基本上只是對價值密鑰的支付,因此涉及到重複使用相應的地址,就像今天許多捐贈地址所做的那樣。Cañuelo實際上不鼓勵使用這種支付類型,但是他仍然尊重用戶的選擇。

 

類型1

 

第二種支付類型——類型1——需要互動。對於這種類型,付款人聯繫收款人要求一個新的比特幣地址。Easypaysy協議在如何建立聯繫人方面的設置很靈活;可以透過郵件、網頁、聊天應用或其他方式。

 

在提供地址(假設通過郵件)時,收款人也使用他的身份密鑰簽署地址。這代表向付款人確認該地址實際上是收款人的地址,而不是一個屬於駭客的非法地址。

 

類型2

 

第三種支付類型——類型2——不需要互動。類似於之前用於秘密地址(stealth address)的技巧,類型2支付允許付款人為收款人生成一個新的比特幣地址,收款人(且只有收款人)可以在這個地址進行花費。

 

為此,付款人需要生成一個單次使用的公鑰對。使用該密鑰對的私鑰,結合收款人的價值密鑰,付款人生成一個新的公鑰和相應的比特幣地址。付款人將資金發送到這個新地址,並且——重要的是——將單次使用的公鑰,添加到與OP_RETURN輸出相同的交易中。

 

有趣的是,收款人可以將這個單次使用的公鑰與他的價值密鑰結合使用,生成一個與新公鑰對應的新私鑰,從而生成相應的比特幣地址。換句話說,如果收款人知道了單次使用的公鑰,他(而且只有他)可以使用這個新比特幣地址的資金。

 

要瞭解單次使用的公鑰,要麼由付款人將交易通知給收款人,要麼由收款人用OP_RETURN輸出檢查所有新的比特幣交易。對於每個OP_RETURN輸出,他需要檢查是否是一個公鑰,以便與他的私有價值密鑰組合使用該交易中包含的資金。但事實往往並非如此。但如果是這樣的話,他知道他已經拿到錢了。

 

類型3

 

第四種支付方式——類型3——與第二種類似。然而,這一次,OP_RETURN輸出必須以標識符「EP」作為前綴。這使得他們更容易被收款人發現,但他們確實需要為付款人多支付一些費用。

 

本文為巴比特資訊授權刊登,原文標題為「比特幣需要帳戶嗎?這個開發者認為需要,還花了1年的時間來設計系統