4 releases
0.1.3 | Oct 22, 2023 |
---|---|
0.1.2 | Oct 8, 2023 |
0.1.1 | Oct 8, 2023 |
0.1.0 | Oct 8, 2023 |
#145 in #decentralized
43KB
490 lines
Credits SDK
The credits
crate provides an interface for managing and handling operations related to credit transactions on the Aleo network. With this crate, you can effortlessly generate, authorize, and execute credit-related transactions like transferring credits, bonding, unbonding, and more.
Features
- Simple Transactions: Easily transfer credits between two accounts.
- Staking & Validators: Bond or unbond microcredits to validators, control validator states, and manage unbonded credits.
Usage
First, add credits
to your Cargo.toml
dependencies:
[dependencies]
credits = "0.1.3"
Then, incorporate it in your Rust code:
use credits::Credits;
Notice
This repository is under active development and is subject to change.
Notably, this repository does not yet support the following:
- Private transfers
- Private join/splits
- Checking the fee is sufficient for a transaction before executing it
Examples
bond_public
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::bond_public(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Staker's Private Key
"aleo1r8ak4sfzpljs65lu0cgu6x4pvvq6atsdx268auu7nf6wvsv5fgqq6v5p0a", // Validator's Address
10_000_000, // Amount (in microcredits)
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
unbond_public
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::unbond_public(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Staker's Private Key
10_000_000, // Amount (in microcredits)
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
unbond_delegator_as_validator
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::unbond_delegator_as_validator(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Validator's Private Key
"aleo1r8ak4sfzpljs65lu0cgu6x4pvvq6atsdx268auu7nf6wvsv5fgqq6v5p0a", // Delegator's Address
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
claim_unbond_public
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::claim_unbond_public(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Staker's Private Key
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
set_validator_state
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::set_validator_state(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Validator's Private Key
true, // is_open
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
transfer_public
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::transfer_public(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Sender's Private Key
"aleo1r8ak4sfzpljs65lu0cgu6x4pvvq6atsdx268auu7nf6wvsv5fgqq6v5p0a", // Recipient's Address
10_000_000, // Amount (in microcredits)
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
transfer_public_to_private
use credits::Credits;
use anyhow::Result;
fn main() -> Result<()> {
let rng = &mut rand::thread_rng();
let transaction = Credits::transfer_public(
"APrivateKey1zkpBdGzC71T2A3D4bfyuPnz5NyJNLhSx3VQxWRMcha3JYtp", // Sender's Private Key
"aleo1r8ak4sfzpljs65lu0cgu6x4pvvq6atsdx268auu7nf6wvsv5fgqq6v5p0a", // Recipient's Address
10_000_000, // Amount (in microcredits)
10_000, // Priority Fee (in microcredits)
false, // Broadcast
rng,
)?.execute()?;
}
Testing
This crate provides a comprehensive set of tests for every function in the credits program.
Use the following to run tests:
cargo test
Contributing
Pull requests are welcome. For significant changes, please open an issue first to discuss the intended change.
Dependencies
~7–18MB
~280K SLoC