Skip to content

Transaction

Transactions in the Concordium blockchain can be any of the following three:

  1. Account Creation
  2. Account Transaction
  3. Update

Account Creation

Whenever a user uses one of the various Concordium Wallets to create a new account, an account_creation transaction is added to a block.

Details of an account creation. These transactions are free, and we only ever get a response for them if the account is created, hence no failure cases.

GRPC documentation: concordium.v2.AccountCreationDetails

Attributes:

Name Type Description
credential_type CredentialType

Whether this is an initial or normal account.

address CCD_AccountAddress

Address of the newly created account.

reg_id CCD_CredentialRegistrationId

Credential registration ID of the first credential.

Source code in .venv/lib/python3.13/site-packages/ccdexplorer/grpc_client/CCD_Types/__init__.py
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
class CCD_AccountCreationDetails(BaseModel):
    """Details of an account creation. These transactions are free, and we only ever get a response for them if the account is created, hence no failure cases.

    GRPC documentation: [concordium.v2.AccountCreationDetails](https://docs.concordium.com/concordium-grpc-api/#concordium.v2.AccountCreationDetails)

    Attributes:
        credential_type (CredentialType): Whether this is an initial or normal account.
        address (CCD_AccountAddress): Address of the newly created account.
        reg_id (CCD_CredentialRegistrationId): Credential registration ID of the first credential.
    """

    credential_type: int
    address: CCD_AccountAddress
    reg_id: CCD_CredentialRegistrationId

Account Transaction

These are user initiated transactions and paid for by the sender. Account transactions can have the following types:

Effects of an account transaction. All variants except None correspond to a unique transaction that was successful.

GRPC documentation: concordium.v2.AccountTransactionEffects

Attributes:

Name Type Description
none Optional[CCD_AccountTransactionEffects_None]

No effects other than payment from this transaction.

module_deployed Optional[CCD_ModuleRef]

A smart contract module with the attached reference was deployed.

contract_initialized Optional[CCD_ContractInitializedEvent]

A smart contract was initialized.

contract_update_issued Optional[CCD_ContractUpdateIssued]

A smart contract instance update was issued.

account_transfer Optional[CCD_AccountTransfer]

A simple account to account transfer occurred.

baker_added Optional[CCD_BakerAdded]

A validator was added.

baker_removed Optional[CCD_BakerId]

A validator was removed.

baker_stake_updated Optional[CCD_BakerStakeUpdated]

A validator's stake was updated.

baker_restake_earnings_updated Optional[CCD_BakerEvent_BakerRestakeEarningsUpdated]

A validator's restake earnings setting was updated.

baker_keys_updated Optional[CCD_BakerKeysEvent]

A validator's keys were updated.

encrypted_amount_transferred Optional[CCD_AccountTransactionEffects_EncryptedAmountTransferred]

An encrypted amount was transferred.

transferred_to_encrypted Optional[CCD_EncryptedSelfAmountAddedEvent]

An account transferred part of its public balance to its encrypted balance.

transferred_to_public Optional[CCD_AccountTransactionEffects_TransferredToPublic]

An account transferred part of its encrypted balance to its public balance.

transferred_with_schedule Optional[CCD_TransferredWithSchedule]

A transfer with a release schedule was made.

credential_keys_updated Optional[CCD_CredentialRegistrationId]

Keys of a specific credential were updated.

credentials_updated Optional[CCD_AccountTransactionEffects_CredentialsUpdated]

Account credentials were updated.

data_registered Optional[CCD_RegisteredData]

Some data was registered on the chain.

baker_configured Optional[CCD_BakerConfigured]

A validator was configured.

delegation_configured Optional[CCD_DelegationConfigured]

A delegator was configured.

