Skip to content

Commit

Permalink
Examples - the journey begins...
Browse files Browse the repository at this point in the history
  • Loading branch information
kubaplas committed Dec 15, 2023
1 parent 9b753cc commit 05b3449
Show file tree
Hide file tree
Showing 11 changed files with 231 additions and 190 deletions.
20 changes: 17 additions & 3 deletions examples/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,20 @@ sha3 = { version = "0.10.6", default-features = false }
hex = "0.4.3"

[[bin]]
name = "erc20-on-livenet"
path = "bin/erc20_on_livenet.rs"
required-features = ["casper-livenet"]
name = "build_contract"
path = "bin/build_contract.rs"

[[bin]]
name = "build_schema"
path = "bin/build_schema.rs"

[profile.release]
codegen-units = 1
lto = true

[profile.dev.package."*"]
opt-level = 3
#[[bin]]
#name = "erc20-on-livenet"
#path = "bin/erc20_on_livenet.rs"
#required-features = ["casper-livenet"]
164 changes: 82 additions & 82 deletions examples/Odra.toml
Original file line number Diff line number Diff line change
@@ -1,87 +1,87 @@
[[contracts]]
name = "owned_token"
fqn = "odra_examples::contracts::owned_token::OwnedToken"

[[contracts]]
name = "balance_checker"
fqn = "odra_examples::contracts::balance_checker::BalanceChecker"

[[contracts]]
name = "token_manager"
fqn = "odra_examples::contracts::token_manager::TokenManager"

[[contracts]]
name = "nested_mapping"
fqn = "odra_examples::features::nested_mapping::NestedMapping"

[[contracts]]
name = "time_lock_wallet"
fqn = "odra_examples::contracts::tlw::TimeLockWallet"

[[contracts]]
name = "reentrancy_mock"
fqn = "odra_examples::features::reentrancy_guard::ReentrancyMock"

[[contracts]]
name = "signature_verifier"
fqn = "odra_examples::features::signature_verifier::SignatureVerifier"

[[contracts]]
name = "composable_contract"
fqn = "odra_examples::features::composer::ComposableContract"

[[contracts]]
name = "nested_odra_types_contract"
fqn = "odra_examples::features::module_nesting::NestedOdraTypesContract"

[[contracts]]
name = "dog_contract"
fqn = "odra_examples::features::storage::variable::DogContract"

[[contracts]]
name = "dog_contract2"
fqn = "odra_examples::features::storage::mapping::DogContract2"

[[contracts]]
name = "dog_contract3"
fqn = "odra_examples::features::storage::list::DogContract3"

[[contracts]]
name = "testing_contract"
fqn = "odra_examples::features::testing::TestingContract"

[[contracts]]
name = "host_contract"
fqn = "odra_examples::features::host_functions::HostContract"

[[contracts]]
name = "owned_contract"
fqn = "odra_examples::features::handling_errors::OwnedContract"

[[contracts]]
name = "party_contract"
fqn = "odra_examples::features::events::PartyContract"

[[contracts]]
name = "cross_contract"
fqn = "odra_examples::features::cross_calls::CrossContract"

[[contracts]]
name = "math_engine"
fqn = "odra_examples::features::cross_calls::MathEngine"

[[contracts]]
name = "modules_contract"
fqn = "odra_examples::features::modules::ModulesContract"

[[contracts]]
name = "public_wallet"
fqn = "odra_examples::features::native_token::PublicWallet"
#[[contracts]]
#name = "owned_token"
#fqn = "odra_examples::contracts::owned_token::OwnedToken"
#
#[[contracts]]
#name = "balance_checker"
#fqn = "odra_examples::contracts::balance_checker::BalanceChecker"
#
#[[contracts]]
#name = "token_manager"
#fqn = "odra_examples::contracts::token_manager::TokenManager"
#
#[[contracts]]
#name = "nested_mapping"
#fqn = "odra_examples::features::nested_mapping::NestedMapping"
#
#[[contracts]]
#name = "time_lock_wallet"
#fqn = "odra_examples::contracts::tlw::TimeLockWallet"
#
#[[contracts]]
#name = "reentrancy_mock"
#fqn = "odra_examples::features::reentrancy_guard::ReentrancyMock"
#
#[[contracts]]
#name = "signature_verifier"
#fqn = "odra_examples::features::signature_verifier::SignatureVerifier"
#
#[[contracts]]
#name = "composable_contract"
#fqn = "odra_examples::features::composer::ComposableContract"
#
#[[contracts]]
#name = "nested_odra_types_contract"
#fqn = "odra_examples::features::module_nesting::NestedOdraTypesContract"
#
#[[contracts]]
#name = "dog_contract"
#fqn = "odra_examples::features::storage::variable::DogContract"
#
#[[contracts]]
#name = "dog_contract2"
#fqn = "odra_examples::features::storage::mapping::DogContract2"
#
#[[contracts]]
#name = "dog_contract3"
#fqn = "odra_examples::features::storage::list::DogContract3"
#
#[[contracts]]
#name = "testing_contract"
#fqn = "odra_examples::features::testing::TestingContract"
#
#[[contracts]]
#name = "host_contract"
#fqn = "odra_examples::features::host_functions::HostContract"
#
#[[contracts]]
#name = "owned_contract"
#fqn = "odra_examples::features::handling_errors::OwnedContract"
#
#[[contracts]]
#name = "party_contract"
#fqn = "odra_examples::features::events::PartyContract"
#
#[[contracts]]
#name = "cross_contract"
#fqn = "odra_examples::features::cross_calls::CrossContract"
#
#[[contracts]]
#name = "math_engine"
#fqn = "odra_examples::features::cross_calls::MathEngine"
#
#[[contracts]]
#name = "modules_contract"
#fqn = "odra_examples::features::modules::ModulesContract"
#
#[[contracts]]
#name = "public_wallet"
#fqn = "odra_examples::features::native_token::PublicWallet"

