区块链的运行原理是什么?
我们以比特币的区块链系统为例。比特币一个新区块诞生的时间系统设定为十分钟。
1.一笔交易产生以后,为了让全网承认有效,必须先广播到区块链网络中其他参与的节点(链接的计算机);
2.每个节点要正确无误地给这十分钟的交易都盖上时间戳,并且放进这个区块;
3.如果一个节点解开了随机数那道数学题,拥有了合法区块记账权,这个节点就会向全 网公布他这 10 分钟所有盖上时间戳的交易,并由全网中其他参与的节点来核对;
4.比特币系统会给赢下合法区块记账权的节点以奖励,他广播以后,别的节点就要核对这个区块记账的准确性。别的节点其实同时也在解那道数学题,同时也在盖时间戳,只不过他们没有在那道数学题上算得更快。也就是说,这个区块他们赢不了奖励了,他们只好在下一个区块上想办法。
5.一般来说,每一笔交易,必须要经过 6 次的确认,也就是要通过 6 个的 10 分钟记账,才能在系统里被承认为是合法交易,一次的记账是不被承认的。
区块链记录哪些信息?
我们说过区块链是一个分布式的大账本,每一个区块就相当于是这个账本中的一页。
目前,区块链的区块主要记录了区块头、交易详情、交易计数器和区块大小等数据。:区块头是区块的前 80 个字节,区块头包含的信息我们已经了解了。
区块内部的数据如下。
1.交易详情:详细记录了每笔交易的转出方和收入方、金额及转出者的数字签名,这是 每个区块内的主要内容;
2.交易计数器:这记录的是每个区块中发生的交易数量;
3.区块大小:表示每个区块数据的大小,当前每个区块的大小限定在 1M 以内,但是后面区块很有可能会扩容,超过 1M。
如何进行交易广播?
链接到区块链中的电脑端都是一个节点,所有节点组合在一起就构成一个区块链网络。在区块链网络中,每个节点都有一个分布式的数据库,用来管理交易的信息。
当一个节点发起一笔交易以后,这个节点要立即向附近的节点进行广播,附近的节点会检查你的交易是否有效,如果有效,表示他们同意这次交易。在同意的基础上,这些节点又会将这笔交易再向附近的节点进行广播,这样一传十,十传百,很快整个网络就会确认这笔交易,并且写入区块中,交易就算完成了。
在区块链中,验证速度最快的节点是能凭借工作量获得一定奖励的,这就解决了所有节点发布的问题。就像比特币系统的奖励比特币。
如何进行数字签名?
签名是对我们进行交易的认可,数字签名也是一样,只不过你把签的文字变成了一串字符而已。
一个数字签名相当于是一个数字身份,交易时由转账的转出方生成,就好比银行的流水,数字签名就是用来验证这笔交易确实是由转出方发起的。
我把这个证明过程浓缩成一个栗子。
张三要发起一笔转账,张三先将这个交易进行数字摘要,缩成字符串,然后用自己的私钥对字符串加密,形成数字签名。完成后,张三要将这个交易向全网进行广播。别的节点用张三的公钥进行验证,如果验证成功,那这笔交易就是可信的。
就像你去银行转账,只要输入密码,钱就转出去了,是一样的道理。只不过区块链中,动用了公钥和私钥,程序上复杂一点,但有电脑代劳,也不打紧。
如何实现加密与解密?
区块链中有两把钥匙,一把公钥,一把私钥。这两个钥匙是通过一种数学算法得出来的,有关联的一对钥匙。简单来说,就是私钥可以生成公钥,而公钥是无法推导出私钥的。
在区块链中,公钥是公开的钥匙,是要公开发行配送的,只要有要求谁都能取得。私钥就是私人才拥有的了,就像你的保险柜钥匙,你不可能拿给别人保管吧。
公钥和私钥是配对的,在区块链中,如果利用公钥给信息加密,就必须要用私钥才能打开,如果用私钥给信息加了密,则必须用公钥来打开,否则是不能解密的。这个系统的优势是两个用户能够安全地沟通,而不用互相交换秘密钥匙。例如一个人要将一条信息传给另一个人,而这信息的内容是保密级别的,为了防止别人打开,送信者用公钥加密,而要解密就必须要收信者动用自己的公钥才行。我举个栗子。
张三给李四转了一笔钱,然后给大家广播说我转了钱了啊,大家把它记在区块链中。可这时王麻子跳出来说:“我为什么相信你转了钱啊,你有证据吗。”张三就说:“我的公钥在这儿呢,这个公钥可以证明我是有私钥的人,你看这个信息加了公钥,我真的转了。”然后王麻子就将这笔交易记录下来了。
• END •