BTC txid与vote的关系

2023-10-30

当我通过BTC的listtransactions接口获取查询最近发生的钱包交易时,需要将用户的充值记录写到数据库时,发现了一些令人巨大的误解。

例如,txid字段并不是唯一的,所以写到数据库时,会有交易哈希重复的可能性(有可能你的两个用户在币安交易所同时发起了BTC提现到你的钱包中,为节省手续费及上链时间,那么这两笔交易就有可能在同一笔交易中)

那么如何解决交易的唯一性呢,只有与神秘的“vout”字段结合使用时,它才是独一无二的。

vout是基于 0 的输出索引。它可能不仅仅是0or 1,但这些往往是最常见的,因为人们不会进行具有大量输出的交易。

要了解vout,您必须了解比特币交易的实际运作方式。比特币交易使用交易输出作为输入,并创建交易输出。它可以消费多个交易输出,并创建多个交易输出。此外,这些交易输出可以被不同的交易消费,因此每一个交易都需要能够被唯一标识。因此,唯一标识符包含两项:

  • txid:用于标识输出所属交易的交易 id,
  • vout: 以及指向该特定交易中输出列表中位置的索引。

vout:与计算机科学中的许多事物一样,它是一个基于 0 的计数器,因此第一项位于 index 0,第二项位于1,依此类推。

listsinceblock, listtransactions, 和 Bitcoin Core 中的一些其他 RPC 实际上并没有列出比特币交易。相反,他们列出了合乎逻辑的交易——人类倾向于想到的交易。这是因为单笔比特币交易既可以将比特币从你身边发送出去,也可以让你接收比特币。

在单个比特币交易中,您可以使用自己的交易输出,因此该交易会将您的比特币发送出去。然而,并非所有交易都包含来自同一个人的输入。该交易可能涉及另一个人,该人拥有自己的交易输出作为该交易的输入。也许他们正在创造一个你可以消费的产出。所以这个交易也在向你发送比特币。然后,这个单一的比特币交易将包含两个逻辑交易——一个是你发送的地方,一个是你接收的地方。

这通常会发生在更改输出中,但软件不应该向您显示这些,因为它足够聪明,可以隐藏它们,而不是将它们视为一个独特的逻辑事务。更改输出是指您创建的交易输出将比特币发回给您自己。它们的存在是因为交易输出必须全部花费,但您实际发送的金额通常与您花费的输出的确切金额不完全匹配。因此,您必须创建一个输出,将剩余部分发回给您自己

比特币资金在未使用的交易输出 (UTXO)中进行跟踪。每当您发送比特币时,您的钱包软件都会声明使用了哪些特定的 UTXO,并创建新的 UTXO 以将资金分配给付款方。即使在最简单的情况下,一笔交易通常也会产生两种新的输出:一种用于支付收款人,另一种用于将剩余的零钱重新分配给发送者。

由于交易可以有多个输出,因此txid不足以唯一地识别 UTXO。但是,由于交易中输出的顺序是固定的,并且每个位置只能出现一次,因此 UTXO 可以由创建它的交易加上输出列表中的位置来唯一标识。vout是交易输出列表中 UTXO 的索引。我们称其txid:vout为UTXO的外点。

image

在这个来自blockstream.info的带注释的屏幕截图中,您可以看到 transaction 39b6bcf049fbfba73c2e594327cafd4f93b1c23979e138d4c56ab3b7d04172ad。它花费了一个 UTXO,即 transaction 的第 5 个输出(vout:4,我们从 0 开始计数) ,并创建了 7 个标识为through的cc90096df338a6894aeef47043b995942758a1dfe52e579560e39730602a7ca4新 UTXO 。39b6bc…4172ad:039b6bc…4172ad:6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BTC txid与vote的关系 的相关文章

