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
2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 | |
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 | |
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 | |
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.***