区块链的运行原理是什么?
我们以比特币的区块链系统为例。比特币一个新区块诞生的时间系统设定为十分钟。
1.一笔交易产生以后,为了让全网承认有效,必须先广播到区块链网络中其他参与的节点(链接的计算机);
2.每个节点要正确无误地给这十分钟的交易都盖上时间戳,并且放进这个区块;
3.如果一个节点解开了随机数那道数学题,拥有了合法区块记账权,这个节点就会向全 网公布他这 10 分钟所有盖上时间戳的交易,并由全网中其他参与的节点来核对;
4.比特币系统会给赢下合法区块记账权的节点以奖励,他广播以后,别的节点就要核对这个区块记账的准确性。别的节点其实同时也在解那道数学题,同时也在盖时间戳,只不过他们没有在那道数学题上算得更快。也就是说,这个区块他们赢不了奖励了,他们只好在下一个区块上想办法。
5.一般来说,每一笔交易,必须要经过 6 次的确认,也就是要通过 6 个的 10 分钟记账,才能在系统里被承认为是合法交易,一次的记账是不被承认的。
区块链记录哪些信息?
我们说过区块链是一个分布式的大账本,每一个区块就相当于是这个账本中的一页。
目前,区块链的区块主要记录了区块头、交易详情、交易计数器和区块大小等数据。:区块头是区块的前 80 个字节,区块头包含的信息我们已经了解了。
区块内部的数据如下。
1.交易详情:详细记录了每笔交易的转出方和收入方、金额及转出者的数字签名,这是 每个区块内的主要内容;
2.交易计数器:这记录的是每个区块中发生的交易数量;
3.区块大小:表示每个区块数据的大小,当前每个区块的大小限定在 1M 以内,但是后面区块很有可能会扩容,超过 1M。
如何实现完整备份?
因为区块链是由连接其中的电脑共同维护的,对于已经产生的区块,所有连接进来的电脑都有一份完整的区块链备份记录。
目前备份的特点:
1.现有备份最大的问题可能就是安全了。我们无论是自己存储,还是存在云端,重要的信息都需要加密,以免信息被泄漏出去。但我们的加密很容易被高明的黑客破解,这是现有备份的一个难题。
2.现有的备份也可能被内部的一些人更改,这种更改不容易被发现,而一旦出现更改,后期的审计追踪就会出现很大的困难。
3.如果我们的信息可以存储在很多台电脑里,那么一台电脑出了问题,还可以调用其他电脑来查看,可现实中,我们无法做到串联尽可能多的电脑。自己的有价值的信息存在别人电脑里也不安全。
区块链就可以解决这些问题。
1.区块链很重要的技术手段就是加密,存储时加密的信息不会被查看和泄漏,只有拥有 信息密钥的人,才能查看这个信息。
2.区块链中的信息是基本上不能被篡改的,这就避免了有内部人员更改的可能性。
3.区块链中的信息在存储时没有中心,所有参与进来的电脑都是一个节点,都有信息的 记录,无需刻意地将信息分布式储存,就能达到分布式储存的效果,极大避免了单一电脑损坏造成的信息丢失。
4.在区块链中存储也是很廉价的。现在我们将信息存储在云端,都会被收一定费用,这 费用也不低吧,而存在区块链中,我可以告诉你的是,它的存储价格比存在云端这种还要低 90%。
存储和恢复信息时我们需要做什么呢。
1.要存储文件的源端设定备份文件,然后加密发送文件数据,提交给区块链中所有相关 的节点;
2.各个节点接收到文件,并且进行存储;
3.如果需要恢复数据,源端发送请求,计算节点根据请求,在获得解密数据后,就能实 现数据的恢复。
如何进行交易广播?
刚才我已经说了,链接到区块链中的电脑端都是一个节点,所有节点组合在一起就构成一个区块链网络。在区块链网络中,每个节点都有一个分布式的数据库,用来管理交易的信息。
当一个节点发起一笔交易以后,这个节点要立即向附近的节点进行广播,附近的节点会检查你的交易是否有效,如果有效,表示他们同意这次交易。在同意的基础上,这些节点又会将这笔交易再向附近的节点进行广播,这样一传十,十传百,很快整个网络就会确认这笔交易,并且写入区块中,交易就算完成了。
在区块链中,验证速度最快的节点是能凭借工作量获得一定奖励的,这就解决了所有节点发布的问题。就像比特币系统的奖励比特币。
如何进行数字签名?
签名是对我们进行交易的认可,数字签名也是一样,只不过你把签的文字变成了一串字符而已。
一个数字签名相当于是一个数字身份,交易时由转账的转出方生成,就好比银行的流水,数字签名就是用来验证这笔交易确实是由转出方发起的。
我把这个证明过程浓缩成一个栗子。
张三要发起一笔转账,张三先将这个交易进行数字摘要,缩成字符串,然后用自己的私钥对字符串加密,形成数字签名。完成后,张三要将这个交易向全网进行广播。别的节点用张三的公钥进行验证,如果验证成功,那这笔交易就是可信的。
就像你去银行转账,只要输入密码,钱就转出去了,是一样的道理。只不过区块链中,动用了公钥和私钥,程序上复杂一点,但有电脑代劳,也不打紧。
如何实现加密与解密?
区块链中有两把钥匙,一把公钥,一把私钥。这两个钥匙是通过一种数学算法得出来的,有关联的一对钥匙。简单来说,就是私钥可以生成公钥,而公钥是无法推导出私钥的。
在区块链中,公钥是公开的钥匙,是要公开发行配送的,只要有要求谁都能取得。私钥就是私人才拥有的了,就像你的保险柜钥匙,你不可能拿给别人保管吧。
公钥和私钥是配对的,在区块链中,如果利用公钥给信息加密,就必须要用私钥才能打开,如果用私钥给信息加了密,则必须用公钥来打开,否则是不能解密的。这个系统的优势是两个用户能够安全地沟通,而不用互相交换秘密钥匙。例如一个人要将一条信息传给另一个人,而这信息的内容是保密级别的,为了防止别人打开,送信者用公钥加密,而要解密就必须要收信者动用自己的公钥才行。我举个栗子。
张三给李四转了一笔钱,然后给大家广播说我转了钱了啊,大家把它记在区块链中。可这时王麻子跳出来说:“我为什么相信你转了钱啊,你有证据吗。”张三就说:“我的公钥在这儿呢,这个公钥可以证明我是有私钥的人,你看这个信息加了公钥,我真的转了。”然后王麻子就将这笔交易记录下来了。
区块链中的交易记录能撤销吗?
区块链中有个很大的特点,那就是交易是不可撤销的。
区块链只会向前生成区块,不会向后取消区块。也就是说,区块链中是没有后悔药卖的。还有一点,区块链中是点对点的交易,所有交易都要广播。而且区块链是全网记账,交易明细既记在你的电脑账本上,也记在别人的电脑账本上,但是别人是不知道你是谁的,就算你要想撤销,你也不可能跑去连入其中的电脑上都删除这条交易吧。
领取专属 10元无门槛券
私享最新 技术干货