區塊鏈開發專題(數字貨幣如何?交易支付)

來源:互聯網
上載者:User

區塊鏈愛好者(QQ:53016353)


請求支付 在請求支付之前,程式需要首先產生一個比特幣地址或者從其他程式,如Bitcoin Core,獲得一個地址。比特幣地址的詳細資料在交易一節中闡述,並且在該節中給出了為何要避免多次使用同一個比特幣地址的兩個重要原因——而第三個原因則是與支付請求有關。
每次收款時使用單獨地址會使辨別付款顧客身份變得更加繁瑣。程式只需要追蹤特定的的支付請求以及其中包含的地址,然後搜尋區塊鏈,查詢匹配該地址的交易,即可確認身份。
下一小節將詳細介紹四種相互相容的方法,用以向支付者提供支付地址和金額。出於便利性和相容性考慮,推薦支援所述全部方法。
1. 錢包程式允許使用者在支付介面中粘貼或者手動輸入地址和支付金額。當然,這種方法並不方便,但提供了一種有效退卻選擇。
2. 幾乎所有的案頭錢包都可以關聯到bitcoin: URIs,支付者只需要點選連結即可直接進入支付介面,同時支付地址與金額已經預填完整。許多手機移動錢包也支援此項功能,但網頁錢包基本不支援,除非通過安裝瀏覽器延伸程式或者配置URI連結控制代碼。
3. 大多數移動錢包支援掃描包含bitcoin: URIs編碼資訊的QR碼,並且幾乎所有的錢包程式都支援顯示收款二維碼。這同時也方便了線上訂單,QR碼對於當面交易十分有用。
4. 近期的錢封裝更新增加了對一種新型支付協議的支援,該協議通過X.509認證認證收款者身份,提高了支付的安全性,並且引入了一些重要新特性如退款等。
警告:需要特別當心針對收款支付的盜竊行為。尤其要注意的是,私密金鑰絕對不能儲存在網路伺服器上,並且支付請求需要通過HTTPS或其他方法加密傳輸,防止中間人攻擊替換收款地址。






純文字
如果需要只通過複製粘貼手段就能確定支付數量,你需要提供地址、數量和單位。當然最好也包含一個有效時間,例如:
(註:所有本節範例使用的均是Testnet 地址。)
Pay: mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN
Amount: 100 數字貨幣
You must pay by: 2014-04-01 at 23:00 UTC
 
必須指定單位。在撰寫本文時所有的流行比特幣錢包程式預設顯示單位均是bitcoins (數字貨幣)或millibits(m數字貨幣)。大多數都支援選擇數字貨幣或m數字貨幣之一作為顯示單位,還有一些程式支援以下這些單位。
Bitcoins
Unit (Abbreviation)
1.0
bitcoin (數字貨幣)
0.01
bitcent (c數字貨幣)
0.001
millibit (m數字貨幣)
0.000001
microbit (u數字貨幣)
0.00000001
satoshi
 
由於數字貨幣和m數字貨幣都被廣泛接受,在以複製粘貼文本定義支付訂單時,同時指定兩種單位下的數額顯得更加直觀。例如:
Pay: mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN
Amount: 100 數字貨幣  (100000 m數字貨幣)
You must pay by: 2014-04-01 at 23:00 UTC
bitcoin: URI
在 BIP21中定義的 bitcoin: URI 方案消除了支付者在複製粘貼文本中可能出現的支付單位的混淆。同時也能通過支付訂單向支付者提供額外的資訊。舉個例子:
bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=100
只有地址是必要的,如果只定義了地址,錢包會產生一個預填好收款地址的支付請求,需要支付者輸入支付數量。
支付數量總是以數字貨幣的小數形式確定,對於整數數量的數字貨幣(如上例),可以省略小數點。小數數量的數字貨幣的數量開頭的0可以省略;例如,下面例子中的1m數字貨幣的請求均是有效:
bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=.001
bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=0.001
還有兩個被廣泛支援的參數 label 和message 。label 參數用來標識收款人名字,message參數通常被支付者用來描述支付請求。Label和message參數都被儲存在支付者錢包程式中並不會被包含在真正的交易中,所以其他的比特幣使用者無法看到這兩個參數資訊。這兩個參數必須通過URI編碼。
四個參數集合起來,通過URI編碼,轉行顯示為如下形式。
bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN\
?amount=0.10\
&label=Example+Merchant\
&message=Order+of+flowers+%26+chocolates
上述的URI可以編碼成HTML格式,以相容不支援URI連結的錢包程式,並且可以向支付者提供一個有效時間。
?amount=0.10\
&label=Example+Merchant\
&message=Order+of+flowers+%26+chocolates"
>Order flowers & chocolate using Bitcoin
(Pay 0.10 數字貨幣 [100 m數字貨幣] to mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN by 2014-04-01 at 23:00 UTC)
上述代碼產生連結如下:
Order flowers & chocolates using Bitcoin (Pay 0.10 數字貨幣 [100 m數字貨幣] to mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN by 2014-04-01 at 23:00 UTC)
一些訂單通過用Javascript顯示倒計時來表示有效剩餘支付時間。
在後文中的支付協議一節中可以看到,URI方案可以通過新的可選和必要參數進行擴充。在撰寫本文時,唯一被廣泛接受的新參數是支付協議中的r參數。
程式無論支援哪種形式的URIs連結,最終都需要通過提示由使用者最終確認支付,除非使用者明確地禁用了提示(可以用於小額支付)。
QR碼
QR碼可以用來交換bitcoin: URIs資訊,廣泛應用於當面交易、映像或影像中。大多數的移動錢包程式和部分案頭錢包程式都支援掃描QR碼,直接進入預填支付介面。
下圖中的四張比特幣QR碼顯示的是同一個bitcoin: URIs碼,分別以四種不同的錯誤修正層級(顯示在在二維碼上方)編碼產生的。QR碼可以包含 label 和 message參數,以及其他選擇性參數。在本例中為了壓縮QR碼的大小和保證較低素質的網路攝影機可以容易掃描成功,並未包含額外參數。


 
QR碼提供了四種不同錯誤修正等級:
1. 低:最多可修複7%的映像損失
2. 中:最多可修複15%的映像損失,但QR碼面積比低級修複等級映像大近8%。
3. 四分位:最多可修複25%映像損失,但QR碼面積比低級修複等級映像大近20%。
4. 高:最多可修複30%映像損失,但QR碼面積比低級修複等級映像大近26%。
錯誤修正配合校檢和(checksum)可以確保比特幣QR碼資訊完整且不會被意外修改,因此你的程式需要針對不同的顯示面積來選擇合適的錯誤修正等級。顯示面積有限時低錯誤修正等級更加適用,而當具備高解析度顯示能力時四分位修正等級可以協助實現快速掃碼。
 
 
 
 
支付協議
比特幣核心0.9版本支援新的支付協議。針對支付需求,新的支付協議添加了很多重要的功能。
· 支援X.509認證和SSL加密,以便能夠對接收者的身份進行認證並阻止中間人的惡意攻擊。
· 提供更多支付過程的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.