Transaction
Transactions in the Concordium blockchain can be any of the following three:
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 | |
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 | |
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 | |
Augmentations performed by CCDExplorer¶
ms_events_and_impactsaddsimpacted_addresses, including canonical address references for alias-safe queries.ms_indexersfans out transactions into specialized collections (transactions_transfer,transactions_contracts, etc.) for fast explorer lookups.ms_token_accountingreadslogged_eventsemitted bycontract_update_issuedtransactions 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.***