Andromeda
Ask or search…
K
Comment on page

ADO Database

Introduction

The Database ADO (ADODB) is a smart contract that is primarily used to store the code Ids for Andromeda ADOs. These code Ids are used to instantiate these ADOs in Andromeda Apps. The code Ids are stored within a key value pair where the key is the ADO type and the value is the ADO code Id.
The ADODB is also responsible for managing the economic engine of the Andromeda ecosystem, allowing ADO publishers to set custom fees to be paid when interacting with one of their published ADOs. These fees can be set as native or a CW20 token.
Currently all published ADOs have been done by and through the Andromeda team. This does not mean that ADOs developed by Andromeda are the only ones that can be published to the ADODB. On the contrary, we encourage developers to create new and exciting ADOs to be published that can be sumbmitted to our team to be reviewed. If the quality of the ADO is found to be to standard, the developer is given permission to publish it into the existing library of ADOs. It is important to note that although this process is done currently by the Andromeda team, the process of accepting and publishing ADOs will eventually be handed to the Andromeda DAO to make the process as decentralized as possible.
ADOs instantiated by code Ids found in the ADODB are eligible to communicate with the AMP layer as it ensures that the ADO was created by one of the Andromeda contracts.
Ado_type: adodb

InstantiateMsg

Rust
JSON
pub struct InstantiateMsg {
pub kernel_address: String,
pub owner: Option<String>,
}
{
"kernel_address":"andr1..."
}
Name
Type
Description
kernel_address
String
The contract address of the kernel_address. Can be found in our deployed contracts.
owner
Option<String>
Optional address to specify as the owner of the ADO being created. Defaults to the sender if not specified.

ExecuteMsg

Publish

Publishes an ADO to the ADODB by saving the provided code_id under the specified ado_type.
The new version needs to be greater than the old one if using an already published ado_type.
Only available to the ADO owner or an operator of the ADO.
The fee can be either
Rust
JSON
pub enum ExecuteMsg {
Publish {
code_id: u64,
ado_type: String,
action_fees: Option<Vec<ActionFee>>,
version: String,
publisher: Option<String>,
},
}
{
"publish":{
"code_id": 98,
"ado_type":"nft-auction",
"action_fees": [
{
"action":"mint",
"asset":"uandr",
"amount":"500",
"receiver":"andr1...
},
{
"action":"buy",
"asset":"uandr",
"amount":"700",
"receiver":"andr1...
}],
"version":"1.2.9",
"publisher":"andr1..."
}
}
Name
Type
Description
code_id
u64
The code id to be used to instantiate the specified ado_type.
ado_type
String
The type/name of the ADO to publish.
action_fees
Option<Vec<ActionFee>>
Optional set of fees to be enforced when perfroming some action on an ADO of this type.
version
String
The version of the ADO. The version needs to conform with the semantic versioning standard.
publisher
Option<String>
The address to receive the fees.

ActionFee

pub struct ActionFee {
pub action: String,
pub asset: String,
pub amount: Uint128,
pub receiver: Option<Addr>,
}
Name
Type
Description
action
String
The action to add the fees on when called. This could be instantiation or one of the execute messages of the ADO.
asset
String
The funds used to pay the fee. Can be either a native fund such as "uandr" or a cw20 token contract address such as "andr1....".
amount
String
The amount of the specified funds to pay as fees when performing the action.
receiver
Option<Addr>
An optional address to receive the fees. If not specified, then the specified publisher receives the fees.

UpdateActionFees

