比特币是在计算什么(比特币是在计算什么东西)

一、比特币是什么,有哪些特点?

一种P2P(点对点)形式的虚拟货币。去中心化的记账系统;

去中心化:任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护、共同管理;

开放透明性:系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有 人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统 信息高度透明。

自制性:人为不可干预,决定得超过一半的人去做;区块链采用基于协商一致的规范和 协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由 安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

信息不可篡改特性:一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能 够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此 区块链的数据稳定性和可靠性极高。

匿名性:由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的 程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自 己产生信任,对信用的累积非常有帮助。

可溯源性:因为公开透明和不可篡改的特性,所以每一笔交易信息都可以追溯其来源!

二、比特币原理

数据存储在网络节点里,比如每一台电脑里;那么问题来了,数据在每一台电脑里,已 谁的为准,数据被篡改了怎么办;

1.数据的验证

假如说如下数据:

这些数据分别存在王二、张三、李四、赵五的电脑里。可能会有人篡改数据,比如说张三把余额改为300了,如何验证张三的数据为假的呢。

a.可以一一核对,就是把王二、张三、李四、赵五的数据一条一条核对一遍,就会发现张三电脑里的张三这条数据与其他人电脑里的数据不一样,但这样做效率太低(这只有四条数据,如果有一百万条数据,效率就太低了)

b.介绍第二种之前先了解一下Hash函数(类似于常用的MD5加密)

哈希函数:Hash(原始信息) = 摘要信息

哈希函数的特点:

①同样的原始信息用同一个哈希函数总能得到相同的摘要信息

②原始信息任何微小的改变都会得到不同的摘要信息

③从摘要信息无法逆推算出原始信息

首先会对张三的数据进行Hash加密,假设 Hash(数据) 得到4564asdasdasd6ABA;

加密李四、王二、赵五的数据得到 789789attdghjfg7A,比对摘要信息就会发现张三的数据不对

这样的话对比摘要信息就会比对比原始数据信息高效的多,进一步提高效率,

区块:序号+时间戳+Hash值+交易记录

假设一个区块的Hash值为789789attdghjfg7A;比如又产生了一些交易,形成新区快的时候符合 Hash(789789attdghjfg7A,新的交易数据) = 12323as4d56a4sdS,然后对比的时候对比新的摘要信息,如果新的摘要信息正确,说明前一个的账本数据也是正确的。这样的话就会形成一个链状的结构,这样的话只需要核对最后一个区块的信息,只要对比最后一个的信息正确,说明前面区块的信息都是正确的,及整个区块链的信息是正确的。这样效率就会提高。

2.所有权问题

一般的银行卡都有卡号和密码,账号和密码对的上就可以支付。而比特币的账号相当于一个地址,密码是私钥,付款是从一个地址付款到另一个地址。而且地址与私钥是一个非对称的关系,即:

Hash(Hash(fun(私钥))) = 地址

fun是一系列特定算法。

如何交易:

第一步:对交易进行Hash得到交易摘要

Hash(

‘{“付快地址”:”ahsuidhujkashduikhasidgh”,

”收款地址”:”asyduihiuqawherihiahdi”,

”金额”:”1btc”}’

) = 456as4d646a5s4d66

第二步:用私钥对摘要进行签名

Sign(‘交易摘要’,’私钥’) = 签名信息

完成两步之后就广播,告诉周围的节点,我(付款地址)给他(收款地址)付了1btc,签名为xxx...,周围的节点收到之后,先验证

如果 Verify(签名信息,付款方地址) = 交易摘要 就会写入账本,继续向周围的节点广播;否则记账失败。

签名和验证是一个可逆的过程

Sign(交易摘要,私钥) = 签名

Verify(签名,付快地址) = 交易摘要

比特币安全性只受私钥控制,而不像银行里的钱,银行可以冻结。

3.为什么记账?(挖矿)

记账:Hash打包过程,这个过程是需要消耗资源的,既然需要成本,那么节点为什么要参与记账呢?在完成记账之后是会得到比特币奖励的(这个奖励其实就是比特币发行的过程),既然有奖励大家都会去记账,那就会出现记账不一致,所以会有一个规则来限定大家记账。

规则:一段时间内只有一个人可以记账成功;

通过解决密码学难题(即工作量证明)竞争获得唯一记账权

其他节点复制(第二步的结果)记账结果

工作量证明:

Hash(上一个Hash值,交易记录集) = asdfasdasdad56161

如果只是这样的话,都可以很快的记账,为了体现记账的难度,交易记录的值必须要以n个0开头。

Hash(上一个Hash值,交易记录集,随机数) = 00000000000000000asdasda45456

就是不停的跟换随机数得到以n个0开头的记录值。

交易记录集:

收集广播中还没有被记录账本的交易

交易的有效性验证

添加一笔给自己的转账的交易(挖矿奖励)

4.已谁的账本为准?(共识机制)

第一个验证正确的有优先的记账权,就可以打包区块,因此获取奖励。

如果两个节点同时完成工作量证明,使用谁的区块?

只认可累计工作量最大(最长链)的区块链

分叉:

假设有一个节点收到#3458B的广播,并且验证成功,就会形成新的区块。 以最长就会以#3459B为主链