Accepted
The contract workspace contains token, reward pool, distribution, staking, campaign, referral, vesting, governance, admin roles, redemption, escrow, and state-management logic. Combining everything into one contract would simplify deployment but increase blast radius and make audits harder.
Keep Soroban contracts modular and make cross-contract calls explicit:
nova_token owns fungible token balances and allowances.reward_pool calls nova_token for pool deposits, balance checks, and
withdrawals.distribution calls nova_token for distribution and clawback transfers.nova-rewards owns staking, account recovery, upgrade hooks, and configured
DEX-router swaps.campaign, redemption, referral, vesting, admin_roles,
governance, escrow, and contract_state keep their own bounded state and
emit events or perform internal accounting unless source code shows an
explicit external call.The contract interaction diagram must show both actual calls and intentional standalone boundaries so reviewers can separate deployed dependencies from future extension points.
Positive:
Negative:
contracts/Cargo.tomlcontracts/nova_token/src/lib.rscontracts/reward_pool/src/lib.rscontracts/distribution/src/lib.rscontracts/nova-rewards/src/lib.rs