UTXO 理解

未花费交易输出: Unspent Transxtion output

  • UTXO---用比特币拥有者的公钥锁定(加密)的一个数字
  • UTXO == 比特币
  • 比特币系统里没有必有比特币,只有UTXO
  • 比特币系统没有账户, 只有UTXO(公钥锁定)
  • 比特币系统里没有账户余额,只有UTXO(账户月只是比特币钱包的概念)
  • UTXO存在全节点的数据库里
  • 转账将消耗掉属于自己的UTXO,同时生成新的UTXO,并用接收者的公钥锁定。
  • 比特币系统没有账户概念。

交易的结构

  • 交易的输出(UTXO)

    • 锁定的比特币数量
    • 锁定的脚本(用接收者的公钥哈希)
  • 交易的输入(UTXO+解锁脚本)
    • 解锁(自己的私钥)脚本(用发送者签名,接收者的公钥hash)

交易的确认

交易的确认必须放在区块链上才算完成

交易验证

基于栈的脚本语言

  • 栈(stack)- 操作数据的一种结构

    • 只能从一端操作数据,后进新出LIFO(Last In, First Out)
    • 如同子弹匣,先压入的子弹最后打出
    • 压栈(PUSH),出栈(POP
  • 验证交易- 基于栈的脚本语言

    • 对栈的操作: OP_DUP ---

    • 逻辑运算符:OP_EQUALVERIFY

    • 加解密运算符:

      • OP_HASH160
      • OP_CHECKSIG
    • 算数运算符:

      • OP_ADD--- 加
      • 0P_SUB--- 减
      • OP_MUL--- 乘
      • OP_DIV--- 除

逆波兰表示法

  • 简易运算规则:

    • 所有造作符号位于操作数的后面
    • 遇到操作数(数字),则压栈(PUSH)
    • Y遇到二元运算符(+,-, x ,/ )
      • 先将2个操作数出栈pop
      • 然后对运算数进行计算
      • 最后将计算结构压栈
  • 传统表达式(中缀表示法): (1+2)*3 == 9
  • 逆波兰表示法(后缀表示法):1 2 + 3 * 9 ==

使用逆波兰表示法验证交易

  • 锁定脚本

    • OP_DUP OP_HASH160<发送者公钥哈希> OP_EQUALVERIFY OP_CHECKSIG
  • 解锁脚本

    • <发送者的签名><发送者公钥>
  • 交易验证:

    • 签名 公钥 DUP HASH 公钥哈希 == 验证签名
    • 运行解锁脚本 + 锁定脚本 => True

    过程如下(逆波兰表示法):

    • a. 发送者签名发送者公钥 进行压栈(保护在解锁脚本正)

    • b. DUP --将公钥copy到栈顶

    • c. HASH 运算符,只需要一个数,将公钥POP出去进行hash算法,生成一个公钥hash

    • d. 将新生成的公钥哈希 压栈

    • e. 将锁定脚本(UTXO)中的公钥哈希压栈;

    • f. OP_EQUALVERIFY---遇到 ==操作符,将栈中两个公钥哈希比较,为True的话,栈中的两个哈希公钥会废除掉,继续进行压栈操作

    • g. 验证签名(OP_CHECKSI)--POP出栈中的发送者签名发送者公钥,使用公钥验证签名,如果通过,则UTXO可以使用

Bitcoin交易及验证的更多相关文章

  1. bitcoin 源码解析 - 交易 Transaction(三) - Script

    bitcoin 源码解析 - 交易 Transaction(三) - Script 之前的章节已经比较粗略的解释了在Transaction体系当中的整体运作原理.接下来的章节会对这个体系进行分解,比较 ...

  2. bitcoin 源码解析 - 交易 Transaction(二) - 原理篇

    这篇文章我断断续续写了呃···· 应该快三个星期了? 所以前后的风格可能差别相当大.真是十分的怠惰啊··· 最近实在是不够努力.用python重写bitcoin的项目也卡在网络编程部分(这方面真是我的 ...

  3. bitcoin源码解析 - 交易 Transcation (一)

    比特币中的交易可谓是比特币的最核心部分.比特币由交易产生,而区块就是用来存储交易的.所以,交易是比特币存在的载体,同时也是比特币中最复杂的部分.交易的运作层层相扣,各个部分缺一不可,十分严密,由此体现 ...

  4. bitcoin 源码解析 - 交易 Transaction

    bitcoin 源码解析 - 交易 Transaction(三) - Script 之前的章节已经比较粗略的解释了在Transaction体系当中的整体运作原理.接下来的章节会对这个体系进行分解,比较 ...

  5. 比特币交易(Transaction)的输入与输出

    比特币通过“挖矿”机制保证了不能任意造币.通过分布式网络和HashCash机制解决双重支付问题.事实上比特币系统中不存在独立的电子货币,而只存在交易单(账单),货币值是依附于交易单存在的,所以比特币中 ...

  6. 比特币区块结构Merkle树及简单支付验证分析

    在比特币网络中,不是每个节点都有能力储存完整的区块链数据,受限于存储空间的的限制,很多节点是以SPV(Simplified Payment Verification简单支付验证)钱包接入比特币网络,通 ...

  7. 金融量化分析【day112】:初识量化交易

    一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...

  8. Fabric交易流程

    (内容可能有些乱,请见谅,日后会对格式进行整理!) #### 在1.0及以后的版本中,客户端应用会先向Fabric CA申请用户所需要的Fabric中的准入证书,用于签名提案以及交易,然后由客户端(A ...

  9. Facebook libra开发者文档- 3 -Life of a Transaction交易生命周期

    Life of a Transaction交易的生命周期 https://developers.libra.org/docs/life-of-a-transaction 为了更深入地了解Libra交易 ...

随机推荐

  1. linux的定制和发布(一)

    如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go!       Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...

  2. 构建命令maven install 打包不是最新的代码

    问题: 之前一直用的是mvn install 命令来构建项目,但是最近发现最新的代码没有在war包中.之前看的说 mvn install 命令会执行之前的所有阶段,会被编译,测试,打包. 经查最后采用 ...

  3. .Net 图片缩略图上传通用方法

    日常开发中,经常碰到图片上传的需求,尤其在商城系统开发的时候,商品列表商品图片展示如果使用高清原图,由于高清原图比较大,加载原图时间会大大增加,直接导致系统性能底下,用户体验不好,并发量高的时候直接就 ...

  4. Unity&C# SingerMonoManager泛型单例

    管理各种管理器 ///为什么需要单例 ///单例模式核心在于对于某个单例类,在系统中同时只存在唯一一个实例,并且该实例容易被外界所访问: ///避免创建过多的对象,意味着在内存中,只存在一个实例,减少 ...

  5. 升级到Sharepoint 2013后页面打开速度慢

    这个问题现在有了一些新的发现. 首先,我找到了重现客户那里出现的那个复杂SQL语句的方法.这个现象其实是这样的: 当WebApplication的“List View Threshold” 数量大于 ...

  6. [JXOI2017]颜色 线段树求点对贡献

    [JXOI2017]颜色 题目链接 https://www.luogu.org/problemnew/show/P4065 题目描述 可怜有一个长度为 n 的正整数序列 Ai,其中相同的正整数代表着相 ...

  7. 激活IDEA,pycharm方法

    1.修改hosts文件将0.0.0.0 account.jetbrains.com添加到hosts文件最后,注意hosts文件无后缀,如果遇到无法修改或权限问题,可以采用覆盖的方法去替换hosts文件 ...

  8. css如何去掉select原始样式

    css代码: select { /*将默认的select选择框样式清除*/ appearance: none; -moz-appearance: none; -webkit-appearance: n ...

  9. java初级易错问题总结

    1.什么是变量?变量的定义格式?要使用变量需要注意什么?就是可变的量数据类型 变量名 = 数值;同一范围内不能重复定义不赋值不能使用 2.Java中的数据类型分几类?基本数据类型有哪些?两大类     ...

  10. bzoj3435 [Wc2014]紫荆花之恋(动态点分治+替罪羊树)

    传送门(权限) 传送门(非权限) 题解 我终终终终终终于做出来啦!!! 作为一个没有学过替罪羊树的蒟蒻现场学了一下替罪羊树,作为一个平衡树都写数组版本的看着大佬的指针题解无语只能硬去理解然后照着抄了一 ...