---
title: 消息生命周期
description: 在TON区块链上的每笔交易都有多个阶段，其中计算和操作阶段是消息生命周期中最重要的。
---

合约对消息的处理有几个阶段，其中还有更多的阶段，但我们将集中讨论最重要的几个阶段：

## 接收阶段

该阶段结合了多个低级阶段。 

它首先会在合约余额**中添加一个**消息值。 输入消息的价值是合约为处理此消息所能支付的gas的最高价格。 合约可以覆盖此限制，但不建议这样做，只有高级开发人员才适合这样做，因为这可能导致合约被耗尽。 100万个gas是一个合约中合约可以花费的最大金额，目前相当于Basechain的0.4 TON。 如果消息值为零，则执行中止。

然后，一些（通常是少量的）nanotons从合约余额中扣除用于存储。 这意味着您无法完美预测平衡的变化，必须根据这种不稳定性调整代码。

然后，如果合约尚未部署，且消息中包含初始包(init package)，则会部署合约。 如果初始化包不存在，它将被忽略。

## 计算阶段

该阶段执行智能合约的代码，并产生一系列操作或异常。 目前，仅支持两种类型的动作：**发送消息**（send message）和 **保留**（reserve）。

发送消息可以使用固定值或动态值，例如**消息的剩余值** - 传入消息的剩余值。 发送消息时可以使用 `SendIgnoreErrors` 标记，这样就可以忽略消息发送过程中出现的错误，并继续下一步操作。 如果您有多个操作，该标记非常有用。 在发送带有某个值的消息时，它首先从接收值中减去该值，然后才从合约余额中减去该值（在处理之前）。

## 行动阶段

动作按顺序执行，但请注意：\
**处理动作时发生异常不会回滚交易**。

例如，如果从客户的余额中扣除 1 Ton，然后发送一条无效消息，这可能会导致客户的余额被扣减，但客户却无法收到相应的金额。
