懵懵懂懂“进入”区块链世界有三个月了,三个月里随着各种币值的涨跌,我的内心也发生的巨大的波动,春节期间,我投资的资产更是进入了熊市。我突然反应过来,这三个月来,虽然我的资金进入了区块链世界,但是我根本没有配得上进入区块链世界的智商和情商,不客气的说,甚至不具备进入任何投资世界的能力。因为,真正的投资,所有工作应该在投资之前的一刻完成,投资之后就应该是忘记这笔资金,然后该干嘛干嘛去,更不会产生心情的巨大波动。
把自己的资金投入到一个完全不了解的领域,然后把注意力浪费在关注短期的波动和韭菜们的观点中,既费钱又费神,想想都觉得可怕,冷汗直冒。
也还好我胆小,投入的资金非常少,但是浪费了注意力真是不值得,既然投资了,就要对投资的东西有深入的理解,更何况区块链可能跟互联网一样变成未来的趋势,于是我利用旅行的间隙阅读了Andreas M Antonopoulos的《精通比特币》,算是对比特币和区块链世界的一个入门。
刚开始阅读这本书时,由于缺乏目标,同时我又是一个缺乏计算机背景的外行初学者,感觉非常的困难,每个字都认识,但是放在一起就是不知道是什么意思。后来想想,如果我一个不从事计算机工作的人,想达到跟程序员一样的水平是不明智的,其实我并不需要完全理解那些深奥复杂的计算机语言和函数,我的目的是了解比特币是什么?他如何运作?有没有价值?这才是关键点,于是我列出了几个基本的问题,并从书中找答案,渐渐的对比特币和区块链有了一些粗浅的认识。
比特币是什么?
比特币是利用区块链技术而实现的去中心化的、点对点的、加密数字货币体系,狭义的比特币指的是一种数字货币。
比特币的原理是什么?
比特币本质上是一个分布式账本系统,你想想现实中我们使用的银行账户,是不是一个账本?你的银行对账单是不是有借方有贷方?当一笔资金从B账户转入A账户,银行就会在包含所有交易的总账上记录:一笔资金从B账户转入了A账户,同时在B账户上记录一笔资金的转出,在A账户上记录一笔资金的转入。
所不同的是,银行的账本系统,所有的用户进行交易,都要向银行这个中心发出指令,经由银行这个中心进行账簿登记(转账),如果银行的系统崩溃,或者出现腐败现象,资金有可能损失。而比特币的这个货币系统,通过代码的形式,把交易的规则以及货币产生的规则,固定在网络中,由整个比特币网络根据规则来实现货币的转移支付。
比特币网络由无数的具有计算能力的节点构成,每一笔交易发生后会向比特币网络广播,系统每10分钟会形成一个区块,这个区块包含了这10分钟之内发生的所有交易信息。网络中的挖矿节点根据既定的规则,对区块中的交易进行验证,区块本验证后,放到区块链中,区块中交易才会被确认,写入账本系统。账本系统中的数据,由很多全节点储存,任何一个单一的节点出现问题,都可以从其他节点恢复数据。
交易的验证过程,是一个利用哈希算法(某种数学函数)解题的过程,这个算法有一个非对称的特点,就是解题很困难,但是一旦得到答案以后,非常容易认证。
比特币网络设置为解出题目的节点能够获得比特币奖励,有些交易还能够获得矿工费(类似银行的转账费用),于是网络上的节点竞争来解答这个题目,解出题目后,发送到网络由其他节点进行验证,验证后就将将交易放到区块链这个大账本中。
由于这个解题和验证的过程是在奖励机制的作用下,由网络节点自发形成,而且解题规则和验证规则都已经既定,所以不需要信任任何一个中心节点,只需要信任整个网络。同时,由于如果任何一个节点通过验证后发现答案不对,都会拒绝将该笔交易放到区块链中,所以,理论上来说,需要控制51%以上的计算能力,才能篡改交易,在这个如此分散的比特币网络中几乎不可能,成本也很高。
打一个比方来说:比特币系统就像切叶蚁这种群居动物,每支蚂蚁个体仅仅遵循一些社会互动和化学气味的简单规则,就构建出了一种庞大而复杂的动物社会。比特币系统的每个节点都遵循特定的密码学加密规则和验证规则,记录着无数的交易,实现了区中心化的货币系统。
作为数字货币的比特币,能实现什么功能?
所有现实法定货币能实现的功能,比特币都能实现:价值交换、价值尺度、价值储藏等。
比特币相对于传统的货币,有什么特点和优势?
我认为相对于传统货币,比特币有3个优势:
1、去中心化,没有任何个人或者组织能够操纵,不存在人为风险。
2、由于比特币的总量既定,且每开采210000个区块(10分钟一个,大约历时4年),货币发行的速率降低50%(也就是对矿工的奖励减半),所以比特币不会发生通货膨胀。
3、比特币无限可分,有利于交易。
比特币如何实现安全和加密?
比特币的交易安全是通过密钥来实现的,密钥是成对出现的,包含私钥和公钥。私钥通过单项加密函数可以生成公钥,但是反过来知道公钥无法找到私钥。公钥可以生成比特币地址,类似于支票上的收款人账户,私钥可以生成数字签名,只有经过签名的交易才能被网络执行,类似于我们转账的签名或者输入密码。由于私钥生成签名也是一个不可逆的过程,因此在网络上看到这个签名,并不会暴露私钥。
从计算机语言上来看,每一笔交易的输出,由客户端同时生成锁定脚本和解锁脚本,锁定脚本可以理解为支付这笔货币的条件,解锁脚本是用来解决或满足支付这笔交易的条件的。锁定脚本一般由钥公来生成,解锁脚本由公钥对应的私钥来生成。比特币网络验证这笔交易的解锁脚本满足锁定脚本条件后,交易才被确认。
为了确保密钥不泄露,用户需要拥有一个比特币钱包(数字钱包),这个钱包用来保管公钥和私钥。
那么问题来了,既然私钥生成公钥和签名的函数是不可逆的,那么网络如何验证:
1、私钥生成的解锁脚本(签名)
2、私钥生成公钥,再由公钥生成的锁定脚本(条件)
这两者的匹配,从而确定客户对比特币的支配权?是否因为区块链技术采用的加密函数内部有一个严密的逻辑,使得由同一私钥衍生的解锁脚本和锁定脚本必然匹配,也很容易验证,但是却无法追索到私钥?如果真是这样,那么发明这个函数的人真是太厉害了。
以上是我读《精通比特币》总结出的一些关于比特币的知识,很多说法不是很恰当,欢迎各位专家来喷,也欢迎各位跟我一样刚入门的朋友们一起研究。