v0.35.0
Release v0.35.0
The release mostly fixes funding during the audit and integration with the bridge. But the release also contains some new features like:
- Asynchronous predicate estimation/verification.
- Multi-asset support per contract.
- Support Secp256r1 signature recovery and Ed25519 verificaiton.
Added
-
#486: Adds
ed25519
signature verification andsecp256r1
signature recovery tofuel-crypto
, and corresponding opcodesED19
andECR1
tofuel-vm
. -
#500: Introduced
ParallelExecutor
trait
and made available async versions of verify and estimate predicates.
Updated tests to test for both parallel and sequential execution.
Fixed a bug intransaction/check_predicate_owners
.
Breaking
- #506: Added new
Mint
andBurn
variants toReceipt
enum.
It affects serialization and deserialization with new variants.
Changed
Breaking
-
#506: The
mint
andburn
opcodes accept a new$rB
register. It is a sub-identifier used to generate an
AssetId
by this rule.
This feature allows having multi-asset per one contract. It is a huge breaking change, and
after this point,ContractId
can't be equal toAssetId
.The conversion like
AssetId::from(*contract_id)
is no longer valid. Instead, theContractId
implements theContractIdExt
trait:/// Trait extends the functionality of the `ContractId` type. pub trait ContractIdExt { /// Creates an `AssetId` from the `ContractId` and `sub_id`. fn asset_id(&self, sub_id: &Bytes32) -> AssetId; }
-
#506: The
mint
andburn
opcodes affect thereceipts_root
of theScript
transaction.
Removed
Breaking
- #486: Removes apparently unused
Keystore
andSigner
traits fromfuel-crypto
. Also renamesECR
opcode toECK1
.
Fixed
- #500: Fixed a bug where
MessageCoinPredicate
wasn't checked for incheck_predicate_owners
.
Breaking
-
#502: The algorithm used by the
binary Merkle tree for generating Merkle proofs has been updated to remove
the leaf data from the proof set. This change allows BMT proofs to conform
to the format expected by the Solidity contracts used for verifying proofs. -
#503: Use correct amount of gas in call
receipts when limited by cgas. Before this change, theReceipt::Call
could show an incorrect value for the gas limit. -
#504: The
CROO
andCSIZ
opcodes require
the existence of correspondingContractId
in the transaction's
inputs(the same behavior as for theCROO
opcode). -
#504: The size of the contract
was incorrectly padded. It affects the end of the call frame in the memory,
making it not 8 bytes align. Also, it affects the cost of the contract
call(in some cases, we charged less in some more). -
#504: The charging for
DependentCost
was done incorrectly, devaluing thedep_per_unit
part. After the fixing of
this, the execution should become much more expensive. -
#505: The
data
field of theReceipt
is not part of the canonical serialization and deserialization anymore. The SDK should use the
Receipt
type instead ofOpaqueReceipt
. TheReceipt.raw_payload
will be removed for the
fuel-core 0.20
. Thedata
field is optional now. The SDK should update serialization and
deserialization forMessageOut
,LogData
, andReturnData
receipts. -
#505: The
len
field of theReceipt
is not padded anymore and represents an initial value.
All changes:
What's Changed
- Some additional test to verify ecrecovery with
TxId
and coin witness by @xgreenx in #495 - Add argument names to fuel-asm opcodes by @Dentosal in #497
- Use correct amount of gas in call receipts when limited by cgas by @Dentosal in #503
- bug: Remove leaf data from BMT proofs by @bvrooman in #502
- Bugfixes found during chatting with Auditors on July 7th by @xgreenx in #504
- Removed the
data
field from canonical serialization and deserialization of receipts by @xgreenx in #505 - Secp256r1 signature recovery and Ed25519 verification by @Dentosal in #486
- enable parallel predicate verification by @leviathanbeak in #500
- Support of the multi-assets per contract by @xgreenx in #506
Full Changelog: v0.34.1...v0.35.0