9 releases

Uses new Rust 2021

0.2.0-beta.6 Nov 25, 2022
0.2.0-beta.5 Nov 18, 2022
0.2.0-beta.1 Oct 26, 2022
0.1.1-alpha4 Sep 2, 2022
0.1.0 Oct 10, 2022

#157 in Operating systems

Download history 3/week @ 2022-08-13 7/week @ 2022-08-20 10/week @ 2022-08-27 42/week @ 2022-09-03 53/week @ 2022-09-10 22/week @ 2022-09-17 11/week @ 2022-09-24 31/week @ 2022-10-01 47/week @ 2022-10-08 8/week @ 2022-10-15 48/week @ 2022-10-22 42/week @ 2022-10-29 34/week @ 2022-11-05 131/week @ 2022-11-12 92/week @ 2022-11-19 49/week @ 2022-11-26

322 downloads per month
Used in fewer than 8 crates


3.5K SLoC


This package contains everything you need to interact with Abstract contracts.

This package contains:

  • Abstract contract interface messages
  • Abstract contract states
  • Abstract objects (preferably use the re-exported version in Abstract-SDK)


// Import a contract Exec/Init/Query message
// Import a contract state lay-out
// Import a state object


Each interface in individually commented.


Each state-layout is also individually covered


Abstract Objects are used to store information along with helper functions. We provide these as imports so the data can be retrieved externally (using Raw Queries).

If you want to use these objects in your own contracts we suggest using the abstract-sdk package.


Abstract OS

Abstract OS is the interface-defining crate to the Abstract OS smart-contract framework.


This crate provides the key utilities that are required to integrate with or write Abstract contracts.


All interfacing message structs are defined here so they can be imported.

use abstract_os::manager::ExecuteMsg;


cw-asset is used for asset-management. If a message requests a String value for an Asset field then you need to provide the human-readable ans_host key. The full list of supported assets and contracts is given here. The contract will handel address retrieval internally.


The internal state for each contract is also contained within this crate. This ensures that breaking changes to the internal state are easily spotted. It also allows for tight and low-gas integration between contracts by performing raw queries on these states. A contract's state object can be imported and used like:

use crate::manager::state::OS_ID
let os_id = OS_ID.query(querier, manager_address).unwrap();

The internally stored objects are also contained within this package in [crate::objects].


Abstract contract names are used internally and for version management. They are exported for ease of use:

use abstract_os::PROXY;


~88K SLoC