闲来无聊,就把精通比特币又看了一遍,上次读还是在今天1月份的时候,也是快要放假的时候,当时说实话绝大多数都没有看懂,但是还是硬着头皮看完了。现在再看一遍,也是对这半个学期的学习的一个检验,也是对目前学习公链开发进行一个思路整理。看完之后,发现竟然全部能看懂了,也是很兴奋,这半个学期的努力还是有回报的。下面我就简单介绍下比特币的基本原理,以及比特币和区块链的关系等,来帮助更多的人入门区块链,当做这个时代的弄潮儿,高手勿喷哈!
先来说说什么是区块链,区块链就是一个分布式的账本,区块链网络上有很多节点,每个人都有一份一模一样的账本信息,这个信息是通过共识机制来保证一致性的。举个例子,比如小明向我借了1000元,只是口头上的,当我向小明讨债时,他就抵赖,这时候我也没有办法去拿回这笔钱。但是当小明向我借1000元时,旁边有小红、小王、小张,他们都有一个小本子,都记下了小明向我借1000元这件事情,当我再去向小明讨债时,他就没办法抵赖了,这里的这个本子就相当于区块链了,记录了整个网络中所有的信息。还有一种情况是,小明向我借了1000元,在一个月之后还钱,当不按时还钱时,可以将其其他财产归到我名下,将这件事件可以写成一个智能合约,运行在区块链上,就可以确保小明不会再去抵赖了,也确保了我的利益。至于智能合约是什么,简单来说就是一段代码,定义了系列规则,当触发某个条件时,会自动执行一些规则。但是比特币是非图灵完备的,只能编写简单的脚步,对于以太坊就是图灵完备的,采用了一种Solidity的编程语言。
再解释一下区块链和比特币的关系,两者并不相等。区块链是比特币底层技术,区块链一般来说包括网络层、共识层、激励层、应用层,比特币可以说是应用层上的。区块链这个词是技术人员从比特币的白皮书中提取出来的,比特币只是区块链的一个应用,还有以太坊、EOS、Ripple等等很多。
我们就来看看一笔交易,比如Alice向Bob转账1个比特币,在比特币网络上是如何产生、流通到最后被记录到区块链中的,我简化了其中的过程,就是让新手对整个交易过程有个大致的了解。
Alice首先会有自己的比特币钱包,钱包是干嘛用的呢?就是用来管理地址、创建交易、对交易进行签名的。首先Alice在钱包中输入转账的金额1BTC,Bob的比特币地址(20字节)。
这里出现了比特币地址就来谈谈比特币地址,这里需要具备一些密码学知识,非对称加密、哈希算法,椭圆曲线加密,我就不在这里说了,Google上有很多介绍。比特币钱包根据系统自带的生成随机数工具生成一个随机数,对其使用SHA256哈希算法,就会产生一个256位的数字,这个就是私钥,私钥是非常重要的,是你拥有这笔比特币的唯一凭证。再对私钥进行椭圆曲线加密得到公钥,再对公钥进行SHA256、RIPEMD160、Base58Check编码,就得到了我们常见的比特币地址。
接下来钱包就创建了一个交易,发送给自己相连接的节点,节点首先会验证这笔交易,验证成功,这个节点再发送到其相连接的节点,很快这笔交易被传播到了整个比特币网络中。在比特币网络中有一群人是专门收集这些交易,然后对一个复杂的数学问题进行计算,当计算出这个数学问题的答案,就会把这些交易打包起来,然后发送到网络中,其他节点进行验证,验证成功,则这些交易就相当于被比特币网络确认过了。这个过程就是挖矿的过程,打包的交易是进入区块里面,被网络确认过就被连接到了比特币的区块链上,得出复杂数学问题的答案的那个人就会得到比特币奖励。
差不多一笔交易就是这个流程,当然忽略了很多细节方面的东西,比如比特币是基于UTXO模型,而不是账户模型,交易的各种类型等等,大家有兴趣可以去看看精通比特币这本书。
网友评论