随机推荐

  • Swift 原生网络请求

    iOS HTTP请求原生组要的类是URLSession 是一个单例类 例1 GET func makeLogon 构建URL let url URL URL string https xxx xxx API xxx 发送HTTP请求的的se
  • mimo节能模式选哪种_802.11协议精读11:节能模式(APSD,PSMP,SMPS)

    序言 在802 11主要的版本中 总共定义了四种节能模式 在前面一篇文档中 我们介绍了最基本的PSM模式 以及其工作方式上的一些细节 由于PSM是在最初的802 11协议下进行的设计 其用了较为保守设计 以确保最稳定的运行需求 在后来的80
  • 次时代Java编程(一):Java里的协程

    声明 本文CSDN作者原创投稿文章 未经许可禁止任何形式的转载 作者 刘小溪 Maxleap的高级开发工程师 喜欢倒腾一些有意思的技术框架 对新的技术以及语言非常有兴趣 以前在shopex担任架构师 目前在Maxleap负责基础架构以及服务
  • nohup保存代码打印结果至指定文件

    nohup python xxx py gt gt xxx out 以python为例 上述指令可以让xxx py在后台运行 并且输出结果保存至xxx out文件
  • 牛客 NC202492 仓库选址

    题目链接 https ac nowcoder com acm problem 202492 代码 include
  • Chrome 谷歌浏览器 google 复制网页上禁止复制的文本

    在你要复制文字的页面 按F12 选择 Console 输入 document body innerText 然后按回车
  • 用python画一只可爱的皮卡丘

    效果图 usr bin env python coding utf 8 from turtle import 绘制皮卡丘头部 def face x y 画脸 begin fill penup 将海龟移动到指定的坐标 goto x y pen
  • Grafana中文版本

    grafana chinese tags GitHub grafana Grafana中文汉化版本 GitHub https github com WangHL0927 grafana chinese 作者 whl email w95866
  • Vuepress码云部署及自动跳转404 的问题

    介绍 VuePress 由两部分组成 一个以 Vue 驱动的主题系统的简约静态网站生成工具 和一个为编写技术文档而优化的默认主题 它是为了支持 Vue 子项目的文档需求而创建的 由 VuePress 生成的每个页面 都具有相应的预渲染静态
  • PyCharm+Docker:打造最舒适的深度学习炼丹炉

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 来自 知乎 作者 刘震 链接 https zhuanlan zhihu com p 52827335 编辑 人工智能前沿讲习 一般炼丹都在服务器上 很少有人在本机跑代码的
  • 跨时钟域信号处理(一)--Verilog单比特信号

    网上有很多的跨时钟域信号处理的相关文章 主要分为三种 单比特信号 打两拍或打更多拍 使用触发器 多比特信号 异步双口块RAM或者异步FIFO 格雷码转换 这次就主要说第1种情况 适用于单比特信号 1 应用场景 从时钟域1的单比特信号DATA
  • 【python】动态规划算法学习:0-1背包问题 -牛客网HJ16 购物单

    这里写目录标题 题目HJ16 购物单 问题理解 代码 题目HJ16 购物单 描述 王强决定把年终奖用于购物 他把想买的物品分为两类 主件与附件 附件是从属于某个主件的 下表就是一些主件与附件的例子 主件 附件 电脑 打印机 扫描仪 书柜 图
  • Git(三) Git 图形化管理工具 SourceTree 全部实用操作

    Git 三 Git 图形化管理工具 SourceTree 全部实用操作 上篇文章主要说到Git的账号情况 Getlab账号和Github账号同时使用 本篇文章接着上篇内容继续为大家介绍 Git的图形化管理工具 SourceTree 前言 一
  • 文件下载中文文件名不显示

    使用response setHeader Content Disposition attachment filename fName 下载文件 中文文件名无法显示的问题 今天遇到这么一个情况 在Controller代码中进行文件下载 其中f
  • js 多个if else如何优化?

    function getUserDescribe name if name length gt 3 console log 名字太长 else if name length lt 2 console log 名字太短 else if nam
  • 导入时报错 :No module named ‘tensorflow.contrib‘ 问题的解决

    No module named tensorflow contrib 问题解决 问题描述 在tensorflow contrib模块的调用报错 No module named tensorflow contrib 解决方案 我给删了大不了不
  • [CISCN2019 华北赛区 Day1 Web2]ikun (JWT更改与python反序列化)

    前言 文章所涉及的资料来自互联网整理和个人总结 意在于个人学习和经验汇总 如有什么地方侵权 请联系本人删除 谢谢 本文仅用于学习与交流 不得用于非法用途 题目 提示是要买到Iv6 有很多页面 需要写脚本来找 import requests
  • 基于时间轮片方式处理超时任务

    作者 酱了里个酱 来源 掘金 https juejin im post 5e733e4f51882549417fe9aa 背景 最近收到小伙伴的一个吐槽 项目里的某个函数是同步阻塞的 无法确定其运行时间 某些情况下 可能出现长时间阻塞导致应
  • 计算机视觉与深度学习-全连接神经网络-激活函数- [北邮鲁鹏]

    文章目录 基础知识 为什么需要非线性操作 激活函数 激活函数 vs 数据预处理 常用的激活函数 Sigmoid函数 Logistic函数 双曲正切函数 Tanh函数 线性整流函数 ReLU函数 Leaky ReLU函数 Softmax函数
  • BTC txid与vote的关系

    当我通过BTC的listtransactions接口获取查询最近发生的钱包交易时 需要将用户的充值记录写到数据库时 发现了一些令人巨大的误解 例如 txid字段并不是唯一的 所以写到数据库时 会有交易哈希重复的可能性 有可能你的两个用户在币