2020 区块链 golang 版本(6)

zidea · · 1715 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

封面

输入脚本和输出脚本

输入脚本(BitCoin Script)

所谓校验,就是当前输入脚本和比特币来源的输出脚本拼接后是否能够给顺利执行。如果能够顺利执行才能够说明交易有效。

输出脚本

实际中每一个区块包含许多笔交易,这些交易就组织成 Merkle Tree,

区块头和区块体

每一区块分为区块头和区块体两个部分。

区块头

区块头中包含比特币宏观信息,例如使用比特币哪一个版本的协议

  • Version
  • PrevHash
  • MerkleRoot
  • target
  • nonce
    Version 表示版本号,PrevHash 保存指向前一个区块的 hash 值,MerkleRoot 是表示交易的MerkleTree 的根节点。其实 target 和 nonce 是挖矿相关的,target 表示挖矿难度值而 nonce 需要计算的随机数值。取 hash 只取区块头的数据。

全节点(full node)和轻节点(light node)

全节点也称为 fully validating node,一般来说轻节点无法独立验证交易合法性。只有全节点才参与区块链的构造和维护,轻节点利用区块链信息进行一些查询的操作。以上我们已经介绍区块链中都包含了哪些内容。接下来我们就开始研究这些内容是如何写入到区块链中。

区块链就是一个账本,这个账本由比特币网络所有节点共同维护,如何保证所有节点都拥有同样的样本,也就是样本一致性势必是一个我们要解决问题。要解决这个问题将要账本内容要取得分布式的共识。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:zidea

查看原文:2020 区块链 golang 版本(6)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1715 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传