您的位置:首页 > 其它

买了N种数字货币的你,“资产安全”和“隐私保护”怎么得到保证?| 技术分析

2018-01-11 11:11 716 查看


我的朋友X同学买了5种数字货币;Y同学买了8种;L同学更夸张,买了22种。

这些币都是在哪里交易的呢?也都是大家熟悉的几个交易所。说到这,突然想起来几个新闻:

12月19日,韩国一家老牌比特币交易所Youbit因为遭遇黑客攻击而申请破产保护。对于这家比特币交易所来说,这已经是它在不到8个月的时间里经历的第二次黑客攻击了。

今年7月,Bitthumb被黑客攻击,黑客获取了近31800用户的信息,同时该平台比特币被盗超过十亿韩元。



看了近前的,我们再来看下比较远的时间的。

由于受到黑客攻击,MT.Gox总计744000个比特币失窃,到2014年2月,该交易所宣布停止交易并申请破产。

相信手里有币的朋友一看到这样的信息,就会背后袭来一阵凉意。毕竟现在已经有太多人是将手里的全部身价都换成了比特币。曾经在一个群里看到有人说自己现在只存储数字货币。

再回到上面提到的交易所来说,这些交易所的一个显著的共同特征就是:中心化。

2008年,中本聪的比特币是因为中心化机构的控制而带来经济泡沫,于是,有了比特币。再回到今日,各种区块链项目用去中心化的方式发行各种代币,而这些代币的交易又回到了中心化的系统中。



所以产生了一个核心问题:有没有一种方式可以让资产的交易去中心化?

万维链可能就提供了这个问题的解决路径。万维链是一个跨链数字资产基础设施平台,以去中心化的方式完成不同区块链网络的链接和价值交换。我们用万维链采用的资产跨链的技术,先来说明一下如何实现资产跨链?

资产跨链是怎么实现的?

举个例子,你有十个BTC,但你想把它换成你朋友小红的ETH,这要怎么实现呢?

我们先来简单的看下这其中使用了什么技术来实现?

万维链采用的方法是:去中心化的托管。用了两个技术安全多方计算和门限密钥共享机制来生成安全的锁定账户,也可以理解为万维链上的托管账户。

安全多方计算(SMPC)要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。这样的结果是验证节点除了知道每笔交易的额度大小,并不知道每笔交易是谁的。

门限密钥共享机制,用数学的方法把一个密钥分成很多份,每一份在节点上有多方持有其中的一小段。

比如,20个人共同持有并能还原一个完整的密钥,通过数学的方法,设置一个合理的难度使得有16个人或者10个人的签名就能还原一个私钥。

好吧,大家不好理解这两项技术是什么,但是我们可以知道的是这两项技术的目的是为了产生万维链上支持资产跨链的安全的托管账户。托管账户安全性的重要性是不言而喻的。



回到我们刚开始举的例子上,用通俗的话来说说,怎么用BTC来兑换ETH?

基于上面两个技术来生成一个安全的锁定账户,也成为托管账户。万维链的跨链技术将比特币和以太坊的链链接起来后,通过智能合约,你可以把比特币转到由万维链产生的托管账号。

万维链会给你发行一个BTC这样的一个代币,也可以叫这个代币为令牌,这个时候你的比特币的账本上就减少了你的10个BTC,而这10个BTC换成了10个BTC’。

你的朋友小红把ETH转账到万维链的托管账户换成ETH’的原理也一样。现在两个人的数字货币都同时转到各自在万维链的托管账户里了,怎么将BTC和ETH互换呢?

万维链的另一个功能,智能合约,的作用也体现在了这里。智能合约给两种数字货币之间搭了一个桥。

智能合约里写了,将两个币以什么样的市场汇率进行兑换。兑换完成后,你和小红再分别将你们在万维链托管账户的币转回到自己比特币钱包和以太坊的钱包中。



经过这样的一个过程,你的BTC就和小红的ETH就完成了互换。

万维链的这个托管账号就像一个当铺,双方把币换成令牌,通过万维链支持的智能合约进行互换,再各自提回自己账户。

在资产的跨链互换中,万维链的作用更像是一个去中心化的交易所,可以通过智能合约实现多币种的竞价交易和一对一的场外交易。

有了跨链技术,让两个或几个使用不同共识的链连接到一起进行交易的过程中,又产生了一个问题:怎么保证资产在跨链过程中是安全的?

怎么保证资产在跨链过程中是安全的?

如何保证跨链资产的安全?如果有一种办法可以把交易隐藏起来呢?(把交易隐藏起来,这是不是很疯狂?)

