Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…oroban-contracts

Merging with latest
  • Loading branch information
nalnir committed Sep 8, 2023
2 parents 8b321cc 16d999f commit d6e5808
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 34 deletions.
34 changes: 16 additions & 18 deletions dao/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 14,8 @@ pub trait DaoContractTrait {
gov_token_symbol: String,
voting_power: u32,
proposal_power: u32,
shareholders: Vec<(Address, i128)>,
// shareholders: Vec<Map<Address, i128>>,
// shareholders: Vec<(Address, i128)>,
shareholders: Vec<Map<Address, i128>>,
) -> u32;
// fn init(
// env: Env,
Expand All @@ -42,8 42,8 @@ impl DaoContractTrait for DaoContract {
gov_token_symbol: String,
voting_power: u32,
proposal_power: u32,
shareholders: Vec<(Address, i128)>,
// shareholders: Vec<Map<Address, i128>>,
// shareholders: Vec<(Address, i128)>,
shareholders: Vec<Map<Address, i128>>,
) -> u32 {
can_init_contract(&env);
// Deploy the contract using the installed WASM code with given hash.
Expand All @@ -68,22 68,19 @@ impl DaoContractTrait for DaoContract {
let set_proposal_power_fn: Symbol = symbol_short!("set_p_pow");
let set_voting_power_fn: Symbol = symbol_short!("set_v_pow");

let proposal_power_res: Val = env.invoke_contract(&id, &set_proposal_power_fn, vec![&env, proposal_power.into_val(&env)]);
let voting_power_res: Val = env.invoke_contract(&id, &set_voting_power_fn, vec![&env, voting_power.into_val(&env)]);
let proposal_power_res: Val = env.invoke_contract(&id, &set_proposal_power_fn, vec![&env, proposal_power.into_val(&env)] as Vec<Val>);
let voting_power_res: Val = env.invoke_contract(&id, &set_voting_power_fn, vec![&env, voting_power.into_val(&env)] as Vec<Val>);

for shareholder in shareholders {
match shareholder {
(shareholder_address, amount) => {
let shareholder_address_raw: Val = shareholder_address.to_val();

let auth_args: Vec<Val> = vec![&env, shareholder_address_raw, true.into_val(&env)];
let auth_res: Val = env.invoke_contract(&id, &authorize_fn, auth_args);

let mint_args: Vec<Val> =
vec![&env, shareholder_address_raw, amount.into_val(&env)];
let mint_res: Val = env.invoke_contract(&id, &mint_fn, mint_args);
}
}
let s = shareholder.values().try_first().unwrap();
// let shareholder_address_raw = shareholder.keys().get(0).unwrap().to_val();
// let auth_args: Vec<Val> = vec![&env, shareholder_address_raw, true.into_val(&env)];
// let auth_res: Val = env.invoke_contract(&id, &authorize_fn, auth_args);

// let mint_args: Vec<Val> = vec![&env, shareholder_address_raw, shareholder.values().into_val(&env)];
// let mint_res: Val = env.invoke_contract(&id, &mint_fn, mint_args);
}

// set_core_state(
// &env,
// &CoreState {
Expand All @@ -92,6 89,7 @@ impl DaoContractTrait for DaoContract {
// );

// (id, res)
// voting_power
voting_power
}

Expand Down
1 change: 1 addition & 0 deletions dao/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 4,6 @@ mod contract;
mod errors;
mod storage;
mod utils;
mod test;

pub use crate::contract::DaoContractClient;
31 changes: 18 additions & 13 deletions dao/src/test.rs
Original file line number Diff line number Diff line change
@@ -1,7 1,7 @@
#![cfg(test)]

use crate::{contract::DaoContract, DaoContractClient};
use soroban_sdk::{testutils::Address as _, Address, BytesN, Env, IntoVal, Vec};
use soroban_sdk::{testutils::Address as _, Address, BytesN, Env, IntoVal, Vec, String, Map};

// The contract that will be deployed by the deployer contract.
mod contract {
Expand All @@ -16,32 16,37 @@ fn test() {
let client = DaoContractClient::new(&env, &env.register_contract(None, DaoContract));

// Install the WASM code to be deployed from the deployer contract.
let token_wasm_hash = env.install_contract_wasm(contract::WASM);
let token_wasm_hash = env.deployer().upload_contract_wasm(contract::WASM);
let admin1 = Address::random(&env);
let mut shareholder: Map<Address, i128> = Map::new(&env);
shareholder.set(admin1.clone(), 200000i128);

// Deploy contract using deployer, and include an init function to call.
let token_name = "token_name";
let token_symbol = "token_symbol";
let salt = BytesN::from_array(&env, &[0; 32]);
let voting_power = 2;
let proposal_power = 2;
let shareholders: Vec<(Address, i128)> = Vec::from_array(&env, [(admin1.clone(), 200000i128)]);
let (contract_id, init_result) = client.init(
let shareholders: Vec<Map<Address, i128>> = Vec::from_array(&env, [shareholder]);
let val = client.init(
&salt,
&token_wasm_hash,
&token_name,
&proposal_power,
&String::from_slice(&env, token_name),
&String::from_slice(&env, token_symbol),
&voting_power,
&proposal_power,
&shareholders,
);
assert!(init_result.is_void());

// Invoke contract to check that it is initialized.
let client = contract::Client::new(&env, &contract_id);
let sum = client.balance(&admin1);
assert_eq!(sum, 200000);
assert_eq!(val, voting_power)

let name_of_token = client.name();
assert_eq!(name_of_token, "name".into_val(&env));
// assert!(init_result.is_void());
//
// // Invoke contract to check that it is initialized.
// let client = contract::Client::new(&env, &contract_id);
// let sum = client.balance(&admin1);
// assert_eq!(sum, 200000);
//
// let name_of_token = client.name();
// assert_eq!(name_of_token, "name".into_val(&env));
}
6 changes: 3 additions & 3 deletions deployer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 33,7 @@ impl Deployer {
mod test;

// soroban contract install --wasm ../dao/target/wasm32-unknown-unknown/release/governance.wasm
// dao-wasm-hash -> ba64e09f6a570b5967e96c349d00943b797aa3d20c14c50bb6770e0b82658d0d
// dao-wasm-hash -> 9d3ccc7dd7438b7fa288a2fbc11fa5ca5ca429f883a420e3b103028d790ca017

// soroban contract install --wasm ../token/target/wasm32-unknown-unknown/release/soroban_token_contract.wasm
// token-wasm-hash -> da729cbad2913399edabfc09a8dba948df7b830a5b855fdb196c7a48c3c9fbc1
Expand All @@ -48,13 48,13 @@ mod test;
// --wasm target/wasm32-unknown-unknown/release/governance.wasm \
// --source juico \
// --network futurenet
// dao_contract_id -> CATZXX4ZBE4FDYOD4WNHSCMNRP33NBNBELAJ46IV2VVSV67AME7E7UVP
// dao_contract_id -> CABTZLCXPKKR72VAF5GFBWAJQVWTFIMF6LJALSCXKZMUAEJKNEMPOMB4

// soroban contract deploy \
// --wasm target/wasm32-unknown-unknown/release/soroban_token_contract.wasm \
// --source juico \
// --network futurenet
// token_contract_id -> CD3CUT75OFKYX4L5AXFBK3XT4DZKHBAM3V6ZLT7NRQESKKE4PM3GDCAK
// token_contract_id -> CDDPNPFJE6BZA5LZVKVB3EYNO5O2NVUHH443IN6VDGLXEUE7EML6PKE4

// soroban contract invoke \
// --id CC6IKYRGAYWJ6YWTAINLK75PH352ZMADMCVDEUEYAQQXGNZTXNDIZUFQ \
Expand Down

0 comments on commit d6e5808

Please sign in to comment.