FT4 changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a changelog, and this project adheres to Semantic versioning.
[1.1.0r] - 2025-02-25
Changed 🪙
- Allow multiple smaller transfers to a non-existing account for the same asset type.
- The logic takes multiple senders for one recipient into consideration
register_account
used for crosschain transfers with the strategiesfee
,open
andsubscription
does not require a signature, when transfering to the same account- Updated the response of the query
get_account_by_id
to also return type along with id
Added ✅
-
Added a blacklist for operations that may not be used after an auth operation (
evm_auth
andft_auth
). Defined in thechromia.yml
ascore.auth.auth_op_blacklisted_operations
, it works the same way asevm_signatures_authorized_operations
, except the former is a list of operations that are not allowed, while the latter includes only allowed operations. -
Added RellDocs for everything
-
Added
get_api_version
. While version looks like "1.0.3", and it's difficult to parse, api version is an integer that is increased by one every time the API (queries and operations) changes. It will start at 1 for version "1.1.0". -
Added
get_block_height
, analogous tolatest_time
. The main difference is that the block height returned is the height of the next block to be produced, if in a query. This is also analogous to the difference betweenop_context.last_block_time
andop_context.block_height
, where the height refers to the current block and the time to the last block. -
Added multiple queries:
get_assets_filtered
get_balances_filtered
get_transfer_history_entries_filtered
get_crosschain_transfer_history_entries_filtered
get_asset_origin_filtered
get_applied_transfers_filtered
get_canceled_transfers_filtered
get_unapplied_transfers_filtered
get_recalled_transfers_filtered
get_pending_transfers_filtered
get_reverted_transfers_filtered
get_accounts_filtered
get_account_auth_descriptors_filtered
get_main_auth_descriptors_filtered
get_auth_descriptor_signers_filtered
get_rl_states_filtered
get_account_creation_transfers_filtered
get_account_links_filtered
All are mounted on 'ft4' directly.
-
Added two extendable functions:
before_crosschain_balance_change
after_crosschain_balance_change
The extensions are being called in the
Unsafe.update_balances_if_needed
function which is a part of crosschain transfers.
Fixed 🔧
authenticate()
andauthenticate_and_return_context()
will no longer delete the auth descriptor used to authenticate the operation, even if it expired during the authentication process.
[1.0.0r] - 2024-07-04
Added ✅
- Introduced a filtering option in
get_pending_transfer_strategies
to sort results based on transfer expiration.
Fixed 🔧
- Resolved an issue in the
get_auth_message_template
query where it failed if a GTV-encoded null was provided asargs
.
[0.8.0r] - 2024-05-29
Breaking changes 💔
- Removed the key constraint from the
symbol
attribute of theasset
entity. - Replaced
get_asset_by_symbol
withget_assets_by_symbol
. - Updated
register_crosschain_asset
operation to includeasset_id
,asset_type
, anduniqueness_resolver
arguments. - Renamed
get_paginated_asset_balances_by_name
toget_paginated_assets_by_name
. - Removed the
_ft_auth
function andft4.get_account_by_auth_descriptor
query.
Changed 🪙
- Made the
icon_url
attribute of theasset
entity mutable.
Added ✅
- Added a
uniqueness_resolver
attribute to theasset
entity. - Introduced
get_assets_by_symbol
query to retrieve all registered assets with the same symbol. - Added
get_transfer_rules
query to fetch transfer strategy rules configuration.
Fixed 🔧
- Ensured that the number of required signatures in multisig auth descriptors is greater than 0.
- Verified that new main auth descriptors include all mandatory flags when using
update_main_auth_descriptor
.
[0.7.0r] - 2024-04-23
Breaking changes 💔
- Deadline for transfers: Added
deadline
field toinit_transfer
. Transfers applied after this timestamp will fail and can only be reverted. - Moved
latest_time
: Thelatest_time
field has been relocated from theaccounts
module to theutils
module. - Function renaming:
- Renamed
_register_account()
toregister_account()
. - Renamed
add_auth_descriptor_to_account
function toadd_auth_descriptor
. - Renamed
_add_signer
toadd_signers
. - Renamed
ft4.get_auth_descriptor_nonce
toft4.get_auth_descriptor_counter
.
- Renamed
- Version requirement: Requires Rell "0.13.10".
- Entity changes:
- Updated entity
ft4.crosschain.applied_transfers
. - Updated entity
ft4.account_creation_transfer
. - Added
transaction
field to theapplied_transfers
entity.
- Updated entity
- Operation changes:
- Removed
ft4.register_account_evm_signatures
, now useft4.evm_signatures
instead. - Removed
ft4.delete_all_auth_descriptors_exclude
, replaced withft4.delete_all_auth_descriptors_except_main
.
- Removed
- Function argument changes:
- Removed
is_strict
argument fromauthenticate()
function.auth_handlers
will now resolve to the most specific handler if no operation auth handler is found.
- Removed
- Account creation updates:
- Removed signature verification from
create_account_with_auth
. Signatures must now be verified separately usingverify_signers
. create_account_with_auth
will now create an account with an ID based on the hash of signers if theaccount_id
argument is not provided.
- Removed signature verification from
- Configuration changes:
- All module arguments for FT4 submodules in YML config now include an additional
core
component in the module path. For example,accounts
module arguments should be defined underlib.ft4.core.accounts
instead oflib.ft4.accounts
.
- All module arguments for FT4 submodules in YML config now include an additional
- Module removal: Removed
ft4_basic
andft4_basic_dev
modules.
Changed 🪙
- Revised internal structure of FT4 submodules: External modules are now imported alongside core modules. For instance,
importing
lib.ft4.accounts
will also import the associated operations and queries. If needed, you can still importaccounts
entities and functions without the operations and queries by usinglib.ft4.core.accounts
.
Added ✅
- Reversion of incomplete cross-chain transfers: Added support to revert incomplete cross-chain transfers after the deadline has passed.
- Recall unclaimed register account transfers: Added functionality to recall unclaimed register account transfers after the timeout period has expired.
- New operation: Introduced
ft4.delete_all_auth_descriptors_except_main
, which deletes all auth descriptors except the main one. - Auth flags configuration: Added
auth_flags
config to define mandatory and default authentication flags. - Updated
ft4.get_register_account_message
: Now includes register account operation parameters in the auth message. - New query: Added
ft4.get_enabled_registration_strategies
to retrieve enabled registration strategies. - New utility functions: Added new functions in
ft4.test.utils
. - Lock accounts support: Added support for "lock" accounts.
[0.6.0r] - 2024-03-22
Breaking changes 💔
- Renamed
account
tosender
in thepending_transfer
entity.
Added ✅
-
New operation:
delete_auth_descriptors_for_signer
to remove all auth descriptors for a specific signer from an account (corresponding to the queryget_account_auth_descriptors_by_signer
). -
New attributes and queries:
- Added
type
attribute to theasset
entity. - Introduced
get_assets_by_type
query. - Added
register_asset_with_type
admin operation.
- Added
-
Enhanced query responses:
- Included
is_crosschain
flag in responses fromget_transfer_history
,get_transfer_history_from_height
, andget_transfer_history_entry
. - Added
blockchain_rid
to responses fromget_transfer_details
andget_transfer_details_by_asset
.
- Included
-
Pending transfers: Pending transfers are now completed when the account is registered with direct strategies.
-
Configuration updates: Added auth descriptor configuration options (
max_rules
andmax_number_per_account
) to theget_config
query. -
Default login configuration: Set a 1-day expiration for default login configuration.
-
New queries:
get_last_pending_transfer_for_account
: Returns the most recent pending cross-chain transfer matching the provided parameters (sender, target chain, recipient, asset, amount).has_pending_create_account_transfer_for_strategy
: Checks if a "create on transfer" account registration is initiated for the specified strategy.