比特币三之协议

正在学习区块链,如果我哪里有错误希望大家指出,如果有任何想法也欢迎留言。这些笔记本身是在typora上写的,如果有显示不正确的敬请谅解。笔记本身也是给我自己写的,所以如果有侵权的请通知我,我立即删除。


  这个我就先简单一写,因为我觉得没啥特别,基本都已经知道了,具体的还要后续加

3.1 UTXO(Unspent Transaction Output)

比特币中是没有账户的,所以想证明你有钱,要么是你挖矿凭空造出了钱,要么是有人转给你了钱,你只要证明这两者之一就行了,而这就是未话费的交易输出。

下图是正常的交易过程,证明发送方的钱准确无误地发送给接收方却不被修改。

avatar

1.首先,发送方用接收方的公钥对信息进行加密。

2.发送方对原信息进行哈希运算得到一个结果(称为摘要),再用自己的私钥对摘要进行加密得到一个签名(这里用私钥加密得到的签名,可以用公钥进行解密,这里和之前的公钥加密私钥解密用的不是同一套算法)。

3.把密文和签名一起发送给接收方。

4.接收方首先用自己的私钥对密文进行解密得到原文,再对原文进行哈希运算得到摘要。

5.接收方用发送方的公钥对发送方的签名进行解密得到发送方签名前的摘要。

6.接收方把两次得到的摘要进行比对,如果是一样的,则证明原文没有被篡改,并且确实是发送方发送的。

**分析:**假设C截取信息,他想篡改内容。首先签名无法篡改,因为他没有发送方的私钥,如果用自己的私钥进行签名,那么接收方用发送方的公钥解密时是解不开的。所以他只能篡改密文。但接收方解出密文并进行哈希运算后得到的摘要必然和原来的摘要不同,而用发送方的公钥解密出签名得到的摘要肯定不会被篡改,所以两次摘要就会出现不一致,就能确认内容被篡改了。

3.2 共识(这个有点意思)

如果目前有一个区块的数据要不要写入链中呢?

可以有很多种方法。比如民主一点,每个人投票,看一半。但是对于区块链而言,什么叫一个账户呢?我只要有过UTXO就叫一个账户,哪怕我虽然只有一个比特币,但是我也能弄出无限个账户,那岂不是我一个人就可以决定这个交易是否有效了吗?所以用账户的民主是不合理的。而这种造账户的方式叫做**Sybil Attack(女巫攻击)**。
  区块链采用的是竞争的方式。当一个人率先挖到了矿,那就有权力将区块写入区块链,完了由后续的人进行验证。当然如果这位矿工写入的数据连UTXO都不满足肯定就玩完,别人不会认的。意思就是只有最强算力的人有独裁决定权,然而算力齐次的有验证权,如果不符合UTXO民众有监督权,可以选择不介绍这个区块。而这个最强矿工不仅有记录的决定权,也会凭空产生比特币,这就是出块奖励。出块奖励是越来越少的,而且也不能只靠出块奖励来激励打包,因为有的节点比较自私,只会打包自己的交易(没听懂肖老师啥意思,总之就是不会打包全部的交易),因为验证交易的合法性是要算UTXO的,这也是要耗资源的。因此区块链设计了一种叫做transaction fee的小费机制。两者的差别能差到100被,下面有交易的图片可以看。

最早的比特币是一个区块50个,每21万个区块减半,十分钟会产生一个区块。如果区块挖完了,以后交易比特币的成本就要增加了。类似于现在的交易费是中本聪替你交,以后就得你自己交了。

3.3 51%攻击

这个51%不是绝对的,只是一种概率的说法,而且下面会讲矿池的概念,并不是说卡死这个值。总的来说就是记账权是否总会掌握在有同一目的人的手里

3.3.1 分叉攻击

先说一下正常的分叉现象:如果有两个区块几乎同时算好了哈希,它俩几乎同时打包,理论上这两条链都是有效的,那怎么才能确定唯一的一条呢?就看一段时间后哪条链更长,短的被废弃的链叫orghon line。据吴兆恒说,目前全球已经出现了三条链。

那么分叉攻击呢,比如A节点给B节点5个bitcoin,B等了六个区块后认为安全了,结果A现在再发布一个交易A给自己,替换掉A给B 5个比特币的那个交易,现在主链已经比这条链长6个区块了,这条错误链有可能比主链还要长吗?可能,因为它的算力已经到了51%,总会成功的。

3.3.2 boycott攻击

如果节点A看B节点不顺眼,任何存在B节点交易的区块一旦打包进区块,A节点就会发动分叉攻击,使B得一切交易都无效,久而久之其它的矿工也不敢将B的交易打包进区块了,因为只要打包进去就被攻击掉,谁还玩啊。

发布了38 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qigezuishuaide/article/details/104244344