A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柠檬leung不酸 黑马粉丝团   /  2018-12-20 10:57  /  975 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 柠檬leung不酸 于 2018-12-20 11:10 编辑

Dagx的钱包类型分为两种:

单设备钱包:该类型钱包仅由单一设备控制,它与特定设备地址是绑定的,钱包中的地址为单签名地址;

多设备钱包:该类型钱包由多个设备共同控制,它与若干个设备地址绑定,钱包中的地址为多签名地址。

在之前的文章中,我们提到,Dagx的地址分为三种:

普通地址:地址定义中不包含其它地址,采用BASE32编码,长度为32,比如A2WWHN7755YZVMXCBLMFWRSLKSZJN3FU;

共享地址:地址定义中包含了其它地址,地址格式与普通地址相同,通常用作智能合约地址;

设备地址:生成方法及地址格式类似普通地址,但在设备地址在头部添加了一个0,长度为33,比如05FV4WNIEU4OHIAIF7XEIRC2QRRLFPAC3。设备地址:生成方法及地址格式类似普通地址,但在设备地址在头部添加了一个0,长度为33,比如05FV4WNIEU4OHIAIF7XEIRC2QRRLFPAC3。

因此,Dagx的钱包与地址可以总结为下面这张图:

其中:设备具有唯一的设备地址;普通地址包括单签名地址和多签名地址,单设备钱包生成单签名地址,多设备钱包生成多签名地址;多个普通地址可以共同构成共享地址。

单签名地址

单设备钱包由单一设备生成,假设设备地址为    DEVICE_ADDRESS,单设备钱包中单签名地址定义的模板为:

  >     ["sig", {pubkey: '$pubkey@DEVICE_ADDRESS'}]    > ["sig", {pubkey: '$pubkey@DEVICE_ADDRESS'}]

具体在生成地址时,$pubkey@DEVICE_ADDRESS会替换成相应的公钥。具体在生成地址时,$pubkey@DEVICE_ADDRESS会替换成相应的公钥。

多签名地址

多设备钱包由多个设备共同控制。假设3个设备的地址分别为DEVICE_A_ADDRESS、DEVICE_B_ADDRESS以及DEVICE_C_ADDRESS。我们需要生成一个2-3的多设备钱包,即3个设备中至少需要2个设备签名才可以生效,则相应的多设备钱包中多签名地址定义的模板为:

   > ["r of set", {            required: 2,            set: [                ["sig", {pubkey: '$pubkey@DEVICE_A_ADDRESS'}],                ["sig", {pubkey: '$pubkey@DEVICE_B_ADDRESS'}],                ["sig", {pubkey: '$pubkey@DEVICE_C_ADDRESS'}],            ]        }]}]

在创建多设备钱包时,设备之间会通过加密消息相互交换xPubKey。这样,不同的设备可以依据相同的地址路径生成相同的地址。

共享地址
共享地址本质上可以认为是智能合约的地址,例如    flight delay insurance的地址定义(或者智能合约)示例为:

["or",[    ["and",[       ["seen",{"what":"output","address":"this address","asset":"base","amount":22664}],       ["or",[           ["and",[               ["address","TTD2AVY4W2VH62NJXIP7R67XBHWZRQRJ"],               ["in data feed",[["GFK3RDAPQLLNCMQEVGGD2KCPZTLSG3HN"],"MU5152-2018-06-18",">","60",2810590]]]],           ["and",[               ["address","4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"],               ["in data feed",[["I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT"],"timestamp",">",1529442000000]]]],           ["and",[               ["address","4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"],               ["in data feed",[["GFK3RDAPQLLNCMQEVGGD2KCPZTLSG3HN"],"MU5152-2018-06-18","<=","60",2810590]]]]]]]],    ["and",[        ["address","4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"],        ["not",["seen",{"what":"output","address":"this address","asset":"base","amount":22664}]],        ["in data feed",[["I2ADHGP4HL6J37NQAD73J7E5SKFIXJOT"],"timestamp",">",1529034037936]]]]]

上述地址定义中共涉及到两个地址TTD2AVY4W2VH62NJXIP7R67XBHWZRQRJ及4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ,它是这两个地址的共享地址。

通过上述地址定义,可以得到该共享地址为        WDCIIWRDHSNNE2DQZ7YVU53USELZBLGV。其中,地址的签名路径包括:

{    r.0.1.0.0: "TTD2AVY4W2VH62NJXIP7R67XBHWZRQRJ",    r.0.1.1.0: "4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"    r.0.1.2.0: "4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"    r.1.0: "4JZOKE43GALLZA4P63NXT7NYAJLSMNYZ"}

只有满足合约中相应的条件,且具有相应路径的签名,才可以对共享地址中的资产进行操作。


转自巴比特论坛

地址http://8btc.com/thread-262629-1-1.html


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马