Skip to content

Commit fbcf6aa

Browse files
cleanup examples
Signed-off-by: Valentyn Faychuk <valy@faychuk.com>
1 parent 92942ee commit fbcf6aa

8 files changed

Lines changed: 44 additions & 136 deletions

File tree

contract_samples/rust/README.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,6 @@ cargo install amadeus-cli
2626

2727
To build the wasm smart contracts, simply run the `./build_and_validate.sh`.
2828
The artifacts will be placed in `target/wasm32-unknown-unknown/release/examples`.
29-
Optionally you can optimize the resulting wasm contracts.
30-
31-
```bash
32-
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/counter.wasm -o counter.wasm
33-
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/deposit.wasm -o deposit.wasm
34-
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/coin.wasm -o coin.wasm
35-
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/nft.wasm -o nft.wasm
36-
```
3729

3830
### Testing
3931

contract_samples/rust/build_and_validate.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,16 @@
22
set -e
33

44
cargo build -p amadeus-sdk --example counter --target wasm32-unknown-unknown --release
5-
cargo build -p amadeus-sdk --example counter_macro --target wasm32-unknown-unknown --release
65
cargo build -p amadeus-sdk --example deposit --target wasm32-unknown-unknown --release
76
cargo build -p amadeus-sdk --example coin --target wasm32-unknown-unknown --release
87
cargo build -p amadeus-sdk --example nft --target wasm32-unknown-unknown --release
98

109
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/counter.wasm -o target/wasm32-unknown-unknown/release/examples/counter_opt.wasm
11-
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/counter_macro.wasm -o target/wasm32-unknown-unknown/release/examples/counter_macro_opt.wasm
1210
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/deposit.wasm -o target/wasm32-unknown-unknown/release/examples/deposit_opt.wasm
1311
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/coin.wasm -o target/wasm32-unknown-unknown/release/examples/coin_opt.wasm
1412
wasm-opt -Oz --enable-bulk-memory target/wasm32-unknown-unknown/release/examples/nft.wasm -o target/wasm32-unknown-unknown/release/examples/nft_opt.wasm
1513

1614
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @target/wasm32-unknown-unknown/release/examples/counter_opt.wasm https://mainnet-rpc.ama.one/api/contract/validate
17-
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @target/wasm32-unknown-unknown/release/examples/counter_macro_opt.wasm https://mainnet-rpc.ama.one/api/contract/validate
1815
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @target/wasm32-unknown-unknown/release/examples/deposit_opt.wasm https://mainnet-rpc.ama.one/api/contract/validate
1916
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @target/wasm32-unknown-unknown/release/examples/coin_opt.wasm https://mainnet-rpc.ama.one/api/contract/validate
2017
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @target/wasm32-unknown-unknown/release/examples/nft_opt.wasm https://mainnet-rpc.ama.one/api/contract/validate

contract_samples/rust/examples/coin.rs

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#![no_main]
33
extern crate alloc;
44
use amadeus_sdk::*;
5-
use alloc::{vec::Vec};
5+
use alloc::{vec::Vec, string::String};
66

