Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个比特币交易流程是如何完成的 原

一个比特币交易流程是如何完成的 原

作者头像
笔阁
发布于 2018-11-09 08:45:16
发布于 2018-11-09 08:45:16
3.6K0
举报
文章被收录于专栏:极客编程极客编程

本文解释了比特币交易的内容,目的和结果。下面的解释适用于新手和中级比特币用户。

作为加密货币用户,你需要熟悉交易雏形——为了你对这种不断发展的创新有信心,以及作为理解新兴多签名交易和合约的基础,这两者都将在本系列的后期进行探讨。这不是纯技术文章,解释将集中在你需要了解的标准比特币交易——我们通常做的支出交易——并且我们将掩盖你可以安全忽略的内容。

本文底部的信息图提供了从钱包到区块链的整个比特币交易流程的全面说明。

注意:即使是核心开发人员也承认,用于描述交易及其组件的某些语言可能导致人们误解了实际发生的事情。在下面的解释中避免了这些误解。因此,在尝试尽可能简单的描述的同时,借助一些图表,让我们直接开始。

术语和缩写的定义

  • Bitcoin:具有大写B的比特币指的是协议——代码,节点,网络及其对等交互。
  • bitcoin:用小写字母b表示货币——我们通过比特币网络发送和接收的加密货币。
  • tx:在文本中使用的任何地方——是比特币交易‘Bitcoin transaction的缩写。
  • txid:是transaction id的缩写——这是人和协议引用交易的哈希。
  • Script:是比特币协议的脚本系统的名称,用于处理和验证交易——脚本是一个聪明的,基于堆栈的指令引擎,它使得从简单支付到复杂的oracle监督合约的所有交易成为可能。
  • UTXO:Unspent Transaction Output的缩写,也称为“输出”。
  • satoshi:1 BTC = 100,000,000 satoshi

什么是比特币交易?为什么?

1.定义

比特币交易是一个经过签名的数据,它被广播到网络上,如果有效,最终会进入区块链的一个区块。

2.目的

比特币交易的目的是将一定数量的比特币的所有权转移到比特币地址。

3.结果

当你发送比特币时,你的钱包客户端会创建一个单一的数据结构,即比特币交易,然后广播到网络。网络上的比特币节点将中继和重新广播交易,如果交易有效,节点将把它包含在他们正在挖掘的块中。通常,在10-20分钟内,交易将与区块链中的一个区块中的其他交易一起被包括在内。此时接收者能够看到他们钱包中的交易金额。

4.例子

以下是今年早些时候区块链中包含的示例交易:

此标准交易的主要组成部分采用颜色编码:

  • 交易ID(以黄色突出显示)
  • 描述符和元数据(蓝色花括号在右边详细说明)
  • 输入(粉色区域)
  • 输出(绿色区域)

比特币交易输入和输出

首先,关于交易的四个公理:

  • 我们发送的任何比特币金额总是发送到一个地址。
  • 我们收到的任何比特币金额都被锁定在接收地址——这通常与我们的钱包相关联。
  • 每当我们花费比特币时,我们花费的金额将始终来自之前收到的并且目前存在于我们钱包中的资金。
  • 地址接收比特币,但他们不发送比特币——比特币是从钱包发送的。

进入我们钱包的金额并不像实体钱包中的硬币那样混乱。收到的金额不会混合,但保持独立且与钱包收到的确切金额不同。这是一个例子:

示例:

你创建一个全新的钱包,并及时收到三个0.01,0.2和3BTC的金额,如下所示:你将3BTC发送到与钱包相关联的地址,并由Alice向另一个地址付款。

钱包报告的余额为3.21BTC,但如果你真的看钱包里面,你会看到——不是321,000,000 satoshi(321 mil satoshi),但是三个不同的数量仍然由他们的原始交易组合在一起:0.01,0.2和3BTC。

收到的比特币金额不会混合,但保持分开,作为发送到钱包的确切金额。上例中的三个金额称为其原始交易的输出。

比特币钱包始终保持输出分离和独特。

输出output是(通过标准交易)发送到比特币地址的金额,以及解锁输出金额的一组规则。在比特币用语中,输出称为“未使用的交易输出”或UTXO

可以使用与接收地址相关联的私钥解锁标准交易输出。地址及其相关的公钥/私钥对将在本系列的后面部分介绍。目前,我们只关注总数。

