比特币如何买卖交易?比特币交易费用怎么算?

互联网 阅读 663 2024-04-25 16:14:02

作者:sheinix

来源:https://medium.com/coinmonks/bitcoin-transactions-be401b48afe6

原文发表于 2018 年 6 月。

何为比特币交易

比特币交易是比特币区块链的基础组成部分。这一操作可以帮助我们将价值从一方安全地转移给另一方。下图随机截取了比特币区块链上某个经过一次确认的交易:

img

- 比特币区块浏览器上的交易 -

上图显示了比特币交易中包含的部分信息,但是无法体现它是如何运作的,只是通过用户可读的方式将这些信息展示出来而已。

除了解释上图出现的一些概念之外,本文还将阐述一个事实:从协议层来看,比特币根本不是 “币”,没有所谓的余额,也无法被存储。在比特币的定义中,“分布式账本” 可谓重中之重,因为比特币实际上是记录交易输入和输出的账本!

注:1 BTC 最多可以分割至小数点后 8 位,而 0.00000001 BTC 又可称为 1 satoshi。因此,假设我通过一笔交易发送了 0.00000045 BTC,也可以说是发送了 45 satoshi。

比特币交易由输入和输出组成。所谓的输入和输出并不仅仅是上图所示的输入和输出地址。从现在起,我们会更准确地将输出称为:未用过的交易输出(Unspent Transactions Output,UTXO)。在比特币协议中,交易输入就是前一笔交易的 UTXO。因此,UTXO 是比特币交易中的基础组成部分。

注:我们这里说输入是前一笔交易的 UTXO,事实也确实如此。但是,我们还会在后文提到另一个输入,就是 UTXO 中的解锁脚本。特此说明,请注意区分。

现在,你是不是已经对比特币区块链的运作方式有了一些了解了呢?请记住,比特币是记录每个 UTXO 的分布式账本。现在,你能明白为什么我会说比特币没有余额,也无法被存储了吧?因为一切都包含在交易历史中!

例如,为了显示你的比特币 “余额”,钱包软件必须在比特币区块链上查询所有由你的私钥控制的 UTXO,然后将这些 UTXO 的值相加,并显示最终余额。同样地,假如你想花费 1 BTC,你的钱包会检查你所有的 UTXO 加起来是否有 1 BTC。如果有的话,你的钱包就会使用这些 UTXO 作为输入来创建另一笔交易。

钱包软件和轻客户端通常会追踪其私钥持有的 UTXO。全节点客户端则会把比特币网络中的所有 UTXO 存储在本地的 UTXO 集合中。

UTXO 是不可分割的独立价值单位,使用 satoshi 计价。在说到 UTXO 不可分割时,你肯定会想:如果我们想要花费的比特币数额低于我们所拥有的 UTXO 的面值,那该怎么办呢?我们来看下面这个例子:

我想给 Sarah 发送 0.5 BTC,我的余额只有一个面值为 1 BTC 的 UTXO。因此,我无法将这个 UTXO 拆分开来,必须通过交易花掉一整个 BTC,并创建另一个输出作为找零。这就好比我们拿一张 5 元纸币去买 2 块钱的东西,我们不能把这张纸币撕开来付款,只能支付整张 5 元纸币,然后获得 3 块钱的找零。这就是比特币交易的关键特性。

再来看上图的比特币交易,我们可以看到来自前一个 UTXO 的总输入是 4.32123876 BTC,预计 BTC 交易额是 0.1 BTC,输出地址有 4 个,那个输出额为 0.1 BTC 的地址可能是交易的收款方,剩下三个是随机生成用来找零的地址。出于安全性和匿名性的原因,一些钱包会生成随机的比特币地址,并将找零分开支付,让资金流向变得更难追踪,这就是为什么我们前面说的是 “预计交易额”,因为我们也不能断定哪个 utxo 才是真正的支付行为。

img

只有一类交易不花费已有 UTXO。这类交易被称为 coinbase 交易。这是区块中的第一笔交易,把该区块内所有交易的交易费支付给矿工。

交易费

你注意到总输入和总输出之间的差值没?如果你看交易的 “Fee” 一栏显示的数值,就会发现交易费就是总输入和总输出之间的差值。因此,交易费的计算公式如下:

总输入 - 总输出 = 交易费

这个公式很重要,因为交易费必须动态计算,交易结构中没有指明交易费的地方。在创建交易时,我们必须确保输出略低于输入,让矿工知道交易费是多少。

