众所周至,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

NEO GUI 多方签名使用的更多相关文章

  1. NEO区块链-DAPP开发直通车-第零篇

    什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称.   NEL将为开发DAPP提供全面的服务 ...

  2. 基于NEO的私链(Private Blockchain)

    1.准备工作 1.NEO-GUI 2.NEO-CLI 3..NET Core Runtime (不能是2.x版本,官方建议是1.12,实际上我用1.14也是没有问题的) 4.四台windows操作系统 ...

  3. 【转】android应用程序签名

    概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...

  4. android应用程序签名(转)

    概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...

  5. NEO

    平台: Windows 类型: 虚拟机镜像 软件包: .net core neo application server basic software blockchain neo open sourc ...

  6. PGP工作原理及其安全体制

    现代信息社会里,当电子邮件广受欢迎的同时,其安全性问题也很突出.实际上,电子邮件的传递过程是邮件在网络上反复复制的过程,其网络传输路径不确定,很容易遭到不明身份者的窃取.篡改.冒用甚至恶意破坏,给收发 ...

  7. 区块链,Ethereum-Wallet

    https://blockchain.info/charts/transactions-per-second https://slock.it/     https://en.wikipedia.or ...

  8. ENS中文文档系列之三 [ ENS常见问题 ]

    原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...

  9. python tkinter 实现 带界面(GUI)的RSA加密、签名

    代码环境,python3.5.2 RSA加密的过程是:使用公钥加密,私钥解密 RSA签名的过程是:使用私钥签名,公钥验证 所以核心代码就是,生成公钥私钥,使用公钥私钥分别进行加密解密. 在实际编码的时 ...

随机推荐

  1. 从零开始部署javaWeb项目到阿里云上面

    [详情请看]http://www.cnblogs.com/softidea/p/5271746.html 补充几点特别需要注意的事情 一:putty相当于阿里云的控制台, WinSCP 相当于是专门上 ...

  2. Java基础 -- final关键字

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

  3. django系列5:视图

    在Django中,网页和其他内容由视图提供.每个视图都由一个简单的Python函数(或基于类的视图的方法)表示.Django将通过检查所请求的URL(确切地说,是域名后面的URL部分)来选择视图. 在 ...

  4. Docker:dockerfile自动构建镜像 [六]

    一.手动docker镜像的缺点 相对于手动制作的docker镜像,使用dockerfile构建的镜像有以下优点: 1.dockerfile只有几kb,便于传输 2.使用dockerfile构建出来的镜 ...

  5. 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件

    爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # 爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # URL https://www.zhihu.co ...

  6. JQuery对象关系图

    上图转自:http://www.cnblogs.com/haogj/archive/2010/04/19/1715762.html 自定义函数示例: $.fn.jAccordionunfold = f ...

  7. [物理学与PDEs]第4章习题2 反应力学方程组形式的化约 - 能量守恒方程

    试证明: 利用连续性方程及动量方程, 能量守恒方程 (2. 15) 可化为 (2. 21) 的形式. 证明: 注意到 $$\beex \bea &\quad\cfrac{\p}{\p t}\s ...

  8. SSH框架之hibernate《二》

    Hibernate第二天     一.hibernate的持久化类和对象标识符         1.1持久化类的编写规范             1.1.1什么是持久化类:               ...

  9. dense prediction问题

    dense prediction  理解:标注出图像中每个像素点的对象类别,要求不但给出具体目标的位置,还要描绘物体的边界,如图像分割.语义分割.边缘检测等等. 基于深度学习主要的做法有两种: 基于图 ...

  10. Codeforces 1101G(线性基)

    题目链接 题意 将序列尽可能分成多段使得任意$x \geq 1$段内的所有元素的异或和大于$0$问最多多少段 思路 首先,如果所有元素异或和等于$0$答案显然为$-1$,否则构造整个序列的线性基,这个 ...