Skip to content

Commit

Permalink
ok
Browse files Browse the repository at this point in the history
  • Loading branch information
technicallyty committed Sep 27, 2024
1 parent ee8fe93 commit 3ef9a45
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 171 deletions.
91 changes: 91 additions & 0 deletions docs/developers/connect-sdk.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: CosmWasm Connect SDK
description: Querying Connect prices using CosmWasm and Connect SDK
icon: atom-simple
---

<Note>
**Building with Connect? Join our [Discord](https://discord.gg/amAgf9Z39w)**!
</Note>

The Connect SDK provides bindings for the `x/oracle` and `x/marketmap` modules.

## Adding Connect SDK To Your Contract

The version of the Connect SDK for your contract depends on the Connect protocol version of the chain.

| Connect Protocol Version | Connect SDK Version |
|--------------------------|---------------------------------------|
| v1.x | v0.1.0 |
| v2.x | v0.2.0 |

<Tip>
How to find the Connect Protocol version

The protocol version of Connect can be found on the chain by either:

1. Checking the chain's `go.mod` file.
2. Checking the required version in the [quickstart](../validators/quickstart#run-connect-sidecar)
</Tip>

Add the following line to the `dependencies` section of your `Cargo.toml`:

`connect-sdk = { git = "https://github.com/skip-mev/connect-sdk", tag = "CONNECT SDK VERSION HERE", package = "connect-sdk" }`



## Safely Accessing Price Data

The following checks should be made before utilizing a price from Connect in a contract:

1. currency-pair exists within the `x/oracle` and `x/marketmap` modules.
2. currency-pair is `enabled` within the `x/marketmap`.
3. price `block_height` is not older than a few blocks.
4. price nonce is not 0.


### Code Example

```rust contract.rs
fn do_something_with_price(
deps: Deps<ConnectQuery>,
env: Env,
currency_pair: CurrencyPair
) -> StdResult<Int128> {
let connect_querier = ConnectQuerier::new(&deps.querier);
let base = currency_pair.base.to_uppercase();
let quote = currency_pair.quote.to_uppercase();

// Check if the market exists and is enabled
let market = connect_querier.get_marketmap_market(base.clone(), quote.clone())?;
if !market.market.ticker.enabled {
return Err(StdError::generic_err("market is not enabled"));
}

// Check price validity
let price_response = connect_querier.get_oracle_price(base, quote)?;
if price_response.nonce == 0 {
return Err(StdError::generic_err("price has never been updated"));
}

let max_price_age: u64 = 3; // adjust based on appetite for price freshness
let price_age = env.block.height - price_response.price.block_height.unwrap();
if price_age > max_price_age {
return Err(StdError::generic_err("price is too old"));
}

// We can now do something with the price
let valid_price = price_response.price.price;

// Placeholder for actual price processing
Ok(valid_price)
}
```



## Full Example Contract

Example Contract here: [example](https://github.com/skip-mev/connect-sdk/tree/trunk/contracts/x-oracle-passthrough).


170 changes: 0 additions & 170 deletions docs/developers/neutron-sdk.mdx

This file was deleted.

2 changes: 1 addition & 1 deletion docs/mint.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"pages": [
"developers/integration",
"developers/high-level",
"developers/neutron-sdk",
"developers/connect-sdk",
"developers/providers",
{
"group": "Modules",
Expand Down

0 comments on commit 3ef9a45

Please sign in to comment.