大多数交易都包含一笔交易费,用来补偿保护网络安全的矿工。这样也有利于阻止有人连续不断发送交易来攻击网络。交易费由将交易打包到下一个区块的矿工收取。另外还要注意的一点是,交易费不是强制收取的,但是很少有零交易费的交易会被打包挖出,有时甚至不会在网络中广播。

交易费是如何计算的?

为了选择总输入和总输出之间的差值,我们必须判断交易的复杂性。交易费是根据交易的数据量大小(以 kb 为单位)而非交易数额计算的。一笔 10 BTC 的交易支付的交易费可能低于一笔 2 BTC 的交易。

如今,一些服务可以根据用户的输入动态计算交易费的大小。用户可以选择支付高、中、低水平的交易费。交易费的高低会影响交易处理的优先级,因为矿工会优先处理交易费高的交易来获得更高的收益。低交易费的交易需要等待更长时间才会得到处理。

如何花费 UTXO?交易输入是如何创建的?

在这一小节,我们将探索比特币是如何验证付款方是否拥有其所花费的 UTXO,以及收款方是否能使用该笔交易所产生的 UTXO 的。 为此,每笔交易都使用最基本的密码学难题或锁定脚本作为交易的验证器。为了解开锁定脚本,我们还需要解锁脚本。让我们更深入地了解锁定脚本和解锁脚本:

锁定脚本和解锁脚本

锁定脚本规定了花费 UTXO 的条件,即,未来花费该输出需满足的条件。解锁脚本满足锁定脚本规定的花费输出的条件,让输出得以花费。解锁脚本存在于交易输入中。

img

- 比特币交易图解 -

创建输入时,我们必须提供满足所用 UTXO 的锁定脚本所规定条件的解锁脚本。验证交易的节点可以从交易中获得输入和解锁脚本(但其中没有锁定脚本),因而必须追踪需要花费的 UTXO 并获取其锁定脚本。之后,节点将一同执行锁定脚本和解锁脚本。如果解锁脚本满足锁定脚本规定的条件,该输入就是有效的。

Scrypt 语言

比特币交易语言叫作 Scrypt。锁定脚本和解锁脚本就是用 Scrypt 语言编写的。Script 被设计成了一种非图灵完备的编程语言,这意味着它缺乏图灵完备语言所具有的某些流程控制特性 —— 这是出于安全目的而有意设计的。这样可以降低编程语言的复杂性,让执行次数变得可以预测,从而降低遭到黑客攻击或出现漏洞的概率。

还需指出的是,锁定脚本和解锁脚本是基于编程语言编写的,因此与代码内的逻辑相绑定,这赋予了编程人员很强的灵活性,可以表达近乎无限多种条件。换言之,交易验证并非基于静态模式。

尽管如此,比特币网络中的大部分交易都是使用 Pay-to-Public-Key-Hash(P2PKH)锁定的 这些输出包含的锁定脚本会将输出锁定到某个比特币地址。使用 P2PKH 脚本锁定的输出必须出具公钥和由对应私钥创建的数字签名才能花费。

总而言之,几乎所有比特币交易都使用 P2PKH 锁定脚本来锁定未花费交易。这就意味着我们必须提供数字签名和对应公钥作为交易输入中的解锁脚本。然后,验证节点将获取对应的 UTXO 并使用我们的解锁脚本执行相关的锁定脚本来检查其是否有效。如果有效,交易就通过了验证,可以在网络中传播、可以打包到区块内。

这就是比特币交易的运作方式。感谢你阅读到最后,希望你能有新的收获。

(完)


免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:闪电网络是由谁提出的?闪电网络能解决哪些问题? 下一篇:比特币到底是什么?不讲技术的比特币概述

