前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个比特币交易流程是如何完成的 原

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

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

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

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

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

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

术语和缩写的定义

  • 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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 术语和缩写的定义
  • 什么是比特币交易?为什么?
  • 比特币交易输入和输出
  • 比特币交易如何完成的总结
相关产品与服务
腾讯云区块链服务平台 TBaaS
腾讯云区块链服务平台(Tencent Blockchain as a Service,简称TBaaS)致力于打造全球领先的企业级区块链技术平台,帮助客户、开发者及合作伙伴轻松创建和管理可托管、可扩展的区块链网络,助力产业协同发展。TBaaS 支持长安链·ChainMaker、Hyperledger Fabric等区块链底层平台,简化部署、运维及开发流程,实现业务快速上链,提升链上治理效率。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档