名词解释
公钥,私钥,签名,地址
- 私钥是一个二进制256位随机数
- 公钥由私钥生成,在交易的时候公开出去,以供节点验证交易是否正确
- 签名是指在使用账户UTXO的时候由交易信息获得的hash和私钥进行密码学计算获得的一个值
- 地址由公钥产生,可以通过私钥使用该地址对应的账户余额,可以通过公钥查询该地址对应的账户UTXO
激励
- 出块奖励:现在比特币的出块奖励会比较多,所以矿工在意的激励大头是出块奖励,也就是每次出块成功后矿工可以在该块中发起一笔交易,交易的比特币没有来源,也就是发行比特币,但是为了限制比特币的数量,每隔21万个区块出块奖励减半,因为比特币系统会每十分钟产生一个区块,也就是说每四年会将出块奖励降低一倍,也就是说经历足够长的时间之后,出块奖励会变得非常少。
- 记账手续费:交易的时候输入可能会大于输出,这个差额就是记账手续费,出块的矿工可以新增交易将这笔差额转移到自己的账户下面
共识机制
- 通过投票决定交易是否被接受
- 投票权的大小来源于算力,要想通过投票权掌控交易就需要掌握所有参与者51%的算力
工作证明
- 工作证明又叫nonce,是一段纯数字字符串,保存在区块头里面,通过调整nonce,使得区块hash值符合预设协议的要求,调整nonce值的过程叫做挖矿
- 随着参与者变多,系统为了保证十分钟出一个区块的速度,会将target设小,提升挖矿难度,可能单纯修改nonce不足以给出合法区块,所以还可能会去调整时间戳,因为系统对时间戳的要求是一个范围,可以在范围内做调整
- 但是仅调整时间戳和nonce也不太能给出合法区块,在交易内部还有一部分内容可以随意调整,就是出块奖励部分,coinbase,这部分不需要说明输入来源,可以随意调整,也叫extra nonce
邻居节点
- 每个节点有一部分邻居节点
- 邻居节点不已其他结构为依托,有可能美国的一个节点和中国的一个节点是邻居,这样就牺牲了效率,提高了安全性
- 新增的节点会选择一个种子节点,并从种子节点获取它的邻居作为自己的邻居,种子节点是所有节点里面一部分呢特殊的节点
传递消息
- 节点收到消息并记录后会发送给他的邻居
- 每一个新的交易以及新的区块都需要发送到比特币网络
- 节点收到新的交易后会将交易纳入自己的交易池
- 如果节点收到一个新交易会检测合法性,检测的优先级是自己记录的区块>新区块>交易池的交易>新交易
交易合法性检测
- 先执行交易的输入脚本,也就是发起交易的输入中的脚本,这个脚本中包含签名等信息,如果正确执行则继续
- 接下来执行输出脚本,输出脚本是本笔交易输入来源的交易中的输出的脚本,不是本笔交易的输出脚本,该脚本中包含了上次资金获取时的签名检查结果,应该是通过这种方式检测本次交易的输入来源是否合法,此次执行的结果需要是结果非零才是验证正确的,那么本笔输入就是合法使用的,本笔交易就也就是合法的
比特币数据结构
Merkle Tree
- 以交易数据块为叶子节点,计算出hash以后作为父节点数据的一部分,父节点将子节点的hash值组合后计算出新的hash值作为父节点的父节点的数据的一部分,以此类推,最终获取到根hash
- 通过hash计算以数的形式获取到根hash可以保证交易数据块不可被更改后仍然得到相同的根hash,因为想要找到两个不同的值计算出同一个hash值的可能性非常小
区块链
- 区块链由一个个以时间为顺序的区块组成
- 每一个区块由区块头和区块身组成,区块头包含区块本身的信息概况,父区块的hash值,交易信息概括,merkle root值。区块身包含交易的详细数据
- 每一个区块头包含上一个区块的hash值
- 只要保存最新的区块,就可以通过最新区块验证之前区块是否产生过改动
全节点和轻节点
- 对于普通用户来说,保存一个区块中的所有数据的意义不大,并且占用内存
- 轻节点只保存区块头,全节点保存区块全部内容
交易证明
- 利用merkle tree证明交易已经被写入区块链
- 轻节点通过区块头中保存的自己相关的交易数据块,结合向全节点获取到的该交易数据块在merkle tree中到根节点路线上每一个节点的兄弟节点的hash值,就可以计算出merkle root值,并与自己保存的merkle root值比较即可确定交易是否写入了区块链
特点
- 比特币网络是一个鲁棒,简单不保证高效的网络
疑问
查找最长链的时候,比较的对象存储在哪,何时进行比较,是会去参考其他节点存储的链条么
1.
交易发出后未被写入区块链之前存储在哪,会不会每个节点存储的预备交易都是一样的,存储这种交易之前需要检查交易合法性么,从交易发起者发起交易到写入区块链确定交易的流程是什么
UTXO检查的时候是去区块链中检查还是有专门的数据库存储这部分内容
参考
https://www.cnblogs.com/klgzyq/p/15544012.html
浙公网安备 33010602011771号