laizimo / zimo-article

:books:博客——源于实践,乐于分享,欢迎Star~
1.06k stars 91 forks source link

区块链与nodejs(一) #49

Open laizimo opened 6 years ago

laizimo commented 6 years ago

前言

相信2017年下半年最火热的词一定是——bitcoin。神秘的比特币,火爆了2017年整个下半年,全球的人都为之疯狂。而同时,区块链这个技术进入了人们的视野。写这些文章的初始原因是我想要去完成一个关于区块链的毕业设计。同时,在开发的过程中使用的就是nodeJS。所以,本篇是一个系列的开篇。让我们来聊聊关于区块链的东西。如果你喜欢我的文章,欢迎评论,欢迎Star~。欢迎关注我的github博客

正文

区块链,作为数字货币的底层技术,其实并不是难以理解的。通俗地讲,我们可以称之为“分布式的数据库”。那么,这个分布式的数据库是如何运作的呢?我们可以来了解一下P2P网络。

P2P(Point to Point):点对点网络。这个东西其实早就存在了,早期的Bit下载,就是基于这个P2P网络的。它就像是一个点与另一个点之间,相互联系的线一样,形成的交织地网络。优点是便于去中心化,它并没有中央服务器,或者说“弱中心化”。

目前,很多支付第三方公司,例如支付宝。在交易的过程中,都具备一个中心系统,去完成这一切的交易。这样的好处是,服务交易速度快,同时,第三方的公司还可以收取一定的交易费。但是,同样,这种方式也具备一定的坏处:

所以,我们很容易体会到现在的金融系统也是不容易的^_^。

那么对于使用区块链技术的数字货币来说,是否会体现出如我们上面说的一样,对于系统的稳定性和安全性要求呢?

回顾之前我们聊过的P2P网络,我们可以知道相对于区块链的系统,它并没有中央服务器,所以它的交易是在整个网络中进行的。那么,什么去保证它的稳定性和安全性呢,其实就是——加密和共识机制。

我们来做个比喻:

人与人之间做交易时,我们如何保证它的安全性呢?首先,我们会在交易之前,在自己的脑中去判断交易人的可靠性,通过他之前一系列的行为,往往可以判断成功。所以,在建立信任的基础上,我们才会与之进行交易;然后,我们往往不会在私下里进行巨额的交易,我们会在一个大家都具备公证人时,进行交易;这样保证,你们交易完之后不会耍赖(因为生活中不存在如此强大的人,可以去买通在场的所有人)。

当然了,例子中我们使用了现实生活中的例子,那么,我们在网络上进行交易往往会需要用到加密技术。区块链的加密,从理论上讲,加密货币的交易地址、每一笔交易等都是加密解密中的一部分,破解一个毫无意义,全部破解相当不易,加之P2P网络节点众多,破解一个节点也没有任何价值,所以加密货币的安全级别应该是目前最高的。这样,我们就并不需要去担心交易记录被篡改,因为黑客需要破解的成本非常的高。

那么,至于稳定性呢?或许,没有什么东西可以比P2P网络更加稳定了吧。因为它相当于一个去中心化的系统,不用担心会有服务器宕机影响系统的可能性。

但是,在这里我们需要去了解一下共识机制,这个相当于是一种奖励机制。

我们在做一个比喻:

在早期,实施人民公社化制度的时候,人们劳动的激情就没有了;因为所有产出的产品,人人均分,这种使人们的劳动激情丧失了。后来,改成了按劳分配的机制,之后人们的劳动激情又恢复过来了,因为,勤奋的人可以得到更多的东西。

在区块链中,同样如此。每个参与的节点需要有一种机制,来使得每个节点提供他们的CPU资源以及之后的等等。这样才能使得整个系统正常的运行。但是,这种机制在开发中,都与选择的算法有很大的关系,我们可以在之后在慢慢了解。

我们再来将另一个层面的东西——为何选择nodeJS。

我觉得现在的nodeJS开发的系统,或许稳定性上面还存在的一定问题。不过,对于区块链形成的交易系统来说,其交易速度并不是很理想(1S中只能够交易几笔数目)。所以,可以说它的并发性并不是特别高。所以,nodeJS还是可以支撑起整个系统的。

还有一个重要的原因,就是我是一个前端开发者。所熟悉的语言除了JavaScript,也就只能是Java了。但是,我的Java水平并不足以支持我去开发一个复杂的系统。所以,我会选择nodeJS来进行这样子的实践操作。

结尾

这一篇文章我们或许对区块链技术有了一些初步的了解。同样地,我们应该更加深入地去研究区块链技术,相信它会在将来大有可为的。

如果你对我写的有疑问,可以评论,如我写的有错误,欢迎指正。你喜欢我的博客,请给我关注Star~呦。大家一起总结一起进步。欢迎关注我的github博客