示例:

让我们考虑一个例子,在你向Bob发送0.15BTC的情况下跟踪钱。

正如我们所看到的,你的钱包没有选择15mil miloshi(0.15 BTC)来自一个无差别的321 mil satoshi组成钱包余额。相反,钱包从钱包中包含的三个现有输出outputs中选择一个支出候选者。因此,它选择(由于各种原因,现在不重要)0.2BTC输出。钱包将解锁0.2 BTC输出并使用全部0.2BTC作为新的0.15 BTC交易的输入input。0.2BTC输出在此过程中花费spent

你的钱包创建的花费交易将向Bob的地址发送0.15BTC——它将作为输出存放在他的钱包中——等待最终花费。

0.05BTC差额(0.2 BTC输入减去0.15 BTC输出)称为改变change,交易将通过新创建的地址将其发送回你的钱包。0.05 BTC改变的金额将作为新输出存放在你的钱包中——等待最终花费。所以,现在你钱包里会显示以下内容:

“等待花费”的三个输出中的每一个被锁定到其接收地址,直到选择它们中的一个或多个作为新花费交易的输入为止。

在后台,当选择UTXO作为新交易的输入时,不同的钱包客户端应用不同的逻辑规则。一个理智的钱包策略是尽可能先使用旧的UTXO,但实现方式不同。我们现在并不关注选择UTXO的方式,因为我们的目标一直是强调我们的钱包收到的金额是分开的和不同的。

比特币交易如何完成的总结

各种收到的金额不会像在实体钱包中那样混合。相反,在我们花费比特币时,收到的金额(UTXO)被单独使用(或组合使用)。在创建支出交易时,我们的钱包选择UTXO(具有足够的价值以满足我们想要发送的金额)并且通常创建两个新输出:一个用于接收器,一个用于我们收到的更改到钱包。更改成为我们钱包中的全新UTXO,我们发送的金额成为锁定到收件人地址的UTXO——可能与钱包相关联,也可能不与钱包相关联,例如冷存储。用作支出交易的输入的原始UTXO将“花费”并永久销毁。

这是钱包软件如何处理输出(UTXO)的介绍。一旦选择了UTXO用于支出,它就需要与接收它的地址相关联的私钥。此私钥兑换UTXO并允许它成为新支出交易中的输入。以前的交易输出被重新用作新交易的输入的机制是比特币协议功能的核心——完全符合Satoshi的设计。

