我所了解的比特币和区块链git
PS:这篇文章是我以前写在csdn上的,转传到博客园上是为了完善我学习比特币的过程。github
刚接触比特币和区块链技术,被区块链技术将来的发展前景震惊到,一个去中心化的技术何以获得国际社会的普遍关注和发展,这促使我开始了解并学习比特币的相关知识。算法
经济学中有一句话:贸易能使每一个人情况更好,的确,人类文明能够说是在贸易中发展起来的,从最开始的物物交换,到用铜铸币,在到如今以金子为人类共识的可交易对象发展起来的货币政策,每一个国家都在发行本国纸币,以及创建汇率对接国际市场,如今人们的购买力被用纸币来衡量,可是,纸币并不是一个实际的货币,只是人们用纸币进行购物贸易,从而赋予纸币的权力,那咱们也能赋予比特币行驶货币的职能。安全
以前看的一片文章把比特币比做金子,金子自己除了装饰外没太大的价值,只是由于人们对以金子来议价达成共识,加之其产量少,开采人工成本大,故价格贵(抱歉,只是浅显的说明,没有引入市场这个巨大的影响),那么比特币的总量(恒定2100万)也是有限的,就像地球上的天然金矿物资源同样,用完了就没有了,加之比特币的产生须要处理器(CPU,GPU)大量运算,耗费大量电力,如今的比特币矿场就像金矿场同样投入大,收益大(不是绝对的)。微信
咱们平常所用的纸币,是由政府发行,受政府管控,而现代用的网上交易如:支付宝,微信支付都仅是在用户和银行之间架起一个桥梁,接收用户转帐需求,转发给银行处理,其本质仍是在政府的控制和监管下。这样的方式,在如今,老百姓们没人说很差,也很相信政府,对这样的货币流通方式习觉得常,固然,我也是这样,那么比特币与这种传统货币交易方式有什么区别,有什么好处能吸引不少人的青睐呢?网络
上面提到的货币流通模型是这样的,全部帐单都放在一个地方处理,人们高度信任这个地方,这种方式就叫作中心化,而比特币却不是这样的,比特币没有一个中心,也能够说,到处能处理帐单,并且并不须要处理帐单的人之间的相互信任,这就叫作去中心化。工具
中心化的处理方式高度依赖处理中心的处理能力和诚信,处理中心的速度要快,不然人们为了完成交易耗费的时间成本太大,处理中心要诚信,不能修改人们的帐户金额,能力就是建银行,诚信就是要创建监管制度,两者都须要花费高额的人工管理以及业务处理费用,而且,加之人这种生物的特性,在规则制度下也可能会出现漏洞。学习
比特币的非中心化的处理方式能够由下面一张图呈现:区块链
这里每一个Block包含一个帐单,每一个Block由头(Block Header),帐单事务(Block Transactions)组成,Block2中存储有Block1的头信息,因此,能够经过Block2查到Block1的记录,不少帐单的这样处理下来,就造成了一条很长链,这条链就是区块链,而位于最末点的Block,就能知道全部Block的帐单交易信息。微信支付
说了半天,有人可能会问比特币在哪呢,别急,因特网令人们跨越了距离进行信息交流,因特网中有种技术叫作广播,即一个IP能发很同一条消息给其余IP,而其余IP也能发消息给另外的IP,这样来看,帐单从一台设备中发出,理论上来讲,世界上的全部设备都能收到这条消息,那么这些设备就能为帐单生成Block,而没生成一个Block就会获得奖励的比特币,奖励的比特币记录在下笔帐单中(这是个人猜想,尚未仔细专研),这样,只要有初始的一个Block,声明本身有多少比特币,那么就能延长这条链,而参与延长这条链的人就能得到比特币,事实上,比特币的创始人——中本聪就是这样作的。
上面所说的运行机制,其实解决了信任问题,由于每一个参与延长链的人都拥有你的以前交易的帐单,而且,这个帐单是公开的,因此,不会发生你的金额被修改,你的交易无效的问题,这种并不须要专门的机构来维护财产而且安全的方式就是去中心化,而这种延长链获取比特币的方式就叫作挖矿,这样的群体叫作矿工。
实际上,挖矿是件很是耗费资源的事,必需要有足够好的机器,足够多的电力,支持海量的运算,由于上面提到的Block Header是必须知足特殊格式的,即前面几位为0,而这种特殊格式是由一个随机算法Hash来生成的,即你不能控制生成的Block Header是什么,你只能不断的尝试改变一个Block中的幸运数字(这也是你在整个Block中惟一可以改变的地方),来获得特殊格式的Block Header,这就是挖矿的行为,运算大+运气好 你才能抢先一步在别人以前生成Block,而在生成Block以后,当即向外广播,其余正在处理这张帐单的矿工知道已经生成了Block后,验证这个Block是否正确(除了幸运数字之外,其余信息是否有改动,以及这个幸运数字是不是对的),若是正确,当即中止对该帐单挖矿,并将已经生成的Block加在当前Block链的最末尾,继续进行下一张帐单的挖矿。
万一,真的那么巧,在别人挖矿成功的消息还没传到你这以前你就挖到了矿(由于网络有延迟),这时的断定是这样的,你一样能够广播你挖到了矿,其余还未接收成功挖到矿的消息的矿工,仅接收首次传递到设备上的成功消息(多是你的,多是别人的),矿工将Block加到链的最末尾后,继续延长链,此时就出现了两个分支,沿着你的Block和沿着别人的Block。由于你们所处环境不同,你的网速好,所处地区交易量大,周围挖矿的人也多,那么,你的链延长得最快,当你的链远远长过另一条链时(我也不太清楚长的标准是什么),世界全部矿工就认为你的这条链是主链,而舍弃另一条链(至于舍弃另一条链后,那条链的交易怎么处理如今还不清楚,目前的理解是,上面的交易都无效了)。
考虑这种状况,规则建议,只有等到6个矿工确认帐单信息后,再完成支付(这里我也有点懵,支付究竟是怎么一回事),这就能极大程度地保证交易记录不会被更改。
还有一些关于比特币的将来,看了不少文章后,感受只是在说有这样这样的好处或者是劣势,可是对其底层的探究不多,那究竟比特币是真面目是什么,区块链的将来是怎样的一个发展以及它们所带来的为人类社会进步提供怎样的一个工具,我打算学习比特币的源码后再进行思考,下面给出一些我在初探比特币和区块链所看的资料,供你们参考