Added PfmMemoBuilder API for building middleware forwarding memo
Added HookMemoBuilder API for building wasm ibc hook memo
execute_with_funds to Executor to attach funds to execution.
stargate feature for abstract-app, abstract-standalone and abstract-adapter packages.
New module type: Service, behaves the same as Native, but can be registered by any namespace.
AbstractClient: service to get api of Service module
CustomExecuteHandler To improve support for fully custom execute messages on Apps or Adapters
balance method for AnsHost to query balance of AssetEntry
AbstractInterchainClient to simplify Abstract deployments across multiple chains
**Merged proxy and manager contracts into account.
Deployments now use pre-determined addresses. These addresses are hardcoded in the contracts.
Ibc related renaming to add more consistency in namings
Account action on executor takes impl IntoIter<Item = impl Into<AccountAction>> instead of Vec<AccountAction>
Native contracts now have pre-compiled addresses. This removes the need for storing addresses in an on-chain state.
Removed UpdateConfig endpoints from most native contracts and App/Native bases.
Minified the storage namespaces and made them available via constants
Version Control renamed to registry
registry::QueryMsg::Account was changed to registry::QueryMsg::Accounts for simultaneous queries
Added registry::QueryMsg::AccountList for paginated account queries
Simplified the implementations of KeyDeserialize, PrimaryKey and Prefixer traits for AssetEntry, DexAssetPairing, ModuleInfo, ModuleVersion. Used the base tuple implementation instead
Removed install_on_sub_account for client, replaced with explicit sub_account creation
with_modules method for Account Builder to add list of modules to install (ModuleInstallConfig)
query_module method for Account to query given module on account without retrieving Application object
module_installed method for Account that returns true if module installed on account
module_version_installed method for Account that returns true if module of this version installed on account
address method for Account to get address of account. Result of this method is the same as calling proxy
enable_ibc added to Account builder.
module_status on AbstractClient that returns current status of the module.
install_on_sub_account now defaults to false in Account Builder
Publisher will check if dependencies of the module is registered in version control to the chain before publishing.
Receive endpoints from abstract Modules
Value calculation logic from proxy contract.
cw-semver dependency removed
Manager no longer able to migrate pre 0.19 abstract adapters
Account Factory contract
Unused DepositManager and PagedMap objects from abstract-std
Abstract Client: If Account Builder retrieves account now it will install missing modules from the builder instead of ignoring them
Abstract Client: Added a claim_namespace function to facilitate claiming a namespace after account creation
Version Control interface: approve_all_modules_for_namespace to approve any pending modules by given “namespace”
IBC module to module queries and API.
Abstract Interface: Added helpers to create abstract IBC connections (with open-sourced cw-orch-interchain)
Ability to send multiple query messages through IBC simultaneously
New module type abstract-standalone for standalone contracts.
Abstract Client: added execute_on_manager helper method
Abstract Client: Exposed IbcClient object under AbstractClient::ibc_client()
Abstract Client(feature “interchain”): connect_to to create abstract IBC connections
Abstract Client(feature “interchain”): RemoteApplication and RemoteAccount objects that replicate Application and Account functionality in interchain environment
Abstract Account: Added an upgrade helper to upgrade an account step by step (going through all necessary versions)
IBC Client: Apps and Adapters checks that IBC Client is dependency of the module inside ibc_callback and module_ibc handlers
Ibc Client: Module to module actions now checks if app have ibc_client installed to ensure account can receive ibc callback
Helpers to simply connecting Abstract instances through IBC and reduce the setup boilerplate
register_in_version_control added to the abstract_interface::Abstract for registering new versions of native contracts in Version Control
Registration migrated native contracts to Version Control in abstract_interface::Abstract::migrate_if_version_changed method
New governance type NFT which allows an account to be owned by an NFT.
Manager will try to check dependencies on standalone modules.
Accounts with local sequence 2147483648..u32::MAX are allowed to be claimed in any order
IBC Callback and IBC module to module endpoints now have decomposed variables (sender, msg and callback)
IBC Callback messages are now mandatory and renamed to callback
Removed IBC callback IDs
Renamed CallbackInfo to Callback
Ibc API: Where applicable - accept ChainName instead of String to add clarity for the user
Standalones and IBC Client no longer added to proxy whitelist
IBC client and host now migrated only if version is not breaking and deployed otherwise
cw-ownable got replaced with cw-gov-ownable for manager contract
Renamed ChainName to TruncatedChainId
IBC Client: send_funds accepts optional memo field for every Coin attached
Bump cw-orch to 0.24.0
Accounts with local sequence 0..2147483648 cannot be predicted
Ibc Callback handler no longer includes MessageInfo as sender is always ibc_client and funds are empty
Account Factory no longer stores ibc-host, instead it queries VersionControl to assert caller matches stored to the one in version control
governance_details from manager::AccountInfo
Removed update_factory_binary_msgs endpoint from module factory
Removed propose_ownership method on manager, everything done through update_ownership instead
Abstract Client: Fixed contract address collision for same apps that are on different accounts
abstract_interface deploy methods: Fixed a bug where it was not possible to propose uploaded contract(saved in cw-orch state)
abstract_interface deploy methods: Checks both registered and pending modules instead of only registered
state.json now included in binary in release mode, allowing using binaries on a different environment than it’s been built.
module_instantiate2_address_raw for AbstractClient, allowing to install a different version than the dependency version.
Added helper functions assert_registered and is_registered to the ANS client API.
Added method module_info for querying and verifying wether an address is a module to the ModuleRegistry API.
Added default IBC-Client installation on remote modules inside Client and Account interfaces
Send multiple message simultaneously through IBC
Renamed account_id to expected_account_id for abstract_client::AccountBuilder for clarity
Namespace claiming on mainnet is now permissioned.
Renamed version_control::Config::allow_direct_module_registration_and_updates field to security_disabled.
Renamed request to execute in adapter and apps APIs
Updated to cw-orch 0.22 and cw-orch-core stabilization to 1.0.0
unused custom_swap of DexCommand
Send multiple messages to multiple IBC connected chains in one manager message.
interface feature from all of the packages
Added a .execute method on the AuthZ API to execute CosmosMsg types on behalf of a granter.
Add IBC helpers to account client.
Abstract Client builder: register dexes on ANS
.sub_accounts method on Account for getting Abstract Client Sub Accounts
Publish adapter method of Abstract Client Publisher now returns Adapter object
Added a .account_from method on the AbstractClient for retrieving Accounts.
Creating Sub Account from AbstractClient Account builder.
Installing apps and adapters for AbstractClient Account builder
Attaching funds to account creation on AbstractClient Account builder
Added unchecked_account_id method on version control.
Ability to provide expected local AccountId
Reinstallation of the same version of an app is now disabled
.authorize_on_adapters method on Application for authorizing application on adapters
Added method to assign expected .account_id for Abstract Client Account builder
.next_local_account_id for AbstractClient to query next local account sequence
.module_instantiate2_address for AbstractClient to get predicted address
Updated UsageFee api to use Address, instead of Api + unchecked address
Tests now use MockBech32 due to use of instantiate2.
Added a validation on account_id method on version control.
Creating sub-account from account factory is restricted. Use Create Sub Account method of the manager instead
AppDeployer and AdapterDeployer now take a DeployStrategy field.
Astrovault integrated into dex and cw-staking adapters
AuthZ API added
Interchain Abstract Accounts can now be created!
Added snapshot tests
Method query_account_owner() for Apps Admin object
Query registered_dexes for AbstractNameServiceClient
Query top_level_owner for manager and apps(as base query)
Support of ConcentratedLiquidity pool type for swaps. Stake/unstake currently not supported
Account namespace is unclaimed after Renounce
Resolve trait for cw-orch AnsHost interface
is_module_installed moved from Manager to Account.
account_id() method of AccountRegistry is now exposed.
Allow module-id to be passed in as a valid authorized address when allowing new addresses on adapter contracts.
BaseInstantiateMsg is now removed from install app API, now only ModuleMsg should be provided.
Modules, Manager and Proxy are now instantiated via instantiate2 message.
FeeGrant API updated.
Bump cw-orch to v0.18.
Top level account owner now has admin privileges on the apps and adapters
Multiple AbstractAccounts now don’t overlap
Top level account owner can now claim pending sub-accounts directly
Clearable helper type was added to the messages where clearing optional state could be useful
Only incremental version migration of modules allowed (0.10 -> 0.11 is allowed but 0.10 -> 0.12 not because it skips 0.11)
Module tag_response and custom_tag_response no longer require Response as an argument as well as renamed to response and custom_response respectively.
Having sub accounts will prevent you from Renounce
Version Control Namespace query now doesn’t return an error when namespace is unclaimed
NamespaceResponse type updated to be able to represent claimed and unclaimed namespace
DepositMsgs removed (now deposit() returns Vec<CosmosMsg>)
Abstract removed from the fields where it’s redundant
InstantiateMsg is now removed from the install_adapter API
Removed wasm_smart_query helper, since it’s accessible from Querier object
Removed Adapter base Remove action
Namespace registration fee fixed
Version Control smart query now returns Version Control config instead of factory address
Sub accounts now unregister themselves on owning manager if renounced
Install modules on account or Sub-account creation.
Manager stores his sub-accounts and sub-accounts can register or unregister in case of ownership change.
Query on module factory to see how much funds needs to be attached for installing modules.
Version control on instantiation to the Apps alongside with registry traits.
Instantiation funds added to module configuration, allowing modules to perform external setup calls.
An adapter_msg_types similar to app_msg_types. This can be used to easily define the top-level entrypoint messages.
Updated fetch_data arguments of CwStakingCommand
StakingInfoResponse now returns staking target(which is either contract address or pool id) instead of always staking contract address.
Owner of the sub-accounts now Proxy, allowing modules to interact with sub-accounts.
Install modules replaced install module method on module factory to reduce gas consumption for multi-install cases.
Modified the account id structure. Each account is now identified with a unique ID and a trace. This is a requirement for Abstract IBC.
Register Module(and Add Module) will now accept list of items, which reduces gas for multi-module install
Removed the CustomSwap option on the dex adapter.
Stake methods on cw-staking adapter now accept list, allowing users to do multi-stake/unstake/etc.
Added must_use attribute on abstract sdk methods
Renamed abstract-(dex/staking)-adapter-traits to abstract-(dex/staking)-standard
Partially fixed cw-staking for Osmosis.
Manager governance now changes only after new “owner” claimed ownership.
Fixed and separated cw-staking and dex adapters for kujira.
ExecOnModule calls now forward any provided funds to the module that is called.
Manager queries of standalone module versions will now return version of the contract from the Version Control storage instead of error
Neutron + Archway to registry
Ability to set admin to native contracts during instantiation
Query handler for module data
Added neutron
Address of App/Adapter returned and set by default.
Ability to add module metadata.
Ability to set an install fee for modules.
Account interaction helpers
Removed the ability to claim multiple namespaces.
It is now possible to replace a module code-id/address on testnets.
Adapter execution from the manager with a provided proxy address is now allowed.
Errors now need to implement From<AbstractError> and From<AbstractSdkError>
Version Control Modules / ModuleList
Fixed abstract-interface publishing
Fixed wasming with write_api error in the abstract-adapter and abstract-app
Better querying of app and adapter directly vs message construction
PoolId is now renamed to PoolAddress to avoid confusion with the Abstract Pool Id (and because it can be resolved
to an address / id)
construct_staking_entry from ContractEntry, which had previously violated the SRP.