针对资产跨链(我们用M来表示)的隐私交易,环签名和一次性地址,以及邮票系统在万维链中的具体应用会是这样的:

跨链资产的隐私交易

同样是你想要发送一笔100M的交易给你朋友小红。

你用上述一次性地址的原理,即利用小红的原生账户和伴生账户,给小红生成一个一次性账户,然后向账户里充值100M。这个一次性账户的私钥只有小红用她的原生账户和伴生账户的私钥才能生成。

也就是说,你为小红生成的这个一次性账户,拿不到小红的两个的账户的密码,是没办法解锁提币的。

充值到一次性账户后,因为你要发起交易,你需要支付燃料费,所以你需要去买一张邮票,作为你已经支付了燃料费的证明,买邮票的时候需要提交你为之买邮票的一次性地址。



买完这张邮票,智能合约根据你邮票的面值,将你提交的一次性地址纳入大家都是同样面值的邮票序列里面。

在其他人看来,这一个序列里的一堆交易都是一样的,也就是你的交易被隐藏在相同的一堆交易里。这样你的交易就实现了匿名。

之后,在这一堆看起来发送相同交易的人,对各自的交易签了名后,交易就发出去了。

小红收到转账,用她的原生账户和伴生账户,生成你为她生成的一次性账户的私钥,然后小红就可以使用这笔资产了。

在跨链资产的隐私交易上,万维链主要用了三种技术来把交易隐藏起来,保证资产交易的安全。

上述故事里涉及到三项技术:环签名、一次性地址,以及邮票系统。我们来看看这三种技术分别是什么?

环签名

环签名可以使用户的交易拥有匿名的能力。签名者首先选定一个临时的签名者集合,集合中包括签名者自身。签名者集合中的其他成员可能并不知道自己被包含在其中。

一个普通的签名的实现过程是这样的:



环签名通过模糊身份认证,只能证明一个人属于某一个组,却不知道具体是哪个人:



这样就能使交易具有高度的匿名性:



但这样的环签名存在一个问题:如果大家是对金额不一样的交易进行环签名,只要对不同的金额进行对比,就能知道哪个交易是谁发出的。所以,万维链在原生币的交易上:只有金额相同的交易才能进行环签名。(而跨链币种的交易由于采取邮票系统,邮票就已经帮助交易发出者隐匿了身份,所以不需要规定相同交易额才能进行环签名)

一次性地址(官方吐槽:小阔号多的有点难懂,其实这点不难的~)

万维链上Alice的原生账户(A,a),其中A为公钥,a为私钥,为构成一次性账户系统所需形式,Alice生成新账户(B,b)作为伴生账户,添加到原有账户后,在一次性账户系统中,(A,B)作为Alice的主账户,(a,b)作为
Alice的主账户私钥,(A,b)作为Alice的扫描密钥。

一次性账户系统中用户的子账户通常不是自己生成, 而是由交易对方为用户生成。如Bob要为Alice生成一次性账户,则将Alice的主账户(A,B)通过一个函数生成Alice的一次性账户(A₁,S₁)。



利用主账户私钥(a,b)得到一次性账户(A₁,S₁)对应私钥sk。Alice只有在拥有扫描密钥(A,b)才能确定某个一次性账户属于自己,拥有主账户私钥
(a,b)才能得到一次性账户私钥。

因此,任何其他用户在没有扫描密钥(A,b)时无法建立一次性账户与 Alice主账户的对应关系,保证了主账户和一次性账户的隔离不可追溯,而在没有主账户私钥(a,b)时无法得到一次性账户私钥,保证了一次性账户安全。

邮票系统

邮票系统其实也是在万维链上部署的一个智能合约。邮票系统被用在除原生币之外的其他Token在万维链的交易中。

为什么需要邮票系统呢?智能合约调用时由于加入隐私保护功能让交易发起者隐藏,导致gas消耗找不到买单的人。

在邮票系统下,当用户需要使用代币交易的隐私保护功能时,需要使用邮票智能合约购买邮票,购买邮票的时候你需要提供你给交易对方生成的一次性地址,购买邮票后,智能合约会把你的一次性地址记录在相同面额邮票的序列中。这时候你在这个序列的交易中进行环签名,交易之后就发出去了。



这样一来,购买该邮票的费用就相当于支付了gas消耗的费用。

通过上述把交易、交易发起方,和因为一次性地址找不到的接受者隐藏。从这三个方面实现了资产在跨链过程中的安全性保障。

懂了这三个技术的朋友是不是感觉:仿佛眼前突然出现了一道光~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息