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

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

作者:知乎(太阳谷) 字体:[增加 减小] 来源:互联网 时间:2018-11-03

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

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

科普一下比特币的区块链是什么,老手们可以直接跳过这一部分了。这里说的比特币,是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>

然后是一

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

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

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

相关文章

  • 2018-11-03中本聪与比特币
  • 2018-11-03万云IDE:如何在几分钟内搭建好一个区块链开发环境?
  • 2018-11-03比特币量化-EMA策略
  • 2018-11-03区块链解读——数字签名
  • 2018-11-03如果点开数字货币的垃圾广告会怎样?
  • 2018-07-07如何学习区块链
  • 2018-11-03【通证经济入门修炼手册】什么是先进的通证
  • 2018-11-03基础:区块链为什么叫区块链
  • 2018-11-03泰达币USDT是什么?USDT如何兑换美元?
  • 2018-11-03EMONT Frenzy一EMONT联盟的区块链游戏

文章分类

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

最近更新的内容

    • ERC1400、ERC1404及ERC1410三大标准简介
    • 比特币区块链核心技术详解
    • 通证经济(Tokenomics)的三种定义
    • 区块链技术是什么?未来可能用于哪些方面?
    • 什么是区块链代币
    • Raiden Network — 以太坊区块链支付通道
    • 以太坊中的账户、交易、Gas和区块Gas Limit
    • 云储币(SC)钱包使用教程
    • Tokenlon是什么
    • DFINITY区块链:密码学技术介绍

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

©2015-2018 All Rights Reserved. 微课江湖 版权所有