# 交易和状态

交易和状态这两个基础概念是 Aptos 区块链的核心：

* 交易：交易代表 Aptos 区块链上账户之间数据的交换（例如 Aptos 币和 NFT）。
* 状态：状态（即区块链当前的账本状态）代表该区块链当前状态的快照。

当交易被执行时，Aptos 区块链的状态就会改变。

## 交易

当 Aptos 区块链客户端提交交易时，将请求使用用它们的交易来更新账本状态。

区块链上的签名交易包含以下信息：

* **签名：**&#x53D1;送方使用数字签名来验证他们是否签署了交易（即验证）。
* **发送方地址：**&#x53D1;送方的帐户地址。
* **发送方公钥：**&#x4E0E;用于签署交易的私有身份验证密钥相对应的公共身份验证密钥。
* **程序：**&#x7A0B;序包括：
  * Move 模块和函数名称或 Move 字节码交易脚本
  * 脚本的可选输入列表。对于点对点交易，这些输入包含接收方的信息和转移给他们的金额
  * 要发布的 Move 字节码模块的可选列表
* **Gas 价格**（具体说是 gas 单位）：这是发送方愿意为执行交易而支付的每单位 gas 的金额。Gas 是支付计算和存储费用的一种方式。Gas 单位是对计算的抽象测量，没有固定的实际价值。
* **最大 gas 量：**&#x6700;大 gas 量是交易允许消耗的最大 gas 单位。
* **序列号：**&#x8FD9;是个无符号整数，必须于执行时的发送方的帐户序列号相等。
* **过期时间：**&#x4EA4;易停止有效（即过期）的时间戳。

## 账本状态

Aptos 区块链的账本状态（或全局状态）包括区块链中所有帐户的状态。区块链中的每个验证器节点必须知道最新版本的区块链分布式数据库（版本数据库）的全局状态才能执行任何交易。

### 版本数据库

Aptos 区块链中的所有数据都保留在单版本的分布式数据库中。版本号是一个无符号的 64 位整数，对应于系统执行的交易数量。

版本数据库允许验证节点：

* 在最新版本对账本状态执行交易
* 回复客户端对当前和以前版本账本历史记录的查询

### 交易变更状态

<figure><img src="https://1298478727-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9FI8oYwrsIrHQeIJd3qm%2Fuploads%2FT8zbdEjybGfOs3ZVRq0Y%2Fimage.png?alt=media&#x26;token=65e117cd-3e6c-491e-af34-31e5a8853aa5" alt=""><figcaption><p>图片 1.0 交易变更状态</p></figcaption></figure>

图 1.0 显示了执行交易 TN 如何将 Aptos 区块链的状态从 SN-1 更改为 SN。

在这个图中：

| 名称       | 描述                                                                                                                                                    |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| 帐户 A 和 B | 在 Aptos 区块链上代表用户 A 和用户 B 的帐户                                                                                                                          |
| SN-1     | 表示区块链的第（N-1）状态。在这个状态，用户 A 的账户 A 余额为 110 枚 Aptos 币，用户 B 的账户 B 余额为 52 枚 Aptos 币。                                                                        |
| TN       | 这是在区块链上执行的第N笔交易。在本例中，它代表用户 A 向用户 B 发送了 10 枚 Aptos 币。                                                                                                  |
| F        | 这是一个确定性函数。F 总是为特定初始状态和特定交易返回相同的最终状态。如果区块链的当前状态为 SN-1，交易 TN 在状态 SN-1 上执行，则区块链的新状态始终为 SN。Aptos 区块链使用 Move 语言实现确定性执行函数 F。                                |
| SN       | 这是区块链的第 N 个状态。当交易 TN 应用于区块链时，它会生成新的状态 SN（将 F 应用于 SN-1 和 TN 的结果）。这导致用户 A 的账户余额减少 10 至 100 枚 Aptos 币，用户 B 的账户余额增加 10 至 62 枚 Aptos 币。新的状态 SN 显示了这些更新的余额。 |
