1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//! # Oracle WebAssembly
//!
//! Owasm (o-wah-some) is the standard library for writing and encoding oracle logic to be for
//! deterministic execution on public ledgers that involve fetching data from external sources.
//! Initially developed by [Band Protocol](https://bandprotocol.com), it is currently used as the
//! go-to standard for writing oracle scripts in the [Decentralized Data Delivery Network].
//!
//! ## Design
//!
//! A D3N oracle script must allow the host to ask for the external data that the script wants
//! (by invoking `__prepare`) and perform aggregation on data points collected from them
//! (by invoking `__execute`).
//!
//! ## Code Structure
//!
//! Owasm library consists of two primary modules:
//! - [owasm/core] is the backbone of the crate. It defines the methods to encode and decode both
//! input commands and data outputs, with the `Oracle` trait to allow arbitrary data types, once
//! implemented the trait, to be able to get converted to/from external data.
//! - [owasm/ext] is the extension library providing convenient ways to write oracle scripts that
//! connect to various public APIs. The library is growing to support more use cases and it open
//! for public contribution!
//!
//! [Band Protocol]: https://bandprotocol.com
//! [Decentralized Data Delivery Network]: https://github.com/bandprotocol/d3n
//! [owasm/core]: core/index.html
//! [owasm/ext]: ext/index.html

#[macro_use]
mod macros;

pub mod ext;
pub mod oei;