建议你浏览我们汇智网的各种编程语言的区块链教程和区块链技术博客,深入了解区块链,比特币,加密货币,以太坊,和智能合约

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使⽤Footprint Analytics 对⽐特币进行数据分析
比特币数据模型构建在区块链技术之上,其主要特点是去中心化、不可篡改和安全加密。比特币数据模型由区块链数据结构、加密机制、P2P网络协议和智能合约组成。
Footprint Analytics
2023/02/02
7300
使⽤Footprint Analytics 对⽐特币进行数据分析
比特币核心技术解读
在上一篇文章《区块链基础知识与关键技术》里对区块链的基础知识和关键技术进行了梳理,而比特币是区块链最典型的应用,本文将对比特币核心技术进行解读,如有错漏,欢迎交流指正。
pseudoyu
2023/04/11
1.1K0
比特币核心技术解读
饭团开通一周,3人学会了比特币操作
最近比特币行情火爆,很多人听到此消息后全当作泡沫,没有绿灯思维。而有少许人则去快速学习区块链的相关知识,去探寻它背后的本质规律。每一个新技术的出现都会颠覆许多已有的认知,唯有快速学习才不会在这个快速变化的社会中掉队。 短短一周,我已经在饭团里教会了几位朋友安装钱包软件,普及了一些比特币的基本概念和操作办法,有3位朋友行动力超强,获得了我给他们每人转账0.001BTC的机会(收费25元)。 下面介绍在Bitcoin Core中发币、查看交易记录的过程。 发送 在Bitcoin Core客户端的转账操作很简单,
申龙斌
2018/03/06
9480
饭团开通一周,3人学会了比特币操作
一文看懂怎样用 Python 创建比特币交易
比特币价格的上上下下,始终撩动着每一个人无比关切的小心脏。从去年初的 800 美元左右,飞涨到去年底到 19783.21 美元最高点,不到1年,便有将近 25 倍的升值速度。尽管眼下又掉回 8000 多美元的价格,但价格差不多能搞出去年同期一个数量级,币圈人士“过去一年比以往 10 年挣的都多”,已经是不争的事实。 而对区块链开发者来说,据说也已经有拿到年新 500 万的天价。所以“跑步进入区块链”,已经成为不少程序员的共识。但是看过很多远离,我们如何才能迅速上手呢?国外网友 Ken Shirriff 在博
区块链大本营
2018/05/10
4.2K0
引介 | 用大白话解释 Taproot 对隐私性的影响
本文从非技术角度详细介绍了区块链分析的运作原理,以及 Taproot 对比特币用户隐私性的影响。
区块链大本营
2021/01/28
7930
引介 | 用大白话解释 Taproot 对隐私性的影响
《以太坊白皮书》笔记(1)——比特币介绍
#1 State Transaction System State 在 Bitcoin 当中,"state" 代表了所有被挖出且没有被消费的货币的集合 (UTXO - "unspent transaction outputs"),并且每一个货币都有面值和持有者。Bitcoin 交易:有 1 个或多个输入,包含现有的 UTXO 和由持有者地址相关的私钥签名有 1 个或多个输出, 包含一个新的 UTXO 并更新状态State Transaction Function输入当前状态和一笔交易,输出新的状态或
企鹅号小编
2018/01/30
1.1K0
《以太坊白皮书》笔记(1)——比特币介绍
虾说区块链-55-《精通比特币》笔记十
一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。 区块链-《精通比特币》笔记十: 《精通比特币》第二版网络在线阅读地址: http://book.8btc.com/books/6/masterbitcoin2cn/_book/ch08.html 交易独立验证:在钱包软件中,通过收集UTXO,提供正确的解锁脚本,新建一个支出给接收者来创建交易,随后交易广播到网络中。在节点收到交易的时候,首先验证该交易,检验正常则传播,检验不正常则在第一个节点
企鹅号小编
2018/01/22
9350
虾说区块链-55-《精通比特币》笔记十
比特币入门教程
比特币(bitcoin)诞生于2008年的一篇论文。 一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任
wangxl
2018/03/09
8991
比特币入门教程
区块链技术详解和Python实现案例
区块链可以说是互联网成立以来最重要和最具颠覆性的技术之一。它是比特币和其他加密货币背后的核心技术,在过去几年引起大家广泛的关注。 区块链的核心是一个分布式数据库,允许双方直接交易,而无需中央机构,也就是通常大家所说的"去中心化"。"去中心化"这个简单而重要的概念对银行、政府和市场等机构具有重大意义,可以说,任何依赖中央数据库作为核心竞争优势的企业或组织都可能受到区块链技术的挑战甚至颠覆。 本文的目标是给你一个区块链技术的实用介绍,而不是炒作比特币和其他加密货币概念。第1节和第2节介绍了区块链一些核心概念
小莹莹
2018/04/18
2.7K0
区块链技术详解和Python实现案例
虾说区块链-48-《精通比特币》笔记三
一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。 区块链-《精通比特币》笔记三: 电子书阅读《精通比特币》第二版地址: http://book.8btc.com/books/6/masterbitcoin2cn/_book/ch06.html bitcoin脚本语言基于堆栈的语言:使用堆栈数据结构。 堆栈:一种数据结构,允许push、pop,push在堆栈顶添加一个项目,pop在堆栈顶删除一个项目,堆栈操作对象为堆栈最顶端的项目,理解为后进
企鹅号小编
2018/02/11
1.1K0
虾说区块链-48-《精通比特币》笔记三
比特币是什么?比特币从何而来?
IFTNews:此文的目的是汇总比特币基本信息。最近我被问到很多关于密码空间的问题:你如何使用比特币?我如何购买比特币? WTF是我听过的比特币吗?加密吧? 如果你是个交易者,请忽略。如果你是投资者,或者只是想弄明白比特币的意义,那就继续阅读吧! 在考虑我关注比特币投资的基础知识时,我也认为在这里提到加密货币非常不稳定。市场规模很小,日间交易者全押。对于长期投资者来说,这种波动应该不重要。相反,它应该被拥抱。我们专注于每个月,每周甚至每一天都投入少量资金。因此,波动性是一件好事,它提供了以更低的价格更频
企鹅号小编
2018/01/24
2.2K0
比特币是什么?比特币从何而来?
简明介绍比特币钱包及其安全性
前两天介绍了TEE与区块链、比特币钱包的一些东西!也许不是很明白比特币钱包这个东西,(本文来自于知乎内容、整理、编辑) TEE与比特币硬件钱包应用之Ledger TEE与区块链技术---Rivetz 1,首先把比特币可以理解成256bit的私钥。可以理解这个私钥是个随机数且不可能重复的。历史上几次因随机数导致的丢币(比如说 blockchain.info 曾经出过2-3次随机数事件),都是因为程序写错了。私钥决定了比特币的所有权,必须保护好这个私钥。 2,地址,可以理解成256bit的公钥,也就是存放比特
安智客
2018/02/24
1.5K0
简明介绍比特币钱包及其安全性
如何开发一款支持多币种的钱包?
除了炒币之外,比较有深度的介入区块链行业的一种办法是开发Dapp,即去中心化的应用。钱包就是一种非常重要的Dapp,可以说是币圈用户的刚需,如果说微信是移动互联网的一种流量入口,那么一款好用的钱包可以说是区块链世界的流量入口。
申龙斌
2018/07/27
9990
比特币UTXO模型介绍 原
如果你曾上过BlockExplorer观察自己的比特币收入状况,你是否曾经被搞的一头雾水呢?这正是因为比特币所使用的交易模型并非我们直觉上以账户为基础的,而是一种叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特币所使用UTXO模型与乙太坊使用的账户模型在功能上的一些差异,但究竟这两个模型到底差在哪儿?
笔阁
2018/12/04
2.4K0
比特币UTXO模型介绍
                                                                            原
