takt-contract (v0.1.0) is currently unaudited and deployed on Stellar Testnet for testing and evaluation purposes. Do not deposit production mainnet funds until a formal third-party security audit has been completed and published.
The following contracts in this repository are in scope for security vulnerability reports:
contracts/keeper-registrycontracts/bounty-vaultcontracts/job-engine
Out-of-scope items include third-party dependencies (such as the Stellar core protocol or Soroban SDK itself) and external systems not maintained in this repository.
create_joballows any user to specify atarget_contract,target_fn, andtarget_args. Whenexecute_jobruns,job-engineinvokesenv.invoke_contract::<Val>(&job.target_contract, &job.target_fn, job.target_args).- Security Boundary: Because
job-engineis the authorized caller insidekeeper-registry(record_execution) andbounty-vault(payout_execution,fund_job_from_engine), a malicious job owner could attempt to settarget_contracttokeeper-registryorbounty-vaultto trigger privileged state changes. - Mitigation & Open Hardening Issue: Downstream target contracts must never rely solely on
job-enginecaller identity for privileged user actions. Explicit target-address denylisting (target_contract != keeper_registry && target_contract != bounty_vault && target_contract != env.current_contract_address()) is tracked as a priority security hardening issue.
- Administrative functions including
slash_keeperandset_enginecurrently requireconfig.admin.require_auth(). Compromising the admin key could slash active keepers or redirect engine authorization. - Admin controls are currently held by a single Testnet key (
GBKGRYZZEELD6POCG5E3MNMA3CT7OKF45CUX3FUDSJH6NJXAMTPXIYRS), with transition to multi-sig / timelock governance planned on the roadmap.
- If a target contract panics or traps (e.g., mismatched argument arity or out-of-gas), the entire
execute_jobtransaction reverts atomically on Soroban. - Keepers incur simulation and inclusion overhead if they broadcast transactions without pre-simulating execution via Soroban RPC (
simulateTransaction). Keepers should simulate target executions prior to on-chain submission to prevent fee exhaustion.
If you discover a security vulnerability or exploit vector within takt-contract, please disclose it responsibly. Do NOT open a public issue.
Submit vulnerability reports privately through GitHub Security Advisories: Submit a Security Advisory