一、比特币是什么,有什么特点?
虚拟货币的P2P(点对点)形式。分散会计系统;
去中心化:任意节点的权利和义务是平等的,系统中的数据块由整个系统中具有维护功能的节点共同维护和管理;
透明度:系统是开放的。除了每个交易方的私人信息被加密之外,区块链的数据对每个人都是公开的。任何人都可以通过开放接口查询区块链数据并开发相关应用,因此整个系统信息高度透明。
自制力:人无法干预,半数以上决定去做;区块链采用基于共识的规范和协议(如一套公开透明的算法),使整个系统中的所有节点在去信任的环境中自由、安全地交换数据,使“人”的信任变为机器的信任,任何人为干预都不起作用。
信息不可篡改:一旦信息被验证并添加到区块链,它将被永久存储。除非能同时控制系统中51%以上的节点,否则在单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
匿名性:由于节点之间的交换遵循固定的算法,其数据交互不需要信任(区块链中的程序规则会自行判断活动是否有效),因此交易对手不需要通过暴露身份来让对方信任自己,这对信用的积累很有帮助。
溯源:由于其公开透明,每一笔交易信息都可以溯源!
二、比特币的原理
数据存储在网络节点中,例如每台计算机;那么问题来了,每台电脑里都是谁的数据,数据被篡改了怎么办;
1.数据验证
说以下数据:
这些数据分别储存在王二、张三、李四和吴钊的电脑里。有人可能会篡改数据。比如张三把余额改成了300。如何验证张三的数据是假的?
A.你可以一个一个的查,就是把王二、张三、李四、吴钊的数据一个一个的查,你会发现张三的数据在张三的电脑里和别人的电脑里是不一样的,但是这样太低效了(只有四个数据,如果有一百万个数据,效率就太低了)。
B.在介绍第二个之前,先了解一下哈希函数(类似于常用的MD5加密)
哈希函数:哈希(原始信息)=汇总信息
哈希函数的特征:
同样的原始信息,用同样的哈希函数总能得到同样的汇总信息。
原始信息的任何细微变化都会导致汇总信息的不同。
原始信息不能由抽象信息反算。
第一,张三的数据会被Hash加密,假设Hash(数据)会得到4564asdasdasd6ABA;
加密李四、王二、吴钊的数据得到789789attdghjfg7A,对比汇总信息发现张三的数据有误。
这样对比汇总信息会比对比原始数据信息效率高很多,进一步提高了效率,
块:序列号时间戳哈希值事务
假设一个块的哈希值是789789attdghjfg7A;例如,生成一些事务。当一个新的区域快速形成时,符合Hash(789789attdghjfg7A,new transaction data)=12323 as 4d 56 a4 SDS。然后,在比较时,比较新的汇总信息。如果新的汇总信息是正确的,说明以前的账簿数据也是正确的。这样就会形成一个链式结构。在这种情况下,只需要检查最后一块的信息。只要最后一块的信息是正确的,就意味着前一块的信息是正确的,整个区块链的信息也是正确的。这样会提高效率。
2.所有权问题
一般所有银行卡都有卡号和密码,账号和密码匹配就可以支付。比特币的账号相当于一个地址,密码是私钥,从一个地址到另一个地址进行支付。并且地址和私钥是不对称的关系,即:
Hash(Hash(fun(私钥))=地址
Fun是一系列具体的算法。
如何交易:
步骤1:散列事务以获得事务摘要。
哈希(
{“快递地址”:“ahsuidhujkashduikhasidgh”,
“收货地址”:“asyduihiuqawherihiahdi”,
\” Amount\”: \”1btc\”} \’
)=456as4d646a5s4d66
第二步:用私钥签署摘要。
签名(\’事务摘要\’,\’私钥\’)=签名信息
两步后广播,告诉周围节点,我(付款地址)用签名xxx向他(收货地址)支付了1btc.而周围的节点收到后会进行验证。
如果Verify(签名信息,付款人地址)=交易汇总,则写入台账,并向周围节点广播;否则记账失败。
并且签名验证是可逆的过程。
签名(交易摘要,私钥)=签名
验证(签名、快递地址)=交易摘要
比特币安全只受私钥控制,不像银行里的钱可以被银行冻结。
3.你为什么记账?(采矿)
簿记:哈希打包过程,消耗资源。既然要花钱,为什么节点要参与记账?记账完成后,你会获得一个比特币奖励(这个奖励其实就是发行比特币的过程)。既然有奖励,大家就会去记账,就会出现记账不一致的情况,就会有一个规则来约束大家记账。
规则:一段时间内只有一个人可以成功记账;
通过解决密码学问题(即工作量证明),可以竞争获得唯一记账权。
其他节点复制(第二步的结果)记账结果。
工作量证明:
Hash(以前的哈希值,事务记录集)=asdfasdasdad56161
如果是这样的话,可以快速记账。为了显示记账的难度,交易记录的值必须以N个零开头。
Hash(最后一个哈希值,事务记录集,随机数)=00000000000000000asdasda45456
是不断改变随机数,以获得从N个零开始的记录值。
交易记录集:
收集广播中尚未记录在分类帐中的交易记录。
交易的验证
给自己添加转账交易(采矿奖励)
4.以谁的账本为准?(共识机制)
第一个验证正确的有记账优先权,你可以打包积木,这样你就可以获得奖励。
如果两个节点同时完成工作负载认证,将使用谁的数据块?
只有累积工作量最大(链最长)的区块链才会被识别。
分叉:
假设一个节点接收到#3458B的广播,验证成功,就会形成一个新的块。最长的链将是#3459B。