主页 > imtoken安卓版下载 > 【链圈知识】区块与交易

【链圈知识】区块与交易

imtoken安卓版下载 2023-07-28 05:18:34

数据通过称为块的文件永久记录在数字货币网络上。 它们就像一个股票交易分类账。 新块被添加到记录(区块链)的末尾,一旦写入就很难修改或删除。

块状结构

尺码字段说明

4-byte block size 此字段之后的块大小(以字节为单位)

80字节的区块头由区块头的几个字段组成

1-9(可变整数)交易柜台交易编号

可变交易记录在区块中的交易信息中

块头

区块头由三组区块元数据组成。 第一个是引用父块哈希的一组数据。 这组元数据用于将这个块连接到区块链中的前一个块。 第二组元数据,难度、时间戳和随机数,与挖矿竞争有关。 第三组元数据是默克尔树根(一种用于有效汇总区块中所有交易的数据结构)。

区块头结构

尺码字段说明

4字节version版本号,用于跟踪软件/协议更新

32字节的父块哈希值是指父块在区块链中的哈希值

32 bytes Merkle root 本区块交易的默克尔树根哈希值

4-byte timestamp 区块产生的大概时间(Unix时间戳,精确到秒)

4-byte difficulty target 该块的工作量证明算法的难度目标

4 字节 Nonce 用于工作量证明算法的计数器

创世区块

比特币区块链的第一个区块创建于 2009 年,称为创世区块。 它是比特币区块链中所有区块的共同祖先,这意味着如果你从任何一个区块开始追溯,最终都会到达创世区块。

每个节点都“知道”创世块的哈希值、其结构、创建时间以及其中的交易。 因此,每个节点都将这个区块作为区块链的第一个区块,从而构建一个安全可信的区块链根。

在 chainparams.cpp 中,您可以看到创世块被编程到比特币核心客户端中。

创世块的哈希值为:

0000000000 19d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

你可以在任何区块浏览网站上搜索这个区块哈希,比如区块元(blockmeta),你会找到一个描述这个区块内容的页面,上面有一个包含这个哈希的链接:

从命令行使用比特币核心客户端:

$ bitcoindgetblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f{ "hash":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "confirmations":308321, "size":285, "height":0, "version":1, "merkleroot":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", "tx":[" 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"], "time":1231006505, "nonce":2083236893, "bits":"1d00ffff", "difficulty":1.00000000, "nextblockhash":"00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"}

创世块包含一条隐藏信息。 在其 Coinbase 交易的输入中包含一句话“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。 这句话是当天泰晤士报头版文章的标题。 区块生成时间的描述。

比特币区块记录查询_比特币区块_比特币区块头有多少个字节

交易

我们定义一个电子币是一系列的数字签名:每个拥有者对上一次交易的一个随机哈希数和下一个拥有者的公钥(Public key)进行签名,并将这个签名附加到电子货币的末尾,而电子货币被发送给下一个所有者。 收款人可以通过验证签名来验证链的所有者。

比特币区块记录查询_比特币区块_比特币区块头有多少个字节

这个过程的问题是接收者很难验证前任所有者是否双花了硬币。 通常的解决方案是引入可信任的第三方机构,或者类似铸币厂的机构,对每笔交易进行验证,防止重复支付。 每次交易后,电子货币将被铸币厂回收,铸币厂将发行新的电子货币; 只有铸币厂直接发行的电子货币才会被认为是有效的,这样可以防止双重支出。 但这种解决方案的问题在于,整个货币体系的命运完全取决于运营铸币厂的公司,因为每一笔交易都必须经过铸币厂的确认,铸币厂就像一家银行。

我们需要某种方式让收款人确保之前的所有者没有在较早的交易上签字。 从逻辑上看,为了达到我们的目的,其实我们需要关注的只是这笔交易之前发生的交易,而不需要关注之后是否会有重复支付的尝试此交易发生。 为了保证一个交易不存在,唯一的办法就是知道之前发生过的所有交易。 在造币厂模型中,造币厂知道所有交易并确定交易完成的顺序。 如果要在电子系统中排除第三方中介,那么交易信息就应该公开(publicly announced),我们需要整个系统的所有参与者都有一个唯一认可的历史交易顺序。 收款人需要确保交易过程中的大多数节点都同意交易是最先发生的。

交易结构

例如,一笔比特币交易(Transation,缩写为Tx)并不是通常意义上的一手支付、一手交付等交易,而是转账。 一笔交易由 N 个输入和 M 个输出组成。 交易结构是一种数据结构,其功能是编码从资金来源到目标的价值旅程。 其中,资金来源在交易中称为输入,目标称为输出。 一个交易包含版本、输入定时器、输入、输出定时器、输出、锁定时间等字段。

交易输出和输入

交易的每一个输入都是正向交易的一个输出,所以追根溯源比特币区块头有多少个字节,必然有一个没有输入的交易。 这种类型的交易称为 coinbase Tx。 交易单位是未花费的输出,或:UTXO。 UTXO 是一种不可分割的比特币结构,锁定交易者,并记录在区块链上。 当用户收到它时,金额以 UTXO 的形式记录在区块链上。

只有一种叫做 COINBASE 的特殊交易,是由矿工的获胜者完成的。 CoinBase交易是奖励矿工产生的交易,交易总是位于Block的第一个区块。

虽然 UTXO 可以有任何值,但一旦创建就不能更改。 大额交易必须一次花掉比特币区块头有多少个字节,然后冲回。

交易输出除 OF-RETURN 外均为 UTXO。 这些 UTXO 被记录在链上,并被未来的交易所花费。 向某人发送比特币就是创建一个 UTXO 并将其注册到他的地址。 Rui 之后,他可以花掉这个 UTXO。

UTXO 由所有完整客户端以称为 UTXO 集或 UTXO 池的内存数据库形式进行跟踪。

交易输出包括锁定脚本和单元。 输出结构包括锁定脚本的数量、大小和可变长度脚本。

交易输入是指向 UTXO 的指针。 它们通过引用交易哈希和区块链中 utxo 的序列号来引用特定的 UTXO。

交易输入包括解锁脚本,它是证明锁定脚本中比特币地址所有权的签名。

交易输入结构包括交易哈希、输出索引、解锁脚本大小、解锁脚本、序列号等。

手续费

每笔比特币交易都会向付款人收取一定的交易费用。 与银行收取固定费率或总交易价值的百分比不同,比特币的费用是基于编码所需的数据量。 典型的交易需要两种输出——一种用于支付收款人,另一种用于接受找零。

有些交易可以免交易费。 满足以下条件用户可免费交易:小于1000字节; 所有输出都大于 10 mBTC; 输入值大且耗时; 这些限制是为了防止恶意用户发布低价值的“垃圾邮件”交易以试图干扰网络。 这最后一个要求使得高价值交易免于交易费用,只要交易之间有足够的时间。 这个要求叫做“优先级”

未完待续。 . . . . .