比特币多重签名机制使用篇
原文鏈接:http://www.wanbizu.com/baike/201408191710.html
| 概述 比特幣的多重簽名機制可以實現多方共同管理資產,也可以用于第三方交易擔保。 多重簽名最多支持三方共同管理一個地址的資產。按照比特幣wiki上的表述方式,稱之為: 一般有 1 of 1, 1 of 2, 1 of 3, 2 of 3, 3 of 3幾種模式。通常情況下,多應用于N = 3 的情形。 1 of 3: 三個管理者中,任何一方都可以單獨的處理該地址的資產。 2 of 3: 三個管理者中,必須有兩方共同簽署才能處理該地址的資產。 3 of 3: 三個管理者必須都簽署才能處理該地址的資產。 本文就以 2 of 3的情形來介紹一下使用多重簽名的方法。 制作多重簽名地址 首先,制作多重簽名地址用到比特幣錢包的API. 熟悉命令行的讀者可以直接在“命令提示符”窗口里運行bitcoind調用相應的命令。可能大部分讀者對“命令提示符”并不熟悉,所以本文用“比特幣核心”錢包的調試窗口來演示。 要制作多重簽名地址,首先需要參與管理的三方提供各自的公鑰。 管理者1: 管理者2: 管理者3: 那么,這些公鑰是如何獲取的呢? 首先,打開“比特幣核心”錢包。點擊“幫助”->”調試窗口”,在彈出的“Debug window”窗口點擊“控制臺”。進入圖1控制臺的界面: 在該界面下面的輸入框里,輸入: 錢包會為我們生成一個新的地址。如圖2 獲取新地址 這便是上面管理者1的地址。但制作多重簽名,只有地址還不夠,還需要對應的公鑰。公鑰可以通過地址來查詢出來。使用命令得到如圖三(圖3獲取公鑰)的公鑰界面: 其中,“pubkey”后面的數據便是該地址的公鑰。 取得三個管理者的公鑰之后,就可以用createmultisig命令來生成多重簽名地址。首先,看一下該命令的基本格式: 我們要創建的是2 of 3的模式,所以命令里n=2。輸入命令如下: 得到如圖4(生成多重簽名地址)的地址界面: 上圖中的3M8voDot82tBrQE7QWGy9WUWxp7gDU7owx,就是我們生成的多重簽名地址。然后將這個地址增加到錢包里,只有這樣,當收到比特幣時,錢包才會有顯示。用命令 如果忘記了輸入這條命令,錢包便無法顯示這個地址上的金額。而且,在這條命令運行前匯款到地址上的幣也不會顯示出來。遇到這樣的情況,需要重新從頭開始同步區塊鏈。 我們可以向該地址中匯兩筆錢,用于測試。如圖5(收款成功) 從多重簽名地址付款 接下來,我們要演示從多重簽名地址付款。我們設置的是2 of 3的模式,就是說,三個管理者中,持有任意兩人的私鑰便可付款。我們假設現在持有的是管理者1和管理者3的私鑰。 管理者1 管理者3 獲取私鑰的方法也很簡單,只要使用如下命令即可: 第一步:獲取地址上的交易信息 使用listunspent,結果如圖(圖6地址上的交易信息): 我們一共向這個地址進行了兩次匯款,因為要手動構建交易單,所以,就只能針對具體的每一筆交易進行設置。如果那筆交易上的錢比要花費的多,就要自己設置找零操作。我們用第一筆交易做示例。從0.01個比特幣里,付款0.005到一個新地址 1KfqXpdhdtSqhACSeMvNoFSeXFGV5j8PkT,找零地址為:18eHb5P7N4ZAKURetN6pjF1jTGdD3HThrj 首先,我們需要記錄第一筆交易的如下幾個參數: 第二步:構建交易單: 輸出如下(圖7構建交易單): 第三步:用第一個私鑰對交易單簽名 命令的第一個參數,就是createrawtransaction的輸出。第二個關于txid的參數,與上面的相同。最后一個參數,是私鑰,我們用的是管理者1的私鑰。 輸出如圖: 可以注意到complete字段是false,因為我們只用了一個私鑰簽名。然后,將輸出的hex字段取出,用第二個私鑰再次簽名。 第四步:用第二個私鑰簽名:輸入命令: 輸出如圖(圖8第二次簽名): 可以看到,第二次簽名后,complete字段是true,說明簽名成功。我們可以使用該地址的幣了。 第五步:發送交易單 將上一步的輸出hex部分,用sendrawtransaction命令發送到網絡上: 輸入命令: 查詢交易ID cd2494071876f91e1f9505f5c5421088c7df2e6f939c17f742d3638bc7df789a即可看到這筆錢的花費情況。 使用腳本 如果您讀到了這里,首先感謝您的耐心。上面的命令確實讓人抓狂。再加上windows下各種符號的兼容問題,筆者測試時幾乎吐血了。幸運的是在開源社區,已經有了很多方便的腳本工具。這里,筆者修改了一個開源代碼,可以方便大家進行多重簽名地址的創建和消費。代碼地址在:https://github.com/johnsondiao/blackboard101https://github.com/johnsondiao/python-bitcoinrpc腳本是用python寫的。首先需要安裝python2.7.6。安裝方法這里不再贅述。python-bitcoinrpc是一個bitcoin的庫文件,需要對其中的setup.py文件運行 命令將庫安裝到python里。 然后,在比特幣錢包的路徑(wallet.dat所在的目錄)里添加bitcoin.conf文件。 文件內容如下: wbn_multisigs_pt1_create-address.py腳本用來生成多重簽名地址。 wbn_multisigs_pt2_spend-funds.py腳本用來發送多重簽名地址的幣。 具體的使用方法,就不再說明了,可以用python的IDLE來運行調試。構建多重簽名地址的運行截圖如下: 花費多重簽名地址的程序運行如下: |
總結
以上是生活随笔為你收集整理的比特币多重签名机制使用篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 工程 pro文件
- 下一篇: 去除字符串中指定字符