最近开始学习区块链的知识,以文章来记录自己的学习历程,一边总结下,新手入门文章,如果有什么理解不对的地方希望大家指正。
另外给大家推荐下我正在使用的资料
1.区块链-从数字货币到信用社会
2.比特币白皮书
3.权益证明白皮书
学习区块链,需要不断的自己查资料,哪里不会查哪里,但是希望大家不要过于纠结某个词的概念,有时候就是水到渠成~
在此希望可以跟大伙一起进步,话不多说,我们进入主题
一:什么是区块链?
简单来说,区块链就是一个共享的去中心的分布式数据库,具有如下特点:
1.公开透明
2.去中心化
3.匿名性
4.信息不可篡改
5.无信任成本
我们通过一个例子来说明以上特点;
比如回忆一下你在网上购买一本书的流程:
- 第一步,你下单并把钱打给支付宝;
- 第二步,支付宝收款后通知卖家可以发货了;
- 第三步,卖家收到支付宝通知之后给你发货;
- 第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;
- 第五步,支付宝收到通知,把款项打给卖家。流程结束。
好了,现在让我们回到之前的问题:
1.怎么保证所有的人都能准确收到发送节点发送的消息呢?如果网络中存在恶意的节点,消息被篡改了怎么办?
要解释这个问题,就不得不提到拜占庭将军问题了。具体的问题的描述,笔者就不多言,拜占庭将军的问题实质可以理解为在一个分布式的系统里,怎么抵抗干扰因子(叛徒)带来的消极影响,保证消息传递的一致性以及正确性。
这里只粗略说关于这个问题的两种解法结论。详细可参考以下链接:http://www.8btc.com/baizhantingjiangjun
一:口头协议
首先,我们明确什么是口头协议。我们将满足以下三个条件的方式称为口头协议:
A1:每个被发送的消息都能够被正确的投递
A2:信息接收者知道是谁发送的消息
A3:能够知道缺少的消息
简而言之,信道绝对可信,且消息来源可知。但要注意的是,口头协议并不会告知消息的上一个来源是谁。
二:书面协议:
书面协议就是在口头协议的基础上,添加了以下两个条件
(a)签名不可伪造,一旦被篡改即可发现,而叛徒的签名可被其他叛徒伪造;
(b)任何人都可以验证签名的可靠性。
简而言之,消息来源可追溯,可验证
我们假设总节点数为m,反叛节点数为n,在口头协议的算法下,至少要保证m>3n拜占庭将军问题可解。
在书面协议算法下,只要保证消息交换的充分性,假设签名次数为k,则k>=m时,问题可解。
另外大家注意,以上两种解法并不能真正解决拜占庭将军问题,我们没有考虑消息发送的并发性,真正解决这个问题的是区块链,它为发送信息加入了成本,降低了信息传递的速率,并加入了一个随机元素以保证在一个时间只有一个城邦可以进行广播,这个就是工作量证明。
具体请大家参考之前的链接,笔者只是在为大家划重点~
2.为什么别人会给你记账?难道账本不要钱?记账不需要花费精力吗?
以比特币为例解释这个问题。首先我们来看中本聪比特币白皮书中的一段话:
我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU的时间和电力消耗就是消耗的资源。另外一个激励的来源则是交易费(transaction fees)。如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。
3.还有为什么具有匿名性?如果匿名,怎么验证消息发送的正确性?
文中很多东西可能说的比较模糊,如果有和我一样的正在自学的朋友,希望可以多多交流心得,如果有什么错误,希望大神们不吝赐教!~