相关资讯

  • 打破中心化交易所局限:链上收益指南
    打破中心化交易所局限:链上收益指南

    本期 #HottestCoin 将介绍链上收益玩法,教你如何在链上获得稳定高效的被动收益,并详细解析热门项目。在当前市场环境下,链、DAPP和叙事都很重要,但与策略本身无直接关系。EVM系主网、Arbitrum和BNB Chain可提供长期稳定收益率。DAPP主要包括DEX、借贷、稳定币、收益市场Pendle和单独项目。选择DEX池子需注意手续费、代币激励和无常损失带来的成本,适合散户的池子有稳定币和LRT/LST池子。Curve上的PWRD Metapool四池和@mavprotocol的GHO稳定币相

    每日资讯 2024-05-07 20:00 725
  • 本周值得关注的9个催化剂及空投机会
    本周值得关注的9个催化剂及空投机会

    本周9大加密事件,包括Eigenlayer代币发布、NVIDIA财报发布、Jito宣布新的SOL再质押协议、Velodrome的Superchain扩展、Aptos代币解锁、Pendle和Ethena在Solana上的部署、Mode代币发布、Sei V2主网发布日期公布。此外,还有两个空投机会,分别是在Sanctum上质押SOL和在Karak上存入USDe稳定币。这些活动都值得关注,可能会带来未来的收益。.....

    每日资讯 2024-05-07 19:00 608
  • 观点:本轮牛市与以往不同,应降低预期
    观点:本轮牛市与以往不同,应降低预期

    加密分析师Pentoshi认为,此轮加密牛市仍有机会,但应设定更现实的期望。市场底价定得很高,每轮周期底部都是前一轮低点的10倍。市场增长不可复制,未来会出现更多山寨币,市场会进一步扩大。作者建议降低期望,不要与过去周期相比。最后阶段All in并不明智,应抓住整个牛市的80%,保护收益,用最少的钱重新开始。未来仍有机会,但应设定更现实的期望。.....

    每日资讯 2024-05-07 19:00 193
  • 速览a16z、BlackRock和Coinbase持有的10个潜力山寨币
    速览a16z、BlackRock和Coinbase持有的10个潜力山寨币

    风险投资者每天向山寨币投资数百万美元,追踪顶级风投机构和巨鲸的钱包并跟投,可获得超额利润。加密KOL Atlas选择了表现最好的基金和10种有前途的代币,包括a16z、BlackRock、Coinbase、Compound Labs、Ispolink等。本文提供市场信息,不构成投资意见,DYOR。.....

    每日资讯 2024-05-07 19:00 27
  • 解析主网与测试网在区块链中的关键作用与区别
    解析主网与测试网在区块链中的关键作用与区别

    主网(Mainnet)指的是区块链协议的完全开发和部署状态,它是正式运转的网络空间,具有独立,完整,自主的区块链系统,有自己的共识机制、算法社交、安全模型等。在此状态下,加密货币交易被广播、验证并记录在分布式账本上。 在主网上,所有的交易都是真实的,涉及真实的货币交易。主网上的每个节点都需要保持同步,以确保区块链的安全性和完整性。主网通常是通过共识算法来保证网络的安全和稳定运行。

    区块链知识 2024-05-07 18:37 598
  • 深度解析加密货币市场的流动性提供者以及重要性
    深度解析加密货币市场的流动性提供者以及重要性

    在电子交易领域,流动性提供者是金融市场中不可或缺的角色。它们可以是大型银行、大宗经纪公司等金融机构,通过在订单簿中下达大量限价订单来增强市场流动性。这一行为对于维持市场平衡至关重要,特别是在大量交易的金融工具中。通过提供流动性,它们降低了点差和交易成本,从而促进了跨市场的交易。

    加密货币知识 2024-05-07 18:24 419
  • SegWit 及其后继者:Taproot、UASF 和闪电网络
    SegWit 及其后继者:Taproot、UASF 和闪电网络

    人们常说,比特币抗拒变化。在某种程度上,说得没错 —— 在协议变更的事项上,比特币开发者保守得令人发指 —— 但这种看法未免有些偏狭:比特币也拥抱变化,但是仅限于那些让比特币变得更好的变化。 比特币要做到之前没有任何技术能做到的事,成为一种货币,就必须是无懈可击的。不能容许网络停机、区块出错、溢出错误和舍入错误。比特币必须保持稳定:任何对比特币代码的改进和修改都有可能造成灾难性的经济后果,故而给人以如临深渊、如履薄冰之感。

    比特币知识 2024-05-07 16:45 327
  • 比特币开发之道
    比特币开发之道

    过去几年来,比特币扩容问题引发热议,史无前例地将大众的目光聚焦在了比特币协议演进背后的开发流程上。虽然开源软件项目历来都要承受来自利益竞争的重压,并应对不同开发团队所推崇的不同愿景,但是,在比特币这个项目上,这个系统关系到的利益的范围和种类,以及人们对开发流程发表意见的动机,凝结成了一种完全独一无二的情形。

    比特币知识 2024-05-07 16:33 338