# 交易

此处的交易指的是由外部拥有的账户发起的操作,即由人管理的账户,而不是合约。

# 交易信息

  • recipient – 收款地址(如果是外部拥有的账户,交易将转移价值。如果是合约账户,交易将执行合约代码)。
  • signature– 发送者的标识符。当发件人的私钥签署交易并确认发件人已授权此交易时,会生成此信息。
  • value – 从发送方转移到接收方的 BTM 数量。
  • data – 包含任意数据的可选字段。
  • gasLimit– 交易可以消耗的最大gas单位数量。
  • maxPriorityFeePerGas - 作为矿工小费的最大gas量
  • maxFeePerGas- 交易愿意支付的最大gas量(包括baseFeePerGasmaxPriorityFeePerGas

# 代码示例

交易对象结构大致如下:

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

# 交易类型

在BMC上有几种不同类型的交易:

  • 常规交易:从一个钱包到另一个钱包的交易。
  • 合约部署交易:没有“收件人”地址的交易,其中数据字段用于合约代码。

# 交易生命周期

提交事务后,将会执行以下步骤:

  1. 发送交易后将生成交易哈希,如: 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
  2. 将交易广播到网络并包含在一个包含许多其他交易的池中。
  3. 矿工必须选择您的交易并将其包含在一个区块中,以便验证交易并认为它“成功”。
    • 如果网络繁忙且矿工无法跟上,您可能最终会在此阶段等待。
  4. 您的交易将收到“确认”。确认数是自包含您的交易的区块以来创建的区块数。数字越高,网络处理和识别交易的确定性就越大。
    • 由于挖矿的同步性,最近的区块可能会重组,那区块内的交易就会有交易不成功的表象;但是交易可能仍然有效,只是这笔交易会包含在其他区块中。
    • 重组的可能性随着每个后续区块的开采而减少,即确认的区块数量越多,交易就越不可变。
上次更新: 2022/1/13下午4:47:56