> For the complete documentation index, see [llms.txt](https://docs.polysmartchain.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.polysmartchain.com/zhong-wen-jian-ti/qu-kuai-lian-ji-chu/jiao-yi.md).

# 交易

交易是由帐户发出，带密码学签名的指令。 帐户将发起交易以更新以太坊网络的状态。 最简单的交易是将 PSC 从一个账户转到另一个帐户。

### 什么是交易？ <a href="#whats-a-transaction" id="whats-a-transaction"></a>

PolySmartChain交易是指由外部持有账户发起的行动，换句话说，是指由人管理而不是智能合约管理的账户。 例如，如果 Bob 发送 Alice 1 PSC，则 Bob 的帐户必须减少 1 PSC，而 Alice 的账户必须增加 1 PSC。 此项操作发生在交易中，会变更状态。

![](https://ethereum.org/static/570dedb843948d6bef5e21a6769d5c35/302a4/tx.png)

改变 EVM 状态的交易需要广播到整个网络。 任何节点都可以在 EVM 上广播交易请求；此后，矿工将执行交易并将由此产生的状态变化传播到网络的其他部分。

交易需要收费并且必须开采才能有效。 为了使这种概述更加简单，我们将其称为 Gas 费和挖矿。

所提交的交易包括下列信息：

* `recipient` – 接收地址（如果为一个外部持有的帐户，交易将传输值。 如果为合约帐户，交易将执行合约代码）
* `signature` – 发送者的标识符。 当通过发送者的私钥签名交易来确保发送者已授权此交易时，生成此签名。
* `value` – 从发件人向收件人转移 ETH 的金额 （以 WEI 为单位，ETH 的一种面值单位）
* `data` – 可包括任意数据的可选字段
* `gasLimit` – 交易可以消耗的 Gas 的最大数量。 Gas 单位代表了计算步骤
* `maxPriorityFeePerGas` - 作为矿工小费包含的最大 gas 数量
* `maxFeePerGas` - 愿意为交易支付的最大 gas 数量（包括 `baseFeePerGas` 和 `maxPriorityFeePerGas`）

Gas 是指矿工处理交易所需的算力。 用户必须为此计算支付费用。 `gasLimit` 和 `gasPrice` 决定支付给矿工的最高交易费用。

交易对象看起来像这样：

```
//{ 
    from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8", 
    to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a", 
    gasLimit: "21000", 
    maxFeePerGas: "300" 
    maxPriorityFeePerGas: "10" 
    nonce: "0", 
    value: "10000000000",
}
```

但交易对象需要使用发送者的私钥签名。 这证明交易只可能来自发送者，而不是欺诈。

GPSC 这样的PolySmartChain客户端将处理此签名过程。

示例 [JSON-RPC](https://eth.wiki/json-rpc/API) 调用：

```
{
  "id": 2,
  "jsonrpc": "2.0",
  "method": "account_signTransaction",
  "params": [
    {
      "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
      "gas": "0x55555",
      "maxFeePerGas": "0x1234",
      "maxPriorityFeePerGas": "0x1234",
      "input": "0xabcd",
      "nonce": "0x0",
      "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
      "value": "0x1234"
    }
  ]
}

```

示例响应：

```
//{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
    "tx": {
      "nonce": "0x0",
      "maxFeePerGas": "0x1234",
      "maxPriorityFeePerGas": "0x1234",
      "gas": "0x55555",
      "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
      "value": "0x1234",
      "input": "0xabcd",
      "v": "0x26",
      "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
      "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
      "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
    }
  }
}

```

* `raw` 是已签名交易的 RLP（Recursive Length Prefix）编码形式。
* `tx` 是已签名交易的 JSON 形式。

如有签名哈希，可通过加密技术证明交易来自发送者并提交网络。

### 交易类型 <a href="#types-of-transactions" id="types-of-transactions"></a>

PolySmartChain有几种不同类型的交易：

* 常规交易：从一个钱包到另一个钱包的交易。
* 合约部署交易：没有“to”地址的交易，数据字段用于合约代码。

#### 关于 Gas <a href="#on-gas" id="on-gas"></a>

如上所述，执行交易需要花费 [Gas](https://ethereum.org/zh/developers/docs/gas/)。 简单的转让交易需要 21000 个 Gas。

假设 Bob 要向 Alice 发送 1 PSC，需支付 190 gwei 的 `baseFeePergas` 和 10 gwei 的 `maxPriorityFeePerGas`，那么 Bob 需要支付以下费用：

```
    (190 + 10) * 21000 = 4,200,000 gwei
    --or--
    0.0042 PSC
```

Bob 的账户将会减少 **1.0042 PSC**

Alice 的账户将会增加 **+1.0 PSC**

扣掉 **0.00399 PSC** 的基本费用

矿工保留小费 **+0.000210 PSC**

任何智能合约交互也需要 Gas。

![任何未用于交易的 gas 都退还至用户账户。](https://ethereum.org/static/c3638b26a1210d2c73a7ec2335c57351/302a4/gas-tx.png)

### 交易生命周期 <a href="#transaction-lifecycle" id="transaction-lifecycle"></a>

一旦提交交易，就会发生以下情况：

1. 一旦您发送交易，加密法生成交易哈希： `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
2. 然后将该交易转播到网络，并且与大量其他交易一起包含在一个集合中。
3. 矿工必须选择您的交易并将它包含在一个区块中，以便验证交易并认为它“成功”。
   * 如果网络繁忙，矿工无法跟上，您可能会在这个阶段等候。
4. 您的交易将收到"确认"。 确认的数量是自包含您交易的区块以来创建的区块数。 这个数字越大，交易被网络处理和承认的确定性就越强。
   * 最近的区块可能会被重组，给人留下交易失败的印象；但交易可能仍然有效，但包含在另一个区块中。
   * 重组的概率随着其后每一次挖掘的区块而降低，即确认次数越多，交易就越不可改变。

#### 拓展资源

{% embed url="<https://youtu.be/er-0ihqFQB0>" %}
