Stork
GitHubXStork
  • INTRODUCTION
    • Welcome to Stork
    • Core Concepts
    • How It Works
    • Products
  • Getting Started
    • Becoming a Publisher
    • Becoming a Subscriber
    • Putting Data On-Chain
    • Accessing Data On-Chain
  • API Reference
    • Websocket API
      • Publisher
      • Subscriber
    • REST API
    • Contract APIs
      • EVM
      • Solana / SVM
      • Sui
      • Aptos
      • CosmWasm
    • Chain Pusher Configs
      • Asset Config YAML
    • Publisher Agent Configs
      • Config JSON
      • Keys JSON
  • Resources
    • Asset ID Registry
    • Contract Addresses
      • EVM
      • Solana / SVM
      • Sui
      • Aptos
      • CosmWasm
    • Adapters
    • Public Keys
    • FAQ
Powered by GitBook
On this page
  • SDK
  • Installation
  • Query Messages
  • Get Latest Canonical Temporal Numeric Value Unchecked
  • Get Single Update Fee
  • Get Stork EVM Public Key
  • Get Owner
  • Execution Messages
  • Update Temporal Numeric Values EVM
  • Examples
Edit on GitHub
  1. API Reference
  2. Contract APIs

CosmWasm

Programming API reference for the Stork CosmWasm contract.

PreviousAptosNextChain Pusher Configs

Last updated 2 months ago

SDK

CosmWasm contracts can integrate with the using the stork-cw rust crate available on . This crate contains the full contract code, which can be used as an SDK by enabling the library feature. For more documentation, please also see the . The Stork contract / SDK are built on top of .

Installation

After setting up your CosmWasm project, add the stork-cw crate to your project dependencies by adding the following line to the [dependencies] section of the programs Cargo.toml:

// Cargo.toml
[dependencies]
stork-cw = { version = ">0.1.1", features = ["library"]

or the following command:

cargo add stork-cw --features library

You can now import the stork-cw's interfaces with:

// contract.rs
use stork_cw::{<...>}

Query Messages

pub enum QueryMsg {
    GetLatestCanonicalTemporalNumericValueUnchecked {
        id: EncodedAssetId,
    },
    GetSingleUpdateFee {},
    GetStorkEvmPublicKey {},
    GetOwner {},
}

Get Latest Canonical Temporal Numeric Value Unchecked

Description

Retrieves the latest value for a specified asset without additional checks.

Parameters

Response

pub struct GetTemporalNumericValueResponse {
    pub temporal_numeric_value: TemporalNumericValue,
}

Contains a TemporalNumericValue instance representing the latest timestamped value for the relevant asset.

Errors

  • StorkError::FeedNotFound : If the specified feed does not exist.

Get Single Update Fee

Description

Retrieves the fee required to update a single feed.

Response

pub struct GetSingleUpdateFeeResponse {
    pub fee: Coin,
}

Contains a Coin instance representing the amount and denomination of the fee.

Get Stork EVM Public Key

Description

Retrieves the stored EVM public key used for message verification.

Response

pub struct GetStorkEvmPublicKeyResponse {
    pub stork_evm_public_key: EvmPubkey,
}

Contains an EvmPubkey.

Get Owner

Description

Retrieves the stored address of the owner of the Stork contract.

Response

pub struct GetOwnerResponse {
    pub owner: Addr,
}

Contains the Addr of the owner.

Execution Messages

pub enum ExecMsg {
        UpdateTemporalNumericValuesEvm { update_data: Vec<UpdateData> },
        // admin functions ..
    }

Update Temporal Numeric Values EVM

Update the latest value of one or more assets based on the provided update values.

Parameters

  • update_data: Vec<UpdateData> : A vector of updates, where each update contains:

    • id: EncodedAssetId : Encoded asset ID (byte array) of the asset to update

    • temporal_numeric_value: TemporalNumericValue : Struct containing the value and timestamp of the update.

    • publisher_merkle_root: [u8; 32] : The publisher's Merkle root.

    • value_compute_alg_hash: [u8; 32]: Hash of the compute algorithm.

    • r: [u8; 32] : R component of the signature.

    • s: [u8; 32] : S component of the signature.

    • v: u8: V component of the signature.

Behavior

  • Verifies the update data's signature using the Stork EVM public key stored in the contracts state.

  • Verifies that the update is more recent than the data currently in the feed.

  • If the signature is invalid, the function errors with StorkError::InvalidSignature.

  • If the update is not recent, the function does not error but does no update the feed object.

  • If both verification pass, updates the TemporalNumericValue for the asset and emits a temporal_numeric_value_update event.

Errors

  • StorkError::InsufficientFunds: If an insufficient fee is included with the message for the number of updates.

  • StorkError::InvalidSignature: If the signature verification fails.

Examples

id: EncodedAssetId: The of the feed to read.

Example usage of the Stork CosmWasm contract in both Sylvia and CosmWasm Core contracts can be found in the .

Stork contract
crates.io
docs.rs page
Sylvia
stork-external github repo
encoded asset ID