[[contracts]]
name = "mock_moderated"
fqn = "odra_examples::features::access_control::MockModerated"

[[contracts]]
name = "pauseable_counter"
fqn = "odra_examples::features::pauseable::PauseableCounter"
#[[contracts]]
#name = "pauseable_counter"
#fqn = "odra_examples::features::pauseable::PauseableCounter"
4 changes: 4 additions & 0 deletions examples/bin/build_contract.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#![no_std]
#![no_main]
#![allow(unused_imports, clippy::single_component_path_imports)]
use odra_examples;
10 changes: 10 additions & 0 deletions examples/bin/build_schema.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
use odra::contract_def::ContractBlueprint;

extern "Rust" {
fn module_schema() -> ContractBlueprint;
}

fn main() {
let schema = unsafe { module_schema() };
println!("{:#?}", schema);
}
12 changes: 6 additions & 6 deletions examples/src/contracts/balance_checker.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
use odra::types::{Address, U256};
use odra::{Address, U256};
use odra::prelude::*;

#[odra::module]
pub struct BalanceChecker {}

#[odra::module]
impl BalanceChecker {
pub fn check_balance(&self, token: &Address, account: &Address) -> U256 {
TokenRef::at(token).balance_of(account)
TokenHostRef::at(token).balance_of(account)
}
}

Expand All @@ -18,13 +19,12 @@ pub trait Token {
#[cfg(test)]
mod tests {
use super::*;
use crate::contracts::owned_token::tests;
use odra::{test_env, types::OdraItem};

#[test]
fn balance_checker() {
let (owner, second_account) = (test_env::get_account(0), test_env::get_account(1));
let balance_checker = BalanceCheckerDeployer::default();
let env = odra::test_env();
let (owner, second_account) = (env.get_account(0), env.get_account(1));
let balance_checker = BalanceCheckerDeployer::init(&env);
let token = tests::setup();
let expected_owner_balance = tests::INITIAL_SUPPLY;

Expand Down
8 changes: 4 additions & 4 deletions examples/src/contracts/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub mod balance_checker;
pub mod owned_token;
pub mod tlw;
pub mod token_manager;
// pub mod balance_checker;
// pub mod owned_token;
// pub mod tlw;
// pub mod token_manager;
17 changes: 7 additions & 10 deletions examples/src/contracts/owned_token.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
use odra::{
contract_env,
prelude::string::String,
types::{Address, U256}
};
use odra::{Address, Module, ModuleWrapper, U256};
use odra::prelude::*;
use odra_modules::access::Ownable;
use odra_modules::erc20::Erc20;

#[odra::module]
pub struct OwnedToken {
ownable: Ownable,
erc20: Erc20
ownable: ModuleWrapper<Ownable>,
erc20: ModuleWrapper<Erc20>
}

#[odra::module]
impl OwnedToken {
#[odra(init)]
pub fn init(&mut self, name: String, symbol: String, decimals: u8, initial_supply: &U256) {
pub fn init(&mut self, name: String, symbol: String, decimals: u8, initial_supply: U256) {
self.ownable.init();
self.erc20
.init(symbol, name, decimals, &Some(*initial_supply));
.init(symbol, name, decimals, Some(initial_supply));
}

delegate! {
Expand All @@ -41,7 +38,7 @@ impl OwnedToken {
}

pub fn mint(&mut self, address: &Address, amount: &U256) {
self.ownable.assert_owner(&contract_env::caller());
self.ownable.assert_owner(&self.env().caller());
self.erc20.mint(address, amount);
}
}
Expand Down
Loading

0 comments on commit 05b3449

Please sign in to comment.