窥探比特币核心机制如何运转 原
比特币真的很酷。当然,有人在想它是否是一种有用的技术,无论我们目前是否处于加密货币泡沫中,或者它目前面临的治理问题是否会得到解决......但在纯粹的技术层面上,神秘的Satoshi Nakamoto创造了令人印象深刻的技术。
笔阁
2019/03/12
8710
窥探比特币核心机制如何运转
                                                                            原
带你了解“比特币黄金”和SegWit2x分叉
10月25日,比特币黄金从比特币中分离出来创造出一个基于ASIC挖矿的数字货币。几周之后,比特币公司中一个重要的集团想要根据 “纽约协议” 定义的SegWit2x方案来进行硬分叉,也许将要导致另一个新币的诞生。 如果这些都实现,在这篇文章发表后大约一个月内,比特币就会有三个不同的区块链和三种不同类型的币。一个区块链会符合现有的比特币协议;为了方便文章叙述,这个币会被称为“BTC”。第二个区块链会符合“比特币黄金协议”,这篇文章中,这个币会被称为“BTG”。第三个区块链会符合SegWit2x协议;这个币种将
区块链大本营
2018/05/10
9060
用 Go 构建一个区块链 -- Part 4: 交易(1)
翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。
用户1558438
2018/08/23
4670
USDT PHP开发包OmniTool简介
OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。下载地址:omni/usdt php开发包 。
用户1408045
2019/06/11
2.4K0
USDT PHP开发包OmniTool简介
基于Java语言构建区块链(四)—— 交易(UTXO)
上一篇 文章,我们实现了区块数据的持久化,本篇开始交易环节的实现。交易这一环节是整个比特币系统当中最为关键的一环,并且区块链唯一的目的就是通过安全的、可信的方式来存储交易信息,防止它们创建之后被人恶意篡改。今天我们开始实现交易这一环节,但由于这是一个很大的话题,所以我们分为两部分:第一部分我们将实现区块链交易的基本机制,到第二部分,我们再来研究它的细节。
王维
2018/04/12
2.4K2
基于Java语言构建区块链(四)—— 交易(UTXO)
区块链前世今生
作者:陶海军,腾讯通讯充值与彩票业务部高级工程师。 引言: 谈起区块链前世今生,我们不得不先说一下比特币。因为比特币和区块链如鱼水之间一样有着太多的关系。 比特币的起源 2008年,一位化名为中
腾讯大讲堂
2017/10/27
2.8K0
区块链前世今生
相关推荐
使⽤Footprint Analytics 对⽐特币进行数据分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档