# 交易和状态

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

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

执行交易时，Aptos 区块链的状态会发生变化。

## 交易

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

区块链上的[签名交易](https://aptos.dev/reference/glossary#transaction)包含以下信息：

* **签名**： 发件人使用数字签名来验证他们是否签署了交易（即身份验证）。
* **发送方地址**: 发送者的 [账户地址](https://aptos.dev/reference/glossary#account-address)。
* **发送方公钥**: 对应于用于签署交易的私有认证密钥的公共认证密钥。
* **程序**: 程序包括：
  * Move 模块和函数名称或 Move 字节码交易 script。
  * script 输入的可选列表。对于点对点交易，这些输入包含接收者的信息和转账给他们的金额。
  * 要发布的 Move 字节码模块的可选列表。&#x20;
* **Gas 价格** （以指定的货币/Gas 单位表示）：这是发送方愿意为执行交易而为每单位 Gas 支付的金额。 Gas 是一种支付计算和存储费用的方式。[Gas](https://wiki.aptos.movemove.org/gas-he-jiao-yi-fei#using-gas-to-compute-transaction-fees) 单位是计算的抽象度量，没有内在的现实世界价值。
* **最大 gas 数量**: [最大 gas 量](https://aptos.dev/reference/glossary#maximum-gas-amount)是允许交易消耗的最大 gas 单位。
* **Gas 货币代码**: 用于支付 Gas 的货币代码。
* **序列号**: 是一个无符号整数，在执行时必须等于发送者的帐户序列号。
* **过期时间**: 交易停止有效（即过期）之后的时间戳。

## 账本状态

Aptos 区块链的账本状态（或全局[状态](https://aptos.dev/reference/glossary#state)）包括区块链中所有账户的状态。 区块链中的每个验证者节点都必须知道区块链分布式数据库（版本化数据库）最新版本的全局状态，才能执行任何交易。

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

### 版本化数据库[​](https://aptos.dev/basics/basics-txns-states#versioned-database) <a href="#versioned-database" id="versioned-database"></a>

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

这个版本化的数据库允许验证节点：

* 针对最新版本的账本状态执行交易。
* 响应客户对当前和以前版本的分类帐历史的查询。

### 交易改变状态[​](https://aptos.dev/basics/basics-txns-states#transactions-change-state) <a href="#transactions-change-state" id="transactions-change-state"></a>

![FIGURE 1.0 TRANSACTIONS CHANGE STATE](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FkNe2mKUKkqStDT3YxdR9%2Fimage.png?alt=media\&token=c909360e-ee77-4b6e-a822-d09915c532ea)

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

图中：

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