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