Source code in .venv/lib/python3.13/site-packages/ccdexplorer/grpc_client/CCD_Types/__init__.py
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
class CCD_AccountTransactionEffects(BaseModel):
    """Effects of an account transaction. All variants except `None` correspond to a unique transaction that was successful.

    GRPC documentation: [concordium.v2.AccountTransactionEffects](https://docs.concordium.com/concordium-grpc-api/#concordium.v2.AccountTransactionEffects)

    Attributes:
        none (Optional[CCD_AccountTransactionEffects_None]): No effects other than payment from this transaction.
        module_deployed (Optional[CCD_ModuleRef]): A smart contract module with the attached reference was deployed.
        contract_initialized (Optional[CCD_ContractInitializedEvent]): A smart contract was initialized.
        contract_update_issued (Optional[CCD_ContractUpdateIssued]): A smart contract instance update was issued.
        account_transfer (Optional[CCD_AccountTransfer]): A simple account to account transfer occurred.
        baker_added (Optional[CCD_BakerAdded]): A validator was added.
        baker_removed (Optional[CCD_BakerId]): A validator was removed.
        baker_stake_updated (Optional[CCD_BakerStakeUpdated]): A validator's stake was updated.
        baker_restake_earnings_updated (Optional[CCD_BakerEvent_BakerRestakeEarningsUpdated]): A validator's restake earnings setting was updated.
        baker_keys_updated (Optional[CCD_BakerKeysEvent]): A validator's keys were updated.
        encrypted_amount_transferred (Optional[CCD_AccountTransactionEffects_EncryptedAmountTransferred]): An encrypted amount was transferred.
        transferred_to_encrypted (Optional[CCD_EncryptedSelfAmountAddedEvent]): An account transferred part of its public balance to its encrypted balance.
        transferred_to_public (Optional[CCD_AccountTransactionEffects_TransferredToPublic]): An account transferred part of its encrypted balance to its public balance.
        transferred_with_schedule (Optional[CCD_TransferredWithSchedule]): A transfer with a release schedule was made.
        credential_keys_updated (Optional[CCD_CredentialRegistrationId]): Keys of a specific credential were updated.
        credentials_updated (Optional[CCD_AccountTransactionEffects_CredentialsUpdated]): Account credentials were updated.
        data_registered (Optional[CCD_RegisteredData]): Some data was registered on the chain.
        baker_configured (Optional[CCD_BakerConfigured]): A validator was configured.
        delegation_configured (Optional[CCD_DelegationConfigured]): A delegator was configured.
    """

    none: Optional[CCD_AccountTransactionEffects_None] = None
    module_deployed: Optional[CCD_ModuleRef] = None
    contract_initialized: Optional[CCD_ContractInitializedEvent] = None
    contract_update_issued: Optional[CCD_ContractUpdateIssued] = None
    account_transfer: Optional[CCD_AccountTransfer] = None
    baker_added: Optional[CCD_BakerAdded] = None
    baker_removed: Optional[CCD_BakerId] = None
    baker_stake_updated: Optional[CCD_BakerStakeUpdated] = None
    baker_restake_earnings_updated: Optional[CCD_BakerEvent_BakerRestakeEarningsUpdated] = None
    baker_keys_updated: Optional[CCD_BakerKeysEvent] = None
    encrypted_amount_transferred: Optional[
        CCD_AccountTransactionEffects_EncryptedAmountTransferred
    ] = None
    transferred_to_encrypted: Optional[CCD_EncryptedSelfAmountAddedEvent] = None
    transferred_to_public: Optional[CCD_AccountTransactionEffects_TransferredToPublic] = None
    transferred_with_schedule: Optional[CCD_TransferredWithSchedule] = None
    credential_keys_updated: Optional[CCD_CredentialRegistrationId] = None
    credentials_updated: Optional[CCD_AccountTransactionEffects_CredentialsUpdated] = None
    data_registered: Optional[CCD_RegisteredData] = None
    baker_configured: Optional[CCD_BakerConfigured] = None
    delegation_configured: Optional[CCD_DelegationConfigured] = None
    token_update_effect: Optional[CCD_TokenEffect] = None
    meta_update_effect: Optional[CCD_MetaEffect] = None

