NEO GUI 多方签名使用
众所周至,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 多方签名使用的更多相关文章
- NEO区块链-DAPP开发直通车-第零篇
什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称. NEL将为开发DAPP提供全面的服务 ...
- 基于NEO的私链(Private Blockchain)
1.准备工作 1.NEO-GUI 2.NEO-CLI 3..NET Core Runtime (不能是2.x版本,官方建议是1.12,实际上我用1.14也是没有问题的) 4.四台windows操作系统 ...
- 【转】android应用程序签名
概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...
- android应用程序签名(转)
概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...
- NEO
平台: Windows 类型: 虚拟机镜像 软件包: .net core neo application server basic software blockchain neo open sourc ...
- PGP工作原理及其安全体制
现代信息社会里,当电子邮件广受欢迎的同时,其安全性问题也很突出.实际上,电子邮件的传递过程是邮件在网络上反复复制的过程,其网络传输路径不确定,很容易遭到不明身份者的窃取.篡改.冒用甚至恶意破坏,给收发 ...
- 区块链,Ethereum-Wallet
https://blockchain.info/charts/transactions-per-second https://slock.it/ https://en.wikipedia.or ...
- ENS中文文档系列之三 [ ENS常见问题 ]
原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...
- python tkinter 实现 带界面(GUI)的RSA加密、签名
代码环境,python3.5.2 RSA加密的过程是:使用公钥加密,私钥解密 RSA签名的过程是:使用私钥签名,公钥验证 所以核心代码就是,生成公钥私钥,使用公钥私钥分别进行加密解密. 在实际编码的时 ...
随机推荐
- java 11 标准Java异步HTTP客户端
这是 Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到 ...
- Calendar 使用
Calendar 类是一个抽象类,在java.util.Calendar包中,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并 ...
- Luogu_2015 二叉苹果树
题目链接 SB 裸题……就是想随便挂在这里……同样的题还有 Luogu_2014 选课. Luogu_2015 二叉苹果树 #include <queue> #include <cs ...
- 降维【PCA & SVD】
PCA(principle component analysis)主成分分析 理论依据 最大方差理论 最小平方误差理论 一.最大方差理论(白面机器学习) 对一个矩阵进行降维,我们希望降维之后的每一维数 ...
- DirectX11 With Windows SDK--11 混合状态与光栅化状态
前言 虽然这一部分的内容主要偏向于混合(Blending),但这里还需提及一下,关于渲染管线可以绑定的状态主要有如下四种: 光栅化状态(光栅化阶段) 采样器状态(像素着色阶段) 混合状态(输出合并阶段 ...
- js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用
js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型 Number var a1 = 10; var a2 = 3.66; conso ...
- mysql数据库truncate表时间长处理
[环境介绍] 系统环境:Linux + mysql 5.7.18 + 主从复制架构 [背景描述] 客户反映用在mysql数据库上truncate一个innode引擎的list分区100G左右表时,耗时 ...
- SQL注入关联分析
在Web攻防中,SQL注入绝对是一个技能的频繁项,为了技术的成熟化.自动化.智能化,我们有必要建立SQL注入与之相关典型技术之间的关联规则.在分析过程中,整个规则均围绕核心词进行直线展开,我们简单称之 ...
- Codeforces Round #501 (Div. 3) D. Walking Between Houses
题目链接 题意:给你三个数n,k,sn,k,sn,k,s,让你构造一个长度为k的数列,使得相邻两项差值的绝对值之和为sss, ∑i=1n∣a[i]−a[i−1]∣,a[0]=1\sum_{i=1}^n ...
- 【转载】Jenkins安装以及邮件配置
转载:http://www.nnzhp.cn/archives/590 Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包 ...