区块链技术理念
区块链在本质上就是一种记账方法,当然了,并不是通过人来记账,而是通过一种软件,我们暂且成为区块链客户端,上一篇例子中,张三、李四、王五相当于一个个区块链客户端,他们运行在不同的设备上,彼此之间独立工作,通常我们把运行的客户端称之为节点,这些节点运行后,彼此之间会认识一下,是这样认识的:张三认识李四也认识王五,赵六联系到了张三,张三把他认识的人的联系方式告诉赵六,这样赵六也就认识了李四和王五,通过这种方式大家就形成了一张网,有什么事只要招呼一声,立马消息就会传遍整个网络节点,这种跟新闻转发差不多,不需要依靠某一个人,大家就能互通消息了,在区块链软件结构中,这种互相通信的功能叫做网络路由。
在这个网络中,每个节点维护着自己的账本,账本记录着网络中发生的一笔笔账务,区块链技术属于一种技术方法,可以来实现各种不同的业务场景,小到日常记账,大到复杂的商业合约等,记录的数据也就不同,网络中的节点是独立记账,记账的内容要保持彼此一致,所用的方法就是设定一个游戏规则,通过这个规则选出一个记账的节点,如上篇的掷骰子,在区块链中这个所谓的掷骰子成为“共识算法“,就是大家都遵守的筛选方案,现在可以先简单的理解,选出一个节点后一段时间内所有的账务都由这个节点为准,这个节点记录后会把数据广播出去,告诉其他节点,其他节点只需要通过网络来接受数据就可以,接收后根据自己账本进行验证,有没有不匹配和不规范的,如果没问题就存储。
在有些系统里,会考虑到被骰子投中的节点劳动付出,毕竟他是要整理数据,验证数据,打包数据,还有广而告之,这个活挺辛苦的,于是会设计一个激励机制,负责打包数据的节点获得相应的奖励,这个奖励类似于论坛积分,站着技术角度就是一个数据,这个数据可视为奖励,有时候大家会很积极的去争取奖金,希望筛子投中自己,有些区块链系统中在这个环节会设计一种带有竞争的机制,让各个节点去抢,谁能抢到谁就有打包数据的权利及的到这笔奖金,这个竞争过程叫做挖矿。
那么话又说回来,我们将一个个可运行的客户端称为节点,那到底怎么标记不同的使用者呢?通过用户实名注册吗?实则不然,在区块链中,这个地方设计的很有意思,是通过一种密码算法来实现的,具体来说是通过一种公开的秘钥算法的机制来实现的,我们知道,对于一种密码算法来说,无论算法过程是什么样的,最终都会得到一个秘钥,而公开秘钥算法有一对秘钥,彼此配合使用,可以互相用来加解密,私钥自己保管好,公钥就是用来识别用户身份的,一般不会直接使用公钥,不容易让人记住,实际处理的时候会进行转换,转换后会形成一个地址,这个地址就代表着一个用户。
为什么区块链中要用这么奇怪的用户身份表示呢,这里再简单的介绍一下公开秘钥算法的特别能力,之前提到这种算法有一对秘钥,那他们是怎么工作的呢?用公钥加密的数据必须用对应的私钥进行解密,而用私钥加密(通常称为签名)的数据必须对应公钥来解密,这个特点发挥很大的作用,比如,张三要发送一张支票给李四,怎么传送呢?于是张三想了一个办法,在他的支票上用李四的公钥加了个密,然后再签上自己的名字(自己的私钥签名),这时候就算其他人拿到这张支票也没什么用,只有李四的私钥才能解开这个支票,这种功能在区块链中称为脚本系统。
现在我们知道了,区块链的技术理念,其实就是大家共同参与记账,通过一种规则来不断的选出账务打包者,其他节点接受验证,并且每一个用户都有一对秘钥表示自己,通过脚本系统的功能实现在公共网络中定向发送有价值的数据。
原文地址:https://www.cnblogs.com/gslblog/p/8734030.html