1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-13 03:32:22 +00:00
ton/doc/GlobalVersions.md
2024-01-24 13:05:22 +03:00

2.5 KiB

Global versions

Global version is a parameter specified in ConfigParam 8 (block.tlb). Various features are enabled depending on the global version.

Version 4

New TVM instructions

  • PREVMCBLOCKS, PREVKEYBLOCK
  • GLOBALID
  • HASHEXT(A)(R)
  • ECRECOVER
  • SENDMSG
  • RUNVM, RUNVMX
  • GASCONSUMED
  • RIST255_... instructions
  • BLS_... instructions
  • P256_CHKSIGNS, P256_CHKSIGNU

Division

Division instruction can add a number to the intermediate value before division (e.g. (xy+w)/z).

Stack operations

  • Arguments of PICK, ROLL, ROLLREV, BLKSWX, REVX, DROPX, XCHGX, CHKDEPTH, ONLYTOPX, ONLYX are now unlimited.
  • ROLL, ROLLREV, BLKSWX, REVX, ONLYTOPX consume more gas when arguments are big.

c7 tuple

c7 tuple extended from 10 to 14 elements:

  • 10: code of the smart contract.
  • 11: value of the incoming message.
  • 12: fees collected in the storage phase.
  • 13: information about previous blocks.

Action phase

  • If "send message" action fails, the account is required to pay for processing cells of the message.
  • Flag +16 in actions "Send message", "Reserve", "Change library" causes bounce if action fails.

Storage phase

  • Unpaid storage fee is now saved to due_payment

Version 5

Gas limits

Version 5 enables higher gas limits for special contracts.

  • Gas limit for all transactions on special contracts is set to special_gas_limit from ConfigParam 20 (which is 35M at the moment of writing). Previously only ticktock transactions had this limit, while ordinary transactions had a default limit of gas_limit gas (1M).
  • Gas usage of special contracts is not taken into account when checking block limits. This allows keeping masterchain block limits low while having high gas limits for elector.
  • Gas limit on EQD_v9j1rlsuHHw2FIhcsCFFSD367ldfDdCKcsNmNpIRzUlu is increased to special_gas_limit * 2 until 2024-02-29. See this post for details.

Loading libraries

  • Loading "nested libraries" (i.e. a library cell that points to another library cell) throws an exception.
  • Loading a library consumes gas for cell load only once (for the library cell), not twice (both for the library cell and the cell in the library).
  • XLOAD now works differently. When it takes a library cell, it returns the cell that it points to. This allows loading "nested libraries", if needed.