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 Account
s.
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 AbstractAccount
s 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.