Skip to content

v0.35.0

Compare
Choose a tag to compare
@xgreenx xgreenx released this 14 Jul 00:04
· 195 commits to master since this release
45f9be7

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 and secp256r1 signature recovery to fuel-crypto, and corresponding opcodes ED19 and ECR1 to fuel-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 in transaction/check_predicate_owners.

Breaking

  • #506: Added new Mint and Burn variants to Receipt enum.
    It affects serialization and deserialization with new variants.

Changed

Breaking

  • #506: The mint and burn
    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 to AssetId.

    The conversion like AssetId::from(*contract_id) is no longer valid. Instead, the ContractId implements the ContractIdExt 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 and burn
    opcodes affect the receipts_root of the Script transaction.

Removed

Breaking

  • #486: Removes apparently unused Keystore and Signer traits from fuel-crypto. Also renames ECR opcode to ECK1.

Fixed

  • #500: Fixed a bug where MessageCoinPredicate wasn't checked for in check_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, the Receipt::Call could show an incorrect value for the gas limit.

  • #504: The CROO and CSIZ opcodes require
    the existence of corresponding ContractId in the transaction's
    inputs(the same behavior as for the CROO 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 the dep_per_unit part. After the fixing of
    this, the execution should become much more expensive.

  • #505: The data field of the Receipt
    is not part of the canonical serialization and deserialization anymore. The SDK should use the
    Receipt type instead of OpaqueReceipt. The Receipt.raw_payload will be removed for the
    fuel-core 0.20. The data field is optional now. The SDK should update serialization and
    deserialization for MessageOut, LogData, and ReturnData receipts.

  • #505: The len field of the Receipt
    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