📝 您还将了解到: 合约可以接收哪些类型的信息? 什么是交易? 交易有哪些阶段? 2 X0 l1 f" [% i5 t* q. m/ ]8 k- N d
; ? G& b% Z' g: \
我们深入了解信息是如何处理的,以及什么是真正的交易。 💌 要改变合约的状态,合约必须收到一条信息。 这就是所谓的传入信息。 % J6 C: p$ w, O! s$ |
收到的信息有两种:⚪ - 外部信息。 🔵 - 内部信息
9 l6 S- P6 d) ?, n. U' m 外部信息。外部信息 - 从区块链的角度来看,这是一串不知从何而来的数据。 ❗ 合约的工作就是理解这些数据,并在其代码中进行解析。 , U; h' H3 R/ V/ G4 J/ V/ z
内部信息。内部信息 - 合约向其他合约发送的信息。 👥 这些信息的结构更加丰富一些:# O& U' d" ]; F4 ]
% G# `7 S2 @3 ]/ F; L, B9 W
处理信息和OP Codes(操作码)。/ Z: o/ i, V: R( i
一旦合约收到消息,它可以有两个独立的处理程序,分别处理内部和外部消息。这两种消息都会有合约作者设计的任意🗻有效载荷数据。如果合约想处理不同类型的消息,那么它将使用我们称之为OP Codes(操作码)的东西。 操作码 🔢 - 信息中自定义数据的四个字节前缀,用于指示合约应支持的操作类型。 交易。❓ 什么是交易? 交易 💸 - 复杂的合约状态变化。❗ 信息不是交易,它只是交易的输入! ❓ 交易有什么作用?6 `6 x' |) w+ W& S6 r" t# j
▶️ 更改合约的状态。📋 创建发出操作列表。 交易阶段。交易分为五个阶段 5️⃣:存储阶段 📒 根据上次交易后合约存储的字节数扣除存储费用。如果资金不足,合约会转入冻结状态,在有限的时间内保持其状态。 信用阶段 🏦 这是将传入信息所附代币记入合约的地方。 计算阶段 💻 这是您的程序开始运行的地方。TVM 执行代码并验证每次操作,同时跟踪GAS使用情况。 行动阶段 🏃 该阶段最重要的操作是创建合约的新状态。合约可能会在执行结束时或任何中间步骤为自己创建新状态和新存储,这将在合约成功执行后被记录下来。列表中还有其他操作,这些操作都是发出的消息。 反弹阶段 🎱 如果合约失败,而收到的信息有一个标记显示 "我是一个可反弹信息",就会发生这种情况。这意味着,在这个阶段,如果出现任何故障,而收到的信息中还有任何剩余资金,那么合约就会创建一条发往发件人的信息,将资金退回。这是一种安全功能,可以让人们在出现任何错误或合约内部出现任何故障的情况下取回大部分资金。 9 I. {- t8 ?6 K, ^' p
( e. x& a$ B" _( k
结论。让我们来做个总结:9 @/ [) S( K1 I' K) X6 b$ d
📝 现在你知道了: 合约可能会收到两种信息:外部信息和内部信息。 从区块链的角度来看,外部信息实际上只是一串不知从何而来的数据。这些数据本身未经验证。它不附带任何以Toncoins形式存在的货币。它可以包含合约作者想要的任何内容。 内部信息是合约发送给其他合约的信息。这些信息的结构更加丰富。首先,内部信息可以携带金额。当合约向其他合约发送信息时,它们可以附加任何数量的代币。其次,这些信息通过发送合约的地址进行安全验证。TON 的整个架构保证了发送者地址的正确性。 交易是合约状态变化的综合体。 交易会经历五个阶段:存储阶段、信用阶段、计算阶段、行动阶段和反弹阶段。 存储阶段是区块链向合约收取其存在所欠租金的阶段。租金以每比特每秒的价格计算。 信用阶段是将传入信息中的代币贷记给合约的阶段。 在计算阶段,TVM 执行代码并验证每个操作,同时跟踪GAS使用情况。 在行动阶段,智能合约转换到一个新的状态,并处理发出的信息。 反弹阶段发生在合约失败且传入信息带有 "我是反弹回来的信息 "标志的情况下。这意味着在这一阶段,如果出现任何失败,并且传入信息中还有剩余的钱,那么合约就会创建传出信息返回给发件人,将钱退回。
! q0 K# s% ~3 c4 n! q$ X & F& a& `4 f7 O1 P6 C4 _1 f
* j4 p4 M0 c" X0 ]# n; d+ d0 D7 M1 Z o- z
9 j# V0 c2 W3 z" ~6 P6 W0 l2 A/ ~9 ~
: ^7 m5 R3 a" }6 ?3 w2 _ |