区块链兄弟社区问答精选:关于51%攻击,你了解有多少?

材料整合:小链

本文转载自区块链兄弟,区块链兄弟——技术专业问答先行者,区块链爱好者聚集地

本文约2400字,阅读(观看)需要16分钟

问题1:有没有谁能帮忙讲讲区块链的51%攻击问题!

区块链兄弟社区专家、区块链研究员于中阳回答:

首先,我们需要知晓区块链技术采用的是分布式总账技术。

在此,每个节点的权利是一样的,任意节点被摧毁都不会影响整个系统的安全,也不会造成数据丢失。其在整个系统中的权重都是一致的。系统每次都在链入这个系统的节点中选择记账者,于是,即使某个或者部分节点被摧毁、死机等,并不会影响整个系统的运作。

但是,正是因为每个节点的账本数据都是一模一样的,也就意味着单个节的数据篡改是没有任何意义的。因为如果系统发现俩个账本对不上,其就认为拥有相同账本数量相对较多的节点的版本才是真实的数据版本。那些少部分不一致的节点账本不是真实的,而是被篡改的账本。系统会自动舍弃这部分认为被篡改过的账本,也就意味着如果你要篡改区块链上的数据内容,除非能够控制整个系统中的大部分节点。

这,就是通常所说的51%攻击,才能发动对账本数据的更改(攻击)。

随着整个系统中的节点数量不断增多,篡改数据的可能性就会大大降低。这是因为,这些节点很可能分布在世界上每一个角落,理论上说,除非你能控制世界上大多数电脑,否则你没有机会去篡改区块链上的数据。

另外一种51%攻击发起就是拥有全网51%的算力,即需要构建出和原来一样的系统一样多的节点(算力)的方式来攻击这个区块链系统(要构建出足够大的算力,不仅仅是节点的数量的体现,但出于简化理解算力,在此姑且考虑念以节点数量做比喻)。

举例,原系统有100个节点,如果要发动51%攻击,那么攻击者就需要另外部署101个节点(以上亦可),然后加入到这个区块链系统中。由于攻击者已经获得了超过50%的控制权,当然能够发动攻击。

当然,这种攻击所付出的成本取决于系统原来的大小。原来系统节点越多,攻击者付出的成本也越大。由于比特币是目前最庞大的区块链网络,据统计要构建出一个和现有比特币同样大型的网络系统,所付出的成本也算是极大了。

其实,我们不谈获取全网51%的困难性,攻击者更深层次面对的是另外一个问题。那就是,一旦其成功发动了攻击,就会造成该系统的价值归零。即,攻击者一旦成功篡改了账本,由于全网能够立刻识别出账本数据不一致,导致所有人都意识到该系统账本已经是不可靠的账本,那么意味着该账本所记录的数据变得没有价值,该系统中代币也会变得毫无价值。再清楚点就是,攻击者将无利可图(有谁愿意这样做呢)。

而对于国家,似乎也完全必要通过这种方式来攻击比特币这样的网络,因为宣布比特币违法勒令禁止,就能更简单的达到这一目的。

问题2:求助:运行example/e2e.cli下的network_setup.sh出现问题!

区块链兄弟社区专家、区块链高级架构师冯翔回答:

看看你的命令中的chaincode的名字是否正确。 以下面的命令为例

peer chaincode query -C qklszzlchannel -n r_test_cc6 -c '{"Args":["query","a"]}'

-n 后面是chaincode名字,先查看这个名字是否正确。

问题3:关于Paxo算法,为什么会出现死锁或者效益效率不高的情况?

区块链兄弟社区用户、区块链技术开发李凤涛回答:

paxos协议效率不高,并且会出现死锁的原因如下:

效率不高的原因,在于多个提议者一起提议,先提出的协议会一直被拒绝,又会重新提议。

死锁的情况,举一个例子,提议者A提出协议1,接受者A,B,C同意了,进入执行阶段,这时候提议者B提出协议2,接收者C,D,E同意了,进入执行阶段,协议1的执行失败了,因为C不会同意,协议者A只有提出协议3,接收者A,B,C同意了,协议2的执行阶段失败了,因为C不会同意,然后一直循环。

