Skip to content

Arche Protocol Collaterals

Fetch collateral events for versions 0 to 130000.

Code

Rust
use futures::StreamExt;
use std::{collections::HashSet, sync::Arc};
use pangea_client::{
    core::types::ChainId, query::Bound,
    ClientBuilder, Format, WsProvider,
    provider::MoveProvider, requests::arche::GetCollateralsRequest, 
};
 
#[tokio::main]
async fn main() {
    dotenvy::dotenv_override().ok();
 
    let client = match ClientBuilder::default()
        .endpoint("movement.app.pangea.foundation")
        .build::<WsProvider>()
        .await
    {
        Ok(client) => Arc::new(client),
        Err(e) => {
            eprintln!("Client failed to initialize:\n{e}");
            return;
        }
    };
 
    {
        let request = GetCollateralsRequest { 
            chains: HashSet::from([ChainId::MOVEMENT]), 
            from_block: Bound::Exact(0), 
            to_block: Bound::Exact(130000), 
            ..Default::default() 
        }; 
        let stream = match client 
            .get_move_arche_collaterals_by_format(request, Format::JsonStream, false) 
            .await
        {
            Ok(stream) => stream,
            Err(e) => {
                eprintln!("Request failed\n{e}");
                return;
            }
        };
 
        futures::pin_mut!(stream);
 
        while let Some(chunk) = stream.next().await {
            let chunk = String::from_utf8(chunk.unwrap()).unwrap();
            println!("{chunk}");
        }
    }
}

Response

{
  ...
  {
    "block_number": 127617,
    "transaction_hash": "0x26aa5f47e898f0982106397ed55662330b3bcf4b3b91955647fc0beab4196b22",
    "log_index": 2,
    "timestamp": 1741605374912112,
    "arche_address": "0xbcc40f56a3538c9cc25254f485f48e6f150f9acac53a2e92c6d698a9c1751a0b",
    "event_type": "NewAnnualPercentageYield",
    "asset_address": "0x000000000000000000000000000000000000000000000000000000000000000a",
    "asset_name": "Move Coin",
    "asset_symbol": "MOVE",
    "asset_decimals": 8,
    "state": null,
    "ltv_numerator": 13,
    "ltv_denominator": 200,
    "annual_interest_rate_numerator": null,
    "annual_interest_rate_denominator": null,
    "liquidation_discount_numerator": null,
    "liquidation_discount_denominator": null,
    "max_borrowable_amount": null,
    "borrow_fee_numerator": null,
    "borrow_fee_denominator": null
  }
}

Query parameters

  • chains: Filters the data by chain.
  • from_block: Filters the data by a starting version. As Move chains use a per-transaction versioned database, we use version interchangably with block_number and omit blocks altogether.
  • to_block: Filters the data by an ending version. As Move chains use a per-transaction versioned database, we use version interchangably with block_number and omit blocks altogether.
  • event_type__in: Filters the data by a list of event_type.
  • asset_address__in: Filters the data by a list of collateral asset_address.
  • state__in: Filters the data by a list of collateral state (Activated, Deactivated, Removed).