• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 比特币扩容纷争:对隔离见证的思考

比特币扩容纷争:对隔离见证的思考

作者:知乎(太阳谷) 字体:[增加 减小] 来源:互联网

知乎(太阳谷)向大家分享了比特币扩容纷争:对隔离见证的思考,其中包含比特币扩容,隔离见证等知识点,遇到此问题的同学们可以参考下

比特币的基础架构:区块链

科普一下比特币的区块链是什么,老手们可以直接跳过这一部分了。这里说的比特币,是2017年8月以前的比特币,后来分为了 有隔离见证的BTC 和没有隔离见证的 BCH 两条链。下面会有不少看起来很专业的东西,不过请放心,我不是专业的程序员,不会讲太深的。稍微理解一点比特币的架构和转账的方法,对理解隔离见证的骗局很有帮助。比特币链条大概是长这个样子:

上图我们可以看到几个区块(Block),可以看到每个区块都有两个部分:一部分是虚线画出来的 Prev.block 指向上一个区块,这部分我们叫它“区块头”,另外一部分是“区块主体” Transaction,即这个区块里交易的信息。由于每个区块头都指向上一个区块的头,所以这个系统我们叫他区块链。再详细点看这个区块头:

上图我们可以看到3个区块(Block),可以看到每个区块头里都有4个信息。其中 Nonce 就是矿机去搜寻的数,这个数很难找所以要用很快的矿机烧很多电费,谁先找来一个 Nonce,能让这4个信息合起来的 Hash 结果符合一定的条件,谁就可以发布这个区块,并拿区块奖励12.5个币。Prev-Hash 是上一个区块的这4个信息合起来的Hash 结果,Timestamp 是目前的时间,有这两个的限制,矿工至少要收到上一个区块的区块头,才能开始挖下一个区块。Tx_Root 是这个区块的主体里所有交易的Merkle Root,如果有任何一个交易被改变,这个 Tx_Root 就会有变化。 如此,比特币的区块形成了一条不能被更改的链:加入这个 Block11里面的 Tx1被改变了,那他上面的 Hash1就会变,Tx_Root 也就变了,这样 Block11的4个信息合起来的 Hash 结果会不一样,就和 Block12的 Prev_Hash 断开了,Block12就无效,以此类推。


支付脚本

区块链里的交易,大概可以理解为是 “A 地址转给 B 地址 xx 个币”,“B 地址转给 C 地址 xx 个币”这样的信息。如果 C地址收到了 xx 个币,但没有往外转,那这就会在 UTXO 数据库里记一条:“C 地址还有 xx 币没花掉”。假如 C 地址是普通的1打头的比特币地址,要花掉这笔钱,就需要用到一个脚本,这个脚本是“B 地址转给 C 地址 xx 个币”时规定的,定了这笔钱要怎么才能被C 地址花掉。一般这个脚本是这样的两部分

  • scriptPubKey部分: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • scriptSig部分: <sig> <pubKey>

不会编程的朋友请不要害怕,不难看懂的。scriptPubKey部分有几个“操作码”,是 OP 打头的,表示几种操作。<pubKeyHash>就是比特币地址的中间部分,不带开头的版本号1和末尾的几位校验码,这部分是对公钥进行 Hash 的结果。scriptSig部分要由想转账的这个人提供,公钥<pubKey>,和用私钥对这笔交易的签名<sig>。由私钥可以推导出公钥,公钥可以推导出比特币的地址,这两个步骤都不能反推(在当今科技下)。如果一个人可以展示私钥对这笔交易的签名,又可以提供这个地址的公钥,那我们就相信这笔转账是他授权的,别人伪造不了。矿池收到了提供的交易,和交易的签名,要怎么验证呢?就是运行一遍上面的脚本,看看结果是不是“True”。如果结果是 True 那就算通过了。首先要把scriptSig里的东西“堆”起来,形成一个“堆栈”:

<pubKey>

<sig>

然后,就一个一个地执行scriptPubKey部分。先是一个 OP_DUP,这个是复制操作,这些操作都是对着堆栈的顶部操作。所以复制操作后堆栈变成了:

<pubKey>

<pubKey>

<sig>

然后是一

您可能想查找下面的文章:

  • 比特币扩容纷争:对隔离见证的思考
  • 比特币扩容狗血剧——何为共识
  • 科普:比特币分叉及扩容

相关文章

  • 区块链技术中的机器学习
  • 解析区块链本质及应用!
  • 基础:区块链为什么叫区块链
  • 雷电网络(Raiden)是什么 雷电问答
  • 智能合约及Dapp安全简介
  • 稳定币的不稳定性
  • 带你走近比特币背后的技术世界
  • 互联网医疗这门生意不好做,在线心理咨询要如何打开局面?
  • Bitcoin anonymity比特币匿名性引发的犯罪行为
  • 构建智能合约时需要考虑的9个因素

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • MetaMask-以太坊钱包(浏览器插件)使用教程
    • 什么是稳定币(Stablecoins)?
    • 区块链技术相关的论文、文档、学习资料
    • 蚂蚁矿机E3挖矿教程
    • 如何使用深度学习硬件的空余算力自动挖矿
    • golang-event 在以太坊中的使用
    • 区块链共识的确定性
    • 智能合约与函数式编程语言
    • 基于服务众筹的合法性原理构建ICO的合规思路
    • 所谓的“搬砖”到底是怎么一回事

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有