Note that for account transactions, we add a recognized_sender_id whenever the sender or invoked contract matches an entry in projects.json.
The lookup happens inside ms_indexers so every document in the transactions collection carries a project_id tag when possible.

Update

Update transactions are performed by the chain itself. The following payloads are possible:

The payload of a chain update.

GRPC documentation: concordium.v2.UpdatePayload

Attributes:

Name Type Description
protocol_update Optional[CCD_ProtocolUpdate]

The protocol version was updated.

election_difficulty_update Optional[CCD_ElectionDifficulty]

The election difficulty was updated.

euro_per_energy_update Optional[CCD_ExchangeRate]

The euro per energy exchange rate was updated.

micro_ccd_per_euro_update Optional[CCD_ExchangeRate]

The microCCD per euro exchange rate was updated.

foundation_account_update Optional[CCD_AccountAddress]

The foundation account address was updated.

mint_distribution_update Optional[CCD_MintDistributionCpv0]

The mint distribution was updated (protocol version 1-3).

transaction_fee_distribution_update Optional[CCD_TransactionFeeDistribution]

The transaction fee distribution was updated.

gas_rewards_update Optional[CCD_GasRewards]

The gas rewards were updated (protocol version 1-5).

baker_stake_threshold_update Optional[CCD_BakerStakeThreshold]

The minimum amount of CCD needed to become a validator was updated.

root_update Optional[CCD_RootUpdate]

The root keys were updated.

level_1_update Optional[CCD_Level1Update]

The level 1 keys were updated.

add_anonymity_revoker_update Optional[CCD_ArInfo]

An anonymity revoker was added.

add_identity_provider_update Optional[CCD_IpInfo]

An identity provider was added.

cooldown_parameters_cpv_1_update Optional[CCD_CooldownParametersCpv1]

The cooldown parameters were updated.

pool_parameters_cpv_1_update Optional[CCD_PoolParametersCpv1]

The pool parameters were updated.

time_parameters_cpv_1_update Optional[CCD_TimeParametersCpv1]

The time parameters were updated.

mint_distribution_cpv_1_update Optional[CCD_MintDistributionCpv1]

The mint distribution was updated (protocol version 4+).

gas_rewards_cpv_2_update Optional[CCD_GasRewardsCpv2]

The gas rewards were updated (protocol version 6+).

timeout_parameters_update Optional[CCD_TimeoutParameters]

The consensus timeouts were updated.

min_block_time_update Optional[CCD_Duration]

The minimum time between blocks was updated.

block_energy_limit_update Optional[CCD_Energy]

The block energy limit was updated.

finalization_committee_parameters_update Optional[CCD_FinalizationCommitteeParameters]

The finalization committee parameters were updated.

validator_score_parameters_update Optional[CCD_ValidatorScoreParameters]

The validator score parameters were updated.

