比特币科普知识

怎么证明账目没人改过?

如果是中心的唯一数据库, 记的就是最终结果,改了就完了
分布式,每个人都保存一份账本,账本是去中心化的 ,

区块链账本的验证,利用了hash的如下特点:


这样只对比hash, hash值都一样 就是没被改过, 被hash的数据都是一样的


对下一个账本hash时,加入上一个账本的hash值

这时,只要都是456635B 第一个账本和第二个账本就都是没被改过 , 是真的

这样形成一个区块链, 再长都只要对比最后一个hash值, 一样就是之前都一样的,最后的摘要信息对上了 ,所有账本都没被改过,是真的


怎么证明这钱是你的?

https://learnblockchain.cn/2017/11/10/bitcoin-script/
这样转账,如何证明自己是2A39CBaZ390FDe的拥有者?有这0.2btc?

转账

谁拥有这个地址对应的私钥就是地址的所有者,比如:
Hash(Hash(fun(sdgHsdniNIhdsgaKIhkgnakgaihNKHIskdgal))) -> 2A39CBa2396FDe
私钥就是sdgHsdniNIhdsgaKIhkgnakgaihNKHIskdgal
谁有私钥谁就拥有这个地址,谁都夺不走,除非自己忘记或者泄露
这条转账信息的发布者如何证明自己有这个地址(知道这个地址对应的私钥私钥)呢?
签名
先算转账信息的hash值


再用只有自己有的私钥 算得一个签名

这个签名和转账信息一起发布,
其他节点收到这个信息以后,都会去验证真假, 通过就会转发信息, 通不过就算了
神奇的是,验证签名真伪(是不是用地址对应的私钥求得的)不用私钥, 有公开的地址就行了
verify(签名, 付款方地址) ==hash
这里省略了对"2A3908a2390FDe"这个付款地址,有没有这些钱的验证

记账

必须鼓励人记账,记账是有奖励的, 奖很多钱
奖励只能给一个人, 就是首先完成记账的人,其他人只能复制第一个记账成功的人的结果
每10分钟记一次账,

10分钟: 记账速度和 分叉 的妥协

必须让记账有难度, 大概十分钟能碰对一次,就是如下这个随机数, 通过对0的个数的要求 来调整得到这个随机数的难度, 十分钟能算出来


如果还是有那么巧, 同时有多个算出来了, 节点们认可哪个? 这需要共识机制
比如, 某节点收到了2个块, 都是对的 , 那就都不扔, 存着
分叉

等下一个区块到来, B的下一个区块到了,这样就可以扔掉A了

孤块: 如果#3459B到了, 但是 #3458B 没到 ,就暂存#3459B到孤块池

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容