77
fn vault_key(symbol: &Vec<u8>) -> Vec<u8> {
88
b!("vault:", account_caller(), ":", symbol)
@@ -11,43 +11,31 @@ fn vault_key(symbol: &Vec<u8>) -> Vec<u8> {
1111
#[no_mangle]
1212
pub extern "C" fn init() {
1313
log("init called");
14-
1514
let mint_a_billion = encoding::coin_raw(1_000_000_000, 9);
1615
call!("Coin", "create_and_mint", [
1716
"USDFAKE", mint_a_billion, 9, "false", "false", "false"
1817
]);
1918
}
2019

21-
#[no_mangle]
22-
pub extern "C" fn deposit() {
20+
#[contract]
21+
fn deposit() -> String {
2322
log("deposit called");
24-
2523
let (has_attachment, (symbol, amount)) = get_attachment();
2624
amadeus_sdk::assert!(has_attachment, "deposit has no attachment");
27-
2825
let amount_i128 = i128::from_bytes(amount);
2926
amadeus_sdk::assert!(amount_i128 > 100, "deposit amount less than 100");
30-
31-
let total_vault_deposited = kv_increment(vault_key(&symbol), amount_i128);
32-
ret(total_vault_deposited);
27+
kv_increment(vault_key(&symbol), amount_i128)
3328
}
3429

35-
#[no_mangle]
36-
pub extern "C" fn withdraw(symbol_ptr: i32, amount_ptr: i32) {
30+
#[contract]
31+
fn withdraw(symbol: Vec<u8>, amount: Vec<u8>) -> i128 {
3732
log("withdraw called");
38-
39-
let withdraw_symbol = read_bytes(symbol_ptr);
40-
let withdraw_amount = read_bytes(amount_ptr);
41-
let withdraw_amount_int = encoding::bytes_to_i128(&withdraw_amount);
33+
let withdraw_amount_int = encoding::bytes_to_i128(&amount);
4234
amadeus_sdk::assert!(withdraw_amount_int > 0, "amount lte 0");
43-
44-
let key = vault_key(&withdraw_symbol);
35+
let key = vault_key(&symbol);
4536
let vault_balance: i128 = kv_get(&key).unwrap_or(0);
4637
amadeus_sdk::assert!(vault_balance >= withdraw_amount_int, "insufficient funds");
47-
4838
kv_increment(key, -withdraw_amount_int);
49-
50-
call!("Coin", "transfer", [account_caller(), withdraw_amount, withdraw_symbol]);
51-
52-
ret(vault_balance - withdraw_amount_int);
39+
call!("Coin", "transfer", [account_caller(), amount, symbol]);
40+
vault_balance - withdraw_amount_int
5341
}

contract_samples/rust/examples/counter.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,27 @@
22
#![no_main]
33
extern crate alloc;
44
use amadeus_sdk::*;
5+
use alloc::{vec::Vec, string::String};
56

67
#[no_mangle]
78
pub extern "C" fn init() {
89
log("Init called during deployment of contract");
910
kv_put("inited", "true");
1011
}
1112

12-
#[no_mangle]
13-
pub extern "C" fn get() {
14-
ret(kv_get("the_counter").unwrap_or(0));
13+
#[contract]
14+
fn get() -> i128 {
15+
kv_get("the_counter").unwrap_or(0)
1516
}
1617

17-
#[no_mangle]
18-
pub extern "C" fn increment(amount_ptr: i32) {
19-
let amount = read_bytes(amount_ptr);
20-
let new_counter = kv_increment("the_counter", amount);
21-
ret(new_counter);
18+
#[contract]
19+
fn increment(amount: Vec<u8>) -> String {
20+
kv_increment("the_counter", amount)
2221
}
2322

24-
#[no_mangle]
25-
pub extern "C" fn increment_another_counter(contract_ptr: i32) {
26-
let contract = read_bytes(contract_ptr);
23+
#[contract]
24+
fn increment_another_counter(contract: Vec<u8>) -> Vec<u8> {
2725
let incr_by = 3i64;
2826
log("increment_another_counter");
29-
ret(call!(contract.as_slice(), "increment", [incr_by]));
27+
call!(contract.as_slice(), "increment", [incr_by])
3028
}

contract_samples/rust/examples/counter_macro.rs

Lines changed: 0 additions & 39 deletions
This file was deleted.

contract_samples/rust/examples/deposit.rs

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,56 +2,42 @@
22
#![no_main]
33
extern crate alloc;
44
use amadeus_sdk::*;
5-
use alloc::{vec::Vec};
5+
use alloc::{vec::Vec, string::String};
66

77
fn vault_key(symbol: &Vec<u8>) -> Vec<u8> {
88
b!("vault:", account_caller(), ":", symbol)
99
}
1010

11-
#[no_mangle]
12-
pub extern "C" fn balance(symbol_ptr: i32) {
13-
let key = vault_key(&read_bytes(symbol_ptr));
14-
ret(kv_get(key).unwrap_or(0));
11+
#[contract]
12+
fn balance(symbol: Vec<u8>) -> i128 {
13+
kv_get(vault_key(&symbol)).unwrap_or(0)
1514
}
1615

17-
#[no_mangle]
18-
pub extern "C" fn deposit() {
16+
#[contract]
17+
fn deposit() -> String {
1918
log("deposit called");
20-
2119
let (has_attachment, (symbol, amount)) = get_attachment();
2220
amadeus_sdk::assert!(has_attachment, "deposit has no attachment");
23-
2421
let amount_i128 = i128::from_bytes(amount);
2522
amadeus_sdk::assert!(amount_i128 > 100, "deposit amount less than 100");
26-
27-
let total_vault_deposited = kv_increment(vault_key(&symbol), amount_i128);
28-
ret(total_vault_deposited);
23+
kv_increment(vault_key(&symbol), amount_i128)
2924
}
3025

31-
#[no_mangle]
32-
pub extern "C" fn withdraw(symbol_ptr: i32, amount_ptr: i32) {
26+
#[contract]
27+
fn withdraw(symbol: Vec<u8>, amount: Vec<u8>) -> i128 {
3328
log("withdraw called");
34-
35-
let withdraw_symbol = read_bytes(symbol_ptr);
36-
let withdraw_amount = read_bytes(amount_ptr);
37-
let withdraw_amount_int = encoding::bytes_to_i128(&withdraw_amount);
29+
let withdraw_amount_int = encoding::bytes_to_i128(&amount);
3830
amadeus_sdk::assert!(withdraw_amount_int > 0, "amount lte 0");
39-
40-
let key = vault_key(&withdraw_symbol);
31+
let key = vault_key(&symbol);
4132
let vault_balance: i128 = kv_get(&key).unwrap_or(0);
4233
amadeus_sdk::assert!(vault_balance >= withdraw_amount_int, "insufficient funds");
43-
4434
kv_increment(key, -withdraw_amount_int);
45-
46-
call!("Coin", "transfer", [account_caller(), withdraw_amount, withdraw_symbol]);
47-
48-
ret(vault_balance - withdraw_amount_int);
35+
call!("Coin", "transfer", [account_caller(), amount, symbol]);
36+
vault_balance - withdraw_amount_int
4937
}
5038

51-
#[no_mangle]
52-
pub extern "C" fn burn(symbol_ptr: i32, amount_ptr: i32) {
53-
let symbol = read_string(symbol_ptr);
54-
let amount = read_bytes(amount_ptr);
39+
#[contract]
40+
fn burn(symbol: String, amount: Vec<u8>) -> Vec<u8> {
5541
log("burn");
56-
ret(call!("Coin", "transfer", [BURN_ADDRESS, amount, symbol]));
42+
call!("Coin", "transfer", [BURN_ADDRESS, amount, symbol])
5743
}

contract_samples/rust/examples/nft.rs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,34 @@
22
#![no_main]
33
extern crate alloc;
44
use amadeus_sdk::*;
5+
use alloc::{vec::Vec, string::String};
56

67
#[no_mangle]
78
pub extern "C" fn init() {
89
call!("Nft", "create_collection", ["AGENTIC", "false"]);
910
}
1011

11-
#[no_mangle]
12-
pub extern "C" fn view_nft(collection_ptr: i32, token_ptr: i32) {
13-
let collection = read_string(collection_ptr);
14-
let token = read_bytes(token_ptr);
15-
let url = match (collection.as_str(), token.as_slice()) {
12+
#[contract]
13+
fn view_nft(collection: String, token: Vec<u8>) -> &'static str {
14+
match (collection.as_str(), token.as_slice()) {
1615
("AGENTIC", b"1") => "https://ipfs.io/ipfs/bafybeicn7i3soqdgr7dwnrwytgq4zxy7a5jpkizrvhm5mv6bgjd32wm3q4/welcome-to-IPFS.jpg",
1716
("AGENTIC", b"2") => "https://ipfs.io/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme",
1817
("AGENTIC", b"3") => "https://ipfs.io/ipfs/QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB",
1918
("AGENTIC", b"4") => "https://ipfs.io/ipfs/QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o",
2019
("AGENTIC", b"5") => "https://ipfs.io/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN",
2120
("AGENTIC", b"6") => "https://ipfs.io/ipfs/QmTn4KLRkKPDkB3KpJWGXZHPPh5dFnKqNcPjX4ZcbPvKwv",
2221
_ => "https://ipfs.io/ipfs/bafybeicn7i3soqdgr7dwnrwytgq4zxy7a5jpkizrvhm5mv6bgjd32wm3q4/welcome-to-IPFS.jpg",
23-
};
24-
ret(url);
22+
}
2523
}
2624

27-
#[no_mangle]
28-
pub extern "C" fn claim() {
25+
#[contract]
26+
fn claim() -> i64 {
2927
log("claiming");
3028
call!("Nft", "mint", [account_caller(), 1, "AGENTIC", "2"]);
3129
call!("Nft", "mint", [account_caller(), 1, "AGENTIC", "2"]);
3230
let random_token = roll_dice();
3331
call!("Nft", "mint", [account_caller(), 1, "AGENTIC", random_token]);
34-
ret(random_token);
32+
random_token
3533
}
3634

3735
static mut PRNG_STATE: u64 = 0;
@@ -41,25 +39,17 @@ fn roll_dice() -> i64 {
4139
unsafe {
4240
if !PRNG_INIT {
4341
let s = seed();
44-
45-
// (Using FNV-1a hash algorithm for decent distribution)
4642
let mut h: u64 = 0xcbf29ce484222325;
4743
for &byte in s.iter() {
4844
h = h ^ (byte as u64);
4945
h = h.wrapping_mul(0x100000001b3);
5046
}
51-
5247
PRNG_STATE = h;
5348
PRNG_INIT = true;
5449
}
55-
56-
// 2. "Increment" the seed (Step the LCG)
57-
// Constants from Musl Libc / Knuth
58-
// state = state * 6364136223846793005 + 1442695040888963407
5950
PRNG_STATE = PRNG_STATE
6051
.wrapping_mul(6364136223846793005)
6152
.wrapping_add(1442695040888963407);
62-
6353
let result = (PRNG_STATE >> 32) as i64;
6454
(result.abs() % 6) + 1
6555
}

contract_samples/rust/sdk/Cargo.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,3 @@ path = "../examples/coin.rs"
3232
[[example]]
3333
name = "nft"
3434
path = "../examples/nft.rs"
35-
36-
[[example]]
37-
name = "counter_macro"
38-
path = "../examples/counter_macro.rs"

0 commit comments

Comments
 (0)