什么是货币呢?货币就是商品(包括服务)交换的媒介。现在我们通行的货币是由有信誉的银行发行的,基本上是由其信誉来担保的。只要用的人都认可,那么我们就可以用它来交易。货币有一定的保值特性,我把我的劳动/服务/所有的商品换成货币后,银行担保我在日后的某一天,我还可以用它交换会差不多等值的东西。这个保证的前提是,银行不会滥发新的货币以及大家都信任这一点。
以前,我们用贵金属做货币。因为贵金属产量不高,货币新增加的速度有限,而经济体在不断增大,市场需要更多的货币来让商品尽量的流通。有需求就有价值,从这个意义上来说,贵金属本身制造别的东西具备的价值是次要的,经济体需要货币来流通商品这个需求才是主要的。而贵金属产量有限,且曾经流通着的贵金属货币由于各种原因会退出市场,那么即使是新造的贵金属货币也有同样甚至更高的价值。
简单说,我的理解就是,现在世界上所有的BTC背后都是用运行计算机的能量产生出来的,它们的总价值,(到现在一共有大约12w组BTC被生产出来,每组50个,市场价格大约7.3美金一个),应该是少于消耗掉的能源的总市场价值的。不过我想,用于生产BTC的能源大都原本就是不用也被浪费掉的资源。
一个没有中心节点的“银行”是怎么让大家信任并工作起来的呢?
答案是,这个p2p网络上每个节点都记录了BTC诞生以来的每笔交易的详单,并从中可以推测出每个BTC唯一的属于谁。这样你接受一笔交易时,就能知道别人给你的钱是不是合法的。
从最基本的说起:
每个帐户其实就是一对公私匙,有私匙的人就是帐户的主人。如果A要给B转一笔钱,A就把钱的数量加上B的公匙,用自己的钥匙签名。而B看到这个签名,就可以了解,的确是A转给了他如数的BTC。
那么这笔交易需要一个见证人,担保交易发生过。这样,以后B想用这笔钱的时候才是合法的。担保人就是整个使用BTC的网络。
A在发起这笔交易的时候,必须把签过名的交易单尽量的广播到p2p网络上,最终会让每个节点都知道这件事。B从p2p网络上不断的收到别人的确认信息。当它收到足够多的确认信息后,就认为A的确发出了这条交易单。这以后,B就可以自由使用这笔钱了。
当B使用A转给它的钱给C时,也会广播给足够多(最终所有人都收到)的人让他们担保。每个担保人只有确信B有足够多的钱可以支付的时候才做确认。本质上,BTC网络并没有记录每一块钱属于谁,它记录的是从诞生起到当前的每一笔交易,并推算出每个帐户里有多少钱。任何人试图确认一个交易单时,它需要确认的是转出帐号上有没有那么多钱。
Bitcoin需要解决的核心问题是,如何避免一笔钱被花两次。
整个帐单序列是一环套一环的。每个人在完整的全局帐单上签上新的一笔的时候,都需要利用前面信息生成后面的。这个帐单序列被称为chainofblocks。每个block里面包含有若干条经过确认并hash签名(难以伪造)的交易记录。每个block都和全局表上的上一个block有关联。每条帐单都会通过p2p网络最终被转发给制造新block的节点上。
这个制造新block的过程被叫做mining,制造新block就是把最近收到的帐单打包在刚制造的block里。这个打包的过程即制作的过程,只有极其稀少的几率被制造成功。(你可以理解成把新收到的帐单合在一起,一次成型不可修改,如果制造失败就要再来一次)一旦制造成功,你就把新的block(被认为是对老的全局block链的延续)广播出去。
这个全局帐单表会越来越大,block链越来越长,在最新的部分,必然有许多分茬。这是因为p2p网络的mining过程是分开并行进行的,每条新帐单也不能立刻广播给所有的节点。每个mining的节点都有责任把他新收到的,在他认可的老的全局帐单上不存在的帐单,合在他准备制造的新block中。一旦新block被制造出来,就立刻广播出去,争取得到更多人的认可。主要是得到那些想mining的人的认可,这些人会在这个block的基础上制造新的block。
不过,算法参数决定了,新的block产生速度很慢,如果你的帐单被多达6个人确认,基本上就保证了它合并到的那份全局帐单,就是p2p网络全体认可的。
所以更恰当的比喻是买彩票。一个每10分钟开一次的彩票。你不停的花钱买,10分钟内开中了就是你的,开不中先买的都作废,然后下一轮。
这个算法就是,为你想保护的信息,找到一串数字,附加上去后,使用某种公认的hash算法,比如SHA-2,算出一个hash值。如果hash值由一长串0打头(具体多少个决定了难度),那么就成功了。
为一段信息,找到这串数字,在目前来说,除了暴力尝试没有什么好的方法。也就是随机更换数字,换一次就hash一次比对。在一个可以预期的尝试次数后,一般都能找到想找的数字。
每个想mining赚BTC的人,不停的从BTC网络上监听信息。如果有人发布了新的合法的block,他就合并到本地的全局表里。并重置自己的计算过程,从新得到的block开始。如果有新发布的交易单,也记录下来。不断的把最新的block的hash值、新收到的交易单,自己获得50BTC的那条奖励单合并在一起,计算SHA-256,看看结果是否满足条件。一旦满足,就把这个新的block广播出去。
当足够的人认可它,(以它为基础计算后面的block),他也就获得了那50BTC。
为了匹配BTC的经济规模。所有的Bitcoinclient都被设置成,每210000个block,生产新block的人被认可凭空获得的BTC数量比之前的少一半(如果这个时候他还在包内写上自己获得50BTC,其他人不会确认他的这个block)。这会让BTC的总量增速变缓。新的block产生的速度是由难度来调节的。这个难度会由p2p网络根据最近生产block的速度自动调节。所以即使日后计算能力增加,也能保证大约10分钟一个的速度。
而且,随着生产新block的收益减少,愿意贡献自己的CPU来mining的节点也会变少。(如果减少太多,只需要减少难度即可)
总有一些BTC会消失,主要是那些帐号的私匙丢失了,没有任何人可以转移走帐户上的钱。不能流通的货币就不是货币了。但最终BTC总体会达到一个比较大的规模,准确说是两千一百万个。但BTC本身是可以切割的,比如你可以支付给别人0.01个BTC。所以BTC本身会升值,总数也一直够用。