问题4:Hyperledger Fabric 在Ca中注册的user私钥,应该如何保存?

目前在开发一个基于fabric的项目,学习了下IBM-Marbles以及Fabric samples,这两个项目都是把用户注册的私钥、证书保存在本地,如果在生产环境中,是不是应该把签名私钥存至用户本地?如果是的话,如何在服务器后端的SDK中获取呢?另外 SDK中的get/setUserContext 有大神可以给讲解下吗,感谢!

区块链兄弟社区专家、区块链高级架构师冯翔回答:

私钥其实是客户端在本地生成,并不是有CA服务器提供的,这也符合区块链的设计思路。

cryptoSuit.getKey('8a4ed8278fd021fddcad61d3691f086da70dc19c40d243a7da4029c88cdd9ae9').then(key=>{

console.info( key._key.prvKeyHex )

// console.info(key.getSKI())

varpkey=key.getPublicKey()

console.info(pkey._key.pubKeyHex )

}).catch(err =>{

console.info( err )

})

这是我们从源代码中提取处理的私钥生成算法,供你参考一下。

更多区块链技术问题,请上区块链兄弟社区,寻求解答!

(未完待续)

热文推荐

区块链兄弟——技术专业问答先行者,区块链爱好者聚集地

本文来自企鹅号 - 区块链兄弟媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏知晓程序

比起「多喝热水」,妹子更需要这款小程序

11620
来自专栏灯塔大数据

塔说 | 区块链遇到数据库:相爱还是相杀?

导读:如果你正在想要通过部署区块链来改善数据库流程,请记住你不需要进行彻底替换,下面让我们看看如何做? 当部署区块链时,无需替换现有数据库和相关流程,而是应该整...

35270
来自专栏智能计算时代

研究人员探索了对以太坊区块链的日食攻击

eclipse攻击是对区块链的网络级攻击,攻击者基本上控制了对等网络,模糊了节点对区块链的视图。

12220
来自专栏申龙斌的程序人生

只需几十元,就可以学会比特币交易的全过程

大概在9个月前,我与同事们谈起我刚刚买了一个比特币,绝大多数同事们投来不可思议的眼神,当时1BTC的价格为4000元。今天我再次与他们谈起比特币,眼神还是没变。...

31170
来自专栏金融民工小曾

【支付系统设计从0到1】深度解析支付宝产品架构

支付宝作为最老牌的支付机构,其支付系统的架构和使用的技术是很值得我们在设计与实现支付系统时作为参考的,这篇文章为大家深度解析支付宝的产品架构。

37310
来自专栏Netkiller

食品安全溯源区块链解决方案探索

Netkiller Blockchain 手札 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller...

1K90
来自专栏极客编程

区块链,星际文件(IPFS),Node和Mongo来构建以太坊DApp电商平台

欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台类似淘宝的在线电...

14420
来自专栏企鹅号快讯

对区块链进行24个月研究之后所学到的9件事情(上)

在读了这篇文章之后,你会对区块链有个大概了解。以下是我在过去两年里在区块链和分类账上学到的9件事。对于那些着手区块链的人来说,这是一个入门读物。 区块链是散列 ...

21360
来自专栏智能计算时代

区块链101:为什么要使用区块链

随着人们对这一发明的理解,区块链技术出现了一定的炒作。 这可能是因为它很容易想象高级用例。但是,这项技术也受到了严密的审查:在过去的几年中,已经花费了数百万美元...

33450
来自专栏知晓程序

腾讯官方出品!有了它,人人都是「管钱」高手 | 亲儿子 #16

今天,知晓程序(微信号 zxcx0101)向大家推荐一款由腾讯自家做的,专门用来「收公费、记公账」的小程序,让每一个数学渣渣,都能独立担起管理「集体经费」的大责...

11330

扫码关注云+社区

领取腾讯云代金券