2.私钥/数字签名技术/如何转账BTC/中心化记账的缺点/去中心化记账的流程/争夺记账权POW/比特币全貌

私钥

私钥 == 256个bit,抛硬币256次就得到了一串私钥

(吃惊的概率!如果我抛出的序列,碰巧这个私钥里面有钱,那余额就是我的,而实际上不可能)

通过私钥产生地址,这时并没有进入账本,只有谁向地址转过一点钱,进入区块链账本,才被大家知道。

私钥就是一切!

数字签名技术

sign() 、verify() 由密码学保证不被破解,开源

转账交易

张三把 "张三向李四转10元",签名 公布

众人验证有余额、签名为true,记录到账本

张三账户余额 -= 10;李四账户余额 += 10;

(实际情况支持 一对一、一对多、多对一、多对多 转账)

中心化记账的缺点

这种区块链技术,其实也可以由 第三方中心化 来记账

但是有以下一些问题:

拒绝服务攻击:检测到 发款方是你,不记账,则余额里面的钱转不出去,废掉了

厌倦后停止服务:记账没啥收益,不搞了

被攻击:破坏服务器,监守自盗,被gov干预……

去中心化记账的流程

人人都可以记账,每个人都可以保留完整的账本,参与P2P网络,监听到全世界的交易,成为记账节点

我获取到的消息 不是来自中心,而是通过P2P,来自其他PC

  • 数字签名(私钥,转账信息) == 签名,发送(转账信息,签名),发起一笔交易后,向全网广播。甚至可以发微博、Twitter
  • 每个记账节点,持续监听、传播全网的交易。收到一笔新交易,verify(发送人的地址,转账信息,签名)验证准确性后,将其放入本地交易池,并继续向其他节点传播。
  • 因为网络传播,同一时间时,不同记账节点的交易池不一定相同
  • 每隔10分钟,从所有记账节点当中,[按照某种方式抽取1名],将其交易池作为下一个区块,并向全网广播。
  • 其它节点根据最新的区块中的交易,删除自己交易池中已经被记录的交易,继续记账,等待下一次被选中。

记账人的奖励:收到固定BTC(大约4年减半)(这是发行BTC唯一的方式)+手续费

争夺记账权POW(Proof of work)

找到Nonce,使得下面等式成立

SHA256(Nonce,上一个区块的hash,本交易池的交易内容其中第一笔是打到自己账户的矿工奖励) < 某特定值

找到Nonce的唯一办法:从0开始遍历

遍历完32位Nonce,若还找不到合适的Nonce,就改改交易池内容的顺序

如果有人找到,则看看算对否,

若对,承认这个节点,就去掉交易池中已上链的内容,把他作为父区块的hash,继续找Nonce。

两个节点找Nonce,找到的结果是不一样的:

就算转账内容+排列顺序都一样,但是第一笔:矿工奖励的收款地址是自己的,所以hash不一样

hash(Nonce,父区块hash,本区块内容的hash) < 随机值,

通过调整这个随机值,更具全网算力,调整难度,使得平均挖矿时间==10min

因为随机值比较小,所以开头0很多。

比特币全貌

发布了123 篇原创文章 · 获赞 1 · 访问量 5402

猜你喜欢

转载自blog.csdn.net/bijingrui/article/details/105321739