Update the fees implemented on the specified ado_type.
Only availabe to the contract owner.
Will return an error if the ADO type does not exist.
Rust
JSON
pub enum ExecuteMsg {
UpdateActionFees {
ado_type: String,
action_fees: Vec<ActionFee>,
}
}
{
"update_action_fees":{
"ado_type":"nft-marketplace",
"action_fees": [
{
"action":"mint",
"asset":"uandr",
"amount":"900",
"receiver":"andr1...
},
{
"action":"sell",
"asset":"uandr",
"amount":"350",
"receiver":"andr1...
}]
}
Name
Type
Description
ado_type
String
The ado_type to
action_fees
The new fees to implement on the ADOs with the specified ADO type .

RemoveActionFees

Removes the specified Action Fees for the specified ado_type.
Only available to the contract owner.
Will return an error if the ADO type does not exist.
Rust
JSON
pub enum ExecuteMsg {
RemoveActionFees {
ado_type: String,
actions: Vec<String>,
},
}
{
"remove_action_fees":{
"ado_type":"nft-marketplace",
"action_fees":["mint","buy","sell",...]
}
}
Name
Type
Description
ado_type
String
The ado_type to remove the fees from.
action_fees
Vec<String>
A vector of Actions to remove the fees from.

UpdatePublisher

Assigns a new address as the publisher of an ADO.
Only availabe to the contract owner.
Rust
JSON
pub enum ExecuteMsg {
UpdatePublisher {
ado_type: String,
publisher: String,
}
}
{
"update_publisher":{
"ado_type":"auction",
"publisher":"andr1..."
}
}
Name
Type
Description
ado_type
String
The ado type to update the publisher for.
publisher
String
The address of the new publsiher.

Base Executes

The rest of the execute messages can be found in the ADO Base section.

QueryMsg

CodeId

Query the code_id of the specified key.
Rust
JSON
pub enum QueryMsg {
#[returns(u64)]
CodeId {
key:String,
}
}
{
"code_id": {
"key": "cw721"
}
}
Name
Type
Description
key
String
The type of ADO we want to get the code Id for.
Returns a u64 which represents the code_id.

ADOType

Queries the ADO type linked to the specified code_id.
Rust
JSON
pub enum QueryMsg {
#[serde(rename = "ado_type")]
#[returns(Option<String>)]
ADOType {
code_id: u64
}
}
{
"ado_type":{
"code_id": 13
}
}
Name
Type
Description
code_id
u64
The code Id to return the ADO type for.
Returns the ADO type in a string.

AllADOTypes

Queries all the ADO types available with their latest versions.
Rust
JSON
pub enum QueryMsg {
#[returns(Vec<String>)]
#[serde(rename = "all_ado_types")]
AllADOTypes {
start_after: Option<String>,
limit: Option<u32>,
}
}
{
"all_ado_types":{
"start_after":"auction",
"limit": 40
}
}
Name
Type
Description
start_after
Option<String>
Optional ADO to start from. The ADOs are listed alphabetically. If specified, the query will only fetch ADOs after the specified start_after.
limit
Option<u32>
Optional limit to the number of the ADO types returned by the query. If not specified, the default limit will be 10. The maximum limit that can be set is 100.
The query will return each ADO type along with its latest version.

ADOVersions

Queries the available versions of the specified ADO type.
Rust
JSON
pub enum QueryMsg {
#[returns(Vec<String>)]
#[serde(rename = "ado_versions")]
ADOVersions {
ado_type: String,
start_after: Option<String>,
limit: Option<u32>,
},
}
{
"ado_versions":{
"ado_type":"auction",
"start_after":"[email protected]",
"limit": 15
}
}
Name
Type
Description
ado_type
String
The type of ADO to get the versions for.
start_after
Option<String>
Optional version to start from. If specified, the query will only fetch versions greater than the start_after version.
limit
Option<u32>
Optional limit to the number of the versions returned by the query. If not specified, the default limit will be 10. The maximum limit that can be set is 100.
Returns a Vec<String> containing all the requested ADO versions.

ADOMetadata

Queries all the metadata related to the specified ADO type.
Rust
JSON
pub enum QueryMsg {
#[serde(rename = "ado_metadata")]
#[returns(Option<ADOMetadata>)]
ADOMetadata { ado_type: String },
}
{
"ado_metadata":{
"ado_type":"acution"
}
}
Name
Type
Description
ado_type
String
The ADO type to get the metadata for.

ADOMetadata

The struct returned containing the ADO metadata.
Rust
JSON
pub struct ADOMetadata {
pub publisher: String,
pub latest_version: String,
}
{
"publisher":"andr1...",
"latest_version":"1.4.8
}
Name
Type
Description
publisher
String
The publisher of the specified ADO type.
latest_version
String
The published version of the ADO type.

ActionFee

Queries the fees implemented on the specified Action for the specified ADO type.
Rust
JSON
pub enum QueryMsg {
#[returns(Option<ActionFee>)]
ActionFee { ado_type: String, action: String },
}
{
"action_fee":{
"ado_type":"nft-auction",
"action":"mint"
}
}
Name
Type
Description
ado_type
String
The ADO type that has the action to query fees for.
action
String
The action of the ADO type to query the fees for.
Returns the ActionFee struct with the fee information if found.

ActionFeeByCodeId

Queries the fees implemented on the specified Action for the specified code_id ADO.
Rust
JSON
pub enum QueryMsg {
#[returns(Option<ActionFee>)]
ActionFeeByCodeId { code_id: u64, action: String },
}
{
"action_fee_by_code_id":{
"code_id": 55,
"action":"buy"
}
}
Name
Type
Description
ado_type
String
The ADO type that has the action to query fees for.
action
String
The action of the ADO type to query the fees for.
Returns the ActionFee struct with the fee information if found.

Base Queries

The rest of the query messages can be found in the ADO Base section.