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.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.
[0.5.0r] - 2024-02-29
Breaking changes 💔
- Changed the mount name of the
lib.ft4.accounts
module fromft
toft4
, affecting the following entities:account
account_auth_descriptor
auth_descriptor_signer
rl_state
Changed 🪙
- Updated the
_register_account()
function to return the created account.
Added ✅
-
New extension functions for cross-chain transfers:
before_init_transfer
after_init_transfer
before_apply_transfer
after_apply_transfer
-
New
register_crosschain_asset
function. -
New account creation strategies:
- Create on transfer: Subscription-based
- Configurable fee account
[0.4.0r] - 2024-02-15
Breaking changes 💔
- Changed
asset_data
toasset
in the following queries:get_transfer_history
get_transfer_history_from_height
get_transfer_history_entry
Changed 🪙
- The
create_account_with_auth
function now requires theauth_descriptor
to include theA
flag. Accounts cannot be created with anauth_descriptor
missing theA
flag by default. - The
get_auth_descriptor_nonce
function now returnsnull
if the auth descriptor is not found, rather than rejecting the request. - The
page_size
parameter in paginated queries is now optional. The default value can be configured using thequery_max_page_size
field under thelib.ft4
section. - Updated the
transfer
function to support account creation during transfers. - Revised the calculation method for account IDs.
Added ✅
- Introduced a framework for account creation.
- New account creation strategies:
- Create on transfer:
- Open
- Fee-based
- Open strategy
- Create on transfer:
- Added
get_first_allowed_auth_descriptor_by_signers
query. - Added support for rules in the login configuration.
Bugfixes 🐛
- Cross-chain transfer operations now validate that transactions are anchored on SAC before proceeding.
[0.3.1r] - 2024-01-19
Changed 🪙
- Enhanced validation for
register_crosschain_asset
parameters. - Added
op_index
to theget_transfer_history
response for better tracking.
[0.3.0r] - 2024-01-17
Breaking changes 💔
- Removed auth descriptor types
ES
andEM
.
Changed 🪙
- Introduced
get_all_auth_handlers
query to retrieve all authentication handlers specified by the dapp. - Added
get_first_allowed_auth_descriptor
query to enable blockchain selection of auth descriptors for operation authentication. - Enabled creation of overridable auth handlers.
- Added
resolver
field toAuthHandler
for custom authentication logic evaluation. - Updated transaction prioritization to support Postchain 3.14.17 and later.
- Fixed
init_transfer
auth message issue to supportinit_transfer
operation with EVM auth.
[0.2.0r] - 2023-12-22
This version is incompatible with older versions. To upgrade, you will need to perform a database migration. For more information, refer to this page.
Breaking changes 💔
- Paginated queries: Queries
get_accounts_by_participant_id
andget_account_auth_descriptors_by_participant_id
are now paginated. Update your code to handle these changes. - Paginated queries: Removed non-paginated queries
_get_accounts_by_auth_descriptor_id
,_get_asset_balances
, and_get_all_assets
. Use their paginated counterparts without the leading_
. Replacedget_asset_by_name
with the paginatedget_assets_by_name
. - Rules structure: Revised the internal structure of rules. Existing auth descriptors using rules will no longer function and will cause runtime errors.
- Address functions removed: Deprecated
evm_address_from_pubkey
andevm_address_from_privkey
. Usecrypto.eth_pubkey_to_address
andcrypto.eth_privkey_to_address
from the Rell standard library. - Function return types:
create_account_with_auth
now returnsaccount
instead ofbyte_array
.add_auth_descriptor_to_account
now returnsaccount_auth_descriptor
instead ofbyte_array
. - Rate limit config: Updated format for rate limit configuration.
brid
toblockchain_rid
: Renamed all instances ofbrid
toblockchain_rid
to clarify the acronym. This affects:asset.issuing_brid
->asset.issuing_blockchain_rid
- Queries and message templates that previously used
{brid}
now use{blockchain_rid}
. asset_origin.origin_brid
->asset_origin.origin_blockchain_rid
- Renamed terms: Updated terminology related to auth descriptors:
- Queries:
get_account_auth_descriptors_by_participant_id
->get_account_auth_descriptors_by_signer
,get_accounts_by_participant_id
->get_accounts_by_signer
. - Accounts module: Renamed
single_sig_args.pubkey
tosingle_sig_args.signer
,multi_sig_args.pubkeys
tomulti_sig_args.signers
,get_participants
toget_signers
,auth_descriptor_participant
toauth_descriptor_signer
, and functions likeget_paginated_auth_descriptors_by_participant_id
toget_paginated_auth_descriptors_by_signer
. - Internals: Renamed
_add_auth_participant
to_add_signer
, and_add_eth_auth_participant
to_add_eth_signer
.
- Queries:
- Transfer history: Removed
transfer_args
andentry_index
fromget_transfer_history_entry
andget_transfer_history
queries.
Added ✅
- Default values for
lib.ft4.accounts
module_args to simplifychromia.yml
configuration. - Configuration parameter
max_auth_descriptor_rules
forlib.ft4.accounts
module_args, with a default value of 8. - Option to customize the rate limiter for some accounts.
- Queries
get_transfer_details
,get_transfer_details_by_asset
, andget_transfer_history_from_height
moved tolib.ft4.assets.external
. - Support for transaction priority.
Changed 🪙
- Updated signature for
evm_auth_operation_for
to accept arell.test.op
. before_authenticate
function is now extendable to add custom pre-authentication logic.after_authenticate
function is now extendable to execute logic post-authentication.- Account creation with
create_account_with_auth
can now be done withoutop_context
. - Validation added for auth descriptors to prevent the creation of expired descriptors.
[0.1.7r] - 2023-10-25
Added ✅
- Added the
get_admin_pubkey()
function to the admin module, enabling retrieval of the admin public key.
[0.1.6r] - 2023-10-20
Changed 🪙
- Removed cross-chain submodule imports from
ft4_basic_dev
.
[0.1.5r] - 2023-10-19
Added ✅
- Implemented cross-chain functions for asset transfer across chains.
- Introduced a new admin module,
admin.crosschain
, for registering cross-chain assets. - Added the option to specify tests for Rell using the
--tests
or-t
option inscripts/relltest.sh
.
[0.1.4r] - 2023-09-29
Changed 🪙
- Importing a module now automatically imports the corresponding external module as well.
[0.1.3r] - 2023-09-19
Added ✅
- Added additional test utility functions.
- Added
evm_address_from_pubkey
function.
[0.1.2r] - 2023-09-18
Changed 🪙
- The version module is now included regardless of which modules are used from the library.
Added ✅
- Added more test utility functions.
[0.1.1r] - 2023-09-12
Changed 🪙
- Assets are now always returned with all properties from Postchain. The separate properties
asset
,asset_id
, anddecimals
will be removed in favor of the more comprehensiveasset_data
. - The version information is now included in every non-external module, ensuring that every dapp using ft4 has access to version details.
Added ✅
- Added a
test
module with utility functions for testing.
[0.1.0r] - 2023-07-12
Initial release