NEO GUI 多方簽名使用

NEOGO發表於2019-01-30

眾所周至,NEOGUI是一個開發者演示用錢包,使用體驗是非常的不友好的。

今天本來打算使用多方簽名賬戶,發現和想象的不一樣,請教了小夥伴也不行。遂除錯了一下原因,發現踩進坑裡了。

把這個問題記錄一下,希望以後用到的小夥伴可以順利實施

準備階段

首先準備兩個key

Key1地址 ALjSnMZidJqd18iQaoCgFun6iqWRm2cVtj

Key1公鑰 02aa792c61ffe03d92bb505969fe81e2c345682a9c0ba38596275f3a31f6da6e5f

Key2地址 AcfWad6TSjQbfrjyhkTuEPDRrYWYQC9zHD

Key2公鑰 02a763b5d3bf02cbb4d7e03eb9b060021324d6074bcff046d9846fe3ae1cdc5031

我是不會給你私鑰的,此處你應該準備自己的Key1、key2

為了測試的純潔,新建一個錢包,隨錢包生成的地址刪了,不要了

新建多方簽名

把key1公鑰和key2公鑰填進去,設定最小簽名數量2.

意味著我們建立一個這兩個地址都要簽名的多方簽名。

然後往這個多方簽名地址裡轉點錢,這個都很順利。

如果轉賬後、同步後多方簽名地址裡不能順利顯示餘額,那你就

重建一下索引

好了,我們給這個多方簽名地址裡面轉入154gas,現在還沒有什麼問題

轉出

然後,問題就來了

怎麼從這個合約地址裡面轉賬出來

轉賬

首先

轉到一個地址15個GAS

此時就會得到一個交易構造,但沒有簽名的對話方塊。很好,此時正常。

然後只要把這串東西發給一個key的擁有者簽名

然後簽名之後再發給另一個key的擁有者簽名並廣播

15個gas就可以取出來了。

理論如此,但有一些小坑

Key1擁有者

我們假定key1的擁有者準備簽名了,那麼key1的擁有者是不是可能為這個需求新建一個錢包呢,很可能,新建一個錢包,匯入key1,執行簽名。

好,我們來試一試。

Key1擁有者新建錢包,匯入key1

然後簽名你會得到

第一次失敗

這是因為根據

這串東西,找不到和key1的關係

我們可以分析一下他生成的交易,這個交易有一個輸入

交易的輸入是一個UTXO

他指向的地址是Ayx……xR4,就是多方簽名合約

所以,其實是需要多方簽名合約來提供鑑證資訊的。

好,新建多方簽名

再執行一次簽名,你會成功

然後我們把輸出的這串東西交給Key2擁有者

Key2擁有者

我們假定key2的擁有者準備簽名了,key2的擁有者思路不太一樣,他也為了清晰新建了一個錢包,然後先建立了多方簽名合約,再匯入了Key2,然後簽名

第二次失敗

然後key2擁有者會得到這個問題,明明有多方簽名地址,也有key2,為什麼還會沒有這個資訊呢。

這個地方就要解釋一下原始碼了。觀察了多方簽名建立的程式碼

他是這個樣子的,具體的關係就是。

多方簽名合約對話方塊從多個簽名中找一個key,只有我錢包裡面能找到一個key,才能返回。

那就要求了建立多方簽名合約時,你要想讓這個錢包能用來簽名,它裡面必須有一個多方簽名裡面用到的key,而且只能有一個

因為你有兩個Key,建立多方簽名也只能關聯一個key,而且很難判斷關聯的到底是哪個。

第二次失敗的原因明確了

再來一次

必須先匯入key2,再建立多方簽名地址

修改後正常

點廣播,錢取走

總結一下

使用NEOGUI操作多方簽名合約。

需要注意

1.一個錢包裡的多方簽名合約只能關聯一個KEY,如果沒有KEY,他就不能用來簽名。

也就是說如果你需要三個簽名,你就需要三個錢包。

2.只有當前錢包中有KEY的情況下建立多方簽名合約才會關聯上。

產生轉賬交易

需要多方簽名合約,無需關聯KEY

簽名1

需要多方簽名合約,KEY1,多方簽名合約必須關聯KEY1

簽名2

需要多方簽名合約,KEY2,多方簽名合約必須關聯KEY2

進技術群討論:795681763

作者:李劍英

原文轉自:www.cnblogs.com/crazylights…


相關文章