diff --git a/contracts/src/lib.rs b/contracts/src/lib.rs
index 0c8a249..0f34397 100644
--- a/contracts/src/lib.rs
+++ b/contracts/src/lib.rs
@@ -10,9 +10,33 @@ mod test;
const LEDGERS_TO_LIVE: u32 = 518_400; // ~30 days at 5s/ledger
fn extend_instance_ttl(env: &Env) {
- env.storage()
+ let members: Vec
= env.storage().instance().get(&DataKey::Members).unwrap();
+ let cycle_len_ledgers = env
+ .storage()
+ .instance()
+ .get::<_, u32>(&DataKey::CycleLengthLedgers)
+ .unwrap_or(518_400);
+ #[allow(clippy::unnecessary_cast)]
+ let member_count: u32 = members.len() as u32;
+ let rotation_ttl = cycle_len_ledgers.saturating_mul(member_count);
+ let ttl = rotation_ttl.max(518_400);
+ env.storage().instance().extend_ttl(ttl / 2, ttl);
+}
+
+fn extend_member_ttl(env: &Env, member: &Address) {
+ let members: Vec = env.storage().instance().get(&DataKey::Members).unwrap();
+ let cycle_len_ledgers = env
+ .storage()
.instance()
- .extend_ttl(LEDGERS_TO_LIVE / 2, LEDGERS_TO_LIVE);
+ .get::<_, u32>(&DataKey::CycleLengthLedgers)
+ .unwrap_or(518_400);
+ #[allow(clippy::unnecessary_cast)]
+ let member_count: u32 = members.len() as u32;
+ let rotation_ttl = cycle_len_ledgers.saturating_mul(member_count);
+ let ttl = rotation_ttl.max(518_400);
+ env.storage()
+ .persistent()
+ .extend_ttl(&DataKey::Member(member.clone()), ttl / 2, ttl);
}
#[contracttype]
@@ -22,6 +46,14 @@ pub enum GroupType {
GoalBased,
}
+#[contracttype]
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct MemberState {
+ pub total_contributions: i128,
+ pub last_contribution_cycle_id: u32,
+ pub has_received_payout: bool,
+}
+
#[contracttype]
#[derive(Clone)]
pub enum DataKey {
@@ -30,15 +62,14 @@ pub enum DataKey {
Name,
ContributionAmount,
Members,
- Contributions(Address),
+ Member(Address),
NextPayoutIndex,
- HasContributedThisCycle(Address),
CycleMemberCount,
- CurrentCycleContributions,
- User(Address),
GroupType,
TargetAmount,
LockUntilTarget,
+ CurrentCycleId,
+ CycleLengthLedgers,
}
#[contracttype]
@@ -64,12 +95,24 @@ impl KoloSavingsContract {
group_type: GroupType,
target_amount: Option,
lock_until_target: bool,
+ expected_cycle_days: Option,
) {
if env.storage().instance().has(&DataKey::Admin) {
panic!("Already initialized");
}
admin.require_auth();
+
+ let cycle_len = expected_cycle_days.unwrap_or(30) * 17_280;
+ env.storage()
+ .instance()
+ .set(&DataKey::CycleLengthLedgers, &cycle_len);
+
+ let empty_members: Vec = Vec::new(&env);
+ env.storage()
+ .instance()
+ .set(&DataKey::Members, &empty_members);
+
extend_instance_ttl(&env);
env.storage().instance().set(&DataKey::Admin, &admin);
@@ -89,11 +132,9 @@ impl KoloSavingsContract {
env.storage()
.instance()
.set(&DataKey::LockUntilTarget, &lock_until_target);
-
- let empty_members: Vec = Vec::new(&env);
env.storage()
.instance()
- .set(&DataKey::Members, &empty_members);
+ .set(&DataKey::CurrentCycleId, &1u32);
env.events().publish(
(symbol_short!("init"),),
@@ -111,18 +152,23 @@ impl KoloSavingsContract {
if !members.contains(&new_member) {
members.push_back(new_member.clone());
env.storage().instance().set(&DataKey::Members, &members);
+
+ // Initialize MemberState for the new member under a single key
+ let state = MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ };
env.storage()
.persistent()
- .set(&DataKey::Contributions(new_member.clone()), &0i128);
+ .set(&DataKey::Member(new_member.clone()), &state);
+
+ // Initialize NextPayoutIndex if not already set
if !env.storage().instance().has(&DataKey::NextPayoutIndex) {
env.storage()
.instance()
.set(&DataKey::NextPayoutIndex, &0u32);
}
- env.storage().persistent().set(
- &DataKey::HasContributedThisCycle(new_member.clone()),
- &false,
- );
env.events()
.publish((symbol_short!("add_mem"), new_member), ());
@@ -155,12 +201,25 @@ impl KoloSavingsContract {
panic!("Cannot remove member after their payout turn");
}
- let has_contributed: bool = env
+ // Check if member contributed this cycle via MemberState cycle ID
+ let member_state: MemberState = env
.storage()
.persistent()
- .get(&DataKey::HasContributedThisCycle(member_to_remove.clone()))
- .unwrap_or(false);
- if has_contributed {
+ .get(&DataKey::Member(member_to_remove.clone()))
+ .unwrap_or(MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ });
+ let current_cycle_id: u32 = env
+ .storage()
+ .instance()
+ .get(&DataKey::CurrentCycleId)
+ .unwrap_or(1);
+ let has_contributed_this_cycle =
+ member_state.last_contribution_cycle_id == current_cycle_id;
+
+ if has_contributed_this_cycle {
let contribution_amount: i128 = env
.storage()
.instance()
@@ -175,10 +234,12 @@ impl KoloSavingsContract {
);
}
+ // Remove the MemberState entry entirely
env.storage()
.persistent()
- .remove(&DataKey::HasContributedThisCycle(member_to_remove.clone()));
+ .remove(&DataKey::Member(member_to_remove.clone()));
+ // Adjust CycleMemberCount if present
if env.storage().instance().has(&DataKey::CycleMemberCount) {
let current_count: i128 = env
.storage()
@@ -239,17 +300,26 @@ impl KoloSavingsContract {
env.storage()
.instance()
.set(&DataKey::CycleMemberCount, &count);
- env.storage()
- .instance()
- .set(&DataKey::CurrentCycleContributions, &0i128);
}
- let has_contributed: bool = env
+ let current_cycle_id: u32 = env
+ .storage()
+ .instance()
+ .get(&DataKey::CurrentCycleId)
+ .unwrap_or(1);
+
+ // Retrieve and check MemberState via cycle ID
+ let mut member_state: MemberState = env
.storage()
.persistent()
- .get(&DataKey::HasContributedThisCycle(member.clone()))
- .unwrap_or(false);
- if has_contributed {
+ .get(&DataKey::Member(member.clone()))
+ .unwrap_or(MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ });
+
+ if member_state.last_contribution_cycle_id == current_cycle_id {
panic!("Already contributed this cycle");
}
@@ -259,30 +329,17 @@ impl KoloSavingsContract {
// Transfer tokens from the member to this contract
token_client.transfer(&member, env.current_contract_address(), &amount);
+ // Update MemberState
+ member_state.total_contributions = member_state
+ .total_contributions
+ .checked_add(amount)
+ .expect("Integer overflow in contribution total");
+ member_state.last_contribution_cycle_id = current_cycle_id;
env.storage()
.persistent()
- .set(&DataKey::HasContributedThisCycle(member.clone()), &true);
+ .set(&DataKey::Member(member.clone()), &member_state);
- let current_contribution: i128 = env
- .storage()
- .persistent()
- .get(&DataKey::Contributions(member.clone()))
- .unwrap_or(0);
- env.storage().persistent().set(
- &DataKey::Contributions(member.clone()),
- &(current_contribution + amount),
- );
-
- // Increment current cycle contributions counter
- let cycle_contributions: i128 = env
- .storage()
- .instance()
- .get(&DataKey::CurrentCycleContributions)
- .unwrap_or(0);
- env.storage().instance().set(
- &DataKey::CurrentCycleContributions,
- &(cycle_contributions + 1),
- );
+ extend_member_ttl(&env, &member);
env.events()
.publish((symbol_short!("contrib"), member), amount);
@@ -342,6 +399,21 @@ impl KoloSavingsContract {
.set(&DataKey::NextPayoutIndex, &(next_index + 1));
token_client.transfer(&env.current_contract_address(), &recipient, &pool_size);
+ // Stamp that the recipient has received payout this cycle
+ let mut recipient_state: MemberState = env
+ .storage()
+ .persistent()
+ .get(&DataKey::Member(recipient.clone()))
+ .unwrap_or(MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ });
+ recipient_state.has_received_payout = true;
+ env.storage()
+ .persistent()
+ .set(&DataKey::Member(recipient.clone()), &recipient_state);
+
env.events()
.publish((symbol_short!("payout"), recipient), pool_size);
}
@@ -378,11 +450,18 @@ impl KoloSavingsContract {
panic!("Withdrawal amount must be positive");
}
- let current_contribution: i128 = env
+ // Retrieve MemberState to check contributions
+ let mut member_state: MemberState = env
.storage()
.persistent()
- .get(&DataKey::Contributions(member.clone()))
- .unwrap_or(0);
+ .get(&DataKey::Member(member.clone()))
+ .unwrap_or(MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ });
+
+ let current_contribution: i128 = member_state.total_contributions;
if current_contribution < amount {
panic!("Insufficient savings to withdraw");
@@ -407,11 +486,12 @@ impl KoloSavingsContract {
}
let new_contribution = current_contribution - amount;
+ member_state.total_contributions = new_contribution;
env.storage()
.persistent()
- .set(&DataKey::Contributions(member.clone()), &new_contribution);
+ .set(&DataKey::Member(member.clone()), &member_state);
env.storage().persistent().extend_ttl(
- &DataKey::Contributions(member.clone()),
+ &DataKey::Member(member.clone()),
LEDGERS_TO_LIVE / 2,
LEDGERS_TO_LIVE,
);
@@ -425,114 +505,35 @@ impl KoloSavingsContract {
.publish((symbol_short!("withdraw"), member), amount);
}
- /// Member-initiated payout trigger
- /// Allows any member to trigger payout once the pool is fully funded.
- /// Enforces strictly deterministic rotational payout (Ajo/Esusu) order.
- pub fn trigger_payout(env: Env, caller: Address, recipient: Address) {
+ /// Resets the payout cycle so members can contribute and receive payouts again.
+ /// NextPayoutIndex persists across the full rotation — it only resets when
+ /// all members have received their payout and the admin triggers a new rotation.
+ pub fn reset_cycle(env: Env) {
+ let admin: Address = env.storage().instance().get(&DataKey::Admin).unwrap();
+ admin.require_auth();
+ extend_instance_ttl(&env);
+
let group_type: GroupType = env
.storage()
.instance()
.get(&DataKey::GroupType)
.unwrap_or(GroupType::Rotational);
- if group_type == GroupType::GoalBased {
- panic!("Payouts not allowed in GoalBased groups");
- }
-
- caller.require_auth();
- // Verify caller is a member
- let members: Vec = env.storage().instance().get(&DataKey::Members).unwrap();
- if !members.contains(&caller) {
- panic!("Caller is not a member");
- }
-
- // Verify recipient is a member
- if !members.contains(&recipient) {
- panic!("Recipient is not a member");
- }
-
- let next_index: u32 = env
- .storage()
- .instance()
- .get(&DataKey::NextPayoutIndex)
- .unwrap_or(0);
-
- if next_index >= members.len() {
- panic!("All members have received payouts this cycle");
- }
-
- let expected_recipient: Address = members.get(next_index).unwrap();
- if recipient != expected_recipient {
- panic!("Recipient is not next in payout order");
- }
-
- // Check if pool is full (all members have contributed)
- let cycle_member_count: i128 = env
- .storage()
- .instance()
- .get(&DataKey::CycleMemberCount)
- .expect("No active cycle");
- let current_cycle_contributions: i128 = env
+ // Increment cycle ID — this automatically makes last_contribution_cycle_id
+ // comparisons evaluate to "not contributed this cycle" for the next cycle.
+ let current_cycle_id: u32 = env
.storage()
.instance()
- .get(&DataKey::CurrentCycleContributions)
- .unwrap_or(0);
-
- if current_cycle_contributions < cycle_member_count {
- panic!("Pool is not full");
- }
-
- // Execute payout
- let contribution_amount: i128 = env
- .storage()
- .instance()
- .get(&DataKey::ContributionAmount)
- .unwrap();
- let pool_size = contribution_amount * cycle_member_count;
-
- let token: Address = env.storage().instance().get(&DataKey::Token).unwrap();
- let token_client = token::Client::new(&env, &token);
-
- let contract_balance = token_client.balance(&env.current_contract_address());
- if pool_size > contract_balance {
- panic!("Insufficient funds in contract for full payout");
- }
-
+ .get(&DataKey::CurrentCycleId)
+ .unwrap_or(1);
env.storage()
.instance()
- .set(&DataKey::NextPayoutIndex, &(next_index + 1));
- token_client.transfer(&env.current_contract_address(), &recipient, &pool_size);
+ .set(&DataKey::CurrentCycleId, &(current_cycle_id + 1));
- env.events()
- .publish((symbol_short!("trg_pay"), recipient), pool_size);
- }
-
- /// Resets the payout cycle so members can receive payouts again.
- pub fn reset_cycle(env: Env) {
- let admin: Address = env.storage().instance().get(&DataKey::Admin).unwrap();
- admin.require_auth();
- extend_instance_ttl(&env);
-
- let members: Vec = env.storage().instance().get(&DataKey::Members).unwrap();
-
- for member in members.iter() {
- env.storage()
- .persistent()
- .set(&DataKey::HasContributedThisCycle(member.clone()), &false);
- env.storage().persistent().extend_ttl(
- &DataKey::HasContributedThisCycle(member.clone()),
- LEDGERS_TO_LIVE / 2,
- LEDGERS_TO_LIVE,
- );
+ if group_type == GroupType::Rotational {
+ env.storage().instance().remove(&DataKey::CycleMemberCount);
}
- // Clear the frozen member count so it is re-established at the next cycle's first contribution
- env.storage().instance().remove(&DataKey::CycleMemberCount);
- // Reset the current cycle contributions counter
- env.storage()
- .instance()
- .set(&DataKey::CurrentCycleContributions, &0i128);
-
env.events().publish((symbol_short!("reset"),), ());
}
@@ -560,14 +561,20 @@ impl KoloSavingsContract {
pub fn get_contribution(env: Env, member: Address) -> i128 {
env.storage().persistent().extend_ttl(
- &DataKey::Contributions(member.clone()),
+ &DataKey::Member(member.clone()),
LEDGERS_TO_LIVE / 2,
LEDGERS_TO_LIVE,
);
- env.storage()
+ let member_state: MemberState = env
+ .storage()
.persistent()
- .get(&DataKey::Contributions(member))
- .unwrap_or(0)
+ .get(&DataKey::Member(member))
+ .unwrap_or(MemberState {
+ total_contributions: 0,
+ last_contribution_cycle_id: 0,
+ has_received_payout: false,
+ });
+ member_state.total_contributions
}
pub fn has_received_payout(env: Env, member: Address) -> bool {
diff --git a/contracts/src/test.rs b/contracts/src/test.rs
index 5e4188b..d22e30b 100644
--- a/contracts/src/test.rs
+++ b/contracts/src/test.rs
@@ -27,6 +27,7 @@ fn test_initialize() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
}
@@ -51,6 +52,7 @@ fn test_double_initialize() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
client.initialize(
&admin,
@@ -60,6 +62,7 @@ fn test_double_initialize() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
}
@@ -83,6 +86,7 @@ fn test_add_member() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
env.mock_all_auths();
@@ -112,6 +116,7 @@ fn test_contribute_not_member() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
env.mock_all_auths();
@@ -141,6 +146,7 @@ fn test_contribute_twice_same_cycle_is_rejected() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -172,6 +178,7 @@ fn test_contribute_allowed_after_reset() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -206,6 +213,7 @@ fn test_events() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
assert_eq!(
@@ -268,6 +276,7 @@ fn test_goalbased_flexible_contributions() {
&GroupType::GoalBased,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -306,6 +315,7 @@ fn test_goalbased_partial_withdrawal() {
&GroupType::GoalBased,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -344,6 +354,7 @@ fn test_goalbased_over_withdrawal() {
&GroupType::GoalBased,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -376,6 +387,7 @@ fn test_goalbased_locked_until_target() {
&GroupType::GoalBased,
&Some(2000), // target amount
&true, // lock until target
+ &None, // expected_cycle_days
);
let member = Address::generate(&env);
@@ -407,6 +419,7 @@ fn test_remove_member_no_contribution() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member1 = Address::generate(&env);
@@ -445,6 +458,7 @@ fn test_remove_member_with_contribution_refund() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member1 = Address::generate(&env);
@@ -464,12 +478,11 @@ fn test_remove_member_with_contribution_refund() {
assert_eq!(token_client.balance(&member2), 5000);
env.as_contract(&contract_id, || {
- let has_contributed: bool = env
+ // MemberState entry removed entirely during remove_member (O(1) design)
+ assert!(!env
.storage()
- .persistent()
- .get(&DataKey::HasContributedThisCycle(member2.clone()))
- .unwrap_or(false);
- assert!(!has_contributed);
+ .instance()
+ .has(&DataKey::Member(member2.clone())));
});
}
@@ -495,6 +508,7 @@ fn test_remove_member_after_payout_panics() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member1 = Address::generate(&env);
@@ -533,6 +547,7 @@ fn test_remove_member_adjusts_cycle_count() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member1 = Address::generate(&env);
@@ -602,6 +617,7 @@ fn test_remove_last_member_clears_cycle_count() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member = Address::generate(&env);
@@ -646,6 +662,7 @@ fn test_deterministic_payout_order() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member0 = Address::generate(&env);
@@ -719,6 +736,7 @@ fn test_queue_enforced_payout_order() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member0 = Address::generate(&env);
@@ -784,6 +802,7 @@ fn test_cycle_resets_and_starts_again() {
&GroupType::Rotational,
&None,
&false,
+ &None,
);
let member0 = Address::generate(&env);
@@ -841,140 +860,3 @@ fn test_cycle_resets_and_starts_again() {
client.payout();
assert!(client.has_received_payout(&member0));
}
-
-#[test]
-fn test_trigger_payout_success() {
- let env = Env::default();
- env.mock_all_auths();
- let contract_id = env.register_contract(None, KoloSavingsContract);
- let client = KoloSavingsContractClient::new(&env, &contract_id);
-
- let admin = Address::generate(&env);
- let token_admin = Address::generate(&env);
- let token = env.register_stellar_asset_contract(token_admin.clone());
- let name = String::from_str(&env, "Test Group");
- let contribution_amount = 1000;
-
- client.initialize(
- &admin,
- &token,
- &name,
- &contribution_amount,
- &GroupType::Rotational,
- &None,
- &false,
- );
-
- // Add two members (member1 index 0, member2 index 1)
- let member1 = Address::generate(&env);
- let member2 = Address::generate(&env);
- client.add_member(&member1);
- client.add_member(&member2);
-
- // Fund the token contract so members have tokens to contribute
- let token_client = token::Client::new(&env, &token);
- let stellar_asset = token::StellarAssetClient::new(&env, &token);
- for member in [&member1, &member2] {
- stellar_asset.mint(member, &5000);
- }
-
- // Both members contribute
- client.contribute(&member1, &1000);
- client.contribute(&member2, &1000);
-
- // Member 2 triggers payout to member 1 (who is next in queue at index 0)
- let initial_balance = token_client.balance(&member1);
- client.trigger_payout(&member2, &member1);
- let final_balance = token_client.balance(&member1);
-
- // Verify payout was received (2 members * 1000 = 2000)
- assert_eq!(final_balance, initial_balance + 2000);
-}
-
-#[test]
-#[should_panic(expected = "Pool is not full")]
-fn test_trigger_payout_pool_not_full() {
- let env = Env::default();
- env.mock_all_auths();
- let contract_id = env.register_contract(None, KoloSavingsContract);
- let client = KoloSavingsContractClient::new(&env, &contract_id);
-
- let admin = Address::generate(&env);
- let token_admin = Address::generate(&env);
- let token = env.register_stellar_asset_contract(token_admin.clone());
- let name = String::from_str(&env, "Test Group");
- let contribution_amount = 1000;
-
- client.initialize(
- &admin,
- &token,
- &name,
- &contribution_amount,
- &GroupType::Rotational,
- &None,
- &false,
- );
-
- // Add two members
- let member1 = Address::generate(&env);
- let member2 = Address::generate(&env);
- client.add_member(&member1);
- client.add_member(&member2);
-
- // Fund the token contract
- let stellar_asset = token::StellarAssetClient::new(&env, &token);
- for member in [&member1, &member2] {
- stellar_asset.mint(member, &5000);
- }
-
- // Only member1 contributes (pool not full)
- client.contribute(&member1, &1000);
-
- // Attempt to trigger payout should fail
- client.trigger_payout(&member2, &member1);
-}
-
-#[test]
-#[should_panic(expected = "Caller is not a member")]
-fn test_trigger_payout_non_member() {
- let env = Env::default();
- env.mock_all_auths();
- let contract_id = env.register_contract(None, KoloSavingsContract);
- let client = KoloSavingsContractClient::new(&env, &contract_id);
-
- let admin = Address::generate(&env);
- let token_admin = Address::generate(&env);
- let token = env.register_stellar_asset_contract(token_admin.clone());
- let name = String::from_str(&env, "Test Group");
- let contribution_amount = 1000;
-
- client.initialize(
- &admin,
- &token,
- &name,
- &contribution_amount,
- &GroupType::Rotational,
- &None,
- &false,
- );
-
- // Add two members
- let member1 = Address::generate(&env);
- let member2 = Address::generate(&env);
- client.add_member(&member1);
- client.add_member(&member2);
-
- // Fund the token contract
- let stellar_asset = token::StellarAssetClient::new(&env, &token);
- for member in [&member1, &member2] {
- stellar_asset.mint(member, &5000);
- }
-
- // Both members contribute
- client.contribute(&member1, &1000);
- client.contribute(&member2, &1000);
-
- // Non-member attempts to trigger payout
- let non_member = Address::generate(&env);
- client.trigger_payout(&non_member, &member1);
-}
diff --git a/contracts/test_snapshots/test/test_add_member.1.json b/contracts/test_snapshots/test/test_add_member.1.json
index 7dc3e07..772040e 100644
--- a/contracts/test_snapshots/test/test_add_member.1.json
+++ b/contracts/test_snapshots/test/test_add_member.1.json
@@ -37,7 +37,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -85,7 +86,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
@@ -94,34 +95,32 @@
},
"durability": "persistent",
"val": {
- "i128": "0"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
+ {
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
+ },
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 0
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "0"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": false
}
}
},
@@ -168,6 +167,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
diff --git a/contracts/test_snapshots/test/test_contribute_allowed_after_reset.1.json b/contracts/test_snapshots/test/test_contribute_allowed_after_reset.1.json
index fefa4f3..4dab9eb 100644
--- a/contracts/test_snapshots/test/test_contribute_allowed_after_reset.1.json
+++ b/contracts/test_snapshots/test/test_contribute_allowed_after_reset.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -270,7 +271,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -279,34 +280,32 @@
},
"durability": "persistent",
"val": {
- "i128": "2000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 2
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "2000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
@@ -357,12 +356,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "1"
+ "u32": 2
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_contribute_not_member.1.json b/contracts/test_snapshots/test/test_contribute_not_member.1.json
index 8de5bcc..1762044 100644
--- a/contracts/test_snapshots/test/test_contribute_not_member.1.json
+++ b/contracts/test_snapshots/test/test_contribute_not_member.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -157,6 +158,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
diff --git a/contracts/test_snapshots/test/test_contribute_twice_same_cycle_is_rejected.1.json b/contracts/test_snapshots/test/test_contribute_twice_same_cycle_is_rejected.1.json
index 8bd78b7..dea98b8 100644
--- a/contracts/test_snapshots/test/test_contribute_twice_same_cycle_is_rejected.1.json
+++ b/contracts/test_snapshots/test/test_contribute_twice_same_cycle_is_rejected.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -212,7 +213,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -221,40 +222,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 518400
},
{
"entry": {
@@ -299,12 +298,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "1"
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_cycle_resets_and_starts_again.1.json b/contracts/test_snapshots/test/test_cycle_resets_and_starts_again.1.json
index ce70930..0a88de7 100644
--- a/contracts/test_snapshots/test/test_cycle_resets_and_starts_again.1.json
+++ b/contracts/test_snapshots/test/test_cycle_resets_and_starts_again.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -897,7 +898,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -906,40 +907,38 @@
},
"durability": "persistent",
"val": {
- "i128": "4000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 4
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "4000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "i128": "4000"
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1555200
},
{
"entry": {
@@ -951,49 +950,47 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
}
]
},
"durability": "persistent",
"val": {
- "i128": "4000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 4
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "4000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -1005,49 +1002,47 @@
"key": {
"vec": [
{
- "symbol": "HasContributedThisCycle"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
}
]
},
"durability": "persistent",
"val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 4
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "4000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -1092,12 +1087,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "3"
+ "u32": 4
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -1205,7 +1212,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -2070,7 +2077,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_deterministic_payout_order.1.json b/contracts/test_snapshots/test/test_deterministic_payout_order.1.json
index b7a46ae..ef60072 100644
--- a/contracts/test_snapshots/test/test_deterministic_payout_order.1.json
+++ b/contracts/test_snapshots/test/test_deterministic_payout_order.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -725,7 +726,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -734,40 +735,38 @@
},
"durability": "persistent",
"val": {
- "i128": "3000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "i128": "3000"
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1555200
},
{
"entry": {
@@ -779,49 +778,47 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
}
]
},
"durability": "persistent",
"val": {
- "i128": "3000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -833,49 +830,47 @@
"key": {
"vec": [
{
- "symbol": "HasContributedThisCycle"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
}
]
},
"durability": "persistent",
"val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
+ {
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
+ },
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -920,12 +915,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "3"
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -1033,7 +1040,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -1778,7 +1785,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_double_initialize.1.json b/contracts/test_snapshots/test/test_double_initialize.1.json
index 45bed45..503d2bb 100644
--- a/contracts/test_snapshots/test/test_double_initialize.1.json
+++ b/contracts/test_snapshots/test/test_double_initialize.1.json
@@ -37,7 +37,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -96,6 +97,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
diff --git a/contracts/test_snapshots/test/test_events.1.json b/contracts/test_snapshots/test/test_events.1.json
index 7dc3e07..772040e 100644
--- a/contracts/test_snapshots/test/test_events.1.json
+++ b/contracts/test_snapshots/test/test_events.1.json
@@ -37,7 +37,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -85,7 +86,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
@@ -94,34 +95,32 @@
},
"durability": "persistent",
"val": {
- "i128": "0"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
+ {
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
+ },
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 0
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "0"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": false
}
}
},
@@ -168,6 +167,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
diff --git a/contracts/test_snapshots/test/test_goalbased_flexible_contributions.1.json b/contracts/test_snapshots/test/test_goalbased_flexible_contributions.1.json
index 4836703..90e1a91 100644
--- a/contracts/test_snapshots/test/test_goalbased_flexible_contributions.1.json
+++ b/contracts/test_snapshots/test/test_goalbased_flexible_contributions.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -270,7 +271,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -279,34 +280,32 @@
},
"durability": "persistent",
"val": {
- "i128": "2000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 2
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "2000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
@@ -357,12 +356,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 2
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "1"
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_goalbased_locked_until_target.1.json b/contracts/test_snapshots/test/test_goalbased_locked_until_target.1.json
index 7ca8da1..66c4dfe 100644
--- a/contracts/test_snapshots/test/test_goalbased_locked_until_target.1.json
+++ b/contracts/test_snapshots/test/test_goalbased_locked_until_target.1.json
@@ -59,7 +59,8 @@
},
{
"bool": true
- }
+ },
+ "void"
]
}
},
@@ -214,7 +215,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -223,40 +224,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 518400
},
{
"entry": {
@@ -301,12 +300,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "1"
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_goalbased_over_withdrawal.1.json b/contracts/test_snapshots/test/test_goalbased_over_withdrawal.1.json
index 725266f..42bcbb5 100644
--- a/contracts/test_snapshots/test/test_goalbased_over_withdrawal.1.json
+++ b/contracts/test_snapshots/test/test_goalbased_over_withdrawal.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -212,7 +213,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -221,40 +222,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 518400
},
{
"entry": {
@@ -299,12 +298,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "1"
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_goalbased_partial_withdrawal.1.json b/contracts/test_snapshots/test/test_goalbased_partial_withdrawal.1.json
index eeb5829..8d6731e 100644
--- a/contracts/test_snapshots/test/test_goalbased_partial_withdrawal.1.json
+++ b/contracts/test_snapshots/test/test_goalbased_partial_withdrawal.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -236,7 +237,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -245,40 +246,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1500"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1500"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 518400
},
{
"entry": {
@@ -323,12 +322,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "1"
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_initialize.1.json b/contracts/test_snapshots/test/test_initialize.1.json
index f468536..d5ae1cd 100644
--- a/contracts/test_snapshots/test/test_initialize.1.json
+++ b/contracts/test_snapshots/test/test_initialize.1.json
@@ -37,7 +37,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -95,6 +96,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
diff --git a/contracts/test_snapshots/test/test_queue_enforced_payout_order.1.json b/contracts/test_snapshots/test/test_queue_enforced_payout_order.1.json
index 0980c56..fcadf2e 100644
--- a/contracts/test_snapshots/test/test_queue_enforced_payout_order.1.json
+++ b/contracts/test_snapshots/test/test_queue_enforced_payout_order.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -720,7 +721,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -729,40 +730,38 @@
},
"durability": "persistent",
"val": {
- "i128": "3000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "i128": "3000"
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1555200
},
{
"entry": {
@@ -774,49 +773,47 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
}
]
},
"durability": "persistent",
"val": {
- "i128": "3000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -828,49 +825,47 @@
"key": {
"vec": [
{
- "symbol": "HasContributedThisCycle"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
}
]
},
"durability": "persistent",
"val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
+ {
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
+ },
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 3
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "3000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1555200
},
{
"entry": {
@@ -915,12 +910,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "3"
+ "u32": 3
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -1028,7 +1035,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -1773,7 +1780,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_remove_last_member_clears_cycle_count.1.json b/contracts/test_snapshots/test/test_remove_last_member_clears_cycle_count.1.json
index 9a4e4a5..af61300 100644
--- a/contracts/test_snapshots/test/test_remove_last_member_clears_cycle_count.1.json
+++ b/contracts/test_snapshots/test/test_remove_last_member_clears_cycle_count.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -222,33 +223,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -292,12 +266,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "1"
+ "u32": 518400
}
},
{
diff --git a/contracts/test_snapshots/test/test_remove_member_adjusts_cycle_count.1.json b/contracts/test_snapshots/test/test_remove_member_adjusts_cycle_count.1.json
index f851083..621e944 100644
--- a/contracts/test_snapshots/test/test_remove_member_adjusts_cycle_count.1.json
+++ b/contracts/test_snapshots/test/test_remove_member_adjusts_cycle_count.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -389,7 +390,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -398,67 +399,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "i128": "0"
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1555200
},
{
"entry": {
@@ -470,49 +442,47 @@
"key": {
"vec": [
{
- "symbol": "HasContributedThisCycle"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
}
]
},
"durability": "persistent",
"val": {
- "bool": false
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": false
}
}
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -557,12 +527,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "0"
+ "u32": 2
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -655,7 +637,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -1220,7 +1202,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_remove_member_after_payout_panics.1.json b/contracts/test_snapshots/test/test_remove_member_after_payout_panics.1.json
index b46059f..6733d3f 100644
--- a/contracts/test_snapshots/test/test_remove_member_after_payout_panics.1.json
+++ b/contracts/test_snapshots/test/test_remove_member_after_payout_panics.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -311,7 +312,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -320,40 +321,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": true
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1036800
},
{
"entry": {
@@ -365,49 +364,47 @@
"key": {
"vec": [
{
- "symbol": "HasContributedThisCycle"
+ "symbol": "Member"
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
}
]
},
"durability": "persistent",
"val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1036800
},
{
"entry": {
@@ -452,12 +449,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "2"
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -562,7 +571,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -995,7 +1004,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_remove_member_no_contribution.1.json b/contracts/test_snapshots/test/test_remove_member_no_contribution.1.json
index 33b8197..9a09f82 100644
--- a/contracts/test_snapshots/test/test_remove_member_no_contribution.1.json
+++ b/contracts/test_snapshots/test/test_remove_member_no_contribution.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -185,7 +186,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -194,61 +195,32 @@
},
"durability": "persistent",
"val": {
- "i128": "0"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "0"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 0
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "0"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": false
}
}
},
@@ -295,6 +267,30 @@
"i128": "1000"
}
},
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CurrentCycleId"
+ }
+ ]
+ },
+ "val": {
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
+ }
+ },
{
"key": {
"vec": [
@@ -382,7 +378,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -579,7 +575,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_remove_member_with_contribution_refund.1.json b/contracts/test_snapshots/test/test_remove_member_with_contribution_refund.1.json
index 437ed75..3cc997f 100644
--- a/contracts/test_snapshots/test/test_remove_member_with_contribution_refund.1.json
+++ b/contracts/test_snapshots/test/test_remove_member_with_contribution_refund.1.json
@@ -57,7 +57,8 @@
"void",
{
"bool": false
- }
+ },
+ "void"
]
}
},
@@ -317,7 +318,7 @@
"key": {
"vec": [
{
- "symbol": "Contributions"
+ "symbol": "Member"
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -326,67 +327,38 @@
},
"durability": "persistent",
"val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
+ "map": [
{
- "symbol": "Contributions"
+ "key": {
+ "symbol": "has_received_payout"
+ },
+ "val": {
+ "bool": false
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
+ "key": {
+ "symbol": "last_contribution_cycle_id"
+ },
+ "val": {
+ "u32": 1
+ }
},
{
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "key": {
+ "symbol": "total_contributions"
+ },
+ "val": {
+ "i128": "1000"
+ }
}
]
- },
- "durability": "persistent",
- "val": {
- "bool": true
}
}
},
"ext": "v0"
},
- "live_until": 4095
+ "live_until": 1036800
},
{
"entry": {
@@ -431,12 +403,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "2"
+ "u32": 1
+ }
+ },
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "CycleLengthLedgers"
+ }
+ ]
+ },
+ "val": {
+ "u32": 518400
}
},
{
@@ -538,7 +522,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
},
{
"entry": {
@@ -971,7 +955,7 @@
},
"ext": "v0"
},
- "live_until": 518400
+ "live_until": 1036800
}
]
},
diff --git a/contracts/test_snapshots/test/test_trigger_payout_non_member.1.json b/contracts/test_snapshots/test/test_trigger_payout_non_member.1.json
index 6978b48..5f784b4 100644
--- a/contracts/test_snapshots/test/test_trigger_payout_non_member.1.json
+++ b/contracts/test_snapshots/test/test_trigger_payout_non_member.1.json
@@ -1,6 +1,6 @@
{
"generators": {
- "address": 7,
+ "address": 4,
"nonce": 0,
"mux_id": 0
},
@@ -57,183 +57,15 @@
"void",
{
"bool": false
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "5000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
},
- {
- "i128": "5000"
- }
+ "void"
]
}
},
"sub_invocations": []
}
]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "contribute",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": [
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "transfer",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "contribute",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": [
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "transfer",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- }
- ]
- ],
- []
+ ]
],
"ledger": {
"protocol_version": 27,
@@ -286,114 +118,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -437,24 +161,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "2"
+ "u32": 1
}
},
{
"key": {
"vec": [
{
- "symbol": "CycleMemberCount"
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "2"
+ "u32": 518400
}
},
{
@@ -494,14 +218,7 @@
]
},
"val": {
- "vec": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
+ "vec": []
}
},
{
@@ -516,18 +233,6 @@
"string": "Test Group"
}
},
- {
- "key": {
- "vec": [
- {
- "symbol": "NextPayoutIndex"
- }
- ]
- },
- "val": {
- "u32": 0
- }
- },
{
"key": {
"vec": [
@@ -549,46 +254,6 @@
},
"live_until": 518400
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "1033654523790656264"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4837995959683129791"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -609,242 +274,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "2032731177588607455"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4270020994084947596"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- "key": {
- "ledger_key_nonce": {
- "nonce": "8370022561469687789"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "6277191135259896685"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "2000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "4000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "4000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -964,5 +393,39 @@
}
]
},
- "events": []
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "init"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN"
+ },
+ {
+ "string": "Test Group"
+ },
+ {
+ "i128": "1000"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
}
\ No newline at end of file
diff --git a/contracts/test_snapshots/test/test_trigger_payout_pool_not_full.1.json b/contracts/test_snapshots/test/test_trigger_payout_pool_not_full.1.json
index 38f73e0..5f784b4 100644
--- a/contracts/test_snapshots/test/test_trigger_payout_pool_not_full.1.json
+++ b/contracts/test_snapshots/test/test_trigger_payout_pool_not_full.1.json
@@ -1,6 +1,6 @@
{
"generators": {
- "address": 6,
+ "address": 4,
"nonce": 0,
"mux_id": 0
},
@@ -57,140 +57,15 @@
"void",
{
"bool": false
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "5000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
},
- {
- "i128": "5000"
- }
+ "void"
]
}
},
"sub_invocations": []
}
]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "contribute",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": [
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "transfer",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- }
- ]
- ],
- []
+ ]
],
"ledger": {
"protocol_version": 27,
@@ -243,114 +118,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "0"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": false
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -394,24 +161,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "1"
+ "u32": 1
}
},
{
"key": {
"vec": [
{
- "symbol": "CycleMemberCount"
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "2"
+ "u32": 518400
}
},
{
@@ -451,14 +218,7 @@
]
},
"val": {
- "vec": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
+ "vec": []
}
},
{
@@ -473,18 +233,6 @@
"string": "Test Group"
}
},
- {
- "key": {
- "vec": [
- {
- "symbol": "NextPayoutIndex"
- }
- ]
- },
- "val": {
- "u32": 0
- }
- },
{
"key": {
"vec": [
@@ -506,46 +254,6 @@
},
"live_until": 518400
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "1033654523790656264"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4837995959683129791"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -566,222 +274,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "2032731177588607455"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4270020994084947596"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- "key": {
- "ledger_key_nonce": {
- "nonce": "8370022561469687789"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "1000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "4000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "5000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -901,5 +393,39 @@
}
]
},
- "events": []
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "init"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN"
+ },
+ {
+ "string": "Test Group"
+ },
+ {
+ "i128": "1000"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
}
\ No newline at end of file
diff --git a/contracts/test_snapshots/test/test_trigger_payout_success.1.json b/contracts/test_snapshots/test/test_trigger_payout_success.1.json
index 8bb5f65..5f784b4 100644
--- a/contracts/test_snapshots/test/test_trigger_payout_success.1.json
+++ b/contracts/test_snapshots/test/test_trigger_payout_success.1.json
@@ -1,6 +1,6 @@
{
"generators": {
- "address": 6,
+ "address": 4,
"nonce": 0,
"mux_id": 0
},
@@ -57,206 +57,15 @@
"void",
{
"bool": false
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "add_member",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "5000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "mint",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- },
- {
- "i128": "5000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "contribute",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": [
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "transfer",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- }
- ]
- ],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "contribute",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": [
- {
- "function": {
- "contract_fn": {
- "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "function_name": "transfer",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- },
- {
- "i128": "1000"
- }
- ]
- }
- },
- "sub_invocations": []
- }
- ]
- }
- ]
- ],
- [],
- [
- [
- "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- {
- "function": {
- "contract_fn": {
- "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "function_name": "trigger_payout",
- "args": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
},
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
+ "void"
]
}
},
"sub_invocations": []
}
]
- ],
- []
+ ]
],
"ledger": {
"protocol_version": 27,
@@ -309,114 +118,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "Contributions"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "i128": "1000"
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
- "key": {
- "vec": [
- {
- "symbol": "HasContributedThisCycle"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "bool": true
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 4095
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -460,24 +161,24 @@
"key": {
"vec": [
{
- "symbol": "CurrentCycleContributions"
+ "symbol": "CurrentCycleId"
}
]
},
"val": {
- "i128": "2"
+ "u32": 1
}
},
{
"key": {
"vec": [
{
- "symbol": "CycleMemberCount"
+ "symbol": "CycleLengthLedgers"
}
]
},
"val": {
- "i128": "2"
+ "u32": 518400
}
},
{
@@ -517,14 +218,7 @@
]
},
"val": {
- "vec": [
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
+ "vec": []
}
},
{
@@ -539,18 +233,6 @@
"string": "Test Group"
}
},
- {
- "key": {
- "vec": [
- {
- "symbol": "NextPayoutIndex"
- }
- ]
- },
- "val": {
- "u32": 1
- }
- },
{
"key": {
"vec": [
@@ -572,46 +254,6 @@
},
"live_until": 518400
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "1033654523790656264"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4837995959683129791"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -632,262 +274,6 @@
},
"live_until": 6311999
},
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "2032731177588607455"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
- "key": {
- "ledger_key_nonce": {
- "nonce": "4270020994084947596"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
- "key": {
- "ledger_key_nonce": {
- "nonce": "8370022561469687789"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "5806905060045992000"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4",
- "key": {
- "ledger_key_nonce": {
- "nonce": "6277191135259896685"
- }
- },
- "durability": "temporary",
- "val": "void"
- }
- },
- "ext": "v0"
- },
- "live_until": 6311999
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "0"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "6000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
- {
- "entry": {
- "last_modified_ledger_seq": 0,
- "data": {
- "contract_data": {
- "ext": "v0",
- "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN",
- "key": {
- "vec": [
- {
- "symbol": "Balance"
- },
- {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
- }
- ]
- },
- "durability": "persistent",
- "val": {
- "map": [
- {
- "key": {
- "symbol": "amount"
- },
- "val": {
- "i128": "4000"
- }
- },
- {
- "key": {
- "symbol": "authorized"
- },
- "val": {
- "bool": true
- }
- },
- {
- "key": {
- "symbol": "clawback"
- },
- "val": {
- "bool": false
- }
- }
- ]
- }
- }
- },
- "ext": "v0"
- },
- "live_until": 518400
- },
{
"entry": {
"last_modified_ledger_seq": 0,
@@ -1007,5 +393,39 @@
}
]
},
- "events": []
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "init"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN"
+ },
+ {
+ "string": "Test Group"
+ },
+ {
+ "i128": "1000"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
}
\ No newline at end of file