All notable changes to this project will be documented in this file.
- ABI v2.7 specification implemented:
- New section getters introduced.
- address_std – new type added
- Use modern crates
anyhow
andthiserror
instead offailure
- Fix build warnings
- Remove extra crates base64, sha2
- the crate was renamed from
ton_abi
toever_abi
- supported renaming of other crates
- Fixed decoding of a large-size elements array.
-
ABI v2.4 specification implemented
-
Param in fields section extended with
init: boolean
-
ref(T)
– new type added -
Default values for parameter types:
-
int<N>
–N
zero bits.
-
uint<N>
–N
zero bits.
-
varint<N>
/varuint<N>
–x
zero bits, wherex = [log2(N)]
.
-
bool
– equivalent toint<N>
, whereN = 1
.
-
tuple(T1, T2, ..., Tn)
– default values for each type, i.e.D(tuple(T1, T2, ..., Tn)) = tuple(D(T1), D(T2), ..., D(Tn))
, whereD
is defined as a function that takes ABI type and returns the corresponding default value.
-
map(K,V)
– 1 zero bit, i.e.b{0}
.
-
cell
– reference to an empty cell, i.e.^EmptyCell
.
-
address
–addr_none$00
constructor, i.e. 2 zero bits.
-
bytes
– reference to an empty cell, i.e.^EmptyCell
.
-
string
– reference to an empty cell, i.e.^EmptyCell
.
-
optional(T)
– 1 zero bit, i.e.b{0}
.
-
T[]
–x{00000000} b{0}
, i.e. 33 zero bits.
-
T[k]
– encoded as an array withk
default values of typeT
-
ref(T)
– reference to a cell, cell is encoded as the default value of typeT
.
data
section in ABI JSON is removed.fixedbytes
type serialization changed. Now it is limited to 127 bytes and serialized into cell body instead of chained cells in current cell reference
- Use crypto functions from ever-types
- Revert tests
- Return tagged dependencies and tests
- Fixed max integer values serialization
- Supported ever-types version 2.0
- Fix zero varint encoding
- Increase version number
- Update CHANGELOG.md file
- Fix for support internal crates
- Fix for support internal crates
- Bump versions of external crates
- Automatic update project. #none
-
New method to calculate external inbound message body signature introduced. It is now based on the destination address, as well as all previously used parameters.
This prevents a problem where a message to one of several contracts with identical public keys and function signatures may be duplicated and sent to any other of this set of contracts and be successful.
This functionality is supported staring with 0.64.0 version of the Solidity compiler.
-
Fixed message body layout introduced in order to reduce gas consumption while parsing parameters.
Each type gets max bit and max ref size, making message structure more predictable.
-
New section
Fields
introduced.It describes internal structure of the smart contracts data as a list of variables' names with corresponding data types. It includes contract state variables and some internal contract specific hidden variables. They are listed in the order in which they are stored in the data field of the contract.
-
New types introduced:
-
New
header
JSON ABI section introduced. It contains additional parameters that are part of security measures for contracts: -
Signature moved to the root cell.
-
Get methods placed in a separate section.
-
The last cell reference can now be used by parameter serialization, which needs reference (cell, bytes, map, array types) if all the following parameters can fit into the current cell.
- Array types encoding redesigned to minimize gas consumption by contracts for encoding/decoding operations and contract code size.
- New TVM blockchain-specific types introduced:
Initial design of Application Binary Interface for TVM blockchain:
- Message body structure
- Function signature concept
- Basic types and the rules of their encoding
- Cell overflow handling
- JSON interface structure