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