双花悔婚 百度网盘安全性如何知乎文,巨想要?

请加私人号,带领韭菜们入群吃肉(ID:jojo_baijin)备注:知乎

据媒体报道,上周一名恶意矿工以获得了51%的算力支持的方式,逆转了22个区块,对比特币黄金(BTG)网络成功实施了双花攻击,并谋取了暴利。

自5月16日以来,一个比特币黄金账户收到了超过38.8万的比特币黄金。经推测,攻击者已经从各个交易所获得了约1860万美元的资金。最后一笔交易发生在5月18日。如果攻击者还拥有足够算力的话,不排除攻击还会发生的可能。

目前,比特币黄金是第27大加密货币,流通市值为50亿人民币。比特币黄金通讯部门负责人Edward Iskra早在北京时间5月18日20:51分在比特币黄金的官方论坛发表公告,提醒各个交易所加强审核,特别是一些大额的交易。他还指出,此次攻击对个人用户和持有的基金来说没有影响。

比特黄金创始人廖翔回应称:目前有能力做这些事情的只有市面上几家较大的公司。很明显他怀疑同行相杀。比特币黄金公司正在准备收集证据向FBI报案。

没想到中本聪在比特币白皮书中担心的双花问题,终于在现实中发生了。

背景小知识:什么是双花?

中本聪在《比特币白皮书》第五小节网络中,是这样说的:

运行该网络的步骤如下:

1,新的交易向全网进行广播;

2,每一个节点都将收到的交易信息纳入一个区块中;

3,每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;

4,当一个节点找到了一个工作量证明,它就向全网进行广播;

5,当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;

6,其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区块的随机散列值。

节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。

所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。

好了,有了上面这个基础,我们来举例说明一下,在比特币网络中,双花如何发生的?

在数字化货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,这也称之为双花。

通俗的理解,“双花攻击”(double spend attack)又叫“双重消费攻击”。就是一笔资金,通过某种方式(有可能是欺骗的手段或者支付系统bug问题)被花费了两次,取得了超过该笔资金的服务。

可以举个简单的例子。我用1个比特币同时发出2笔交易:一笔买杜蕾斯交易a, 一笔买冈本交易b。一些挖坑节点接受了交易1,一些接受了交易2,记账节点A把交易1打包进区块延伸了链,后面又有一个记账节点给予前面的记账节点A的链有延伸了一个区块。这条链是最长的链。ok 商家确认了交易a。我拿到杜雷斯。过了30分钟,有个超级nb的量子计算机哥们以交易b构造的区块后面还加了6个区块。成为目前最长的链。so 冈本也可以拿回家。你们说这算不算双花。

双花简单一点说就是花两次。双花是如何实现的呢?这分为两种情况:

1, 在1确认前的双花。这个因为原理,0确认的交易本来就可能最后没有写入区块链。除非小额,最好至少等一确认即可规避此类双花。另外用链下钱包也可以,可秒速。

出现双花问题怎么解决呢?

小蚁CEO达鸿飞给出了这样的解决方案:

首先,要检查这笔钱是不是没有被花费过。方法是查看你的这笔交易的来源是否在UTXO(未花费交易列表)中。不需要追溯到挖矿挖出的coinbase交易。

然后要看你提交的交易里有没有包含有效鉴权。如果这笔钱之前是通过P2PKH交易付给你的,那就是看交易里有没有这笔钱所在地址的对应私钥的签名。P2SH、P2MS类型的交易的鉴权规则类似。

如果你用同一笔UTXO构造了两笔分别付给A和B的交易。那么bitcoin-core客户端的规则只转发先侦听到的那个。但至于哪笔交易会被包含进未来区块,则取决于矿工。

矿工的挖矿程序一般是定制开发的,矿工可以自主任意选择这两笔交易里的一笔。比如有的矿工会选择先看到的交易,有的矿工会选择交易手续费更高的那个。

当这两笔相矛盾的交易中的一笔被写入区块链,并且深度达到6后(6个确认后),可以认为这笔交易获得了最终的确认。等待6个确认的情况下,比特币是几乎绝对不可能被双花的。一个确认都不等待,则有相当的可能被双花攻击。通常,3个确认已经相当安全。

对于BTG比特黄金也许关注的人不是太多,但51%算力攻击业内人士却耳熟能详。51%算力攻击攻击一直是威胁比特币安全的达摩克利斯之剑,不过由于参加比特币挖矿的人数众多,比特币算力已经达到32.15 EH/s,很难有团体能掌握这么大的算力,所以BTC一直没发生过51%攻击事件。

而BTG挖矿人数少,算力小,相对来说容易集中51%算力发起攻击。多确认几个区块能有效防止51%算力攻击引起的双花事件。一般比特币3个区块的确认就可以防止双花作弊,6个区块确认就可以完全避免。

【添加老白微信,带韭菜们进群吃肉 微信号:jojo_baijin】备注:知乎

“隐私保护”引出的问题

门罗币由于其“隐私保护”特性,我们虽然可以查看保存在区块链上的公开数据。

但针对某一笔交易,我们并不知道具体的交易发送方(环签名的缘故),交易的接收方(混淆地址的缘故),交易金额(环机密交易的缘故)。

那么,问题来了,我们如何校验某一笔交易有没有执行过两次(俗称:双花问题)呢?

解决办法,钥匙镜像(key image)

门罗币,或者说 CryptoNote 协议给出的解决方案是引入“钥匙镜像(key image)”,他根据发送方的私钥及之前交易信息产生,保存到区块链里。

每次有新交易过来都会检查新生成的“钥匙镜像”,在这之前是否已经出现过,以保证一笔交易不会重复执行。

下面我们来看看它具体是如何生成的。

先复习“混淆地址”知识 P = P'

一笔交易,有发送方(支付),就有接收方(收款)。

发送方生成的混淆地址用公式表示为:

接收方根据区块链上保存的公开信息,以及自己的私钥,尝试计算:

如果 P' = P 则表示此款项是支付给接收方的。

如果,现在我们把 P 称之为 one-time public key(一次性公钥,混淆地址),那么除了上述计算 P和 P' 的公式外,我们还有一个公式:

并且,可以看出:P = xG (P、x 就是一对公私钥)

Hp - 确定的哈希函数

根据此公式,我们就能得到钥匙镜像(key image)。

我要回帖

更多关于 百度网盘安全性如何 的文章

 

随机推荐