什么是比特币
比特币是一个数字货币生态系统。狭义的“比特币”代表系统中的货币单位,用于储存和传输价值。
比特币是一种协议、一种网络、一种分布式计算创新的代名词。比特币系统由用户(用户通过密钥控制钱包)、交易(每一笔交易都会被广播到整个比特币网络)和矿工(通过竞争计算生成在每个节点达成共识的区块链,区块链是一个分布式的公共权威账簿,包含了比特币网络发生的所有的交易)组成。
比特币的核心是一条记录了所有历史交易区块链(Blockchain)和维护这条链条的一个去中心化P2P网络。网络中的节点都拥有这条区块链的拷贝,当有新的区块产生并被添加到其中一个节点,很快这个信息就会被扩散到网络中,其他所节点也会收到新生成的区块并添加到自己的区块链中。
比特币系统怎么查询每个钱包的余额?
比特币系统是一个庞大的记账系统。每一笔交易都被系统认证之后,打包进入一个区块,然后写入区块链条中。每一笔单独的交易内容,记录了多少比特币,从一个比特币钱包转移到了另外一个钱包。比特币钱包是一个虚拟的概念,它可以用来查询余额,收款和付款。比特币的查询与支付功能,都需要依靠整个网络来完成。
任何一个比特币钱包拥有几个属性。一个唯一的私钥密码,公钥密码和收款地址。当查询钱包余额时,只要历遍整个区块链,发现那些收款地址是属于该钱包的,而且该笔收款是没有被用于历史支付的所有比特币之和,则为该比特币钱包的余额。
比特币是怎么产生的?
比特币的产生是伴随着一个集体劳动过程产生的,并且主要作为对参的玩家的奖励。这里说的劳动,也就是常说的“挖矿”的过程。挖矿其实是用于验证网络中产生的比特币交易的合法性。合法性验证主要解决的问题是:1、谁有权利去使用这个钱包里面的比特币。2、怎么去防止一个比特币被使用多次。
怎么验证谁能使用钱包里的比特币?
问题1使用的是比特币钱包私钥和公钥的非对称关系来验证的。一般来说,我们可以使用钱包的公钥来接受转账。当需要使用转入该公钥地址的比特币时,只有私钥可以完成一个合法的签名,并向全网公布,我将转移走存储于该公钥地址的比特币,这里是我的合法签名证明我有权利使用。全网的比特币用户,可以使用该签名和公钥地址进行验证该笔交易是否合法。
比特币怎么防止Double Spend?
Double Spent 是所有货币交易系统需要解决的问题。前期的虚拟货币系统,一般是通过中心化的结算系统来做交易的去重。对于一个去中心的,彼此不信任的系统怎么防范Double Spend? Double Spend 的场景是钱包A里的比特币,如果有两笔交易同时将它转账给甲和乙,其中有一笔交易肯定是非法的,是得不到认可的。以上两笔交易被广播到比特币网络之后,他们以不同的先后顺序进入一个“没有被加入BlockChain”的待验证的池子里。这时候矿工们,会一一验证这些交易,于此同时需要解一道比较难的数学题 Hash(Block的字节 + 随机字段) < 某个值。第一个解出这个题的矿工,即挖矿成功,本次被证过的交易同时也被打包,生成新的Block,并加入到区块链当中。按照题设,如果转账给甲的交易率先被验证,转账给乙的交易就不能被验证,因为A里面的钱已经在前面生成的区块中被验证过的交易使用了。所以Double Spend就被防范了。极端情况下,因为挖矿时,矿工们不是验证同一批次的交易,有可能两笔转账同时被两个矿工验证并生成区块,传递到网络中。
这个时候就区块链就产生了分歧,生成了红色区块和绿色区块。当新的矿工分别在红色和绿色区块上努力延长的时候,总会有新的胜出者。
当粉色区块在绿色区块上诞生,红色区块的矿工就会立即放弃,转而在新的粉色区块上继续延长。这个时候红色区块就变成无效区块。包含在里面的交易也就无效了。像举例的单区块分叉每周都会发生,而双块分叉则非常罕见。
比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。