63 releases (38 stable)

1.2.20 Mar 20, 2022
1.2.17 Feb 25, 2022
1.1.8 Dec 17, 2021
1.1.1 Nov 23, 2021
0.2.6 Jul 29, 2021

#14 in #terra

Download history 7/week @ 2024-07-17 4/week @ 2024-07-24 1/week @ 2024-07-31 1/week @ 2024-08-21 4/week @ 2024-08-28 9/week @ 2024-09-18 21/week @ 2024-09-25 17/week @ 2024-10-02

186 downloads per month
Used in 4 crates

Apache-2.0

490KB
4K SLoC

Terra Rust API

A rust API for Terrad's LCD system.

Warning

This is a WIP.

No security audit has been performed.

Randomness

The API is currently using random numbers via
let mut rng = rand::thread_rng();

Disclaimer

This may steal your money.

This is not investment advice.

Do your own research

Help ?

There is a CLI that uses this, which may be helpful.

We have also set up a Discord channel to discuss this, and other PFC things

If you think this was useful, feel free to delegate to the PFC validator. It will help defray the costs.

PFC - Terra/Luna is Pretty Freaking Cool right... feel free to drop me a line

An Example

use terra_rust_api::{Terra, GasOptions, PrivateKey};
use terra_rust_api::core_types::{Coin, Msg, StdSignMsg, StdSignature};
use terra_rust_api::messages::MsgSend;
use terra_rust_api::auth_types::AuthAccountResult;

// set up the LCD client
let gas_opts = GasOptions::create_with_gas_estimate("50ukrw",1.4);
let t = Terra::lcd_client("https://bombay-lcd.terra.dev/", "bombay-12", &gas_opts).await?;
// generate a private key
let secp = Secp256k1::new();
let from_key = PrivateKey::from_words(&secp,"your secret words");
let from_public_key = from_key.public_key(&secp);
// generate the message SEND 1000 uluna from your private key to someone else
let coin: Coin = Coin::parse("1000uluna")?.unwrap();
let from_account = from_public_key.account()?;
let send: MsgSend = MsgSend::create(from_account, "terra1usws7c2c6cs7nuc8vma9qzaky5pkgvm2uag6rh", vec![coin]);
// generate the transaction & calc fees
let messages = vec![send];
// and submit the message(s) to the chain
let resp = terra.submit_transaction_sync(
                    &secp,
                    &from_key,
                    &messages,
                    None
                )
                .await?;
 println!("{}", resp.txhash)
 

Examples

are located in the main 'terra-rust' repo

  • do_swap -- example on how to execute a custom contract. in this case a swap.

cargo run --example do_swap -- --wallet tequilla test terra13e4jmcjnwrauvl2fnjdwex0exuzd8zrh5xk29v  1.0 1000000 uluna --max-spread
  0.10 --coins 1000000uluna  -l https://bombay-lcd.terra.dev -c bombay-12

**(note) coins and amount need to be the same

Docs

Dependencies

~24–37MB
~532K SLoC