Skip to content

Commit ee781d2

Browse files
committed
fix(workspace): correct Cargo workspace members list
1 parent 3dd9f7e commit ee781d2

6 files changed

Lines changed: 234 additions & 83 deletions

File tree

Cargo.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
[workspace]
22
resolver = "2"
3-
members = ["contracts/vault", "contracts/settlement", "contracts/revenue_pool"]
3+
members = [
4+
"contracts/vault",
5+
"contracts/revenue_pool",
6+
"contracts/settlement",
7+
]
8+
default-members = [
9+
"contracts/vault",
10+
"contracts/revenue_pool",
11+
"contracts/settlement",
12+
]
413

514
[workspace.dependencies]
615
soroban-sdk = "22"

contracts/revenue_pool/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ impl RevenuePool {
315315
let mut total_amount: i128 = 0;
316316
for payment in payments.iter() {
317317
let (_, amount) = payment;
318-
318+
319319
// Validate each amount is strictly positive
320320
if amount <= 0 {
321321
panic!("{}", ERR_AMOUNT_NOT_POSITIVE);
@@ -346,7 +346,7 @@ impl RevenuePool {
346346
let (to, amount) = payment;
347347
Self::validate_recipient(&to, &contract_address);
348348
usdc.transfer(&contract_address, &to, &amount);
349-
349+
350350
// Emit event for this leg of the batch
351351
env.events()
352352
.publish((Symbol::new(&env, "batch_distribute"), to), amount);

contracts/vault/src/lib.rs

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ impl CalloraVault {
8282
) -> VaultMeta {
8383
owner.require_auth();
8484
let inst = env.storage().instance();
85-
if inst.has(&StorageKey::Meta) {
85+
if inst.has(&StorageKey::MetaKey) {
8686
panic!("vault already initialized");
8787
}
8888
assert!(
@@ -122,7 +122,7 @@ impl CalloraVault {
122122
authorized_caller,
123123
min_deposit: min_d,
124124
};
125-
inst.set(&StorageKey::Meta, &meta);
125+
inst.set(&StorageKey::MetaKey, &meta);
126126
inst.set(&StorageKey::UsdcToken, &usdc_token);
127127
inst.set(&StorageKey::Admin, &owner);
128128
if let Some(p) = revenue_pool {
@@ -231,7 +231,7 @@ impl CalloraVault {
231231

232232
pub fn set_allowed_depositor(env: Env, caller: Address, depositor: Option<Address>) {
233233
caller.require_auth();
234-
Self::require_owner(env.clone(), caller);
234+
Self::require_owner(env.clone(), caller.clone());
235235

236236
match depositor {
237237
Some(d) => {
@@ -285,10 +285,14 @@ impl CalloraVault {
285285
pub fn set_authorized_caller(env: Env, caller: Option<Address>) {
286286
let mut meta = Self::get_meta(env.clone());
287287
meta.owner.require_auth();
288-
meta.authorized_caller = Some(caller.clone());
289-
env.storage().instance().set(&StorageKey::Meta, &meta);
288+
let old_authorized_caller = meta.authorized_caller.clone();
289+
meta.authorized_caller = caller.clone();
290+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
290291
env.events().publish(
291-
(Symbol::new(&env, "set_authorized_caller"), meta.owner.clone()),
292+
(
293+
Symbol::new(&env, "set_authorized_caller"),
294+
meta.owner.clone(),
295+
),
292296
(old_authorized_caller, caller),
293297
);
294298
}
@@ -374,7 +378,7 @@ impl CalloraVault {
374378
caller.require_auth();
375379
assert!(amount > 0, "amount must be positive");
376380
assert!(
377-
Self::is_authorized_depositor(env.clone(), depositor.clone()),
381+
Self::is_authorized_depositor(env.clone(), caller.clone()),
378382
"unauthorized: only owner or allowed depositor can deposit"
379383
);
380384
let meta = Self::get_meta(env.clone());
@@ -390,15 +394,17 @@ impl CalloraVault {
390394
.get(&StorageKey::UsdcToken)
391395
.expect("vault not initialized");
392396
let usdc = token::Client::new(&env, &usdc_addr);
393-
usdc.transfer(&depositor, &env.current_contract_address(), &amount);
397+
usdc.transfer(&caller, &env.current_contract_address(), &amount);
394398
let mut meta = Self::get_meta(env.clone());
395399
meta.balance = meta
396400
.balance
397401
.checked_add(amount)
398402
.unwrap_or_else(|| panic!("balance overflow"));
399403
env.storage().instance().set(&StorageKey::MetaKey, &meta);
400-
env.events()
401-
.publish((Symbol::new(&env, "deposit"),), (amount, meta.balance));
404+
env.events().publish(
405+
(Symbol::new(&env, "deposit"), caller),
406+
(amount, meta.balance),
407+
);
402408
meta.balance
403409
}
404410

@@ -423,21 +429,18 @@ impl CalloraVault {
423429
Self::require_not_paused(env.clone());
424430
caller.require_auth();
425431
assert!(amount > 0, "amount must be positive");
426-
let max_d: i128 = env
427-
.storage()
428-
.instance()
429-
.get(&StorageKey::MaxDeduct)
430-
.unwrap_or(DEFAULT_MAX_DEDUCT);
432+
Self::require_authorized_deduct_caller(env.clone(), &caller);
433+
let max_d = Self::get_max_deduct(env.clone());
431434
assert!(amount <= max_d, "deduct amount exceeds max_deduct");
432435
let meta = Self::get_meta(env.clone());
433436
assert!(meta.balance >= amount, "insufficient balance");
434-
Self::require_authorized_deduct_caller(env.clone(), &caller);
437+
let settlement = Self::require_settlement(&env);
435438
let mut meta = Self::get_meta(env.clone());
436439
meta.balance = meta
437440
.balance
438441
.checked_sub(amount)
439442
.unwrap_or_else(|| panic!("balance underflow"));
440-
env.storage().instance().set(&StorageKey::Meta, &meta);
443+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
441444
let ut: Address = env
442445
.storage()
443446
.instance()
@@ -463,17 +466,12 @@ impl CalloraVault {
463466
pub fn batch_deduct(env: Env, caller: Address, items: Vec<DeductItem>) -> i128 {
464467
Self::require_not_paused(env.clone());
465468
caller.require_auth();
466-
Self::require_not_paused(env.clone());
469+
Self::require_authorized_deduct_caller(env.clone(), &caller);
467470
let n = items.len();
468471
assert!(n > 0, "batch_deduct requires at least one item");
469472
assert!(n <= MAX_BATCH_SIZE, "batch too large");
470-
let max_d: i128 = env
471-
.storage()
472-
.instance()
473-
.get(&StorageKey::MaxDeduct)
474-
.unwrap_or(DEFAULT_MAX_DEDUCT);
473+
let max_d = Self::get_max_deduct(env.clone());
475474
let mut meta = Self::get_meta(env.clone());
476-
Self::require_authorized_deduct_caller(env.clone(), &caller);
477475
let mut running = meta.balance;
478476
let mut total: i128 = 0;
479477
for item in items.iter() {
@@ -487,6 +485,7 @@ impl CalloraVault {
487485
.checked_add(item.amount)
488486
.unwrap_or_else(|| panic!("total overflow"));
489487
}
488+
let settlement = Self::require_settlement(&env);
490489

491490
meta.balance = running;
492491

@@ -498,7 +497,14 @@ impl CalloraVault {
498497
Self::transfer_funds(&env, &ut, &settlement, total);
499498

500499
meta.balance = running;
501-
env.storage().instance().set(&StorageKey::Meta, &meta);
500+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
501+
for item in items.iter() {
502+
let rid = item.request_id.unwrap_or(Symbol::new(&env, ""));
503+
env.events().publish(
504+
(Symbol::new(&env, "deduct"), caller.clone(), rid),
505+
(item.amount, meta.balance),
506+
);
507+
}
502508
meta.balance
503509
}
504510

@@ -536,7 +542,7 @@ impl CalloraVault {
536542
let mut meta = Self::get_meta(env.clone());
537543
let old = meta.owner.clone();
538544
meta.owner = pending;
539-
env.storage().instance().set(&StorageKey::Meta, &meta);
545+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
540546
env.storage().instance().remove(&StorageKey::PendingOwner);
541547
env.events().publish(
542548
(Symbol::new(&env, "ownership_accepted"), old, meta.owner),
@@ -560,13 +566,10 @@ impl CalloraVault {
560566
.balance
561567
.checked_sub(amount)
562568
.unwrap_or_else(|| panic!("balance underflow"));
563-
env.storage().instance().set(&StorageKey::Meta, &meta);
569+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
564570
env.events().publish(
565571
(Symbol::new(&env, "withdraw"), meta.owner.clone()),
566-
WithdrawEventData {
567-
amount,
568-
new_balance: meta.balance,
569-
},
572+
(amount, meta.balance),
570573
);
571574
meta.balance
572575
}
@@ -587,13 +590,10 @@ impl CalloraVault {
587590
.balance
588591
.checked_sub(amount)
589592
.unwrap_or_else(|| panic!("balance underflow"));
590-
env.storage().instance().set(&StorageKey::Meta, &meta);
593+
env.storage().instance().set(&StorageKey::MetaKey, &meta);
591594
env.events().publish(
592595
(Symbol::new(&env, "withdraw_to"), meta.owner.clone(), to),
593-
WithdrawEventData {
594-
amount,
595-
new_balance: meta.balance,
596-
},
596+
(amount, meta.balance),
597597
);
598598
meta.balance
599599
}
@@ -774,13 +774,6 @@ impl CalloraVault {
774774
.unwrap_or_else(|| panic!("settlement address not set"))
775775
}
776776

777-
fn get_max_deduct(env: Env) -> i128 {
778-
env.storage()
779-
.instance()
780-
.get(&StorageKey::MaxDeduct)
781-
.unwrap_or(DEFAULT_MAX_DEDUCT)
782-
}
783-
784777
fn require_not_paused(env: Env) {
785778
assert!(!Self::is_paused(env), "vault is paused");
786779
}
@@ -797,6 +790,22 @@ impl CalloraVault {
797790
"unauthorized: caller is not admin or owner"
798791
);
799792
}
793+
794+
pub fn add_address(env: Env, caller: Address, depositor: Address) {
795+
Self::set_allowed_depositor(env.clone(), caller.clone(), Some(depositor.clone()));
796+
env.events()
797+
.publish((Symbol::new(&env, "allowlist_add"), caller, depositor), ());
798+
}
799+
800+
pub fn get_allowlist(env: Env) -> Vec<Address> {
801+
Self::get_allowed_depositors(env)
802+
}
803+
804+
pub fn clear_all(env: Env, caller: Address) {
805+
Self::clear_allowed_depositors(env.clone(), caller.clone());
806+
env.events()
807+
.publish((Symbol::new(&env, "allowlist_clear"), caller), ());
808+
}
800809
}
801810

802811
#[cfg(test)]

0 commit comments

Comments
 (0)