白话比特币第六章:交易

2018-07-23  本文已影响10人  曹木木1920

比特币完整节点跟踪所有可找到的和可使用的输出,称为“未交易得花费输出”,即UTXO。

当我们说用户的钱包已经收到比特币时,意思是钱包已经检测到了可用的UTXO。因此,用户的比特币余额是指用户钱包中可用UTXO总和,而他们可能分散在数百个交易和区块中。1个UTXO可以是1“聪”(satashi)的任意整数倍。

一笔交易会小号先前已被记录的UTXO,并创建新的UTXO以备未来的交易消耗。

从交易的输入和输出链角度来看,有一个例外:币基交易。它是每个区块中第一笔交易。这种交易存在的原因是作为对挖矿的奖励,创造出全新可花费比特币用来支付给赢家矿工。先有输出。

交易输出包含两部分:一定量的比特币、确定花费输出所需条件的加密难题(锁定脚本或见证脚本或脚本公钥)。

交易输入将UTXO标记为将被消费,并通过解锁脚本提供所有权证明。

大多数交易包含交易费(矿工费),是为了确保网络安全而给比特币矿工的一种补偿。

交易费基于交易的千字节规模来计算,而不是比特币交易的价值。

任何创建交易的比特币服务,包括钱包、交易所、零售应用等,都必须实现动态收费:动态费用可以通过第三方费用估算服务或内置费用估算算法来实现。

费用估算算法根据网络能力和“竞争”交易提供的费用计算适当的费用。

许多钱包应用程序使用第三方服务进行费用计算。

费用估算数据可以通过简单的HTTP REST API来检索。API通过费用估算一satoshi per byte 返回一个JSON对象,从而实现“最快确认”,以及在三个块和六个块内确认。如:$ curl https://bitcoinfees.21.co/api/v1/fees/recommended

比特币脚本语言,称为脚本:当一笔交易被验证,脚本执行,以确定这笔交易是否满足支付条件。

脚本具有有限的复杂性和可预见的执行次数。

脚本没有中心化主体。

主要有两类脚本:锁定脚本和解锁脚本。锁定脚本是一个放置在输出上面的花费条件,往往含有一个公钥或比特币地址。解锁脚本允许输出被消费。每一个比特币验证节点会通过同时执行锁定和解锁脚本来验证一笔交易。

数字签名有三种用途:1.证明私钥的所有者已经授权支出这些资金;2.授权证明是不可否认的;3.签名证明交易在签字之后没有也不能被任何人更改。

每个交易输入都是独立签名。

数字签名是一种数学方案,由两部分组成:第一部分是使用私钥从消息(交易)创建签名的算法;第二部分是允许任何人验证签名的算法,给定消息和公钥。

P2PKH是最常见的交易脚本类型。

上一篇下一篇

猜你喜欢

热点阅读