Back-transfers
VM 1.5 offers a mechanism for tracing back-transfers, i.e. transfers from called contract to caller. This only works on 1 level of calls.
The new API is now integrated in the framework. Since the feature is not yet available on main-net, a feature flag was added, to prevent developers from accidentally using it.
We also updated the VM hooks in the Rust VM, and the EI checker (the post-build verifier that checks the VM hooks used in a contract).
ESDT attribute ABI annotation and generator
Contracts can specify types for ESDT token attributes, using a specialized annotation. The build system will automatically include the ESDT token attribute types in its ABI, as well as generate an individual ABI for each declared token.
Documentation on this feature coming soon.
Multiple var-args disallowed
To avoid confusion when using var-args, using more than one multi-value argument (var-arg) in an endpoint is now prohibited by default.
There are cases in which doing so is sensible, for this we use the #[allow_multiple_var_args]
annotation.
Build system updates
Since it has become a general build config file, rather than just a multi-contract config, the multiconfig.toml
file has been renamed to sc-config.toml
.
Changed add-unlabelled
to default to true, this way writing general build configurations is more compact.
New `FunctionCall` object & refactoring
Preliminary refactoring for the future SC, testing and interactor unified syntax.
Can also be used to easier pass contract calls to other contracts, e.g. in the multisig.
`AddressToId` storage mapper
A storage mapper that was being duplicated in several xExchange smart contracts. Included in framework for easier use.