Source code in .venv/lib/python3.13/site-packages/ccdexplorer/grpc_client/CCD_Types/__init__.py
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
class CCD_UpdatePayload(BaseModel):
    """The payload of a chain update.

    GRPC documentation: [concordium.v2.UpdatePayload](https://docs.concordium.com/concordium-grpc-api/#concordium.v2.UpdatePayload)

    Attributes:
        protocol_update (Optional[CCD_ProtocolUpdate]): The protocol version was updated.
        election_difficulty_update (Optional[CCD_ElectionDifficulty]): The election difficulty was updated.
        euro_per_energy_update (Optional[CCD_ExchangeRate]): The euro per energy exchange rate was updated.
        micro_ccd_per_euro_update (Optional[CCD_ExchangeRate]): The microCCD per euro exchange rate was updated.
        foundation_account_update (Optional[CCD_AccountAddress]): The foundation account address was updated.
        mint_distribution_update (Optional[CCD_MintDistributionCpv0]): The mint distribution was updated (protocol version 1-3).
        transaction_fee_distribution_update (Optional[CCD_TransactionFeeDistribution]): The transaction fee distribution was updated.
        gas_rewards_update (Optional[CCD_GasRewards]): The gas rewards were updated (protocol version 1-5).
        baker_stake_threshold_update (Optional[CCD_BakerStakeThreshold]): The minimum amount of CCD needed to become a validator was updated.
        root_update (Optional[CCD_RootUpdate]): The root keys were updated.
        level_1_update (Optional[CCD_Level1Update]): The level 1 keys were updated.
        add_anonymity_revoker_update (Optional[CCD_ArInfo]): An anonymity revoker was added.
        add_identity_provider_update (Optional[CCD_IpInfo]): An identity provider was added.
        cooldown_parameters_cpv_1_update (Optional[CCD_CooldownParametersCpv1]): The cooldown parameters were updated.
        pool_parameters_cpv_1_update (Optional[CCD_PoolParametersCpv1]): The pool parameters were updated.
        time_parameters_cpv_1_update (Optional[CCD_TimeParametersCpv1]): The time parameters were updated.
        mint_distribution_cpv_1_update (Optional[CCD_MintDistributionCpv1]): The mint distribution was updated (protocol version 4+).
        gas_rewards_cpv_2_update (Optional[CCD_GasRewardsCpv2]): The gas rewards were updated (protocol version 6+).
        timeout_parameters_update (Optional[CCD_TimeoutParameters]): The consensus timeouts were updated.
        min_block_time_update (Optional[CCD_Duration]): The minimum time between blocks was updated.
        block_energy_limit_update (Optional[CCD_Energy]): The block energy limit was updated.
        finalization_committee_parameters_update (Optional[CCD_FinalizationCommitteeParameters]): The finalization committee parameters were updated.
        validator_score_parameters_update (Optional[CCD_ValidatorScoreParameters]): The validator score parameters were updated.
    """

    protocol_update: Optional[CCD_ProtocolUpdate] = None
    election_difficulty_update: Optional[CCD_ElectionDifficulty] = None
    euro_per_energy_update: Optional[CCD_ExchangeRate] = None
    micro_ccd_per_euro_update: Optional[CCD_ExchangeRate] = None
    foundation_account_update: Optional[CCD_AccountAddress] = None
    mint_distribution_update: Optional[CCD_MintDistributionCpv0] = None
    transaction_fee_distribution_update: Optional[CCD_TransactionFeeDistribution] = None
    baker_stake_threshold_update: Optional[CCD_BakerStakeThreshold] = None
    root_update: Optional[CCD_RootUpdate] = None
    level_1_update: Optional[CCD_Level1Update] = None
    add_anonymity_revoker_update: Optional[CCD_ArInfo] = None
    add_identity_provider_update: Optional[CCD_IpInfo] = None
    cooldown_parameters_cpv_1_update: Optional[CCD_CooldownParametersCpv1] = None
    pool_parameters_cpv_1_update: Optional[CCD_PoolParametersCpv1] = None
    time_parameters_cpv_1_update: Optional[CCD_TimeParametersCpv1] = None
    mint_distribution_cpv_1_update: Optional[CCD_MintDistributionCpv1] = None
    finalization_committee_parameters_update: Optional[CCD_FinalizationCommitteeParameters] = None
    validator_score_parameters_update: Optional[CCD_ValidatorScoreParameters] = None
    create_plt_update: Optional[CCD_CreatePLT] = None

Augmentations performed by CCDExplorer

  • ms_events_and_impacts adds impacted_addresses, including canonical address references for alias-safe queries.
  • ms_indexers fans out transactions into specialized collections (transactions_transfer, transactions_contracts, etc.) for fast explorer lookups.
  • ms_token_accounting reads logged_events emitted by contract_update_issued transactions to update token ledgers.

How is a transaction stored in the system?

heartbeat ingests each block’s transactions and writes them to MongoDB; follow-up workers (listed above) enrich the base documents with project IDs, alias-friendly fields, and derived statistics.***