ADO Base
The ADO Base contains all the common functionality applied on all ADOs upon instantiation.
The struct used to hold important information about each instantiated ADO. Implemented as
BaseInstantiateMsg
.Rust
pub struct InstantiateMsg {
pub ado_type: String,
pub ado_version: String,
pub operators: Option<Vec<String>>,
pub modules: Option<Vec<Module>>,
pub primitive_contract: Option<String>,
}
Name | Type | Description |
---|---|---|
ado_type | String | The type of the ADO. Usually, it is the same as the name. It is automatically set when an ADO is instantiated. |
ado_version | String | The version of the ADO. |
operators | Option<Vec<String>> | The list of addresses to set as operators on the contract. |
modules | The list of modules to add to the ADO. | |
primitive_contract | Option<String> | The address of the primitive contract to use for data retrieval. |
Many of the contracts will have repeating functionality. To normalize one struct across all contracts, we use the
AndrRecieve
and AndrQuery
for certain functionalities that will be shown below. This way each contract doesn't have to independently handle the message.All of the contracts have an
AndrReceive
as an execute.Rust
pub enum ExecuteMsg {
AndrReceive(AndromedaMsg)
}
An enum lisiting the different types of
AndromedaMsg
. Not all of these messages can be executed by any contract. The withdraw feature should be enabled in order to execute:
Withdraw
The modules feature should be enabled in order to execute:
RegisterModule
DeregisterModule
AlterModule
The primitive feature should be enabled in order to execute:
RefreshAddress
RefreshAddresses
To check if an ADO uses a certain feature, check the AndrReceive section in that contract's documentation. If nothing is specified then the feature is not available.
pub enum AndromedaMsg {
Receive(Option<Binary>),
UpdateOwner {
address: String,
},
UpdateOperators {
operators: Vec<String>,
},
Withdraw {
recipient: Option<Recipient>,
tokens_to_withdraw: Option<Vec<Withdrawal>>,
},
RegisterModule {
module: Module,
},
DeregisterModule {
module_idx: Uint64,
},
AlterModule {
module_idx: Uint64,
module: Module,
},
RefreshAddress {
contract: String,
},
RefreshAddresses {
limit: Option<u32>,
start_after: Option<String>,
},
}
Receives binary data that will be parsed and executed if valid.
Rust
pub enum AndromedaMsg {
Receive(Option<Binary>)
}
Updates the owner of the contract.
Only available to the contract owner.
Rust
JSON
pub enum AndromedaMsg{
UpdateOwner {
address:String
}
}
{
"andr_receive":{
"update_owner":{
"address":"andr1..."
}
}
}
Name | Type | Description |
---|---|---|
address | String | The address of the new owner. |
Updates the assigned operators of the contract.
Removes previous list of operators.
Only available to the contract owner.
Rust
JSON
pub enum AndromedaMsg{
UpdateOperators {
operators: Vec<String>,
}
}
{
"andr_receive":{
"update_operators":{
"operators":["andr1...","andr1...",...]
}
}
}
Name | Type | Description |
---|---|---|
operators | Vec<String> | The new addresses of the operators. |
Withdraws token to a specified
recipient
. Not common to all ADOs, but only to the ones with withdraw feature enabled.Rust
JSON
pub enum AndromedaMsg{
Withdraw {
recipient: Option<Recipient>,
tokens_to_withdraw: Option<Vec<Withdrawal>>,
}
}
{
"andr_receive":{
"withdraw":{
"recipient":{
"addr":"andr1..."
},
"tokens_to_withdraw":[
{
"token":"uandr",
"withdrawal_type":{
"percentage":"0.3"
}
},
...
]
}
}
Name | Type | Description |
---|---|---|
recipient | The recipient of the funds. | |
tokens_to_withdraw | Option<Vec<Withdrawal> | The tokens to withdraw. If not specified all tokens are withdrawn. |
pub struct Withdrawal {
pub token: String,
pub withdrawal_type: Option<WithdrawalType>,
}
Withdrawal can be a certain amount or a percentage of the tokens.
pub enum WithdrawalType {
Amount(Uint128),
Percentage(Decimal),
}
The following can be executed by the contracts that implement modules:
Adds a module to the contract.
Only the owner/operators can execute RegisterModule.
Each module is assigned a u64 index so as it can be unregistered/altered by the owner.
Only available to the contract owner/operators.
Rust
JSON
pub enum AndromedaMsg {
RegisterModule {
module: Module,
}
}
{
"andr_receive":{
"register_module": {
"module":{
"module_type": "receipt",
"address":{
"identifier":"andr1..."
},
"is_mutable": true
}
}
}
}
Name | Type | Description |
---|---|---|
module | The module to add. |
Removes a module from the contract.
Only available to the contract owner/operators.
Only mutable modules can be deregistered.
Rust
JSON
pub enum AndromedaMsg{
DeregisterModule {
module_idx: Uint64,
}
}
{
"andr_receive":{
"deregister_module":{
"module_idx":"3"
}
}
}
Name | Type | Description |
---|---|---|
module_idx | Uint64 | The index of the module to be removed. |
Changes a module to a new one specified.
Only available to the contract owner/operators.
Only mutable modules can be altered.
Rust
JSON
pub enum AndromedaMsg{
AlterModule {
module_idx: Uint64,
module: Module,
}
}
{
"andr_receive":{
"alter_module":{
"module_idx":"3",
"module":{
"module_type": "receipt",
"address":{
"identifier":"andr1..."
}
"is_mutable": false
}
}
}
}
Name | Type | Description |
---|---|---|
module_idx | Uint64 | The index of the module to change. |
module | The new module implement. |
The following messages are used by contracts that implement primitives.
Used to save the value for the specified
contract
in the cache to be used later on in the contract. Queries the primitive contract and saves the result in the cache.Rust
JSON
pub enum AndromedaMsg
RefreshAddress {
contract: String,
}
{
"refresh_address":"anchor"
}
Name | Type | Description |
---|---|---|
contract | String | The key used in the primitive contract. |
Similar to
RefreshAddress
, but is used to save all the values from the primitive to the cache.Rust
JSON
pub enum AndromedaMsg{
RefreshAddresses {
limit: Option<u32>,
start_after: Option<String>,
}
}
{
"andr_receive":{
"refresh_addresses":{
"limit": 15
}
}
}
Name | Type | Description |
---|---|---|
limit | Option<32> | An optional limit to the number of addresses to refresh. Defaults to 10. The max limit is 20. |
start_after | Option<String> | An optional address for which to start after, used for pagination. |
pub enum QueryMsg {
AndrQuery(AndromedaQuery),
}
pub enum AndromedaQuery {
Get(Option<Binary>),
#[returns(ContractOwnerResponse)]
Owner {},
#[returns(OperatorsResponse)]
Operators {},
#[returns(TypeResponse)]
Type {},
#[returns(PublisherResponse)]
OriginalPublisher {},
#[returns(BlockHeightResponse)]
BlockHeightUponCreation {},
#[returns(IsOperatorResponse)]
IsOperator { address: String },
#[returns(Module)]
Module { id: Uint64 },
#[returns(Vec<String>)]
ModuleIds {},
#[returns(VersionResponse)]
Version {},
}
Takes binary data which is parsed and executes the corresponding query if valid.
Rust
pub enum AndromedaQuery {
#[returns(Option<Binary>)]
Get(Option<Binary>)
}
Queries the owner of the contract.
Rust
Json
pub enum AndromedaQuery{
#[returns(ContractOwnerResponse)]
Owner{}
}
{
"andr_query":{
"owner":{}
}
}
Rust
JSON
pub struct ContractOwnerResponse {
pub owner: String
}
{
"owner":"andr1..."
}
Queries the operators of a contract.
Rust
JSON
pub enum AndromedaQuery{
#[returns(OperatorsResponse)]
Operators{}
}
{
"andr_query":{
"operators":{}
}
}
Rust
JSON
pub struct OperatorsResponse {
pub operators: Vec<String>,
}
{
"operators":["andr1...","andr1...",...]
}
Checks if the specified
address
is an operator of the contract.Rust
JSON
pub enum AndromedaQuery{
#[returns(IsOperatorResponse)]
IsOperators{
address:String,
}
}
{
"andr_query":{
"is_operators":{
"address":"andr1..."
}
}
}
Name | Type | Description |
---|---|---|
address | String | The address to check as operator. |
Rust
JSON
pub struct IsOperatorResponse {
pub is_operator: bool,
}
{
"is_operator": true
}
Queries the Ado_type.
Rust
JSON
pub enum AndromedaQuery {
#[returns(TypeResponse)]
Type {}
}
{
"andr_query":{
"type":{}
}
}
Rust
JSON
pub struct TypeResponse {
pub ado_type: String,
}
{
"ado_type":"gumball"
}
Name | Type | Description |
---|---|---|
ado_type | String | The type of the ado. |
Queries the block height when the ADO was created.
Rust
JSON
pub enum AndromedaQuery{
#[returns(BlockHeightResponse)]
BlockHeightUponCreation {},
}
{
"andr_query":{
"block_height_upon_creation":{}
}
}
Rust
JSON
pub struct BlockHeightResponse {
pub block_height: u64,
}
{
"block_height": 200134
}
Name | Type | Description |
---|---|---|
block_height | u64 | The block height at the time of creation of the ADO. |
Queries the version of the ADO.
Rust
JSON
pub enum AndromedaQuery {
#[returns(VersionResponse)]
Version {}
}
{
"andr_query":{
"version":{}
}
}
Rust
JSON
pub struct VersionResponse {
pub version: String,
}
{
"version": "0.1.0"
}
Name | Type | Descripton |
---|---|---|
version | String | The version of the ADO. |
Queries the orginal address that published/instantiated the ADO.
Rust
JSON
pub enum AndromedaQuery {
#[returns(PublisherResponse)]
OriginalPublisher {}
}
{
"andr_query":{
"original_publisher":{}
}
}
Rust
JSON
pub struct PublisherResponse {
pub original_publisher: String,
}
{
"original_publisher":"andr1..."
}
Name | Type | Description |
---|---|---|
original_publisher | String | The original address that instantiated/published the ADO. |
The following can be executed by the contracts that implement modules:
Queries a module by its Id.
Rust
JSON
pub enum AndromedaQuery{
#[returns(Module)]
Module{
id:Uint64,
}
}
{
"andr_query":{
"module":{
"id":"tokenid"
}
}
}
Name | Type | Description |
---|---|---|
id | Uint64 | The Id of the module to query. |
Struct used to represent a module and its currently recorded address.
Rust
JSON
pub struct ModuleInfoWithAddress {
pub module: Module,
pub address: String,
}
{
"module":{
"module_type":"address_list",
"instantiate":{
"address": "andr1..."
},
"address":"andr1..."
}
Name | Type | Description |
---|---|---|
module | The information of the module are found in a Module struct. | |
address | String | The contract address of the module. |
| | |
Queries all of the module ids.
Rust
JSON
pub enum AndromedaQuery{
#[returns(Vec<String>)]
ModuleIds{}
}
{
"andr_query":{
"module_ids":{}
}
Returns a
Vec<String>
containing the module ids.Last modified 6mo ago