众所周至,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. 第三十九篇-RecyclerView的使用

    RecyclerView介绍 RecyclerView的出现可以替代ListView,并且比ListView更高级且更具灵活性.如果有数据集合,其中的元素将因用户操作或网络事件而在运行时发生改变,请使 ...

  2. 时间序列分析模型——ARIMA模型

    时间序列分析模型——ARIMA模型 一.研究目的 传统的经济计量方法是以经济理论为基础来描述变量关系的模型.但经济理论通常不足以对变量之间的动态联系提供一个严密的说明,而且内生变量既可以出现在方程的左 ...

  3. jdbc批处理进行多条数据插入

    package cn.linjun.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S ...

  4. Python实现聚类算法AP

    1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者亲和力传播算法,是在2007年的Science杂志上提出的一种新的聚类算法.AP算法的基本思想是将全部数据点都 ...

  5. 网页三剑客之JS

    1.javascrapt介绍 js概述 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释 ...

  6. Centos 7最小化部署apollo

    https://github.com/nobodyiam/apollo-build-scripts

  7. 金融量化分析【day112】:初识量化交易

    一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...

  8. tomcat 线程池

    web server允许的最大线程连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右. 1.编辑tomcat安装目录下的conf目录下的server. ...

  9. PyQt5之布局管理

    目录 一 写在开头 1.1 本文内容 二 绝对布局 三 布局类 3.1 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout) 3.2 水平布局和垂直布局实例 3.3 网格布局(QGr ...

  10. 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )

    一. 前言 在前面的两个章节中,我们分别详细介绍了EF的增删改的两种方式(方法和状态)和EF查询的两种方式( Lambda和Linq ),进行到这里,可以说对于EF,已经入门了,本来应该继续往下进行E ...