This document specifies all events emitted by Credence smart contracts, including their topic names, indexed parameters, and data payload schemas. It serves as the single source of truth for off-chain indexers, client applications, and integrators.
Every event in Soroban consists of two components:
- Topics: An ordered list of indexed values that support efficient filtering/querying.
- Data: The full payload of unindexed values.
Where both a v1 and v2 variant exist, both are emitted on every call for backwards compatibility. Indexers should prefer the v2 variant for new integrations.
For contributor-facing guidance on choosing between entity, transition, and request-style events, see PATTERNS_EVENTS.md.
Identity bond contract that handles staking, slashing, attestations, and more.
Many bond events carry authoritative state information for indexer replay. The *_v2 variants are designed for efficient replay with indexed timestamps and amounts.
- Bond Lifecycle: Use
bond_created_v2,bond_increased_v2,bond_withdrawn_v2,bond_liquidatedto reconstruct bond state - Slashes: Use
bond_slashed_v2to track total slashed amounts - Tier Changes: Derived from bond amount,
tier_changedis informational only
Emitted when an identity opens a new bond.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_created" |
| Topics | 1 | Address | Identity owner |
| Data | 0 | i128 | Initial bonded amount |
| Data | 1 | u64 | Lock-up duration in seconds |
| Data | 2 | bool | Auto-renewal flag |
Enhanced variant with amount and timestamp indexed for range queries.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_created_v2" |
| Topics | 1 | Address | Identity owner |
| Topics | 2 | i128 | Initial bonded amount (indexed) |
| Topics | 3 | u64 | Bond start timestamp (indexed) |
| Data | 0 | u64 | Lock-up duration in seconds |
| Data | 1 | bool | Auto-renewal flag |
| Data | 2 | u64 | Bond end timestamp |
Emitted when an identity tops up an existing bond.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_increased" |
| Topics | 1 | Address | Identity owner |
| Data | 0 | i128 | Additional amount deposited |
| Data | 1 | i128 | New total bonded amount |
Enhanced variant with amount and timestamp indexed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_increased_v2" |
| Topics | 1 | Address | Identity owner |
| Topics | 2 | i128 | Additional amount deposited (indexed) |
| Topics | 3 | i128 | New total bonded amount (indexed) |
| Topics | 4 | u64 | Increase timestamp (indexed) |
| Data | 0 | bool | Whether tier changed |
| Data | 1 | BondTier | New bond tier |
Emitted on any successful withdrawal (normal, early, or full closure).
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_withdrawn" |
| Topics | 1 | Address | Identity owner |
| Data | 0 | i128 | Amount withdrawn |
| Data | 1 | i128 | Remaining bonded amount |
Enhanced variant with amount and timestamp indexed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_withdrawn_v2" |
| Topics | 1 | Address | Identity owner |
| Topics | 2 | i128 | Amount withdrawn (indexed) |
| Topics | 3 | i128 | Remaining bonded amount (indexed) |
| Topics | 4 | u64 | Withdrawal timestamp (indexed) |
| Data | 0 | bool | Early withdrawal flag |
| Data | 1 | i128 | Penalty amount |
Emitted when a bond is finalized through liquidate().
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_liquidated" |
| Topics | 1 | Address | Identity owner |
| Data | 0 | i128 | Residual amount swept to treasury |
| Data | 1 | Symbol | Reason ("fully_slashed" or "expired_unrenewed") |
| Data | 2 | u64 | Liquidation timestamp |
| Data | 3 | Address | Admin/keeper that performed liquidation |
Emitted when an admin penalizes a bond.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_slashed" |
| Topics | 1 | Address | Identity owner |
| Data | 0 | i128 | Amount slashed this call |
| Data | 1 | i128 | Total lifetime slashed amount |
Enhanced variant with admin address and reason included.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_slashed_v2" |
| Topics | 1 | Address | Identity owner |
| Topics | 2 | i128 | Amount slashed this call (indexed) |
| Topics | 3 | i128 | Total lifetime slashed amount (indexed) |
| Topics | 4 | u64 | Slash timestamp (indexed) |
| Topics | 5 | Address | Admin that performed slash (indexed) |
| Data | 0 | String | Reason for slash |
| Data | 1 | bool | Full slash flag |
Emitted when an authorized attester submits a new attestation.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "attestation_added" |
| Topics | 1 | Address | Attestation subject |
| Data | 0 | u64 | Attestation ID |
| Data | 1 | Address | Attester address |
| Data | 2 | String | Attestation data |
Emitted when the original attester revokes an attestation.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "attestation_revoked" |
| Topics | 1 | Address | Attestation subject |
| Data | 0 | u64 | Attestation ID |
| Data | 1 | Address | Attester address |
Emitted when a bond crosses a tier threshold.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "tier_changed" |
| Data | 0 | Address | Identity owner |
| Data | 1 | BondTier | New tier |
All governance events share similar data layout.
Emitted when a new slash proposal is created.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "slash_proposed" |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | Proposer |
| Data | 2 | i128 | Proposed slash amount |
Emitted when a governor casts a vote.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "governance_vote" |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | Voter |
| Data | 2 | i128 | Vote (1 = approve, 0 = reject) |
Emitted when a governor delegates voting power.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "governance_delegate" |
| Data | 0 | u64 | (unused) |
| Data | 1 | Address | Governor delegating |
| Data | 2 | i128 | (unused) |
Emitted when a slash proposal passes and is executed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "slash_proposal_executed" |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | Proposer |
| Data | 2 | i128 | Slash amount |
Emitted when a slash proposal fails to pass.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "slash_proposal_rejected" |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | Proposer |
| Data | 2 | i128 | Slash amount |
Emitted when evidence is submitted for a slash proposal.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "evidence_submitted" |
| Topics | 1 | u64 | Evidence ID (indexed) |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | Submitter |
| Data | 2 | String | Evidence hash |
Emitted when a reward is queued for a user.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "claim_added" |
| Topics | 1 | Address | User |
| Data | 0 | ClaimType | Claim type |
| Data | 1 | i128 | Claim amount |
| Data | 2 | u64 | Source ID |
Emitted when a user pulls their pending rewards.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "claims_processed" |
| Topics | 1 | Address | User |
| Data | 0 | u32 | Number of claims processed |
| Data | 1 | i128 | Total amount claimed |
| Data | 2 | Vec | Types of claims processed |
Emitted when expired claims are cleaned up.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "claims_expired" |
| Topics | 1 | Address | User |
| Data | 0 | u32 | Number of expired claims |
| Data | 1 | i128 | Total expired amount |
Emitted when a bond creation fee is collected.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_creation_fee" |
| Data | 0 | Address | Identity owner |
| Data | 1 | i128 | Bond amount |
| Data | 2 | i128 | Fee amount |
| Data | 3 | Address | Treasury |
Emitted when early exit configuration is set.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "early_exit_config_set" |
| Data | 0 | Address | Treasury |
| Data | 1 | u32 | Penalty basis points |
Emitted when an early exit penalty is applied.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "early_exit_penalty" |
| Data | 0 | Address | Identity owner |
| Data | 1 | i128 | Withdrawal amount |
| Data | 2 | i128 | Penalty amount |
| Data | 3 | Address | Treasury |
Emitted when a cooldown withdrawal is requested.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "cooldown_requested" |
| Data | 0 | Address | Requester |
| Data | 1 | i128 | Requested amount |
Emitted when a cooldown withdrawal is executed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "cooldown_executed" |
| Data | 0 | Address | Requester |
| Data | 1 | i128 | Executed amount |
Emitted when a cooldown withdrawal is cancelled.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "cooldown_cancelled" |
| Data | 0 | Address | Requester |
Emitted when the cooldown period is updated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "cooldown_period_updated" |
| Data | 0 | u64 | Old period |
| Data | 1 | u64 | New period |
Emitted when emergency mode is toggled.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "emergency_mode_changed" |
| Data | 0 | bool | Enabled flag |
| Data | 1 | Address | Admin |
| Data | 2 | Address | Governance approver |
| Data | 3 | Symbol | Reason |
Emitted when an emergency withdrawal is executed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "emergency_withdrawal" |
| Topics | 1 | u64 | Record ID (indexed) |
| Topics | 2 | Address | Identity owner (indexed) |
| Data | 0 | i128 | Gross amount |
| Data | 1 | i128 | Fee amount |
| Data | 2 | i128 | Net amount |
| Data | 3 | Symbol | Reason |
Emitted when verifier configuration is updated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_config_updated" |
| Data | 0 | i128 | New minimum stake |
Emitted when a new verifier is registered.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_registered" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | Symbol | Kind ("new" or "legacy") |
| Data | 1 | i128 | Stake deposited |
| Data | 2 | i128 | Total stake |
| Data | 3 | i128 | Minimum stake |
Emitted when an inactive verifier is reactivated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_reactivated" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | Symbol | Kind ("reactivated") |
| Data | 1 | i128 | Stake deposited |
| Data | 2 | i128 | Total stake |
| Data | 3 | i128 | Minimum stake |
Emitted when an active verifier tops up their stake.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_stake_deposited" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | Symbol | Kind ("top_up") |
| Data | 1 | i128 | Stake deposited |
| Data | 2 | i128 | Total stake |
| Data | 3 | i128 | Minimum stake |
Emitted when a verifier is deactivated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_deactivated" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | Symbol | Reason |
| Data | 1 | u64 | Timestamp |
| Data | 2 | i128 | Stake |
Emitted when a deactivated verifier withdraws stake.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_stake_withdrawn" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | i128 | Withdrawn amount |
| Data | 1 | i128 | Remaining stake |
Emitted when a verifier's reputation changes.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_reputation_updated" |
| Topics | 1 | Address | Verifier address (indexed) |
| Data | 0 | i128 | Reputation delta |
| Data | 1 | i128 | New reputation |
| Data | 2 | u32 | Attestations issued |
| Data | 3 | u32 | Attestations revoked |
| Data | 4 | Symbol | Reason |
Emitted when a protocol parameter is updated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "param_updated" |
| Topics | 1 | Symbol | Parameter key |
| Topics | 2 | Symbol | Category |
| Topics | 3 | Address | Admin |
| Data | 0 | i128 | Old value |
| Data | 1 | i128 | New value |
Emitted when upgrade auth is initialized.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_auth_init" |
| Topics | 1 | Address | Admin |
| Data | - | - | Empty |
Emitted when upgrade auth is granted.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_auth_granted" |
| Topics | 1 | Address | Admin |
| Data | 0 | Address | Grantee |
| Data | 1 | UpgradeRole | Role |
Emitted when upgrade auth is revoked.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_auth_revoked" |
| Topics | 1 | Address | Admin |
| Data | 0 | Address | Revokee |
Emitted when an upgrade is proposed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_proposed" |
| Topics | 1 | Address | Proposer |
| Data | 0 | u64 | Proposal ID |
| Data | 1 | Address | New implementation |
Emitted when an upgrade proposal is approved.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_approved" |
| Topics | 1 | Address | Approver |
| Data | 0 | u64 | Proposal ID |
Emitted when an upgrade is executed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_executed" |
| Topics | 1 | Address | Executor |
| Data | 0 | Address | New implementation |
| Data | 1 | Option | Proposal ID |
Emitted when an admin transfer is initiated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "admin_transfer_started" |
| Topics | 1 | Address | Current admin |
| Data | 0 | Address | Pending admin |
Emitted when an admin transfer is completed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "admin_transfer_completed" |
| Topics | 1 | Address | Old admin |
| Data | 0 | Address | New admin |
Emitted when an upgrade admin transfer is initiated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_admin_transfer_started" |
| Topics | 1 | Address | Current admin |
| Data | 0 | Address | Pending admin |
Emitted when an upgrade admin transfer is completed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "upgrade_admin_transfer_completed" |
| Topics | 1 | Address | Old admin |
| Data | 0 | Address | New admin |
Emitted when inconsistent bond or attestation state is detected.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "bond_drift_detected" |
| Topics | 1 | Address | Subject identity |
| Data | 0 | BondDriftKind | Kind of drift |
| Data | 1 | i128 | Bonded amount |
| Data | 2 | i128 | Slashed amount |
| Data | 3 | u32 | Subject attestation count |
| Data | 4 | u32 | Subject attestation list length |
Delegation contract that handles delegated actions and signature verification.
Emitted when a new delegation is created.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "delegation_created" |
| Data | 0 | Delegation | Full delegation state |
Emitted when a delegation is revoked.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "delegation_revoked" |
| Data | 0 | Delegation | Updated delegation state with revoked flag |
Emitted when an expired delegation is cleaned up.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "delegation_cleaned" |
| Topics | 1 | Address | Delegation owner |
| Topics | 2 | Address | Delegate |
| Data | 0 | DelegationType | Type of delegation |
Emitted when a range of nonces is invalidated for replay protection.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "nonce_invalidated" |
| Topics | 1 | Address | Identity |
| Data | 0 | u64 | From nonce (inclusive) |
| Data | 1 | u64 | To nonce (exclusive) |
Emitted when a signature verifier is registered.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier" |
| Topics | 1 | Symbol | "registered" |
| Data | 0 | VerifierRegisteredEvent | Event payload |
Emitted when a signature verifier is registered (alternative format).
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "verifier_registered" |
| Topics | 1 | u32 | Scheme tag (0=Ed25519, 1=Secp256r1, 2=MLDSA44) |
| Data | 0 | Address | Verifier contract address |
Emitted when a pause signer is added or removed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "pause_signer_set" |
| Topics | 1 | Address | Signer address |
| Data | 0 | bool | Enabled flag |
Emitted when the pause approval threshold is updated.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "pause_threshold_set" |
| Data | 0 | u32 | New threshold |
Emitted when a pause proposal is executed.
| Component | Position | Type | Description |
|---|---|---|---|
| Topics | 0 | Symbol | "paused" |
| Data | 0 | u64 | Proposal ID |
- All events for an identity: Filter
topics[1] == identityacross all relevant event names. - Large bonds created: Filter
bond_created_v2wheretopics[2] >= threshold. - Recent activity: Filter any
*_v2event where the timestamp topic is within range. - Admin accountability: Filter
bond_slashed_v2wheretopics[5] == admin_address. - Governance audit trail: Collect
slash_proposed→governance_vote→slash_proposal_executed/slash_proposal_rejectedgrouped bydata[0](proposal ID). - Verifier reputation changes: Filter
verifier_reputation_updatedbytopics[1](verifier address) to track reputation history.
- All delegations for an owner: Filter
delegation_createdanddelegation_revokedevents and replay to get current state. - Nonce invalidation history: Filter
nonce_invalidatedbytopics[1](identity) to track replay protection ranges. - Pause operations audit: Track
pause_signer_set,pause_threshold_set, andpausedevents to monitor contract pause activity.