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
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
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
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
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
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
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.***