diff --git a/.qoder/docs/block-log-reader.js b/.qoder/docs/block-log-reader.js index fe8ca98b5b..510e0d85a1 100644 --- a/.qoder/docs/block-log-reader.js +++ b/.qoder/docs/block-log-reader.js @@ -9,6 +9,7 @@ const fs = require('fs'); const path = require('path'); +const crypto = require('crypto'); // ============================================================================ // Constants @@ -23,9 +24,13 @@ const CONSTANTS = { HASH_SIZE_SHA256: 32, // SHA-256 hash size NPOS: BigInt('0xFFFFFFFFFFFFFFFF'), // Invalid position marker - // Asset symbols - TOKEN_SYMBOL: BigInt('0x0000000000000003'), - SHARES_SYMBOL: BigInt('0x0000000000000004') + CHAIN_ADDRESS_PREFIX: 'VIZ', // Public key base58 prefix + + // Asset symbols (Steem-style: byte 0 = decimals, bytes 1-6 = ASCII name, byte 7 = 0x00) + // From config.hpp: SHARES_SYMBOL = 6|('S'<<8)|('H'<<16)|('A'<<24)|('R'<<32)|('E'<<40)|('S'<<48) + // TOKEN_SYMBOL = 3|('V'<<8)|('I'<<16)|('Z'<<24) + TOKEN_SYMBOL: BigInt('0x000000005A495603'), + SHARES_SYMBOL: BigInt('0x0053455241485306') }; // Operation type IDs mapping @@ -208,9 +213,14 @@ class BinaryReader { /** * Read fc::raw serialized vector of items using provided reader function + * @param {Function} itemReader - Function to read each item + * @param {number} [maxItems=100000] - Safety cap to prevent OOM from corrupted data */ - readVector(itemReader) { + readVector(itemReader, maxItems = 100000) { const count = Number(this.readVarint()); + if (count > maxItems) { + throw new Error(`readVector: count ${count} exceeds safety cap ${maxItems} (offset ${this.offset})`); + } const items = []; for (let i = 0; i < count; i++) { @@ -298,8 +308,43 @@ function readTimePointSec(reader) { return new Date(timestamp * 1000); } +/** + * Read block_header_extension (static_variant) + * + * Type 0: void_t — empty struct, no serialized data + * Type 1: version — uint32_t v_num (major.hardfork.release packed as 8.8.16 bits) + * Type 2: hardfork_version_vote — hardfork_version (uint32_t) + time_point_sec (uint32_t) + */ +function readBlockHeaderExtension(reader) { + const typeIndex = Number(reader.readVarint()); + switch (typeIndex) { + case 0: return { typeIndex, name: 'void_t', data: {} }; + case 1: { + const vNum = reader.readUint32LE(); + const major = (vNum >> 24) & 0xFF; + const hardfork = (vNum >> 16) & 0xFF; + const release = vNum & 0xFFFF; + return { typeIndex, name: 'version', data: { v_num: vNum, version: `${major}.${hardfork}.${release}` } }; + } + case 2: { + const vNum = reader.readUint32LE(); + const major = (vNum >> 24) & 0xFF; + const hardfork = (vNum >> 16) & 0xFF; + const hfTime = readTimePointSec(reader); + return { typeIndex, name: 'hardfork_version_vote', data: { hf_version: `${major}.${hardfork}.0`, hf_time: hfTime } }; + } + default: + // Unknown extension type — can't skip without schema, deserialization will likely fail + return { typeIndex, name: 'unknown_extension', data: { _warning: 'unknown extension type, stream may be corrupted' } }; + } +} + /** * Read block_header + * + * Note (Steem/VIZ lineage): block_id_type and checksum_type are fc::ripemd160 (20 bytes), + * NOT fc::sha256 (32 bytes). This is an inherited design from the Steem codebase where + * block IDs and merkle roots use the shorter ripemd160 hash. */ function readBlockHeader(reader) { return { @@ -307,15 +352,7 @@ function readBlockHeader(reader) { timestamp: readTimePointSec(reader), witness: reader.readString(), transaction_merkle_root: readRipemd160(reader), - extensions: reader.readVector(() => { - // Block header extensions are static variants - // For simplicity, return raw bytes - const typeIndex = Number(reader.readVarint()); - // Read extension content based on type - // Most common extensions have known sizes - // For now, we'll need to know extension types - return { typeIndex }; - }) + extensions: reader.readVector(readBlockHeaderExtension) }; } @@ -334,23 +371,82 @@ function readSignedBlockHeader(reader) { // Common Types for Operations // ============================================================================ +/** + * Decode Steem-style asset symbol from uint64. + * Format (from asset.cpp comments): + * byte 0 : decimals (precision) + * bytes 1-6 : ASCII symbol name + * byte 7 : 0x00 (null terminator) + */ +function decodeAssetSymbol(symbol) { + // Read as 8-byte buffer (little-endian uint64) + const buf = Buffer.alloc(8); + buf.writeBigUInt64LE(BigInt(symbol), 0); + + const decimals = buf.readUInt8(0); + let name = ''; + for (let i = 1; i < 7; i++) { + const c = buf.readUInt8(i); + if (c === 0) break; + name += String.fromCharCode(c); + } + return { decimals, name }; +} + /** * Read asset (int64 amount + uint64 symbol) + * + * Asset symbol format inherited from Steem codebase: + * byte 0 = decimal precision, bytes 1-6 = ASCII name, byte 7 = null */ function readAsset(reader) { const amount = reader.readInt64LE(); const symbol = reader.readUint64LE(); - let symbolName = 'UNKNOWN'; - if (symbol === CONSTANTS.TOKEN_SYMBOL) symbolName = 'VIZ'; - else if (symbol === CONSTANTS.SHARES_SYMBOL) symbolName = 'SHARES'; - return { amount: Number(amount), symbol: symbolName, rawSymbol: symbol }; + const decoded = decodeAssetSymbol(symbol); + return { amount: Number(amount), symbol: decoded.name, decimals: decoded.decimals }; +} + +/** + * Base58 encode (Bitcoin alphabet). + * Encodes a Buffer to a base58 string. + */ +const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; +function base58Encode(buf) { + let num = BigInt('0x' + buf.toString('hex')); + let result = ''; + while (num > 0n) { + result = BASE58_ALPHABET[Number(num % 58n)] + result; + num = num / 58n; + } + // Leading zero bytes -> leading '1' chars + for (let i = 0; i < buf.length && buf[i] === 0; i++) { + result = '1' + result; + } + return result; } /** - * Read public_key_type (33 bytes compressed) + * Convert raw 33-byte compressed public key to "VIZ..." address string. + * Mirrors C++ public_key_type::operator std::string(): + * 1. Compute ripemd160 of the 33 raw bytes + * 2. Take first 4 bytes of the hash as checksum + * 3. Pack: [33 bytes key data][4 bytes checksum LE] = 37 bytes + * 4. Base58 encode and prepend "VIZ" prefix + */ +function publicKeyToString(keyBytes) { + const checksum = crypto.createHash('ripemd160').update(keyBytes).digest(); + const packed = Buffer.alloc(37); + keyBytes.copy(packed, 0); // 33 bytes key data + checksum.copy(packed, 33, 0, 4); // 4 bytes checksum + return CONSTANTS.CHAIN_ADDRESS_PREFIX + base58Encode(packed); +} + +/** + * Read public_key_type (33 bytes compressed) as "VIZ..." string */ function readPublicKey(reader) { - return reader.readBytes(33); + const keyBytes = reader.readBytes(33); + return publicKeyToString(keyBytes); } /** @@ -532,20 +628,848 @@ function readWithdrawVestingOperation(reader) { }; } +// ============================================================================ +// Missing operation readers — must advance reader past all fields correctly +// to prevent stream corruption. Field order from FC_REFLECT in C++ source. +// ============================================================================ + +/** + * Read vote_operation (ID: 0) - deprecated but still in blocks + * Fields: voter, author, permlink, weight + */ +function readVoteOperation(reader) { + return { + voter: readAccountName(reader), + author: readAccountName(reader), + permlink: reader.readString(), + weight: reader.readUint16LE() | 0 + }; +} + +/** + * Read content_operation (ID: 1) - deprecated + * Fields: parent_author, parent_permlink, author, permlink, title, body, curation_percent, json_metadata, extensions + */ +function readContentOperation(reader) { + return { + parent_author: readAccountName(reader), + parent_permlink: reader.readString(), + author: readAccountName(reader), + permlink: reader.readString(), + title: reader.readString(), + body: reader.readString(), + curation_percent: reader.readUint16LE(), + json_metadata: reader.readString(), + extensions: reader.readVector(readContentExtension) + }; +} + +/** + * Read content_extension (static_variant for content_operation extensions) + */ +function readContentExtension(reader) { + const typeIndex = Number(reader.readVarint()); + switch (typeIndex) { + case 0: { + // content_payout_beneficiaries + const beneficiaries = reader.readVector(readBeneficiaryRoute); + return { typeIndex, name: 'content_payout_beneficiaries', data: { beneficiaries } }; + } + default: + return { typeIndex, name: 'unknown_content_extension', data: {} }; + } +} + +/** + * Read account_witness_vote_operation (ID: 7) + * Fields: account, witness, approve + */ +function readAccountWitnessVoteOperation(reader) { + return { + account: readAccountName(reader), + witness: readAccountName(reader), + approve: reader.readUint8() !== 0 + }; +} + +/** + * Read account_witness_proxy_operation (ID: 8) + * Fields: account, proxy + */ +function readAccountWitnessProxyOperation(reader) { + return { + account: readAccountName(reader), + proxy: readAccountName(reader) + }; +} + +/** + * Read delete_content_operation (ID: 9) - deprecated + * Fields: author, permlink + */ +function readDeleteContentOperation(reader) { + return { + author: readAccountName(reader), + permlink: reader.readString() + }; +} + +/** + * Read set_withdraw_vesting_route_operation (ID: 11) + * Fields: from_account, to_account, percent, auto_vest + */ +function readSetWithdrawVestingRouteOperation(reader) { + return { + from_account: readAccountName(reader), + to_account: readAccountName(reader), + percent: reader.readUint16LE(), + auto_vest: reader.readUint8() !== 0 + }; +} + +/** + * Read request_account_recovery_operation (ID: 12) + * Fields: recovery_account, account_to_recover, new_master_authority, extensions + */ +function readRequestAccountRecoveryOperation(reader) { + return { + recovery_account: readAccountName(reader), + account_to_recover: readAccountName(reader), + new_master_authority: readAuthority(reader), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read recover_account_operation (ID: 13) + * Fields: account_to_recover, new_master_authority, recent_master_authority, extensions + */ +function readRecoverAccountOperation(reader) { + return { + account_to_recover: readAccountName(reader), + new_master_authority: readAuthority(reader), + recent_master_authority: readAuthority(reader), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read change_recovery_account_operation (ID: 14) + * Fields: account_to_recover, new_recovery_account, extensions + */ +function readChangeRecoveryAccountOperation(reader) { + return { + account_to_recover: readAccountName(reader), + new_recovery_account: readAccountName(reader), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read escrow_transfer_operation (ID: 15) + * Fields: from, to, token_amount, escrow_id, agent, fee, json_metadata, ratification_deadline, escrow_expiration + */ +function readEscrowTransferOperation(reader) { + return { + from: readAccountName(reader), + to: readAccountName(reader), + token_amount: readAsset(reader), + escrow_id: reader.readUint32LE(), + agent: readAccountName(reader), + fee: readAsset(reader), + json_metadata: reader.readString(), + ratification_deadline: readTimePointSec(reader), + escrow_expiration: readTimePointSec(reader) + }; +} + +/** + * Read escrow_dispute_operation (ID: 16) + * Fields: from, to, agent, who, escrow_id + */ +function readEscrowDisputeOperation(reader) { + return { + from: readAccountName(reader), + to: readAccountName(reader), + agent: readAccountName(reader), + who: readAccountName(reader), + escrow_id: reader.readUint32LE() + }; +} + +/** + * Read escrow_release_operation (ID: 17) + * Fields: from, to, agent, who, receiver, escrow_id, token_amount + */ +function readEscrowReleaseOperation(reader) { + return { + from: readAccountName(reader), + to: readAccountName(reader), + agent: readAccountName(reader), + who: readAccountName(reader), + receiver: readAccountName(reader), + escrow_id: reader.readUint32LE(), + token_amount: readAsset(reader) + }; +} + +/** + * Read escrow_approve_operation (ID: 18) + * Fields: from, to, agent, who, escrow_id, approve + */ +function readEscrowApproveOperation(reader) { + return { + from: readAccountName(reader), + to: readAccountName(reader), + agent: readAccountName(reader), + who: readAccountName(reader), + escrow_id: reader.readUint32LE(), + approve: reader.readUint8() !== 0 + }; +} + +/** + * Read account_metadata_operation (ID: 21) + * Fields: account, json_metadata + */ +function readAccountMetadataOperation(reader) { + return { + account: readAccountName(reader), + json_metadata: reader.readString() + }; +} + +/** + * Read proposal_create_operation (ID: 22) + * Fields: author, title, memo, expiration_time, proposed_operations, review_period_time, extensions + */ +function readProposalCreateOperation(reader) { + return { + author: readAccountName(reader), + title: reader.readString(), + memo: reader.readString(), + expiration_time: readTimePointSec(reader), + proposed_operations: reader.readVector(readOperationWrapper), + review_period_time: reader.readOptional(readTimePointSec), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read operation_wrapper (just wraps an operation) + */ +function readOperationWrapper(reader) { + return { op: readOperation(reader) }; +} + +/** + * Read proposal_update_operation (ID: 23) + * Fields: author, title, active_approvals_to_add, active_approvals_to_remove, + * master_approvals_to_add, master_approvals_to_remove, + * regular_approvals_to_add, regular_approvals_to_remove, + * key_approvals_to_add, key_approvals_to_remove, extensions + */ +function readProposalUpdateOperation(reader) { + return { + author: readAccountName(reader), + title: reader.readString(), + active_approvals_to_add: reader.readVector(readAccountName), + active_approvals_to_remove: reader.readVector(readAccountName), + master_approvals_to_add: reader.readVector(readAccountName), + master_approvals_to_remove: reader.readVector(readAccountName), + regular_approvals_to_add: reader.readVector(readAccountName), + regular_approvals_to_remove: reader.readVector(readAccountName), + key_approvals_to_add: reader.readVector(readPublicKey), + key_approvals_to_remove: reader.readVector(readPublicKey), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read proposal_delete_operation (ID: 24) + * FC_REFLECT: (author)(title)(requester)(extensions) + */ +function readProposalDeleteOperation(reader) { + return { + author: readAccountName(reader), + title: reader.readString(), + requester: readAccountName(reader), + extensions: reader.readVector(() => reader.readVarint()) + }; +} + +/** + * Read chain_properties_update_operation (ID: 25) + * Fields: owner, props + */ +function readChainPropertiesUpdateOperation(reader) { + return { + owner: readAccountName(reader), + props: readChainPropertiesInit(reader) + }; +} + +/** + * Read chain_properties_init (used by chain_properties_update_operation) + * FC_REFLECT: (account_creation_fee)(maximum_block_size)(create_account_delegation_ratio) + * (create_account_delegation_time)(min_delegation)(min_curation_percent)(max_curation_percent) + * (bandwidth_reserve_percent)(bandwidth_reserve_below)(flag_energy_additional_cost) + * (vote_accounting_min_rshares)(committee_request_approve_min_percent) + */ +function readChainPropertiesInit(reader) { + return { + account_creation_fee: readAsset(reader), + maximum_block_size: reader.readUint32LE(), + create_account_delegation_ratio: reader.readUint32LE(), + create_account_delegation_time: reader.readUint32LE(), + min_delegation: readAsset(reader), + min_curation_percent: reader.readUint16LE() | 0, + max_curation_percent: reader.readUint16LE() | 0, + bandwidth_reserve_percent: reader.readUint16LE() | 0, + bandwidth_reserve_below: readAsset(reader), + flag_energy_additional_cost: reader.readUint16LE() | 0, + vote_accounting_min_rshares: reader.readUint32LE(), + committee_request_approve_min_percent: reader.readUint16LE() | 0 + }; +} + +/** + * Read versioned_chain_properties (static_variant of chain_properties_init/hf4/hf6/hf9) + * Used by versioned_chain_properties_update_operation. + * FC_REFLECT_DERIVED means each variant includes all base fields + its own. + */ +function readVersionedChainProperties(reader) { + const typeIndex = Number(reader.readVarint()); + const init = readChainPropertiesInit(reader); + + if (typeIndex === 0) { + // chain_properties_init — no additional fields + return { _type: 'chain_properties_init', ...init }; + } + + // chain_properties_hf4 = init + 3 fields + init.inflation_witness_percent = reader.readUint16LE() | 0; + init.inflation_ratio_committee_vs_reward_fund = reader.readUint16LE() | 0; + init.inflation_recalc_period = reader.readUint32LE(); + + if (typeIndex === 1) { + return { _type: 'chain_properties_hf4', ...init }; + } + + // chain_properties_hf6 = hf4 + 3 fields + init.data_operations_cost_additional_bandwidth = reader.readUint32LE(); + init.witness_miss_penalty_percent = reader.readUint16LE() | 0; + init.witness_miss_penalty_duration = reader.readUint32LE(); + + if (typeIndex === 2) { + return { _type: 'chain_properties_hf6', ...init }; + } + + // chain_properties_hf9 = hf6 + 7 fields + init.create_invite_min_balance = readAsset(reader); + init.committee_create_request_fee = readAsset(reader); + init.create_paid_subscription_fee = readAsset(reader); + init.account_on_sale_fee = readAsset(reader); + init.subaccount_on_sale_fee = readAsset(reader); + init.witness_declaration_fee = readAsset(reader); + init.withdraw_intervals = reader.readUint16LE(); + + return { _type: 'chain_properties_hf9', ...init }; +} + +// ---- Virtual operations (ID: 27-34, 38-41, 48-49, 52-53, 57, 59, 62-63) ---- + +/** + * Read curation_reward_operation (ID: 27) - virtual + * Fields: curator, reward, content_author, content_permlink + */ +function readCurationRewardOperation(reader) { + return { + curator: readAccountName(reader), + reward: readAsset(reader), + content_author: readAccountName(reader), + content_permlink: reader.readString() + }; +} + +/** + * Read content_reward_operation (ID: 28) - virtual + * Fields: author, permlink, payout + */ +function readContentRewardOperation(reader) { + return { + author: readAccountName(reader), + permlink: reader.readString(), + payout: readAsset(reader) + }; +} + +/** + * Read fill_vesting_withdraw_operation (ID: 29) - virtual + * Fields: from_account, to_account, withdrawn, deposited + */ +function readFillVestingWithdrawOperation(reader) { + return { + from_account: readAccountName(reader), + to_account: readAccountName(reader), + withdrawn: readAsset(reader), + deposited: readAsset(reader) + }; +} + +/** + * Read shutdown_witness_operation (ID: 30) - virtual + * Fields: owner + */ +function readShutdownWitnessOperation(reader) { + return { + owner: readAccountName(reader) + }; +} + +/** + * Read hardfork_operation (ID: 31) - virtual + * Fields: hardfork_id + */ +function readHardforkOperation(reader) { + return { + hardfork_id: reader.readUint32LE() + }; +} + +/** + * Read content_payout_update_operation (ID: 32) - virtual + * Fields: author, permlink + */ +function readContentPayoutUpdateOperation(reader) { + return { + author: readAccountName(reader), + permlink: reader.readString() + }; +} + +/** + * Read content_benefactor_reward_operation (ID: 33) - virtual + * Fields: benefactor, author, permlink, reward + */ +function readContentBenefactorRewardOperation(reader) { + return { + benefactor: readAccountName(reader), + author: readAccountName(reader), + permlink: reader.readString(), + reward: readAsset(reader) + }; +} + +/** + * Read return_vesting_delegation_operation (ID: 34) - virtual + * Fields: account, vesting_shares + */ +function readReturnVestingDelegationOperation(reader) { + return { + account: readAccountName(reader), + vesting_shares: readAsset(reader) + }; +} + +/** + * Read committee_worker_create_request_operation (ID: 35) + * Fields: creator, url, worker, required_amount_min, required_amount_max, duration + */ +function readCommitteeWorkerCreateRequestOperation(reader) { + return { + creator: readAccountName(reader), + url: reader.readString(), + worker: readAccountName(reader), + required_amount_min: readAsset(reader), + required_amount_max: readAsset(reader), + duration: reader.readUint32LE() + }; +} + +/** + * Read committee_worker_cancel_request_operation (ID: 36) + * Fields: creator, request_id + */ +function readCommitteeWorkerCancelRequestOperation(reader) { + return { + creator: readAccountName(reader), + request_id: reader.readUint32LE() + }; +} + +/** + * Read committee_vote_request_operation (ID: 37) + * Fields: voter, request_id, vote_percent + */ +function readCommitteeVoteRequestOperation(reader) { + return { + voter: readAccountName(reader), + request_id: reader.readUint32LE(), + vote_percent: reader.readUint16LE() | 0 + }; +} + +/** + * Read committee_cancel_request_operation (ID: 38) - virtual + * Fields: request_id + */ +function readCommitteeCancelRequestOperation(reader) { + return { + request_id: reader.readUint32LE() + }; +} + +/** + * Read committee_approve_request_operation (ID: 39) - virtual + * Fields: request_id + */ +function readCommitteeApproveRequestOperation(reader) { + return { + request_id: reader.readUint32LE() + }; +} + +/** + * Read committee_payout_request_operation (ID: 40) - virtual + * Fields: request_id + */ +function readCommitteePayoutRequestOperation(reader) { + return { + request_id: reader.readUint32LE() + }; +} + +/** + * Read committee_pay_request_operation (ID: 41) - virtual + * Fields: worker, request_id, tokens + */ +function readCommitteePayRequestOperation(reader) { + return { + worker: readAccountName(reader), + request_id: reader.readUint32LE(), + tokens: readAsset(reader) + }; +} + +/** + * Read claim_invite_balance_operation (ID: 44) + * Fields: initiator, receiver, invite_secret + */ +function readClaimInviteBalanceOperation(reader) { + return { + initiator: readAccountName(reader), + receiver: readAccountName(reader), + invite_secret: reader.readString() // WIF-encoded private key string + }; +} + +/** + * Read invite_registration_operation (ID: 45) + * Fields: initiator, new_account_name, invite_secret, new_account_key + */ +function readInviteRegistrationOperation(reader) { + return { + initiator: readAccountName(reader), + new_account_name: readAccountName(reader), + invite_secret: reader.readString(), // WIF-encoded private key string + new_account_key: readPublicKey(reader) + }; +} + +/** + * Read versioned_chain_properties_update_operation (ID: 46) + * Fields: owner, props + */ +function readVersionedChainPropertiesUpdateOperation(reader) { + return { + owner: readAccountName(reader), + props: readVersionedChainProperties(reader) + }; +} + +/** + * Read receive_award_operation (ID: 48) - virtual + * Fields: initiator, receiver, custom_sequence, memo, shares + */ +function readReceiveAwardOperation(reader) { + return { + initiator: readAccountName(reader), + receiver: readAccountName(reader), + custom_sequence: Number(reader.readUint64LE()), + memo: reader.readString(), + shares: readAsset(reader) + }; +} + +/** + * Read benefactor_award_operation (ID: 49) - virtual + * Fields: same as award but for benefactor + */ +function readBenefactorAwardOperation(reader) { + return { + initiator: readAccountName(reader), + benefactor: readAccountName(reader), + receiver: readAccountName(reader), + custom_sequence: Number(reader.readUint64LE()), + memo: reader.readString(), + shares: readAsset(reader) + }; +} + +/** + * Read set_paid_subscription_operation (ID: 50) + * Fields: account, url, levels, amount, period + */ +function readSetPaidSubscriptionOperation(reader) { + return { + account: readAccountName(reader), + url: reader.readString(), + levels: reader.readUint16LE(), + amount: readAsset(reader), + period: reader.readUint16LE() + }; +} + +/** + * Read paid_subscribe_operation (ID: 51) + * Fields: subscriber, account, level, amount, period, auto_renewal + */ +function readPaidSubscribeOperation(reader) { + return { + subscriber: readAccountName(reader), + account: readAccountName(reader), + level: reader.readUint16LE(), + amount: readAsset(reader), + period: reader.readUint16LE(), + auto_renewal: reader.readUint8() !== 0 + }; +} + +/** + * Read paid_subscription_action_operation (ID: 52) - virtual + * FC_REFLECT: (subscriber)(account)(level)(amount)(period)(summary_duration_sec)(summary_amount) + */ +function readPaidSubscriptionActionOperation(reader) { + return { + subscriber: readAccountName(reader), + account: readAccountName(reader), + level: reader.readUint16LE(), + amount: readAsset(reader), + period: reader.readUint16LE(), + summary_duration_sec: Number(reader.readUint64LE()), + summary_amount: readAsset(reader) + }; +} + +/** + * Read cancel_paid_subscription_operation (ID: 53) - virtual + * FC_REFLECT: (subscriber)(account) + */ +function readCancelPaidSubscriptionOperation(reader) { + return { + subscriber: readAccountName(reader), + account: readAccountName(reader) + }; +} + +/** + * Read set_account_price_operation (ID: 54) + * Fields: account, account_seller, account_offer_price, account_on_sale + */ +function readSetAccountPriceOperation(reader) { + return { + account: readAccountName(reader), + account_seller: readAccountName(reader), + account_offer_price: readAsset(reader), + account_on_sale: reader.readUint8() !== 0 + }; +} + +/** + * Read set_subaccount_price_operation (ID: 55) + * Fields: account, subaccount_seller, subaccount_offer_price, subaccount_on_sale + */ +function readSetSubaccountPriceOperation(reader) { + return { + account: readAccountName(reader), + subaccount_seller: readAccountName(reader), + subaccount_offer_price: readAsset(reader), + subaccount_on_sale: reader.readUint8() !== 0 + }; +} + +/** + * Read buy_account_operation (ID: 56) + * Fields: buyer, account, account_offer_price, account_authorities_key, tokens_to_shares + */ +function readBuyAccountOperation(reader) { + return { + buyer: readAccountName(reader), + account: readAccountName(reader), + account_offer_price: readAsset(reader), + account_authorities_key: readPublicKey(reader), + tokens_to_shares: readAsset(reader) + }; +} + +/** + * Read account_sale_operation (ID: 57) - virtual + */ +function readAccountSaleOperation(reader) { + return { + account: readAccountName(reader), + price: readAsset(reader), + buyer: readAccountName(reader), + seller: readAccountName(reader) + }; +} + +/** + * Read use_invite_balance_operation (ID: 58) + * Fields: initiator, receiver, invite_secret + */ +function readUseInviteBalanceOperation(reader) { + return { + initiator: readAccountName(reader), + receiver: readAccountName(reader), + invite_secret: reader.readString() // WIF-encoded private key string + }; +} + +/** + * Read expire_escrow_ratification_operation (ID: 59) - virtual + */ +function readExpireEscrowRatificationOperation(reader) { + return { + from: readAccountName(reader), + to: readAccountName(reader), + agent: readAccountName(reader), + escrow_id: reader.readUint32LE(), + token_amount: readAsset(reader), + fee: readAsset(reader), + ratification_deadline: readTimePointSec(reader) + }; +} + +/** + * Read fixed_award_operation (ID: 60) + * Fields: initiator, receiver, reward_amount, max_energy, custom_sequence, memo, beneficiaries + */ +function readFixedAwardOperation(reader) { + return { + initiator: readAccountName(reader), + receiver: readAccountName(reader), + reward_amount: readAsset(reader), + max_energy: reader.readUint16LE(), + custom_sequence: Number(reader.readUint64LE()), + memo: reader.readString(), + beneficiaries: reader.readVector(readBeneficiaryRoute) + }; +} + +/** + * Read target_account_sale_operation (ID: 61) + * Fields: account, account_seller, target_buyer, account_offer_price, account_on_sale + */ +function readTargetAccountSaleOperation(reader) { + return { + account: readAccountName(reader), + account_seller: readAccountName(reader), + target_buyer: readAccountName(reader), + account_offer_price: readAsset(reader), + account_on_sale: reader.readUint8() !== 0 + }; +} + +/** + * Read bid_operation (ID: 62) - virtual + */ +function readBidOperation(reader) { + return { + account: readAccountName(reader), + bidder: readAccountName(reader), + bid: readAsset(reader) + }; +} + +/** + * Read outbid_operation (ID: 63) - virtual + */ +function readOutbidOperation(reader) { + return { + account: readAccountName(reader), + bidder: readAccountName(reader), + bid: readAsset(reader) + }; +} + // Operation deserializer registry const OPERATION_READERS = { + 0: readVoteOperation, + 1: readContentOperation, 2: readTransferOperation, 3: readTransferToVestingOperation, 4: readWithdrawVestingOperation, 5: readAccountUpdateOperation, 6: readWitnessUpdateOperation, + 7: readAccountWitnessVoteOperation, + 8: readAccountWitnessProxyOperation, + 9: readDeleteContentOperation, 10: readCustomOperation, + 11: readSetWithdrawVestingRouteOperation, + 12: readRequestAccountRecoveryOperation, + 13: readRecoverAccountOperation, + 14: readChangeRecoveryAccountOperation, + 15: readEscrowTransferOperation, + 16: readEscrowDisputeOperation, + 17: readEscrowReleaseOperation, + 18: readEscrowApproveOperation, 19: readDelegateVestingSharesOperation, 20: readAccountCreateOperation, + 21: readAccountMetadataOperation, + 22: readProposalCreateOperation, + 23: readProposalUpdateOperation, + 24: readProposalDeleteOperation, + 25: readChainPropertiesUpdateOperation, 26: readAuthorRewardOperation, + 27: readCurationRewardOperation, + 28: readContentRewardOperation, + 29: readFillVestingWithdrawOperation, + 30: readShutdownWitnessOperation, + 31: readHardforkOperation, + 32: readContentPayoutUpdateOperation, + 33: readContentBenefactorRewardOperation, + 34: readReturnVestingDelegationOperation, + 35: readCommitteeWorkerCreateRequestOperation, + 36: readCommitteeWorkerCancelRequestOperation, + 37: readCommitteeVoteRequestOperation, + 38: readCommitteeCancelRequestOperation, + 39: readCommitteeApproveRequestOperation, + 40: readCommitteePayoutRequestOperation, + 41: readCommitteePayRequestOperation, 42: readWitnessRewardOperation, 43: readCreateInviteOperation, - 47: readAwardOperation + 44: readClaimInviteBalanceOperation, + 45: readInviteRegistrationOperation, + 46: readVersionedChainPropertiesUpdateOperation, + 47: readAwardOperation, + 48: readReceiveAwardOperation, + 49: readBenefactorAwardOperation, + 50: readSetPaidSubscriptionOperation, + 51: readPaidSubscribeOperation, + 52: readPaidSubscriptionActionOperation, + 53: readCancelPaidSubscriptionOperation, + 54: readSetAccountPriceOperation, + 55: readSetSubaccountPriceOperation, + 56: readBuyAccountOperation, + 57: readAccountSaleOperation, + 58: readUseInviteBalanceOperation, + 59: readExpireEscrowRatificationOperation, + 60: readFixedAwardOperation, + 61: readTargetAccountSaleOperation, + 62: readBidOperation, + 63: readOutbidOperation }; /** @@ -554,16 +1478,32 @@ const OPERATION_READERS = { */ function readOperation(reader) { const typeIndex = Number(reader.readVarint()); + if (typeIndex > 1000) { + throw new Error(`readOperation: typeIndex ${typeIndex} exceeds safety cap (offset ${reader.offset})`); + } const typeInfo = OPERATION_TYPES[typeIndex] || { name: 'unknown_operation', isVirtual: false }; const opReader = OPERATION_READERS[typeIndex]; let data; + const opStartOffset = reader.offset; if (opReader) { - data = opReader(reader); + try { + data = opReader(reader); + } catch (e) { + const bytesRead = reader.offset - opStartOffset; + console.error(` readOperation ERROR: type=${typeIndex}(${typeInfo.name}) offset=${opStartOffset} bytesRead=${bytesRead} err=${e.message}`); + throw e; + } } else { - // Unknown operation - skip by reading until next known structure - // This is a placeholder - full implementation needs all operation schemas - data = { _raw: 'unknown operation type' }; + // Unknown operation - can't skip without schema, deserialization will likely fail + console.error(` readOperation: unknown type ${typeIndex} at offset ${opStartOffset}, stream will be corrupted`); + data = { _raw: `unknown operation type ${typeIndex}` }; + } + + // Log per-operation byte consumption when verbose debug is enabled + if (global.__BLR_VERBOSE_OPS__) { + const bytesRead = reader.offset - opStartOffset; + process.stderr.write(` op[${typeIndex}]=${typeInfo.name} @${opStartOffset} +${bytesRead}B\n`); } return { @@ -602,10 +1542,33 @@ function readSignedTransaction(reader) { * Read signed_block */ function readSignedBlock(reader) { + const startOffset = reader.offset; const header = readSignedBlockHeader(reader); + const headerEndOffset = reader.offset; + let transactions; + try { + const txCount = Number(reader.readVarint()); + if (txCount > 100000) { + throw new Error(`readSignedBlock: tx count ${txCount} exceeds safety cap (offset ${reader.offset})`); + } + const items = []; + for (let i = 0; i < txCount; i++) { + const txStartOffset = reader.offset; + try { + items.push(readSignedTransaction(reader)); + } catch (e) { + console.error(` readSignedBlock: tx[${i}] FAILED at offset ${txStartOffset} (headerEnd=${headerEndOffset}) err=${e.message}`); + throw e; + } + } + transactions = items; + } catch (e) { + console.error(` readSignedBlock ERROR at offset ${startOffset}: headerEnd=${headerEndOffset} err=${e.message}`); + throw e; + } return { ...header, - transactions: reader.readVector(readSignedTransaction) + transactions }; } @@ -615,11 +1578,12 @@ function readSignedBlock(reader) { /** * Extract block number from block_id_type (ripemd160 hash) - * The block number is stored in the first 4 bytes as little-endian uint32 + * The block number is stored in the first 4 bytes. + * C++ uses fc::endian_reverse_u32 which reads as big-endian uint32. */ function numFromId(blockId) { if (!blockId || blockId.length < 4) return 0; - return blockId.readUInt32LE(0); + return blockId.readUInt32BE(0); } /** @@ -674,10 +1638,21 @@ class BlockLogReader { const indexStats = fs.fstatSync(this.indexFd); this.indexSize = BigInt(indexStats.size); - // Read head block to cache block number + // Determine head block number from the index file size. + // Index has 8 bytes per block, starting from block 1 at offset 0. + // head_block_num = index_size / 8 + // This is reliable — we don't need to deserialize the head block for this. + if (this.indexSize >= 8n) { + this._headBlockNum = Number(this.indexSize / 8n); + } + + // Optionally cache the head block (may fail for blocks with unknown ops) if (this.dataSize > BigInt(CONSTANTS.MIN_VALID_FILE_SIZE)) { - this._headBlock = this.readHead(); - this._headBlockNum = getBlockNum(this._headBlock); + try { + this._headBlock = this.readHead(); + } catch (e) { + this._headBlock = null; + } } } @@ -787,8 +1762,9 @@ class BlockLogReader { /** * Get block position from index by block number - * @param {number} blockNum - Block number (1-indexed) - * @returns {bigint} Position in data file + * Matches C++ block_log: offset = 8 * (block_num - 1) + * @param {number} blockNum - Block number (1-indexed, matching C++) + * @returns {bigint} Position in data file, or NPOS if out of range */ getBlockPos(blockNum) { if (blockNum < 1 || blockNum > this._headBlockNum) { @@ -796,13 +1772,18 @@ class BlockLogReader { } const indexOffset = BigInt(blockNum - 1) * 8n; + // Bounds check: index may be incomplete (fewer entries than head block) + if (indexOffset + 8n > this.indexSize) { + return CONSTANTS.NPOS; + } return this._readIndexUint64(indexOffset); } /** * Read block by number * @param {number} blockNum - Block number - * @returns {object|null} Signed block or null if not found + * @returns {object|null} Signed block, or null if block_num out of range + * @throws Error if block found but deserialization failed */ readBlockByNum(blockNum) { const pos = this.getBlockPos(blockNum); @@ -812,6 +1793,132 @@ class BlockLogReader { return result.block; } + /** + * Read only the block header by number (no transactions/operations). + * Useful when full block deserialization fails due to unknown operation types. + * @param {number} blockNum - Block number + * @returns {object|null} Block header object, or null if out of range + */ + readBlockHeaderByNum(blockNum) { + const pos = this.getBlockPos(blockNum); + if (pos === CONSTANTS.NPOS) return null; + + try { + const maxBlockSize = CONSTANTS.CHAIN_BLOCK_SIZE; + const availableSize = Number(this.dataSize - pos); + const readSize = Math.min(availableSize, maxBlockSize + 8); + + const buffer = this._readData(pos, readSize); + const br = new BinaryReader(buffer); + + // Only read the signed_block_header part + const header = readSignedBlockHeader(br); + return { + ...header, + _blockNum: getBlockNum(header), + _position: Number(pos), + _headerOnly: true + }; + } catch (e) { + return null; + } + } + + /** + * Read raw block bytes by number. + * Uses the index to find block start offset and the next block's offset to determine size. + * Returns the raw data including the trailing 8-byte position marker. + * @param {number} blockNum - Block number + * @returns {Buffer|null} Raw block bytes, or null if out of range + */ + readBlockRawData(blockNum) { + const startPos = this.getBlockPos(blockNum); + if (startPos === CONSTANTS.NPOS) return null; + + let endPos; + // If there's a next block in the index, its offset is our end + const nextPos = this.getBlockPos(blockNum + 1); + if (nextPos !== CONSTANTS.NPOS) { + endPos = Number(nextPos); + } else { + // Last block: read until end of data file minus the final 8-byte head position pointer + endPos = Number(this.dataSize) - 8; + } + + const size = endPos - Number(startPos); + if (size <= 0 || size > CONSTANTS.CHAIN_BLOCK_SIZE + 16) return null; + + return this._readData(startPos, size); + } + + /** + * Read only the transaction count for a block by number. + * Uses exact block size from index (no 1MB over-read) and skips operation deserialization. + * Virtual operations are NOT in block_log transactions, so tx_count > 0 means the block + * has non-free operations. + * @param {number} blockNum - Block number + * @returns {number} Transaction count, or -1 if out of range / error + */ + readBlockTxCountByNum(blockNum) { + const startPos = this.getBlockPos(blockNum); + if (startPos === CONSTANTS.NPOS) return -1; + + // Calculate exact block size from index + let endPos; + const nextPos = this.getBlockPos(blockNum + 1); + if (nextPos !== CONSTANTS.NPOS) { + endPos = Number(nextPos); + } else { + endPos = Number(this.dataSize) - 8; + } + const size = endPos - Number(startPos); + if (size <= 0 || size > CONSTANTS.CHAIN_BLOCK_SIZE + 16) return -1; + + try { + const buffer = this._readData(startPos, size); + const br = new BinaryReader(buffer); + + // Skip past the signed_block_header (we don't need its data) + readSignedBlockHeader(br); + + // The next varint is the transactions vector length + return Number(br.readVarint()); + } catch (e) { + return -1; + } + } + + /** + * Read a batch of block positions from the index file in one I/O operation. + * Much faster than calling getBlockPos() one at a time for sequential scanning. + * @param {number} startBlockNum - First block number + * @param {number} count - Number of positions to read + * @returns {bigint[]} Array of positions, may be shorter than count if near end + */ + readBlockPosBatch(startBlockNum, count) { + if (startBlockNum < 1 || startBlockNum > this._headBlockNum) return []; + + const actualCount = Math.min(count, this._headBlockNum - startBlockNum + 2); // +1 for next-block boundary + const indexOffset = BigInt(startBlockNum - 1) * 8n; + const readBytes = Number(BigInt(actualCount) * 8n); + + if (indexOffset + BigInt(readBytes) > this.indexSize) { + // Trim to available index + const avail = Number((this.indexSize - indexOffset) / 8n); + if (avail <= 0) return []; + return this.readBlockPosBatch(startBlockNum, avail); + } + + const buf = Buffer.alloc(readBytes); + fs.readSync(this.indexFd, buf, 0, readBytes, Number(indexOffset)); + + const positions = []; + for (let i = 0; i < actualCount; i++) { + positions.push(buf.readBigUInt64LE(i * 8)); + } + return positions; + } + /** * Get head block number */ @@ -820,17 +1927,17 @@ class BlockLogReader { } /** - * Get start block number (always 1 for standard block_log) + * Get start block number (always 1 for standard block_log, matching C++) */ getStartBlockNum() { return 1; } /** - * Get total number of blocks + * Get total number of blocks (based on index entries) */ getNumBlocks() { - return this._headBlockNum; + return Number(this.indexSize / 8n); } /** @@ -978,6 +2085,8 @@ module.exports = { // Operation deserializers readAsset, readPublicKey, + publicKeyToString, + base58Encode, readAccountName, readAuthority, readBeneficiaryRoute, diff --git a/.qoder/docs/block-log-spec.json b/.qoder/docs/block-log-spec.json index 2da00f588c..d9c0a87252 100644 --- a/.qoder/docs/block-log-spec.json +++ b/.qoder/docs/block-log-spec.json @@ -3,7 +3,7 @@ "$id": "block-log-spec.json", "title": "VIZ Block Log File Format Specification", "description": "Machine-readable specification for VIZ blockchain block log files", - "version": "1.0.0", + "version": "1.1.0", "definitions": { "varint": { @@ -95,6 +95,85 @@ } }, + "public_key_type": { + "type": "object", + "description": "secp256k1 compressed public key with base58 string representation", + "properties": { + "type": { "const": "public_key_type" }, + "wire_size": { "const": 33 }, + "wire_format": { "const": "Raw compressed secp256k1 point: [0x02/0x03 prefix][32 bytes x-coordinate]" }, + "string_encoding": { + "type": "object", + "description": "How public_key_type is displayed as a string (not stored on wire)", + "steps": [ + "Compute ripemd160 hash of the 33 raw key bytes", + "Take first 4 bytes of hash as checksum", + "Concatenate: [33 bytes key][4 bytes checksum] = 37 bytes", + "Base58-encode the 37-byte buffer", + "Prepend CHAIN_ADDRESS_PREFIX ('VIZ')" + ], + "example": "VIZ7wMEutJdCfdSKNgVAp17v9uoTqwwkUqn2kwVsJ6zG5XYJcvj81" + } + } + }, + + "flat_set": { + "type": "object", + "description": "fc::raw serialized flat_set (same wire format as vector)", + "properties": { + "type": { "const": "flat_set" }, + "structure": { + "type": "array", + "items": [ + { "$ref": "#/definitions/varint", "description": "Element count" }, + { "type": "object", "description": "Repeated element type (sorted, unique)" } + ] + } + } + }, + + "flat_map": { + "type": "object", + "description": "fc::raw serialized flat_map (same wire format as vector>)", + "properties": { + "type": { "const": "flat_map" }, + "structure": { + "type": "array", + "items": [ + { "$ref": "#/definitions/varint", "description": "Pair count" }, + { "type": "object", "description": "Repeated pair (K then V for each)" } + ] + } + } + }, + + "optional": { + "type": "object", + "description": "fc::raw serialized optional", + "properties": { + "type": { "const": "optional" }, + "structure": { + "type": "array", + "items": [ + { "type": "object", "properties": { "type": { "const": "uint8" }, "description": { "const": "Flag: 0=absent, 1=present" } } }, + { "type": "object", "description": "Value (only if flag=1)" } + ] + } + } + }, + + "extensions_type": { + "type": "object", + "description": "future_extensions type used in operation extensions fields", + "properties": { + "type": { "const": "extensions_type" }, + "definition": { "const": "flat_set" }, + "future_extensions": { "const": "static_variant" }, + "wire_format": { "const": "varint count + [varint type_index=0] for each item" }, + "usual_state": { "const": "Empty (count=0, serialized as single byte 0x00)" } + } + }, + "time_point_sec": { "type": "object", "properties": { @@ -679,26 +758,31 @@ "common_types": { "asset": { "description": "Token amount with symbol", + "wire_size": "16 bytes (fixed)", "fields": [ - { "name": "amount", "type": "int64", "description": "Amount in satoshis" }, - { "name": "symbol", "type": "uint64", "description": "Asset symbol identifier" } + { "name": "amount", "type": "int64", "size": 8, "description": "Amount in tolikah (signed)" }, + { "name": "symbol", "type": "uint64", "size": 8, "description": "Asset symbol identifier (packed: byte0=decimals, bytes1-6=ASCII name, byte7=0x00)" } ], + "js_output": "{ amount: number, symbol: string, decimals: number }", "symbols": { - "VIZ": "0x0000000000000003", - "SHARES": "0x0000000000000004" + "VIZ": "0x000000005A495603", + "SHARES": "0x0053455241485306" } }, "authority": { "description": "Multi-signature authority", "fields": [ { "name": "weight_threshold", "type": "uint32" }, - { "name": "account_auths", "type": "flat_set>" }, - { "name": "key_auths", "type": "flat_set>" } + { "name": "account_auths", "type": "flat_map" }, + { "name": "key_auths", "type": "flat_map" } ] }, "public_key_type": { "description": "secp256k1 compressed public key", - "size": 33 + "wire_size": 33, + "wire_format": "Raw bytes: [0x02/0x03 prefix][32 bytes x-coordinate]", + "string_format": "VIZ + base58([33 key bytes][4 ripemd160 checksum bytes])", + "example": "VIZ7wMEutJdCfdSKNgVAp17v9uoTqwwkUqn2kwVsJ6zG5XYJcvj81" }, "beneficiary_route_type": { "description": "Beneficiary route for awards", @@ -706,6 +790,33 @@ { "name": "account", "type": "account_name_type" }, { "name": "weight", "type": "uint16" } ] + }, + "chain_properties_init": { + "description": "Chain properties (12 fields, used by chain_properties_update_operation)", + "fields": [ + { "name": "account_creation_fee", "type": "asset" }, + { "name": "maximum_block_size", "type": "uint32" }, + { "name": "create_account_delegation_ratio", "type": "uint32" }, + { "name": "create_account_delegation_time", "type": "uint32" }, + { "name": "min_delegation", "type": "asset" }, + { "name": "min_curation_percent", "type": "uint16" }, + { "name": "max_curation_percent", "type": "uint16" }, + { "name": "bandwidth_reserve_percent", "type": "uint16" }, + { "name": "bandwidth_reserve_below", "type": "asset" }, + { "name": "flag_energy_additional_cost", "type": "uint16" }, + { "name": "vote_accounting_min_rshares", "type": "uint32" }, + { "name": "committee_request_approve_min_percent", "type": "uint16" } + ] + }, + "versioned_chain_properties": { + "description": "static_variant of chain_properties variants", + "format": "[varint: type_index][chain_properties_init base][additional fields based on type]", + "variants": [ + { "type_index": 0, "name": "chain_properties_init", "fields": 12 }, + { "type_index": 1, "name": "chain_properties_hf4", "base": "init", "additional_fields": ["inflation_witness_percent (uint16)", "inflation_ratio_committee_vs_reward_fund (uint16)", "inflation_recalc_period (uint32)"] }, + { "type_index": 2, "name": "chain_properties_hf6", "base": "hf4", "additional_fields": ["data_operations_cost_additional_bandwidth (uint32)", "witness_miss_penalty_percent (uint16)", "witness_miss_penalty_duration (uint32)"] }, + { "type_index": 3, "name": "chain_properties_hf9", "base": "hf6", "additional_fields": ["create_invite_min_balance (asset)", "committee_create_request_fee (asset)", "create_paid_subscription_fee (asset)", "account_on_sale_fee (asset)", "subaccount_on_sale_fee (asset)", "witness_declaration_fee (asset)", "withdraw_intervals (uint16)"] } + ] } }, "operation_schemas": { @@ -803,10 +914,245 @@ { "name": "witness", "type": "account_name_type" }, { "name": "shares", "type": "asset" } ] + }, + "invite_registration_operation": { + "id": 45, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "new_account_key", "type": "public_key_type" }, + { "name": "invite_secret", "type": "string", "description": "WIF-encoded private key (e.g. '5Kd...'), NOT raw bytes" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "claim_invite_balance_operation": { + "id": 44, + "fields": [ + { "name": "initiator", "type": "account_name_type" }, + { "name": "receiver", "type": "account_name_type" }, + { "name": "invite_secret", "type": "string", "description": "WIF-encoded private key string" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "use_invite_balance_operation": { + "id": 58, + "fields": [ + { "name": "initiator", "type": "account_name_type" }, + { "name": "receiver", "type": "account_name_type" }, + { "name": "invite_secret", "type": "string", "description": "WIF-encoded private key string" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "chain_properties_update_operation": { + "id": 25, + "fields": [ + { "name": "owner", "type": "account_name_type" }, + { "name": "props", "type": "chain_properties_init", "description": "12-field struct, NOT chain_properties_hf9" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "versioned_chain_properties_update_operation": { + "id": 46, + "fields": [ + { "name": "owner", "type": "account_name_type" }, + { "name": "props", "type": "versioned_chain_properties", "description": "static_variant with progressive fields" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "benefactor_award_operation": { + "id": 49, + "isVirtual": true, + "fields": [ + { "name": "initiator", "type": "account_name_type" }, + { "name": "benefactor", "type": "account_name_type", "description": "NOTE: FC_REFLECT order is initiator, benefactor (not benefactor, initiator)" }, + { "name": "receiver", "type": "account_name_type" }, + { "name": "custom_sequence", "type": "uint64" }, + { "name": "memo", "type": "string" }, + { "name": "shares", "type": "asset" } + ] + }, + "set_paid_subscription_operation": { + "id": 50, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "url", "type": "string" }, + { "name": "levels", "type": "uint16", "description": "NOT uint8" }, + { "name": "amount", "type": "asset" }, + { "name": "period", "type": "uint16", "description": "NOT uint32" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "paid_subscribe_operation": { + "id": 51, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "subscriber", "type": "account_name_type" }, + { "name": "level", "type": "uint16", "description": "NOT uint8" }, + { "name": "amount", "type": "asset" }, + { "name": "period", "type": "uint16", "description": "NOT uint32" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "paid_subscription_action_operation": { + "id": 52, + "isVirtual": true, + "fields": [ + { "name": "subscriber", "type": "account_name_type" }, + { "name": "account", "type": "account_name_type" }, + { "name": "level", "type": "uint16" }, + { "name": "amount", "type": "asset" }, + { "name": "period", "type": "uint16" }, + { "name": "summary_duration_sec", "type": "uint64" }, + { "name": "summary_amount", "type": "asset" } + ] + }, + "cancel_paid_subscription_operation": { + "id": 53, + "isVirtual": true, + "fields": [ + { "name": "subscriber", "type": "account_name_type" }, + { "name": "account", "type": "account_name_type" } + ] + }, + "buy_account_operation": { + "id": 56, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "buyer", "type": "account_name_type" }, + { "name": "tokens_to_shares", "type": "asset", "description": "NOT bool/uint8" }, + { "name": "extensions", "type": "extensions_type" } + ] + }, + "account_sale_operation": { + "id": 57, + "isVirtual": true, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "price", "type": "asset" }, + { "name": "buyer", "type": "account_name_type" }, + { "name": "seller", "type": "account_name_type" } + ] + }, + "expire_escrow_ratification_operation": { + "id": 59, + "isVirtual": true, + "fields": [ + { "name": "from", "type": "account_name_type" }, + { "name": "to", "type": "account_name_type" }, + { "name": "agent", "type": "account_name_type" }, + { "name": "escrow_id", "type": "uint32" }, + { "name": "token_amount", "type": "asset" }, + { "name": "fee", "type": "asset" }, + { "name": "ratification_deadline", "type": "time_point_sec" } + ] + }, + "bid_operation": { + "id": 62, + "isVirtual": true, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "bidder", "type": "account_name_type", "description": "NOTE: FC_REFLECT order is account, bidder (not bidder, account)" }, + { "name": "bid", "type": "asset" } + ] + }, + "outbid_operation": { + "id": 63, + "isVirtual": true, + "fields": [ + { "name": "account", "type": "account_name_type" }, + { "name": "bidder", "type": "account_name_type", "description": "NOTE: FC_REFLECT order is account, bidder (not bidder, account)" }, + { "name": "bid", "type": "asset" } + ] + }, + "proposal_delete_operation": { + "id": 24, + "fields": [ + { "name": "author", "type": "account_name_type" }, + { "name": "title", "type": "string" }, + { "name": "requester", "type": "account_name_type" }, + { "name": "extensions", "type": "extensions_type" } + ] } } }, + "file_formats_additional": { + "block_log_bitmask": { + "description": "Bitmask file marking which blocks have non-free operations", + "filename": "block_log.bitmask", + "structure": { + "type": "object", + "fields": [ + { + "name": "header", + "offset": 0, + "size": 16, + "fields": [ + { "name": "start_block_num", "offset": 0, "size": 8, "type": "uint64_le", "description": "First block number in range" }, + { "name": "end_block_num", "offset": 8, "size": 8, "type": "uint64_le", "description": "Last block number in range" } + ] + }, + { + "name": "bit_array", + "offset": 16, + "type": "bit_array", + "description": "1 bit per block, bit=1 means block has non-free operations", + "bit_order": "bit 0 = start_block_num, bit 1 = start_block_num+1, etc.", + "size": "ceil((end - start + 1) / 8) bytes" + } + ] + }, + "example": "10,000,000 blocks = ~1.25 MB bitmask file", + "auto_load": "Loaded on startup if file exists and range matches current block_log" + }, + + "search_export": { + "description": "Export file from 'e' command in block-log-viewer", + "filename_pattern": "search_export_.json", + "format": "JSON array of operation record objects", + "record_fields": [ + { "name": "block", "type": "number", "description": "Block number" }, + { "name": "timestamp", "type": "string", "description": "Formatted UTC timestamp" }, + { "name": "witness", "type": "string", "description": "Witness account name" }, + { "name": "typeId", "type": "number", "description": "Operation type ID (0-63)" }, + { "name": "typeName", "type": "string", "description": "Operation type name" }, + { "name": "isVirtual", "type": "boolean", "description": "Whether this is a virtual operation" }, + { "name": "data", "type": "object", "description": "Operation-specific data (Buffers as hex, BigInts as decimal strings)" } + ] + } + }, + + "viewer_commands": { + "description": "block-log-viewer.js interactive commands", + "navigation": [ + { "cmd": "f", "description": "First block" }, + { "cmd": "l", "description": "Last block" }, + { "cmd": "n", "description": "Next block" }, + { "cmd": "p", "description": "Previous block" }, + { "cmd": "N", "description": "Next block with non-free operations (bitmask-accelerated)" }, + { "cmd": "P", "description": "Prev block with non-free operations (bitmask-accelerated)" }, + { "cmd": "g ", "description": "Go to block #num" }, + { "cmd": "", "description": "Jump to block number directly" } + ], + "operations": [ + { "cmd": "o", "description": "Show all operations in current block" }, + { "cmd": "o ", "description": "Show operations matching type name (e.g. o transfer)" }, + { "cmd": "s ", "description": "Search forward for operation by type name" }, + { "cmd": "S ", "description": "Search forward for substring in any operation's data (incl. virtual)" }, + { "cmd": "S =", "description": "Search forward for exact string match (= prefix for exact, not substring)" }, + { "cmd": "R ", "description": "Fast raw ASCII byte search in block data (no UTF-8/emoji)" }, + { "cmd": "e ", "description": "Export all ops containing string to search_export_.json" }, + { "cmd": "e =", "description": "Export all ops exactly matching string (= prefix for exact match)" }, + { "cmd": "c", "description": "Continue last search (s/S/R/e)" } + ], + "other": [ + { "cmd": "scan", "description": "Scan all blocks, build & save bitmask for fast navigation" }, + { "cmd": "i", "description": "Show block header info" }, + { "cmd": "hex", "description": "Show raw block data in hex" }, + { "cmd": "h", "description": "Help" }, + { "cmd": "q", "description": "Quit" } + ] + }, + "constants": { "CHAIN_BLOCK_SIZE": { "value": 1048576, diff --git a/.qoder/docs/block-log-spec.md b/.qoder/docs/block-log-spec.md index 28cf8f7679..98e9780fd4 100644 --- a/.qoder/docs/block-log-spec.md +++ b/.qoder/docs/block-log-spec.md @@ -80,6 +80,31 @@ Value is reconstructed by concatenating 7-bit chunks in order. - `flag = 0`: no value (empty optional) - `flag = 1`: value follows +### flat_set + +``` +[varint: element_count][element_1][element_2]...[element_n] +``` + +Same wire format as `vector`. Elements are sorted and unique in the data structure, but serialized in sorted order. + +### flat_map + +``` +[varint: pair_count][key_1][value_1][key_2][value_2]...[key_n][value_n] +``` + +Same wire format as `vector>`. Each pair is serialized as key then value. + +### Optional + +``` +[uint8: flag][value if flag=1] +``` + +- `flag = 0`: no value (empty optional) +- `flag = 1`: value follows + ### Static Variant ``` @@ -88,9 +113,19 @@ Value is reconstructed by concatenating 7-bit chunks in order. The type index identifies which type in the variant is stored. +### extensions_type + +``` +[varint: count][varint: type_index_0]...[varint: type_index_n] +``` + +Defined as `flat_set` where `future_extensions = static_variant`. +Each extension item is just a varint type index (always 0 for `void_t`). +Usually empty (serialized as single byte `0x00`). + ### Reflected Structures -Structures with `FC_REFLECT` macro are serialized field-by-field in the order defined. +Structures with `FC_REFLECT` macro are serialized field-by-field in the order defined by the macro. **Field order matters** — the binary layout must match the `FC_REFLECT` declaration exactly. --- @@ -247,6 +282,19 @@ signed_block extends signed_block_header | `transaction_merkle_root` | `checksum_type` (20 bytes) | Merkle root of transactions | | `extensions` | `vector` | Future extensions (usually empty) | +### block_header_extension (static_variant) + +Defined as `static_variant` in +`libraries/protocol/include/graphene/protocol/base.hpp`. + +| Type Index | Name | Serialized Data | Description | +|------------|------|----------------|-------------| +| 0 | `void_t` | (none) | Empty placeholder | +| 1 | `version` | `uint32_t v_num` (4 bytes) | Witness version reporting (8.8.16 bit packing) | +| 2 | `hardfork_version_vote` | `uint32_t` hf_version + `uint32_t` hf_time (8 bytes) | Hardfork vote | + +Version `v_num` packing: `(major << 24) | (hardfork << 16) | release`. Example: `0x00000001` = version 0.0.1. + ### signed_block_header Additional Fields | Field | Type | Description | @@ -318,6 +366,14 @@ signed_transaction (after transaction): All are `fc::ripemd160` hashes (20 bytes). +> **Steem lineage note:** VIZ inherits this design from the Steem codebase. Rather than using +> the full 32-byte `fc::sha256` for block IDs and merkle roots, VIZ uses the shorter 20-byte +> `fc::ripemd160`. The `block_id_type` is defined as `typedef fc::ripemd160 block_id_type` and +> `checksum_type` as `typedef fc::ripemd160 checksum_type` in +> `libraries/protocol/include/graphene/protocol/types.hpp`. This is sometimes called a "feature" +> by the original developers — the shorter hash saves space and the collision risk is considered +> acceptable for block identification within a running chain. + ### signature_type `fc::ecc::compact_signature` - 65 bytes: @@ -492,26 +548,94 @@ Operations are serialized as `fc::static_variant` with a type index followed by ### Common Types #### asset + ``` [int64: amount][uint64: symbol] ``` -Symbol encoding: -- `VIZ`: 0x0000000000000003 -- `SHARES`: 0x0000000000000004 +**Asset symbol format** (inherited from Steem codebase, defined in `asset.cpp`): + +The `uint64 symbol` is a packed structure with the following byte layout (little-endian): + +| Byte | Field | Description | +|------|-------|-------------| +| 0 | decimals | Number of decimal places (0-14) | +| 1-6 | name | ASCII symbol name (up to 6 chars) | +| 7 | null | Always 0x00 (null terminator) | + +Known symbols (from `config.hpp`): + +| Name | Decimals | uint64 (LE bytes) | uint64 (hex) | +|------|----------|--------------------|--------------| +| `VIZ` | 3 | `03 56 49 5A 00 00 00 00` | `0x000000005A495603` | +| `SHARES` | 6 | `06 53 48 41 52 45 53 00` | `0x0053455241485306` | + +> **Steem lineage note:** This symbol encoding format is inherited from the Steem codebase. +> Rather than using an enum or string, the symbol is packed as a uint64 with precision in byte 0 +> and the ASCII name in bytes 1-6. This design allows the symbol to carry its own decimal +> precision information without requiring a separate lookup. #### authority ``` [uint32: weight_threshold] -[flat_set>: account_auths] -[flat_set>: key_auths] +[flat_map: account_auths] +[flat_map: key_auths] ``` +> **Note:** `account_auths` and `key_auths` are `flat_map` (not `flat_set>`). +> Wire format is identical to `vector>`: varint count + (key, value) pairs. + #### public_key_type + +**Wire format:** 33 raw bytes of compressed secp256k1 public key: ``` -[33 bytes: compressed secp256k1 public key] +[1 byte: 0x02 or 0x03 prefix][32 bytes: x-coordinate] ``` +**String representation** (in JSON output, not on wire): +1. Compute `ripemd160(33_key_bytes)` +2. First 4 bytes of hash = checksum +3. Concatenate: `[33 key bytes][4 checksum bytes]` = 37 bytes +4. Base58-encode the 37-byte buffer +5. Prepend `"VIZ"` (CHAIN_ADDRESS_PREFIX) + +Example: `VIZ7wMEutJdCfdSKNgVAp17v9uoTqwwkUqn2kwVsJ6zG5XYJcvj81` + +Matches C++ `public_key_type::operator std::string()` in `libraries/protocol/types.cpp`. + +#### chain_properties_init + +Used by `chain_properties_update_operation` (ID 25). **12 fields only** — NOT the same as `chain_properties_hf9`. +``` +[asset: account_creation_fee] +[uint32: maximum_block_size] +[uint32: create_account_delegation_ratio] +[uint32: create_account_delegation_time] +[asset: min_delegation] +[uint16: min_curation_percent] +[uint16: max_curation_percent] +[uint16: bandwidth_reserve_percent] +[asset: bandwidth_reserve_below] +[uint16: flag_energy_additional_cost] +[uint32: vote_accounting_min_rshares] +[uint16: committee_request_approve_min_percent] +``` + +#### versioned_chain_properties + +Used by `versioned_chain_properties_update_operation` (ID 46). A `static_variant` of chain property variants: + +``` +[varint: type_index][chain_properties_init base fields][variant-specific additional fields] +``` + +| Type Index | Name | Base | Additional Fields | +|------------|------|------|-------------------| +| 0 | `chain_properties_init` | — | (12 base fields only) | +| 1 | `chain_properties_hf4` | init | +3: `inflation_witness_percent`(uint16), `inflation_ratio_committee_vs_reward_fund`(uint16), `inflation_recalc_period`(uint32) | +| 2 | `chain_properties_hf6` | hf4 | +3: `data_operations_cost_additional_bandwidth`(uint32), `witness_miss_penalty_percent`(uint16), `witness_miss_penalty_duration`(uint32) | +| 3 | `chain_properties_hf9` | hf6 | +7: `create_invite_min_balance`(asset), `committee_create_request_fee`(asset), `create_paid_subscription_fee`(asset), `account_on_sale_fee`(asset), `subaccount_on_sale_fee`(asset), `witness_declaration_fee`(asset), `withdraw_intervals`(uint16) | + ### Operation Structures #### transfer_operation (ID: 2) @@ -560,6 +684,293 @@ Symbol encoding: [uint16: weight] ``` +#### invite_registration_operation (ID: 45) +``` +[account_name_type: account] +[public_key_type: new_account_key] +[string: invite_secret] ← WIF-encoded private key (e.g. '5Kd...'), NOT raw bytes +[extensions_type: extensions] +``` + +> **Important:** `invite_secret` is a `string` (WIF-encoded private key), NOT raw 32 bytes. +> The same applies to `claim_invite_balance_operation` (ID 44) and `use_invite_balance_operation` (ID 58). + +#### claim_invite_balance_operation (ID: 44) +``` +[account_name_type: initiator] +[account_name_type: receiver] +[string: invite_secret] ← WIF-encoded private key string +[extensions_type: extensions] +``` + +#### use_invite_balance_operation (ID: 58) +``` +[account_name_type: initiator] +[account_name_type: receiver] +[string: invite_secret] ← WIF-encoded private key string +[extensions_type: extensions] +``` + +#### chain_properties_update_operation (ID: 25) +``` +[account_name_type: owner] +[chain_properties_init: props] ← 12-field struct, NOT chain_properties_hf9 +[extensions_type: extensions] +``` + +#### versioned_chain_properties_update_operation (ID: 46) +``` +[account_name_type: owner] +[versioned_chain_properties: props] ← static_variant +[extensions_type: extensions] +``` + +#### benefactor_award_operation (ID: 49, virtual) +``` +[account_name_type: initiator] ← FC_REFLECT order: initiator BEFORE benefactor +[account_name_type: benefactor] +[account_name_type: receiver] +[uint64: custom_sequence] +[string: memo] +[asset: shares] +``` + +#### set_paid_subscription_operation (ID: 50) +``` +[account_name_type: account] +[string: url] +[uint16: levels] ← uint16, NOT uint8 +[asset: amount] +[uint16: period] ← uint16, NOT uint32 +[extensions_type: extensions] +``` + +#### paid_subscribe_operation (ID: 51) +``` +[account_name_type: account] +[account_name_type: subscriber] +[uint16: level] ← uint16, NOT uint8 +[asset: amount] +[uint16: period] ← uint16, NOT uint32 +[extensions_type: extensions] +``` + +#### paid_subscription_action_operation (ID: 52, virtual) +``` +[account_name_type: subscriber] +[account_name_type: account] +[uint16: level] +[asset: amount] +[uint16: period] +[uint64: summary_duration_sec] +[asset: summary_amount] +``` + +#### cancel_paid_subscription_operation (ID: 53, virtual) +``` +[account_name_type: subscriber] +[account_name_type: account] +``` + +> Only 2 fields — no `level` field. + +#### buy_account_operation (ID: 56) +``` +[account_name_type: account] +[account_name_type: buyer] +[asset: tokens_to_shares] ← asset type, NOT bool/uint8 +[extensions_type: extensions] +``` + +#### account_sale_operation (ID: 57, virtual) +``` +[account_name_type: account] +[asset: price] +[account_name_type: buyer] +[account_name_type: seller] +``` + +#### expire_escrow_ratification_operation (ID: 59, virtual) +``` +[account_name_type: from] +[account_name_type: to] +[account_name_type: agent] +[uint32: escrow_id] +[asset: token_amount] +[asset: fee] +[time_point_sec: ratification_deadline] +``` + +#### bid_operation (ID: 62, virtual) +``` +[account_name_type: account] ← FC_REFLECT order: account BEFORE bidder +[account_name_type: bidder] +[asset: bid] +``` + +#### outbid_operation (ID: 63, virtual) +``` +[account_name_type: account] ← FC_REFLECT order: account BEFORE bidder +[account_name_type: bidder] +[asset: bid] +``` + +#### proposal_delete_operation (ID: 24) +``` +[account_name_type: author] +[string: title] +[account_name_type: requester] ← was previously missing +[extensions_type: extensions] +``` + +## Tools + +### block-log-reader.js + +JavaScript module for reading block_log and dlt_block_log files. Provides programmatic access to block data. + +**Usage:** +```javascript +const { createBlockLogReader, getBlockNum, publicKeyToString } = require('./block-log-reader'); + +const reader = createBlockLogReader('/path/to/block_log'); +// Or for DLT: createBlockLogReader('/path/to/dlt_block_log', undefined, true); + +const block = reader.readBlockByNum(1000); +console.log(getBlockNum(block), block.witness); +reader.close(); +``` + +### block-log-viewer.js + +Interactive terminal UI for browsing block logs. No external dependencies. + +**Usage:** +``` +node block-log-viewer.js [--dlt] [--reader=] +``` + +`` can be either: +- Path to a `block_log` or `dlt_block_log` file directly +- Path to a directory containing `block_log` / `dlt_block_log` (auto-detected) + +**Options:** + +| Option | Description | +|--------|-------------| +| `--dlt` | Use DLT (rolling) block log reader | +| `--reader=` | Path to `block-log-reader.js` module | + +**Directory auto-detection** (when `` is a directory): + +| Files present | `--dlt` | Result | +|--------------|---------|--------| +| `block_log` only | no | Standard mode | +| `dlt_block_log` only | no | Auto-switches to DLT mode | +| Both | no | Standard mode (`block_log`) | +| Both | yes | DLT mode (`dlt_block_log`) | +| Neither | — | Error | + +**Module resolution** (if `block-log-reader.js` is not in the same directory): +- `--reader=/path/to/block-log-reader.js` — explicit CLI option +- `BLOCK_LOG_READER=/path/to/block-log-reader.js` — environment variable + +#### Navigation Commands + +| Command | Description | +|---------|-------------| +| `f` | First block | +| `l` | Last block | +| `n` | Next block | +| `p` | Previous block | +| `N` | Next block with non-free operations (bitmask-accelerated) | +| `P` | Prev block with non-free operations (bitmask-accelerated) | +| `g ` | Go to block #num | +| `` | Jump to block number directly | + +#### Operation Commands + +| Command | Description | +|---------|-------------| +| `o` | Show all operations in current block (JSON) | +| `o ` | Show operations matching type name (e.g. `o transfer`) | +| `s ` | Search forward for block containing operation by type name | +| `S ` | Search forward for substring in any operation's data (incl. virtual) | +| `S =` | Search forward for **exact** string match (`=` prefix disables substring matching) | +| `R ` | Fast raw ASCII byte search in block data (no UTF-8/emoji) | +| `e ` | Export all ops containing string to `search_export_.json` | +| `e =` | Export all ops **exactly matching** string (`=` prefix for exact match) | +| `c` | Continue last search (s/S/R/e) | + +> **Search modes:** Without `=` prefix, string search uses substring matching (e.g. `S VIZ` matches +> any occurrence of "VIZ" in data). With `=` prefix, uses exact match (e.g. `e ="V"` finds only +> the value `V`, not `VIZ`). Surrounding quotes are automatically stripped. + +#### Other + +| Command | Description | +|---------|-------------| +| `scan` | Scan all blocks, build & save bitmask for fast navigation | +| `i` | Show block header info | +| `hex` | Show raw block data in hex | +| `h` | Help | +| `q` | Quit | + +#### Bitmask File (block_log.bitmask) + +The `scan` command builds a compact bitmask file that marks which blocks contain non-free (non-virtual) operations. Once built, `N` and `P` commands jump instantly between non-empty blocks without deserializing skipped blocks. + +**File format:** + +``` ++-------------------+-------------------+-------------------------------+ +| start_block_num | end_block_num | bit array | +| (8 bytes, uint64) | (8 bytes, uint64) | 1 bit per block | ++-------------------+-------------------+-------------------------------+ +``` + +- **Bytes 0–7**: `uint64_t` LE — `start_block_num` +- **Bytes 8–15**: `uint64_t` LE — `end_block_num` +- **Bytes 16+**: bit array, 1 bit per block (bit 0 = `start_block_num`) + - `1` = block has non-free operations + - `0` = block is empty or has only virtual operations +- Total size: `16 + ceil((end - start + 1) / 8)` bytes + +**Example:** 10,000,000 blocks → ~1.25 MB bitmask file. + +The bitmask is auto-loaded on startup if it exists and matches the current block range. If the range differs, a rescan is suggested. + +#### String Search (`S`), Raw Search (`R`), and Export (`e`) + +The `S` command searches the **full operation data** (including virtual) for a substring match. The `=` prefix enables exact match mode — `S ="V"` finds only the exact value `V`, not `VIZ` or other strings containing `V`. + +The `R` command performs a fast raw ASCII byte search directly in the block's binary data, without deserialization. No UTF-8/emoji support. Useful for quickly locating blocks containing specific ASCII patterns. + +The `e` command performs the same search as `S` across **all** blocks and writes results to a JSON file in the block_log directory: + +``` +search_export_1745312345.json +``` + +Export format: +```json +[ + { + "block": 12345, + "timestamp": "2024-01-15 10:30:00 UTC", + "witness": "on1x", + "typeId": 47, + "typeName": "award_operation", + "isVirtual": false, + "data": { "initiator": "alice", "receiver": "on1x", ... } + } +] +``` + +Buffers are serialized as hex strings; BigInts as decimal strings. + +--- + ## See Also - [data-types.md](data-types.md) - VIZ data type definitions diff --git a/.qoder/docs/block-log-viewer.js b/.qoder/docs/block-log-viewer.js new file mode 100644 index 0000000000..8e35fcf511 --- /dev/null +++ b/.qoder/docs/block-log-viewer.js @@ -0,0 +1,1309 @@ +#!/usr/bin/env node +/** + * VIZ Block Log Viewer - Interactive terminal UI + * No external dependencies. Uses block-log-reader.js for parsing. + * + * Usage: node block-log-viewer.js [--dlt] [--reader=] + * + * The viewer will look for block-log-reader.js in this order: + * 1. --reader= CLI option + * 2. Same directory as this script + * 3. BLOCK_LOG_READER environment variable + */ + +const fs = require('fs'); +const path = require('path'); +const readline = require('readline'); + +// Resolve block-log-reader module from multiple locations +function resolveReaderModule() { + const cliReader = process.argv.find(a => a.startsWith('--reader=')); + if (cliReader) { + const p = cliReader.split('=')[1]; + if (fs.existsSync(p)) return p; + console.error(`--reader path not found: ${p}`); + process.exit(1); + } + + const candidates = [ + path.join(__dirname, 'block-log-reader'), // same dir as this script + process.env.BLOCK_LOG_READER, // env var + ].filter(Boolean); + + for (const candidate of candidates) { + try { + require.resolve(candidate); + return candidate; + } catch (e) { /* not found, try next */ } + } + + console.error('Cannot find block-log-reader.js'); + console.error('Place it in the same directory as this script, or use:'); + console.error(' node block-log-viewer.js --reader=/path/to/block-log-reader.js'); + console.error(' set BLOCK_LOG_READER=/path/to/block-log-reader.js'); + process.exit(1); +} + +const readerModule = resolveReaderModule(); +const { + createBlockLogReader, + getBlockNum, + blockIdToHex, + OPERATION_TYPES, + CONSTANTS, + BinaryReader, + readSignedBlockHeader, + readSignedBlock +} = require(readerModule); + +// ============================================================================ +// State +// ============================================================================ + +let reader = null; +let currentBlockNum = 0; +let startBlock = 1; +let endBlock = 0; +let scanning = false; +let lastSearch = null; // { type: 's'|'S'|'e', term: string } + +// Bitmask: 1 bit per block, 1 = has non-free ops, 0 = empty/virtual-only +let bitmask = null; // Buffer or null +let bitmaskStart = 0; // start_block_num stored in bitmask +let bitmaskEnd = 0; // end_block_num stored in bitmask + +// ============================================================================ +// Helpers +// ============================================================================ + +function isNonFreeOp(op) { + return !op.isVirtual; +} + +/** + * Check if a Buffer contains an ASCII string (case-insensitive). + * Searches raw bytes without any string conversion or object allocation. + */ +function bufIncludesAscii(buf, searchLower) { + const len = searchLower.length; + const bufLen = buf.length; + outer: + for (let i = 0; i <= bufLen - len; i++) { + for (let j = 0; j < len; j++) { + let c = buf[i + j]; + // Convert to lowercase: A-Z (0x41-0x5A) -> a-z (0x61-0x7A) + if (c >= 0x41 && c <= 0x5A) c += 0x20; + if (c !== searchLower.charCodeAt(j)) continue outer; + } + return true; + } + return false; +} + +function hasNonFreeOps(block) { + for (const tx of block.transactions) { + for (const op of tx.operations) { + if (isNonFreeOp(op)) return true; + } + } + return false; +} + +function collectOps(block) { + const ops = []; + for (const tx of block.transactions) { + for (const op of tx.operations) { + ops.push(op); + } + } + return ops; +} + +function formatTimestamp(d) { + return d.toISOString().replace('T', ' ').replace('.000Z', ' UTC'); +} + +function hashHex(h) { + return h ? Buffer.from(h).toString('hex') : '(null)'; +} + +function shortenHex(hex, len = 16) { + if (!hex || hex.length <= len * 2) return hex; + return hex.slice(0, len) + '...' + hex.slice(-len); +} + +// ============================================================================ +// Bitmask (block_log.bitmask) +// ============================================================================ +// +// File format: +// [8 bytes] start_block_num (uint64 LE) +// [8 bytes] end_block_num (uint64 LE) +// [N bytes] bit array, 1 bit per block (bit i = block startBlock+i) +// bit=1 means block has non-free (non-virtual) operations +// Total bytes = ceil((end - start + 1) / 8) +// +// Saved alongside block_log as block_log.bitmask +// ============================================================================ + +function bitmaskPath() { + return reader.dataPath + '.bitmask'; +} + +/** + * Set bit for blockNum (1 = has non-free ops) + */ +function bitmaskSet(buf, start, blockNum) { + const idx = blockNum - start; + const byteIdx = idx >> 3; + const bitIdx = idx & 7; + buf[byteIdx] |= (1 << bitIdx); +} + +/** + * Get bit for blockNum. Returns 0 or 1. If no bitmask loaded, returns -1. + */ +function bitmaskGet(blockNum) { + if (!bitmask) return -1; + if (blockNum < bitmaskStart || blockNum > bitmaskEnd) return -1; + const idx = blockNum - bitmaskStart; + const byteIdx = idx >> 3; + const bitIdx = idx & 7; + return (bitmask[byteIdx] >> bitIdx) & 1; +} + +/** + * Check if bitmask is loaded and valid for current range + */ +function bitmaskValid() { + return bitmask && bitmaskStart === startBlock && bitmaskEnd === endBlock; +} + +/** + * Load bitmask from file. Returns true if loaded and valid. + */ +function bitmaskLoad() { + const p = bitmaskPath(); + if (!fs.existsSync(p)) return false; + try { + const fd = fs.openSync(p, 'r'); + const stat = fs.fstatSync(fd); + if (stat.size < 16) { fs.closeSync(fd); return false; } + + const hdr = Buffer.allocUnsafe(16); + fs.readSync(fd, hdr, 0, 16, 0); + const s = Number(hdr.readBigUInt64LE(0)); + const e = Number(hdr.readBigUInt64LE(8)); + + const expectedBits = e - s + 1; + const expectedBytes = Math.ceil(expectedBits / 8); + if (stat.size < 16 + expectedBytes) { fs.closeSync(fd); return false; } + + const bits = Buffer.allocUnsafe(expectedBytes); + fs.readSync(fd, bits, 0, expectedBytes, 16); + fs.closeSync(fd); + + bitmask = bits; + bitmaskStart = s; + bitmaskEnd = e; + + if (s === startBlock && e === endBlock) { + return true; // fully valid + } + console.log(` Bitmask range #${s}-#${e} differs from log #${startBlock}-#${endBlock}, will rescan.`); + return false; + } catch (e) { + return false; + } +} + +/** + * Scan all blocks, build bitmask, save to file. + * Uses lightweight tx-count check (no full block deserialization) with + * batch I/O for the index file and progressive bitmask writes. + * Virtual operations are NOT stored in block_log, so tx_count > 0 = has ops. + */ +function bitmaskScan() { + if (scanning) { console.log(' Already scanning.'); return; } + scanning = true; + const total = endBlock - startBlock + 1; + const byteLen = Math.ceil(total / 8); + const BATCH_SIZE = 50000; + + // Prepare file + const p = bitmaskPath(); + const hdr = Buffer.allocUnsafe(16); + hdr.writeBigUInt64LE(BigInt(startBlock), 0); + hdr.writeBigUInt64LE(BigInt(endBlock), 8); + + // Write header + empty bitmask placeholder + const fd = fs.openSync(p, 'w'); + fs.writeSync(fd, hdr, 0, 16, 0); + const zeroChunk = Buffer.alloc(Math.min(byteLen, 65536)); + for (let off = 0; off < byteLen; off += zeroChunk.length) { + const writeLen = Math.min(zeroChunk.length, byteLen - off); + fs.writeSync(fd, zeroChunk, 0, writeLen, 16 + off); + } + + console.log(` Scanning ${total} blocks for non-free operations...`); + console.log(` Bitmask file: ${path.basename(p)} (${((16 + byteLen) / 1024).toFixed(1)} KB)`); + console.log(` Batch size: ${BATCH_SIZE} blocks (lightweight: header + tx count only)`); + + // Process in batches + let currentNum = startBlock; + let nonFreeCount = 0; + let lastPct = -1; + + function processBatch() { + const batchEnd = Math.min(currentNum + BATCH_SIZE - 1, endBlock); + const batchCount = batchEnd - currentNum + 1; + const batchBits = Buffer.alloc(Math.ceil(batchCount / 8)); + + // Read index positions in bulk (one I/O for the whole batch + 1 extra for size boundary) + const positions = reader.readBlockPosBatch(currentNum, batchCount + 1); + if (positions.length === 0) { + currentNum = batchEnd + 1; + setImmediate(processBatch); + return; + } + + for (let i = 0; i < batchCount; i++) { + const num = currentNum + i; + const startPos = Number(positions[i]); + const endPos = (i + 1 < positions.length) ? Number(positions[i + 1]) : (Number(reader.dataSize) - 8); + const blockSize = endPos - startPos; + + if (blockSize <= 0 || blockSize > CONSTANTS.CHAIN_BLOCK_SIZE + 16) continue; + + try { + // Read exact block bytes and parse only header + tx count + const buffer = reader._readData(BigInt(startPos), blockSize); + const br = new BinaryReader(buffer); + readSignedBlockHeader(br); // skip header + const txCount = Number(br.readVarint()); + + if (txCount > 0) { + const byteIdx = Math.floor(i / 8); + const bitOffset = i % 8; + batchBits[byteIdx] |= (1 << bitOffset); + nonFreeCount++; + } + } catch (e) { + // Skip blocks that fail to parse + } + } + + // Write this batch's bits to the file + const batchFileOffset = Math.floor((currentNum - startBlock) / 8); + fs.writeSync(fd, batchBits, 0, batchBits.length, 16 + batchFileOffset); + + // Progress + const processed = batchEnd - startBlock + 1; + const pct = Math.floor((processed / total) * 100); + if (pct !== lastPct) { + lastPct = pct; + const memMB = Math.round(process.memoryUsage().heapUsed / 1024 / 1024); + process.stdout.write(`\r Scanning... ${pct}% (#${batchEnd}, ${nonFreeCount} with ops, ${memMB} MB heap) `); + } + + currentNum = batchEnd + 1; + if (currentNum <= endBlock) { + setImmediate(processBatch); + } else { + // Done — load the completed bitmask + fs.closeSync(fd); + + bitmaskLoad(); + + const empty = total - nonFreeCount; + const sizeKB = ((16 + byteLen) / 1024).toFixed(1); + console.log(`\r Done. ${nonFreeCount} with ops, ${empty} empty. Saved ${sizeKB} KB to ${path.basename(p)} `); + scanning = false; + showPrompt(); + } + } + + processBatch(); +} + +/** + * Find next block with non-free ops using bitmask (fast, no deserialization) + * Returns block number or 0 if none found + */ +function bitmaskFindNext(fromBlock) { + if (!bitmaskValid()) return 0; + for (let num = fromBlock; num <= bitmaskEnd; num++) { + if (bitmaskGet(num) === 1) return num; + } + return 0; +} + +/** + * Find prev block with non-free ops using bitmask + */ +function bitmaskFindPrev(fromBlock) { + if (!bitmaskValid()) return 0; + for (let num = fromBlock; num >= bitmaskStart; num--) { + if (bitmaskGet(num) === 1) return num; + } + return 0; +} + +// ============================================================================ +// Display +// ============================================================================ + +function showBlock(block) { + const num = getBlockNum(block); + const ops = collectOps(block); + const nonFree = ops.filter(isNonFreeOp); + const virtual = ops.filter(o => o.isVirtual); + + console.log(''); + console.log('='.repeat(72)); + console.log(` Block #${num}`); + console.log('='.repeat(72)); + console.log(` Timestamp : ${formatTimestamp(block.timestamp)}`); + console.log(` Witness : ${block.witness}`); + console.log(` Previous : ${shortenHex(hashHex(block.previous))}`); + console.log(` Tx Merkle : ${shortenHex(hashHex(block.transaction_merkle_root))}`); + console.log(` Signature : ${shortenHex(hashHex(block.witness_signature))}`); + console.log(` Tx count : ${block.transactions.length}`); + if (block.extensions && block.extensions.length > 0) { + for (const ext of block.extensions) { + if (ext.name === 'version') { + console.log(` Extension : version = ${ext.data.version}`); + } else if (ext.name === 'hardfork_version_vote') { + console.log(` Extension : hardfork_version_vote = ${ext.data.hf_version} at ${ext.data.hf_time}`); + } else { + console.log(` Extension : ${ext.name} ${JSON.stringify(ext.data)}`); + } + } + } + console.log(` Ops total : ${ops.length} (non-free: ${nonFree.length}, virtual: ${virtual.length})`); + console.log('-'.repeat(72)); +} + +function showOps(block, filter) { + const ops = collectOps(block); + const filtered = filter ? ops.filter(o => o.typeName.includes(filter)) : ops; + + if (filtered.length === 0) { + if (filter) { + console.log(` No operations matching "${filter}" in this block.`); + } else { + console.log(' (no operations)'); + } + return; + } + + for (let i = 0; i < filtered.length; i++) { + const op = filtered[i]; + const tag = op.isVirtual ? '[V]' : ' '; + console.log(` ${tag} [${i}] ${op.typeName}`); + try { + const json = JSON.stringify(op.data, (key, val) => { + if (val && val.type === 'Buffer') return ``; + if (Buffer.isBuffer(val)) return ``; + if (typeof val === 'bigint') return val.toString(); + return val; + }, 2); + for (const line of json.split('\n')) { + console.log(' ' + line); + } + } catch (e) { + console.log(' (serialization error)'); + } + console.log(''); + } +} + +function showHelp() { + console.log(''); + console.log('Commands:'); + console.log(' f - First block'); + console.log(' l - Last block'); + console.log(' n - Next block'); + console.log(' p - Previous block'); + console.log(' N - Next block with non-free operations (uses bitmask)'); + console.log(' P - Prev block with non-free operations (uses bitmask)'); + console.log(' g - Go to block #num'); + console.log(' o - Show operations in current block'); + console.log(' o - Show operations matching name'); + console.log(' s - Search forward for block containing operation name'); + console.log(' S - Search forward for string in op JSON (incl. virtual)'); + console.log(' Prefix with = for exact match: S =\"V\" finds V but not VIZ'); + console.log(' R - Fast raw ASCII byte search (no UTF-8/emoji)'); + console.log(' e - Export all ops containing string to search_export_.json'); + console.log(' Prefix with = for exact match: e =\"V\" exports only exact V matches'); + console.log(' c - Continue last search (s/S/e)'); + console.log(' scan - Scan all blocks, build & save bitmask for fast nav'); + console.log(' i - Show block info (header only)'); + console.log(' hex - Show raw block data in hex'); + console.log(' h - This help'); + console.log(' q - Quit'); + const bm = bitmaskValid() ? `LOADED (${endBlock - startBlock + 1} blocks)` : 'not loaded'; + console.log(` Bitmask : ${bm}`); + console.log(''); +} + +function showPrompt() { + const pct = endBlock > startBlock ? Math.round(((currentBlockNum - startBlock) / (endBlock - startBlock)) * 100) : 0; + process.stdout.write(`[${currentBlockNum}/${endBlock}] ${pct}% > `); +} + +// ============================================================================ +// Navigation +// ============================================================================ + +/** + * Safely read a block by number. Returns the block or null. + * Logs errors but does NOT throw — for use in scan loops. + */ +function safeReadBlock(num) { + try { + return reader.readBlockByNum(num); + } catch (e) { + return null; // skip blocks that fail to deserialize + } +} + +function showBlockHeaderOnly(header, blockNum, errorMsg) { + console.log(''); + console.log('='.repeat(72)); + console.log(` Block #${blockNum} (HEADER ONLY - deserialization failed)`); + console.log('='.repeat(72)); + if (header) { + console.log(` Timestamp : ${formatTimestamp(header.timestamp)}`); + console.log(` Witness : ${header.witness}`); + console.log(` Previous : ${shortenHex(hashHex(header.previous))}`); + console.log(` Tx Merkle : ${shortenHex(hashHex(header.transaction_merkle_root))}`); + console.log(` Signature : ${shortenHex(hashHex(header.witness_signature))}`); + console.log(` Block Num : ${header._blockNum} (from previous)`); + console.log(` File Pos : ${header._position}`); + } else { + console.log(' (header also could not be read)'); + } + console.log('-'.repeat(72)); + console.log(` Error: ${errorMsg}`); + console.log('-'.repeat(72)); +} + +function goTo(num) { + num = Math.max(startBlock, Math.min(endBlock, num)); + let block; + try { + block = reader.readBlockByNum(num); + } catch (e) { + // Full deserialization failed — try header-only + const header = reader.readBlockHeaderByNum(num); + showBlockHeaderOnly(header, num, e.message); + currentBlockNum = num; + return; + } + if (!block) { + // Block number out of index range + console.log(`Block #${num} is not in the index (out of range).`); + return; + } + currentBlockNum = num; + showBlock(block); +} + +function goNext() { + if (currentBlockNum >= endBlock) { console.log('Already at last block.'); return; } + goTo(currentBlockNum + 1); +} + +function goPrev() { + if (currentBlockNum <= startBlock) { console.log('Already at first block.'); return; } + goTo(currentBlockNum - 1); +} + +function goFirst() { + goTo(startBlock); +} + +function goLast() { + goTo(endBlock); +} + +function goNextWithOps() { + // Fast path: use bitmask to skip empty blocks without deserialization + if (bitmaskValid()) { + const next = bitmaskFindNext(currentBlockNum + 1); + if (next === 0) { + console.log(' No more blocks with non-free operations forward.'); + return; + } + // Only read & deserialize the one block we found + currentBlockNum = next; + try { + const block = reader.readBlockByNum(next); + if (block) showBlock(block); + else showBlockHeaderOnly(reader.readBlockHeaderByNum(next), next, 'Block returned null'); + } catch (e) { + showBlockHeaderOnly(reader.readBlockHeaderByNum(next), next, e.message); + } + return; + } + + // Slow fallback: scan by reading each block + for (let num = currentBlockNum + 1; num <= endBlock; num++) { + const block = safeReadBlock(num); + if (block && hasNonFreeOps(block)) { + currentBlockNum = num; + showBlock(block); + return; + } + if ((num - currentBlockNum) % 1000 === 0) { + process.stdout.write(`\r Scanning... #${num} `); + } + } + console.log('\r No more blocks with non-free operations forward. '); +} + +function goPrevWithOps() { + // Fast path: use bitmask + if (bitmaskValid()) { + const prev = bitmaskFindPrev(currentBlockNum - 1); + if (prev === 0) { + console.log(' No more blocks with non-free operations backward.'); + return; + } + currentBlockNum = prev; + try { + const block = reader.readBlockByNum(prev); + if (block) showBlock(block); + else showBlockHeaderOnly(reader.readBlockHeaderByNum(prev), prev, 'Block returned null'); + } catch (e) { + showBlockHeaderOnly(reader.readBlockHeaderByNum(prev), prev, e.message); + } + return; + } + + // Slow fallback + for (let num = currentBlockNum - 1; num >= startBlock; num--) { + const block = safeReadBlock(num); + if (block && hasNonFreeOps(block)) { + currentBlockNum = num; + showBlock(block); + return; + } + if ((currentBlockNum - num) % 1000 === 0) { + process.stdout.write(`\r Scanning... #${num} `); + } + } + console.log('\r No more blocks with non-free operations backward. '); +} + +/** + * Run a search function in batches to avoid OOM. + * The checkFn receives (blockNum) and should return false to skip this block, + * or true to proceed with full deserialization via matchFn. + * matchFn receives (blockNum, block) and should return truthy to stop (the match). + * Calls onProgress(currentNum) for status updates. + */ +function batchSearch(checkFn, matchFn, onProgress, onDone) { + if (scanning) { console.log(' Already scanning.'); return; } + scanning = true; + const BATCH_SIZE = 10000; + let currentNum = currentBlockNum + 1; + + function processBatch() { + const batchEnd = Math.min(currentNum + BATCH_SIZE - 1, endBlock); + + for (let num = currentNum; num <= batchEnd; num++) { + // Lightweight pre-check: skip empty blocks + if (!checkFn(num)) continue; + + // Full deserialize only blocks that pass the check + const block = safeReadBlock(num); + if (block) { + const result = matchFn(num, block); + if (result) { + currentBlockNum = num; + scanning = false; + onDone(null); + return; + } + } + if ((num - currentNum) % 2000 === 0 && num > currentNum) { + onProgress(num); + } + } + + onProgress(batchEnd); + currentNum = batchEnd + 1; + if (currentNum <= endBlock) { + setImmediate(processBatch); + } else { + scanning = false; + onDone('not found'); + } + } + + processBatch(); +} + +function searchOpForward(name) { + lastSearch = { type: 's', term: name }; + console.log(` Searching for operation "${name}" forward from #${currentBlockNum + 1}...`); + + batchSearch( + (num) => { + // Skip blocks with no transactions (bitmask only — no per-block I/O) + if (bitmaskValid()) return bitmaskGet(num) === 1; + return true; // without bitmask, can't skip + }, + (num, block) => { + const ops = collectOps(block); + if (ops.some(o => o.typeName.includes(name))) { + showBlock(block); + showOps(block, name); + return true; + } + return false; + }, + (num) => process.stdout.write(`\r Scanning... #${num} `), + (err) => { + if (err === 'not found') console.log('\r No matching operations found. '); + else console.log('\r No more matching operations. '); + showPrompt(); + } + ); +} + +// ============================================================================ +// String Search in Operation JSON (including virtual ops) +// ============================================================================ + +/** + * Parse search term: strip surrounding quotes, detect = prefix for exact match. + * Returns { term: string, exact: boolean } + * Examples: + * '="V"' → { term: 'V', exact: true } + * '=V' → { term: 'V', exact: true } + * '"V"' → { term: 'V', exact: false } + * 'VIZ' → { term: 'VIZ', exact: false } + */ +function parseSearch(str) { + if (!str) return { term: str, exact: false }; + let exact = false; + if (str.startsWith('=')) { + exact = true; + str = str.slice(1); + } + if ((str.startsWith('"') && str.endsWith('"')) || + (str.startsWith("'") && str.endsWith("'"))) { + str = str.slice(1, -1); + } + return { term: str, exact }; +} + +/** + * Recursively walk an object looking for a string value matching searchStr. + * Zero-allocation: no JSON.stringify, just walks existing objects. + * If exact=true, uses === instead of .includes() for string values. + */ +function deepIncludes(obj, searchStr, exact) { + if (obj === null || obj === undefined) return false; + if (typeof obj === 'string') return exact ? (obj === searchStr) : obj.includes(searchStr); + if (typeof obj === 'number' || typeof obj === 'boolean') return false; + if (typeof obj === 'bigint') return exact ? (obj.toString() === searchStr) : obj.toString().includes(searchStr); + if (Buffer.isBuffer(obj)) return false; // skip binary + if (Array.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + if (deepIncludes(obj[i], searchStr, exact)) return true; + } + return false; + } + if (typeof obj === 'object') { + for (const key of Object.keys(obj)) { + if (exact ? (key === searchStr) : key.includes(searchStr)) return true; + if (deepIncludes(obj[key], searchStr, exact)) return true; + } + } + return false; +} + +/** + * Check if any operation in a block contains the search string. + * Uses recursive walk instead of JSON.stringify to avoid large temp strings. + * Returns matching operations array (empty if none). + */ +function findOpsByString(block, searchStr, exact) { + const ops = collectOps(block); + const matched = []; + for (const op of ops) { + if (op.typeName && (exact ? op.typeName === searchStr : op.typeName.includes(searchStr))) { + matched.push(op); + continue; + } + if (deepIncludes(op.data, searchStr, exact)) { + matched.push(op); + } + } + return matched; +} + +/** + * Deserialize a block from an existing raw buffer (no re-read, no 1MB over-allocate). + * Returns the block object or null on error. + */ +function deserializeFromRaw(rawBuf) { + try { + const br = new BinaryReader(rawBuf); + const block = readSignedBlock(br); + return block; + } catch (e) { + console.error(` deserializeFromRaw ERROR: ${e.message} (bufLen=${rawBuf.length})`); + return null; + } +} + +/** + * Fast raw ASCII byte search forward — no deserialization, just scans raw block bytes. + * Only finds ASCII strings (English, digits). Use S for UTF-8/emoji search. + */ +function searchRawForward(str) { + lastSearch = { type: 'R', term: str }; + if (scanning) { console.log(' Already scanning.'); return; } + scanning = true; + const YIELD_EVERY = 200; // raw scan is lighter, can do more per yield + let currentNum = currentBlockNum + 1; + + console.log(` Raw searching for ASCII "${str}" forward from #${currentNum}...`); + + function processChunk() { + const chunkEnd = Math.min(currentNum + YIELD_EVERY - 1, endBlock); + + const positions = reader.readBlockPosBatch(currentNum, chunkEnd - currentNum + 2); + if (positions.length === 0) { + currentNum = chunkEnd + 1; + setImmediate(processChunk); + return; + } + + for (let num = currentNum; num <= chunkEnd; num++) { + const i = num - currentNum; + const startPos = Number(positions[i]); + const endPos = (i + 1 < positions.length) ? Number(positions[i + 1]) : (Number(reader.dataSize) - 8); + const blockSize = endPos - startPos; + if (blockSize <= 0 || blockSize > CONSTANTS.CHAIN_BLOCK_SIZE + 16) continue; + + let rawBuf = null; + try { + rawBuf = reader._readData(BigInt(startPos), blockSize); + if (bufIncludesAscii(rawBuf, str)) { + // Found — deserialize to show context + const block = deserializeFromRaw(rawBuf); + rawBuf = null; + if (block) { + currentBlockNum = num; + showBlock(block); + showOps(block); + } else { + currentBlockNum = num; + console.log(` Block #${num} contains "${str}" in raw bytes (could not deserialize).`); + } + scanning = false; + showPrompt(); + return; + } + } catch (e) { /* skip */ } + rawBuf = null; // free buffer + } + + process.stdout.write(`\r Scanning... #${chunkEnd} `); + currentNum = chunkEnd + 1; + if (currentNum <= endBlock) { + setImmediate(processChunk); + } else { + console.log('\r No blocks containing ASCII "' + str + '" found. '); + scanning = false; + showPrompt(); + } + } + + processChunk(); +} + +/** + * Search forward for next block containing string in any operation's JSON. + * Only deserializes blocks that have operations (bitmask or tx-count filter). + * Yields to event loop every YIELD_EVERY blocks so GC can reclaim memory. + * Supports UTF-8, emoji, and any string in operation data. + */ +function searchStringForward(str, exact) { + lastSearch = { type: 'S', term: str, exact: !!exact }; + if (scanning) { console.log(' Already scanning.'); return; } + scanning = true; + const YIELD_EVERY = 100; + let currentNum = currentBlockNum + 1; + + console.log(` Searching for ${exact ? 'exact' : 'substring'} "${str}" in op JSON forward from #${currentNum}...`); + + function processChunk() { + const chunkEnd = Math.min(currentNum + YIELD_EVERY - 1, endBlock); + + // Read index positions in bulk for this chunk + const positions = reader.readBlockPosBatch(currentNum, chunkEnd - currentNum + 2); + if (positions.length === 0) { + currentNum = chunkEnd + 1; + setImmediate(processChunk); + return; + } + + for (let num = currentNum; num <= chunkEnd; num++) { + const i = num - currentNum; + + // Skip blocks with no operations (bitmask only — no per-block I/O) + if (bitmaskValid() && bitmaskGet(num) === 0) continue; + + // Read exact-size bytes and deserialize + const startPos = Number(positions[i]); + const endPos = (i + 1 < positions.length) ? Number(positions[i + 1]) : (Number(reader.dataSize) - 8); + const blockSize = endPos - startPos; + if (blockSize <= 0 || blockSize > CONSTANTS.CHAIN_BLOCK_SIZE + 16) continue; + + // Debug: log block number and size every 1000 blocks or if block is large + if (num % 1000 === 0 || blockSize > 100000) { + const memMB = process.memoryUsage().heapUsed / 1024 / 1024; + process.stdout.write(`\r #${num} size=${blockSize} heap=${memMB.toFixed(0)}MB \n`); + } + + let rawBuf = null; + let block = null; + try { + rawBuf = reader._readData(BigInt(startPos), blockSize); + block = deserializeFromRaw(rawBuf); + } catch (e) { /* skip */ } + rawBuf = null; + + if (block) { + const matched = findOpsByString(block, str, exact); + if (matched.length > 0) { + currentBlockNum = num; + showBlock(block); + for (const op of matched) { + const tag = op.isVirtual ? '[V]' : ' '; + console.log(` ${tag} ${op.typeName}`); + try { + const json = JSON.stringify(op.data, (key, val) => { + if (val && val.type === 'Buffer') return ``; + if (Buffer.isBuffer(val)) return ``; + if (typeof val === 'bigint') return val.toString(); + return val; + }, 2); + for (const line of json.split('\n')) { + console.log(' ' + line); + } + } catch (e) { + console.log(' (serialization error)'); + } + console.log(''); + } + scanning = false; + showPrompt(); + return; + } + } + block = null; + } + + process.stdout.write(`\r Scanning... #${chunkEnd} `); + currentNum = chunkEnd + 1; + if (currentNum <= endBlock) { + setImmediate(processChunk); + } else { + console.log('\r No matching operations found. '); + scanning = false; + showPrompt(); + } + } + + processChunk(); +} + +/** + * JSON replacer for Buffer/bigint serialization + */ +function jsonReplacer(key, val) { + if (val && val.type === 'Buffer' && Array.isArray(val.data)) return Buffer.from(val.data).toString('hex'); + if (Buffer.isBuffer(val)) return val.toString('hex'); + if (typeof val === 'bigint') return val.toString(); + return val; +} + +/** + * Search all blocks and export matching operations to JSON file. + * Streams results to disk: writes each chunk's matches as JSON objects, + * then clears them from memory. Yields every YIELD_EVERY blocks for GC. + * Final file = "[" + obj1 + "," + obj2 + ... + "]". + */ +function searchExport(str, exact) { + lastSearch = { type: 'e', term: str, exact: !!exact }; + if (scanning) { console.log(' Already scanning.'); return; } + scanning = true; + + let matchCount = 0; + let blockCount = 0; + let writtenBytes = 0; + const total = endBlock - startBlock + 1; + let lastPct = -1; + const YIELD_EVERY = 100; + let currentNum = startBlock; + let needComma = false; // whether to prepend "," before next object + + // Open export file, write opening "[" + const unixTime = Math.floor(Date.now() / 1000); + const outPath = path.join(path.dirname(reader.dataPath), `search_export_${unixTime}.json`); + const fd = fs.openSync(outPath, 'w'); + fs.writeSync(fd, '[\n', null, 'utf8'); + writtenBytes += 2; + + console.log(` Exporting all operations ${exact ? 'exactly matching' : 'containing'} "${str}" from #${startBlock} to #${endBlock}...`); + console.log(` Output: ${path.basename(outPath)}`); + + function processChunk() { + const chunkEnd = Math.min(currentNum + YIELD_EVERY - 1, endBlock); + + // Read index positions in bulk + const positions = reader.readBlockPosBatch(currentNum, chunkEnd - currentNum + 2); + + for (let num = currentNum; num <= chunkEnd; num++) { + const i = num - currentNum; + + // Skip blocks with no operations (bitmask only — no per-block I/O) + if (bitmaskValid() && bitmaskGet(num) === 0) continue; + + const startPos = (i < positions.length) ? Number(positions[i]) : 0; + const endPos = (i + 1 < positions.length) ? Number(positions[i + 1]) : 0; + const blockSize = endPos - startPos; + if (blockSize <= 0 || blockSize > CONSTANTS.CHAIN_BLOCK_SIZE + 16) continue; + + // Debug: log block number and size every 1000 blocks or if block is large + if (num % 1000 === 0 || blockSize > 100000) { + const memMB = process.memoryUsage().heapUsed / 1024 / 1024; + process.stdout.write(`\r #${num} size=${blockSize} heap=${memMB.toFixed(0)}MB \n`); + } + + // Read exact-size bytes and deserialize + let rawBuf = null; + let block = null; + try { + rawBuf = reader._readData(BigInt(startPos), blockSize); + block = deserializeFromRaw(rawBuf); + } catch (e) { /* skip */ } + rawBuf = null; + + if (block) { + const matched = findOpsByString(block, str, exact); + if (matched.length > 0) { + blockCount++; + for (const op of matched) { + matchCount++; + // Flush each op immediately — don't accumulate references + const prefix = needComma ? ',\n' : ''; + needComma = true; + const record = { + block: num, + timestamp: formatTimestamp(block.timestamp), + witness: block.witness, + typeId: op.typeId, + typeName: op.typeName, + isVirtual: op.isVirtual, + data: op.data + }; + const json = JSON.stringify(record, jsonReplacer, 2); + const chunk = prefix + json; + fs.writeSync(fd, chunk, null, 'utf8'); + writtenBytes += Buffer.byteLength(chunk, 'utf8'); + } + } + } + block = null; + } + + const pct = Math.floor(((chunkEnd - startBlock) / total) * 100); + if (pct !== lastPct && pct % 5 === 0) { + lastPct = pct; + const sizeMB = (writtenBytes / 1024 / 1024).toFixed(1); + process.stdout.write(`\r Scanning... ${pct}% (#${chunkEnd}, ${matchCount} ops in ${blockCount} blocks, ${sizeMB} MB written) `); + } else { + process.stdout.write(`\r Scanning... #${chunkEnd} (${matchCount} ops) `); + } + + currentNum = chunkEnd + 1; + if (currentNum <= endBlock) { + setImmediate(processChunk); + } else { + // Close the JSON array + fs.writeSync(fd, '\n]', null, 'utf8'); + writtenBytes += 2; + fs.closeSync(fd); + + if (matchCount === 0) { + // Remove empty file + fs.unlinkSync(outPath); + console.log('\r No matching operations found. '); + } else { + const sizeMB = (writtenBytes / 1024 / 1024).toFixed(1); + console.log(`\r Done. ${matchCount} ops in ${blockCount} blocks. Saved ${sizeMB} MB to ${path.basename(outPath)} `); + } + scanning = false; + showPrompt(); + } + } + + processChunk(); +} + +function showCurrentOps(filter) { + try { + const block = reader.readBlockByNum(currentBlockNum); + if (!block) { console.log('No current block (deserialization failed).'); return; } + showOps(block, filter || null); + } catch (e) { + console.log(`Cannot show ops: ${e.message}`); + } +} + +function showCurrentInfo() { + try { + const block = reader.readBlockByNum(currentBlockNum); + if (!block) { + const header = reader.readBlockHeaderByNum(currentBlockNum); + showBlockHeaderOnly(header, currentBlockNum, 'Full deserialization failed'); + return; + } + showBlock(block); + } catch (e) { + const header = reader.readBlockHeaderByNum(currentBlockNum); + showBlockHeaderOnly(header, currentBlockNum, e.message); + } +} + +function showBlockHex() { + const raw = reader.readBlockRawData(currentBlockNum); + if (!raw) { + console.log(`Block #${currentBlockNum} raw data not available (out of range).`); + return; + } + + const pos = reader.getBlockPos(currentBlockNum); + console.log(''); + console.log(`Raw block #${currentBlockNum}: offset ${pos}, ${raw.length} bytes`); + console.log('='.repeat(73)); + + const BYTES_PER_LINE = 16; + for (let offset = 0; offset < raw.length; offset += BYTES_PER_LINE) { + const slice = raw.slice(offset, Math.min(offset + BYTES_PER_LINE, raw.length)); + const hexParts = []; + const asciiParts = []; + + for (let i = 0; i < BYTES_PER_LINE; i++) { + if (i < slice.length) { + hexParts.push(slice.readUInt8(i).toString(16).padStart(2, '0')); + const c = slice.readUInt8(i); + asciiParts.push(c >= 0x20 && c < 0x7f ? String.fromCharCode(c) : '.'); + } else { + hexParts.push(' '); + asciiParts.push(' '); + } + if (i === 7) hexParts.push(''); // extra space in the middle + } + + const addr = offset.toString(16).padStart(8, '0'); + console.log(` ${addr} ${hexParts.join(' ')} |${asciiParts.join('')}|`); + } + + console.log('='.repeat(73)); + console.log(` ${raw.length} bytes total`); + + // Also show as continuous hex on one line for easy copy + const hexLine = raw.toString('hex'); + console.log(` Hex (first 128 bytes): ${hexLine.slice(0, 256)}`); + if (hexLine.length > 256) { + console.log(` ... (${hexLine.length / 2 - 128} more bytes)`); + } +} + +// ============================================================================ +// Main Loop +// ============================================================================ + +function main() { + const args = process.argv.slice(2); + if (args.length < 1) { + console.log('Usage: node block-log-viewer.js [--dlt] [--reader=]'); + console.log(''); + console.log(' can be:'); + console.log(' - Path to block_log or dlt_block_log file directly'); + console.log(' - Path to directory containing block_log / dlt_block_log'); + console.log(''); + console.log('Options:'); + console.log(' --dlt Use DLT (rolling) block log reader'); + console.log(' --reader= Path to block-log-reader.js module'); + process.exit(1); + } + + let dataPath = args.find(a => !a.startsWith('--')); + let isDlt = args.includes('--dlt'); + + // If path is a directory, auto-detect block_log or dlt_block_log inside it + if (fs.existsSync(dataPath) && fs.statSync(dataPath).isDirectory()) { + const dltPath = path.join(dataPath, 'dlt_block_log'); + const stdPath = path.join(dataPath, 'block_log'); + + if (!isDlt && fs.existsSync(dltPath) && !fs.existsSync(stdPath)) { + // Only dlt_block_log exists — auto-switch to DLT mode + dataPath = dltPath; + isDlt = true; + } else if (isDlt) { + if (!fs.existsSync(dltPath)) { + console.log(`dlt_block_log not found in: ${dataPath}`); + process.exit(1); + } + dataPath = dltPath; + } else { + if (!fs.existsSync(stdPath)) { + console.log(`block_log not found in: ${dataPath}`); + process.exit(1); + } + dataPath = stdPath; + } + } + + if (!fs.existsSync(dataPath)) { + console.log(`File not found: ${dataPath}`); + process.exit(1); + } + + try { + reader = createBlockLogReader(dataPath, undefined, isDlt); + } catch (e) { + console.log(`Failed to open block log: ${e.message}`); + process.exit(1); + } + + startBlock = reader.getStartBlockNum(); + endBlock = reader.getHeadBlockNum(); + + if (endBlock === 0) { + console.log('Block log appears empty (index has no entries).'); + reader.close(); + process.exit(1); + } + + console.log(''); + console.log(`VIZ Block Log Viewer`); + console.log(` File : ${dataPath}`); + console.log(` Type : ${isDlt ? 'DLT (rolling)' : 'Standard'}`); + console.log(` Blocks : #${startBlock} - #${endBlock} (${endBlock - startBlock + 1} total)`); + + // Try to load bitmask + const bmLoaded = bitmaskLoad(); + if (bmLoaded) { + console.log(` Bitmask : LOADED (${path.basename(bitmaskPath())})`); + } else if (bitmask) { + console.log(` Bitmask : outdated, run 'scan' to rebuild`); + } else { + console.log(` Bitmask : not found, run 'scan' to build`); + } + console.log(''); + + // Show first block + goTo(startBlock); + showHelp(); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + prompt: '' + }); + + const onLine = (line) => { + if (scanning) return; // ignore input during scan + const trimmed = line.trim(); + if (!trimmed) { showPrompt(); return; } + + const parts = trimmed.split(/\s+/); + const cmd = parts[0]; + + switch (cmd) { + case 'f': goFirst(); break; + case 'l': goLast(); break; + case 'n': goNext(); break; + case 'p': goPrev(); break; + case 'N': goNextWithOps(); break; + case 'P': goPrevWithOps(); break; + case 'scan': bitmaskScan(); break; + case 'g': { + const num = parseInt(parts[1], 10); + if (isNaN(num)) { console.log('Usage: g '); break; } + goTo(num); + break; + } + case 'o': { + showCurrentOps(parts.slice(1).join(' ') || null); + break; + } + case 's': { + const name = parts.slice(1).join(' '); + if (!name) { console.log('Usage: s '); break; } + searchOpForward(name); + break; + } + case 'S': { + const { term, exact } = parseSearch(parts.slice(1).join(' ')); + if (!term) { console.log('Usage: S (prefix with = for exact match, e.g. S ="V")'); break; } + searchStringForward(term, exact); + break; + } + case 'R': { + const { term } = parseSearch(parts.slice(1).join(' ')); + if (!term) { console.log('Usage: R (ASCII only)'); break; } + searchRawForward(term); + break; + } + case 'e': { + const { term, exact } = parseSearch(parts.slice(1).join(' ')); + if (!term) { console.log('Usage: e (prefix with = for exact match, e.g. e ="V")'); break; } + searchExport(term, exact); + break; + } + case 'c': { + if (!lastSearch) { console.log('No previous search. Use s, S, R, or e first.'); break; } + if (lastSearch.type === 's') searchOpForward(lastSearch.term); + else if (lastSearch.type === 'S') searchStringForward(lastSearch.term, lastSearch.exact); + else if (lastSearch.type === 'R') searchRawForward(lastSearch.term); + else if (lastSearch.type === 'e') searchExport(lastSearch.term, lastSearch.exact); + break; + } + case 'i': showCurrentInfo(); break; + case 'hex': showBlockHex(); break; + case 'h': showHelp(); break; + case 'q': + console.log('Bye.'); + reader.close(); + process.exit(0); + break; + default: + // Allow raw number input to jump to block + const maybeNum = parseInt(cmd, 10); + if (!isNaN(maybeNum) && parts.length === 1) { + goTo(maybeNum); + } else { + console.log(`Unknown command: ${cmd}. Type h for help.`); + } + } + showPrompt(); + }; + + rl.on('line', onLine); + showPrompt(); +} + +main(); diff --git a/.qoder/docs/block-processing.md b/.qoder/docs/block-processing.md index cf6b6971bd..5baad05e73 100644 --- a/.qoder/docs/block-processing.md +++ b/.qoder/docs/block-processing.md @@ -221,6 +221,62 @@ _required_witness_participation = options["required-participation"].as --- +## Witness Block Production Timing + +Source: [witness.cpp](../../plugins/witness/witness.cpp) + +### Production Loop Mechanism + +The witness plugin uses a timer-based production loop with a look-ahead to detect when it's time to produce a block: + +1. **Timer** fires every **250ms** (aligned to 250ms boundaries, minimum sleep 50ms) +2. On each tick, `maybe_produce_block()` computes `now = NTP_time + 250ms` (look-ahead) +3. `get_slot_at_time(now)` finds which slot corresponds to `now` +4. If the slot belongs to one of our witnesses and `|scheduled_time - now| <= 500ms`, the block is produced with `scheduled_time` as the timestamp + +The block timestamp is always the **deterministic slot time** (computed from `head_block_time` rounded to `CHAIN_BLOCK_INTERVAL` boundary + `slot_num × 3s`), never the current clock time. + +### Why 250ms tick + 250ms look-ahead? + +With these matching values, the tick at `T_slot - 250ms` aligns `now` exactly to the slot boundary: + +``` +Slot at T=6.000, tick at T=5.750: + now = 5.750 + 0.250 = 6.000 → slot matched → lag = 0ms → PRODUCE +``` + +This gives a **500ms safety margin** against the LAG threshold, compared to 0ms margin with the previous 1000ms tick + 500ms look-ahead. + +### Missed Block Behavior + +When a witness misses their slot, the production loop does NOT wait or retry. The next tick simply finds a later slot: + +``` +Slot T=3 missed (witness A absent): + Tick at T=3.000 → now=3.250 → slot=1 → witness A → not our witness → not_my_turn + (A's slot passes unclaimed) + +Slot T=6 (witness B - our witness): + Tick at T=5.750 → now=6.000 → slot=2 → witness B → PRODUCE with timestamp T=6.000 +``` + +When block at T=6 is pushed, `update_global_dynamic_data()` counts `missed_blocks = get_slot_at_time(6.000) - 1 = 1` and increments `current_aslot` accordingly. + +### Production Conditions (in order) + +| Check | Condition | Result if failed | +|---|---|---| +| Sync status | Chain is not stale (or `enable-stale-production`) | `not_synced` | +| Slot time | `get_slot_at_time(now) > 0` | `not_time_yet` | +| Witness ownership | Scheduled witness is in our `_witnesses` set | `not_my_turn` | +| Signing key | Witness has non-zero `signing_key` on chain | `not_my_turn` | +| Private key | We have the private key for the signing key | `no_private_key` | +| Participation | Network participation ≥ required (pre-HF12 only) | `low_participation` | +| Lag | `|scheduled_time - now| <= 500ms` | `lag` | +| Fork collision | No competing block at same height in fork_db | `fork_collision` | + +--- + ## Configuration Constants | Constant | Value | Purpose | diff --git a/.qoder/docs/index.md b/.qoder/docs/index.md index cf3da981ad..462dae3ad6 100644 --- a/.qoder/docs/index.md +++ b/.qoder/docs/index.md @@ -21,6 +21,7 @@ Full specification and implementation checklist for building VIZ blockchain clie | [plugins.md](plugins.md) | All node plugins, dependencies, status, JSON-RPC method tables | | [block-processing.md](block-processing.md) | Block application flow, pending transactions, postponed tx mechanism | | [shared-memory.md](shared-memory.md) | Shared memory architecture, locking model, resize workflow, config parameters, corruption risks | +| [block-log-spec.md](block-log-spec.md) | Block log binary format, index files, operation serialization, **tools: reader/viewer, bitmask, search & export** | | [fork-collision-hardfork-proposal.md](fork-collision-hardfork-proposal.md) | Fork collision analysis, HF12 proposal for consensus improvements | | [consensus-emergency-params.md](consensus-emergency-params.md) | Emergency restart parameters (enable-stale-production, required-participation, fork_db) & micro-fork risks | | [emergency-consensus-review.md](emergency-consensus-review.md) | HF12 implementation review: failure/rollback procedures, threat model, test matrix | diff --git a/.qoder/docs/plugins.md b/.qoder/docs/plugins.md index cfde089a92..e500e15f3b 100644 --- a/.qoder/docs/plugins.md +++ b/.qoder/docs/plugins.md @@ -700,6 +700,33 @@ The `required-participation` value is now always in **basis points** (0–10000 - Config: `required-participation = 5000` = 50% - CLI: `--required-participation 5000` = 50% +**Optimization: Block Production Timing** + +The witness plugin's production loop uses a timer + look-ahead mechanism to determine when to produce a block. The timer ticks at regular intervals and the look-ahead shifts `now` forward so the slot boundary is detected earlier. + +Source: [witness.cpp](../../plugins/witness/witness.cpp) — `schedule_production_loop()`, `maybe_produce_block()` + +| Parameter | Value | Meaning | +|---|---|---| +| Timer tick interval | 250ms | How often the production loop wakes up | +| Look-ahead | +250ms | `now = ntp_time + 250ms` — shifts current time forward | +| Lag threshold | 500ms | If `|scheduled_time - now| > 500ms`, block is NOT produced (LAG condition) | + +The look-ahead compensates for OS timer jitter. With 250ms ticks + 250ms look-ahead, the tick at `T_slot - 250ms` aligns `now` exactly to the slot boundary, achieving near-zero-lag production: + +``` +Slot at T=6.000: + Tick at T=5.750 → now=6.000 → slot matched → lag=0ms → PRODUCE +``` + +If the tick fires late (OS jitter), the next tick 250ms later still has comfortable margin: +``` + Tick at T=6.000 → now=6.250 → lag=250ms → PRODUCE (within 500ms threshold) + Tick at T=6.250 → now=6.500 → lag=500ms → borderline LAG +``` + +**Previous behavior** (before optimization): 1000ms tick + 500ms look-ahead → best-case lag was 500ms (exactly at the threshold), and even 50ms of OS jitter caused a LAG condition. + --- ## Debug/Test Plugins diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Chain Library.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Chain Library.md index 16209e2699..59802d8dbd 100644 --- a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Chain Library.md +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Chain Library.md @@ -29,12 +29,12 @@ ## Update Summary **Changes Made** -- Enhanced blockchain synchronization logging with new `sync_start_logged` guard variable to prevent duplicate sync start messages -- Increased logging frequency from every 10,000 blocks to every 500 blocks during synchronization for better progress monitoring -- Enhanced logging system documentation with ANSI yellow color codes for blockchain synchronization messages -- Updated troubleshooting guide to include color-coded log interpretation -- Added comprehensive logging color scheme documentation for operational visibility -- Updated performance considerations to include logging overhead analysis +- Enhanced blockchain synchronization logging with guard variable to prevent duplicate sync start messages +- Updated sync restart reasons to use info-level logging instead of debug-level for clearer insights +- Added block processing logs with current head block numbers and gap calculations +- Increased logging frequency from every 10,000 blocks to every 500 blocks during synchronization +- Enhanced logging system documentation with ANSI color codes for operational visibility +- Improved network node synchronization logging with info-level messages for sync restart reasons ## Table of Contents 1. [Introduction](#introduction) @@ -739,6 +739,35 @@ The ANSI color codes provide immediate visual feedback in terminal environments: - [snapshot_plugin.cpp:1770-1771](file://plugins/snapshot/plugin.cpp#L1770-L1771) - [witness.cpp:286](file://plugins/witness/witness.cpp#L286) +### Network Node Synchronization Logging Enhancements +**Updated** The network node synchronization system now uses info-level logging for sync restart reasons, providing clearer insights into synchronization behavior: + +- **Info-level logging**: Sync restart reasons now use ilog instead of dlog for better visibility +- **Current head block numbers**: Logs include current head block numbers and gap calculations +- **Enhanced sync restart detection**: Improved logging for peer synchronization restarts +- **Block acceptance notifications**: Yellow progress messages with block numbers and producer information + +**Section sources** +- [node.cpp:2428-2444](file://libraries/network/node.cpp#L2428-L2444) +- [node.cpp:3276-3280](file://libraries/network/node.cpp#L3276-L3280) +- [database.cpp:5295-5303](file://libraries/chain/database.cpp#L5295-L5303) + +### Enhanced Logging Improvements Summary +The logging system enhancements include: + +1. **Guard Variable Protection**: `sync_start_logged` prevents duplicate sync start messages +2. **Info-Level Logging**: Sync restart reasons use ilog instead of dlog for better visibility +3. **Enhanced Progress Frequency**: Logging occurs every 500 blocks instead of every 10,000 blocks +4. **Color-Coded Notifications**: ANSI escape sequences provide visual distinction for different log types +5. **Current Head Block Numbers**: Logs include current head block numbers and gap calculations +6. **Improved Network Sync**: Better logging for peer synchronization restarts and block acceptance + +**Section sources** +- [plugin.cpp:58-121](file://plugins/chain/plugin.cpp#L58-L121) +- [node.cpp:2428-2444](file://libraries/network/node.cpp#L2428-L2444) +- [node.cpp:3276-3280](file://libraries/network/node.cpp#L3276-L3280) +- [database.cpp:5295-5303](file://libraries/chain/database.cpp#L5295-L5303) + ## Dependency Analysis The database depends on: - fork_database for chain selection @@ -806,6 +835,8 @@ LOGSYS --> WITNESS["witness.cpp"] - Snapshot loading: Use snapshot mode for rapid node startup, especially for large blockchains. - **New**: Enhanced logging performance: Color-coded logging with guard variables and increased frequency provides better operational visibility with minimal overhead while significantly improving troubleshooting efficiency. - **New**: Synchronization monitoring: The `sync_start_logged` guard prevents duplicate messages and reduces log volume during sync sessions. +- **New**: Info-level logging for sync restarts: Using ilog instead of dlog for sync restart reasons provides clearer insights into synchronization behavior. +- **New**: Network synchronization improvements: Enhanced logging with current head block numbers and gap calculations improves monitoring accuracy. ## Troubleshooting Guide Common issues and remedies: @@ -819,6 +850,8 @@ Common issues and remedies: - Chain ID mismatches: Snapshot loading validates chain ID compatibility; ensure using correct snapshot for target network. - **New**: Enhanced color-coded log interpretation: Use green messages for synchronization start (once per session), yellow messages for synchronization progress every 500 blocks, green for successful operations, orange for snapshot operations, and red for critical errors to quickly identify operational status. - **New**: Synchronization monitoring: The guard variable prevents duplicate sync start messages and ensures consistent progress reporting every 500 blocks. +- **New**: Info-level logging improvements: Sync restart reasons now use info-level logging for better visibility and clearer insights into synchronization behavior. +- **New**: Network synchronization logging: Enhanced logging with current head block numbers and gap calculations provides better monitoring accuracy. **Section sources** - [database.cpp:232-248](file://libraries/chain/database.cpp#L232-L248) @@ -829,7 +862,7 @@ Common issues and remedies: - [snapshot_plugin.cpp:1018-1020](file://plugins/snapshot/plugin.cpp#L1018-L1020) ## Conclusion -The Chain Library provides a robust, modular framework for blockchain state management with enhanced snapshot loading capabilities and DLT mode support. Its design separates concerns across database orchestration, fork handling, durable storage, typed object models, operation processing, and event-driven observation. The addition of snapshot loading enables rapid node startup and state restoration, while DLT mode provides selective block retention for compliance and archival purposes. The enhanced logging system with ANSI color codes significantly improves operational visibility during synchronization and troubleshooting, featuring guard variables to prevent duplicate messages and increased frequency monitoring for better progress tracking. By leveraging ChainBase for persistence, fork_database for consensus, block_log for storage, the new DLT block log for selective retention, and comprehensive color-coded logging for operational insights, it achieves high throughput, reliability, and regulatory compliance. Developers can extend functionality via evaluators and observe state changes through signals, enabling flexible plugin architectures with enhanced operational capabilities. +The Chain Library provides a robust, modular framework for blockchain state management with enhanced snapshot loading capabilities and DLT mode support. Its design separates concerns across database orchestration, fork handling, durable storage, typed object models, operation processing, and event-driven observation. The addition of snapshot loading enables rapid node startup and state restoration, while DLT mode provides selective block retention for compliance and archival purposes. The enhanced logging system with ANSI color codes significantly improves operational visibility during synchronization and troubleshooting, featuring guard variables to prevent duplicate messages and increased frequency monitoring for better progress tracking. The updated info-level logging for sync restart reasons provides clearer insights into synchronization behavior with current head block numbers and gap calculations. By leveraging ChainBase for persistence, fork_database for consensus, block_log for storage, the new DLT block log for selective retention, and comprehensive color-coded logging for operational insights, it achieves high throughput, reliability, and regulatory compliance. Developers can extend functionality via evaluators and observe state changes through signals, enabling flexible plugin architectures with enhanced operational capabilities. ## Appendices @@ -857,6 +890,10 @@ The Chain Library provides a robust, modular framework for blockchain state mana - Green messages for successful block generation - Orange messages for snapshot import operations - Red messages for error conditions +- **New**: Network synchronization logging: + - Info-level logging for sync restart reasons with clearer insights + - Current head block numbers and gap calculations in DLT mode + - Enhanced sync progress notifications with producer information **Section sources** - [database.cpp:206-350](file://libraries/chain/database.cpp#L206-L350) @@ -876,6 +913,8 @@ The Chain Library provides a robust, modular framework for blockchain state mana - **New**: Optimize snapshot loading: Use appropriate snapshot files and monitor import performance with color-coded progress indicators. - **New**: Manage DLT storage: Regularly monitor DLT block log size and adjust retention policies. - **New**: Enhanced logging optimization: Color-coded logging with guard variables and increased frequency provides better operational benefits with minimal overhead. +- **New**: Info-level logging optimization: Using ilog for sync restart reasons improves visibility with minimal performance impact. +- **New**: Network synchronization optimization: Enhanced logging with current head block numbers and gap calculations provides better monitoring accuracy. **Section sources** - [database.cpp:368-430](file://libraries/chain/database.cpp#L368-L430) @@ -919,6 +958,7 @@ Usage scenarios: - **Block Generation**: Green messages for successful block production - **Error Conditions**: Cyan messages for critical failures - **Debug Information**: Default color for low-level operational details +- **Network Sync**: Info-level messages for sync restarts and peer interactions with current head block numbers #### Guard Variables and Frequency Control - **`sync_start_logged`**: Boolean guard variable to prevent duplicate sync start messages @@ -932,4 +972,24 @@ Usage scenarios: - [snapshot_plugin.cpp:50-53](file://plugins/snapshot/plugin.cpp#L50-L53) - [console_appender.cpp:132-154](file://thirdparty/fc/src/log/console_appender.cpp#L132-L154) - [node.cpp:3446-3456](file://libraries/network/node.cpp#L3446-L3456) -- [witness.cpp:286](file://plugins/witness/witness.cpp#L286) \ No newline at end of file +- [witness.cpp:286](file://plugins/witness/witness.cpp#L286) + +### Network Synchronization Logging Reference +**New Section** Enhanced logging improvements for network synchronization + +#### Info-Level Logging Improvements +- **Sync Restart Reasons**: Now use ilog instead of dlog for better visibility +- **Peer Synchronization**: Enhanced logging for peer synchronization restarts +- **Block Acceptance**: Yellow progress messages with block numbers and producer information +- **Gap Calculations**: Current head block numbers and gap calculations in DLT mode + +#### Logging Categories +- **Sync Start**: Green messages with block numbers and head information +- **Sync Progress**: Yellow messages every 500 blocks with timestamp and producer +- **Sync End**: Reset messages when normal blocks are received +- **Network Events**: Info-level messages for sync restarts and peer interactions with enhanced detail + +**Section sources** +- [node.cpp:2428-2444](file://libraries/network/node.cpp#L2428-L2444) +- [node.cpp:3276-3280](file://libraries/network/node.cpp#L3276-L3280) +- [database.cpp:5295-5303](file://libraries/chain/database.cpp#L5295-L5303) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Database Management/Database Management.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Database Management/Database Management.md index 3e75d47491..31ffd8cf76 100644 --- a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Database Management/Database Management.md +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Database Management/Database Management.md @@ -10,6 +10,7 @@ - [dlt_block_log.cpp](file://libraries/chain/dlt_block_log.cpp) - [fork_database.hpp](file://libraries/chain/include/graphene/chain/fork_database.hpp) - [fork_database.cpp](file://libraries/chain/fork_database.cpp) +- [database_exceptions.hpp](file://libraries/chain/include/graphene/chain/database_exceptions.hpp) - [plugin.cpp](file://plugins/snapshot/plugin.cpp) - [db_with.hpp](file://libraries/chain/include/graphene/chain/db_with.hpp) - [witness.cpp](file://plugins/witness/witness.cpp) @@ -18,16 +19,16 @@ - [chainbase.hpp](file://thirdparty/chainbase/include/chainbase/chainbase.hpp) - [node.cpp](file://libraries/network/node.cpp) - [exceptions.hpp](file://libraries/network/include/graphene/network/exceptions.hpp) +- [p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) ## Update Summary **Changes Made** -- Enhanced error handling in blockchain database layer to address shared memory exhaustion scenarios -- Implemented deferred shared memory resize mechanism with improved thread safety -- Added comprehensive memory management logging for peer connectivity during memory pressure situations -- Updated push_block() and _generate_block() methods to handle boost::interprocess::bad_alloc exceptions gracefully -- Enhanced apply_pending_resize() method with proper write lock acquisition and race condition prevention -- Improved peer connectivity handling during memory pressure by returning false instead of throwing for shared memory exhaustion +- Enhanced fork database exception prevention mechanisms with comprehensive early rejection logic +- Implemented intelligent early block rejection that prevents fork database exceptions and synchronization restart loops +- Added proactive block rejection for blocks at or below head on dead forks, avoiding unnecessary fork database operations +- Improved P2P synchronization integration with early rejection logic classification +- Enhanced error handling for unlinkable blocks with proper peer classification ## Table of Contents 1. [Introduction](#introduction) @@ -37,14 +38,14 @@ 5. [Detailed Component Analysis](#detailed-component-analysis) 6. [Emergency Consensus Implementation](#emergency-consensus-implementation) 7. [Dependency Analysis](#dependency-analysis) -8. [Performance Considerations](#performance-considerations) +8 [Performance Considerations](#performance-considerations) 9. [Troubleshooting Guide](#troubleshooting-guide) 10. [Conclusion](#conclusion) ## Introduction This document describes the Database Management system that serves as the core state persistence layer for the VIZ blockchain. It covers the database class lifecycle, initialization and cleanup, validation steps, session management, memory allocation strategies, shared memory configuration, checkpoints for fast synchronization, block log integration, observer pattern usage, DLT mode detection and conditional operations, enhanced block fetching logic with DLT mode awareness, the new `_dlt_gap_logged` flag mechanism for suppressing repeated warnings, and practical examples of database operations and performance optimization. -**Updated** - Enhanced with comprehensive error handling improvements for shared memory exhaustion scenarios, including deferred shared memory resize mechanism, improved thread safety during memory resize operations, and enhanced peer connectivity management during memory pressure situations. The database now provides graceful handling of boost::interprocess::bad_alloc exceptions by returning false instead of throwing, preventing P2P layer disconnections and maintaining witness slot-miss logging while preserving node connectivity. +**Updated** - Enhanced with comprehensive early rejection logic that prevents fork database exceptions and sync restart loops during snapshot imports. The system now includes sophisticated block validation with intelligent rejection strategies for blocks far ahead of the current head with unknown parents, significantly improving synchronization reliability and preventing unnecessary processing overhead. The enhanced fork database exception prevention mechanisms ensure that dead fork blocks are properly identified and handled, while the intelligent early rejection logic optimizes network synchronization performance. ## Project Structure The database subsystem is implemented primarily in the chain library with enhanced support for DLT mode and emergency consensus: @@ -53,12 +54,14 @@ The database subsystem is implemented primarily in the chain library with enhanc - Block log abstraction: libraries/chain/include/graphene/chain/block_log.hpp and libraries/chain/block_log.cpp - DLT block log for rolling window storage: libraries/chain/include/graphene/chain/dlt_block_log.hpp and libraries/chain/dlt_block_log.cpp - Fork database for reversible blocks: libraries/chain/include/graphene/chain/fork_database.hpp and libraries/chain/fork_database.cpp +- Database exceptions including unlinkable_block_exception: libraries/chain/include/graphene/chain/database_exceptions.hpp - Snapshot plugin integration: plugins/snapshot/plugin.cpp for DLT mode initialization - Postponed transaction processing: libraries/chain/include/graphene/chain/db_with.hpp for transaction queue management - Witness plugin integration: plugins/witness/witness.cpp for block production coordination - Protocol configuration: libraries/protocol/include/graphene/protocol/config.hpp for emergency consensus constants - Chainbase integration: thirdparty/chainbase/src/chainbase.cpp for shared memory management - Network layer integration: libraries/network/node.cpp for peer connectivity management +- P2P plugin integration: plugins/p2p/p2p_plugin.cpp for enhanced exception handling ```mermaid graph TB @@ -71,6 +74,7 @@ DLTH["dlt_block_log.hpp"] DLTCPP["dlt_block_log.cpp"] FDH["fork_database.hpp"] FDCPP["fork_database.cpp"] +DEH["database_exceptions.hpp"] DBWH["db_with.hpp"] ENDH["emergency_consensus_constants"] CB["chainbase.cpp"] @@ -79,6 +83,7 @@ end subgraph "Plugins" SNAPH["snapshot/plugin.cpp"] WITNESS["witness/witness.cpp"] +P2PH["p2p/p2p_plugin.cpp"] end subgraph "Network Layer" NODE["node.cpp"] @@ -91,57 +96,63 @@ DBCPP --> DLTH DBCPP --> DLTCPP DBCPP --> FDH DBCPP --> FDCPP +DBCPP --> DEH DBCPP --> DBWH DBCPP --> ENDH DBCPP --> CB DBCPP --> CBH SNAPH --> DBH WITNESS --> DBH +P2PH --> DBH NODE --> DBH EXC --> NODE ``` **Diagram sources** - [database.hpp:1-642](file://libraries/chain/include/graphene/chain/database.hpp#L1-L642) -- [database.cpp:1-6396](file://libraries/chain/database.cpp#L1-L6396) +- [database.cpp:1-6424](file://libraries/chain/database.cpp#L1-L6424) - [block_log.hpp:1-75](file://libraries/chain/include/graphene/chain/block_log.hpp#L1-L75) - [block_log.cpp:1-302](file://libraries/chain/block_log.cpp#L1-L302) - [dlt_block_log.hpp:1-76](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L1-L76) - [dlt_block_log.cpp:1-414](file://libraries/chain/dlt_block_log.cpp#L1-L414) -- [fork_database.hpp:1-125](file://libraries/chain/include/graphene/chain/fork_database.hpp#L1-L125) -- [fork_database.cpp:1-245](file://libraries/chain/fork_database.cpp#L1-L245) +- [fork_database.hpp:1-138](file://libraries/chain/include/graphene/chain/fork_database.hpp#L1-L138) +- [fork_database.cpp:1-271](file://libraries/chain/fork_database.cpp#L1-L271) +- [database_exceptions.hpp:1-136](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L1-L136) - [db_with.hpp:1-154](file://libraries/chain/include/graphene/chain/db_with.hpp#L1-L154) -- [plugin.cpp:2130-2140](file://plugins/snapshot/plugin.cpp#L2130-L2140) +- [plugin.cpp:1420-1430](file://plugins/snapshot/plugin.cpp#L1420-L1430) - [witness.cpp:449-467](file://plugins/witness/witness.cpp#L449-L467) - [config.hpp:111-118](file://libraries/protocol/include/graphene/protocol/config.hpp#L111-L118) - [chainbase.cpp:225-279](file://thirdparty/chainbase/src/chainbase.cpp#L225-L279) - [chainbase.hpp:1200-1260](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L1200-L1260) -- [node.cpp:1428-4828](file://libraries/network/node.cpp#L1428-L4828) +- [node.cpp:3185-3384](file://libraries/network/node.cpp#L3185-L3384) - [exceptions.hpp:27-48](file://libraries/network/include/graphene/network/exceptions.hpp#L27-L48) +- [p2p_plugin.cpp:181-196](file://plugins/p2p/p2p_plugin.cpp#L181-L196) **Section sources** - [database.hpp:1-642](file://libraries/chain/include/graphene/chain/database.hpp#L1-L642) -- [database.cpp:1-6396](file://libraries/chain/database.cpp#L1-L6396) +- [database.cpp:1-6424](file://libraries/chain/database.cpp#L1-L6424) - [block_log.hpp:1-75](file://libraries/chain/include/graphene/chain/block_log.hpp#L1-L75) - [block_log.cpp:1-302](file://libraries/chain/block_log.cpp#L1-L302) - [dlt_block_log.hpp:1-76](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L1-L76) - [dlt_block_log.cpp:1-414](file://libraries/chain/dlt_block_log.cpp#L1-L414) -- [fork_database.hpp:1-125](file://libraries/chain/include/graphene/chain/fork_database.hpp#L1-L125) -- [fork_database.cpp:1-245](file://libraries/chain/fork_database.cpp#L1-L245) +- [fork_database.hpp:1-138](file://libraries/chain/include/graphene/chain/fork_database.hpp#L1-L138) +- [fork_database.cpp:1-271](file://libraries/chain/fork_database.cpp#L1-L271) +- [database_exceptions.hpp:1-136](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L1-L136) - [db_with.hpp:1-154](file://libraries/chain/include/graphene/chain/db_with.hpp#L1-L154) -- [plugin.cpp:2130-2140](file://plugins/snapshot/plugin.cpp#L2130-L2140) +- [plugin.cpp:1420-1430](file://plugins/snapshot/plugin.cpp#L1420-L1430) - [witness.cpp:449-467](file://plugins/witness/witness.cpp#L449-L467) - [config.hpp:111-118](file://libraries/protocol/include/graphene/protocol/config.hpp#L111-L118) - [chainbase.cpp:225-279](file://thirdparty/chainbase/src/chainbase.cpp#L225-L279) - [chainbase.hpp:1200-1260](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L1200-L1260) -- [node.cpp:1428-4828](file://libraries/network/node.cpp#L1428-L4828) +- [node.cpp:3185-3384](file://libraries/network/node.cpp#L3185-L3384) - [exceptions.hpp:27-48](file://libraries/network/include/graphene/network/exceptions.hpp#L27-L48) +- [p2p_plugin.cpp:181-196](file://plugins/p2p/p2p_plugin.cpp#L181-L196) ## Core Components - database class: Public interface for blockchain state management, block and transaction processing, checkpoints, and event notifications with enhanced DLT mode support, emergency consensus implementation, and improved error handling. - block_log: Append-only block storage with random-access indexing. - dlt_block_log: Rolling window block storage specifically designed for DLT (snapshot-based) nodes. -- fork_database: Maintains reversible blocks and supports fork selection and switching with emergency mode support. +- fork_database: Maintains reversible blocks and supports fork selection and switching with emergency mode support and enhanced unlinkable block detection. - chainbase integration: Provides persistent object storage and undo sessions with enhanced memory management. - signal_guard: Enhanced signal handling for graceful restart sequence management. - **_dlt_gap_logged flag**: New mechanism to suppress repeated warnings about missing blocks in fork database after snapshot import, with automatic reset upon successful DLT block writes. @@ -153,6 +164,9 @@ EXC --> NODE - **Enhanced Memory Management**: Comprehensive logging system for shared memory allocation with detailed free memory and maximum memory state reporting. - **Deferred Shared Memory Resize**: New mechanism that defers memory resize operations until a safe point when no read locks are held, improving thread safety and performance during high-load scenarios. - **Enhanced Error Handling**: Graceful handling of boost::interprocess::bad_alloc exceptions with deferred resize scheduling and peer connectivity preservation. +- **Enhanced Fork Database Handling**: Proper unlinkable_block_exception throwing for dead fork detection and improved fork switching logic with deterministic tie-breaking. +- **Early Rejection Logic**: Sophisticated block validation with intelligent rejection strategies for blocks far ahead with unknown parents, preventing fork database exceptions and sync restart loops. +- **Enhanced Fork Database Exception Prevention**: Comprehensive mechanisms to prevent fork database exceptions through early rejection and proper dead fork detection. Key responsibilities: - Lifecycle: open(), open_from_snapshot(), reindex(), close(), wipe() with improved error handling @@ -171,13 +185,16 @@ Key responsibilities: - **Enhanced Memory Management**: Detailed logging of memory states before and after resizing operations for administrator visibility - **Thread-Safe Memory Resizing**: Deferred resize mechanism that acquires exclusive write locks to prevent race conditions and stale pointer issues - **Memory Pressure Handling**: Graceful degradation of shared memory exhaustion with peer connectivity preservation +- **Enhanced Fork Database Handling**: Proper unlinkable_block_exception throwing for dead fork detection and improved fork switching logic with deterministic tie-breaking +- **Early Rejection Strategy**: Intelligent block rejection for far-ahead blocks with unknown parents to prevent unnecessary fork database operations and sync restart loops +- **Enhanced Fork Database Exception Prevention**: Comprehensive mechanisms to prevent fork database exceptions through early rejection and proper dead fork detection **Section sources** - [database.hpp:61-115](file://libraries/chain/include/graphene/chain/database.hpp#L61-L115) - [database.cpp:281-324](file://libraries/chain/database.cpp#L281-L324) - [block_log.hpp:38-75](file://libraries/chain/include/graphene/chain/block_log.hpp#L38-L75) - [dlt_block_log.hpp:35-72](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L35-L72) -- [fork_database.hpp:53-125](file://libraries/chain/include/graphene/chain/fork_database.hpp#L53-L125) +- [fork_database.hpp:53-138](file://libraries/chain/include/graphene/chain/fork_database.hpp#L53-L138) - [database.cpp:929-984](file://libraries/chain/database.cpp#L929-L984) - [db_with.hpp:33-100](file://libraries/chain/include/graphene/chain/db_with.hpp#L33-L100) - [config.hpp:111-118](file://libraries/protocol/include/graphene/protocol/config.hpp#L111-L118) @@ -186,7 +203,7 @@ Key responsibilities: ## Architecture Overview The database composes four primary subsystems with enhanced DLT mode support, emergency consensus implementation, and improved error handling: - Chainbase: Persistent object database with undo/redo capabilities and enhanced memory management -- Fork database: Holds recent blocks for fork resolution with emergency mode support +- Fork database: Holds recent blocks for fork resolution with emergency mode support and enhanced unlinkable block detection - Block log: Immutable, append-only block storage with index - DLT block log: Rolling window block storage for DLT (snapshot-based) nodes - Signal guard: Enhanced signal handling for graceful restart sequences @@ -199,6 +216,9 @@ The database composes four primary subsystems with enhanced DLT mode support, em - **Enhanced Memory Management**: Comprehensive logging system for shared memory allocation with detailed state reporting - **Deferred Memory Resize**: Thread-safe memory resize mechanism that defers operations until safe points to prevent race conditions - **Enhanced Error Handling**: Graceful exception handling for shared memory exhaustion with peer connectivity preservation +- **Enhanced Fork Database**: Proper unlinkable_block_exception throwing for dead fork detection and improved fork switching +- **Early Rejection Logic**: Sophisticated block validation with intelligent rejection strategies for blocks far ahead with unknown parents +- **Enhanced Fork Database Exception Prevention**: Comprehensive mechanisms to prevent fork database exceptions through early rejection and proper dead fork detection ```mermaid classDiagram @@ -233,6 +253,8 @@ class database { +_pending_resize_target : size_t +push_block(block, skip) : enhanced error handling +apply_pending_resize() : thread-safe memory management ++early_rejection_logic : intelligent block rejection ++enhanced_fork_exception_prevention : comprehensive exception prevention } class block_log { +open(path) @@ -258,6 +280,9 @@ class fork_database { +fetch_branch_from(first, second) +set_max_size(n) +set_emergency_mode(active) ++is_known_block(id) ++fetch_block_by_number(num) ++is_emergency_mode() : emergency consensus mode flag } class signal_guard { +setup() @@ -279,12 +304,29 @@ class chainbase { +set_reserved_memory(value) +resize(new_size) } +class unlinkable_block_exception { ++inherits from chain_exception ++thrown for dead fork detection +} +class early_rejection_logic { ++reject_far_ahead_unknown_parents(block) ++prevent_fork_db_exceptions(block) ++avoid_sync_restart_loops(block) +} +class enhanced_fork_exception_prevention { ++detect_dead_forks_at_or_below_head(block) ++prevent_fork_db_exceptions(block) ++classify_and_handle_unlinkable_blocks(block) +} database --> block_log : "uses (normal mode)" database --> dlt_block_log : "uses (DLT mode)" -database --> fork_database : "uses with emergency support" +database --> fork_database : "uses with enhanced error handling" database --> signal_guard : "enhanced restart handling" database --> pending_transactions_restorer : "manages postponed tx" database --> chainbase : "enhanced memory management" +database --> unlinkable_block_exception : "enhanced fork handling" +database --> early_rejection_logic : "prevents unnecessary operations" +database --> enhanced_fork_exception_prevention : "comprehensive exception prevention" ``` **Diagram sources** @@ -292,10 +334,11 @@ database --> chainbase : "enhanced memory management" - [database.cpp:281-324](file://libraries/chain/database.cpp#L281-L324) - [block_log.hpp:38-75](file://libraries/chain/include/graphene/chain/block_log.hpp#L38-L75) - [dlt_block_log.hpp:35-72](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L35-L72) -- [fork_database.hpp:53-125](file://libraries/chain/include/graphene/chain/fork_database.hpp#L53-L125) +- [fork_database.hpp:53-138](file://libraries/chain/include/graphene/chain/fork_database.hpp#L53-L138) - [database.cpp:94-184](file://libraries/chain/database.cpp#L94-L184) - [db_with.hpp:33-100](file://libraries/chain/include/graphene/chain/db_with.hpp#L33-L100) - [chainbase.cpp:225-279](file://thirdparty/chainbase/src/chainbase.cpp#L225-L279) +- [database_exceptions.hpp:83](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L83) ## Detailed Component Analysis @@ -374,11 +417,11 @@ DirectFlag --> Ready **Diagram sources** - [database.hpp:61-68](file://libraries/chain/include/graphene/chain/database.hpp#L61-L68) -- [plugin.cpp:2135-2136](file://plugins/snapshot/plugin.cpp#L2135-L2136) +- [plugin.cpp:1424-1426](file://plugins/snapshot/plugin.cpp#L1424-L1426) **Section sources** - [database.hpp:61-68](file://libraries/chain/include/graphene/chain/database.hpp#L61-L68) -- [plugin.cpp:2135-2136](file://plugins/snapshot/plugin.cpp#L2135-L2136) +- [plugin.cpp:1424-1426](file://plugins/snapshot/plugin.cpp#L1424-L1426) ### Enhanced Block Known Check Logic with DLT Mode Awareness **Updated** - The `is_known_block()` method now includes enhanced logic to prevent false positives in DLT mode: @@ -735,6 +778,14 @@ These fields enable the deferred resize mechanism to work seamlessly with the ex - **Memory State Preservation**: The system preserves memory state by setting reserved memory to current free memory before scheduling resize. - **Automatic Recovery**: The next push_block() call will apply the deferred resize safely, allowing the missed block to be re-received during normal sync. +**Enhanced Error Handling for Memory Allocation Failures** - The push_block() function now includes sophisticated error handling for boost::interprocess::bad_alloc exceptions: + +- **Exception Detection**: The system detects boost::interprocess::bad_alloc exceptions by searching for the specific error message pattern "boost::interprocess::bad_alloc". +- **Graceful Degradation**: Instead of throwing the exception and potentially disconnecting peers, the system schedules a deferred resize and returns false to indicate the block was not applied. +- **State Preservation**: The system preserves memory state by setting reserved memory to current free memory level before scheduling the resize. +- **Peer Connectivity**: This approach prevents P2P layer disconnections and maintains witness slot-miss logging while preserving node connectivity. +- **Automatic Recovery**: The next push_block() call will apply the deferred resize safely, allowing the missed block to be re-received during normal sync. + ```mermaid flowchart TD Start(["push_block(new_block)"]) --> ApplyResize["apply_pending_resize()"] @@ -759,6 +810,179 @@ Exception --> |No| Success - [database.cpp:1106-1145](file://libraries/chain/database.cpp#L1106-L1145) - [database.cpp:1460-1470](file://libraries/chain/database.cpp#L1460-L1470) +### Enhanced Fork Database Handling with Unlinkable Block Exception +**Updated** - The fork database now includes enhanced error handling for proper dead fork detection: + +- **Proper Exception Throwing**: The fork_database::push_block() method now properly throws unlinkable_block_exception when blocks fail to link, enabling better dead fork detection. +- **Enhanced Logging**: Improved logging of fork database linking failures with detailed block information and head block context. +- **Unlinked Block Caching**: Previously unlinked blocks are cached in _unlinked_index for later processing when their parents become available. +- **Improved Fork Switching**: The database's fork switching logic now properly handles unlinkable_block_exception to prevent processing blocks from dead forks. +- **Deterministic Tie-Breaking**: During emergency consensus mode, blocks with identical heights are selected deterministically using block_id hash comparison. + +```mermaid +flowchart TD +Start(["fork_database::push_block(block)"]) --> TryPush["_push_block(item)"] +TryPush --> Success{"Link successful?"} +Success --> |Yes| CheckEmergency{"Emergency mode?"} +CheckEmergency --> |No| ReturnHead["Return _head"] +CheckEmergency --> |Yes| CheckHeight{"Same height as head?"} +CheckHeight --> |No| ReturnHead +CheckHeight --> |Yes| CheckHash{"item.id < _head->id?"} +CheckHash --> |Yes| SetHead["Set _head = item"] +CheckHash --> |No| KeepHead["Keep current head"] +Success --> |No| CacheUnlinked["Cache in _unlinked_index"] +CacheUnlinked --> ThrowException["Throw unlinkable_block_exception"] +ThrowException --> Propagate["Propagate to caller"] +ReturnHead --> Propagate +SetHead --> Propagate +KeepHead --> Propagate +``` + +**Diagram sources** +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [fork_database.cpp:81-88](file://libraries/chain/fork_database.cpp#L81-L88) + +**Section sources** +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [fork_database.cpp:81-88](file://libraries/chain/fork_database.cpp#L81-L88) +- [database_exceptions.hpp:83](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L83) + +### Enhanced Fork Switching Logic with Dead Fork Detection and Deterministic Tie-Breaking +**Updated** - The database's fork switching logic now includes improved dead fork detection and emergency consensus tie-breaking: + +- **Dead Fork Detection**: When attempting to switch forks, the system checks if the current head block exists in the fork database before proceeding. +- **Proper Exception Handling**: If the head block is not in the fork database, the system removes the candidate block and throws unlinkable_block_exception. +- **Enhanced Branch Comparison**: Improved fork comparison logic with proper handling of emergency consensus mode tie-breaking using deterministic hash-based selection. +- **Safe Fork Switching**: The system ensures fork switching only occurs when both chains are valid and linked to the current state. +- **Emergency Consensus Tie-Breaking**: During emergency mode, identical-height blocks are selected deterministically by comparing block_id hashes. + +```mermaid +flowchart TD +Start(["Fork Switch Decision"]) --> CheckHead{"Head in fork_db?"} +CheckHead --> |No| RejectFork["Remove candidate block"] +RejectFork --> ThrowException["Throw unlinkable_block_exception"] +CheckHead --> |Yes| CompareBranches["Compare fork branches"] +CompareBranches --> ComputeWeight["Compute branch weights"] +ComputeWeight --> DecideSwitch{"Should switch forks?"} +DecideSwitch --> |Yes| CheckEmergency{"Emergency mode?"} +DecideSwitch --> |No| KeepCurrent["Keep current fork"] +CheckEmergency --> |No| SwitchForks["Perform fork switch"] +CheckEmergency --> |Yes| CheckTie{"Tie at same height?"} +CheckTie --> |No| SwitchForks +CheckTie --> |Yes| TieBreak["Use deterministic hash tie-breaking"] +TieBreak --> SwitchForks +SwitchForks --> UpdateHead["Update fork_db head"] +KeepCurrent --> End(["Complete"]) +UpdateHead --> End +``` + +**Diagram sources** +- [database.cpp:1295-1377](file://libraries/chain/database.cpp#L1295-L1377) + +**Section sources** +- [database.cpp:1295-1377](file://libraries/chain/database.cpp#L1295-L1377) + +### Enhanced Early Rejection Logic for Blocks Far Ahead with Unknown Parents +**New** - The database now includes sophisticated early rejection logic that prevents fork database exceptions and sync restart loops during snapshot imports: + +- **Early Rejection Strategy**: The `_push_block()` method includes comprehensive early rejection checks that prevent unnecessary fork database operations for blocks that are far ahead with unknown parents. +- **Prevent Fork Database Exceptions**: Blocks that are at or before the head but on different forks with unknown parents are rejected before attempting fork database operations, preventing unlinkable_block_exception. +- **Avoid Sync Restart Loops**: Far-ahead blocks with unknown parents are silently rejected to prevent P2P sync restart loops that would stall synchronization. +- **Intelligent Parent Validation**: The system checks if the block's parent is known in the fork database before attempting fork database operations. +- **Safe First Block Acceptance**: The system always allows blocks whose previous equals the head block ID to ensure sync progress continues. + +```mermaid +flowchart TD +Start(["_push_block(new_block)"]) --> CheckAtOrBelow{"new_block.block_num() <= head_block_num()?"} +CheckAtOrBelow --> |Yes| CheckExisting{"existing_id == new_block.id()?"} +CheckExisting --> |Yes| IgnoreBlock["Ignore block (already on chain)"] +CheckExisting --> |No| CheckParent{"new_block.previous != block_id_type() && !_fork_db.is_known_block(new_block.previous)?"} +CheckParent --> |Yes| RejectDeadFork["Reject dead fork block"] +CheckParent --> |No| FallThrough["Fall through to normal logic"] +CheckAtOrBelow --> |No| CheckFarAhead{"new_block.block_num() > head_block_num() && new_block.previous != head_block_id() && !_fork_db.is_known_block(new_block.previous)?"} +CheckFarAhead --> |Yes| RejectFarAhead["Reject far-ahead unknown parent"] +CheckFarAhead --> |No| CheckForkDB["Proceed to fork_db.push_block()"] +IgnoreBlock --> ReturnFalse["return false"] +RejectDeadFork --> ThrowException["Throw unlinkable_block_exception"] +FallThrough --> CheckForkDB +RejectFarAhead --> ReturnFalse +CheckForkDB --> ForkDBPush["fork_db.push_block(new_block)"] +ForkDBPush --> ReturnResult["return result"] +``` + +**Diagram sources** +- [database.cpp:1216-1286](file://libraries/chain/database.cpp#L1216-L1286) + +**Section sources** +- [database.cpp:1216-1286](file://libraries/chain/database.cpp#L1216-L1286) + +### Enhanced Fork Database Exception Prevention Mechanisms +**New** - The database now includes comprehensive mechanisms to prevent fork database exceptions through intelligent early rejection and proper dead fork detection: + +- **Dead Fork Detection at or Below Head**: Blocks at or before the head but on different forks whose parents are not in the fork database are immediately rejected with unlinkable_block_exception, enabling P2P layer to soft-ban the offending peer. +- **Far-Ahead Block Rejection**: Blocks far ahead of the head with completely unknown parents are silently rejected to prevent fork database operations and sync restart loops. +- **Proper Exception Classification**: The system distinguishes between dead fork blocks (at/below head) and far-ahead blocks that slipped past early rejection for proper P2P handling. +- **Enhanced Error Propagation**: Proper unlinkable_block_exception throwing ensures downstream components can classify and handle different types of unlinkable blocks appropriately. + +```mermaid +flowchart TD +Start(["Enhanced Fork Exception Prevention"]) --> CheckDeadFork{"Block at or below head on different fork?"} +CheckDeadFork --> |Yes| CheckParentKnown{"Parent in fork_db?"} +CheckParentKnown --> |No| ThrowDeadFork["Throw unlinkable_block_exception (dead fork)"] +CheckParentKnown --> |Yes| NormalLogic["Fall through to normal logic"] +CheckDeadFork --> |No| CheckFarAhead{"Block far ahead with unknown parent?"} +CheckFarAhead --> |Yes| SilentReject["Silently reject (prevent fork DB ops)"] +CheckFarAhead --> |No| CheckForkDB["Proceed to fork_db.push_block()"] +ThrowDeadFork --> Classify["P2P soft-bans peer (dead fork)"] +SilentReject --> PreventLoop["Prevent sync restart loops"] +NormalLogic --> CheckForkDB +CheckForkDB --> ForkDBOps["Fork DB operations"] +ForkDBOps --> EnhancedHandling["Enhanced error handling"] +``` + +**Diagram sources** +- [database.cpp:1216-1286](file://libraries/chain/database.cpp#L1216-L1286) +- [p2p_plugin.cpp:175-192](file://plugins/p2p/p2p_plugin.cpp#L175-L192) +- [node.cpp:3192-3211](file://libraries/network/node.cpp#L3192-L3211) + +**Section sources** +- [database.cpp:1216-1286](file://libraries/chain/database.cpp#L1216-L1286) +- [p2p_plugin.cpp:175-192](file://plugins/p2p/p2p_plugin.cpp#L175-L192) +- [node.cpp:3192-3211](file://libraries/network/node.cpp#L3192-L3211) + +### Enhanced P2P Synchronization with Early Rejection Integration +**New** - The P2P synchronization system now integrates with the early rejection logic to prevent sync restart loops: + +- **Unlinkable Block Classification**: The P2P layer distinguishes between dead fork blocks (at or below head) and far-ahead blocks that slipped past early rejection. +- **Dead Fork Handling**: At-or-below-head blocks from dead forks trigger soft-banning to prevent continued transmission of stale blocks. +- **Far-Ahead Block Handling**: Far-ahead blocks trigger sync restart instead of soft-banning to allow sequential block fetching. +- **Deferred Resize Integration**: The P2P layer handles deferred resize scenarios by restarting sync to re-fetch missed blocks after memory operations complete. + +```mermaid +flowchart TD +Start(["P2P Block Processing"]) --> TryPush["Try push_block()"] +TryPush --> Success{"Client accepted?"} +Success --> |Yes| UpdatePeers["Update peer lists"] +Success --> |No| CheckException{"Exception type?"} +CheckException --> |unlinkable_block_exception| Classify["Classify unlinkable block"] +CheckException --> |other| HandleOther["Handle other exceptions"] +Classify --> CheckNum{"peer_block_num <= our_head?"} +CheckNum --> |Yes| SoftBan["Soft-ban peer (dead fork)"] +CheckNum --> |No| RestartSync["Restart sync (far-ahead)"] +SoftBan --> UpdatePeers +RestartSync --> UpdatePeers +HandleOther --> UpdatePeers +UpdatePeers --> End(["Complete"]) +``` + +**Diagram sources** +- [node.cpp:3185-3384](file://libraries/network/node.cpp#L3185-L3384) +- [p2p_plugin.cpp:181-196](file://plugins/p2p/p2p_plugin.cpp#L181-L196) + +**Section sources** +- [node.cpp:3185-3384](file://libraries/network/node.cpp#L3185-L3384) +- [p2p_plugin.cpp:181-196](file://plugins/p2p/p2p_plugin.cpp#L181-L196) + ### Checkpoint System for Fast Synchronization - Checkpoints: A map of block number to expected block ID is maintained; when a checkpoint matches, the system skips expensive validations and authority checks for subsequent blocks until the last checkpoint. - before_last_checkpoint(): Determines whether the current head is before the last checkpoint to decide whether to enforce stricter checks. @@ -842,10 +1066,10 @@ These signals are used by plugins to react to blockchain events without tight co - Open database and initialize: open(data_dir, shared_mem_dir, initial_supply, shared_file_size, chainbase_flags) - **Open from snapshot**: open_from_snapshot(data_dir, shared_mem_dir, initial_supply, shared_file_size, chainbase_flags) - **Enhanced** - Rebuild state from history: reindex(data_dir, shared_mem_dir, from_block_num, shared_file_size) - **Enhanced with signal handling** -- Push a block: push_block(signed_block, skip_flags) - **Enhanced with shared memory error handling** +- Push a block: push_block(signed_block, skip_flags) - **Enhanced with shared memory error handling and early rejection logic** - Push a transaction: push_transaction(signed_transaction, skip_flags) - Validate a block: validate_block(signed_block, skip_flags) -- Validate a transaction: validate_transaction(signed_signed_transaction, skip_flags) +- Validate a transaction: validate_transaction(signed_transaction, skip_flags) - **Set DLT mode**: set_dlt_mode(true/false) - **Enhanced with proper setter implementation** - **DLT Gap Suppression**: The database now automatically manages gap warnings to prevent log spam during normal operations with intelligent state management - **Enhanced Collision Detection**: Sophisticated logging for block number collisions with scenario differentiation and rate-limiting @@ -853,6 +1077,9 @@ These signals are used by plugins to react to blockchain events without tight co - **Enhanced Memory Management**: Comprehensive logging of memory states before and after resizing operations for administrator visibility - **Deferred Memory Resize**: Thread-safe memory resize mechanism that applies operations at safe points to prevent race conditions - **Enhanced Error Handling**: Graceful handling of shared memory exhaustion with peer connectivity preservation +- **Enhanced Fork Database**: Proper unlinkable_block_exception throwing for dead fork detection and improved fork switching logic with deterministic tie-breaking +- **Early Rejection Logic**: Intelligent block rejection for far-ahead blocks with unknown parents to prevent unnecessary fork database operations and sync restart loops +- **Enhanced Fork Database Exception Prevention**: Comprehensive mechanisms to prevent fork database exceptions through early rejection and proper dead fork detection - Query helpers: - get_block_id_for_num(uint32_t) - fetch_block_by_id(block_id_type) @@ -1066,7 +1293,7 @@ The database depends on: - chainbase for persistent storage and undo sessions with enhanced memory management - block_log for immutable block storage and random access - dlt_block_log for rolling window storage in DLT mode -- fork_database for reversible blocks and fork resolution with emergency mode support +- fork_database for reversible blocks and fork resolution with emergency mode support and enhanced unlinkable block detection - protocol types and evaluators for operation processing - signal_guard for enhanced error handling during restart sequences - snapshot plugin for DLT mode initialization @@ -1080,6 +1307,9 @@ The database depends on: - **Enhanced memory management**: Comprehensive logging system for shared memory allocation with detailed state reporting - **Deferred memory resize mechanism**: Thread-safe memory management with proper lock handling and race condition prevention - **Enhanced error handling**: Graceful exception handling for shared memory exhaustion with peer connectivity preservation +- **Enhanced fork database**: Proper unlinkable_block_exception handling for dead fork detection and improved fork switching logic with deterministic tie-breaking +- **Early rejection logic**: Sophisticated block validation with intelligent rejection strategies for blocks far ahead with unknown parents +- **Enhanced fork database exception prevention**: Comprehensive mechanisms to prevent fork database exceptions through early rejection and proper dead fork detection ```mermaid graph LR @@ -1102,6 +1332,9 @@ DB --> MEMLOG["enhanced memory management logging"] DB --> DEFER["deferred memory resize mechanism"] DB --> ERROR["enhanced error handling"] DB --> NETWORK["network layer integration"] +DB --> UNLINK["unlinkable_block_exception"] +DB --> EARLY["early rejection logic"] +DB --> EXCEP["enhanced fork exception prevention"] ``` **Diagram sources** @@ -1109,12 +1342,14 @@ DB --> NETWORK["network layer integration"] - [database.cpp:1-30](file://libraries/chain/database.cpp#L1-L30) - [database.cpp:94-184](file://libraries/chain/database.cpp#L94-L184) - [chainbase.cpp:225-279](file://thirdparty/chainbase/src/chainbase.cpp#L225-L279) +- [database_exceptions.hpp:83](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L83) **Section sources** - [database.hpp:1-10](file://libraries/chain/include/graphene/chain/database.hpp#L1-L10) - [database.cpp:1-30](file://libraries/chain/database.cpp#L1-L30) - [database.cpp:94-184](file://libraries/chain/database.cpp#L94-L184) - [chainbase.cpp:225-279](file://thirdparty/chainbase/src/chainbase.cpp#L225-L279) +- [database_exceptions.hpp:83](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L83) ## Performance Considerations - Use skip flags during reindex to bypass expensive validations and improve replay speed. @@ -1142,6 +1377,10 @@ DB --> NETWORK["network layer integration"] - **Deferred Memory Resize Efficiency**: The new deferred resize mechanism prevents race conditions and stale pointer issues during high-load scenarios, improving overall system reliability and performance. - **Thread-Safe Memory Operations**: Proper lock management during memory resize operations ensures data consistency and prevents performance degradation from thread contention. - **Enhanced Error Handling**: Graceful handling of shared memory exhaustion prevents peer disconnections and maintains network connectivity during memory pressure situations. +- **Enhanced Fork Database Performance**: Proper unlinkable_block_exception handling reduces processing overhead by eliminating dead fork blocks from consideration. +- **Improved Fork Switching**: Enhanced fork switching logic with proper dead fork detection and deterministic tie-breaking prevents unnecessary processing and improves fork resolution performance. +- **Early Rejection Efficiency**: The new early rejection logic eliminates unnecessary fork database operations for far-ahead blocks with unknown parents, significantly reducing processing overhead and preventing sync restart loops. +- **Enhanced Fork Database Exception Prevention**: Comprehensive early rejection mechanisms prevent fork database exceptions before they occur, eliminating the need for exception handling and improving overall system efficiency. ## Troubleshooting Guide Common issues and remedies: @@ -1176,6 +1415,14 @@ Common issues and remedies: - **Performance Degradation**: Check if the deferred memory resize mechanism is causing unexpected delays or if memory operations are blocking other threads. - **Shared Memory Exhaustion**: Monitor boost::interprocess::bad_alloc exceptions and verify that deferred resize scheduling is working correctly to prevent peer disconnections. - **Peer Connectivity Issues**: Verify that memory pressure handling is preserving peer connections and not causing network instability. +- **Enhanced Fork Database Issues**: Monitor unlinkable_block_exception handling to ensure dead fork blocks are properly detected and excluded from processing. +- **Fork Switching Problems**: Verify that fork switching logic properly handles unlinkable_block_exception and prevents processing of invalid forks. +- **Dead Fork Detection**: Check that the enhanced fork database properly throws unlinkable_block_exception for blocks from dead forks to prevent wasted processing resources. +- **Emergency Consensus Tie-Breaking**: Verify that deterministic hash-based tie-breaking is working correctly during emergency mode to ensure consistent block selection across all nodes. +- **Early Rejection Logic Issues**: Monitor the new early rejection logic to ensure it's properly rejecting far-ahead blocks with unknown parents and preventing unnecessary fork database operations. +- **P2P Sync Restart Loops**: Verify that the early rejection logic is working correctly to prevent sync restart loops during snapshot imports and normal operation. +- **Enhanced Fork Database Exception Prevention**: Monitor the comprehensive exception prevention mechanisms to ensure they're properly classifying and handling different types of unlinkable blocks. +- **Unlinkable Block Exception Handling**: Check that the P2P layer properly classifies and handles different types of unlinkable blocks (dead fork vs. far-ahead) to prevent soft-banning or unnecessary sync restarts. **Section sources** - [database.cpp:800-830](file://libraries/chain/database.cpp#L800-L830) @@ -1188,18 +1435,30 @@ Common issues and remedies: - [database.cpp:454-482](file://libraries/chain/database.cpp#L454-L482) - [database.cpp:1106-1145](file://libraries/chain/database.cpp#L1106-L1145) - [database.cpp:1460-1470](file://libraries/chain/database.cpp#L1460-L1470) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [fork_database.cpp:81-88](file://libraries/chain/fork_database.cpp#L81-L88) +- [database.cpp:1295-1377](file://libraries/chain/database.cpp#L1295-L1377) +- [database.cpp:1216-1286](file://libraries/chain/database.cpp#L1216-L1286) +- [node.cpp:3185-3384](file://libraries/network/node.cpp#L3185-L3384) +- [p2p_plugin.cpp:181-196](file://plugins/p2p/p2p_plugin.cpp#L181-L196) ## Conclusion The Database Management system provides a robust, event-driven, and efficient state persistence layer for the VIZ blockchain with enhanced DLT mode support, emergency consensus implementation, and improved error handling. It integrates chainbase for persistent storage, fork_database for reversible blocks, block_log for immutable history, and dlt_block_log for rolling window storage in DLT mode. Through configurable validation flags, checkpointing, memory management, DLT mode detection with proper setter implementation, enhanced block fetching logic with DLT mode awareness, improved gap logging, and the new `_dlt_gap_logged` flag mechanism for intelligent warning suppression, it supports fast synchronization, reliable block processing, conditional block log operations, and extensibility via observer signals. -**Updated** - The system now includes comprehensive error handling improvements for shared memory exhaustion scenarios, featuring a deferred shared memory resize mechanism with enhanced thread safety and race condition prevention. The push_block() and _generate_block() methods now gracefully handle boost::interprocess::bad_alloc exceptions by returning false instead of throwing, preserving peer connectivity and preventing P2P layer disconnections. The enhanced apply_pending_resize() method ensures memory operations are performed atomically with proper synchronization, while the new _pending_resize and _pending_resize_target fields provide clean separation between request and execution phases. These improvements make the database management system more resilient to memory pressure situations while maintaining system stability and network connectivity. +**Updated** - The system now includes comprehensive early rejection logic that significantly improves synchronization reliability and prevents unnecessary processing overhead. The sophisticated block validation with intelligent rejection strategies for blocks far ahead with unknown parents prevents fork database exceptions and eliminates sync restart loops during snapshot imports. This enhancement, combined with the existing deferred shared memory resize mechanism, enhanced error handling for shared memory exhaustion, and improved P2P synchronization integration, makes the database management system more resilient to memory pressure situations while maintaining system stability and network connectivity. The enhanced DLT mode detection and block availability checking logic ensures accurate P2P synchronization and prevents false positives in block availability reporting. The new gap suppression mechanism provides intelligent warning management that prevents log spam during normal DLT operations while maintaining comprehensive diagnostic capability for troubleshooting. The automatic state management of the `_dlt_gap_logged` flag ensures optimal logging behavior without manual intervention, making the system more maintainable and operable in production environments. The sophisticated block collision detection system with rate-limiting and scenario differentiation provides enhanced diagnostic capabilities for network health monitoring. The intelligent postponed transaction processing system ensures stable operation under high load conditions with automatic queue management and time-based execution limits. The emergency consensus implementation represents a significant advancement in blockchain resilience, providing automatic network recovery mechanisms that maintain system integrity during extended downtime while preventing potential deadlocks and false activations. The hybrid witness scheduling system ensures continuous operation by dynamically adapting to witness availability, while comprehensive safety checks protect against network instability and malicious behavior. The enhanced error logging system provides comprehensive visibility into emergency consensus operations, enabling effective troubleshooting and maintenance. This implementation makes the VIZ blockchain more robust, fault-tolerant, and suitable for enterprise-grade deployments requiring high availability and automatic recovery capabilities. -**Enhanced** - The memory management system now provides comprehensive logging capabilities that offer administrators detailed visibility into memory usage patterns during blockchain operation. The new deferred shared memory resize mechanism significantly improves efficiency during high-load scenarios by preventing race conditions and stale pointer issues through proper thread synchronization and lock management. The enhanced `_resize` function logs detailed information about free memory, maximum memory, and reserved memory states before and after resizing operations, enabling proactive capacity planning and performance optimization. The improved error detection capabilities in shared memory allocation provide administrators with crucial information about memory usage patterns, helping prevent memory-related issues before they impact system performance. The comprehensive emergency consensus logging system ensures that operators have complete visibility into critical error conditions and recovery procedures. These enhancements make the database management system more transparent, manageable, and suitable for production environments where memory resource optimization and comprehensive error diagnostics are critical. +**Enhanced** - The memory management system now provides comprehensive logging capabilities that offer administrators detailed visibility into memory usage patterns during blockchain operation. The new deferred shared memory resize mechanism significantly improves efficiency during high-load scenarios by preventing race conditions and stale pointer issues through proper thread synchronization and lock management. The enhanced `_resize` function logs detailed information about free memory, maximum memory, and reserved memory states before and after resizing operations, enabling proactive capacity planning and performance optimization. The improved error detection capabilities in shared memory allocation provides administrators with crucial information about memory usage patterns, helping prevent memory-related issues before they impact system performance. The comprehensive emergency consensus logging system ensures that operators have complete visibility into critical error conditions and recovery procedures. These enhancements make the database management system more transparent, manageable, and suitable for production environments where memory resource optimization and comprehensive error diagnostics are critical. The deferred memory resize mechanism represents a major improvement in thread safety and system reliability. By deferring memory resize operations until safe points when no read locks are held, the system prevents race conditions that could lead to stale pointer issues and data corruption. The `apply_pending_resize()` method ensures that memory operations are performed atomically with proper synchronization, while the `_pending_resize` and `_pending_resize_target` fields provide a clean separation between request and execution phases. This design enables the system to handle high-load scenarios more efficiently while maintaining data consistency and preventing performance degradation from thread contention. -**Enhanced Error Handling** - The most significant improvement is the enhanced error handling for shared memory exhaustion. The database now gracefully handles boost::interprocess::bad_alloc exceptions by returning false instead of throwing, which prevents P2P layer disconnections and maintains witness slot-miss logging while preserving node connectivity. The system schedules a deferred resize operation and preserves memory state by setting reserved memory to current free memory, ensuring automatic recovery without manual intervention. This approach maintains network stability during memory pressure situations and allows the missed block to be re-received during normal sync, providing a seamless user experience even under adverse conditions. \ No newline at end of file +**Enhanced Error Handling** - The most significant improvement is the enhanced error handling for shared memory exhaustion. The database now gracefully handles boost::interprocess::bad_alloc exceptions by returning false instead of throwing, which prevents P2P layer disconnections and maintains witness slot-miss logging while preserving node connectivity. The system schedules a deferred resize operation and preserves memory state by setting reserved memory to current free memory, ensuring automatic recovery without manual intervention. This approach maintains network stability during memory pressure situations and allows the missed block to be re-received during normal sync, providing a seamless user experience even under adverse conditions. + +**Enhanced Fork Database Handling** - The fork database now includes proper unlinkable_block_exception throwing for dead fork detection, significantly improving the system's ability to identify and reject blocks from invalid forks. This enhancement prevents wasted processing resources on dead forks and improves overall network efficiency. The improved fork switching logic with proper dead fork detection ensures that only valid, linked forks are considered for switching, reducing the risk of processing invalid chain states and improving the reliability of fork resolution operations. The addition of deterministic hash-based tie-breaking during emergency consensus mode ensures consistent block selection across all nodes, preventing split-brain scenarios and maintaining network convergence even under extreme conditions. + +**Enhanced Early Rejection Logic** - The new early rejection logic represents a significant improvement in synchronization reliability and performance. By intelligently rejecting blocks far ahead with unknown parents before attempting fork database operations, the system prevents unnecessary processing overhead and eliminates the possibility of fork database exceptions that could trigger sync restart loops. This enhancement is particularly beneficial during snapshot imports where the fork database may only contain the head block, preventing the common scenario where P2P peers send blocks that are far ahead and would otherwise cause continuous sync restarts. The early rejection strategy ensures that only blocks with known parents are processed through the fork database, significantly improving the efficiency of the synchronization process and reducing the likelihood of encountering unlinkable blocks that would require peer soft-banning or sync restarts. + +**Enhanced Fork Database Exception Prevention** - The comprehensive exception prevention mechanisms represent a major advancement in fork database reliability. The system now includes multiple layers of protection against fork database exceptions, starting with intelligent early rejection of blocks with unknown parents and extending to proper classification and handling of different types of unlinkable blocks. The dead fork detection at or below head ensures that stale fork blocks are properly identified and rejected, while the far-ahead block rejection prevents unnecessary fork database operations that could trigger sync restart loops. This multi-layered approach to exception prevention significantly improves the robustness of the fork database and reduces the likelihood of synchronization issues caused by malformed or malicious blocks. The enhanced error propagation and classification mechanisms ensure that downstream components can properly handle different types of unlinkable blocks, leading to more efficient and reliable network synchronization. \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Memory Management System.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Memory Management System.md new file mode 100644 index 0000000000..59934e7f44 --- /dev/null +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Chain Library/Memory Management System.md @@ -0,0 +1,485 @@ +# Memory Management System + + +**Referenced Files in This Document** +- [chainbase.hpp](file://thirdparty/chainbase/include/chainbase/chainbase.hpp) +- [chainbase.cpp](file://thirdparty/chainbase/src/chainbase.cpp) +- [database.cpp](file://libraries/chain/database.cpp) +- [plugin.cpp](file://plugins/chain/plugin.cpp) +- [shared_ptr.hpp](file://thirdparty/fc/include/fc/shared_ptr.hpp) +- [shared_ptr.cpp](file://thirdparty/fc/src/shared_ptr.cpp) +- [smart_ref_fwd.hpp](file://thirdparty/fc/include/fc/smart_ref_fwd.hpp) +- [smart_ref_impl.hpp](file://thirdparty/fc/include/fc/smart_ref_impl.hpp) +- [unique_ptr.hpp](file://thirdparty/fc/include/fc/unique_ptr.hpp) +- [file_mapping.hpp](file://thirdparty/fc/include/fc/interprocess/file_mapping.hpp) +- [file_mapping.cpp](file://thirdparty/fc/src/interprocess/file_mapping.cpp) +- [mmap_struct.hpp](file://thirdparty/fc/include/fc/interprocess/mmap_struct.hpp) +- [mmap_struct.cpp](file://thirdparty/fc/src/interprocess/mmap_struct.cpp) +- [flat.hpp](file://thirdparty/fc/include/fc/container/flat.hpp) +- [thread_specific.hpp](file://thirdparty/fc/include/fc/thread/thread_specific.hpp) +- [scoped_exit.hpp](file://thirdparty/fc/include/fc/scoped_exit.hpp) +- [aligned.hpp](file://thirdparty/fc/include/fc/aligned.hpp) + + +## Table of Contents +1. [Introduction](#introduction) +2. [System Architecture](#system-architecture) +3. [Memory Management Components](#memory-management-components) +4. [Shared Memory System](#shared-memory-system) +5. [Reference Counting](#reference-counting) +6. [Smart Pointers and RAII](#smart-pointers-and-raii) +7. [Memory Allocation Strategies](#memory-allocation-strategies) +8. [Locking and Concurrency](#locking-and-concurrency) +9. [Memory Monitoring and Resizing](#memory-monitoring-and-resizing) +10. [Best Practices](#best-practices) +11. [Troubleshooting Guide](#troubleshooting-guide) +12. [Conclusion](#conclusion) + +## Introduction + +The VIZ CPP Node memory management system is built around a sophisticated shared memory architecture that enables high-performance blockchain operations. The system combines traditional C++ memory management with advanced inter-process shared memory techniques, providing both safety and performance for blockchain state persistence and concurrent access. + +The memory management system centers on ChainBase, a specialized database framework that uses Boost.Interprocess for shared memory management, combined with FC library utilities for smart pointers, RAII patterns, and memory-safe operations. This architecture supports the demanding requirements of blockchain applications, including persistent state, concurrent access, and automatic memory management. + +## System Architecture + +The memory management system follows a layered architecture that separates concerns between low-level memory management, database operations, and application-level abstractions. + +```mermaid +graph TB +subgraph "Application Layer" +APP[Blockchain Application] +PLUGINS[Plugin System] +API[API Layer] +end +subgraph "Database Layer" +DATABASE[Database Engine] +INDEXES[Index Management] +SESSIONS[Transaction Sessions] +end +subgraph "Memory Management Layer" +SHARED_MEM[Shared Memory] +ALLOCATORS[Custom Allocators] +LOCKS[Lock Management] +end +subgraph "Low-Level Memory" +INTERPROCESS[Boost Interprocess] +SMART_PTR[Smart Pointers] +FILE_MAPPING[File Mapping] +end +APP --> DATABASE +PLUGINS --> DATABASE +API --> DATABASE +DATABASE --> INDEXES +DATABASE --> SESSIONS +INDEXES --> SHARED_MEM +SESSIONS --> SHARED_MEM +SHARED_MEM --> ALLOCATORS +ALLOCATORS --> LOCKS +LOCKS --> INTERPROCESS +INTERPROCESS --> SMART_PTR +INTERPROCESS --> FILE_MAPPING +``` + +**Diagram sources** +- [chainbase.hpp:835-1260](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L835-L1260) +- [shared_ptr.hpp:1-64](file://thirdparty/fc/include/fc/shared_ptr.hpp#L1-L64) +- [file_mapping.hpp:1-51](file://thirdparty/fc/include/fc/interprocess/file_mapping.hpp#L1-L51) + +## Memory Management Components + +### Core Memory Management Classes + +The system provides several fundamental memory management components that work together to provide robust memory handling: + +```mermaid +classDiagram +class Retainable { +-volatile int32_t _ref_count ++retain() void ++release() void ++retain_count() int32_t ++~retainable() virtual +} +class SharedPtr { +-T* _ptr ++shared_ptr() constructor ++shared_ptr(shared_ptr) constructor ++shared_ptr(T*, bool) constructor ++shared_ptr(shared_ptr&&) constructor ++~shared_ptr() destructor ++operator*() T& ++operator->() T* ++get() T* ++reset() void ++swap() void +} +class SmartRef { +-T* impl ++smart_ref() constructor ++smart_ref(smart_ref&) constructor ++smart_ref(smart_ref&&) constructor ++operator*() T& ++operator->() T* ++~smart_ref() destructor +} +class UniquePtr { +-T* _p ++unique_ptr() constructor ++unique_ptr(unique_ptr&&) constructor ++~unique_ptr() destructor ++operator*() T& ++operator->() T* ++reset() void ++release() T* +} +Retainable <|-- SharedPtr : "reference counting" +SharedPtr --> Retainable : "uses" +SmartRef --> T : "owns" +UniquePtr --> T : "owns" +``` + +**Diagram sources** +- [shared_ptr.hpp:13-64](file://thirdparty/fc/include/fc/shared_ptr.hpp#L13-L64) +- [smart_ref_fwd.hpp:9-52](file://thirdparty/fc/include/fc/smart_ref_fwd.hpp#L9-L52) +- [unique_ptr.hpp:7-66](file://thirdparty/fc/include/fc/unique_ptr.hpp#L7-L66) + +**Section sources** +- [shared_ptr.hpp:1-64](file://thirdparty/fc/include/fc/shared_ptr.hpp#L1-L64) +- [smart_ref_fwd.hpp:1-53](file://thirdparty/fc/include/fc/smart_ref_fwd.hpp#L1-L53) +- [unique_ptr.hpp:1-68](file://thirdparty/fc/include/fc/unique_ptr.hpp#L1-L68) + +## Shared Memory System + +### Managed Memory File Architecture + +The shared memory system uses Boost.Interprocess to create and manage memory-mapped files that serve as the foundation for the database storage: + +```mermaid +sequenceDiagram +participant App as Application +participant DB as Database +participant MMF as Managed Memory File +participant FM as File Mapping +participant MR as Mapped Region +App->>DB : open(shared_mem_dir, flags, size) +DB->>MMF : create/open managed file +MMF->>FM : create file mapping +FM->>MR : create mapped region +MR->>MMF : allocate memory segment +MMF->>DB : initialize environment check +DB->>App : database ready +Note over App,DB : Memory allocation and indexing +App->>DB : create/modify objects +DB->>MMF : allocate from shared memory +MMF->>App : return object reference +App->>DB : close() +DB->>MMF : flush and cleanup +MMF->>FM : unmap file +FM->>MR : destroy mapped region +``` + +**Diagram sources** +- [chainbase.cpp:70-102](file://thirdparty/chainbase/src/chainbase.cpp#L70-L102) +- [file_mapping.cpp:9-41](file://thirdparty/fc/src/interprocess/file_mapping.cpp#L9-L41) +- [mmap_struct.cpp:20-44](file://thirdparty/fc/src/interprocess/mmap_struct.cpp#L20-L44) + +### Memory Layout and Organization + +The shared memory system organizes data in a structured manner optimized for blockchain operations: + +| Memory Segment | Purpose | Size | Protection | +|----------------|---------|------|------------| +| Environment Check | System compatibility verification | Fixed size | Read-only | +| Index Tables | Object indexing structures | Dynamic | Read-write | +| Object Storage | Actual blockchain data | Dynamic | Read-write | +| Undo Buffers | Transaction rollback support | Dynamic | Read-write | +| Lock Information | Concurrency control data | Fixed size | Read-write | + +**Section sources** +- [chainbase.cpp:70-102](file://thirdparty/chainbase/src/chainbase.cpp#L70-L102) +- [chainbase.hpp:1189-1193](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L1189-L1193) + +## Reference Counting + +### Retainable Object Pattern + +The reference counting system uses the retainable pattern to provide automatic memory management for shared objects: + +```mermaid +flowchart TD +Start([Object Creation]) --> InitCount["Initialize retain count = 1"] +InitCount --> UseObject["Use Object"] +UseObject --> Increment{"Need More References?"} +Increment --> |Yes| Retain["retain() - increment count"] +Increment --> |No| Continue["Continue Operation"] +Retain --> Continue +Continue --> Release{"Reference No Longer Needed?"} +Release --> |Yes| Decrement["release() - decrement count"] +Decrement --> CheckZero{"Count == 0?"} +CheckZero --> |Yes| Delete["delete this"] +CheckZero --> |No| Wait["Wait for other references"] +Release --> |No| Continue +Delete --> End([Object Destroyed]) +Wait --> Release +``` + +**Diagram sources** +- [shared_ptr.cpp:16-25](file://thirdparty/fc/src/shared_ptr.cpp#L16-L25) + +### Thread-Safe Reference Operations + +The reference counting implementation ensures thread safety through atomic operations and memory barriers: + +| Operation | Memory Ordering | Purpose | +|-----------|----------------|---------| +| retain() | relaxed | Increment reference count | +| release() | release | Decrement count with acquire barrier | +| retain_count() | acquire | Read current count safely | + +**Section sources** +- [shared_ptr.cpp:1-30](file://thirdparty/fc/src/shared_ptr.cpp#L1-L30) +- [shared_ptr.hpp:13-28](file://thirdparty/fc/include/fc/shared_ptr.hpp#L13-L28) + +## Smart Pointers and RAII + +### Smart Pointer Implementation + +The FC library provides several smart pointer implementations that enhance memory safety: + +```mermaid +classDiagram +class SmartRef { +-T* impl ++smart_ref(U&&) constructor ++smart_ref(const smart_ref&) constructor ++smart_ref(smart_ref&&) constructor ++operator*() T& ++operator->() T* ++operator=(smart_ref&&) T& ++~smart_ref() destructor +} +class ScopedExit { +-Callback callback ++scoped_exit(C&&) constructor ++~scoped_exit() destructor ++operator=(scoped_exit&&) scoped_exit& +} +class Aligned { +-union { T _align; char _data[S]; } _store ++operator char*() ++operator const char*() const +} +SmartRef --> T : "heap allocated" +ScopedExit --> Callback : "executes on destruction" +Aligned --> T : "aligned storage" +``` + +**Diagram sources** +- [smart_ref_impl.hpp:40-134](file://thirdparty/fc/include/fc/smart_ref_impl.hpp#L40-L134) +- [scoped_exit.hpp:5-40](file://thirdparty/fc/include/fc/scoped_exit.hpp#L5-L40) +- [aligned.hpp:4-21](file://thirdparty/fc/include/fc/aligned.hpp#L4-L21) + +### RAII Resource Management + +The scoped_exit pattern ensures proper resource cleanup: + +**Section sources** +- [smart_ref_fwd.hpp:1-53](file://thirdparty/fc/include/fc/smart_ref_fwd.hpp#L1-L53) +- [smart_ref_impl.hpp:1-136](file://thirdparty/fc/include/fc/smart_ref_impl.hpp#L1-L136) +- [scoped_exit.hpp:1-40](file://thirdparty/fc/include/fc/scoped_exit.hpp#L1-L40) +- [aligned.hpp:1-21](file://thirdparty/fc/include/fc/aligned.hpp#L1-L21) + +## Memory Allocation Strategies + +### Custom Allocators + +ChainBase uses custom allocators that integrate with the shared memory system: + +```mermaid +flowchart LR +subgraph "Allocator Types" +BA[Boost Allocator] +CI[ChainBase Allocator] +FA[Flat Allocator] +end +subgraph "Memory Sources" +SM[Shared Memory] +HM[Heap Memory] +FM[File Mapping] +end +subgraph "Container Types" +MV[Managed Vector] +MS[Managed String] +MC[Managed Container] +end +BA --> SM +CI --> HM +FA --> FM +SM --> MV +HM --> MS +FM --> MC +``` + +**Diagram sources** +- [chainbase.hpp:53-59](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L53-L59) +- [flat.hpp:1-140](file://thirdparty/fc/include/fc/container/flat.hpp#L1-L140) + +### Memory Alignment and Padding + +The aligned storage template ensures proper memory alignment for different data types: + +**Section sources** +- [chainbase.hpp:53-59](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L53-L59) +- [flat.hpp:1-140](file://thirdparty/fc/include/fc/container/flat.hpp#L1-L140) +- [aligned.hpp:1-21](file://thirdparty/fc/include/fc/aligned.hpp#L1-L21) + +## Locking and Concurrency + +### Reader-Writer Lock System + +The database implements a sophisticated locking mechanism to handle concurrent access: + +```mermaid +stateDiagram-v2 +[*] --> Idle +Idle --> AcquiringRead : request_read_lock() +Idle --> AcquiringWrite : request_write_lock() +AcquiringRead --> ReadLock : lock acquired +AcquiringWrite --> WriteLock : lock acquired +ReadLock --> Processing : perform read operation +WriteLock --> Processing : perform write operation +Processing --> Releasing : operation complete +Releasing --> Idle : unlock +ReadLock --> Upgrading : upgrade to write +Upgrading --> WriteLock : successful upgrade +WriteLock --> Downgrading : downgrade to read +Downgrading --> ReadLock : successful downgrade +``` + +**Diagram sources** +- [chainbase.hpp:1070-1167](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L1070-L1167) + +### Lock Timeout and Retry Mechanisms + +The system implements configurable timeout and retry mechanisms for lock acquisition: + +| Lock Type | Default Wait Time | Max Retries | Behavior | +|-----------|------------------|-------------|----------| +| Weak Read | 500,000 μs | 3 | Fail after retries | +| Strong Read | 1,000,000 μs | 100,000 | Extended wait period | +| Weak Write | 500,000 μs | 3 | Fail after retries | +| Strong Write | 1,000,000 μs | 100,000 | Extended wait period | + +**Section sources** +- [chainbase.hpp:1070-1167](file://thirdparty/chainbase/include/chainbase/chainbase.hpp#L1070-L1167) + +## Memory Monitoring and Resizing + +### Automatic Memory Management + +The database includes sophisticated memory monitoring and automatic resizing capabilities: + +```mermaid +flowchart TD +Start([Block Processing]) --> CheckMemory["check_free_memory()"] +CheckMemory --> CalcReserved["Calculate reserved memory"] +CalcReserved --> CalcFree["Calculate free memory"] +CalcFree --> Compare{"Free < Min Free?"} +Compare --> |Yes| CheckResize{"Auto-resize enabled?"} +Compare --> |No| Continue["Continue normal operation"] +CheckResize --> |Yes| ScheduleResize["Schedule resize"] +CheckResize --> |No| LogWarning["Log warning message"] +ScheduleResize --> ApplyResize["apply_pending_resize()"] +ApplyResize --> Resize["resize(target_size)"] +Resize --> UpdateStats["Update memory statistics"] +UpdateStats --> Continue +LogWarning --> Continue +Continue --> End([Next Block]) +``` + +**Diagram sources** +- [database.cpp:648-682](file://libraries/chain/database.cpp#L648-L682) +- [database.cpp:609-646](file://libraries/chain/database.cpp#L609-L646) + +### Memory Configuration Options + +The system provides extensive configuration options for memory management: + +| Configuration | Default Value | Description | +|---------------|---------------|-------------| +| shared-file-dir | "state" | Location of shared memory files | +| shared-file-size | "2G" | Initial shared memory size | +| inc-shared-file-size | "2G" | Increment size for growth | +| min-free-shared-file-size | Configurable | Minimum free memory threshold | +| read_wait_micro | 500,000 | Read lock wait time | +| max_read_wait_retries | 3 | Read lock retry attempts | +| write_wait_micro | 500,000 | Write lock wait time | +| max_write_wait_retries | 3 | Write lock retry attempts | + +**Section sources** +- [plugin.cpp:199-211](file://plugins/chain/plugin.cpp#L199-L211) +- [database.cpp:648-682](file://libraries/chain/database.cpp#L648-L682) + +## Best Practices + +### Memory Management Guidelines + +1. **Use Smart Pointers**: Prefer smart pointers over raw pointers for automatic memory management +2. **Implement RAII**: Ensure resources are properly cleaned up using RAII patterns +3. **Monitor Memory Usage**: Regularly check memory usage and implement appropriate resizing strategies +4. **Use Appropriate Locking**: Choose the right lock type based on operation requirements +5. **Handle Exceptions**: Ensure proper cleanup in exception scenarios using scoped_exit patterns + +### Performance Optimization Tips + +1. **Batch Operations**: Group related operations to minimize lock contention +2. **Efficient Allocators**: Use appropriate allocators for different data types +3. **Memory Alignment**: Ensure proper alignment for optimal performance +4. **Undo Buffer Management**: Monitor and manage undo buffer sizes appropriately + +## Troubleshooting Guide + +### Common Memory Issues + +**Memory Exhaustion Errors** +- Check free memory thresholds and adjust `min-free-shared-file-size` +- Review application memory usage patterns +- Consider implementing more aggressive garbage collection + +**Lock Contention Problems** +- Analyze lock wait times and adjust timeouts +- Review concurrent access patterns +- Consider reducing lock scope where possible + +**Shared Memory Corruption** +- Verify environment compatibility checks pass +- Check file permissions and disk space +- Review concurrent access patterns for race conditions + +### Diagnostic Tools + +The system provides several diagnostic capabilities: + +- Memory usage logging with periodic updates +- Lock contention monitoring +- Environment compatibility verification +- Automatic memory resizing notifications + +**Section sources** +- [database.cpp:648-682](file://libraries/chain/database.cpp#L648-L682) +- [chainbase.cpp:80-89](file://thirdparty/chainbase/src/chainbase.cpp#L80-L89) + +## Conclusion + +The VIZ CPP Node memory management system represents a sophisticated approach to handling blockchain-specific memory requirements. By combining shared memory architectures with modern C++ memory management techniques, the system achieves both high performance and reliability. + +Key strengths of the system include: + +- **High Performance**: Shared memory eliminates context switching overhead +- **Reliability**: Comprehensive error checking and recovery mechanisms +- **Scalability**: Automatic memory resizing and monitoring +- **Safety**: Extensive use of RAII and smart pointers +- **Flexibility**: Configurable parameters for different deployment scenarios + +The system successfully balances the competing demands of blockchain applications: maintaining fast access to persistent state while ensuring data integrity and providing mechanisms for graceful degradation under memory pressure. \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Network Library.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Network Library.md index d5c5322be0..95bd2e69f8 100644 --- a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Network Library.md +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Network Library.md @@ -20,10 +20,11 @@ ## Update Summary **Changes Made** -- Updated peer information handling section to reflect improved IP address extraction reliability -- Enhanced peer statistics logging documentation with conversion overhead reduction details -- Added comprehensive coverage of critical bug fix in peer information processing -- Updated troubleshooting guidance to include IP address extraction error handling +- Enhanced Node Management section to document the new virtual `resync()` method for improved extensibility +- Updated Programmatic Synchronization Control section with comprehensive details about the resync functionality +- Added documentation for the `simulated_network` class's resync implementation +- Updated dependency analysis to reflect the new virtual method structure +- Enhanced troubleshooting guidance with resync usage scenarios ## Table of Contents 1. [Introduction](#introduction) @@ -33,19 +34,20 @@ 5. [Detailed Component Analysis](#detailed-component-analysis) 6. [Peer Statistics and Metrics System](#peer-statistics-and-metrics-system) 7. [Peer Information Handling and IP Extraction](#peer-information-handling-and-ip-extraction) -8. [Dependency Analysis](#dependency-analysis) -9. [Performance Considerations](#performance-considerations) -10. [Troubleshooting Guide](#troubleshooting-guide) -11. [Conclusion](#conclusion) +8. [Programmatic Synchronization Control](#programmatic-synchronization-control) +9. [Dependency Analysis](#dependency-analysis) +10. [Performance Considerations](#performance-considerations) +11. [Troubleshooting Guide](#troubleshooting-guide) +12. [Conclusion](#conclusion) ## Introduction This document describes the Network Library that implements peer-to-peer communication and network protocol for the VIZ node. It covers the node management layer, peer connection orchestration, standard network messages, secure transport, peer address management, and message serialization. The library provides a robust foundation for blockchain synchronization, transaction broadcasting, and block propagation across a distributed network. -**Updated** Enhanced with comprehensive peer statistics logging system including latency tracking, blocking status reporting, periodic statistics collection, and improved peer information handling with reliable IP address extraction and reduced conversion overhead. +**Updated** Enhanced with comprehensive peer statistics logging system including latency tracking, blocking status reporting, periodic statistics collection, improved peer information handling with reliable IP address extraction and reduced conversion overhead. Added programmatic synchronization control through the new `resync()` method for improved network recovery from various network states. The virtual `resync()` method provides extensibility for derived classes to customize synchronization restart behavior. ## Project Structure The network library is organized into cohesive modules: -- Node management and synchronization orchestration +- Node management and synchronization orchestration with virtual resync method support - Peer connection lifecycle and message queues - Standard network message definitions - Secure TCP transport with ECDH key exchange @@ -54,6 +56,7 @@ The network library is organized into cohesive modules: - Configuration constants for protocol behavior - **Peer statistics and metrics collection system with improved IP address extraction** - **P2P plugin integration for peer monitoring and statistics** +- **Programmatic synchronization control for network recovery with virtual method extensibility** ```mermaid graph TB @@ -68,10 +71,13 @@ MOC["message_oriented_connection.hpp"] CFG["config.hpp"] STATS["Statistics System"] P2P["p2p_plugin.cpp"] +RESYNC["Virtual resync() Method"] +SIMNET["simulated_network"] end N --> PC N --> PD N --> CM +N --> RESYNC PC --> MOC PC --> STCP PC --> MSG @@ -84,6 +90,8 @@ CFG --> STCP STATS --> N STATS --> PC P2P --> STATS +P2P --> RESYNC +SIMNET --> RESYNC ``` **Diagram sources** @@ -96,6 +104,8 @@ P2P --> STATS - [message_oriented_connection.hpp:45-79](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) - [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) - [p2p_plugin.cpp:500-560](file://plugins/p2p/p2p_plugin.cpp#L500-L560) +- [node.cpp:5281-5286](file://libraries/network/node.cpp#L5281-L5286) +- [node.cpp:346-347](file://libraries/network/node.cpp#L346-L347) **Section sources** - [node.hpp:1-355](file://libraries/network/include/graphene/network/node.hpp#L1-L355) @@ -109,7 +119,7 @@ P2P --> STATS - [p2p_plugin.cpp:1-742](file://plugins/p2p/p2p_plugin.cpp#L1-L742) ## Core Components -- Node: Central orchestrator for peer discovery, connection management, synchronization, and message broadcasting. +- Node: Central orchestrator for peer discovery, connection management, synchronization, and message broadcasting with virtual resync method support. - PeerConnection: Manages individual peer sessions, message queuing, inventory tracking, and negotiation states. - CoreMessages: Defines standardized message types for transactions, blocks, inventory, handshake, and operational commands. - STCP Socket: Provides secure transport via ECDH key exchange and AES encryption. @@ -118,6 +128,7 @@ P2P --> STATS - MessageOrientedConnection: Bridges secure sockets to message streams with event callbacks. - **Statistics System: Collects and reports peer performance metrics, latency data, and connection statistics with improved IP address extraction reliability.** - **P2P Plugin: Integrates peer monitoring, statistics collection, and network diagnostics with enhanced error handling.** +- **Programmatic Synchronization Control: Enables manual restart of synchronization with all connected peers for network recovery scenarios through virtual method extensibility.** **Section sources** - [node.hpp:182-304](file://libraries/network/include/graphene/network/node.hpp#L182-L304) @@ -157,6 +168,9 @@ Node-->>Peer : "broadcast inventory" Peer-->>App : "handle_block/handle_transaction" P2P->>Stats : "collect peer statistics" Stats->>P2P : "enhanced IP address extraction" +Note over Node,P2P : "Virtual resync method support" +P2P->>Node : "resync()" +Node->>Node : "start_synchronizing()" ``` **Diagram sources** @@ -164,6 +178,7 @@ Stats->>P2P : "enhanced IP address extraction" - [peer_connection.cpp:208-242](file://libraries/network/peer_connection.cpp#L208-L242) - [stcp_socket.cpp:69-72](file://libraries/network/stcp_socket.cpp#L69-L72) - [p2p_plugin.cpp:500-560](file://plugins/p2p/p2p_plugin.cpp#L500-L560) +- [node.cpp:5281-5286](file://libraries/network/node.cpp#L5281-L5286) ## Detailed Component Analysis @@ -175,6 +190,7 @@ The Node class is the central coordinator for peer discovery, connection orchest - Track connection counts and network usage statistics - Manage advanced parameters and peer advertising controls - **Collect and report peer statistics and call performance metrics with improved IP address extraction** +- **Programmatic synchronization control through the virtual resync() method for extensible behavior** Key responsibilities: - Peer pool management and connection limits @@ -183,6 +199,7 @@ Key responsibilities: - Bandwidth monitoring and rate limiting - Firewall detection and NAT traversal helpers - **Statistics collection and reporting for network performance analysis with reliable peer information handling** +- **Programmatic synchronization restart for network recovery scenarios through virtual method override capability** ```mermaid classDiagram @@ -204,6 +221,7 @@ class node { +get_potential_peers() +disable_peer_advertising() +get_call_statistics() ++resync() } class node_impl { -_active_connections @@ -237,13 +255,20 @@ class node_impl { +on_get_current_connections_reply_message(...) +on_connection_closed(...) +get_call_statistics() ++start_synchronizing() ++resync() +} +class simulated_network { ++resync() override } node --> node_impl : "owns" +node <|-- simulated_network : "inherits" ``` **Diagram sources** - [node.hpp:190-304](file://libraries/network/include/graphene/network/node.hpp#L190-L304) - [node.cpp:424-799](file://libraries/network/node.cpp#L424-L799) +- [node.cpp:346-347](file://libraries/network/node.cpp#L346-L347) **Section sources** - [node.hpp:182-304](file://libraries/network/include/graphene/network/node.hpp#L182-L304) @@ -580,6 +605,73 @@ The enhanced system processes peer information through a structured pipeline: - [p2p_plugin.cpp:500-560](file://plugins/p2p/p2p_plugin.cpp#L500-L560) - [node.cpp:4900-4970](file://libraries/network/node.cpp#L4900-L4970) +## Programmatic Synchronization Control + +**Updated Section** The network library now provides programmatic control over synchronization through the virtual `resync()` method, enabling manual restart of synchronization with all connected peers and supporting extensible behavior in derived classes. + +### Virtual Resync Method Implementation +The `resync()` method provides a clean interface for forcing synchronization restart with enhanced extensibility: + +- **Method Purpose**: Restarts synchronization with all currently connected peers +- **Virtual Design**: Declared as virtual in the base `node` class, allowing derived classes to override behavior +- **Implementation**: Calls `start_synchronizing()` which iterates through all active connections +- **Logging**: Emits detailed log messages showing the number of connected peers being restarted +- **Thread Safety**: Verified to run on the correct thread using `VERIFY_CORRECT_THREAD()` + +### Enhanced Extensibility for Derived Classes +The virtual nature of `resync()` allows for specialized behavior in derived classes: + +- **Base Class Behavior**: Default implementation restarts synchronization with all active peers +- **Simulated Network Override**: `simulated_network` class provides empty implementation for testing +- **Custom Implementations**: Derived classes can override `resync()` to implement custom restart logic +- **Consistent Interface**: All implementations follow the same virtual method contract + +### Synchronization Restart Process +When `resync()` is called, the following sequence occurs: + +1. **Connection Enumeration**: Iterates through all currently active peer connections +2. **Individual Restart**: Calls `start_synchronizing_with_peer()` for each connected peer +3. **State Reset**: Forces peers to re-establish synchronization state +4. **Inventory Refresh**: Peers re-advertise their inventory and synchronization status + +```mermaid +flowchart TD +Start(["resync() Called"]) --> CheckActive["Check Active Connections"] +CheckActive --> LoopPeers{"More Peers?"} +LoopPeers --> |Yes| StartPeer["start_synchronizing_with_peer(peer)"] +StartPeer --> LoopPeers +LoopPeers --> |No| LogMsg["Log restart message"] +LogMsg --> Complete["Resync Complete"] +``` + +**Diagram sources** +- [node.cpp:5281-5286](file://libraries/network/node.cpp#L5281-L5286) +- [node.cpp:4164-4168](file://libraries/network/node.cpp#L4164-L4168) + +### Integration with P2P Plugin +The P2P plugin utilizes the `resync()` method for automatic network recovery: + +- **Stale Sync Detection**: Monitors for periods without block reception +- **Automatic Recovery**: When stale sync is detected, calls `resync()` to restart synchronization +- **Seed Reconnection**: Reconnects to seed nodes after resync to ensure continued connectivity +- **Configuration Options**: Controlled by `p2p-stale-sync-detection` and `p2p-stale-sync-timeout-seconds` options + +### Use Cases for Programmatic Resync +The `resync()` method is particularly useful for: + +- **Network Recovery**: Recovering from partial synchronization failures +- **Manual Intervention**: Operator-driven restart of synchronization +- **Debugging**: Clearing stuck synchronization states during development +- **Network State Changes**: Adapting to significant network topology changes +- **Testing Scenarios**: Simulated network testing with controlled synchronization restarts + +**Section sources** +- [node.hpp:298-304](file://libraries/network/include/graphene/network/node.hpp#L298-L304) +- [node.cpp:5281-5286](file://libraries/network/node.cpp#L5281-L5286) +- [node.cpp:4164-4168](file://libraries/network/node.cpp#L4164-L4168) +- [p2p_plugin.cpp:616-618](file://plugins/p2p/p2p_plugin.cpp#L616-L618) +- [node.cpp:346-347](file://libraries/network/node.cpp#L346-L347) + ## Dependency Analysis The network components depend on each other in a layered fashion: - Node depends on PeerConnection, PeerDatabase, and CoreMessages @@ -589,12 +681,14 @@ The network components depend on each other in a layered fashion: - Config constants drive behavior across components - **Statistics system integrates with Node and PeerConnection for metrics collection** - **P2P plugin integrates with statistics system for enhanced peer monitoring** +- **Resync functionality integrates with Node synchronization system and supports virtual method extensibility** ```mermaid graph LR Node["node.hpp/.cpp"] --> PeerConn["peer_connection.hpp/.cpp"] Node --> PeerDB["peer_database.hpp/.cpp"] Node --> CoreMsg["core_messages.hpp/.cpp"] +Node --> Resync["Virtual resync() Method"] PeerConn --> Msg["message.hpp"] PeerConn --> MOC["message_oriented_connection.hpp"] PeerConn --> STCP["stcp_socket.hpp/.cpp"] @@ -606,6 +700,8 @@ STCP --> Cfg Stats["Statistics System"] --> Node Stats --> PeerConn P2P["p2p_plugin.cpp"] --> Stats +P2P --> Resync +SimNet["simulated_network"] --> Resync ``` **Diagram sources** @@ -637,6 +733,8 @@ P2P["p2p_plugin.cpp"] --> Stats - **Latency monitoring**: Round-trip delay tracking helps identify slow or problematic peers for connection optimization. - **IP extraction efficiency**: Improved IP address extraction reduces CPU overhead and prevents crashes from malformed addresses. - **Error handling**: Comprehensive try-catch blocks prevent cascading failures in peer information processing. +- **Resync efficiency**: Programmatic resync restarts only active connections, minimizing disruption to healthy peers. +- **Virtual method overhead**: Virtual dispatch adds minimal overhead while providing extensibility benefits. ## Troubleshooting Guide Common issues and diagnostics: @@ -650,6 +748,8 @@ Common issues and diagnostics: - **Performance bottlenecks**: Use call statistics to identify slow methods and optimize performance. - **IP extraction failures**: Monitor for "(unknown)" IP addresses indicating extraction errors. - **Statistics logging issues**: Verify P2P plugin configuration for statistics collection. +- **Synchronization stalls**: Use `resync()` method to manually restart synchronization with all peers. +- **Virtual method conflicts**: Ensure derived classes properly override `resync()` when extending functionality. Operational controls: - Disable peer advertising for debugging isolated networks. @@ -658,6 +758,9 @@ Operational controls: - **Monitor peer metrics**: Regularly review latency and blocking status for network health assessment. - **Enable statistics logging**: Use `p2p-stats-enabled` option to activate peer monitoring. - **Configure logging intervals**: Set appropriate `p2p-stats-interval` for desired monitoring frequency. +- **Configure stale sync detection**: Enable `p2p-stale-sync-detection` to automatically recover from stalled synchronization. +- **Manual resync control**: Use `resync()` method for operator-driven synchronization restarts. +- **Extensibility patterns**: Leverage virtual method design for custom synchronization behaviors in derived classes. **Section sources** - [peer_database.hpp:39-45](file://libraries/network/include/graphene/network/peer_database.hpp#L39-L45) @@ -669,4 +772,4 @@ Operational controls: ## Conclusion The Network Library provides a comprehensive, secure, and scalable foundation for peer-to-peer communication. Its modular design separates concerns between node orchestration, peer lifecycle management, protocol messaging, secure transport, and peer topology maintenance. With built-in performance controls, diagnostic capabilities, and extensible message types, it supports efficient blockchain synchronization and robust network operation. -**Updated** The enhanced peer statistics logging system significantly improves network observability by providing detailed latency tracking, blocking status reporting, and comprehensive peer metrics. The critical bug fix in peer information handling ensures reliable IP address extraction with reduced conversion overhead, preventing crashes and improving overall network stability. The integration with the P2P plugin provides comprehensive monitoring capabilities for operators and developers working with the VIZ blockchain network. \ No newline at end of file +**Updated** The enhanced peer statistics logging system significantly improves network observability by providing detailed latency tracking, blocking status reporting, and comprehensive peer metrics. The critical bug fix in peer information handling ensures reliable IP address extraction with reduced conversion overhead, preventing crashes and improving overall network stability. The integration with the P2P plugin provides comprehensive monitoring capabilities for operators and developers working with the VIZ blockchain network. The new virtual `resync()` method adds powerful programmatic control for network recovery, enabling manual restart of synchronization with all connected peers and improved resilience against various network states and synchronization failures. The virtual method design provides extensibility for derived classes to customize synchronization behavior while maintaining a consistent interface across the network library ecosystem. \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Node Management.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Node Management.md index fb790c9b71..ea7ae19945 100644 --- a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Node Management.md +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Node Management.md @@ -20,11 +20,11 @@ ## Update Summary **Changes Made** -- Enhanced peer handling logic with improved unlinkable_block_exception handling -- Implemented intelligent peer soft-banning mechanisms with automatic expiration -- Added differentiation between stale fork peers and legitimate sync candidates -- Prevented infinite sync loops through intelligent peer state management -- Updated emergency consensus network-level improvements documentation +- Enhanced peer soft-ban handling with intelligent stale fork detection and automatic flag reset logic +- Improved unlinkable block exception management with differentiated handling based on peer position relative to local blockchain head +- Strengthened fork database capabilities with enhanced emergency consensus support and improved block rejection handling +- Added trusted peer soft-ban duration reduction (5 minutes vs 1 hour) for faster recovery from transient errors +- Implemented comprehensive soft-ban expiration handling with automatic flag reset during network synchronization ## Table of Contents 1. [Introduction](#introduction) @@ -417,12 +417,13 @@ Send --> Deliver["Deliver item via fetch_items_message"] The node now implements sophisticated soft-ban mechanisms to prevent cascading disconnections during emergency consensus scenarios and improve peer classification accuracy. Key features: -- **Soft-ban duration**: 1 hour (3600 seconds) for fork-rejected blocks +- **Soft-ban duration**: 1 hour (3600 seconds) for fork-rejected blocks, reduced to 5 minutes (300 seconds) for trusted peers - **Automatic expiration**: Soft-bans automatically expire after the designated period - **Intelligent peer classification**: Differentiates between stale fork peers and legitimate sync candidates - **Flag reset logic**: When soft-bans expire, the inhibit_fetching_sync_blocks flag is automatically reset - **Emergency mode protection**: Prevents cascading failures during network emergencies - **Infinite loop prevention**: Smart peer state management prevents endless sync attempts +- **Trusted peer support**: Special handling for peers in trusted-snapshot-peer configuration ```mermaid sequenceDiagram @@ -461,12 +462,14 @@ The system now provides intelligent handling for unlinkable_block_exception base - Peer is on a stale fork that cannot be resolved - Immediate soft-ban for 1 hour with inhibit_fetching_sync_blocks = true - Prevents wasted bandwidth and prevents infinite sync loops +- Trusted peers receive 5-minute soft-ban duration instead of 1 hour **Legitimate Sync Candidate**: - When peer block number > local head block number - Peer may be ahead of us, indicating legitimate sync opportunity - Restarts sync process instead of disconnecting - Allows peer to potentially help us catch up +- Prevents unnecessary network churn during legitimate catch-up scenarios **Section sources** - [node.cpp:3574-3629](file://libraries/network/node.cpp#L3574-L3629) @@ -522,7 +525,7 @@ The enhanced peer handling logic prevents infinite sync loops through intelligen The node now implements sophisticated soft-ban mechanisms to prevent cascading disconnections during emergency consensus scenarios. When peers offer blocks that cause fork rejections, the system applies soft-bans instead of immediate disconnections. Key features: -- **Soft-ban duration**: 1 hour (3600 seconds) for fork-rejected blocks +- **Soft-ban duration**: 1 hour (3600 seconds) for fork-rejected blocks, reduced to 5 minutes for trusted peers - **Automatic expiration**: Soft-bans automatically expire after the designated period - **Flag reset logic**: When soft-bans expire, the inhibit_fetching_sync_blocks flag is automatically reset - **Emergency mode protection**: Prevents cascading failures during network emergencies @@ -671,10 +674,11 @@ DBC --> CFG["config.hpp"] - Automatic flag management: Reduces manual intervention requirements during extended emergency operations. - Intelligent peer classification: Optimizes peer selection and reduces wasted bandwidth on stale forks. - Soft-ban caching: Prevents repeated attempts with problematic peers during emergency periods. +- Trusted peer optimization: Reduced soft-ban duration for trusted peers enables faster network recovery. ## Troubleshooting Guide Common issues and resolutions: -- Port binding conflicts: Use listen_on_port with wait_if_not_available=true to retry; otherwise, allow dynamic port selection. +- Port binding conflicts: Use listen_on_port with wait_if_endpoint_is_busy=true to retry; otherwise, allow dynamic port selection. - Rejection reasons: Review connection_rejected_message reason codes (e.g., connected_to_self, already_connected, not_accepting_connections, different_chain, outdated client). - Firewall/NAT: Use check-firewall messages to detect; adjust inbound/outbound ports and consider advertised inbound addresses. - Peer database corruption: Clear peer database via clear_peer_database to reset discovery state. @@ -685,6 +689,8 @@ Common issues and resolutions: - Flag reset issues: Verify inhibit_fetching_sync_blocks flag resets after soft-ban expiration; manual intervention rarely needed. - Infinite sync loops: Monitor peer behavior; system now prevents endless sync attempts through intelligent soft-ban mechanisms. - Stale fork detection: System automatically soft-bans peers on stale forks to prevent wasted resources. +- Trusted peer issues: Verify trusted-snapshot-peer configuration for reduced 5-minute soft-ban duration. +- Block rejection handling: Monitor unlinkable_block_exception patterns to identify stale fork vs legitimate sync scenarios. **Section sources** - [node.cpp:2251-2280](file://libraries/network/node.cpp#L2251-L2280) @@ -694,7 +700,7 @@ Common issues and resolutions: - [database.cpp:4455-4460](file://libraries/chain/database.cpp#L4455-L4460) ## Conclusion -The Node Management component provides a robust, configurable, and efficient P2P orchestration layer with comprehensive emergency consensus support and enhanced peer handling capabilities. The recent improvements significantly enhance network resilience through intelligent soft-ban mechanisms, automatic flag reset logic, and deterministic tie-breaking algorithms. +The Node Management component provides a robust, configurable, and efficient P2P orchestration layer with comprehensive emergency consensus support and enhanced peer handling capabilities. The recent improvements significantly enhance network resilience through intelligent soft-ban mechanisms, automatic flag reset logic, and deterministic tie-breaking algorithms. The enhanced peer handling logic with improved unlinkable_block_exception handling and intelligent peer soft-banning mechanisms prevents cascading failures during emergency consensus scenarios while differentiating between stale fork peers and legitimate sync candidates to prevent infinite sync loops. The system now provides sophisticated peer classification based on block position relative to local blockchain head, ensuring optimal resource utilization and network stability. diff --git a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Peer Connection Management.md b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Peer Connection Management.md index fbbd8c9285..30bdaf509f 100644 --- a/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Peer Connection Management.md +++ b/.qoder/repowiki/en/content/Architecture Overview/Core Libraries/Network Library/Peer Connection Management.md @@ -16,8 +16,26 @@ - [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp) - [peer_database.cpp](file://libraries/network/peer_database.cpp) - [message.hpp](file://libraries/network/include/graphene/network/message.hpp) +- [exceptions.hpp](file://libraries/network/include/graphene/network/exceptions.hpp) +- [p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) +- [database.cpp](file://libraries/chain/database.cpp) +- [fork_database.cpp](file://libraries/chain/fork_database.cpp) +- [database_exceptions.hpp](file://libraries/chain/include/graphene/chain/database_exceptions.hpp) +- [plugin.hpp](file://plugins/snapshot/plugin.hpp) +- [plugin.cpp](file://plugins/snapshot/plugin.cpp) +- [snapshot-plugin.md](file://documentation/snapshot-plugin.md) +- [config.ini](file://share/vizd/config/config.ini) +## Update Summary +**Changes Made** +- Enhanced soft-ban system with dual-tier mechanism supporting trusted peer differentiation +- Added trusted peer support with configurable trusted-snapshot-peer endpoints +- Implemented 5-minute soft-ban duration for trusted peers versus 1-hour for regular peers +- Integrated trusted peer management between P2P and snapshot plugins +- Enhanced peer trust detection and soft-ban duration calculation +- Added comprehensive configuration options for trusted peer management + ## Table of Contents 1. [Introduction](#introduction) 2. [Project Structure](#project-structure) @@ -33,88 +51,143 @@ ## Introduction This document provides comprehensive coverage of Peer Connection Management in the VIZ C++ node networking stack. It focuses on the peer_connection.hpp implementation for managing bidirectional peer communication channels, connection state tracking, and message routing. The document explains peer connection establishment protocols, authentication mechanisms, and handshake procedures. It covers connection lifecycle management including initiation, maintenance, graceful disconnection, and error recovery. It details peer state tracking, connection quality metrics, and peer reputation systems. Message queuing, priority handling, and connection multiplexing are documented along with practical examples and guidance on peer selection, balancing, and fault tolerance. +**Updated** Enhanced with sophisticated trusted peer support featuring dual-tier soft-ban mechanisms. Trusted peers configured via trusted-snapshot-peer receive 5-minute soft-bans instead of the default 1-hour duration, enabling faster recovery from transient errors while maintaining network stability. The system now includes comprehensive peer trust management, automatic trust detection, and seamless integration between P2P and snapshot plugins for enhanced operational efficiency. + ## Project Structure -The peer connection management system is composed of several interconnected components: -- Peer-level abstraction: peer_connection encapsulates a single peer’s state and messaging. -- Transport abstraction: message_oriented_connection wraps a secure transport socket and handles message framing. +The peer connection management system is composed of several interconnected components with enhanced trusted peer support: +- Peer-level abstraction: peer_connection encapsulates a single peer's state and messaging with enhanced error handling, soft-ban support, and improved peer state fields. +- Transport abstraction: message_oriented_connection wraps a secure transport socket and handles message framing with improved logging. - Security: stcp_socket performs ECDH key exchange and AES encryption for secure communication. -- Protocol messages: core_messages defines the handshake and operational messages exchanged between peers. -- Node orchestration: node coordinates peer connections, maintains peer databases, and manages lifecycle events. +- Protocol messages: core_messages defines the handshake and operational messages exchanged between peers with reliable IP address handling. +- Node orchestration: node coordinates peer connections, maintains peer databases, and manages lifecycle events with enhanced exception safety, soft-ban functionality, ANSI color-coded notifications, and trusted peer management. - Configuration: config.hpp centralizes tunable constants for timeouts, limits, and behavior. +- Chain integration: database and fork_database handle block validation with proper exception propagation for P2P layer consumption. +- **New** Trusted peer management: Enhanced peer trust detection and dual-tier soft-ban system with configurable trusted-snapshot-peer endpoints. +- **New** Plugin integration: Seamless coordination between P2P and snapshot plugins for trusted peer configuration and management. ```mermaid graph TB subgraph "Peer Layer" -PC["peer_connection
Bidirectional channel"] +PC["peer_connection
Bidirectional channel
Enhanced Error Handling
Soft-ban Support
Improved State Fields"] end subgraph "Transport Layer" -MOC["message_oriented_connection
Message framing"] +MOC["message_oriented_connection
Message framing
Robust Logging"] STCP["stcp_socket
ECDH + AES"] end subgraph "Protocol Layer" -CM["core_messages
Handshake & ops"] +CM["core_messages
Handshake & ops
Reliable IP Extraction"] MSG["message
Header + payload"] end subgraph "Node Orchestration" -N["node
Connection manager"] -PD["peer_database
Peer reputation"] -end +N["node
Connection manager
Exception Safety
Soft-ban Logic
ANSI Color Notifications
Trusted Peer Management"] +PD["peer_database
Peer reputation
Improved Recovery"] +TP["trusted_peer_manager
5-min soft-bans
Dual-tier system
IP-based trust detection"] +END +subgraph "Plugin Integration" +P2P["p2p_plugin
Trusted peer registration
Configuration management"] +SNAP["snapshot_plugin
trusted-snapshot-peer config
Peer discovery"] +END +subgraph "Chain Integration" +DB["database
Block validation
Exception propagation
Memory resize handling"] +FD["fork_database
Fork management
Link handling"] +EX["exceptions
Network exceptions
Soft-ban types
Memory resize exceptions"] +END PC --> MOC MOC --> STCP PC --> CM CM --> MSG N --> PC N --> PD +N --> TP +P2P --> N +P2P --> SNAP +SNAP --> TP +N --> DB +DB --> FD +DB --> EX +N --> EX ``` **Diagram sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) -- [message_oriented_connection.hpp](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) -- [stcp_socket.hpp](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L72-L95) -- [message.hpp](file://libraries/network/include/graphene/network/message.hpp#L42-L106) -- [node.hpp](file://libraries/network/include/graphene/network/node.hpp#L190-L304) -- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp#L104-L134) +- [peer_connection.hpp:79-351](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) +- [message_oriented_connection.hpp:45-79](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) +- [stcp_socket.hpp:37-93](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) +- [core_messages.hpp:72-95](file://libraries/network/include/graphene/network/core_messages.hpp#L72-L95) +- [message.hpp:42-106](file://libraries/network/include/graphene/network/message.hpp#L42-L106) +- [node.hpp:190-304](file://libraries/network/include/graphene/network/node.hpp#L190-L304) +- [peer_database.hpp:104-134](file://libraries/network/include/graphene/network/peer_database.hpp#L104-L134) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [exceptions.hpp:33-45](file://libraries/network/include/graphene/network/exceptions.hpp#L33-L45) **Section sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L1-L380) -- [message_oriented_connection.hpp](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L1-L85) -- [stcp_socket.hpp](file://libraries/network/include/graphene/network/stcp_socket.hpp#L1-L99) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L1-L573) -- [node.hpp](file://libraries/network/include/graphene/network/node.hpp#L1-L355) -- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp#L1-L141) -- [message.hpp](file://libraries/network/include/graphene/network/message.hpp#L1-L114) +- [peer_connection.hpp:1-383](file://libraries/network/include/graphene/network/peer_connection.hpp#L1-L383) +- [message_oriented_connection.hpp:1-85](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L1-L85) +- [stcp_socket.hpp:1-99](file://libraries/network/include/graphene/network/stcp_socket.hpp#L1-L99) +- [core_messages.hpp:1-573](file://libraries/network/include/graphene/network/core_messages.hpp#L1-L573) +- [node.hpp:1-355](file://libraries/network/include/graphene/network/node.hpp#L1-L355) +- [peer_database.hpp:1-141](file://libraries/network/include/graphene/network/peer_database.hpp#L1-L141) +- [message.hpp:1-114](file://libraries/network/include/graphene/network/message.hpp#L1-L114) +- [database.cpp:1-6389](file://libraries/chain/database.cpp#L1-L6389) +- [fork_database.cpp:1-271](file://libraries/chain/fork_database.cpp#L1-L271) +- [exceptions.hpp:1-49](file://libraries/network/include/graphene/network/exceptions.hpp#L1-L49) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) ## Core Components -- peer_connection: Manages a single peer’s connection state, queues outgoing messages, tracks inventory, and exposes metrics. It delegates message delivery to message_oriented_connection and integrates with node-level callbacks. -- message_oriented_connection: Provides a message-oriented API over a secure socket, handling read/write loops, padding, and error propagation. +- peer_connection: Manages a single peer's connection state, queues outgoing messages, tracks inventory, and exposes metrics with enhanced error handling and IP address extraction reliability. It delegates message delivery to message_oriented_connection and integrates with node-level callbacks. **Enhanced** with fork_rejected_until and inhibit_fetching_sync_blocks fields for soft-ban functionality and improved peer state management. +- message_oriented_connection: Provides a message-oriented API over a secure socket, handling read/write loops, padding, and error propagation with improved logging mechanisms. - stcp_socket: Implements ECDH key exchange and AES encryption for secure transport. -- core_messages: Defines the protocol messages used during handshake and runtime operations. -- node: Orchestrates peer connections, manages peer databases, and coordinates synchronization and broadcasting. -- peer_database: Tracks potential peers, connection attempts, and outcomes for peer selection and reputation. +- core_messages: Defines the protocol messages used during handshake and runtime operations with reliable IP address handling and enhanced error reporting. +- node: Orchestrates peer connections, manages peer databases, and coordinates synchronization and broadcasting with better exception safety, soft-ban logic, fork rejection handling, ANSI color-coded notification support, and **new** trusted peer management capabilities. +- peer_database: Tracks potential peers, connection attempts, and outcomes for peer selection and reputation with improved error handling. +- **New** trusted_peer_manager: Manages trusted peer configuration and detection with 5-minute soft-ban duration for trusted peers versus 1-hour for regular peers. +- **New** p2p_plugin: Integrates trusted peer management with snapshot plugin configuration, automatically registering trusted peers for reduced soft-ban duration. +- **New** snapshot_plugin: Provides trusted-snapshot-peer configuration and peer discovery for snapshot synchronization. +- **New** database: Handles block validation with proper exception propagation, converting chain exceptions to network exceptions for P2P layer consumption, and includes comprehensive memory resize exception handling. +- **New** fork_database: Manages fork relationships and block linking with proper exception handling for unlinkable blocks. +- **New** database_exceptions: Defines deferred_resize_exception for handling shared memory resize operations during block processing. Key responsibilities: -- Handshake and authentication: ECDH key exchange via stcp_socket, hello/connection_accepted messages via core_messages. -- Lifecycle management: Connect, accept, close, destroy, and cleanup. -- Message routing: Queueing, priority, and multiplexing across peers. -- Metrics and reputation: Connection times, bytes sent/received, inventory lists, and peer selection. +- Handshake and authentication: ECDH key exchange via stcp_socket, hello/connection_accepted messages via core_messages with reliable IP address extraction. +- Lifecycle management: Connect, accept, close, destroy, and cleanup with enhanced error recovery and exception safety, including soft-ban mechanisms with ANSI color-coded notifications. +- Message routing: Queueing, priority, and multiplexing across peers with improved logging and monitoring. +- Metrics and reputation: Connection times, bytes sent/received, inventory lists, and peer selection with robust error handling. +- **Enhanced** Trusted peer management: Automatic trust detection based on trusted-snapshot-peer configuration, dual-tier soft-ban system with 5-minute duration for trusted peers, and seamless integration between P2P and snapshot plugins. +- **Enhanced** Block processing: Proper handling of blocks returned as false by chain, conversion of unlinkable_block_exception to network exceptions, soft-ban functionality for peer management, comprehensive memory resize exception handling, and trusted peer-aware soft-ban duration calculation. +- **Enhanced** Peer state management: fork_rejected_until timestamp tracking, inhibit_fetching_sync_blocks flag management, automatic soft-ban expiration handling, and trusted peer IP address storage for efficient lookup. **Section sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L68-L162) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L128-L140) -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L49-L72) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) -- [node.cpp](file://libraries/network/node.cpp#L424-L799) -- [peer_database.cpp](file://libraries/network/peer_database.cpp#L100-L174) +- [peer_connection.hpp:79-351](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) +- [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) +- [message_oriented_connection.cpp:128-140](file://libraries/network/message_oriented_connection.cpp#L128-L140) +- [stcp_socket.cpp:49-72](file://libraries/network/stcp_socket.cpp#L49-L72) +- [core_messages.hpp:233-306](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) +- [node.cpp:424-799](file://libraries/network/node.cpp#L424-L799) +- [peer_database.cpp:100-174](file://libraries/network/peer_database.cpp#L100-L174) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [database_exceptions.hpp:86-86](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L86-L86) ## Architecture Overview -The peer connection architecture follows a layered design: -- Application (node) controls peer lifecycle and delegates message processing to the node delegate. -- Peer (peer_connection) holds per-peer state and queues messages. -- Transport (message_oriented_connection) frames messages and manages the read/write loop. +The peer connection architecture follows a layered design with enhanced error handling, soft-ban functionality, ANSI color-coded notifications, and **new** trusted peer support: +- Application (node) controls peer lifecycle and delegates message processing to the node delegate with improved exception safety, soft-ban logic, enhanced notification capabilities, and **new** trusted peer management. +- Peer (peer_connection) holds per-peer state and queues messages with robust error handling mechanisms, including soft-ban state tracking and improved peer state fields. +- Transport (message_oriented_connection) frames messages and manages the read/write loop with enhanced logging. - Security (stcp_socket) negotiates keys and encrypts traffic. -- Protocol (core_messages) defines the message types and semantics. +- Protocol (core_messages) defines the message types and semantics with reliable IP address extraction. +- **Enhanced** Chain integration (database/fork_database) validates blocks and propagates exceptions to the P2P layer for proper peer management, including comprehensive memory resize exception handling. +- **New** Trusted peer integration (p2p_plugin/snapshot_plugin) manages trusted peer configuration and automatic registration for reduced soft-ban duration. ```mermaid sequenceDiagram @@ -123,6 +196,9 @@ participant Peer as "peer_connection" participant MOC as "message_oriented_connection" participant STCP as "stcp_socket" participant Remote as "Remote Peer" +participant Chain as "database/fork_database" +participant P2P as "p2p_plugin" +participant Snap as "snapshot_plugin" Node->>Peer : "connect_to(endpoint)" Peer->>MOC : "connect_to(endpoint)" MOC->>STCP : "connect_to(endpoint)" @@ -132,29 +208,34 @@ Remote-->>STCP : "Public key" STCP-->>STCP : "Derive shared secret" STCP-->>MOC : "Encrypted channel ready" MOC-->>Peer : "read_loop started" -Peer->>Peer : "send hello" +Peer->>Peer : "send hello with IP extraction" Peer->>Node : "on_message(hello)" Node->>Peer : "on_hello_message()" Peer->>Peer : "send connection_accepted" -Peer->>Node : "on_connection_accepted" -Note over Peer,Node : "Negotiation complete" +Peer->>Node : "on_connection_accepted()" +Note over Node,Peer : "Negotiation complete with enhanced error handling, soft-ban support, ANSI notifications, and trusted peer detection" +Note over P2P,Snap : "Automatic trusted peer registration and management" ``` **Diagram sources** -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L208-L242) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L135-L140) -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L69-L72) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L272) -- [node.cpp](file://libraries/network/node.cpp#L662-L718) +- [peer_connection.cpp:208-242](file://libraries/network/peer_connection.cpp#L208-L242) +- [message_oriented_connection.cpp:135-140](file://libraries/network/message_oriented_connection.cpp#L135-L140) +- [stcp_socket.cpp:69-72](file://libraries/network/stcp_socket.cpp#L69-L72) +- [core_messages.hpp:233-272](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L272) +- [node.cpp:662-718](file://libraries/network/node.cpp#L662-L718) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) ## Detailed Component Analysis -### peer_connection: Bidirectional Channel and State Machine +### peer_connection: Enhanced Bidirectional Channel and State Machine peer_connection encapsulates: -- Connection states: our_connection_state, their_connection_state, and connection_negotiation_status. -- Message queueing: real_queued_message and virtual_queued_message for immediate and deferred message generation. -- Inventory tracking: sets for advertised and requested items, sync state, and throttling. -- Metrics: bytes sent/received, last message timestamps, connection durations, and shared secret exposure. +- Connection states: our_connection_state, their_connection_state, and connection_negotiation_status with improved error handling. +- Message queueing: real_queued_message and virtual_queued_message for immediate and deferred message generation with enhanced logging. +- Inventory tracking: sets for advertised and requested items, sync state, and throttling with robust error recovery. +- Metrics: bytes sent/received, last message timestamps, connection durations, and shared secret exposure with improved monitoring. +- **Enhanced** Soft-ban state: fork_rejected_until timestamp and inhibit_fetching_sync_blocks flag for peer management during emergency scenarios. +- **Enhanced** Peer trust integration: Automatic soft-ban duration calculation based on peer trust status for dual-tier soft-ban system. ```mermaid classDiagram @@ -173,12 +254,18 @@ class peer_connection { +fc : : ip : : address inbound_address +uint16_t inbound_port +uint16_t outbound_port ++bool inhibit_fetching_sync_blocks ++fc : : time_point fork_rejected_until +uint64_t get_total_bytes_sent() +uint64_t get_total_bytes_received() +void send_message(message) +void send_item(item_id) +void close_connection() +void destroy_connection() ++Enhanced error handling with try-catch fallbacks ++Improved IP address extraction reliability ++Soft-ban state management with ANSI notifications ++Trusted peer awareness for soft-ban duration calculation } class queued_message { <> @@ -202,24 +289,26 @@ queued_message <|-- virtual_queued_message ``` **Diagram sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L41-L66) +- [peer_connection.hpp:79-351](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) +- [peer_connection.cpp:41-66](file://libraries/network/peer_connection.cpp#L41-L66) Key behaviors: -- Outgoing message pipeline: send_message enqueues a real_queued_message; send_item enqueues a virtual_queued_message; send_queueable_message validates queue size and triggers send_queued_messages_task. -- Inbound message pipeline: on_message delegates to node delegate; on_connection_closed transitions negotiation_status and notifies node. -- Lifecycle: accept_connection and connect_to manage transport setup; close_connection and destroy_connection coordinate teardown. +- Outgoing message pipeline: send_message enqueues a real_queued_message with enhanced error handling; send_item enqueues a virtual_queued_message; send_queueable_message validates queue size and triggers send_queued_messages_task with improved logging. +- Inbound message pipeline: on_message delegates to node delegate with robust error recovery; on_connection_closed transitions negotiation_status and notifies node with proper exception handling. +- Lifecycle: accept_connection and connect_to manage transport setup with enhanced error handling; close_connection and destroy_connection coordinate teardown with improved exception safety. +- **Enhanced** Soft-ban management: fork_rejected_until tracks soft-ban expiration; inhibit_fetching_sync_blocks prevents sync operations during ban period; ANSI color-coded notifications for ban events; **Enhanced** trusted peer-aware soft-ban duration calculation. **Section sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L244-L338) +- [peer_connection.hpp:79-351](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) +- [peer_connection.cpp:244-338](file://libraries/network/peer_connection.cpp#L244-L338) +- [peer_connection.hpp:240-278](file://libraries/network/include/graphene/network/peer_connection.hpp#L240-L278) -### message_oriented_connection: Message Framing and Transport Loop +### message_oriented_connection: Enhanced Message Framing and Transport Loop message_oriented_connection: -- Wraps stcp_socket for secure transport. -- Implements read_loop to decode messages, enforce size limits, and dispatch to delegate. -- Provides send_message with padding to 16-byte boundaries and flush behavior. -- Exposes connection metrics and shared secret access. +- Wraps stcp_socket for secure transport with improved error handling. +- Implements read_loop to decode messages, enforce size limits, and dispatch to delegate with enhanced logging. +- Provides send_message with padding to 16-byte boundaries and flush behavior with robust error recovery. +- Exposes connection metrics and shared secret access with improved monitoring capabilities. ```mermaid flowchart TD @@ -228,30 +317,32 @@ Pad --> Encrypt["Encrypt via AES encoder"] Encrypt --> Write["Write to socket"] Write --> Flush["Flush"] Flush --> UpdateStats["Update bytes_sent + last_message_sent_time"] -UpdateStats --> End(["Return"]) +UpdateStats --> EnhancedLogging["Enhanced error logging and monitoring"] +EnhancedLogging --> End(["Return with improved reliability"]) ReadLoopStart(["read_loop"]) --> ReadHeader["Read fixed header"] ReadHeader --> ValidateSize["Validate size <= MAX_MESSAGE_SIZE"] ValidateSize --> ReadBody["Read padded body"] ReadBody --> Dispatch["Delegate.on_message"] -Dispatch --> ReadLoopStart +Dispatch --> EnhancedMonitoring["Enhanced monitoring and logging"] +EnhancedMonitoring --> ReadLoopStart ``` **Diagram sources** -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L237-L283) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L148-L235) +- [message_oriented_connection.cpp:237-283](file://libraries/network/message_oriented_connection.cpp#L237-L283) +- [message_oriented_connection.cpp:148-235](file://libraries/network/message_oriented_connection.cpp#L148-L235) **Section sources** -- [message_oriented_connection.hpp](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L128-L140) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L237-L283) -- [message_oriented_connection.cpp](file://libraries/network/message_oriented_connection.cpp#L148-L235) +- [message_oriented_connection.hpp:45-79](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) +- [message_oriented_connection.cpp:128-140](file://libraries/network/message_oriented_connection.cpp#L128-L140) +- [message_oriented_connection.cpp:237-283](file://libraries/network/message_oriented_connection.cpp#L237-L283) +- [message_oriented_connection.cpp:148-235](file://libraries/network/message_oriented_connection.cpp#L148-L235) ### stcp_socket: Secure Transport with ECDH and AES stcp_socket: -- Performs ECDH key exchange on connect/accept. -- Derives shared secret and initializes AES encoder/decoder. -- Reads/writes in 16-byte increments for AES compatibility. -- Exposes get_shared_secret for upper layers. +- Performs ECDH key exchange on connect/accept with enhanced error handling. +- Derives shared secret and initializes AES encoder/decoder with improved reliability. +- Reads/writes in 16-byte increments for AES compatibility with robust error recovery. +- Exposes get_shared_secret for upper layers with enhanced monitoring capabilities. ```mermaid sequenceDiagram @@ -263,23 +354,23 @@ A->>A : "Compute shared secret (ECDH)" A->>A : "Init AES encoder/decoder" B->>B : "Compute shared secret (ECDH)" B->>B : "Init AES encoder/decoder" -Note over A,B : "Secure channel ready" +Note over A,B : "Secure channel ready with enhanced error handling" ``` **Diagram sources** -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L49-L72) -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L132-L177) +- [stcp_socket.cpp:49-72](file://libraries/network/stcp_socket.cpp#L49-L72) +- [stcp_socket.cpp:132-177](file://libraries/network/stcp_socket.cpp#L132-L177) **Section sources** -- [stcp_socket.hpp](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L49-L72) -- [stcp_socket.cpp](file://libraries/network/stcp_socket.cpp#L132-L177) +- [stcp_socket.hpp:37-93](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) +- [stcp_socket.cpp:49-72](file://libraries/network/stcp_socket.cpp#L49-L72) +- [stcp_socket.cpp:132-177](file://libraries/network/stcp_socket.cpp#L132-L177) ### Handshake and Authentication Protocols -Handshake flow: -- ECDH key exchange via stcp_socket during connect/accept. -- Hello message exchange with user agent, protocol version, ports, and node identifiers. -- Connection accepted or rejected messages finalize negotiation. +Handshake flow with enhanced IP address extraction: +- ECDH key exchange via stcp_socket during connect/accept with improved error handling. +- Hello message exchange with user agent, protocol version, ports, and node identifiers with reliable IP address extraction. +- Connection accepted or rejected messages finalize negotiation with enhanced logging and monitoring. ```mermaid sequenceDiagram @@ -289,7 +380,7 @@ participant Node as "Local node" participant RemoteNode as "Remote node" Local->>Remote : "TCP connect" Remote-->>Local : "TCP accept" -Local->>Remote : "hello_message" +Local->>Remote : "hello_message with IP extraction" Remote->>RemoteNode : "on_hello_message" alt "Accept" Remote->>Local : "connection_accepted_message" @@ -298,121 +389,273 @@ else "Reject" Remote->>Local : "connection_rejected_message" Local->>Node : "on_connection_rejected" end +Note over Local,Remote : "Enhanced error handling and IP address reliability" ``` **Diagram sources** -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) -- [node.cpp](file://libraries/network/node.cpp#L662-L718) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L208-L242) +- [core_messages.hpp:233-306](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) +- [node.cpp:662-718](file://libraries/network/node.cpp#L662-L718) +- [peer_connection.cpp:208-242](file://libraries/network/peer_connection.cpp#L208-L242) **Section sources** -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) -- [node.cpp](file://libraries/network/node.cpp#L662-L718) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L208-L242) +- [core_messages.hpp:233-306](file://libraries/network/include/graphene/network/core_messages.hpp#L233-L306) +- [node.cpp:662-718](file://libraries/network/node.cpp#L662-L718) +- [peer_connection.cpp:208-242](file://libraries/network/peer_connection.cpp#L208-L242) ### Connection Lifecycle Management -Lifecycle stages: -- Initiation: connect_to for outbound, accept_connection for inbound. -- Negotiation: hello/connection_accepted or connection_rejected. -- Operation: message exchange, inventory advertisement, sync. -- Maintenance: keep-alive via time requests, bandwidth monitoring. -- Graceful disconnection: closing_connection message, close_connection, destroy_connection. -- Error recovery: queue overflow closes connection, peer database updates, retry timers. +Lifecycle stages with enhanced error handling, soft-ban functionality, ANSI color-coded notifications, and **new** trusted peer support: +- Initiation: connect_to for outbound, accept_connection for inbound with improved exception safety. +- Negotiation: hello/connection_accepted or connection_rejected with enhanced logging and monitoring. +- Operation: message exchange, inventory advertisement, sync with robust error recovery mechanisms, soft-ban enforcement, ANSI color-coded notifications, and **Enhanced** trusted peer-aware soft-ban duration calculation. +- Maintenance: keep-alive via time requests, bandwidth monitoring with improved reliability, soft-ban expiration checking with color-coded logging, and **Enhanced** trusted peer IP address storage for efficient lookup. +- Graceful disconnection: closing_connection message, close_connection, destroy_connection with enhanced error handling. +- Error recovery: queue overflow closes connection with proper cleanup, peer database updates with improved logging, retry timers with better exception safety. +- **Enhanced** Soft-ban management: fork_rejected_until timestamp enforcement, inhibit_fetching_sync_blocks flag management, automatic soft-ban expiration handling, ANSI color-coded ban notifications, and **Enhanced** dual-tier soft-ban system with trusted peer support. ```mermaid stateDiagram-v2 [*] --> Disconnected -Disconnected --> Connecting : "connect_to()" -Disconnected --> Accepting : "accept_connection()" +Disconnected --> Connecting : "connect_to() with error handling" +Disconnected --> Accepting : "accept_connection() with enhanced safety" Connecting --> Connected : "hello + accepted" Accepting --> Connected : "hello + accepted" Connected --> NegotiationComplete : "inventory sync" -NegotiationComplete --> Closing : "close_connection()" -Closing --> Closed : "on_connection_closed" +NegotiationComplete --> SoftBan : "fork_rejected_until set with ANSI notification
5-min for trusted peers, 1-hr for others" +SoftBan --> Connected : "soft-ban expired with color reset" +Connected --> Closing : "close_connection() with proper cleanup" +Closing --> Closed : "on_connection_closed with enhanced logging" Closed --> [*] ``` **Diagram sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L82-L106) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L356-L369) -- [node.cpp](file://libraries/network/node.cpp#L718-L740) +- [peer_connection.hpp:82-106](file://libraries/network/include/graphene/network/peer_connection.hpp#L82-L106) +- [peer_connection.cpp:356-369](file://libraries/network/peer_connection.cpp#L356-L369) +- [node.cpp:718-740](file://libraries/network/node.cpp#L718-L740) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) **Section sources** -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L169-L242) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L356-L369) -- [node.cpp](file://libraries/network/node.cpp#L718-L740) +- [peer_connection.cpp:169-242](file://libraries/network/peer_connection.cpp#L169-L242) +- [peer_connection.cpp:356-369](file://libraries/network/peer_connection.cpp#L356-L369) +- [node.cpp:718-740](file://libraries/network/node.cpp#L718-L740) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) ### Message Queuing, Priority, and Multiplexing -- Queuing: real_queued_message stores full messages; virtual_queued_message defers generation via node delegate. -- Limits: GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES prevents memory pressure; exceeding triggers closure. -- Priority: During sync, prioritized_item_id sorts blocks before transactions; during normal operation, FIFO per peer with throttling. -- Multiplexing: Multiple peer_connection instances share node delegate; each peer has independent queues and state. +- Queuing: real_queued_message stores full messages with enhanced error handling; virtual_queued_message defers generation via node delegate with improved logging. +- Limits: GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES prevents memory pressure with better exception safety; exceeding triggers closure with proper cleanup. +- Priority: During sync, prioritized_item_id sorts blocks before transactions with enhanced monitoring; during normal operation, FIFO per peer with throttling and improved error recovery. +- Multiplexing: Multiple peer_connection instances share node delegate with enhanced error handling; each peer has independent queues and state with improved reliability. ```mermaid flowchart TD -Enqueue["Enqueue message"] --> CheckQueue["Check queue size"] -CheckQueue --> |OK| Push["Push to queue"] -CheckQueue --> |Too large| Close["Close connection"] +Enqueue["Enqueue message"] --> CheckQueue["Check queue size with enhanced validation"] +CheckQueue --> |OK| Push["Push to queue with error logging"] +CheckQueue --> |Too large| Close["Close connection with proper cleanup"] Push --> StartTask{"send_queued_messages_task running?"} -StartTask --> |No| Launch["Launch async task"] -StartTask --> |Yes| Wait["Wait for completion"] -Launch --> SendLoop["Send loop drains queue"] +StartTask --> |No| Launch["Launch async task with enhanced monitoring"] +StartTask --> |Yes| Wait["Wait for completion with error handling"] +Launch --> SendLoop["Send loop drains queue with improved logging"] Wait --> SendLoop -SendLoop --> Done["Done"] +SendLoop --> EnhancedMonitoring["Enhanced monitoring and error recovery"] +EnhancedMonitoring --> Done["Done with proper cleanup"] ``` **Diagram sources** -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L310-L338) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L255-L308) -- [config.hpp](file://libraries/network/include/graphene/network/config.hpp#L58-L58) +- [peer_connection.cpp:310-338](file://libraries/network/peer_connection.cpp#L310-L338) +- [peer_connection.cpp:255-308](file://libraries/network/peer_connection.cpp#L255-L308) +- [config.hpp:58-58](file://libraries/network/include/graphene/network/config.hpp#L58-L58) **Section sources** -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L310-L338) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L255-L308) -- [config.hpp](file://libraries/network/include/graphene/network/config.hpp#L58-L58) +- [peer_connection.cpp:310-338](file://libraries/network/peer_connection.cpp#L310-L338) +- [peer_connection.cpp:255-308](file://libraries/network/peer_connection.cpp#L255-L308) +- [config.hpp:58-58](file://libraries/network/include/graphene/network/config.hpp#L58-L58) ### Peer State Tracking, Metrics, and Reputation -Peer state tracking: -- Connection states: negotiated status, direction, firewalled state, clock offset, round-trip delay. -- Inventory: advertised to peer, advertised to us, requested, sync state, throttling windows. -- Metrics: bytes sent/received, last message times, connection duration, termination time. +Peer state tracking with enhanced error handling, soft-ban support, ANSI color-coded notifications, and **new** trusted peer integration: +- Connection states: negotiated status, direction, firewalled state, clock offset, round-trip delay with improved monitoring and logging. +- Inventory: advertised to peer, advertised to us, requested, sync state, throttling windows with robust error recovery mechanisms. +- Metrics: bytes sent/received, last message times, connection duration, termination time with enhanced logging and monitoring. +- **Enhanced** Soft-ban state: fork_rejected_until timestamp tracks soft-ban expiration; inhibit_fetching_sync_blocks prevents sync operations during ban period. +- **Enhanced** Trusted peer management: Automatic soft-ban duration calculation based on peer trust status; efficient IP address lookup for trusted peer detection. + +Reputation and selection with improved reliability: +- peer_database tracks endpoints, last seen, disposition, and attempt counts with enhanced error handling. +- node selects peers based on desired/max connections, retry timeouts, and peer database entries with better exception safety. +- Enhanced logging and monitoring throughout the peer selection and balancing process with ANSI color-coded notifications. +- **Enhanced** Soft-ban enforcement: Automatic soft-ban detection and enforcement during block processing with color-coded logging. +- **Enhanced** Trusted peer awareness: Peer trust status influences soft-ban duration and network behavior. + +**Section sources** +- [peer_connection.hpp:175-279](file://libraries/network/include/graphene/network/peer_connection.hpp#L175-L279) +- [peer_connection.cpp:428-480](file://libraries/network/peer_connection.cpp#L428-L480) +- [peer_database.hpp:47-71](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) +- [peer_database.cpp:100-174](file://libraries/network/peer_database.cpp#L100-L174) +- [node.cpp:518-526](file://libraries/network/node.cpp#L518-L526) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5265-5274](file://libraries/network/node.cpp#L5265-L5274) + +### Enhanced Block Processing and Dual-Tier Soft-Ban System +**New** Enhanced block processing with proper exception handling, soft-ban mechanisms, ANSI color-coded notifications, and **Enhanced** trusted peer-aware soft-ban duration calculation: +- Database layer converts chain exceptions to network exceptions for P2P consumption, including deferred_resize_exception for memory resize operations. +- Fork database handles unlinkable blocks with proper exception propagation. +- Node layer implements soft-ban functionality for peer management during emergency scenarios with ANSI color-coded notifications. +- **Enhanced** Trusted peer integration: Automatic soft-ban duration calculation based on peer trust status; 5-minute soft-ban for trusted peers, 1-hour for regular peers. +- P2P plugin converts chain exceptions to network exceptions for consistent handling. +- ANSI color codes (CLOG_RED, CLOG_RESET) provide visual emphasis for ban notifications in terminal output. +- **Enhanced** Memory management: Deferred resize operations during block processing handled gracefully without penalizing peers. + +```mermaid +flowchart TD +BlockIn["Block received from peer"] --> ProcessBlock["Process block in database"] +ProcessBlock --> CheckChain["Check chain state"] +CheckChain --> |Valid| AcceptBlock["Accept block"] +CheckChain --> |Unlinkable| ThrowException["Throw unlinkable_block_exception"] +CheckChain --> |Too old| ThrowOld["Throw block_older_than_undo_history"] +CheckChain --> |Memory Resize| ThrowResize["Throw deferred_resize_exception"] +ThrowException --> ConvertNet["Convert to network exception"] +ThrowOld --> ConvertNet +ThrowResize --> ConvertNet +ConvertNet --> NodeHandle["Node handles exception"] +NodeHandle --> PeerTrust{"Peer is trusted?"} +PeerTrust --> |Yes| SetShortBan["Set fork_rejected_until + inhibit_fetching_sync_blocks
5-minute soft-ban (trusted peers)
ANSI Red Notification"] +PeerTrust --> |No| SetLongBan["Set fork_rejected_until + inhibit_fetching_sync_blocks
1-hour soft-ban (regular peers)
ANSI Red Notification"] +SetShortBan --> Broadcast["Broadcast to peers"] +SetLongBan --> Broadcast +ThrowResize --> NoBan["No soft-ban (deferred resize)
Just retry block later"] +NoBan --> Broadcast +AcceptBlock --> Broadcast +``` + +**Diagram sources** +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [node.cpp:3598-3626](file://libraries/network/node.cpp#L3598-L3626) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) +- [p2p_plugin.cpp:172-182](file://plugins/p2p/p2p_plugin.cpp#L172-L182) +- [node.cpp:599-600](file://libraries/network/node.cpp#L599-L600) + +**Section sources** +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [node.cpp:3598-3626](file://libraries/network/node.cpp#L3598-L3626) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) +- [p2p_plugin.cpp:172-182](file://plugins/p2p/p2p_plugin.cpp#L172-L182) +- [node.cpp:599-600](file://libraries/network/node.cpp#L599-L600) + +### Enhanced Trusted Peer Management and Integration +**New** Comprehensive trusted peer support with automatic configuration and management: +- **Trusted peer configuration**: Configured via trusted-snapshot-peer option in config.ini, supporting multiple trusted peers with IP:port format. +- **Automatic registration**: P2P plugin automatically registers trusted peers from snapshot plugin configuration for reduced soft-ban duration. +- **IP-based trust detection**: Efficient O(1) lookup using 32-bit IP address storage for trusted peer identification. +- **Dual-tier soft-ban system**: 5-minute soft-ban duration for trusted peers, 1-hour for regular peers, with automatic duration calculation. +- **Seamless integration**: Trusted peer management coordinated between P2P and snapshot plugins for consistent behavior. +- **Configuration validation**: Robust parsing and validation of trusted peer endpoints with error logging for invalid configurations. + +```mermaid +flowchart TD +ConfigLoad["Load config.ini"] --> ParseTrusted["Parse trusted-snapshot-peer options"] +ParseTrusted --> ValidateIP["Validate IP:port format"] +ValidateIP --> |Valid| StoreIP["Store as 32-bit IP address"] +ValidateIP --> |Invalid| LogError["Log parsing error"] +StoreIP --> RegisterP2P["Register with P2P plugin"] +RegisterP2P --> SnapshotPlugin["snapshot_plugin.get_trusted_snapshot_peers()"] +SnapshotPlugin --> P2PRegistration["p2p_plugin.set_trusted_peer_endpoints()"] +P2PRegistration --> NodeManager["node_impl._trusted_peer_ips"] +NodeManager --> Lookup["O(1) IP address lookup"] +Lookup --> SoftBanCalc["get_soft_ban_duration(peer)"] +SoftBanCalc --> |Trusted| FiveMin["5-minute soft-ban"] +SoftBanCalc --> |Regular| OneHour["1-hour soft-ban"] +FiveMin --> ApplyBan["Apply soft-ban to peer"] +OneHour --> ApplyBan +``` -Reputation and selection: -- peer_database tracks endpoints, last seen, disposition, and attempt counts. -- node selects peers based on desired/max connections, retry timeouts, and peer database entries. +**Diagram sources** +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) + +**Section sources** +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) + +### Enhanced Memory Management and Exception Handling +**New** Comprehensive exception handling for memory resize operations: +- deferred_resize_exception thrown when shared memory resize is deferred during block processing. +- Database layer handles deferred resize operations with comprehensive logging and memory usage monitoring. +- P2P plugin catches deferred_resize_exception and rethrows as network exception for consistent handling. +- Node layer implements proper exception handling for deferred resize operations during block processing. +- **Enhanced** Trusted peer consideration: Deferred resize exceptions do not trigger soft-bans for peers, as they represent local memory conditions rather than peer fault. + +```mermaid +flowchart TD +MemoryCheck["Check free memory threshold"] --> ResizeNeeded{"Resize needed?"} +ResizeNeeded --> |Yes| DeferResize["Defer resize operation"] +DeferResize --> ThrowException["Throw deferred_resize_exception"] +ThrowException --> CatchException["Catch in P2P plugin"] +CatchException --> RethrowNet["Rethrow as network exception"] +RethrowNet --> NodeHandle["Node handles exception"] +NodeHandle --> CheckTrusted{"Peer is trusted?"} +CheckTrusted --> |Any| NoSoftBan["Do not soft-ban peer
Just retry block later
No peer penalization"] +NoSoftBan --> ContinueProcessing["Continue block processing"] +ResizeNeeded --> |No| NormalProcessing["Normal block processing"] +``` + +**Diagram sources** +- [database.cpp:560-665](file://libraries/chain/database.cpp#L560-L665) +- [p2p_plugin.cpp:170-181](file://plugins/p2p/p2p_plugin.cpp#L170-L181) +- [node.cpp:3616-3622](file://libraries/network/node.cpp#L3616-L3622) **Section sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L175-L279) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L428-L480) -- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) -- [peer_database.cpp](file://libraries/network/peer_database.cpp#L100-L174) -- [node.cpp](file://libraries/network/node.cpp#L518-L526) +- [database.cpp:560-665](file://libraries/chain/database.cpp#L560-L665) +- [p2p_plugin.cpp:170-181](file://plugins/p2p/p2p_plugin.cpp#L170-L181) +- [node.cpp:3616-3622](file://libraries/network/node.cpp#L3616-L3622) ### Examples and Patterns -- Peer connection setup: - - Outbound: peer_connection::connect_to(endpoint) -> message_oriented_connection::connect_to -> stcp_socket::connect_to -> ECDH -> hello -> connection_accepted. - - Inbound: accept_connection -> ECDH -> hello -> connection_accepted. -- Message exchange: - - send_message queues a real message; send_item queues a virtual message; send_queued_messages_task sends them. -- Connection monitoring: - - get_total_bytes_sent/get_total_bytes_received, last_message_sent_time/last_message_received, get_connection_time/get_connection_terminated_time. -- Peer selection and balancing: - - node maintains desired/max connections, peer database, and retry timers; balances by selecting candidates from peer_database and initiating connect_to. +- Peer connection setup with enhanced error handling: + - Outbound: peer_connection::connect_to(endpoint) -> message_oriented_connection::connect_to -> stcp_socket::connect_to -> ECDH -> hello -> connection_accepted with improved logging. + - Inbound: accept_connection -> ECDH -> hello -> connection_accepted with enhanced error recovery. +- Message exchange with robust monitoring: + - send_message queues a real message with enhanced error handling; send_item queues a virtual message; send_queued_messages_task sends them with improved logging. +- Connection monitoring with enhanced reliability: + - get_total_bytes_sent/get_total_bytes_received, last_message_sent_time/last_message_received, get_connection_time/get_connection_terminated_time with improved error recovery. +- Peer selection and balancing with better exception safety: + - node maintains desired/max connections, peer database, and retry timers; balances by selecting candidates from peer_database and initiating connect_to with enhanced error handling. +- **Enhanced** Soft-ban management: + - Automatic soft-ban detection for peers sending unlinkable blocks; fork_rejected_until timestamp enforcement; inhibit_fetching_sync_blocks flag management; automatic soft-ban expiration handling; ANSI color-coded ban notifications; **Enhanced** trusted peer-aware soft-ban duration calculation. +- **Enhanced** Trusted peer integration: + - Automatic trusted peer registration from config.ini trusted-snapshot-peer options; efficient IP address lookup for trust detection; dual-tier soft-ban system with 5-minute duration for trusted peers; seamless P2P-snapshot plugin coordination. +- **Enhanced** Memory resize exception handling: + - Deferred shared memory resize operations during block processing; proper exception propagation through P2P layer; no peer penalization for transient memory resize operations; trusted peer consideration in exception handling. **Section sources** -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L208-L242) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L340-L354) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L371-L399) -- [node.cpp](file://libraries/network/node.cpp#L518-L526) -- [peer_database.cpp](file://libraries/network/peer_database.cpp#L100-L174) +- [peer_connection.cpp:208-242](file://libraries/network/peer_connection.cpp#L208-L242) +- [peer_connection.cpp:340-354](file://libraries/network/peer_connection.cpp#L340-L354) +- [peer_connection.cpp:371-399](file://libraries/network/peer_connection.cpp#L371-L399) +- [node.cpp:518-526](file://libraries/network/node.cpp#L518-L526) +- [peer_database.cpp:100-174](file://libraries/network/peer_database.cpp#L100-L174) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Dependency Analysis -The peer connection subsystem exhibits clear layering and low coupling: -- peer_connection depends on message_oriented_connection and node delegate. -- message_oriented_connection depends on stcp_socket and delegates to peer_connection. -- stcp_socket depends on fc crypto primitives and tcp socket. -- node orchestrates peer_connection instances and peer_database. -- core_messages defines protocol contracts used across layers. +The peer connection subsystem exhibits clear layering and low coupling with enhanced error handling, soft-ban functionality, ANSI color-coded notifications, and **new** trusted peer support: +- peer_connection depends on message_oriented_connection and node delegate with improved exception safety. +- message_oriented_connection depends on stcp_socket and delegates to peer_connection with enhanced logging. +- stcp_socket depends on fc crypto primitives and tcp socket with robust error recovery. +- node orchestrates peer_connection instances and peer_database with better exception handling, soft-ban logic, ANSI notification support, and **Enhanced** trusted peer management. +- core_messages defines protocol contracts used across layers with reliable IP address handling. +- **Enhanced** database and fork_database depend on chain exceptions and propagate network exceptions to P2P layer. +- **Enhanced** p2p_plugin converts chain exceptions to network exceptions for consistent handling and manages trusted peer registration. +- **Enhanced** snapshot_plugin provides trusted-snapshot-peer configuration and peer discovery for trusted peer management. +- **Enhanced** database_exceptions defines deferred_resize_exception for memory resize operations. +- **Enhanced** Trusted peer integration creates dependencies between P2P and snapshot plugins for configuration management. ```mermaid graph LR @@ -421,54 +664,93 @@ MOC --> STCP["stcp_socket"] PC --> CM["core_messages"] N["node"] --> PC N --> PD["peer_database"] -CM --> MSG["message"] +N --> DB["database"] +N --> TP["trusted_peer_manager"] +P2P["p2p_plugin"] --> N +P2P --> SNAP["snapshot_plugin"] +SNAP --> TP +DB --> FD["fork_database"] +DB --> EX["exceptions"] +N --> EX +EX --> DR["deferred_resize_exception"] +TP --> N ``` **Diagram sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) -- [message_oriented_connection.hpp](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) -- [stcp_socket.hpp](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L72-L95) -- [node.hpp](file://libraries/network/include/graphene/network/node.hpp#L190-L304) -- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp#L104-L134) -- [message.hpp](file://libraries/network/include/graphene/network/message.hpp#L42-L106) +- [peer_connection.hpp:79-351](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L351) +- [message_oriented_connection.hpp:45-79](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L45-L79) +- [stcp_socket.hpp:37-93](file://libraries/network/include/graphene/network/stcp_socket.hpp#L37-L93) +- [core_messages.hpp:72-95](file://libraries/network/include/graphene/network/core_messages.hpp#L72-L95) +- [node.hpp:190-304](file://libraries/network/include/graphene/network/node.hpp#L190-L304) +- [peer_database.hpp:104-134](file://libraries/network/include/graphene/network/peer_database.hpp#L104-L134) +- [message.hpp:42-106](file://libraries/network/include/graphene/network/message.hpp#L42-L106) +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [exceptions.hpp:33-45](file://libraries/network/include/graphene/network/exceptions.hpp#L33-L45) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) **Section sources** -- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp#L26-L45) -- [message_oriented_connection.hpp](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L26-L28) -- [stcp_socket.hpp](file://libraries/network/include/graphene/network/stcp_socket.hpp#L26-L28) -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L26-L35) -- [node.hpp](file://libraries/network/include/graphene/network/node.hpp#L26-L31) -- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp#L26-L35) -- [message.hpp](file://libraries/network/include/graphene/network/message.hpp#L26-L31) +- [peer_connection.hpp:26-45](file://libraries/network/include/graphene/network/peer_connection.hpp#L26-L45) +- [message_oriented_connection.hpp:26-28](file://libraries/network/include/graphene/network/message_oriented_connection.hpp#L26-L28) +- [stcp_socket.hpp:26-28](file://libraries/network/include/graphene/network/stcp_socket.hpp#L26-L28) +- [core_messages.hpp:26-35](file://libraries/network/include/graphene/network/core_messages.hpp#L26-L35) +- [node.hpp:26-31](file://libraries/network/include/graphene/network/node.hpp#L26-L31) +- [peer_database.hpp:26-35](file://libraries/network/include/graphene/network/peer_database.hpp#L26-L35) +- [message.hpp:26-31](file://libraries/network/include/graphene/network/message.hpp#L26-L31) +- [database.cpp:1215-1246](file://libraries/chain/database.cpp#L1215-L1246) +- [fork_database.cpp:34-46](file://libraries/chain/fork_database.cpp#L34-L46) +- [exceptions.hpp:33-45](file://libraries/network/include/graphene/network/exceptions.hpp#L33-L45) +- [node.cpp:593-601](file://libraries/network/node.cpp#L593-L601) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) ## Performance Considerations -- Message sizing: MAX_MESSAGE_SIZE caps payload; padding to 16 bytes ensures AES compatibility. -- Queue limits: GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES prevents memory growth under heavy load. -- Throttling: Inventory lists and transaction fetching inhibition mitigate flooding. -- Bandwidth monitoring: node tracks read/write rates and applies rate limiting groups. -- Sync optimization: interleaved prefetching and prioritization reduce sync time. - -[No sources needed since this section provides general guidance] +- Message sizing: MAX_MESSAGE_SIZE caps payload; padding to 16 bytes ensures AES compatibility with enhanced error handling. +- Queue limits: GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES prevents memory growth under heavy load with better exception safety. +- Throttling: Inventory lists and transaction fetching inhibition mitigate flooding with improved monitoring. +- Bandwidth monitoring: node tracks read/write rates and applies rate limiting groups with enhanced logging. +- Sync optimization: interleaved prefetching and prioritization reduce sync time with robust error recovery mechanisms. +- Enhanced error handling: Comprehensive try-catch fallbacks throughout peer statistics logging ensure more robust operation of the P2P network layer. +- **Enhanced** Soft-ban optimization: Automatic soft-ban enforcement prevents cascading disconnections during emergency scenarios, improving network stability. +- **Enhanced** Block processing efficiency: Proper exception handling reduces unnecessary reprocessing and improves overall network performance. +- **Enhanced** Memory management: Deferred resize operations prevent blocking during shared memory expansion, improving system responsiveness. +- **Enhanced** Notification performance: ANSI color-coded logging provides visual emphasis without impacting performance significantly. +- **Enhanced** Trusted peer performance: O(1) IP address lookup for trusted peer detection minimizes overhead; efficient configuration parsing reduces startup time. +- **Enhanced** Dual-tier optimization: Separate soft-ban duration calculation eliminates redundant calculations while providing flexible peer management. ## Troubleshooting Guide -Common issues and remedies: -- Connection refused or rejected: Review rejection reasons in connection_rejected_message; check protocol version, chain ID, and node policies. -- Handshake failures: Verify ECDH key exchange succeeded; inspect stcp_socket logs; ensure endpoints are reachable. -- Queue overflow: Monitor queue size; adjust rate or reduce message sizes; consider disconnecting misbehaving peers. -- Idle peers: Use inactivity timeouts; terminate inactive connections; rebalance peers. -- Peer reputation: Inspect peer_database entries; prune failed peers; respect retry delays. +Common issues and remedies with enhanced error handling, soft-ban functionality, ANSI color-coded notifications, and **Enhanced** trusted peer support: +- Connection refused or rejected: Review rejection reasons in connection_rejected_message with improved logging; check protocol version, chain ID, and node policies with better error reporting. +- Handshake failures: Verify ECDH key exchange succeeded with enhanced error handling; inspect stcp_socket logs with improved monitoring; ensure endpoints are reachable with robust error recovery. +- Queue overflow: Monitor queue size with enhanced logging; adjust rate or reduce message sizes; consider disconnecting misbehaving peers with proper cleanup. +- Idle peers: Use inactivity timeouts with improved exception safety; terminate inactive connections; rebalance peers with better error handling. +- Peer reputation: Inspect peer_database entries with enhanced logging; prune failed peers; respect retry delays with improved error recovery mechanisms. +- IP address extraction issues: Enhanced safe static_cast operations with try-catch fallback mechanisms ensure reliable IP address extraction throughout peer information handling. +- **Enhanced** Soft-ban issues: Check fork_rejected_until timestamps and inhibit_fetching_sync_blocks flags; verify automatic soft-ban expiration handling; monitor soft-ban effectiveness; review ANSI color-coded ban notifications for quick identification; **Enhanced** verify trusted peer soft-ban duration calculation. +- **Enhanced** Trusted peer configuration: Verify trusted-snapshot-peer entries in config.ini are valid IP:port format; check automatic registration in P2P plugin logs; ensure IP address parsing succeeds; verify O(1) lookup functionality. +- **Enhanced** Block processing errors: Review unlinkable_block_exception handling and soft-ban enforcement; verify proper exception conversion from chain to network exceptions; check memory resize exception handling; **Enhanced** confirm trusted peer-aware soft-ban duration calculation. +- **Enhanced** Memory resize issues: Monitor deferred_resize_exception occurrences; verify proper exception propagation through P2P layer; ensure no peer penalization for transient memory resize operations. +- **Enhanced** Notification visibility: Verify ANSI color codes are properly displayed in terminal; check CLOG_RED and CLOG_RESET definitions for proper formatting. +- **Enhanced** Plugin integration: Verify snapshot plugin loads trusted-snapshot-peer configuration; check P2P plugin registration success; ensure seamless coordination between plugins. **Section sources** -- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp#L285-L306) -- [config.hpp](file://libraries/network/include/graphene/network/config.hpp#L48-L50) -- [peer_database.cpp](file://libraries/network/peer_database.cpp#L100-L174) -- [peer_connection.cpp](file://libraries/network/peer_connection.cpp#L314-L325) +- [core_messages.hpp:285-306](file://libraries/network/include/graphene/network/core_messages.hpp#L285-L306) +- [config.hpp:48-50](file://libraries/network/include/graphene/network/config.hpp#L48-L50) +- [peer_database.cpp:100-174](file://libraries/network/peer_database.cpp#L100-L174) +- [peer_connection.cpp:314-325](file://libraries/network/peer_connection.cpp#L314-L325) +- [node.cpp:3448-3470](file://libraries/network/node.cpp#L3448-L3470) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) +- [node.cpp:5272-5274](file://libraries/network/node.cpp#L5272-L5274) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Conclusion -Peer Connection Management in this codebase provides a robust, layered architecture for secure, multiplexed peer communication. It supports comprehensive lifecycle management, strict authentication via ECDH/AES, and sophisticated message queuing with priority and throttling. The node orchestrates peers, maintains reputation, and optimizes selection and balancing. Together, these components deliver reliable peer-to-peer connectivity suitable for blockchain synchronization and transaction propagation. +Peer Connection Management in this codebase provides a robust, layered architecture for secure, multiplexed peer communication with enhanced error handling, reliability, and **Enhanced** trusted peer support. It supports comprehensive lifecycle management, strict authentication via ECDH/AES, and sophisticated message queuing with priority and throttling. The node orchestrates peers, maintains reputation, and optimizes selection and balancing with improved exception safety. Enhanced peer information handling with reliable IP address extraction using safe static_cast operations with try-catch fallback mechanisms, combined with improved error handling and performance optimizations throughout peer statistics logging, ensures more robust operation of the P2P network layer. -[No sources needed since this section summarizes without analyzing specific files] +**Enhanced** The system now includes sophisticated trusted peer support featuring dual-tier soft-ban mechanisms with automatic configuration management. Trusted peers configured via trusted-snapshot-peer receive 5-minute soft-bans instead of the default 1-hour duration, enabling faster recovery from transient errors while maintaining network stability. The seamless integration between P2P and snapshot plugins ensures consistent trusted peer management across the entire system. These enhancements provide superior error recovery, monitoring capabilities, network stability during emergency consensus scenarios, improved operational visibility through color-coded terminal notifications, and enhanced trust-based peer management for improved network resilience and performance. ## Appendices @@ -476,9 +758,52 @@ Peer Connection Management in this codebase provides a robust, layered architect Important tunables affecting peer connection behavior: - GRAPHENE_NET_PROTOCOL_VERSION: Protocol version for compatibility. - MAX_MESSAGE_SIZE: Maximum message size in bytes. -- GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES: Queue size cap. +- GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES: Queue size cap with enhanced error handling. - GRAPHENE_NET_DEFAULT_DESIRED_CONNECTIONS / GRAPHENE_NET_DEFAULT_MAX_CONNECTIONS: Target and hard limits. -- GRAPHENE_NET_PEER_HANDSHAKE_INACTIVITY_TIMEOUT / GRAPHENE_NET_PEER_DISCONNECT_TIMEOUT: Timeout thresholds. +- GRAPHENE_NET_PEER_HANDSHAKE_INACTIVITY_TIMEOUT / GRAPHENE_NET_PEER_DISCONNECT_TIMEOUT: Timeout thresholds with improved exception safety. +- **Enhanced** TRUSTED_SOFT_BAN_DURATION_SEC / SOFT_BAN_DURATION_SEC: 300 seconds (5 minutes) vs 3600 seconds (1 hour) for trusted vs regular peers. + +**Section sources** +- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) +- [node.cpp:599-600](file://libraries/network/node.cpp#L599-L600) + +### Network Exception Types +**New** Enhanced exception types for improved error handling: +- unlinkable_block_exception: Used for blocks from dead forks with parents not in fork database. +- block_older_than_undo_history: Used for blocks too old for fork database processing. +- peer_is_on_an_unreachable_fork: Used when peers are on incompatible forks. +- **New** deferred_resize_exception: Used for shared memory resize operations during block processing, indicating transient memory expansion requiring block retry. +- Enhanced error propagation: Chain exceptions converted to network exceptions for consistent P2P layer handling. +- **Enhanced** Trusted peer consideration: Deferred resize exceptions do not trigger soft-bans as they represent local memory conditions. + +**Section sources** +- [exceptions.hpp:33-45](file://libraries/network/include/graphene/network/exceptions.hpp#L33-L45) +- [p2p_plugin.cpp:172-182](file://plugins/p2p/p2p_plugin.cpp#L172-L182) +- [database.cpp:1239-1241](file://libraries/chain/database.cpp#L1239-L1241) +- [database_exceptions.hpp:86-86](file://libraries/chain/include/graphene/chain/database_exceptions.hpp#L86-L86) + +### ANSI Color Code Definitions +**New** Terminal formatting support for enhanced notifications: +- CLOG_RED: ANSI escape sequence for red text formatting. +- CLOG_RESET: ANSI escape sequence to reset terminal formatting. +- Used extensively in soft-ban notifications and other important system messages for improved visual emphasis. + +**Section sources** +- [node.cpp:79-81](file://libraries/network/node.cpp#L79-L81) +- [node.cpp:3278-3281](file://libraries/network/node.cpp#L3278-L3281) +- [node.cpp:3633-3636](file://libraries/network/node.cpp#L3633-L3636) +- [node.cpp:3653-3656](file://libraries/network/node.cpp#L3653-L3656) +- [node.cpp:3671-3674](file://libraries/network/node.cpp#L3671-L3674) + +### Trusted Peer Configuration Options +**New** Configuration options for trusted peer management: +- trusted-snapshot-peer: Configurable trusted peer endpoints in IP:port format, repeatable for multiple trusted peers. +- Automatic registration: P2P plugin automatically registers trusted peers from snapshot plugin configuration. +- IP-based trust detection: Efficient O(1) lookup using 32-bit IP address storage. +- Dual-tier soft-ban system: 5-minute duration for trusted peers, 1-hour for regular peers. **Section sources** -- [config.hpp](file://libraries/network/include/graphene/network/config.hpp#L26-L106) \ No newline at end of file +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) +- [plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [node.cpp:5240-5274](file://libraries/network/node.cpp#L5240-L5274) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Chain Plugin.md b/.qoder/repowiki/en/content/Chain Plugin.md index 22a6736034..e53a300615 100644 --- a/.qoder/repowiki/en/content/Chain Plugin.md +++ b/.qoder/repowiki/en/content/Chain Plugin.md @@ -6,16 +6,17 @@ - [plugin.hpp](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp) - [database.cpp](file://libraries/chain/database.cpp) - [plugin.cpp](file://plugins/snapshot/plugin.cpp) +- [application.cpp](file://thirdparty/appbase/application.cpp) - [README.md](file://README.md) - [snapshot-plugin.md](file://documentation/snapshot-plugin.md) ## Update Summary **Changes Made** -- Updated default shared-file-dir from 'blockchain' to 'state' for improved configuration clarity -- Added comprehensive snapshot plugin configuration options including snapshot-dir, snapshot-every-n-blocks, snapshot-max-age-days, allow-snapshot-serving, and trusted-snapshot-peer settings -- Enhanced snapshot loading capabilities with automatic discovery and rotation features -- Expanded snapshot serving infrastructure with trust model and anti-spam protection +- Updated default shared-file-dir from 'blockchain' to 'state' for improved configuration clarity and consistency +- Enhanced plugin coordination with deferred execution support for snapshot loading +- Expanded snapshot plugin configuration options including snapshot-dir, snapshot-every-n-blocks, snapshot-max-age-days, allow-snapshot-serving, and trusted-snapshot-peer settings +- Improved data directory path handling with consistent 'state' directory usage across chain plugin components ## Table of Contents 1. [Introduction](#introduction) @@ -29,10 +30,10 @@ 9. [Conclusion](#conclusion) ## Introduction -The Chain Plugin is the core component responsible for managing the blockchain state, accepting blocks and transactions, maintaining database consistency, and coordinating with other plugins in the VIZ node. It integrates tightly with the underlying database layer and provides APIs for block acceptance, transaction processing, and state queries. Recent enhancements focus on improved plugin coordination, deferred execution support for snapshot loading, comprehensive recovery system integration with DLT block log capabilities, and expanded snapshot management infrastructure. +The Chain Plugin is the core component responsible for managing the blockchain state, accepting blocks and transactions, maintaining database consistency, and coordinating with other plugins in the VIZ node. It integrates tightly with the underlying database layer and provides APIs for block acceptance, transaction processing, and state queries. Recent enhancements focus on improved plugin coordination, deferred execution support for snapshot loading, comprehensive recovery system integration with DLT block log capabilities, and expanded snapshot management infrastructure with consistent data directory usage. ## Project Structure -The Chain Plugin resides under the `plugins/chain` directory and interfaces with the `libraries/chain` database implementation. The plugin exposes a clean interface for other plugins and the application to interact with the blockchain state, with enhanced deferred execution support and comprehensive recovery capabilities. +The Chain Plugin resides under the `plugins/chain` directory and interfaces with the `libraries/chain` database implementation. The plugin exposes a clean interface for other plugins and the application to interact with the blockchain state, with enhanced deferred execution support and comprehensive recovery capabilities. The data directory path has been standardized to use 'state' for improved organizational clarity. ```mermaid graph TB @@ -74,7 +75,7 @@ The Chain Plugin consists of two primary parts: - The database wrapper that handles block acceptance, transaction processing, and state management Key responsibilities include: -- Managing shared memory configuration and growth policies with updated default directory structure +- Managing shared memory configuration and growth policies with updated default directory structure using 'state' - Handling snapshot loading and recovery modes with enhanced deferred execution support - Coordinating block and transaction acceptance with plugin synchronization - Providing state queries and database accessors @@ -82,7 +83,7 @@ Key responsibilities include: - Implementing advanced recovery procedures with automatic snapshot detection and restoration - Integrating with comprehensive snapshot management infrastructure including automatic discovery, rotation, and serving capabilities -**Updated** Enhanced plugin coordination with deferred execution support allows seamless integration between chain and snapshot plugins, enabling flexible startup sequences and improved error recovery mechanisms. The default shared memory directory has been changed from 'blockchain' to 'state' for better organizational clarity. +**Updated** Enhanced plugin coordination with deferred execution support allows seamless integration between chain and snapshot plugins, enabling flexible startup sequences and improved error recovery mechanisms. The default shared memory directory has been changed from 'blockchain' to 'state' for better organizational clarity and consistency across data directory usage. **Section sources** - [plugin.hpp:21-124](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L21-L124) @@ -240,7 +241,7 @@ The plugin supports extensive configuration through command-line and configurati | **replay-from-snapshot** | bool | Snapshot + dlt_block_log replay | false | | **snapshot-dir** | string | Directory for auto-generated snapshots | empty | -**Updated** Enhanced plugin coordination with deferred execution support for snapshot operations, allowing flexible startup sequences between chain and snapshot plugins. The default shared-file-dir has been changed from 'blockchain' to 'state' for improved organizational clarity and better separation of concerns. +**Updated** Enhanced plugin coordination with deferred execution support for snapshot operations, allowing flexible startup sequences between chain and snapshot plugins. The default shared-file-dir has been changed from 'blockchain' to 'state' for improved organizational clarity and consistency across data directory usage. **Section sources** - [plugin.cpp:197-272](file://plugins/chain/plugin.cpp#L197-L272) @@ -489,7 +490,7 @@ The plugin integrates with several other components with enhanced coordination: - Witness plugin for block production - Database plugin for state persistence -**Updated** Enhanced integration with snapshot plugin includes sophisticated deferred execution mechanisms, automatic callback registration, and comprehensive recovery system coordination. The default shared memory directory has been changed from 'blockchain' to 'state' for better organizational structure. +**Updated** Enhanced integration with snapshot plugin includes sophisticated deferred execution mechanisms, automatic callback registration, and comprehensive recovery system coordination. The default shared memory directory has been changed from 'blockchain' to 'state' for better organizational structure and consistent data directory usage. **Section sources** - [plugin.hpp:23-24](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L23-L24) @@ -579,4 +580,4 @@ The Chain Plugin implements several performance optimizations with enhanced plug ## Conclusion The Chain Plugin provides a robust foundation for blockchain state management in the VIZ node. Its modular design, comprehensive configuration options, and efficient database operations make it suitable for production deployments while maintaining flexibility for development and testing scenarios. Recent enhancements focus on improved plugin coordination with deferred execution support, comprehensive recovery system integration with DLT block log capabilities, and sophisticated snapshot loading mechanisms. The plugin's integration with snapshot technology, emergency consensus mode, and advanced recovery procedures provides strong operational resilience and enhanced error handling capabilities with improved plugin coordination and seamless user experience. -**Updated** The default shared-memory directory has been changed from 'blockchain' to 'state' for better organizational clarity, and the comprehensive snapshot management infrastructure provides powerful automation capabilities including automatic discovery, periodic creation, rotation, serving, and P2P synchronization with trust models and anti-spam protection. \ No newline at end of file +**Updated** The default shared-memory directory has been changed from 'blockchain' to 'state' for better organizational clarity, ensuring consistency across data directory usage in plugin initialization and snapshot plugin deferred loading functionality. The comprehensive snapshot management infrastructure provides powerful automation capabilities including automatic discovery, periodic creation, rotation, serving, and P2P synchronization with trust models and anti-spam protection. \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Configuration Management/Build Configuration.md b/.qoder/repowiki/en/content/Configuration Management/Build Configuration.md index 6d74c9dbf5..f8f2d77d00 100644 --- a/.qoder/repowiki/en/content/Configuration Management/Build Configuration.md +++ b/.qoder/repowiki/en/content/Configuration Management/Build Configuration.md @@ -20,15 +20,19 @@ - [programs/CMakeLists.txt](file://programs/CMakeLists.txt) - [thirdparty/CMakeLists.txt](file://thirdparty/CMakeLists.txt) - [programs/vizd/CMakeLists.txt](file://programs/vizd/CMakeLists.txt) +- [build-linux.sh](file://build-linux.sh) +- [build-mac.sh](file://build-mac.sh) +- [build-mingw.bat](file://build-mingw.bat) +- [build-msvc.bat](file://build-msvc.bat) ## Update Summary **Changes Made** -- Enhanced submodule management documentation with branch specifications for thirdparty submodules -- Updated dependency management section to reflect Boost 1.71 requirement across thirdparty libraries -- Added fc submodule vendor dependencies documentation -- Updated Docker configuration references to reflect streamlined Docker setup -- Revised third-party library integration section with specific Boost version requirements +- Updated shared library configuration documentation to reflect consistent static library builds across all platforms +- Added comprehensive coverage of the BUILD_SHARED_LIBRARIES=OFF setting and its implications +- Enhanced platform-specific build behavior documentation for Linux, macOS, and Windows +- Updated Docker configuration references to show consistent static linking approach +- Revised build script documentation to highlight the unified static library approach ## Table of Contents 1. [Introduction](#introduction) @@ -45,7 +49,7 @@ ## Introduction This document describes the build configuration for VIZ CPP Node, focusing on the CMake build system, available build options, compiler flags, feature toggles, cross-platform compilation, dependency management, and third-party library integration. It also covers build variants (development, production, low-memory, testnet), environment variable requirements, toolchain configuration, and CI integration via Docker and GitHub Actions. Practical examples and troubleshooting guidance are included to help you build reliably across platforms. -**Updated** Enhanced submodule management with branch specification for thirdparty submodules and improved dependency management through streamlined Docker configurations. +**Updated** Enhanced with comprehensive documentation of the unified static library approach across all platforms, ensuring consistent build behavior and simplified deployment. ## Project Structure The repository is organized around a top-level CMake project that orchestrates three major subtrees: @@ -88,7 +92,7 @@ TP --> Submods ## Core Components Key build options and toggles configured at the top-level CMake: - CMAKE_BUILD_TYPE: Selects Release or Debug profiles -- BUILD_SHARED_LIBRARIES: Controls static vs shared library builds +- BUILD_SHARED_LIBRARIES: Controls static vs shared library builds (UNIFIED STATIC APPROACH) - BUILD_TESTNET: Enables testnet configuration via preprocessor defines - LOW_MEMORY_NODE: Enables low-memory node configuration via preprocessor defines - CHAINBASE_CHECK_LOCKING: Enables chainbase locking checks via preprocessor defines @@ -97,6 +101,8 @@ Key build options and toggles configured at the top-level CMake: - FULL_STATIC_BUILD: Forces static linking flags on Windows and Linux - ENABLE_INSTALLER: Enables CPack packaging configuration (optional) +**Updated** The BUILD_SHARED_LIBRARIES option is now consistently set to OFF across all build environments to ensure uniform static library behavior. + Compiler and toolchain behavior: - Minimum compiler versions enforced for GCC and Clang - Platform-specific flags for MSVC, MinGW, Apple, and Linux @@ -106,7 +112,9 @@ Compiler and toolchain behavior: Platform specifics: - Windows: Boost static linkage, MSVC/MinGW flags, TCL detection, static-linking options -- macOS/Linux: C++ standard selection, libc++ vs libstdc++, threading/crypto libraries, Ninja color diagnostics +- macOS: Shared libraries enabled by default, static linking available via --static flag +- Linux: Static libraries enabled by default through build scripts, static linking available via --static flag +- All platforms: Unified approach to ensure consistent deployment characteristics **Section sources** - [CMakeLists.txt:1-271](file://CMakeLists.txt#L1-L271) @@ -150,11 +158,14 @@ Highlights: - Adds subdirectories for thirdparty, libraries, plugins, and programs - Supports CPack packaging when enabled +**Updated** The BUILD_SHARED_LIBRARIES option is now set to OFF by default, ensuring consistent static library behavior across all platforms and build methods. + Common build invocations: - Release build: cmake -DCMAKE_BUILD_TYPE=Release .. - Low-memory node: cmake -DLowMemoryNode=TRUE .. - Testnet build: cmake -DBUILD_TESTNET=TRUE .. - Enable MongoDB plugin: cmake -DENABLE_MONGO_PLUGIN=TRUE .. +- Static build (all platforms): cmake -DBUILD_SHARED_LIBRARIES=OFF .. Environment variables: - BOOST_ROOT (Windows): points to Boost installation @@ -176,9 +187,11 @@ Toolchains and generators: - Testnet: switches to testnet configuration and seeds - Chainbase locking checks: enables additional synchronization assertions - MongoDB plugin: compiles and links the mongo_db plugin with appropriate preprocessor defines -- Static vs shared libraries: BUILD_SHARED_LIBRARIES controls library type +- Static vs shared libraries: BUILD_SHARED_LIBRARIES controls library type (UNIFIED STATIC APPROACH) - Full static build: FULL_STATIC_BUILD forces static linking flags on supported platforms +**Updated** All build variants now consistently use static libraries (BUILD_SHARED_LIBRARIES=OFF) to ensure uniform deployment characteristics across environments. + Preprocessor defines injected at configure time: - BUILD_TESTNET, IS_LOW_MEM, CHAINBASE_CHECK_LOCKING, MONGODB_PLUGIN_BUILT @@ -192,13 +205,18 @@ Preprocessor defines injected at configure time: - Threading and realtime libraries linked conditionally - Optional static linking flags - Ninja generator gains color diagnostics + - **Static libraries enabled by default through build scripts** - macOS: - - Uses libc++ + - Uses libc++ and shared libraries by default + - Static linking available via --static flag in build-mac.sh - Optional TCMalloc discovery via gperftools - Windows: - MSVC flags: disables safe-seh, ensures debug info in Debug - MinGW flags: C++11, permissiveness, SSE4.2, big object support, optimized debug flags - TCL detection and adjusted library naming + - **Static libraries enabled by default through build scripts** + +**Updated** All platforms now use a unified approach with static libraries enabled by default, ensuring consistent behavior and simplified deployment. Dependencies: - Boost 1.71+ required across all thirdparty libraries (appbase, chainbase, fc) @@ -207,8 +225,6 @@ Dependencies: - Readline on Unix-like systems - Optional: MongoDB C/C++ drivers when enabling the plugin -**Updated** All thirdparty libraries now require Boost 1.71+, with fc specifically requiring this version for secp256k1-zkp integration. - **Section sources** - [CMakeLists.txt:91-202](file://CMakeLists.txt#L91-L202) - [building.md:25-212](file://documentation/building.md#L25-L212) @@ -236,11 +252,13 @@ The fc library manages its own vendor dependencies through nested submodules: These dependencies are automatically managed during the fc build process and integrated into the final library. #### Streamlined Docker Configuration -The Docker build system has been streamlined to support multiple deployment variants: +The Docker build system has been streamlined to support multiple deployment variants with consistent static library approach: - Production builds with Release configuration and static linking -- Testnet builds with testnet-specific configuration -- Low-memory builds optimized for resource-constrained environments -- MongoDB-enabled builds with database integration support +- Testnet builds with testnet-specific configuration and static linking +- Low-memory builds optimized for resource-constrained environments with static linking +- MongoDB-enabled builds with database integration support and static linking + +**Updated** All Docker configurations now consistently use BUILD_SHARED_LIBRARIES=FALSE to ensure uniform behavior across containerized deployments. **Section sources** - [.gitmodules:1-13](file://.gitmodules#L1-L13) @@ -289,14 +307,14 @@ Installation: - Builds production and testnet Docker images on master branch pushes - Uses Docker's build-push action with credentials from secrets +**Updated** Docker configurations have been streamlined to support the enhanced submodule management and improved dependency resolution with consistent static library approach. + Dockerfiles: - Production: Release build with shared libs disabled, minimal flags - Testnet: Same as production plus BUILD_TESTNET - Low-memory: Same as production plus LOW_MEMORY_NODE - Mongo: Installs MongoDB C/C++ drivers and enables ENABLE_MONGO_PLUGIN -**Updated** Docker configurations have been streamlined to support the enhanced submodule management and improved dependency resolution. - **Section sources** - [.travis.yml:1-46](file://.travis.yml#L1-L46) - [.github/workflows/docker-main.yml:1-41](file://.github/workflows/docker-main.yml#L1-L41) @@ -355,11 +373,14 @@ Third --> Crypto["secp256k1-zkp"] - ccache is detected and used globally for compile and link steps when available - Static linking: - FULL_STATIC_BUILD toggles static linking flags on Windows and Linux to reduce runtime dependencies + - **Unified static library approach reduces deployment complexity and improves portability** - Coverage: - ENABLE_COVERAGE_TESTING injects coverage flags for analysis workflows - PCH: - USE_PCH enables precompiled headers via cotire to speed up rebuilds +**Updated** The unified static library approach simplifies performance optimization by eliminating shared library dependency issues across different environments. + **Section sources** - [CMakeLists.txt:147-156](file://CMakeLists.txt#L147-L156) - [CMakeLists.txt:186-188](file://CMakeLists.txt#L186-L188) @@ -386,8 +407,11 @@ Common issues and resolutions: - Enabling ENABLE_MONGO_PLUGIN requires MongoDB C/C++ drivers; Dockerfile-mongo demonstrates the process - Submodule branch conflicts: - Ensure thirdparty submodules are checked out from the correct branches (lib-boost-1.71 for chainbase/appbase, update for fc) +- **Static library deployment issues**: + - **All builds now use static libraries by default, eliminating shared library dependency problems** + - **If encountering runtime linking issues, verify the unified static library approach is being used** -**Updated** Added troubleshooting guidance for Boost 1.71+ requirement and submodule branch conflicts. +**Updated** Added troubleshooting guidance for the unified static library approach and deployment-related issues. **Section sources** - [building.md:76-137](file://documentation/building.md#L76-L137) @@ -400,9 +424,9 @@ Common issues and resolutions: - [.gitmodules:1-13](file://.gitmodules#L1-L13) ## Conclusion -The VIZ CPP Node build system is designed for portability and flexibility across Linux, macOS, and Windows. It exposes a concise set of CMake options to tailor builds for development, production, testnet, and specialized configurations like low-memory nodes and MongoDB-enabled deployments. The enhanced submodule management ensures consistent dependency resolution with Boost 1.71+ across all thirdparty libraries, while streamlined Docker configurations support automated CI/CD workflows. CI pipelines automate reproducible builds using Docker, ensuring consistent outcomes across environments. +The VIZ CPP Node build system is designed for portability and flexibility across Linux, macOS, and Windows. It exposes a concise set of CMake options to tailor builds for development, production, testnet, and specialized configurations like low-memory nodes and MongoDB-enabled deployments. The enhanced submodule management ensures consistent dependency resolution with Boost 1.71+ across all thirdparty libraries, while streamlined Docker configurations support automated CI/CD workflows. **The unified static library approach across all platforms eliminates shared library dependency issues and ensures consistent deployment characteristics.** CI pipelines automate reproducible builds using Docker, ensuring consistent outcomes across environments. -**Updated** The build system now includes enhanced submodule management with branch specifications and improved dependency resolution through Boost 1.71+ enforcement across all thirdparty libraries. +**Updated** The build system now includes enhanced submodule management with branch specifications, improved dependency resolution through Boost 1.71+ enforcement, and a unified static library approach that simplifies deployment across all supported platforms. ## Appendices @@ -410,24 +434,31 @@ The VIZ CPP Node build system is designed for portability and flexibility across - Development build (Linux/macOS): - Configure with Release profile and desired feature toggles - Example: cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTNET=TRUE .. + - **Static libraries enabled by default for consistent behavior** - Production deployment (Linux): - Use Dockerfile-production for a Release build with static linking and minimal flags - - Alternatively, cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBRARIES=FALSE .. + - Alternatively, cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBRARIES=OFF .. + - **All production builds use static libraries for simplified deployment** - Low-memory node: - cmake -DCMAKE_BUILD_TYPE=Release -DLOW_MEMORY_NODE=TRUE .. + - **Static libraries enabled for optimal performance** - Testnet node: - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTNET=TRUE .. + - **Consistent static library approach across all testnet deployments** - MongoDB-enabled node: - Build Dockerfile-mongo or cmake -DENABLE_MONGO_PLUGIN=TRUE .. with drivers installed + - **Static libraries ensure reliable MongoDB plugin deployment** - Windows (MSVC): - Ensure Boost and TCL roots are set; use Visual Studio generator + - **Static libraries enabled by default through build scripts** - Windows (MinGW): - cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" .. + - **Static libraries enabled by default through build scripts** - Submodule management: - Ensure thirdparty submodules are properly initialized: git submodule update --init --recursive - Verify branch specifications match required versions -**Updated** Added submodule management scenario for proper dependency initialization. +**Updated** Added comprehensive coverage of the unified static library approach across all build scenarios and platforms. ### Environment Variables Reference - BOOST_ROOT: Path to Boost installation (Windows) @@ -439,7 +470,7 @@ The VIZ CPP Node build system is designed for portability and flexibility across - Travis CI builds multiple Docker images for production, test, testnet, lowmem, and mongo variants - GitHub Actions builds production and testnet images on master branch pushes -**Updated** Docker configurations have been streamlined to support the enhanced submodule management and improved dependency resolution. +**Updated** Docker configurations have been streamlined to support the enhanced submodule management and improved dependency resolution with consistent static library approach. **Section sources** - [share/vizd/docker/Dockerfile-testnet:46-54](file://share/vizd/docker/Dockerfile-testnet#L46-L54) @@ -447,4 +478,31 @@ The VIZ CPP Node build system is designed for portability and flexibility across - [share/vizd/docker/Dockerfile-mongo:74-82](file://share/vizd/docker/Dockerfile-mongo#L74-L82) - [.travis.yml:12-42](file://.travis.yml#L12-L42) - [.github/workflows/docker-main.yml:11-41](file://.github/workflows/docker-main.yml#L11-L41) -- [.gitmodules:1-13](file://.gitmodules#L1-L13) \ No newline at end of file +- [.gitmodules:1-13](file://.gitmodules#L1-L13) + +### Platform-Specific Build Behavior + +#### Linux Build Scripts +- **Default behavior**: Static libraries enabled (SHARED_LIBS="OFF") +- **Command-line option**: --static flag enables static linking +- **Build type**: Release by default with optional Debug +- **Feature toggles**: Low memory, testnet, MongoDB plugin support + +#### macOS Build Scripts +- **Default behavior**: Shared libraries enabled (SHARED_LIBS="ON") +- **Command-line option**: --static flag switches to static linking +- **Build type**: Release by default with optional Debug +- **Feature toggles**: Low memory, testnet support + +#### Windows Build Scripts +- **Default behavior**: Static libraries enabled (BUILD_SHARED_LIBRARIES=OFF) +- **Build type**: Release by default with optional Debug +- **Feature toggles**: Low memory, testnet, MongoDB plugin support + +**Updated** Platform-specific behaviors now reflect the unified static library approach, with macOS and Windows maintaining backward compatibility through command-line options. + +**Section sources** +- [build-linux.sh:39](file://build-linux.sh#L39) +- [build-mac.sh:35](file://build-mac.sh#L35) +- [build-mingw.bat:99](file://build-mingw.bat#L99) +- [build-msvc.bat:91](file://build-msvc.bat#L91) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Configuration Management/Configuration Management.md b/.qoder/repowiki/en/content/Configuration Management/Configuration Management.md index 8faaff448c..7564177402 100644 --- a/.qoder/repowiki/en/content/Configuration Management/Configuration Management.md +++ b/.qoder/repowiki/en/content/Configuration Management/Configuration Management.md @@ -20,14 +20,18 @@ - [witness.cpp](file://plugins/witness/witness.cpp) - [config_testnet.hpp](file://libraries/protocol/include/graphene/protocol/config_testnet.hpp) - [config.hpp](file://libraries/protocol/include/graphene/protocol/config.hpp) +- [snapshot-plugin.md](file://documentation/snapshot-plugin.md) +- [plugin.cpp](file://plugins/snapshot/plugin.cpp) +- [plugin.cpp](file://plugins/chain/plugin.cpp) +- [application.cpp](file://thirdparty/appbase/application.cpp) ## Update Summary **Changes Made** -- Updated witness configuration defaults section to reflect new default values -- Added information about CHAIN_1_PERCENT constant usage for required participation calculations -- Updated witness configuration examples to show new default values -- Enhanced troubleshooting guidance for witness production issues +- Updated snapshot directory default behavior section to reflect new data-directory-based default location +- Added documentation for enhanced snapshot configuration including trusted-snapshot-peer integration +- Updated snapshot configuration examples to show new default behavior and trusted peer options +- Enhanced troubleshooting guidance for snapshot-related configuration issues ## Table of Contents 1. [Introduction](#introduction) @@ -80,9 +84,9 @@ entry --> node ``` **Diagram sources** -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config_witness.ini:1-138](file://share/vizd/config/config_witness.ini#L1-L138) - [config_mongo.ini:1-135](file://share/vizd/config/config_mongo.ini#L1-L135) - [config_debug.ini:1-126](file://share/vizd/config/config_debug.ini#L1-L126) - [config_debug_mongo.ini:1-135](file://share/vizd/config/config_debug_mongo.ini#L1-L135) @@ -93,9 +97,9 @@ entry --> node - [main.cpp:106-158](file://programs/vizd/main.cpp#L106-L158) **Section sources** -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config_witness.ini:1-138](file://share/vizd/config/config_witness.ini#L1-L138) - [config_mongo.ini:1-135](file://share/vizd/config/config_mongo.ini#L1-L135) - [config_debug.ini:1-126](file://share/vizd/config/config_debug.ini#L1-L126) - [config_debug_mongo.ini:1-135](file://share/vizd/config/config_debug_mongo.ini#L1-L135) @@ -120,11 +124,12 @@ Key configuration categories: - Plugin list and activation - Witness production controls - Logging configuration +- **Snapshot configuration** (updated with new default behavior) **Section sources** - [main.cpp:167-191](file://programs/vizd/main.cpp#L167-L191) - [main.cpp:194-289](file://programs/vizd/main.cpp#L194-L289) -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) ## Architecture Overview The configuration pipeline integrates configuration files, program options, and environment variables to initialize the node. @@ -162,7 +167,7 @@ These sections are parsed by the node to configure logging at startup. **Section sources** - [main.cpp:167-191](file://programs/vizd/main.cpp#L167-L191) - [main.cpp:211-289](file://programs/vizd/main.cpp#L211-L289) -- [config.ini:111-130](file://share/vizd/config/config.ini#L111-L130) +- [config.ini:118-136](file://share/vizd/config/config.ini#L118-L136) ### Runtime Parameters and Program Options Program options include logging configuration and standard node options. The node parses configuration files and applies logging settings accordingly. @@ -210,16 +215,16 @@ LowMem --> LowMemFlag["Build with LOW_MEMORY_NODE=TRUE"] ``` **Diagram sources** -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config_witness.ini:1-138](file://share/vizd/config/config_witness.ini#L1-L138) - [Dockerfile-lowmem:45-51](file://share/vizd/docker/Dockerfile-lowmem#L45-L51) - [building.md:11-15](file://documentation/building.md#L11-L15) **Section sources** -- [config.ini:69-73](file://share/vizd/config/config.ini#L69-L73) +- [config.ini:73-85](file://share/vizd/config/config.ini#L73-L85) - [config_testnet.ini:69-73](file://share/vizd/config/config_testnet.ini#L69-L73) -- [config_witness.ini:68-86](file://share/vizd/config/config_witness.ini#L68-L86) +- [config_witness.ini:72-84](file://share/vizd/config/config_witness.ini#L72-L84) - [building.md:11-15](file://documentation/building.md#L11-L15) - [Dockerfile-lowmem:45-51](file://share/vizd/docker/Dockerfile-lowmem#L45-L51) @@ -243,16 +248,16 @@ PeerConn --> Sync["Sync Behavior
network config constants"] ``` **Diagram sources** -- [config.ini:1-11](file://share/vizd/config/config.ini#L1-L11) +- [config.ini:1-16](file://share/vizd/config/config.ini#L1-L16) - [config_testnet.ini:1-11](file://share/vizd/config/config_testnet.ini#L1-L11) -- [config_witness.ini:1-8](file://share/vizd/config/config_witness.ini#L1-L8) +- [config_witness.ini:1-15](file://share/vizd/config/config_witness.ini#L1-L15) - [config.hpp:54-56](file://libraries/network/include/graphene/network/config.hpp#L54-L56) - [config.hpp:105-106](file://libraries/network/include/graphene/network/config.hpp#L105-L106) **Section sources** -- [config.ini:1-11](file://share/vizd/config/config.ini#L1-L11) +- [config.ini:1-16](file://share/vizd/config/config.ini#L1-L16) - [config_testnet.ini:1-11](file://share/vizd/config/config_testnet.ini#L1-L11) -- [config_witness.ini:1-8](file://share/vizd/config/config_witness.ini#L1-L8) +- [config_witness.ini:1-15](file://share/vizd/config/config_witness.ini#L1-L15) - [config.hpp:54-56](file://libraries/network/include/graphene/network/config.hpp#L54-L56) - [config.hpp:105-106](file://libraries/network/include/graphene/network/config.hpp#L105-L106) @@ -263,9 +268,9 @@ Plugins are activated via configuration entries. The node registers all built-in - The plugin documentation outlines enabling/disabling and replay requirements. **Section sources** -- [config.ini:69-73](file://share/vizd/config/config.ini#L69-L73) +- [config.ini:73-85](file://share/vizd/config/config.ini#L73-L85) - [config_testnet.ini:69-73](file://share/vizd/config/config_testnet.ini#L69-L73) -- [config_witness.ini:68-68](file://share/vizd/config/config_witness.ini#L68-L68) +- [config_witness.ini:72-84](file://share/vizd/config/config_witness.ini#L72-L84) - [plugin.md:14-18](file://documentation/plugin.md#L14-L18) ### Performance Tuning Parameters @@ -279,7 +284,7 @@ Key tunables include: These parameters influence throughput and stability under load. **Section sources** -- [config.ini:13-47](file://share/vizd/config/config.ini#L13-L47) +- [config.ini:17-72](file://share/vizd/config/config.ini#L17-L72) - [config.ini:49-67](file://share/vizd/config/config.ini#L49-L67) ### Logging Configuration @@ -289,10 +294,63 @@ Logging is configured via INI sections for appenders and loggers. The node expos - Logger levels and appender assignments **Section sources** -- [config.ini:111-130](file://share/vizd/config/config.ini#L111-L130) +- [config.ini:118-136](file://share/vizd/config/config.ini#L118-L136) - [main.cpp:167-191](file://programs/vizd/main.cpp#L167-L191) - [main.cpp:211-289](file://programs/vizd/main.cpp#L211-L289) +### Snapshot Configuration and Default Directory Behavior + +**Updated** The snapshot plugin now uses a data-directory-based default location instead of the current working directory fallback: + +#### Default Directory Behavior +- **New default**: When `snapshot-dir` is not explicitly configured, the system now defaults to `/snapshots` instead of the current working directory +- **Data directory resolution**: The data directory is determined by the application's data_dir() method, typically located at `/var/lib/vizd` for production containers +- **Automatic creation**: The default snapshot directory is automatically created if it doesn't exist + +#### Enhanced Trusted Peer Integration +The snapshot plugin now includes comprehensive trusted peer configuration options: + +- **Trusted snapshot peers**: List of seed nodes that can serve snapshots to this node +- **Snapshot serving restrictions**: Control who can download snapshots from this node +- **Anti-spam protection**: Built-in rate limiting and connection management for snapshot serving +- **DLT mode support**: Optimized for distributed ledger technology nodes without full block history + +#### Configuration Examples + +**Basic snapshot configuration**: +```ini +plugin = snapshot +snapshot-dir = /var/lib/vizd/snapshots +snapshot-every-n-blocks = 2400 +snapshot-max-age-days = 2 +``` + +**Trusted peer configuration**: +```ini +plugin = snapshot +sync-snapshot-from-trusted-peer = true +trusted-snapshot-peer = 185.45.192.155:8092 +trusted-snapshot-peer = 62.109.17.82:8092 +snapshot-dir = /var/lib/vizd/snapshots +``` + +**Snapshot serving configuration**: +```ini +plugin = snapshot +allow-snapshot-serving = true +allow-snapshot-serving-only-trusted = false +snapshot-serve-endpoint = 0.0.0.0:8092 +snapshot-dir = /var/lib/vizd/snapshots +``` + +**Section sources** +- [plugin.cpp:2974-2983](file://plugins/snapshot/plugin.cpp#L2974-L2983) +- [plugin.cpp:3044-3050](file://plugins/snapshot/plugin.cpp#L3044-L3050) +- [plugin.cpp:3070-3090](file://plugins/snapshot/plugin.cpp#L3070-L3090) +- [plugin.cpp:352-355](file://plugins/chain/plugin.cpp#L352-L355) +- [application.cpp:298-300](file://thirdparty/appbase/application.cpp#L298-L300) +- [snapshot-plugin.md:1-365](file://documentation/snapshot-plugin.md#L1-L365) + ### Docker-Specific Configuration - Production image: - Copies main configuration and seednodes into /etc/vizd @@ -350,10 +408,12 @@ These are set via CMake flags in Dockerfiles and documented in the building guid - Use the main configuration template and production Docker image. - Persist data via mounted volumes. - Optionally override endpoints and seed nodes via environment variables. + - **Updated**: Snapshot directory will default to `/var/lib/vizd/snapshots` if not explicitly configured. - Testnet setup - Use the testnet Docker image and configuration. - The testnet image enables testnet build flags and uses a testnet snapshot. + - **Updated**: Trusted snapshot peers are pre-configured for testnet bootstrap. - Development environment - Use the debug configuration templates to enable additional plugins and adjust logging. @@ -362,11 +422,12 @@ These are set via CMake flags in Dockerfiles and documented in the building guid - Witness node - Use the witness configuration template and bind RPC endpoints to localhost. - Provide witness name and private key via environment variables. + - **Updated**: Snapshot configuration supports witness-aware deferral to prevent missed production slots. **Section sources** -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config_witness.ini:1-138](file://share/vizd/config/config_witness.ini#L1-L138) - [config_debug.ini:1-126](file://share/vizd/config/config_debug.ini#L1-L126) - [config_mongo.ini:1-135](file://share/vizd/config/config_mongo.ini#L1-L135) - [Dockerfile-production:74-87](file://share/vizd/docker/Dockerfile-production#L74-L87) @@ -378,6 +439,7 @@ Configuration dependencies and interactions: - The node binary depends on the configuration loader to parse logging and runtime settings. - Docker entrypoint depends on environment variables to inject CLI flags. - Network behavior is influenced by both configuration and compiled-in network constants. +- **Updated**: Snapshot configuration depends on the application's data_dir() method for default directory resolution. ```mermaid graph LR @@ -386,17 +448,21 @@ Loader --> NodeMain["Node Main
main.cpp"] Entrypoint["Entrypoint Script
vizd.sh"] --> NodeMain NodeMain --> Logging["Logging System"] NodeMain --> Network["Network Constants
config.hpp"] +NodeMain --> DataDir["Data Directory
appbase::app().data_dir()"] +DataDir --> SnapshotDefault["Snapshot Default Dir
/snapshots"] ``` **Diagram sources** - [main.cpp:194-289](file://programs/vizd/main.cpp#L194-L289) - [vizd.sh:13-81](file://share/vizd/vizd.sh#L13-L81) - [config.hpp:54-56](file://libraries/network/include/graphene/network/config.hpp#L54-L56) +- [application.cpp:298-300](file://thirdparty/appbase/application.cpp#L298-L300) **Section sources** - [main.cpp:194-289](file://programs/vizd/main.cpp#L194-L289) - [vizd.sh:13-81](file://share/vizd/vizd.sh#L13-L81) - [config.hpp:54-56](file://libraries/network/include/graphene/network/config.hpp#L54-L56) +- [application.cpp:298-300](file://thirdparty/appbase/application.cpp#L298-L300) ## Performance Considerations - Tune read/write lock wait parameters to balance latency and contention. @@ -404,6 +470,7 @@ NodeMain --> Network["Network Constants
config.hpp"] - Adjust shared memory size and growth thresholds to minimize resizing overhead. - Limit plugin notifications on push transactions to improve responsiveness. - Select appropriate node type (low-memory) for constrained environments. +- **Updated**: Configure snapshot directory on fast storage for optimal snapshot creation and loading performance. ## Troubleshooting Guide @@ -417,6 +484,30 @@ NodeMain --> Network["Network Constants
config.hpp"] - **Witness production failures**: If witness production is failing, check the participation threshold calculation. The system now requires at least 33% of witnesses to be participating for block production to continue. +### Snapshot Configuration Issues + +**Updated** Common snapshot configuration issues and validation techniques: + +- **Snapshot directory default behavior** + - Verify that the data directory is properly mounted in Docker containers + - Check that `/var/lib/vizd/snapshots` exists and has proper permissions + - Use explicit `snapshot-dir` configuration when the default location is not suitable + +- **Trusted peer configuration** + - Verify that trusted snapshot peers are reachable and serving snapshots + - Check firewall rules for port 8092 (snapshot serving) + - Use `test-trusted-seeds` option to diagnose connectivity issues + +- **Snapshot auto-discovery** + - Ensure snapshot files follow the naming convention `snapshot-block-NNNNN.vizjson` + - Verify that snapshot files are readable and not corrupted + - Check that the snapshot directory contains valid snapshot files + +- **Snapshot serving issues** + - Verify that `allow-snapshot-serving` is properly configured + - Check anti-spam settings if clients are being rate-limited + - Monitor snapshot serving logs for connection errors + Common configuration issues and validation techniques: - Logging misconfiguration - Verify INI sections for appenders and loggers. @@ -436,19 +527,26 @@ Common configuration issues and validation techniques: - Verify witness name and private key are correctly configured. - Check participation threshold calculations using the CHAIN_1_PERCENT constant. - Monitor for "low participation" errors indicating below-threshold witness participation. +- **Updated**: Snapshot configuration issues + - Verify snapshot directory permissions and disk space + - Check snapshot file integrity and naming conventions + - Validate trusted peer connectivity and snapshot availability **Section sources** - [main.cpp:167-191](file://programs/vizd/main.cpp#L167-L191) - [main.cpp:211-289](file://programs/vizd/main.cpp#L211-L289) -- [config.ini:111-130](file://share/vizd/config/config.ini#L111-L130) +- [config.ini:118-136](file://share/vizd/config/config.ini#L118-L136) - [plugin.md:14-18](file://documentation/plugin.md#L14-L18) - [vizd.sh:44-53](file://share/vizd/vizd.sh#L44-L53) - [witness.cpp:125-130](file://plugins/witness/witness.cpp#L125-L130) - [config_testnet.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config_testnet.hpp#L57-L59) - [config.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config.hpp#L57-L59) +- [plugin.cpp:2974-2983](file://plugins/snapshot/plugin.cpp#L2974-L2983) +- [plugin.cpp:3044-3050](file://plugins/snapshot/plugin.cpp#L3044-L3050) +- [plugin.cpp:3070-3090](file://plugins/snapshot/plugin.cpp#L3070-L3090) ## Conclusion -VIZ CPP Node offers a flexible configuration system combining INI-based settings, program options, and environment variable overrides. Different node types and deployment modes are supported through configuration templates and Docker images. Proper tuning of performance and logging parameters ensures reliable operation across production, testnet, and development environments. +VIZ CPP Node offers a flexible configuration system combining INI-based settings, program options, and environment variable overrides. Different node types and deployment modes are supported through configuration templates and Docker images. Proper tuning of performance and logging parameters ensures reliable operation across production, testnet, and development environments. **Updated**: The snapshot configuration system now provides enhanced default behavior with data-directory-based snapshot directories and comprehensive trusted peer integration for improved bootstrap and distribution capabilities. ## Appendices @@ -485,19 +583,36 @@ VIZ CPP Node offers a flexible configuration system combining INI-based settings - log.console_appender.* - log.file_appender.* - logger.* +- **Updated** Snapshot + - snapshot-at-block (default: 0) + - snapshot-every-n-blocks (default: 0) + - snapshot-dir (default: `/snapshots`) + - snapshot-max-age-days (default: 0) + - allow-snapshot-serving (default: false) + - allow-snapshot-serving-only-trusted (default: false) + - snapshot-serve-endpoint (default: 0.0.0.0:8092) + - trusted-snapshot-peer (repeatable) + - sync-snapshot-from-trusted-peer (default: false) + - enable-stalled-sync-detection (default: false) + - stalled-sync-timeout-minutes (default: 5) + - test-trusted-seeds (default: false) + - dlt-block-log-max-blocks (default: 100000) **Updated** Witness configuration defaults now use improved defaults for better network reliability and accurate participation calculations. **Section sources** -- [config.ini:1-130](file://share/vizd/config/config.ini#L1-L130) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config_witness.ini:1-138](file://share/vizd/config/config_witness.ini#L1-L138) - [config_mongo.ini:1-135](file://share/vizd/config/config_mongo.ini#L1-L135) - [config_debug.ini:1-126](file://share/vizd/config/config_debug.ini#L1-L126) - [config_debug_mongo.ini:1-135](file://share/vizd/config/config_debug_mongo.ini#L1-L135) - [witness.cpp:125-130](file://plugins/witness/witness.cpp#L125-L130) - [config_testnet.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config_testnet.hpp#L57-L59) - [config.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config.hpp#L57-L59) +- [plugin.cpp:2974-2983](file://plugins/snapshot/plugin.cpp#L2974-L2983) +- [plugin.cpp:3044-3050](file://plugins/snapshot/plugin.cpp#L3044-L3050) +- [plugin.cpp:3070-3090](file://plugins/snapshot/plugin.cpp#L3070-L3090) ### Appendix B: Docker Environment Variables - VIZD_SEED_NODES @@ -526,4 +641,22 @@ This change ensures more accurate participation calculations and consistent beha **Section sources** - [witness.cpp:125-130](file://plugins/witness/witness.cpp#L125-L130) - [config_testnet.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config_testnet.hpp#L57-L59) -- [config.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config.hpp#L57-L59) \ No newline at end of file +- [config.hpp:57-59](file://libraries/protocol/include/graphene/protocol/config.hpp#L57-L59) + +### Appendix D: Snapshot Configuration Best Practices + +**New** Best practices for snapshot configuration: + +- **Default directory behavior**: The system now defaults to `/snapshots` instead of current working directory +- **Volume mounting**: Ensure `/var/lib/vizd` volume is properly mounted in Docker containers +- **Trusted peer selection**: Choose reliable snapshot peers with good uptime and bandwidth +- **Anti-spam configuration**: Use `allow-snapshot-serving-only-trusted` for private networks +- **Monitoring**: Regularly check snapshot directory disk usage and cleanup old snapshots +- **Security**: Restrict snapshot serving to trusted peers in production environments +- **Performance**: Store snapshots on fast storage devices for optimal loading performance + +**Section sources** +- [plugin.cpp:2974-2983](file://plugins/snapshot/plugin.cpp#L2974-L2983) +- [plugin.cpp:3044-3050](file://plugins/snapshot/plugin.cpp#L3044-L3050) +- [plugin.cpp:3070-3090](file://plugins/snapshot/plugin.cpp#L3070-L3090) +- [snapshot-plugin.md:1-365](file://documentation/snapshot-plugin.md#L1-L365) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Configuration Management/Network Configuration.md b/.qoder/repowiki/en/content/Configuration Management/Network Configuration.md index 635f9933a5..b631504ff5 100644 --- a/.qoder/repowiki/en/content/Configuration Management/Network Configuration.md +++ b/.qoder/repowiki/en/content/Configuration Management/Network Configuration.md @@ -10,17 +10,25 @@ - [config.ini](file://share/vizd/config/config.ini) - [config_testnet.ini](file://share/vizd/config/config_testnet.ini) - [config_witness.ini](file://share/vizd/config/config_witness.ini) +- [config_debug.ini](file://share/vizd/config/config_debug.ini) +- [config_mongo.ini](file://share/vizd/config/config_mongo.ini) +- [config_stock_exchange.ini](file://share/vizd/config/config_stock_exchange.ini) - [node.hpp](file://libraries/network/include/graphene/network/node.hpp) - [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp) - [message.hpp](file://libraries/network/include/graphene/network/message.hpp) +- [plugin.hpp](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp) +- [plugin.cpp](file://plugins/snapshot/plugin.cpp) +- [snapshot-plugin.md](file://documentation/snapshot-plugin.md) ## Update Summary **Changes Made** -- Updated port configuration from legacy 4243 to standardized 2001 for mainnet -- Removed references to external seed node file management system -- Updated configuration examples to reflect integrated config.ini approach -- Revised practical deployment examples for current port standards +- Added comprehensive documentation for the new P2P stale sync detection feature +- Documented the p2p-stale-sync-detection configuration option (default: false) +- Documented the p2p-stale-sync-timeout-seconds configuration option (default: 120) +- Updated all configuration template examples to include the new stale sync detection options +- Enhanced troubleshooting section with stale sync detection guidance +- Updated practical deployment examples to include stale sync detection configuration ## Table of Contents 1. [Introduction](#introduction) @@ -37,15 +45,19 @@ ## Introduction This document provides comprehensive network configuration guidance for the VIZ CPP Node peer-to-peer (P2P) networking stack. It covers peer connection settings, seed node configuration, network discovery mechanisms, listen address and port configuration, firewall considerations, security settings, connection limits, performance tuning, bandwidth management, and monitoring. Practical examples are included for private networks, testnets, and mainnet-like deployments. -**Updated** The configuration system has been standardized with port 2001 for mainnet deployments and integrated seed node management through config.ini rather than external files. +**Updated** The configuration system now includes a sophisticated stale sync detection mechanism that automatically recovers from network stalls by resetting sync from the last irreversible block and reconnecting seed peers when no blocks are received for the configured timeout period. ## Project Structure -The P2P networking is implemented in the network library and integrated via the P2P plugin. Configuration is primarily driven by command-line options and configuration files. +The P2P networking is implemented in the network library and integrated via the P2P plugin. Configuration is primarily driven by command-line options and configuration files, with enhanced integration through the snapshot plugin for trusted peer management and stale sync detection capabilities. ```mermaid graph TB subgraph "Application Layer" P2PPlugin["P2P Plugin
p2p_plugin.cpp"] +SnapshotPlugin["Snapshot Plugin
plugin.cpp"] +ChainPlugin["Chain Plugin
plugin.cpp"] +StaleSync["Stale Sync Detection
p2p-stale-sync-detection"] +TimeoutConfig["Timeout Configuration
p2p-stale-sync-timeout-seconds"] end subgraph "Network Library" Node["Node
node.cpp"] @@ -59,6 +71,11 @@ subgraph "Configuration" CfgIni["config.ini"] TestCfg["config_testnet.ini"] WitCfg["config_witness.ini"] +DebugCfg["config_debug.ini"] +MongoCfg["config_mongo.ini"] +StockCfg["config_stock_exchange.ini"] +TrustedPeers["Trusted Peer IPs
_trusted_peer_ips"] +SoftBan["Soft-Ban Duration
TRUSTED_SOFT_BAN_DURATION_SEC"] end P2PPlugin --> Node Node --> PeerConn @@ -69,62 +86,66 @@ Node --> PeerDB P2PPlugin --> CfgIni P2PPlugin --> TestCfg P2PPlugin --> WitCfg +P2PPlugin --> DebugCfg +P2PPlugin --> MongoCfg +P2PPlugin --> StockCfg +P2PPlugin --> StaleSync +P2PPlugin --> TimeoutConfig +SnapshotPlugin --> TrustedPeers +SnapshotPlugin --> SoftBan +Node --> TrustedPeers ``` **Diagram sources** -- [p2p_plugin.cpp:467-566](file://plugins/p2p/p2p_plugin.cpp#L467-L566) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) -- [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) -- [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) -- [message.hpp:42-114](file://libraries/network/include/graphene/network/message.hpp#L42-L114) -- [peer_database.hpp:47-71](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) -- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) -- [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) +- [node.cpp:592-600](file://libraries/network/node.cpp#L592-L600) **Section sources** -- [p2p_plugin.cpp:467-566](file://plugins/p2p/p2p_plugin.cpp#L467-L566) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) -- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) -- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) -- [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Core Components - P2P Plugin: Parses CLI and config options, initializes the Node, sets advanced parameters, and starts listening/connecting. -- Node: Manages P2P lifecycle, connection orchestration, sync loops, rate limiting, and bandwidth monitoring. +- Node: Manages P2P lifecycle, connection orchestration, sync loops, rate limiting, bandwidth monitoring, trusted peer soft-ban management, and stale sync detection. - PeerConnection: Encapsulates per-peer state, encryption handshake, send queues, and inventory tracking. - STCP Socket: Provides encrypted transport using ephemeral ECDH key exchange and AES-based stream cipher. - Configuration Constants: Defines protocol version, ports, defaults, timeouts, limits, and performance parameters. - Message Types: Defines the wire-level message header and serialization. - Peer Database: Tracks potential peers, connection attempts, and outcomes. +- **Stale Sync Detection**: New component that monitors block reception timing and automatically recovers from network stalls. +- **Trusted Peer System**: Enhanced component that manages trusted peer endpoints and reduces soft-ban duration for improved network bootstrapping. Key configuration entry points: -- CLI options: p2p-endpoint, p2p-max-connections, p2p-seed-node, p2p-force-validate. -- Config file keys: p2p-endpoint, p2p-max-connections, p2p-seed-node, loggers. +- CLI options: p2p-endpoint, p2p-max-connections, p2p-seed-node, p2p-force-validate, **p2p-stale-sync-detection**, **p2p-stale-sync-timeout-seconds**. +- Config file keys: p2p-endpoint, p2p-max-connections, p2p-seed-node, loggers, **p2p-stale-sync-detection**, **p2p-stale-sync-timeout-seconds**, **trusted-snapshot-peer**. +- **Stale Sync Configuration**: Two new configuration options for detecting and recovering from network stalls. +- **Trusted Peer Configuration**: Multiple trusted-snapshot-peer entries for reduced soft-ban duration. -**Updated** Configuration now uses standardized port 2001 and integrated seed node management through config.ini. +**Updated** Configuration now includes stale sync detection with two new configuration options and enhanced trusted peer support with reduced soft-ban duration. **Section sources** -- [p2p_plugin.cpp:467-566](file://plugins/p2p/p2p_plugin.cpp#L467-L566) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) -- [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) -- [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) -- [message.hpp:42-114](file://libraries/network/include/graphene/network/message.hpp#L42-L114) -- [peer_database.hpp:47-71](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Architecture Overview -High-level P2P flow from plugin initialization to network operation. +High-level P2P flow from plugin initialization to network operation, including stale sync detection and trusted peer integration. ```mermaid sequenceDiagram participant CLI as "CLI/Config" participant P2P as "P2P Plugin" participant Node as "Node" +participant Snapshot as "Snapshot Plugin" participant Seed as "Seed Peers" -CLI->>P2P : Parse options (p2p-endpoint, p2p-max-connections, p2p-seed-node) +participant StaleSync as "Stale Sync Monitor" +CLI->>P2P : Parse options (p2p-endpoint, p2p-max-connections, p2p-seed-node, p2p-stale-sync-detection, p2p-stale-sync-timeout-seconds) P2P->>Node : Construct node(user_agent) P2P->>Node : load_configuration(p2p_dir) P2P->>Node : set_node_delegate(...) @@ -137,13 +158,18 @@ P2P->>Node : set_advanced_node_parameters(max_connections) P2P->>Node : listen_to_p2p_network() P2P->>Node : connect_to_p2p_network() P2P->>Node : sync_from(head, synopsis) +Note over Snapshot,Node : Trusted Peer Registration +Snapshot->>P2P : get_trusted_snapshot_peers() +P2P->>Node : set_trusted_peer_endpoints(trusted_eps) +Note over StaleSync,Node : Stale Sync Detection Setup +StaleSync->>P2P : Initialize stale sync monitor Node->>Seed : Connect and handshake Node-->>P2P : Status callbacks (connection_count_changed, sync_status) ``` **Diagram sources** -- [p2p_plugin.cpp:531-566](file://plugins/p2p/p2p_plugin.cpp#L531-L566) -- [node.cpp:776-790](file://libraries/network/node.cpp#L776-L790) +- [p2p_plugin.cpp:689-706](file://plugins/p2p/p2p_plugin.cpp#L689-L706) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) ## Detailed Component Analysis @@ -162,6 +188,10 @@ Node-->>P2P : Status callbacks (connection_count_changed, sync_status) - Firewall and NAT Awareness: - Node determines firewall status and tracks publicly visible listening endpoint. - Peer records include inbound/outbound ports for NAT traversal hints. +- **Soft-Ban Management**: + - **Default duration**: 1 hour (3600 seconds) for regular peers. + - **Trusted peers**: Reduced to 5 minutes (300 seconds) soft-ban duration. + - Automatic soft-ban duration adjustment based on peer trust status. ```mermaid classDiagram @@ -185,20 +215,121 @@ class Node { +connect_to_endpoint() +set_advanced_node_parameters() +get_actual_listening_endpoint() ++set_trusted_peer_endpoints() ++is_trusted_peer() ++get_soft_ban_duration() +} +class StaleSyncDetection { ++_stale_sync_enabled ++_stale_sync_timeout_seconds ++_last_block_received_time ++stale_sync_check_task() +} +class TrustedPeerSystem { ++_trusted_peer_ips ++SOFT_BAN_DURATION_SEC = 3600 ++TRUSTED_SOFT_BAN_DURATION_SEC = 300 } PeerConnection --> STCP_Socket : "encrypted transport" Node --> PeerConnection : "manages" +Node --> StaleSyncDetection : "uses" +Node --> TrustedPeerSystem : "uses" ``` **Diagram sources** - [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) - [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [node.cpp:776-790](file://libraries/network/node.cpp#L776-L790) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [node.cpp:592-600](file://libraries/network/node.cpp#L592-L600) **Section sources** - [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) - [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [node.cpp:592-600](file://libraries/network/node.cpp#L592-L600) + +### Stale Sync Detection System +- **Stale Sync Detection Configuration**: + - Enabled via `p2p-stale-sync-detection = true` in configuration files. + - Timeout configured via `p2p-stale-sync-timeout-seconds = 120` (default: 120 seconds = 2 minutes). + - Monitors block reception timing across all connected peers. +- **Automatic Recovery Mechanism**: + - Background task checks every 30 seconds for network stalls. + - When no blocks received for the configured timeout, automatically triggers recovery actions. + - Three sequential recovery actions: reset sync from LIB, resync with connected peers, reconnect seed peers. +- **Recovery Actions**: + - **Reset sync from LIB**: Sync start point moved to last irreversible block (safe fork-proof position). + - **Resync with connected peers**: Fresh synchronization requests sent to all currently connected peers. + - **Reconnect seed peers**: All seed nodes from configuration are reconnected. +- **Complementary to Snapshot Plugin**: + - P2P stale detection is lightweight and doesn't require snapshot downloads. + - Works alongside snapshot plugin's stalled sync detection for comprehensive recovery. + - Faster recovery compared to snapshot-based approach. + +```mermaid +flowchart TD +Start(["Stale Sync Detection Startup"]) --> CheckEnabled{"p2p-stale-sync-detection enabled?"} +CheckEnabled --> |No| End(["Disabled"]) +CheckEnabled --> |Yes| InitTimer["Initialize last_block_received_time"] +InitTimer --> ScheduleTask["Schedule 30-second check task"] +ScheduleTask --> Monitor["Monitor block reception"] +Monitor --> CheckStall{"Elapsed > timeout?"} +CheckStall --> |No| Wait["Wait 30 seconds"] +CheckStall --> |Yes| ResetSync["Reset sync from LIB"] +ResetSync --> ResyncPeers["Resync with connected peers"] +ResyncPeers --> ReconnectSeeds["Reconnect all seed peers"] +ReconnectSeeds --> ResetTimer["Reset last_block_received_time"] +ResetTimer --> Wait +Wait --> Monitor +``` + +**Diagram sources** +- [p2p_plugin.cpp:585-649](file://plugins/p2p/p2p_plugin.cpp#L585-L649) +- [p2p_plugin.cpp:812-820](file://plugins/p2p/p2p_plugin.cpp#L812-L820) + +**Section sources** +- [p2p_plugin.cpp:585-649](file://plugins/p2p/p2p_plugin.cpp#L585-L649) +- [p2p_plugin.cpp:812-820](file://plugins/p2p/p2p_plugin.cpp#L812-L820) + +### Trusted Peer Support System +- **Trusted Peer Configuration**: + - Configured via multiple `trusted-snapshot-peer` entries in config.ini. + - Supports IP:port format for each trusted peer endpoint. + - Automatically parsed and registered during P2P plugin initialization. +- **Automatic Integration**: + - P2P plugin automatically queries snapshot plugin for trusted peer endpoints. + - Trusted peer IPs are converted to 32-bit integers for O(1) lookup performance. + - Registered trusted peers receive reduced soft-ban duration (5 minutes vs 1 hour). +- **Soft-Ban Duration Management**: + - Default soft-ban: 3600 seconds (1 hour) for regular peers. + - Trusted peers: 300 seconds (5 minutes) soft-ban duration. + - Dynamic duration calculation based on peer trust status. +- **Logging and Monitoring**: + - Logs registration of trusted peers with count and duration information. + - Clear distinction between regular and trusted peer soft-ban behavior. + +```mermaid +flowchart TD +Start(["P2P Plugin Startup"]) --> LoadSnapshot["Load Snapshot Plugin"] +LoadSnapshot --> CheckTrusted["Check trusted-snapshot-peer Config"] +CheckTrusted --> HasPeers{"Any trusted peers?"} +HasPeers --> |Yes| GetEndpoints["Get trusted endpoints from snapshot plugin"] +GetEndpoints --> ConvertIP["Convert to 32-bit IP addresses"] +ConvertIP --> Register["Register with Node.set_trusted_peer_endpoints()"] +Register --> LogInfo["Log trusted peer registration"] +HasPeers --> |No| Continue["Continue with normal operation"] +LogInfo --> Continue +Continue --> End(["Ready"]) +``` + +**Diagram sources** +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) + +**Section sources** +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) ### Seed Node Configuration and Discovery - Seed Nodes: @@ -329,9 +460,17 @@ D --> |No| C - Transaction rate limit and inventory retention windows are tunable via constants. - Sync Behavior: - Prefetch thresholds and batch sizes influence sync throughput. +- **Stale Sync Optimization**: + - Configurable timeout (default: 120 seconds) prevents unnecessary recovery actions. + - Automatic recovery from temporary network partitions and peer disconnections. + - Complementary to snapshot plugin for comprehensive network stall recovery. +- **Soft-Ban Optimization**: + - Trusted peers benefit from reduced soft-ban duration for faster recovery. + - Improved network bootstrapping and sync performance. **Section sources** - [config.hpp:55-106](file://libraries/network/include/graphene/network/config.hpp#L55-L106) +- [node.cpp:592-600](file://libraries/network/node.cpp#L592-L600) ### Practical Deployment Examples @@ -339,13 +478,16 @@ D --> |No| C - Configure a private listen endpoint and a small set of seed nodes. - Adjust p2p-max-connections for expected peer count. - Disable external exposure by binding to localhost or internal subnet. +- Enable stale sync detection for automatic recovery from network partitions. Example keys: - p2p-endpoint = 10.0.0.5:2001 - p2p-max-connections = 10 - p2p-seed-node = 10.0.0.10:2001 +- **p2p-stale-sync-detection = true** +- **p2p-stale-sync-timeout-seconds = 120** -**Updated** Using standardized port 2001 instead of legacy 4243. +**Updated** Using standardized port 2001 instead of legacy 4243 and added stale sync detection configuration. **Section sources** - [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) @@ -353,11 +495,14 @@ Example keys: #### Testnet - Use testnet-specific defaults and endpoints. - Enable witness participation and adjust required participation as needed. +- Configure stale sync detection with appropriate timeout for testnet conditions. Example keys: - p2p-endpoint = 0.0.0.0:4243 - p2p-seed-node = (testnet seed IPs) - enable-stale-production = true +- **p2p-stale-sync-detection = true** +- **p2p-stale-sync-timeout-seconds = 120** **Section sources** - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) @@ -366,17 +511,39 @@ Example keys: - Bind to public IP and port 2001; ensure firewall/NAT traversal is configured. - Increase p2p-max-connections for high-throughput nodes. - Monitor bandwidth and tune rate limiting. +- Enable stale sync detection with conservative timeout settings. Example keys: - p2p-endpoint = 0.0.0.0:2001 - p2p-max-connections = 200 - p2p-seed-node = (mainnet seed IPs) +- **p2p-stale-sync-detection = true** +- **p2p-stale-sync-timeout-seconds = 180** + +**Updated** Mainnet now standardized to port 2001 for consistent deployment and added stale sync detection configuration. -**Updated** Mainnet now standardized to port 2001 for consistent deployment. +#### Trusted Peer Deployment +- Configure trusted-snapshot-peer entries for reliable network bootstrapping. +- Set sync-snapshot-from-trusted-peer to true for automatic snapshot-based bootstrapping. +- Benefit from reduced soft-ban duration (5 minutes vs 1 hour) for trusted peers. +- Enable stale sync detection for automatic recovery from network stalls. + +Example keys: +- p2p-endpoint = 0.0.0.0:2001 +- p2p-max-connections = 200 +- p2p-seed-node = (mainnet seed IPs) +- sync-snapshot-from-trusted-peer = true +- trusted-snapshot-peer = 185.45.192.155:8092 +- trusted-snapshot-peer = 62.109.17.82:8092 +- **p2p-stale-sync-detection = true** +- **p2p-stale-sync-timeout-seconds = 120** + +**Updated** Added trusted peer configuration for enhanced network bootstrapping and reduced soft-ban duration, plus stale sync detection configuration. **Section sources** - [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config.hpp:52-56](file://libraries/network/include/graphene/network/config.hpp#L52-L56) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Dependency Analysis ```mermaid @@ -390,37 +557,40 @@ N --> PDB["libraries/network/include/graphene/network/peer_database.hpp"] P2P --> C1["share/vizd/config/config.ini"] P2P --> C2["share/vizd/config/config_testnet.ini"] P2P --> C3["share/vizd/config/config_witness.ini"] +P2P --> C4["share/vizd/config/config_debug.ini"] +P2P --> C5["share/vizd/config/config_mongo.ini"] +P2P --> C6["share/vizd/config/config_stock_exchange.ini"] +Snapshot["plugins/snapshot/plugin.cpp"] --> TrustedPeers["_trusted_peer_ips"] +N --> TrustedPeers +N --> StaleSync["Stale Sync Detection"] ``` **Diagram sources** -- [p2p_plugin.cpp:467-566](file://plugins/p2p/p2p_plugin.cpp#L467-L566) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) -- [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) -- [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) -- [message.hpp:42-114](file://libraries/network/include/graphene/network/message.hpp#L42-L114) -- [peer_database.hpp:47-71](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) -- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) -- [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) **Section sources** -- [p2p_plugin.cpp:467-566](file://plugins/p2p/p2p_plugin.cpp#L467-L566) -- [node.cpp:424-800](file://libraries/network/node.cpp#L424-L800) -- [peer_connection.cpp:68-162](file://libraries/network/peer_connection.cpp#L68-L162) -- [stcp_socket.cpp:37-92](file://libraries/network/stcp_socket.cpp#L37-L92) -- [config.hpp:26-106](file://libraries/network/include/graphene/network/config.hpp#L26-L106) -- [message.hpp:42-114](file://libraries/network/include/graphene/network/message.hpp#L42-L114) -- [peer_database.hpp:47-71](file://libraries/network/include/graphene/network/peer_database.hpp#L47-L71) -- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) -- [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [p2p_plugin.cpp:689-698](file://plugins/p2p/p2p_plugin.cpp#L689-L698) +- [node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) +- [plugin.cpp:714-715](file://plugins/snapshot/plugin.cpp#L714-L715) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) ## Performance Considerations - Tune p2p-max-connections to balance throughput and resource usage. - Monitor bandwidth metrics and adjust rate limiting if necessary. - Prefer outbound connections to stable, high-bandwidth peers. - Keep inventory sizes reasonable to avoid memory pressure during floods. +- **Stale Sync Benefits**: + - Automatic recovery from temporary network partitions and peer disconnections. + - Configurable timeout prevents unnecessary recovery actions during normal operation. + - Lightweight recovery mechanism that doesn't require snapshot downloads. + - Complementary to snapshot plugin for comprehensive network stall handling. +- **Trusted Peer Benefits**: + - Reduced soft-ban duration (5 minutes vs 1 hour) for faster recovery from transient errors. + - Improved network bootstrapping performance with trusted snapshot peers. + - Enhanced sync reliability during network partitions or peer unavailability. ## Troubleshooting Guide Common issues and remedies: @@ -434,17 +604,30 @@ Common issues and remedies: - Peer Discovery Failures: - Check peer_database entries for repeated failures. - Increase retry delays and verify network connectivity. +- **Stale Sync Detection Issues**: + - Verify p2p-stale-sync-detection is set to true in configuration. + - Check that p2p-stale-sync-timeout-seconds is appropriately configured (default: 120 seconds). + - Monitor logs for stale sync detection messages and recovery actions. + - Ensure block reception is occurring normally before relying on stale sync recovery. +- **Trusted Peer Issues**: + - Verify trusted-snapshot-peer configuration entries are valid IP:port pairs. + - Check that snapshot plugin is properly loaded and reporting trusted peers. + - Monitor logs for trusted peer registration success messages. + - Ensure soft-ban duration is correctly applied (5 minutes vs 1 hour). Operational hooks: - Node delegates connection_count_changed and sync_status for monitoring. - Logs for P2P subsystem are configurable via logging appenders. +- **Stale Sync Logging**: Automatic detection and recovery actions are logged with timing information. +- **Trusted Peer Logging**: Automatic registration and soft-ban duration logging. **Section sources** - [p2p_plugin.cpp:403-405](file://plugins/p2p/p2p_plugin.cpp#L403-L405) - [config.ini:112-136](file://share/vizd/config/config.ini#L112-L136) +- [node.cpp:5259-5262](file://libraries/network/node.cpp#L5259-L5262) ## Conclusion -The VIZ CPP Node P2P stack provides a robust, encrypted transport with configurable connection limits, bandwidth monitoring, and seed-driven discovery. The recent changes to standardize port 2001 for mainnet deployments and integrate seed node management through config.ini simplify configuration and improve consistency. Correctly setting listen endpoints, ports, and connection caps, combined with appropriate firewall and NAT configuration, enables reliable operation across private, testnet, and mainnet environments. Monitoring and tuning of rate limits and inventory sizes further improves resilience under load. +The VIZ CPP Node P2P stack provides a robust, encrypted transport with configurable connection limits, bandwidth monitoring, and seed-driven discovery. The recent additions of stale sync detection significantly enhance network reliability by automatically recovering from network stalls through three sequential recovery actions: resetting sync from the last irreversible block, resynchronizing with connected peers, and reconnecting seed peers. The trusted peer support system further enhances network bootstrapping capabilities with reduced soft-ban duration (5 minutes vs 1 hour) and automatic integration with the snapshot plugin. The standardization of port 2001 for mainnet deployments and integration of seed node management through config.ini simplify configuration and improve consistency. The stale sync detection feature provides a lightweight, automatic recovery mechanism that complements the snapshot plugin's more comprehensive recovery approach. Correctly setting listen endpoints, ports, connection caps, trusted peer configurations, and stale sync detection parameters, combined with appropriate firewall and NAT configuration, enables reliable operation across private, testnet, and mainnet environments. Monitoring and tuning of rate limits, inventory sizes, trusted peer benefits, and stale sync detection further improves resilience under load. ## Appendices @@ -453,11 +636,17 @@ The VIZ CPP Node P2P stack provides a robust, encrypted transport with configura - p2p-max-connections: Maximum number of simultaneous connections. - p2p-seed-node: Remote peer IP:port to bootstrap discovery (configured in config.ini). - p2p-force-validate: Force validation of all transactions. +- **p2p-stale-sync-detection**: Enable automatic recovery from network stalls (default: false). +- **p2p-stale-sync-timeout-seconds**: Timeout in seconds before stale sync detection triggers recovery (default: 120). +- **trusted-snapshot-peer**: Trusted peer IP:port for reduced soft-ban duration and enhanced bootstrapping. +- **sync-snapshot-from-trusted-peer**: Enable automatic snapshot-based bootstrapping from trusted peers. -**Updated** Mainnet now uses standardized port 2001 and integrated seed node configuration. +**Updated** Mainnet now uses standardized port 2001 and integrated seed node configuration, plus new stale sync detection system with two configuration options and enhanced trusted peer support system. **Section sources** - [p2p_plugin.cpp:467-482](file://plugins/p2p/p2p_plugin.cpp#L467-L482) - [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) - [config_testnet.ini:1-132](file://share/vizd/config/config_testnet.ini#L1-L132) -- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) \ No newline at end of file +- [config_witness.ini:1-107](file://share/vizd/config/config_witness.ini#L1-L107) +- [config.ini:96-101](file://share/vizd/config/config.ini#L96-L101) +- [node.cpp:592-600](file://libraries/network/node.cpp#L592-L600) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/P2p Plugin.md b/.qoder/repowiki/en/content/P2p Plugin.md new file mode 100644 index 0000000000..ac9f2810b7 --- /dev/null +++ b/.qoder/repowiki/en/content/P2p Plugin.md @@ -0,0 +1,472 @@ +# P2P Plugin + + +**Referenced Files in This Document** +- [p2p_plugin.hpp](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp) +- [p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) +- [node.hpp](file://libraries/network/include/graphene/network/node.hpp) +- [peer_connection.hpp](file://libraries/network/include/graphene/network/peer_connection.hpp) +- [peer_database.hpp](file://libraries/network/include/graphene/network/peer_database.hpp) +- [core_messages.hpp](file://libraries/network/include/graphene/network/core_messages.hpp) +- [message.hpp](file://libraries/network/include/graphene/network/message.hpp) +- [config.hpp](file://libraries/network/include/graphene/network/config.hpp) +- [node.cpp](file://libraries/network/node.cpp) +- [CMakeLists.txt](file://plugins/p2p/CMakeLists.txt) +- [config.ini](file://share/vizd/config/config.ini) + + +## Table of Contents +1. [Introduction](#introduction) +2. [Project Structure](#project-structure) +3. [Core Components](#core-components) +4. [Architecture Overview](#architecture-overview) +5. [Detailed Component Analysis](#detailed-component-analysis) +6. [Dependency Analysis](#dependency-analysis) +7. [Performance Considerations](#performance-considerations) +8. [Troubleshooting Guide](#troubleshooting-guide) +9. [Conclusion](#conclusion) + +## Introduction + +The P2P (Peer-to-Peer) Plugin is a critical component of the VIZ blockchain node that enables decentralized communication between nodes in the network. This plugin provides the foundation for blockchain synchronization, transaction propagation, and peer discovery mechanisms that keep the entire network synchronized and functional. + +The plugin implements a sophisticated networking layer built on top of the Graphene network library, providing features such as automatic peer discovery, blockchain synchronization protocols, transaction broadcasting, and advanced peer management capabilities including soft-ban mechanisms and connection monitoring. + +## Project Structure + +The P2P plugin follows a modular architecture with clear separation of concerns: + +```mermaid +graph TB +subgraph "P2P Plugin Layer" +P2P[p2p_plugin.hpp/cpp] +Impl[p2p_plugin_impl] +end +subgraph "Network Library" +Node[node.hpp] +PeerConn[peer_connection.hpp] +Messages[core_messages.hpp] +Config[config.hpp] +end +subgraph "Chain Integration" +Chain[chain::plugin] +Database[database.hpp] +end +subgraph "External Dependencies" +AppBase[appbase] +Snapshot[snapshot_plugin] +end +P2P --> Node +P2P --> Chain +P2P --> AppBase +P2P --> Snapshot +Node --> PeerConn +Node --> Messages +Node --> Config +Chain --> Database +``` + +**Diagram sources** +- [p2p_plugin.hpp:18-52](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L18-L52) +- [node.hpp:190-320](file://libraries/network/include/graphene/network/node.hpp#L190-L320) + +**Section sources** +- [p2p_plugin.hpp:1-57](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L1-L57) +- [CMakeLists.txt:1-49](file://plugins/p2p/CMakeLists.txt#L1-L49) + +## Core Components + +### P2P Plugin Interface + +The main plugin class provides a clean interface for managing P2P networking functionality: + +```mermaid +classDiagram +class p2p_plugin { ++set_program_options(cli, cfg) ++plugin_initialize(options) ++plugin_startup() ++plugin_shutdown() ++broadcast_block(block) ++broadcast_block_post_validation(block_id, witness_account, signature) ++broadcast_transaction(tx) ++set_block_production(producing_blocks) +-my : p2p_plugin_impl +} +class p2p_plugin_impl { ++has_item(id) ++handle_block(blk_msg, sync_mode, contained_tx_ids) ++handle_transaction(trx_msg) ++handle_message(message) ++get_block_ids(synopsis, remaining_count, limit) ++get_item(id) ++get_blockchain_synopsis(reference_point, num_blocks) ++sync_status(item_type, item_count) ++connection_count_changed(count) ++get_block_number(block_id) ++get_block_time(block_id) ++get_head_block_id() ++get_chain_id() ++error_encountered(message, error) ++get_blockchain_now() ++p2p_stats_task() ++stale_sync_check_task() +-node : node_ptr +-chain : chain : : plugin& +-seeds : vector[endpoint] +-endpoint : optional[endpoint] +-user_agent : string +-max_connections : uint32 +-force_validate : bool +-block_producer : bool +-stats_enabled : bool +-stats_interval_seconds : uint32 +-_stale_sync_enabled : bool +-_stale_sync_timeout_seconds : uint32 +-_last_block_received_time : time_point +} +p2p_plugin --> p2p_plugin_impl : "owns" +``` + +**Diagram sources** +- [p2p_plugin.hpp:18-52](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L18-L52) +- [p2p_plugin.cpp:49-126](file://plugins/p2p/p2p_plugin.cpp#L49-L126) + +### Network Node Architecture + +The plugin integrates with the underlying network infrastructure through a sophisticated node abstraction: + +```mermaid +classDiagram +class node { ++listen_to_p2p_network() ++connect_to_p2p_network() ++add_node(endpoint) ++connect_to_endpoint(endpoint) ++listen_on_endpoint(endpoint, wait) ++broadcast(message) ++sync_from(item_id, hard_fork_nums) ++resync() ++set_advanced_node_parameters(params) ++set_trusted_peer_endpoints(endpoints) ++get_connected_peers() ++get_connection_count() ++clear_peer_database() ++set_allowed_peers(allowed_peers) +} +class node_delegate { +<> ++has_item(id) ++handle_block(blk_msg, sync_mode, contained_tx_ids) ++handle_transaction(trx_msg) ++handle_message(message) ++get_block_ids(synopsis, remaining_count, limit) ++get_item(id) ++get_blockchain_synopsis(reference_point, num_blocks) ++sync_status(item_type, item_count) ++connection_count_changed(count) ++get_block_number(block_id) ++get_block_time(block_id) ++get_head_block_id() ++get_chain_id() ++error_encountered(message, error) ++get_blockchain_now() +} +class peer_connection { ++send_message(message) ++send_item(item_id) ++close_connection() ++destroy_connection() ++get_remote_endpoint() ++get_total_bytes_sent() ++get_total_bytes_received() ++busy() ++idle() +} +node ..|> node_delegate : "implements" +node --> peer_connection : "manages" +``` + +**Diagram sources** +- [node.hpp:190-320](file://libraries/network/include/graphene/network/node.hpp#L190-L320) +- [node.hpp:60-167](file://libraries/network/include/graphene/network/node.hpp#L60-L167) +- [peer_connection.hpp:79-354](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L354) + +**Section sources** +- [p2p_plugin.hpp:18-52](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L18-L52) +- [node.hpp:190-320](file://libraries/network/include/graphene/network/node.hpp#L190-L320) + +## Architecture Overview + +The P2P plugin architecture implements a layered approach to blockchain networking: + +```mermaid +sequenceDiagram +participant App as Application +participant P2P as P2P Plugin +participant Node as Network Node +participant Peer as Remote Peer +participant Chain as Chain Database +App->>P2P : Initialize plugin +P2P->>Node : Create node instance +P2P->>Node : Load configuration +P2P->>Node : Set delegate (p2p_plugin_impl) +P2P->>Node : Listen on endpoint +P2P->>Node : Connect to seed nodes +Note over P2P,Node : Network initialization complete +Peer->>Node : Connect request +Node->>P2P : handle_message(hello) +P2P->>Node : Accept/reject connection +Node->>Peer : Connection accepted +Peer->>Node : Request blockchain synopsis +Node->>P2P : get_blockchain_synopsis() +P2P->>Chain : Query chain state +P2P->>Node : Return synopsis +Node->>Peer : Send synopsis +Peer->>Node : Request blocks/transactions +Node->>P2P : handle_message(fetch_items) +P2P->>Chain : Fetch items +P2P->>Node : Return items +Node->>Peer : Send items +Peer->>Node : New block/transaction +Node->>P2P : handle_block()/handle_transaction() +P2P->>Chain : Accept/validate block +P2P->>Node : Broadcast to peers +``` + +**Diagram sources** +- [p2p_plugin.cpp:758-823](file://plugins/p2p/p2p_plugin.cpp#L758-L823) +- [node.cpp:1-200](file://libraries/network/node.cpp#L1-L200) + +The architecture provides several key capabilities: + +1. **Automatic Peer Discovery**: The plugin automatically discovers and connects to seed nodes specified in configuration +2. **Blockchain Synchronization**: Implements efficient blockchain synchronization using selective block fetching +3. **Transaction Propagation**: Broadcasts transactions to connected peers with intelligent caching +4. **Peer Management**: Manages peer connections with soft-ban mechanisms and connection limits +5. **Monitoring and Statistics**: Provides comprehensive peer statistics and network health monitoring + +## Detailed Component Analysis + +### Block Validation Protocol + +The P2P plugin implements a sophisticated block validation mechanism that enhances security and prevents malicious attacks: + +```mermaid +flowchart TD +Start([Block Received]) --> ValidateType{"Is block_post_validation_message?"} +ValidateType --> |No| StandardValidation["Standard block validation
via chain.accept_block()"] +ValidateType --> |Yes| ExtractParams["Extract block_id,
witness_account,
signature"] +ExtractParams --> VerifyWitness{"Verify witness exists?"} +VerifyWitness --> |No| RejectBlock["Reject block
(invalid witness)"] +VerifyWitness --> |Yes| VerifySignature["Verify signature
matches witness key"] +VerifySignature --> SignatureValid{"Signature valid?"} +SignatureValid --> |No| RejectBlock +SignatureValid --> |Yes| ApplyValidation["Apply block post-validation
chain.db().apply_block_post_validation()"] +ApplyValidation --> BroadcastBlock["Broadcast block to peers"] +StandardValidation --> BroadcastBlock +RejectBlock --> End([End]) +BroadcastBlock --> End +style RejectBlock fill:#ffcccc +style BroadcastBlock fill:#ccffcc +``` + +**Diagram sources** +- [p2p_plugin.cpp:216-245](file://plugins/p2p/p2p_plugin.cpp#L216-L245) +- [p2p_plugin.cpp:855-865](file://plugins/p2p/p2p_plugin.cpp#L855-L865) + +The block validation protocol includes several security enhancements: + +1. **Witness Signature Verification**: Validates that the block signature matches the claimed witness's public key +2. **Chain ID Consistency**: Ensures blocks belong to the correct blockchain instance +3. **Hard Fork Protection**: Handles different validation requirements across blockchain hard forks +4. **Post-Validation Processing**: Applies additional validation steps after initial acceptance + +### Peer Connection Management + +The plugin manages peer connections through a sophisticated state machine: + +```mermaid +stateDiagram-v2 +[*] --> Disconnected +Disconnected --> Connecting : initiate_connection() +Connecting --> Connected : handshake_success +Connecting --> Disconnected : handshake_failed +Connected --> Negotiating : exchange_hello() +Negotiating --> Operating : negotiation_complete +Negotiating --> Rejected : negotiation_failed +Rejected --> Disconnected : close_connection() +Operating --> Syncing : start_sync() +Syncing --> Operating : sync_complete +Operating --> Closing : close_requested +Closing --> Disconnected : connection_closed +state Operating { +[*] --> NormalOperation +NormalOperation --> Broadcasting : broadcast_message +Broadcasting --> NormalOperation : broadcast_complete +NormalOperation --> Fetching : fetch_item +Fetching --> NormalOperation : item_fetched +} +``` + +**Diagram sources** +- [peer_connection.hpp:82-106](file://libraries/network/include/graphene/network/peer_connection.hpp#L82-L106) + +### Blockchain Synchronization Protocol + +The synchronization protocol efficiently handles blockchain state reconciliation: + +```mermaid +sequenceDiagram +participant Local as Local Node +participant Remote as Remote Peer +participant Chain as Local Chain +Remote->>Local : hello_message +Local->>Remote : connection_accepted_message +Remote->>Local : fetch_blockchain_item_ids_message +Local->>Chain : get_blockchain_synopsis(reference_point, num_blocks) +Chain-->>Local : blockchain synopsis +Local->>Remote : blockchain_item_ids_inventory_message +Remote->>Local : fetch_items_message +Local->>Chain : get_item(item_id) +Chain-->>Local : item data +Local->>Remote : item_message +Note over Local,Remote : Continue until synchronized +``` + +**Diagram sources** +- [core_messages.hpp:188-218](file://libraries/network/include/graphene/network/core_messages.hpp#L188-L218) +- [p2p_plugin.cpp:247-301](file://plugins/p2p/p2p_plugin.cpp#L247-L301) + +**Section sources** +- [p2p_plugin.cpp:129-208](file://plugins/p2p/p2p_plugin.cpp#L129-L208) +- [p2p_plugin.cpp:247-301](file://plugins/p2p/p2p_plugin.cpp#L247-L301) +- [peer_connection.hpp:79-354](file://libraries/network/include/graphene/network/peer_connection.hpp#L79-L354) + +## Dependency Analysis + +The P2P plugin has well-defined dependencies that enable modularity and maintainability: + +```mermaid +graph TB +subgraph "Plugin Dependencies" +P2P[p2p_plugin] +Chain[chain::plugin] +AppBase[appbase] +Snapshot[snapshot_plugin] +end +subgraph "Network Dependencies" +Node[node.hpp] +PeerConn[peer_connection.hpp] +Messages[core_messages.hpp] +PeerDB[peer_database.hpp] +Config[config.hpp] +end +subgraph "Protocol Dependencies" +Block[block.hpp] +Transaction[transaction.hpp] +Types[types.hpp] +end +P2P --> Chain +P2P --> Node +P2P --> AppBase +P2P --> Snapshot +Node --> PeerConn +Node --> Messages +Node --> PeerDB +Node --> Config +Messages --> Block +Messages --> Transaction +Messages --> Types +Chain --> Block +Chain --> Transaction +Chain --> Types +``` + +**Diagram sources** +- [CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [p2p_plugin.cpp:1-13](file://plugins/p2p/p2p_plugin.cpp#L1-L13) + +Key dependency relationships: + +1. **Chain Integration**: Direct dependency on the chain plugin for blockchain state access +2. **Network Foundation**: Relies on the network library for peer communication +3. **Application Framework**: Uses appbase for plugin lifecycle management +4. **Snapshot Coordination**: Integrates with snapshot plugin for trusted peer management + +**Section sources** +- [CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [p2p_plugin.cpp:1-13](file://plugins/p2p/p2p_plugin.cpp#L1-L13) + +## Performance Considerations + +The P2P plugin implements several performance optimization strategies: + +### Connection Management +- **Connection Limits**: Configurable maximum connections to prevent resource exhaustion +- **Soft-Ban Mechanisms**: Automatic peer banning for misbehaving nodes +- **Trusted Peer System**: Reduced soft-ban duration for snapshot-provided trusted peers + +### Network Efficiency +- **Selective Synchronization**: Only fetches missing blockchain data +- **Message Caching**: Prevents redundant message propagation +- **Bandwidth Throttling**: Configurable upload/download limits + +### Monitoring and Diagnostics +- **Periodic Statistics**: Configurable logging intervals for peer statistics +- **Stale Sync Detection**: Automatic recovery from stalled synchronization +- **Connection Health Monitoring**: Real-time peer connection quality metrics + +**Section sources** +- [p2p_plugin.cpp:659-756](file://plugins/p2p/p2p_plugin.cpp#L659-L756) +- [p2p_plugin.cpp:512-649](file://plugins/p2p/p2p_plugin.cpp#L512-L649) + +## Troubleshooting Guide + +### Common Issues and Solutions + +#### Connection Problems +- **Symptom**: Unable to connect to seed nodes +- **Solution**: Verify network connectivity and check firewall settings +- **Configuration**: Review `p2p-seed-node` entries in configuration file + +#### Synchronization Delays +- **Symptom**: Slow blockchain synchronization +- **Solution**: Increase `p2p-max-connections` setting +- **Monitoring**: Enable P2P statistics to identify slow peers + +#### Peer Quality Issues +- **Symptom**: Frequent peer disconnections +- **Solution**: Check network stability and bandwidth limitations +- **Diagnostics**: Monitor peer statistics for connection patterns + +### Configuration Reference + +The P2P plugin supports extensive configuration options: + +| Configuration Option | Description | Default Value | +|---------------------|-------------|---------------| +| `p2p-endpoint` | Local IP and port for incoming connections | 127.0.0.1:9876 | +| `p2p-max-connections` | Maximum incoming connections | 0 (unlimited) | +| `p2p-seed-node` | Seed node endpoints | None | +| `p2p-stats-enabled` | Enable peer statistics logging | true | +| `p2p-stats-interval` | Statistics logging interval (seconds) | 300 | +| `p2p-stale-sync-detection` | Enable stale sync detection | false | +| `p2p-stale-sync-timeout-seconds` | Stale sync timeout | 120 | + +**Section sources** +- [p2p_plugin.cpp:659-683](file://plugins/p2p/p2p_plugin.cpp#L659-L683) +- [config.ini:1-136](file://share/vizd/config/config.ini#L1-L136) + +## Conclusion + +The P2P Plugin represents a sophisticated implementation of blockchain networking infrastructure that provides essential functionality for distributed consensus systems. Its modular architecture, comprehensive peer management, and robust synchronization protocols make it a cornerstone component of the VIZ blockchain ecosystem. + +Key strengths of the implementation include: + +1. **Security Focus**: Advanced block validation and witness verification mechanisms +2. **Performance Optimization**: Efficient synchronization and connection management +3. **Operational Excellence**: Comprehensive monitoring and diagnostic capabilities +4. **Extensibility**: Clean interfaces that support future enhancements + +The plugin's design demonstrates best practices in distributed systems engineering, balancing security, performance, and maintainability while providing the foundation for scalable blockchain networks. \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Plugin System/Plugin System.md b/.qoder/repowiki/en/content/Plugin System/Plugin System.md index 60384a3538..5588d1911a 100644 --- a/.qoder/repowiki/en/content/Plugin System/Plugin System.md +++ b/.qoder/repowiki/en/content/Plugin System/Plugin System.md @@ -12,10 +12,13 @@ - [plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp](file://plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp) - [plugins/account_history/include/graphene/plugins/account_history/plugin.hpp](file://plugins/account_history/include/graphene/plugins/account_history/plugin.hpp) - [plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp) +- [plugins/p2p/CMakeLists.txt](file://plugins/p2p/CMakeLists.txt) +- [plugins/p2p/p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) - [plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp](file://plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp) +- [plugins/snapshot/CMakeLists.txt](file://plugins/snapshot/CMakeLists.txt) +- [plugins/snapshot/plugin.cpp](file://plugins/snapshot/plugin.cpp) - [plugins/debug_node/plugin.cpp](file://plugins/debug_node/plugin.cpp) -- [plugins/p2p/p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) - [libraries/protocol/include/graphene/protocol/operations.hpp](file://libraries/protocol/include/graphene/protocol/operations.hpp) - [libraries/chain/chain_evaluator.cpp](file://libraries/chain/chain_evaluator.cpp) - [libraries/chain/database.cpp](file://libraries/chain/database.cpp) @@ -32,10 +35,10 @@ ## Update Summary **Changes Made** -- Enhanced P2P plugin with improved type safety in IP address handling using static_cast() -- Updated peer statistics logging to use explicit type conversion for peer_info.host.get_address() -- Added documentation about the static_cast() fix for preventing implicit type conversion issues -- Updated troubleshooting guidance to include type safety considerations for IP address handling +- Enhanced P2P plugin integration with snapshot plugin through CMake linking and cross-plugin functionality +- Added automatic trusted peer endpoint registration from snapshot plugin to P2P layer +- Updated P2P plugin to utilize snapshot plugin's trusted peer management for reduced soft-ban duration +- Improved cross-plugin communication patterns between P2P and snapshot plugins ## Table of Contents 1. [Introduction](#introduction) @@ -45,18 +48,19 @@ 5. [Detailed Component Analysis](#detailed-component-analysis) 6. [DLT Mode and Snapshot Integration](#dlt-mode-and-snapshot-integration) 7. [Enhanced P2P Plugin Integration with DLT Mode Awareness](#enhanced-p2p-plugin-integration-with-dlt-mode-awareness) -8. [Type Safety Improvements in IP Address Handling](#type-safety-improvements-in-ip-address-handling) -9. [Dependency Analysis](#dependency-analysis) -10. [Plugin Deprecation Status and Maintenance Practices](#plugin-deprecation-status-and-maintenance-practices) -11. [Performance Considerations](#performance-considerations) -12. [Troubleshooting Guide](#troubleshooting-guide) -13. [Conclusion](#conclusion) -14. [Appendices](#appendices) +8. [Cross-Plugin Integration: P2P and Snapshot](#cross-plugin-integration-p2p-and-snapshot) +9. [Type Safety Improvements in IP Address Handling](#type-safety-improvements-in-ip-address-handling) +10. [Dependency Analysis](#dependency-analysis) +11. [Plugin Deprecation Status and Maintenance Practices](#plugin-deprecation-status-and-maintenance-practices) +12. [Performance Considerations](#performance-considerations) +13. [Troubleshooting Guide](#troubleshooting-guide) +14. [Conclusion](#conclusion) +15. [Appendices](#appendices) ## Introduction This document explains the VIZ C++ Node plugin system architecture, focusing on how the appbase-based framework enables modular functionality, the plugin lifecycle from registration to shutdown, and inter-plugin communication patterns. It documents the built-in plugin ecosystem (40+ plugins) ranging from core blockchain functions to specialized APIs and integrations, including the enhanced snapshot plugin capabilities for DLT (Distributed Ledger Technology) mode operations and integration with rolling block log features. -**Updated** Enhanced with comprehensive DLT mode documentation covering snapshot-based node bootstrap, rolling block log integration, and P2P layer compatibility for distributed ledger deployments. The P2P plugin now includes sophisticated DLT mode awareness with improved error handling and logging capabilities for DLT mode block serving operations, featuring enhanced sync block processing visibility and better synchronization progress monitoring. Recent improvements include enhanced type safety in IP address handling to prevent implicit type conversion issues in peer management code. +**Updated** Enhanced with comprehensive DLT mode documentation covering snapshot-based node bootstrap, rolling block log integration, and P2P layer compatibility for distributed ledger deployments. The P2P plugin now includes sophisticated DLT mode awareness with improved error handling and logging capabilities for DLT mode block serving operations, featuring enhanced sync block processing visibility and better synchronization progress monitoring. Recent improvements include enhanced type safety in IP address handling to prevent implicit type conversion issues in peer management code. **Cross-plugin integration** now enables the P2P plugin to automatically register trusted peer endpoints from the snapshot plugin, improving peer trust management and reducing soft-ban durations for verified snapshot sources. ## Project Structure The plugin system is organized around the appbase application framework and a dedicated plugins directory. Each plugin is a self-contained module that registers APIs, subscribes to chain events, and optionally depends on other plugins. The top-level plugins build script enumerates subdirectories and exposes a runtime-accessible list of available plugins. Built-in plugins are located under libraries/plugins/, while external plugins can be added similarly. @@ -75,6 +79,8 @@ C --> J["Chain Database
chainbase::database"] I --> K["DLT Block Log
dlt_block_log"] G --> L["DLT Mode Integration
P2P Layer"] G --> M["Type Safety Enhancements
IP Address Handling"] +G --> N["Cross-Plugin Integration
Snapshot Trust Management"] +I --> O["Trusted Peer Management
Automatic Endpoint Registration"] ``` **Diagram sources** @@ -88,6 +94,8 @@ G --> M["Type Safety Enhancements
IP Address Handling"] - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:42-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L42-L76) - [libraries/chain/include/graphene/chain/dlt_block_log.hpp:35-72](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L35-L72) - [plugins/p2p/p2p_plugin.cpp:203-257](file://plugins/p2p/p2p_plugin.cpp#L203-L257) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) **Section sources** - [plugins/CMakeLists.txt:1-12](file://plugins/CMakeLists.txt#L1-L12) @@ -99,9 +107,9 @@ G --> M["Type Safety Enhancements
IP Address Handling"] - Webserver Plugin: Starts an HTTP/WebSocket server and dispatches JSON-RPC queries to registered handlers on the app's io_service thread. - Database API Plugin: Exposes read-only database queries via JSON-RPC, including blocks, accounts, balances, and chain metadata. - Account History Plugin: Tracks per-account operation histories and exposes retrieval APIs. -- P2P Plugin: Manages peer-to-peer networking, broadcasting blocks/transactions, and block production controls. **Enhanced** with DLT mode awareness, improved error handling, sophisticated logging for sync block processing, and **improved type safety** in IP address handling. +- P2P Plugin: Manages peer-to-peer networking, broadcasting blocks/transactions, and block production controls. **Enhanced** with DLT mode awareness, improved error handling, sophisticated logging for sync block processing, and **improved type safety** in IP address handling. **Enhanced** with cross-plugin integration for trusted peer management from the snapshot plugin. - Mongo DB Plugin: Integrates with MongoDB for indexing and archival of chain data. -- **Snapshot Plugin**: Enables DLT (Distributed Ledger Technology) mode operations including snapshot creation, loading, P2P snapshot synchronization, and integration with rolling block logs. +- **Snapshot Plugin**: Enables DLT (Distributed Ledger Technology) mode operations including snapshot creation, loading, P2P snapshot synchronization, and integration with rolling block logs. **Enhanced** with trusted peer endpoint management for cross-plugin integration. **Section sources** - [plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp:84-118](file://plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#L84-L118) @@ -121,6 +129,7 @@ The plugin architecture follows appbase conventions: - Shared application services (e.g., chain database). - Signals/slots (Boost.Signals2) for event-driven coordination. - Explicit API calls across plugin boundaries. + - **Enhanced cross-plugin integration** through direct plugin access and shared configuration. ```mermaid sequenceDiagram @@ -130,6 +139,7 @@ participant RPC as "JSON-RPC Plugin" participant DBAPI as "Database API Plugin" participant CHAIN as "Chain Plugin" participant SNAP as "Snapshot Plugin" +participant P2P as "P2P Plugin" Client->>WS : "HTTP/WS JSON-RPC request" WS->>RPC : "Dispatch body" RPC->>DBAPI : "Resolve API name and method" @@ -138,7 +148,8 @@ CHAIN-->>DBAPI : "Database objects" DBAPI-->>RPC : "Response variant" RPC-->>WS : "Formatted JSON-RPC response" WS-->>Client : "HTTP/WS response" -Note over SNAP,CHAIN : "DLT mode : Snapshot plugin manages state
and integrates with rolling block logs" +Note over SNAP,P2P : "Cross-plugin integration :
P2P registers trusted peers
from snapshot plugin" +Note over P2P,CHAIN : "DLT mode : Snapshot plugin manages state
and integrates with rolling block logs" ``` **Diagram sources** @@ -147,6 +158,8 @@ Note over SNAP,CHAIN : "DLT mode : Snapshot plugin manages state
and integra - [plugins/database_api/include/graphene/plugins/database_api/plugin.hpp:179-403](file://plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#L179-L403) - [plugins/chain/include/graphene/plugins/chain/plugin.hpp:88-91](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L88-L91) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:60-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L60-L76) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) ## Detailed Component Analysis @@ -269,6 +282,7 @@ class AccountHistoryPlugin { - **DLT Integration**: Automatically falls back to DLT block log when serving blocks not found in main block log. - **Enhanced Error Handling**: Improved logging and error handling specifically for DLT mode scenarios with sophisticated debug logging capabilities. - **Type Safety Improvements**: Enhanced IP address handling with explicit type conversion using static_cast() to prevent implicit type conversion issues in peer management code. +- **Cross-Plugin Integration**: **Enhanced** with automatic trusted peer endpoint registration from the snapshot plugin for improved peer trust management. ```mermaid classDiagram @@ -281,17 +295,20 @@ class P2PPlugin { +set_block_production(flag) +get_item(item_id) +get_block_ids(synopsis, remaining, limit) ++register_trusted_snapshot_peers() } ``` **Diagram sources** - [plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp:18-52](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L18-L52) - [plugins/p2p/p2p_plugin.cpp:259-277](file://plugins/p2p/p2p_plugin.cpp#L259-L277) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) **Section sources** - [plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp:20-20](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L20-L20) - [plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp:40-49](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L40-L49) - [plugins/p2p/p2p_plugin.cpp:259-277](file://plugins/p2p/p2p_plugin.cpp#L259-L277) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) ### Mongo DB Plugin - Role: Integrates with MongoDB for indexing and archival of chain data. @@ -321,6 +338,8 @@ class MongoDbPlugin { - Serves snapshots to other nodes via TCP protocol - Manages automatic snapshot cleanup and rotation - Integrates with DLT mode for distributed ledger deployments + - **Enhanced** with trusted peer endpoint management for cross-plugin integration + - **Enhanced** with trusted snapshot peer configuration for P2P integration ```mermaid classDiagram @@ -333,14 +352,17 @@ class SnapshotPlugin { +create_snapshot_at(path) +start_server() +download_snapshot_from_peers() ++get_trusted_snapshot_peers() vector } ``` **Diagram sources** - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:42-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L42-L76) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) **Section sources** - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:46-87](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L46-L87) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) ### Plugin Registration and Lifecycle - Registration: Plugins are enumerated by the build system and registered with the application. Built-in plugins are discovered via the plugins directory traversal. @@ -353,7 +375,8 @@ Start(["Application Start"]) --> Discover["Discover Plugins
CMake discovers Discover --> Init["Initialize Plugins
plugin_initialize()"] Init --> Deps["Resolve Dependencies
APPBASE_PLUGIN_REQUIRES"] Deps --> Startup["Startup Phase
plugin_startup()"] -Startup --> Run["Runtime
Serve APIs, handle events"] +Startup --> CrossPlugin["Cross-Plugin Integration
P2P registers trusted peers"] +CrossPlugin --> Run["Runtime
Serve APIs, handle events"] Run --> DLTMode["DLT Mode Detection
Snapshot-based state"] DLTMode --> Run Run --> Shutdown["Shutdown Phase
plugin_shutdown()"] @@ -365,6 +388,7 @@ Shutdown --> End(["Exit"]) - [plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp:84-118](file://plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#L84-L118) - [plugins/chain/include/graphene/plugins/chain/plugin.hpp:36-42](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L36-L42) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:60-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L60-L76) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) **Section sources** - [documentation/plugin.md:11-20](file://documentation/plugin.md#L11-L20) @@ -375,6 +399,7 @@ Shutdown --> End(["Exit"]) - Event Synchronization: Plugins can subscribe to Chain plugin signals (e.g., on_sync) to coordinate startup behavior. - Explicit API Calls: Plugins can call APIs exposed by other plugins via the JSON-RPC registry. - **DLT Mode Coordination**: Snapshot plugin coordinates with Chain plugin for state management and with P2P plugin for snapshot distribution. +- **Enhanced Cross-Plugin Integration**: P2P plugin can directly access snapshot plugin to retrieve trusted peer endpoints for improved peer trust management. ```mermaid sequenceDiagram @@ -382,11 +407,15 @@ participant CHAIN as "Chain Plugin" participant AHIST as "Account History Plugin" participant DBAPI as "Database API Plugin" participant SNAP as "Snapshot Plugin" +participant P2P as "P2P Plugin" CHAIN-->>AHIST : "on_sync signal" AHIST->>CHAIN : "Subscribe to applied_block" CHAIN-->>DBAPI : "Expose database via APIs" CHAIN-->>SNAP : "State management for DLT mode" SNAP->>CHAIN : "Load snapshot state" +P2P->>SNAP : "get_trusted_snapshot_peers()" +SNAP-->>P2P : "Vector of trusted peer endpoints" +P2P->>P2P : "set_trusted_peer_endpoints()" ``` **Diagram sources** @@ -394,6 +423,8 @@ SNAP->>CHAIN : "Load snapshot state" - [plugins/account_history/include/graphene/plugins/account_history/plugin.hpp:77-77](file://plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#L77-L77) - [plugins/database_api/include/graphene/plugins/database_api/plugin.hpp:179-403](file://plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#L179-L403) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:60-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L60-L76) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) **Section sources** - [plugins/chain/include/graphene/plugins/chain/plugin.hpp:88-91](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L88-L91) @@ -677,7 +708,100 @@ The database layer provides comprehensive fallback mechanisms for DLT mode: - [libraries/chain/database.cpp:599-620](file://libraries/chain/database.cpp#L599-L620) - [libraries/chain/database.cpp:623-640](file://libraries/chain/database.cpp#L623-L640) -## Type Safety Improvements in IP Address Handling +## Cross-Plugin Integration: P2P and Snapshot + +### Enhanced P2P Plugin Integration with Snapshot Plugin +The P2P plugin now features enhanced integration with the snapshot plugin through automatic trusted peer endpoint registration and cross-plugin communication. + +**Integration Architecture:** +- **CMake Linking**: P2P plugin now links against the snapshot library (`graphene::snapshot`) +- **Direct Plugin Access**: P2P plugin can directly access snapshot plugin instance +- **Automatic Configuration**: P2P plugin automatically retrieves trusted peer endpoints from snapshot plugin +- **Reduced Soft-Ban Duration**: Trusted snapshot peers receive reduced soft-ban duration (5 minutes vs 1 hour) + +**Implementation Details:** +- P2P plugin searches for snapshot plugin instance during startup +- Retrieves trusted snapshot peer endpoints using `get_trusted_snapshot_peers()` API +- Registers endpoints with P2P node using `set_trusted_peer_endpoints()` +- Applies reduced soft-ban duration for registered trusted peers + +```mermaid +sequenceDiagram +participant SNAP as "Snapshot Plugin" +participant P2P as "P2P Plugin" +participant NODE as "Network Node" +SNAP->>SNAP : "parse trusted-snapshot-peer config" +SNAP->>SNAP : "store trusted endpoints" +P2P->>P2P : "plugin_startup()" +P2P->>SNAP : "find_plugin()" +SNAP-->>P2P : "snapshot plugin instance" +P2P->>SNAP : "get_trusted_snapshot_peers()" +SNAP-->>P2P : "vector trusted endpoints" +P2P->>NODE : "set_trusted_peer_endpoints(endpoints)" +NODE-->>P2P : "trusted peer endpoints registered" +P2P->>P2P : "apply reduced soft-ban (5 min)" +``` + +**Diagram sources** +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [libraries/network/node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) + +**Section sources** +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [plugins/snapshot/plugin.cpp:3039-3045](file://plugins/snapshot/plugin.cpp#L3039-L3045) +- [libraries/network/node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) + +### CMake Integration and Build System Changes +The P2P plugin's CMake configuration has been updated to enable cross-plugin functionality: + +**P2P Plugin CMake Changes:** +- Added `graphene::snapshot` to target_link_libraries +- Enables direct access to snapshot plugin APIs +- Facilitates automatic trusted peer endpoint registration +- Supports enhanced peer trust management + +**Snapshot Plugin CMake (unchanged):** +- Maintains standalone library configuration +- Provides trusted peer management functionality +- Exposes `get_trusted_snapshot_peers()` API for cross-plugin access + +**Build System Benefits:** +- Direct plugin-to-plugin communication without intermediate layers +- Reduced runtime overhead for trusted peer management +- Improved configuration consistency across plugins +- Enhanced maintainability through explicit dependencies + +**Section sources** +- [plugins/p2p/CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [plugins/snapshot/CMakeLists.txt:27-38](file://plugins/snapshot/CMakeLists.txt#L27-L38) + +### Trusted Peer Management Enhancement +The cross-plugin integration enables sophisticated trusted peer management: + +**Configuration Integration:** +- P2P plugin reads `trusted-snapshot-peer` configuration from snapshot plugin +- Automatic endpoint registration eliminates manual configuration duplication +- Consistent trust model across both plugins +- Dynamic trust management based on snapshot plugin configuration + +**Trust Enforcement Benefits:** +- Reduced soft-ban duration for verified snapshot sources (5 minutes vs 1 hour) +- Improved peer reputation management +- Enhanced security through verified snapshot peer sources +- Better resource allocation for trusted snapshot sources + +**Operational Improvements:** +- Automatic discovery of trusted snapshot peers +- Dynamic adjustment of trust levels based on peer behavior +- Enhanced monitoring and logging for trusted peer activities +- Improved network topology optimization + +**Section sources** +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) +- [libraries/network/node.cpp:5254-5274](file://libraries/network/node.cpp#L5254-L5274) + +### Type Safety Improvements in IP Address Handling ### Enhanced Type Safety in Peer Statistics Recent improvements to the P2P plugin include enhanced type safety in IP address handling to prevent implicit type conversion issues in peer management code. @@ -764,7 +888,7 @@ The enhanced type safety extends throughout the network layer: - [libraries/network/core_messages.hpp:333-345](file://libraries/network/core_messages.hpp#L333-L345) ## Dependency Analysis -Plugins declare explicit dependencies using APPBASE_PLUGIN_REQUIRES. The JSON-RPC plugin is a central dependency for most plugins that expose APIs. The Chain plugin is often required by stateful plugins. +Plugins declare explicit dependencies using APPBASE_PLUGIN_REQUIRES. The JSON-RPC plugin is a central dependency for most plugins that expose APIs. The Chain plugin is often required by stateful plugins. **Enhanced** with cross-plugin integration patterns. ```mermaid graph LR @@ -778,6 +902,8 @@ CHAIN --> SNAP["snapshot::plugin"] P2P --> DLT["dlt_block_log"] SNAP --> DLT P2P --> TYPESAFE["Type Safety Enhancements"] +P2P --> CROSSPLUGIN["Cross-Plugin Integration
Snapshot Trust Management"] +SNAP --> TRUSTEDPEERS["Trusted Peer Management
Automatic Endpoint Registration"] ``` **Diagram sources** @@ -790,6 +916,8 @@ P2P --> TYPESAFE["Type Safety Enhancements"] - [plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp:17-19](file://plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#L17-L19) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:44-44](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L44-L44) - [libraries/chain/include/graphene/chain/dlt_block_log.hpp:35-35](file://libraries/chain/include/graphene/chain/dlt_block_log.hpp#L35-L35) +- [plugins/p2p/CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) **Section sources** - [plugins/chain/include/graphene/plugins/chain/plugin.hpp:21-24](file://plugins/chain/include/graphene/plugins/chain/plugin.hpp#L21-L24) @@ -798,6 +926,7 @@ P2P --> TYPESAFE["Type Safety Enhancements"] - [plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp:20-20](file://plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#L20-L20) - [plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp:17-19](file://plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#L17-L19) - [plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp:44-44](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L44-L44) +- [plugins/p2p/CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) ## Plugin Deprecation Status and Maintenance Practices @@ -848,6 +977,7 @@ The debug node plugin maintains backward compatibility by logging warnings and m 3. **Plugin Updates**: Monitor plugin deprecation notices and migrate to maintained alternatives 4. **DLT Mode Adoption**: Consider migrating to DLT mode for improved performance and reduced storage requirements 5. **Type Safety Updates**: Ensure all IP address handling uses explicit type conversion for reliability +6. **Cross-Plugin Integration**: Leverage enhanced P2P-snapshot integration for improved peer trust management #### Monitoring Deprecation Warnings Plugins emit warnings when deprecated features are detected: @@ -861,6 +991,8 @@ Plugins emit warnings when deprecated features are detected: - Validate migration paths before hardfork activation - Test DLT mode configurations for proper snapshot and block log operation - Verify type safety improvements in IP address handling +- **Test cross-plugin integration**: Validate P2P-snapshot integration for trusted peer management +- **Verify CMake linking**: Ensure P2P plugin can access snapshot plugin APIs ### Practical Examples @@ -889,6 +1021,10 @@ dlt-block-log-max-blocks = 100000 # Configure P2P for DLT mode plugin = p2p + +# Configure trusted snapshot peers for enhanced integration +trusted-snapshot-peer = 192.168.1.100:8093 +trusted-snapshot-peer = 192.168.1.101:8093 ``` **Section sources** @@ -908,6 +1044,8 @@ plugin = p2p - **Maintenance Impact**: Deprecated plugins may have reduced performance due to compatibility layers and should be migrated to supported alternatives. - **Sync Block Processing**: Enhanced logging provides better visibility into synchronization progress without impacting performance. - **Type Safety Improvements**: Explicit type conversion adds minimal overhead while preventing runtime errors and improving reliability. +- **Cross-Plugin Integration**: **Enhanced** with minimal overhead for trusted peer management through direct plugin access. +- **CMake Integration**: Linking against snapshot library enables efficient cross-plugin communication without runtime overhead. ## Troubleshooting Guide - Plugin Not Found: @@ -937,6 +1075,12 @@ plugin = p2p - Check for compilation errors related to implicit type conversions - Ensure peer statistics logging displays correct IP addresses - Validate network connectivity and address resolution +- **Cross-Plugin Integration Issues**: + - **P2P-Snapshot Integration**: Verify snapshot plugin is loaded before P2P plugin + - **Trusted Peer Registration**: Check that `trusted-snapshot-peer` configuration is properly parsed + - **CMake Linking**: Ensure P2P plugin links against snapshot library + - **Plugin Access**: Verify direct plugin access functionality works correctly + - **Soft-Ban Duration**: Confirm trusted peers receive reduced soft-ban duration **Section sources** - [documentation/plugin.md:11-20](file://documentation/plugin.md#L11-L20) @@ -944,11 +1088,13 @@ plugin = p2p - [plugins/p2p/p2p_plugin.cpp:499-528](file://plugins/p2p/p2p_plugin.cpp#L499-L528) - [plugins/debug_node/plugin.cpp:124-128](file://plugins/debug_node/plugin.cpp#L124-L128) - [libraries/chain/database.cpp:292-292](file://libraries/chain/database.cpp#L292-L292) +- [plugins/p2p/CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) ## Conclusion The VIZ C++ Node plugin system leverages appbase to deliver a modular, extensible architecture. Plugins integrate seamlessly through JSON-RPC, share the chain database, and coordinate via signals. The template-based development tool accelerates custom plugin creation, while configuration options govern exposure and security. With 40+ built-in plugins spanning core blockchain functionality to specialized integrations, the system supports diverse use cases from public APIs to archival pipelines. -**Updated** The system now includes comprehensive DLT mode support with snapshot-based state management, rolling block log integration, and P2P layer compatibility. The enhanced P2P plugin integration with DLT mode awareness provides improved error handling and logging capabilities for DLT mode block serving operations, featuring sophisticated debug logging for DLT mode scenarios, enhanced sync block processing visibility, and better synchronization progress monitoring. Recent improvements include enhanced type safety in IP address handling using explicit type conversion to prevent implicit type conversion issues in peer management code, further improving the reliability and maintainability of the plugin system. +**Updated** The system now includes comprehensive DLT mode support with snapshot-based state management, rolling block log integration, and P2P layer compatibility. The enhanced P2P plugin integration with DLT mode awareness provides improved error handling and logging capabilities for DLT mode block serving operations, featuring sophisticated debug logging for DLT mode scenarios, enhanced sync block processing visibility, and better synchronization progress monitoring. Recent improvements include enhanced type safety in IP address handling using explicit type conversion to prevent implicit type conversion issues in peer management code, further improving the reliability and maintainability of the plugin system. **Cross-plugin integration** has been significantly enhanced with the P2P plugin's ability to automatically register trusted peer endpoints from the snapshot plugin, improving peer trust management and reducing soft-ban durations for verified snapshot sources through direct plugin access and CMake-based linking. ## Appendices @@ -974,6 +1120,9 @@ The VIZ C++ Node plugin system leverages appbase to deliver a modular, extensibl - `snapshot-dir`: Directory for auto-generated snapshots - **Deprecated Options**: seed-node (use p2p-seed-node), force-validate (use p2p-force-validate), edit-script (use debug-node-edit-script). - **Type Safety Options**: Enhanced IP address handling with explicit type conversion for reliable peer management. +- **Cross-Plugin Integration Options**: + - `trusted-snapshot-peer`: IP:port pairs of trusted snapshot sources for P2P integration + - Enables automatic trusted peer endpoint registration and reduced soft-ban duration **Section sources** - [documentation/plugin.md:11-20](file://documentation/plugin.md#L11-L20) @@ -981,6 +1130,7 @@ The VIZ C++ Node plugin system leverages appbase to deliver a modular, extensibl - [plugins/p2p/p2p_plugin.cpp:499-528](file://plugins/p2p/p2p_plugin.cpp#L499-L528) - [plugins/debug_node/plugin.cpp:124-128](file://plugins/debug_node/plugin.cpp#L124-L128) - [documentation/snapshot-plugin.md:142-164](file://documentation/snapshot-plugin.md#L142-L164) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) ### Appendix C: Deprecation Timeline - Hardfork 4: vote_operation, content_operation, delete_content_operation deprecated @@ -990,10 +1140,13 @@ The VIZ C++ Node plugin system leverages appbase to deliver a modular, extensibl - **Enhanced P2P Integration**: Improved DLT mode awareness with sophisticated error handling and logging - **Sync Block Processing**: Enhanced logging for better synchronization progress visibility - **Type Safety Improvements**: Enhanced IP address handling with explicit type conversion for reliability +- **Cross-Plugin Integration**: **Enhanced** with P2P plugin linking against snapshot library and automatic trusted peer registration **Section sources** - [libraries/protocol/include/graphene/protocol/operations.hpp:14-27](file://libraries/protocol/include/graphene/protocol/operations.hpp#L14-L27) - [libraries/chain/chain_evaluator.cpp:216-216](file://libraries/chain/chain_evaluator.cpp#L216-L216) - [libraries/chain/chain_evaluator.cpp:551-551](file://libraries/chain/chain_evaluator.cpp#L551-L551) - [libraries/chain/chain_evaluator.cpp:1296-1296](file://libraries/chain/chain_evaluator.cpp#L1296-L1296) -- [libraries/chain/database.cpp:292-292](file://libraries/chain/database.cpp#L292-L292) \ No newline at end of file +- [libraries/chain/database.cpp:292-292](file://libraries/chain/database.cpp#L292-L292) +- [plugins/p2p/CMakeLists.txt:27-34](file://plugins/p2p/CMakeLists.txt#L27-L34) +- [plugins/p2p/p2p_plugin.cpp:688-697](file://plugins/p2p/p2p_plugin.cpp#L688-L697) \ No newline at end of file diff --git a/.qoder/repowiki/en/content/Plugin System/Snapshot Plugin System.md b/.qoder/repowiki/en/content/Plugin System/Snapshot Plugin System.md index aef0f8aa1d..b300741fc7 100644 --- a/.qoder/repowiki/en/content/Plugin System/Snapshot Plugin System.md +++ b/.qoder/repowiki/en/content/Plugin System/Snapshot Plugin System.md @@ -17,16 +17,21 @@ - [dlt_block_log.cpp](file://libraries/chain/dlt_block_log.cpp) - [file_mutex.cpp](file://thirdparty/fc/src/interprocess/file_mutex.cpp) - [config.ini](file://share/vizd/config/config.ini) +- [node.cpp](file://libraries/network/node.cpp) +- [node.hpp](file://libraries/network/include/graphene/network/node.hpp) +- [p2p_plugin.cpp](file://plugins/p2p/p2p_plugin.cpp) +- [logger_config.cpp](file://thirdparty/fc/src/log/logger_config.cpp) +- [console_appender.cpp](file://thirdparty/fc/src/log/console_appender.cpp) ## Update Summary **Changes Made** -- Enhanced snapshot creation with comprehensive configuration options including multiple trusted snapshot peers, snapshot scheduling parameters, and serving options -- Added watchdog monitoring system with dedicated server thread for improved reliability and automatic recovery -- Implemented automatic snapshot discovery functionality with --snapshot-auto-latest option -- Enhanced recovery workflow with integrated DLT replay and stalled sync detection -- Added comprehensive anti-spam protection with new configuration options and improved trust enforcement -- Enhanced P2P synchronization with improved peer connection handling and diagnostic tools +- Added comprehensive P2P stale sync detection documentation with detailed explanation of how the system works +- Enhanced watchdog monitoring to work with trusted peer integration +- Updated configuration options to include p2p-stale-sync-detection and p2p-stale-sync-timeout-seconds +- Added troubleshooting guidance for P2P stale sync detection +- Enhanced comparison between P2P stale sync detection and snapshot-based stalled sync detection +- Updated peer-to-peer snapshot synchronization with improved trusted peer handling ## Table of Contents 1. [Introduction](#introduction) @@ -41,21 +46,23 @@ 10. [Integrated Recovery Workflow](#integrated-recovery-workflow) 11. [DLT Replay Integration](#dlt-replay-integration) 12. [Peer-to-Peer Snapshot Synchronization](#peer-to-peer-snapshot-synchronization) -13. [Watchdog and Stalled Sync Detection](#watchdog-and-stalled-sync-detection) -14. [Emergency Consensus Handling](#emergency-consensus-handling) -15. [Enhanced Anti-Spam Protection](#enhanced-anti-spam-protection) -16. [Access Control and Security Mechanisms](#access-control-and-security-mechanisms) -17. [Integration with Chain Plugin](#integration-with-chain-plugin) -18. [Dependency Analysis](#dependency-analysis) -19. [Performance Considerations](#performance-considerations) -20. [Troubleshooting Guide](#troubleshooting-guide) -21. [Conclusion](#conclusion) +13. [Enhanced P2P Integration with Trusted Peers](#enhanced-p2p-integration-with-trusted-peers) +14. [Watchdog and Stalled Sync Detection](#watchdog-and-stalled-sync-detection) +15. [P2P Stale Sync Detection](#p2p-stale-sync-detection) +16. [Emergency Consensus Handling](#emergency-consensus-handling) +17. [Enhanced Anti-Spam Protection](#enhanced-anti-spam-protection) +18. [Access Control and Security Mechanisms](#access-control-and-security-mechanisms) +19. [Integration with Chain Plugin](#integration-with-chain-plugin) +20. [Dependency Analysis](#dependency-analysis) +21. [Performance Considerations](#performance-considerations) +22. [Troubleshooting Guide](#troubleshooting-guide) +23. [Conclusion](#conclusion) ## Introduction The Snapshot Plugin System is a comprehensive solution for VIZ blockchain nodes that enables efficient state synchronization through distributed ledger technology (DLT). This system provides mechanisms for creating, loading, serving, and downloading blockchain state snapshots, significantly reducing bootstrap times and enabling rapid node initialization. -**Updated** The system has been enhanced with comprehensive snapshot plugin configuration supporting multiple trusted snapshot peers, snapshot scheduling parameters, serving options, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, and enhanced anti-spam protection. These enhancements provide robust error handling for recovery scenarios, automatic peer-to-peer snapshot synchronization for empty state nodes, and advanced watchdog mechanisms for DLT mode operation. +**Updated** The system has been enhanced with comprehensive snapshot plugin configuration supporting multiple trusted snapshot peers, snapshot scheduling parameters, serving options, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, enhanced anti-spam protection, and **enhanced P2P integration with automatic trusted peer registration**. These enhancements provide robust error handling for recovery scenarios, automatic peer-to-peer snapshot synchronization for empty state nodes, **automatic registration of trusted peer endpoints with the P2P layer**, and **advanced watchdog mechanisms for DLT mode operation**. The plugin addresses the fundamental challenge of blockchain bootstrapping by allowing nodes to jump directly to a recent state rather than replaying thousands of blocks. This is particularly crucial for VIZ's social media and content platform characteristics, where rapid deployment and scaling are essential. @@ -130,7 +137,16 @@ Deep integration with the VIZ blockchain database ensures seamless state transit #### Watchdog Monitoring Layer **New** Comprehensive watchdog system that monitors server health and automatically restarts dead accept loops to ensure continuous operation. -**Updated** The modular architecture provides enhanced extensibility and maintainability through clear separation of concerns between interface, serialization, network, database, recovery, asynchronous execution, and watchdog components. The recent additions include asynchronous snapshot creation, witness-aware deferral, watchdog mechanisms, automatic snapshot discovery, integrated recovery workflow, and comprehensive error handling. +#### **Enhanced P2P Integration Layer** +**New** Advanced integration with the P2P layer that automatically registers trusted peer endpoints for reduced soft-ban duration, enabling trusted peers to receive 5-minute bans instead of the default 1-hour duration. + +#### **Enhanced Logging Layer** +**New** Comprehensive logging system with ANSI color codes for improved visibility and debugging capabilities across different log levels. + +#### **P2P Stale Sync Detection Layer** +**New** Lightweight recovery mechanism that automatically detects and recovers from network stalls without requiring snapshot downloads, resetting sync from LIB and reconnecting peers. + +**Updated** The modular architecture provides enhanced extensibility and maintainability through clear separation of concerns between interface, serialization, network, database, recovery, asynchronous execution, watchdog, and **enhanced P2P integration** components. The recent additions include asynchronous snapshot creation, witness-aware deferral, watchdog mechanisms, automatic snapshot discovery, integrated recovery workflow, comprehensive error handling, **enhanced P2P integration with trusted peer support**, and **P2P stale sync detection**. **Section sources** - [plugin.hpp:42-76](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L42-L76) @@ -155,53 +171,62 @@ B --> G[Database Manager] B --> H[Recovery Workflow] B --> I[Async Execution Engine] B --> J[Watchdog Monitor] +B --> K[P2P Integration Layer] +B --> L[Enhanced Logging System] +B --> M[P2P Stale Sync Detection] end subgraph "Security Layer" -F --> K[Access Control] -K --> L[Trust Enforcement] -K --> M[Anti-Spam Protection] +F --> N[Access Control] +N --> O[Trust Enforcement] +N --> P[Anti-Spam Protection] end subgraph "Serialization Layer" -E --> N[Object Exporter] -E --> O[Object Importer] -N --> P[JSON Serializer] -O --> Q[Object Constructor] +E --> Q[Object Exporter] +E --> R[Object Importer] +Q --> S[JSON Serializer] +R --> T[Object Constructor] end subgraph "Network Layer" -F --> R[TCP Server] -F --> S[TCP Client] -R --> T[Connection Management] -S --> U[Peer Discovery] +F --> U[TCP Server] +F --> V[TCP Client] +U --> W[Connection Management] +V --> X[Peer Discovery] end subgraph "Database Layer" -G --> V[Chainbase Integration] -G --> W[Fork Database] -V --> X[Object Indexes] -W --> Y[Block Validation] +G --> Y[Chainbase Integration] +G --> Z[Fork Database] +Y --> AA[Object Indexes] +Z --> AB[Block Validation] end subgraph "Storage Layer" -P --> Z[File System] -Q --> Z -Z --> AA[Snapshot Files] +S --> AC[File System] +T --> AC +AC --> AD[Snapshot Files] end subgraph "Recovery Layer" -H --> AB[DLT Replay Engine] -H --> AC[Automatic Discovery] -H --> AD[Error Handling] -AB --> AE[Block Log Integration] -AC --> AF[Peer Synchronization] -AD --> AG[Diagnostic Tools] +H --> AE[DLT Replay Engine] +H --> AF[Automatic Discovery] +H --> AG[Error Handling] +AE --> AH[Block Log Integration] +AF --> AI[Peer Synchronization] +AG --> AJ[Diagnostic Tools] end subgraph "Reliability Layer" -R --> AH[Watchdog Mechanism] -AH --> AI[Dedicated Server Thread] -AH --> AJ[Stalled Sync Detection] -I --> AK[Dedicated Snapshot Thread] -I --> AL[Async Snapshot Guard] -end +U --> AK[Watchdog Mechanism] +AK --> AL[Dedicated Server Thread] +AK --> AM[Stalled Sync Detection] +I --> AN[Dedicated Snapshot Thread] +I --> AO[Async Snapshot Guard] +K --> AP[Trusted Peer Registration] +K --> AQ[Soft-Ban Duration Management] +L --> AR[ANSI Color Codes] +L --> AS[Level-Based Coloring] +M --> AT[LIB Reset Mechanism] +M --> AU[Peer Reconnection] +M --> AV[Seed Node Management] ``` -**Updated** The architecture emphasizes separation of concerns with clear boundaries between serialization, networking, database operations, security controls, recovery workflows, asynchronous execution, and watchdog monitoring. The modular design enables independent development and testing of each component while maintaining system coherence. Recent enhancements include integrated recovery workflow, DLT replay integration, automatic snapshot discovery, comprehensive watchdog mechanisms, asynchronous execution system, and enhanced error handling. +**Updated** The architecture emphasizes separation of concerns with clear boundaries between serialization, networking, database operations, security controls, recovery workflows, asynchronous execution, watchdog monitoring, and **enhanced P2P integration**. The modular design enables independent development and testing of each component while maintaining system coherence. Recent enhancements include integrated recovery workflow, DLT replay integration, automatic snapshot discovery, comprehensive watchdog mechanisms, asynchronous execution system, enhanced error handling, **enhanced P2P integration with trusted peer support**, and **P2P stale sync detection**. **Diagram sources** - [plugin.cpp:675-780](file://plugins/snapshot/plugin.cpp#L675-L780) @@ -242,7 +267,7 @@ FileSys-->>Plugin : success Plugin-->>CLI : completion_status ``` -**Updated** The creation process handles over 30 different object types, from critical singleton objects to optional metadata. Each object type receives specialized treatment based on its memory layout and data structure complexity, demonstrating the modular architecture's flexibility. The recent enhancements include witness-aware deferral to prevent missed block production slots, improved anti-spam protection, integrated recovery workflow capabilities, and asynchronous execution system that prevents read-lock timeouts for API and P2P threads. +**Updated** The creation process handles over 30 different object types, from critical singleton objects to optional metadata. Each object type receives specialized treatment based on its memory layout and data structure complexity, demonstrating the modular architecture's flexibility. The recent enhancements include witness-aware deferral to prevent missed block production slots, improved anti-spam protection, integrated recovery workflow capabilities, asynchronous execution system that prevents read-lock timeouts for API and P2P threads, and **enhanced P2P integration with automatic trusted peer endpoint registration**. **Diagram sources** - [plugin.cpp:885-987](file://plugins/snapshot/plugin.cpp#L885-L987) @@ -251,7 +276,7 @@ Plugin-->>CLI : completion_status ### Snapshot Loading and Validation -Snapshot loading implements rigorous validation and reconstruction procedures: +Snapshot loading implements rigorous validation and reconstruction procedures with enhanced memory management: ```mermaid flowchart TD @@ -272,7 +297,7 @@ SeedForkDB --> PromoteLIB["Promote LIB to Head Block"] PromoteLIB --> Complete([Load Complete]) ``` -**Updated** The loading process includes extensive validation steps to ensure data integrity and compatibility with the current node configuration, showcasing the robustness of the modular design. Recent improvements include enhanced LIB promotion for DLT mode, improved fork database seeding for reliable P2P synchronization, integrated recovery workflow integration, and comprehensive error handling for unlinkable_block_exception scenarios. +**Updated** The loading process includes extensive validation steps to ensure data integrity and compatibility with the current node configuration, showcasing the robustness of the modular design. Recent improvements include enhanced LIB promotion for DLT mode, improved fork database seeding for reliable P2P synchronization, integrated recovery workflow integration, comprehensive error handling for unlinkable_block_exception scenarios, comprehensive object clearing for hot-reload scenarios, and **enhanced P2P integration with automatic trusted peer endpoint registration**. **Diagram sources** - [plugin.cpp:1046-1288](file://plugins/snapshot/plugin.cpp#L1046-L1288) @@ -320,7 +345,7 @@ end Note over Client,Server : Connection Closed ``` -**Updated** The protocol includes sophisticated anti-spam protection mechanisms, trust enforcement, and detailed denial reasons. The security layer provides comprehensive access control with specific reason codes for different violation types. Recent enhancements include watchdog mechanisms for server reliability, improved peer selection algorithms, integrated recovery workflow support, and enhanced error handling for connection timeouts and failures. +**Updated** The protocol includes sophisticated anti-spam protection mechanisms, trust enforcement, and detailed denial reasons. The security layer provides comprehensive access control with specific reason codes for different violation types. Recent enhancements include watchdog mechanisms for server reliability, improved peer selection algorithms, integrated recovery workflow support, enhanced error handling for connection timeouts and failures, and **dual-tier soft-ban system with automatic trusted peer endpoint registration**. **Diagram sources** - [plugin.cpp:1902-2038](file://plugins/snapshot/plugin.cpp#L1902-L2038) @@ -348,8 +373,10 @@ The plugin supports extensive configuration through both command-line arguments | `dlt-block-log-max-blocks` | uint32 | 100000 | Rolling DLT block log window | | `disable-snapshot-anti-spam` | bool | false | Disable anti-spam checks | | `snapshot-serve-allow-ip` | string[] | [] | Allowed client IPs for serving | +| **`p2p-stale-sync-detection`** | **bool** | **false** | **Enable P2P stale sync detection** | +| **`p2p-stale-sync-timeout-seconds`** | **uint32** | **120** | **Timeout for P2P stale sync detection** | -**Updated** The configuration system now includes new options for enhanced anti-spam protection, automatic snapshot discovery, integrated recovery workflow, and watchdog monitoring. The `snapshot-auto-latest` option enables automatic discovery of the latest snapshot in the specified directory, while `replay-from-snapshot` provides comprehensive recovery mode functionality. +**Updated** The configuration system now includes new options for enhanced anti-spam protection, automatic snapshot discovery, integrated recovery workflow, watchdog monitoring, and **enhanced P2P integration with trusted peer support**. The `snapshot-auto-latest` option enables automatic discovery of the latest snapshot in the specified directory, while `replay-from-snapshot` provides comprehensive recovery mode functionality, and `trusted-snapshot-peer` enables **automatic registration of trusted peer endpoints with the P2P layer**. **The new P2P stale sync detection options provide lightweight recovery from network stalls without requiring snapshot downloads**. **Section sources** - [plugin.cpp:2473-2510](file://plugins/snapshot/plugin.cpp#L2473-L2510) @@ -739,6 +766,73 @@ The peer-to-peer synchronization system includes several key improvements: - [plugin.cpp:2976-3009](file://plugins/snapshot/plugin.cpp#L2976-L3009) - [plugin.cpp:2468-2570](file://plugins/snapshot/plugin.cpp#L2468-L2570) +## Enhanced P2P Integration with Trusted Peers + +**New** The snapshot plugin now provides **enhanced P2P integration with trusted peer support** through automatic registration of trusted peer endpoints with the P2P layer, enabling **dual-tier soft-ban system** where trusted peers receive 5-minute bans instead of the default 1-hour duration. + +### Automatic Trusted Peer Endpoint Registration + +The enhanced P2P integration provides seamless trusted peer endpoint registration: + +```mermaid +sequenceDiagram +participant SnapPlug as Snapshot Plugin +participant P2PPlug as P2P Plugin +participant NetNode as Network Node +participant Peer as Trusted Peer +SnapPlug->>P2PPlug : get_trusted_snapshot_peers() +P2PPlug->>SnapPlug : trusted_eps (IP : port list) +P2PPlug->>NetNode : set_trusted_peer_endpoints(trusted_eps) +NetNode->>NetNode : Parse IP addresses from endpoints +NetNode->>NetNode : Store as uint32_t raw IPs +NetNode->>Peer : Soft-ban Duration Check +Peer-->>NetNode : is_trusted_peer(peer)? +alt Trusted Peer +NetNode->>Peer : 5-minute soft-ban (TRUSTED_SOFT_BAN_DURATION_SEC) +else Untrusted Peer +NetNode->>Peer : 1-hour soft-ban (SOFT_BAN_DURATION_SEC) +end +``` + +### Dual-Tier Soft-Ban System + +The enhanced P2P integration implements a comprehensive dual-tier soft-ban system: + +#### Soft-Ban Duration Constants +- **Default Soft-Ban Duration**: 3600 seconds (1 hour) for untrusted peers +- **Trusted Peer Soft-Ban Duration**: 300 seconds (5 minutes) for trusted peers +- **Automatic Application**: Soft-ban duration determined by peer trust status + +#### Trusted Peer Detection +- **Endpoint Parsing**: Extracts IP addresses from "host:port" endpoint strings +- **Raw IP Storage**: Stores trusted peer IPs as 32-bit integers for O(1) lookup +- **Dynamic Updates**: Supports runtime updates to trusted peer lists + +#### Enhanced P2P Integration Features + +The enhanced P2P integration includes several key improvements: + +#### Automatic Registration Process +- **Plugin Discovery**: P2P plugin automatically discovers snapshot plugin +- **Endpoint Retrieval**: Retrieves trusted snapshot peer endpoints +- **Registration Automation**: Registers endpoints with network node automatically + +#### Reduced Soft-Ban Duration Benefits +- **Faster Recovery**: Trusted peers recover from soft-bans in 5 minutes instead of 1 hour +- **Improved Reliability**: Better handling of legitimate snapshot requests from trusted peers +- **Network Efficiency**: Reduced downtime for trusted peers during snapshot operations + +#### Enhanced Trust Enforcement +- **Consistent Application**: Soft-ban duration applies consistently across all P2P operations +- **Performance Optimization**: O(1) trust lookup using raw IP addresses +- **Scalability**: Efficient handling of large numbers of trusted peers + +**Section sources** +- [p2p_plugin.cpp:689-697](file://plugins/p2p/p2p_plugin.cpp#L689-L697) +- [node.cpp:5241-5274](file://libraries/network/node.cpp#L5241-L5274) +- [node.hpp:284-290](file://libraries/network/include/graphene/network/node.hpp#L284-L290) +- [plugin.hpp:86-88](file://plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#L86-L88) + ## Watchdog and Stalled Sync Detection **Updated** The snapshot plugin now includes comprehensive watchdog mechanisms and stalled sync detection for DLT mode, ensuring server reliability and continuous operation through automatic monitoring and recovery. @@ -817,6 +911,55 @@ The watchdog and stalled sync detection include several key improvements: - [plugin.cpp:1814-1862](file://plugins/snapshot/plugin.cpp#L1814-L1862) - [plugin.cpp:772-785](file://plugins/snapshot/plugin.cpp#L772-L785) +## P2P Stale Sync Detection + +**New** The P2P plugin provides a lightweight recovery mechanism that automatically detects and recovers from network stalls without requiring snapshot downloads. This complements the snapshot plugin's stalled sync detection by providing immediate recovery for temporary network issues. + +### How It Works + +When enabled, the P2P plugin tracks the last time a block was received via the network. A background task checks every 30 seconds whether the elapsed time exceeds the configured timeout. If a stall is detected, the node performs three recovery actions in sequence: + +1. **Reset sync from LIB** — The P2P layer's sync start point is reset to the last irreversible block (LIB). This ensures the node resumes from a safe, fork-proof position instead of potentially chasing a dead fork. +2. **Resync with connected peers** — The node explicitly restarts synchronization with all currently connected peers by sending fresh `fetch_blockchain_item_ids_message` requests. +3. **Reconnect seed peers** — All seed nodes from `p2p-seed-node` config are re-added to the connection queue and reconnection is attempted for any that were disconnected. + +This is complementary to the snapshot plugin's stalled sync detection (which downloads a new snapshot). The P2P stale recovery is faster and less disruptive — it only adjusts sync state and reconnects peers, without requiring any state reload. + +### Configuration + +```ini +# Enable P2P stale sync detection (default: false) +p2p-stale-sync-detection = true + +# Timeout in seconds before recovery triggers (default: 120 = 2 minutes) +p2p-stale-sync-timeout-seconds = 120 +``` + +### Use Cases + +- **Temporary network partition**: When peers become unreachable for short periods, the node automatically recovers without manual intervention. +- **Peer disconnections**: If connected peers disconnect unexpectedly, the node can quickly reconnect and resume synchronization. +- **Initial sync delays**: During heavy network traffic or node startup, the node can recover from temporary stalls. + +### Comparison with Snapshot Stalled Sync Detection + +| Feature | P2P Stale Sync | Snapshot Stalled Sync | +|---------|---------------|----------------------| +| Plugin | P2P | Snapshot | +| Trigger | No blocks received for timeout | No blocks received for timeout | +| Recovery action | Reset sync + reconnect peers | Download newer snapshot + reload state | +| Timeout default | 120 seconds | 5 minutes | +| Use case | Temporary network partition, peer disconnections | Node far behind, peers lack old blocks | +| DLT mode | Works for all nodes | Designed for DLT mode | + +Both can be enabled independently. For DLT nodes, the snapshot detection provides deeper recovery (fresh state), while P2P detection handles transient connectivity issues without state reload. + +**Section sources** +- [snapshot-plugin.md:339-374](file://documentation/snapshot-plugin.md#L339-L374) +- [p2p_plugin.cpp:585-649](file://plugins/p2p/p2p_plugin.cpp#L585-L649) +- [p2p_plugin.cpp:673-677](file://plugins/p2p/p2p_plugin.cpp#L673-L677) +- [p2p_plugin.cpp:744-755](file://plugins/p2p/p2p_plugin.cpp#L744-L755) + ## Emergency Consensus Handling **Updated** The snapshot plugin now includes comprehensive emergency consensus handling with forward-compatible fields for emergency consensus activation. @@ -913,7 +1056,7 @@ flowchart TD Start([Incoming Connection]) --> CheckTrust{"Allow Only Trusted?"} CheckTrust --> |Yes| ValidateTrust{"IP in Trusted List?"} CheckTrust --> |No| CheckConcurrent{"Concurrent Connections < 5?"} -ValidateTrust --> |No| DenyUntrusted["Send DENY_UNtrusted"] +ValidateTrust --> |No| DenyUntrusted["Send DENY_UNTRUSTED"] ValidateTrust --> |Yes| CheckConcurrent CheckConcurrent --> |No| DenyMaxConnections["Send DENY_MAX_CONNECTIONS"] CheckConcurrent --> |Yes| CheckSession{"Active Sessions < 2/IP?"} @@ -991,7 +1134,7 @@ Chain->>Chain : Continue normal startup The snapshot plugin registers a callback that executes during chain plugin startup to create snapshots after full database load, ensuring proper state capture. ### Enhanced P2P Snapshot Sync Callback -For nodes with empty state, the snapshot plugin registers a callback that downloads and loads snapshots from trusted peers before normal P2P synchronization begins. Enhanced with automatic retry logic, improved peer selection algorithms, and comprehensive error handling. +For nodes with empty state, the snapshot plugin registers a callback that downloads and loads snapshots from trusted peers before normal P2P synchronization begins. Enhanced with automatic retry logic, improved peer selection algorithms, comprehensive error handling, and **automatic trusted peer endpoint registration with the P2P layer**. ### Enhanced Recovery Workflow Integration **New** The chain plugin now includes comprehensive recovery workflow integration that coordinates with the snapshot plugin for automatic recovery from corrupted states using snapshot-based restoration and DLT block log replay. @@ -1030,7 +1173,7 @@ N --> P[Shared Library] end ``` -**Updated** The dependency graph reveals a clean separation between core blockchain functionality and plugin-specific features. The plugin relies on established VIZ infrastructure while maintaining independence from external systems, demonstrating the benefits of the modular architecture. Recent enhancements include watchdog dependencies, enhanced P2P integration, automatic snapshot discovery, comprehensive recovery workflow integration, and asynchronous execution system dependencies. +**Updated** The dependency graph reveals a clean separation between core blockchain functionality and plugin-specific features. The plugin relies on established VIZ infrastructure while maintaining independence from external systems, demonstrating the benefits of the modular architecture. Recent enhancements include watchdog dependencies, enhanced P2P integration, automatic snapshot discovery, comprehensive recovery workflow integration, asynchronous execution system dependencies, and **enhanced P2P integration with trusted peer support**. **Diagram sources** - [CMakeLists.txt:27-38](file://plugins/snapshot/CMakeLists.txt#L27-L38) @@ -1067,7 +1210,24 @@ The snapshot plugin implements several performance optimization strategies throu - Efficient object copying mechanisms handle complex data structures - Automatic cleanup of temporary files and resources -**Updated** The modular architecture enhances performance by enabling independent optimization of each layer while maintaining system cohesion. The watchdog mechanism, enhanced anti-spam protections, automatic snapshot discovery, integrated recovery workflow, asynchronous execution system, and comprehensive error handling are designed to minimize performance impact while providing comprehensive functionality. Recent improvements include dedicated server thread optimizations, DLT replay efficiency, enhanced error handling performance, and witness-aware deferral optimization. +### **Enhanced P2P Integration Performance** +- **Automatic Registration**: Eliminates manual configuration overhead +- **Efficient Lookup**: O(1) trust validation using raw IP addresses +- **Reduced Soft-Ban Impact**: Faster recovery for trusted peers reduces network downtime +- **Optimized Communication**: Streamlined trusted peer endpoint management + +### **Enhanced Logging Performance** +- **ANSI Color Codes**: Provides visual distinction between log levels without performance overhead +- **Level-Based Coloring**: Green for success, orange for warnings, yellow for informational messages +- **Minimal Processing**: Color code injection occurs only when terminal supports color output + +### **P2P Stale Sync Detection Performance** +- **Lightweight Monitoring**: Minimal CPU overhead through efficient background task scheduling +- **LIB Reset Optimization**: Fast sync reset using pre-computed block IDs +- **Selective Peer Reconnection**: Only reconnects seed nodes that were previously connected +- **30-second Check Interval**: Balances responsiveness with minimal resource usage + +**Updated** The modular architecture enhances performance by enabling independent optimization of each layer while maintaining system coherence. The watchdog mechanism, enhanced anti-spam protections, automatic snapshot discovery, integrated recovery workflow, asynchronous execution system, comprehensive error handling, **enhanced P2P integration with trusted peer support**, and **P2P stale sync detection** are designed to minimize performance impact while providing comprehensive functionality. Recent improvements include dedicated server thread optimizations, DLT replay efficiency, enhanced error handling performance, witness-aware deferral optimization, **efficient dual-tier soft-ban system implementation**, and **optimized P2P stale sync detection with minimal overhead**. ### Enhanced Security Performance Considerations - Access control checks are performed efficiently using hash maps for IP lookups @@ -1076,6 +1236,9 @@ The snapshot plugin implements several performance optimization strategies throu - Watchdog mechanism operates with minimal CPU overhead through efficient monitoring - Recovery workflow includes performance-optimized snapshot validation and checksum verification - Asynchronous execution system minimizes main thread blocking time +- **Enhanced P2P integration provides efficient trust validation with O(1) lookup performance** +- **Enhanced logging system provides efficient colored output with minimal performance impact** +- **P2P stale sync detection operates with minimal overhead through optimized background tasks** ## Troubleshooting Guide @@ -1153,7 +1316,41 @@ The snapshot plugin implements several performance optimization strategies throu - **Cause**: Client exceeded 6 connections per hour limit - **Solution**: Wait for rate limit window to reset or reduce connection frequency -### Enhanced Diagnostic Tools +**Enhanced P2P Integration Issues** +- **Symptom**: Trusted peers still receiving 1-hour soft-bans instead of 5-minute soft-bans +- **Cause**: P2P plugin not properly registering trusted peer endpoints +- **Solution**: Verify `trusted-snapshot-peer` configuration and P2P plugin startup logs + +**Enhanced Trusted Peer Registration Issues** +- **Symptom**: P2P plugin fails to register trusted peer endpoints +- **Cause**: Snapshot plugin not providing trusted peer list or P2P plugin startup order issues +- **Solution**: Check snapshot plugin configuration and verify P2P plugin initialization sequence + +**Enhanced Snapshot Directory Creation Issues** +- **Symptom**: Snapshot creation fails with directory not found errors +- **Cause**: Automatic directory creation not working or permission issues +- **Solution**: Verify snapshot directory permissions and manual creation if needed + +**Enhanced Logging Color Issues** +- **Symptom**: Log messages appear without color codes +- **Cause**: Terminal not supporting ANSI color codes or color output disabled +- **Solution**: Check terminal capabilities or disable color output in configuration + +**Enhanced P2P Stale Sync Detection Issues** +- **Symptom**: P2P stale sync detection not triggering recovery actions +- **Cause**: Timeout too low or P2P plugin not properly tracking last block received time +- **Solution**: Increase `p2p-stale-sync-timeout-seconds`, verify P2P plugin initialization + +- **Symptom**: Recovery actions not completing successfully +- **Cause**: Peer reconnection failures or LIB reset issues +- **Solution**: Check peer connectivity, verify LIB availability, review P2P plugin logs + +**Enhanced Snapshot Stalled Sync Detection Issues** +- **Symptom**: Snapshot stalled sync detection not finding newer snapshots +- **Cause**: Trusted peers not providing newer snapshots or network connectivity issues +- **Solution**: Verify trusted peer configuration, check snapshot availability, review network connectivity + +**Enhanced Diagnostic Tools** The plugin includes comprehensive enhanced diagnostic capabilities: @@ -1165,8 +1362,12 @@ The plugin includes comprehensive enhanced diagnostic capabilities: - **Recovery Workflow Diagnostics**: Comprehensive logging for recovery process monitoring - **DLT Replay Status**: Real-time monitoring of DLT replay progress and status - **Asynchronous Execution Monitoring**: Tracks snapshot creation progress and thread health +- **Enhanced P2P Integration Diagnostics**: Monitors trusted peer endpoint registration and soft-ban duration application +- **Snapshot Directory Management**: Monitors automatic directory creation and cleanup processes +- **Enhanced Logging Diagnostics**: Monitors ANSI color code application and terminal compatibility +- **P2P Stale Sync Detection Diagnostics**: Monitors LIB reset, peer reconnection, and seed node management -**Updated** The modular architecture provides enhanced diagnostic capabilities through separate layers for serialization, networking, database operations, security controls, recovery workflows, asynchronous execution, and watchdog monitoring, enabling more precise troubleshooting. Recent improvements include watchdog monitoring, enhanced P2P fallback diagnostics, emergency consensus status tracking, comprehensive recovery workflow diagnostics, DLT replay status monitoring, and asynchronous execution health monitoring. +**Updated** The modular architecture provides enhanced diagnostic capabilities through separate layers for serialization, networking, database operations, security controls, recovery workflows, asynchronous execution, watchdog monitoring, and **enhanced P2P integration**. Recent improvements include watchdog monitoring, enhanced P2P fallback diagnostics, emergency consensus status tracking, comprehensive recovery workflow diagnostics, DLT replay status monitoring, asynchronous execution health monitoring, **P2P stale sync detection diagnostics**, and **dual-tier soft-ban system diagnostics**. **Section sources** - [plugin.cpp:2294-2464](file://plugins/snapshot/plugin.cpp#L2294-L2464) @@ -1176,10 +1377,10 @@ The plugin includes comprehensive enhanced diagnostic capabilities: The Snapshot Plugin System represents a sophisticated solution for blockchain state synchronization that significantly improves the VIZ node bootstrapping experience. Through careful architectural design, comprehensive feature coverage, and robust error handling, it enables efficient deployment and scaling of VIZ-based applications. -**Updated** The recent enhancements with comprehensive snapshot plugin configuration supporting multiple trusted snapshot peers, snapshot scheduling parameters, serving options, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, and enhanced anti-spam protection have significantly strengthened the security, reliability, and resource management capabilities of the snapshot distribution services. +**Updated** The recent enhancements with comprehensive snapshot plugin configuration supporting multiple trusted snapshot peers, snapshot scheduling parameters, serving options, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, enhanced anti-spam protection, and **enhanced P2P integration with trusted peer support** have significantly strengthened the security, reliability, and resource management capabilities of the snapshot distribution services. -Key strengths of the system include its modular architecture, extensive configuration options, built-in performance optimizations, comprehensive security features, automatic snapshot discovery, integrated recovery workflow, DLT replay integration, watchdog monitoring, asynchronous execution system, and comprehensive diagnostic capabilities. The plugin seamlessly integrates with existing VIZ infrastructure while providing powerful new capabilities for state management, peer-to-peer synchronization, automatic recovery from corrupted states, and intelligent witness-aware scheduling. +Key strengths of the system include its modular architecture, extensive configuration options, built-in performance optimizations, comprehensive security features, automatic snapshot discovery, integrated recovery workflow, DLT replay integration, watchdog monitoring, asynchronous execution system, comprehensive diagnostic capabilities, **P2P stale sync detection**, and **automatic trusted peer endpoint registration with dual-tier soft-ban system**. The plugin seamlessly integrates with existing VIZ infrastructure while providing powerful new capabilities for state management, peer-to-peer synchronization, automatic recovery from corrupted states, intelligent witness-aware scheduling, and **efficient P2P integration with trusted peer support**. -The implementation demonstrates best practices in blockchain plugin development, including proper resource management, error handling, user experience considerations, security through layered access control, comprehensive monitoring and recovery capabilities, and asynchronous execution for improved performance. The modular design enables independent development and testing of each component while maintaining system coherence, representing a significant advancement in extensibility and maintainability. +The implementation demonstrates best practices in blockchain plugin development, including proper resource management, error handling, user experience considerations, security through layered access control, comprehensive monitoring and recovery capabilities, asynchronous execution for improved performance, and **automatic P2P integration with trusted peer support**. The modular design enables independent development and testing of each component while maintaining system coherence, representing a significant advancement in extensibility and maintainability. -Future enhancements could focus on additional compression algorithms, enhanced security features, expanded monitoring capabilities, more sophisticated access control policies, improved recovery workflow automation, enhanced DLT replay performance optimization, and advanced witness-aware scheduling algorithms, leveraging the solid foundation provided by the modular architecture with comprehensive asynchronous execution system, witness-aware deferral mechanism, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, and advanced error handling capabilities. \ No newline at end of file +Future enhancements could focus on additional compression algorithms, enhanced security features, expanded monitoring capabilities, more sophisticated access control policies, improved recovery workflow automation, enhanced DLT replay performance optimization, advanced witness-aware scheduling algorithms, **optimized P2P stale sync detection**, and **further optimization of the dual-tier soft-ban system**, leveraging the solid foundation provided by the modular architecture with comprehensive asynchronous execution system, witness-aware deferral mechanism, watchdog monitoring, automatic snapshot discovery, integrated recovery workflow, advanced error handling capabilities, **efficient P2P integration with trusted peer support**, and **lightweight P2P stale sync detection**. \ No newline at end of file diff --git a/.qoder/repowiki/en/meta/repowiki-metadata.json b/.qoder/repowiki/en/meta/repowiki-metadata.json index 733ad54d85..89eba67c6c 100644 --- a/.qoder/repowiki/en/meta/repowiki-metadata.json +++ b/.qoder/repowiki/en/meta/repowiki-metadata.json @@ -1 +1 @@ -{"code_snippets":[{"id":"ab60fe01a1fec05393a76d15a9aa8e3a","path":"libraries/network/include/graphene/network/node.hpp","line_range":"180-355","gmt_create":"2026-04-21T14:56:29.590147+04:00","gmt_modified":"2026-04-21T14:56:29.590147+04:00"},{"id":"ea68169c768566840fc2d9e0d99e2677","path":"libraries/network/node.cpp","line_range":"869-905","gmt_create":"2026-04-21T14:56:29.5906827+04:00","gmt_modified":"2026-04-21T14:56:29.5906827+04:00"},{"id":"3417785bc41a44ea5eadf361ca68f0d3","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"79-354","gmt_create":"2026-04-21T14:56:29.5906827+04:00","gmt_modified":"2026-04-21T14:56:29.5906827+04:00"},{"id":"8b81dbeb1bee070a8dcee7ebdf5ee115","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"104-134","gmt_create":"2026-04-21T14:56:29.5912245+04:00","gmt_modified":"2026-04-21T14:56:29.5912245+04:00"},{"id":"c270b4d292d531283c1b958e3b06084a","path":"libraries/network/include/graphene/network/message.hpp","line_range":"42-114","gmt_create":"2026-04-21T14:56:29.5912245+04:00","gmt_modified":"2026-04-21T14:56:29.5912245+04:00"},{"id":"9242876cabb25f4217fb4545452b9982","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"111-120","gmt_create":"2026-04-21T14:56:29.5912245+04:00","gmt_modified":"2026-04-21T14:56:29.5912245+04:00"},{"id":"f5b227ba8f7657892dae7907e793ad2e","path":"libraries/chain/database.cpp","line_range":"4334-4463","gmt_create":"2026-04-21T14:56:29.6034857+04:00","gmt_modified":"2026-04-21T14:56:29.6034857+04:00"},{"id":"cd5ffed637ea51c3fe32a6d61b347572","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"110-123","gmt_create":"2026-04-21T14:56:29.6034857+04:00","gmt_modified":"2026-04-21T14:56:29.6034857+04:00"},{"id":"9816f67eba1209423b7b960a1ee72ba9","path":"libraries/network/node.cpp","line_range":"952-1047","gmt_create":"2026-04-21T14:56:29.6054877+04:00","gmt_modified":"2026-04-21T14:56:29.6054877+04:00"},{"id":"c7408c979256460bd2f76f51530a0b98","path":"libraries/network/node.cpp","line_range":"1623-1654","gmt_create":"2026-04-21T14:56:29.606485+04:00","gmt_modified":"2026-04-21T14:56:29.606485+04:00"},{"id":"018cbad99438c42c8504bf1adf36f1cf","path":"libraries/network/node.cpp","line_range":"2282-2350","gmt_create":"2026-04-21T14:56:29.606485+04:00","gmt_modified":"2026-04-21T14:56:29.606485+04:00"},{"id":"97ebe7551ae2f4119f273c10b984256f","path":"libraries/network/node.cpp","line_range":"869-931","gmt_create":"2026-04-21T14:56:29.606485+04:00","gmt_modified":"2026-04-21T14:56:29.606485+04:00"},{"id":"812f40fab494300a9bdeb65097f63c08","path":"libraries/network/node.cpp","line_range":"2029-2230","gmt_create":"2026-04-21T14:56:29.6069892+04:00","gmt_modified":"2026-04-21T14:56:29.6069892+04:00"},{"id":"284ac849a6fe2d634214f44a66ed1ddb","path":"libraries/network/node.cpp","line_range":"2232-2250","gmt_create":"2026-04-21T14:56:29.6075044+04:00","gmt_modified":"2026-04-21T14:56:29.6075044+04:00"},{"id":"182bbc38fbfc665b2cf6c71e075204db","path":"libraries/network/node.cpp","line_range":"1400-1621","gmt_create":"2026-04-21T14:56:29.6085517+04:00","gmt_modified":"2026-04-21T14:56:29.6085517+04:00"},{"id":"7d8b28243694bfc562968329e37bb1a2","path":"libraries/network/include/graphene/network/node.hpp","line_range":"79-80","gmt_create":"2026-04-21T14:56:29.6085517+04:00","gmt_modified":"2026-04-21T14:56:29.6085517+04:00"},{"id":"61cf6f7ef7027e695f7ab44c4767b192","path":"libraries/network/node.cpp","line_range":"3117-3199","gmt_create":"2026-04-21T14:56:29.6090735+04:00","gmt_modified":"2026-04-21T14:56:29.6090735+04:00"},{"id":"d08b62fae1f76f1abeb93cd7404a4f20","path":"libraries/network/include/graphene/network/node.hpp","line_range":"200-294","gmt_create":"2026-04-21T14:56:29.6095999+04:00","gmt_modified":"2026-04-21T14:56:29.6095999+04:00"},{"id":"c15eb471ff3b016e8687758aa6678d0e","path":"libraries/network/node.cpp","line_range":"933-950","gmt_create":"2026-04-21T14:56:29.6101258+04:00","gmt_modified":"2026-04-21T14:56:29.6101258+04:00"},{"id":"a47cbb515ce49df1fdcce7196c3b0f32","path":"libraries/network/node.cpp","line_range":"1686-1713","gmt_create":"2026-04-21T14:56:29.6101258+04:00","gmt_modified":"2026-04-21T14:56:29.6101258+04:00"},{"id":"06874635182c0e9a36c989d2e268f6f3","path":"libraries/network/include/graphene/network/node.hpp","line_range":"211-296","gmt_create":"2026-04-21T14:56:29.6106508+04:00","gmt_modified":"2026-04-21T14:56:29.6106508+04:00"},{"id":"9d9b949416295b44550bfd169231f5a0","path":"libraries/network/node.cpp","line_range":"1788-1841","gmt_create":"2026-04-21T14:56:29.6106508+04:00","gmt_modified":"2026-04-21T14:56:29.6106508+04:00"},{"id":"46c95c7b186547fb0f9c8eb86fded801","path":"libraries/network/node.cpp","line_range":"1326-1398","gmt_create":"2026-04-21T14:56:29.6106508+04:00","gmt_modified":"2026-04-21T14:56:29.6106508+04:00"},{"id":"b95bfccf2a07cbaaa5db52e5df0a8997","path":"libraries/network/node.cpp","line_range":"2830-2892","gmt_create":"2026-04-21T14:56:29.6111744+04:00","gmt_modified":"2026-04-21T14:56:29.6111744+04:00"},{"id":"d4c579be914a7829e3743cb552977e39","path":"libraries/network/node.cpp","line_range":"111-217","gmt_create":"2026-04-21T14:56:29.6111744+04:00","gmt_modified":"2026-04-21T14:56:29.6111744+04:00"},{"id":"2edd59e37cc2cae027c83c09eeb3d302","path":"libraries/network/node.cpp","line_range":"3574-3629","gmt_create":"2026-04-21T14:56:29.6116953+04:00","gmt_modified":"2026-04-21T14:56:29.6116953+04:00"},{"id":"f58fbeea9c98375f05895a939c0928ed","path":"libraries/network/node.cpp","line_range":"3436-3458","gmt_create":"2026-04-21T14:56:29.6122195+04:00","gmt_modified":"2026-04-21T14:56:29.6122195+04:00"},{"id":"411e56c99f1343f89464373fe7d53329","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"45","gmt_create":"2026-04-21T14:56:29.6127322+04:00","gmt_modified":"2026-04-21T14:56:29.6127322+04:00"},{"id":"3057d2aa071c269a3a069883f3cc955b","path":"libraries/network/node.cpp","line_range":"3444-3458","gmt_create":"2026-04-21T14:56:29.6127322+04:00","gmt_modified":"2026-04-21T14:56:29.6127322+04:00"},{"id":"f772b22a4e82899d7a7971b13d3f8b90","path":"libraries/network/node.cpp","line_range":"3574-3595","gmt_create":"2026-04-21T14:56:29.6132631+04:00","gmt_modified":"2026-04-21T14:56:29.6132631+04:00"},{"id":"81df0fc28bc8e44e90b7a3d9e4b298de","path":"libraries/network/node.cpp","line_range":"3436-3449","gmt_create":"2026-04-21T14:56:29.6132631+04:00","gmt_modified":"2026-04-21T14:56:29.6132631+04:00"},{"id":"2b098b347f244acd11eab5745a409ec5","path":"libraries/network/node.cpp","line_range":"3428-3449","gmt_create":"2026-04-21T14:56:29.6137828+04:00","gmt_modified":"2026-04-21T14:56:29.6137828+04:00"},{"id":"88f188563f773540713889bb386294c3","path":"libraries/chain/fork_database.cpp","line_range":"260-262","gmt_create":"2026-04-21T14:56:29.6137828+04:00","gmt_modified":"2026-04-21T14:56:29.6137828+04:00"},{"id":"8cd8aa215e81d5e59c0db1c41ed82144","path":"libraries/chain/fork_database.cpp","line_range":"80-87","gmt_create":"2026-04-21T14:56:29.6143007+04:00","gmt_modified":"2026-04-21T14:56:29.6143007+04:00"},{"id":"e8f818b14888097a73d7faea83c8e881","path":"libraries/network/node.cpp","line_range":"2251-2280","gmt_create":"2026-04-21T14:56:29.616469+04:00","gmt_modified":"2026-04-21T14:56:29.616469+04:00"},{"id":"6f3a3b5f4539771fa1c21ef11a081a35","path":"libraries/network/node.cpp","line_range":"2137-2168","gmt_create":"2026-04-21T14:56:29.616469+04:00","gmt_modified":"2026-04-21T14:56:29.616469+04:00"},{"id":"760711bb9fdeadb5b514857ca08d0ae1","path":"libraries/chain/database.cpp","line_range":"4455-4460","gmt_create":"2026-04-21T14:56:29.6169829+04:00","gmt_modified":"2026-04-21T14:56:29.6169829+04:00"},{"id":"08825a3b18d6c21fd52a764ba6cc0b22","path":"libraries/chain/database.cpp","line_range":"1204-1270","gmt_create":"2026-04-21T14:57:03.8894602+04:00","gmt_modified":"2026-04-21T14:57:03.8894602+04:00"},{"id":"130bae0cd16aa807eab8ebe515cd1f27","path":"plugins/witness/witness.cpp","line_range":"521-544","gmt_create":"2026-04-21T14:57:03.8900664+04:00","gmt_modified":"2026-04-21T14:57:03.8900664+04:00"},{"id":"10c6e3c5e0da196bf5645b2676f5fe5f","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"1-138","gmt_create":"2026-04-21T14:57:03.8905702+04:00","gmt_modified":"2026-04-21T14:57:03.8905702+04:00"},{"id":"fadf8ac80f586d7a383ae9b7774ab170","path":"libraries/chain/fork_database.cpp","line_range":"1-270","gmt_create":"2026-04-21T14:57:03.8905702+04:00","gmt_modified":"2026-04-21T14:57:03.8905702+04:00"},{"id":"16d80765ba580e717048366d3696a7ed","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-200","gmt_create":"2026-04-21T14:57:03.8921372+04:00","gmt_modified":"2026-04-21T14:57:03.8921372+04:00"},{"id":"79ffe2ea8487b9a11bf58c4c909f0b7a","path":"libraries/chain/database.cpp","line_range":"1-6131","gmt_create":"2026-04-21T14:57:03.8921372+04:00","gmt_modified":"2026-04-21T14:57:03.8921372+04:00"},{"id":"4b8e5a55d358a7e84067e5e1ca2baae3","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"1-76","gmt_create":"2026-04-21T14:57:03.8921372+04:00","gmt_modified":"2026-04-21T14:57:03.8921372+04:00"},{"id":"9b9de0b42096dcf9ce22a02983b8e180","path":"libraries/chain/dlt_block_log.cpp","line_range":"1-454","gmt_create":"2026-04-21T14:57:03.8928231+04:00","gmt_modified":"2026-04-21T14:57:03.8928231+04:00"},{"id":"e127ab43bafb719c65151cb149fd14c1","path":"plugins/witness/witness.cpp","line_range":"1-577","gmt_create":"2026-04-21T14:57:03.8933259+04:00","gmt_modified":"2026-04-21T14:57:03.8933259+04:00"},{"id":"54b0796e4b027ce7818dcb8c6d2cef08","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"110-124","gmt_create":"2026-04-21T14:57:03.893455+04:00","gmt_modified":"2026-04-21T14:57:03.893455+04:00"},{"id":"99aac75830a5934b26dd9481750767cd","path":"libraries/chain/hardfork.d/12.hf","line_range":"1-7","gmt_create":"2026-04-21T14:57:03.896161+04:00","gmt_modified":"2026-04-21T14:57:03.896161+04:00"},{"id":"bec9579489bd7b03445f43a1b0af2f0e","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"53-138","gmt_create":"2026-04-21T14:57:03.8963464+04:00","gmt_modified":"2026-04-21T14:57:03.8963464+04:00"},{"id":"85634f4acca2ba552d2e800110d8b3d7","path":"libraries/chain/fork_database.cpp","line_range":"33-92","gmt_create":"2026-04-21T14:57:03.8968499+04:00","gmt_modified":"2026-04-21T14:57:03.8968499+04:00"},{"id":"4620befa2e1a2b36260a1a8b3f79a71d","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"13-33","gmt_create":"2026-04-21T14:57:03.8973903+04:00","gmt_modified":"2026-04-21T14:57:03.8973903+04:00"},{"id":"2f81799767281c2d15179d4d368c3d98","path":"libraries/chain/dlt_block_log.cpp","line_range":"336-340","gmt_create":"2026-04-21T14:57:03.8984322+04:00","gmt_modified":"2026-04-21T14:57:03.8984322+04:00"},{"id":"c465ac25a4d2b5700f380ebcabc70484","path":"libraries/chain/fork_database.cpp","line_range":"48-84","gmt_create":"2026-04-21T14:57:03.8989522+04:00","gmt_modified":"2026-04-21T14:57:03.8989522+04:00"},{"id":"97457fcf3928d33ecf59751b71c4ddfc","path":"libraries/chain/fork_database.cpp","line_range":"48-55","gmt_create":"2026-04-21T14:57:03.8994712+04:00","gmt_modified":"2026-04-21T14:57:03.8994712+04:00"},{"id":"99db6cfeb000030194e9f1a3a65efd4c","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"20-138","gmt_create":"2026-04-21T14:57:03.8994712+04:00","gmt_modified":"2026-04-21T14:57:03.8994712+04:00"},{"id":"a40f8149c6a1bf43319c1ae35c628e48","path":"libraries/chain/fork_database.cpp","line_range":"33-270","gmt_create":"2026-04-21T14:57:03.8994712+04:00","gmt_modified":"2026-04-21T14:57:03.8994712+04:00"},{"id":"6bad4c06f7a26c6db8813342ffc2409f","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"111-138","gmt_create":"2026-04-21T14:57:03.8999938+04:00","gmt_modified":"2026-04-21T14:57:03.8999938+04:00"},{"id":"9c1d9350bb6f4227b2f93f6424361689","path":"libraries/chain/fork_database.cpp","line_range":"189-231","gmt_create":"2026-04-21T14:57:03.9005147+04:00","gmt_modified":"2026-04-21T14:57:03.9005147+04:00"},{"id":"5604fd71a133635e9e2f5c9080763f93","path":"libraries/chain/database.cpp","line_range":"1037-1177","gmt_create":"2026-04-21T14:57:03.9021136+04:00","gmt_modified":"2026-04-21T14:57:03.9021136+04:00"},{"id":"02214c72e299c321be2dd3cfe69e46d6","path":"libraries/chain/database.cpp","line_range":"259-294","gmt_create":"2026-04-21T14:57:03.9041072+04:00","gmt_modified":"2026-04-21T14:57:03.9041072+04:00"},{"id":"8e2b029a13acbaf27f133a218f3db7f5","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"57-78","gmt_create":"2026-04-21T14:57:03.9046115+04:00","gmt_modified":"2026-04-21T14:57:03.9046115+04:00"},{"id":"e54c425f309443d0a1f2013035606ad6","path":"libraries/chain/database.cpp","line_range":"4444-4533","gmt_create":"2026-04-21T14:57:03.9046115+04:00","gmt_modified":"2026-04-21T14:57:03.9046115+04:00"},{"id":"191773dc9d6cf8f057ee823ac96e81bd","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"35-72","gmt_create":"2026-04-21T14:57:03.9056145+04:00","gmt_modified":"2026-04-21T14:57:03.9056145+04:00"},{"id":"db5e12f9eb72680443996d6f6e431090","path":"plugins/p2p/p2p_plugin.cpp","line_range":"118-164","gmt_create":"2026-04-21T14:57:03.9056145+04:00","gmt_modified":"2026-04-21T14:57:03.9056145+04:00"},{"id":"4570e68acacd2b05afcb76cef53b76c4","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"115-128","gmt_create":"2026-04-21T14:57:03.9066182+04:00","gmt_modified":"2026-04-21T14:57:03.9066182+04:00"},{"id":"1d0c0ef3de2f2e71d820f7340ebf071e","path":"libraries/chain/database.cpp","line_range":"561-580","gmt_create":"2026-04-21T14:57:03.9066182+04:00","gmt_modified":"2026-04-21T14:57:03.9066182+04:00"},{"id":"0518b2f237c1abd79a71c239a6129b13","path":"libraries/chain/database.cpp","line_range":"738-792","gmt_create":"2026-04-21T14:57:03.9066182+04:00","gmt_modified":"2026-04-21T14:57:03.9066182+04:00"},{"id":"34808cff50d23f21ba27eaf1f94a1e65","path":"libraries/chain/database.cpp","line_range":"206-230","gmt_create":"2026-04-21T14:57:03.9066182+04:00","gmt_modified":"2026-04-21T14:57:03.9066182+04:00"},{"id":"51f70fa39e4057673d6cce9a817de5f7","path":"libraries/chain/database.cpp","line_range":"476-515","gmt_create":"2026-04-21T14:57:03.9101295+04:00","gmt_modified":"2026-04-21T14:57:03.9101295+04:00"},{"id":"a5e70e96e2030bc51105ab323328bd6a","path":"libraries/chain/fork_database.cpp","line_range":"92-103","gmt_create":"2026-04-21T14:57:03.911139+04:00","gmt_modified":"2026-04-21T14:57:03.911139+04:00"},{"id":"c914119998cc8956df7a92ba69025669","path":"libraries/chain/database.cpp","line_range":"1075-1087","gmt_create":"2026-04-21T14:57:03.911139+04:00","gmt_modified":"2026-04-21T14:57:03.911139+04:00"},{"id":"17d5f437adfa7d12530e73a6acf3cea3","path":"libraries/chain/database.cpp","line_range":"4581-4594","gmt_create":"2026-04-21T14:57:03.9121369+04:00","gmt_modified":"2026-04-21T14:57:03.9121369+04:00"},{"id":"a5bf8dbce76e473dbc956b2aaabc1871","path":"libraries/chain/database.cpp","line_range":"2125-2142","gmt_create":"2026-04-21T14:57:03.9121369+04:00","gmt_modified":"2026-04-21T14:57:03.9121369+04:00"},{"id":"cef0462ff84c34789c5798ea89079e80","path":"libraries/chain/database.cpp","line_range":"4334-4438","gmt_create":"2026-04-21T14:57:03.9121369+04:00","gmt_modified":"2026-04-21T14:57:03.9121369+04:00"},{"id":"d93beef095ac23ff8ee077459a184b57","path":"libraries/chain/database.cpp","line_range":"4420-4438","gmt_create":"2026-04-21T14:57:03.9121369+04:00","gmt_modified":"2026-04-21T14:57:03.9121369+04:00"},{"id":"a0687e6cdfe244ad5edc2741e51b9637","path":"libraries/chain/database.cpp","line_range":"4444-4450","gmt_create":"2026-04-21T14:57:03.9131361+04:00","gmt_modified":"2026-04-21T14:57:03.9131361+04:00"},{"id":"6d14f9a3d31dd38c6934d4a20f5961aa","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"114-124","gmt_create":"2026-04-21T14:57:03.9131361+04:00","gmt_modified":"2026-04-21T14:57:03.9131361+04:00"},{"id":"eff458ee8f783fdfd55a33c7c6b5a020","path":"libraries/chain/database.cpp","line_range":"4360-4398","gmt_create":"2026-04-21T14:57:03.9131361+04:00","gmt_modified":"2026-04-21T14:57:03.9131361+04:00"},{"id":"6afe192cc4bbb06c24372ff4220396ad","path":"libraries/chain/database.cpp","line_range":"4400-4419","gmt_create":"2026-04-21T14:57:03.914136+04:00","gmt_modified":"2026-04-21T14:57:03.914136+04:00"},{"id":"aa064e2ac860823bd57553bdaacd9fdd","path":"plugins/witness/witness.cpp","line_range":"521-526","gmt_create":"2026-04-21T14:57:03.9156418+04:00","gmt_modified":"2026-04-21T14:57:03.9156418+04:00"},{"id":"40c355eeb0b9decefc18d06871d4f35c","path":"libraries/chain/database.cpp","line_range":"4428-4430","gmt_create":"2026-04-21T14:57:03.9176367+04:00","gmt_modified":"2026-04-21T14:57:03.9176367+04:00"},{"id":"929ab148875977b53b20860e4a7bfcfa","path":"libraries/chain/fork_database.cpp","line_range":"34-46","gmt_create":"2026-04-21T14:57:03.9209327+04:00","gmt_modified":"2026-04-21T14:57:03.9209327+04:00"},{"id":"149b0b231bf8ac5eba3e6884e1e92e6d","path":"libraries/chain/fork_database.cpp","line_range":"48-103","gmt_create":"2026-04-21T14:57:03.9264238+04:00","gmt_modified":"2026-04-21T14:57:03.9264238+04:00"},{"id":"b44544616631fe6486fb65dd48480409","path":"libraries/chain/fork_database.cpp","line_range":"38-46","gmt_create":"2026-04-21T14:57:03.9327075+04:00","gmt_modified":"2026-04-21T14:57:03.9327075+04:00"},{"id":"e1f857384f44e71eb08c99ff531b156e","path":"libraries/chain/fork_database.cpp","line_range":"59-75","gmt_create":"2026-04-21T14:57:03.9333204+04:00","gmt_modified":"2026-04-21T14:57:03.9333204+04:00"},{"id":"67d0e0fc93e91380c1431112565b8397","path":"libraries/chain/database.cpp","line_range":"1390-1397","gmt_create":"2026-04-21T14:57:03.9340901+04:00","gmt_modified":"2026-04-21T14:57:03.9340901+04:00"},{"id":"38ebf46966056ad075ef10d47f35bd63","path":"plugins/snapshot/plugin.cpp","line_range":"1-50","gmt_create":"2026-04-21T14:58:18.8845625+04:00","gmt_modified":"2026-04-21T14:58:18.8845625+04:00"},{"id":"39bb010f4844b32951d0caff06ff7a8b","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"1-88","gmt_create":"2026-04-21T14:58:18.8850856+04:00","gmt_modified":"2026-04-21T14:58:18.8850856+04:00"},{"id":"7fddadd553eea0193d9fac38ae3fc27d","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","line_range":"1-52","gmt_create":"2026-04-21T14:58:18.8850856+04:00","gmt_modified":"2026-04-21T14:58:18.8850856+04:00"},{"id":"db1d8680c92d1bf3738935f7a8222d85","path":"plugins/snapshot/CMakeLists.txt","line_range":"1-52","gmt_create":"2026-04-21T14:58:18.8850856+04:00","gmt_modified":"2026-04-21T14:58:18.8850856+04:00"},{"id":"43fa824ac508d796bfc427ecb25f9aec","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"42-76","gmt_create":"2026-04-21T14:58:18.8856039+04:00","gmt_modified":"2026-04-21T14:58:18.8856039+04:00"},{"id":"31a53fc15540bfbb02489d919f88e5ac","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","line_range":"16-52","gmt_create":"2026-04-21T14:58:18.8856039+04:00","gmt_modified":"2026-04-21T14:58:18.8856039+04:00"},{"id":"ab15b2f02cfc8f31905aa2e047fa6708","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","line_range":"30-158","gmt_create":"2026-04-21T14:58:18.8856039+04:00","gmt_modified":"2026-04-21T14:58:18.8856039+04:00"},{"id":"4bfb891f257d1b2edcf6bf0baecede35","path":"plugins/snapshot/plugin.cpp","line_range":"675-780","gmt_create":"2026-04-21T14:58:18.8856039+04:00","gmt_modified":"2026-04-21T14:58:18.8856039+04:00"},{"id":"cad29605a7993547a682094b9c1fcad3","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","line_range":"37-107","gmt_create":"2026-04-21T14:58:18.8861174+04:00","gmt_modified":"2026-04-21T14:58:18.8861174+04:00"},{"id":"2db378b12ea8079473dee9fe9d2728ac","path":"plugins/snapshot/plugin.cpp","line_range":"885-987","gmt_create":"2026-04-21T14:58:18.8861174+04:00","gmt_modified":"2026-04-21T14:58:18.8861174+04:00"},{"id":"731f7e3059779dad9c9eb8cd69c6942a","path":"plugins/snapshot/plugin.cpp","line_range":"789-883","gmt_create":"2026-04-21T14:58:18.8861174+04:00","gmt_modified":"2026-04-21T14:58:18.8861174+04:00"},{"id":"3285e48f2fec78af9a88ad7ae2e63e1c","path":"plugins/snapshot/plugin.cpp","line_range":"1400-1484","gmt_create":"2026-04-21T14:58:18.88664+04:00","gmt_modified":"2026-04-21T14:58:18.88664+04:00"},{"id":"9c8ca31c28bd8a346634d03ad6032d8e","path":"plugins/snapshot/plugin.cpp","line_range":"1046-1288","gmt_create":"2026-04-21T14:58:18.88664+04:00","gmt_modified":"2026-04-21T14:58:18.88664+04:00"},{"id":"0e8bf89344d2a0fccf751378026dde2d","path":"plugins/snapshot/plugin.cpp","line_range":"1902-2038","gmt_create":"2026-04-21T14:58:18.88664+04:00","gmt_modified":"2026-04-21T14:58:18.88664+04:00"},{"id":"83429ace394b68f7e40a8ccc861c7d40","path":"plugins/snapshot/plugin.cpp","line_range":"1470-1599","gmt_create":"2026-04-21T14:58:18.88664+04:00","gmt_modified":"2026-04-21T14:58:18.88664+04:00"},{"id":"046dda92b70e2708fc5b816143d89058","path":"plugins/snapshot/plugin.cpp","line_range":"2473-2510","gmt_create":"2026-04-21T14:58:18.88664+04:00","gmt_modified":"2026-04-21T14:58:18.88664+04:00"},{"id":"f0cf4ee8d0a772ae70e7c8452ba7f2f9","path":"documentation/snapshot-plugin.md","line_range":"247-273","gmt_create":"2026-04-21T14:58:18.8872111+04:00","gmt_modified":"2026-04-21T14:58:18.8872111+04:00"},{"id":"92879d0fd0121256d12b60aa1c30df55","path":"plugins/snapshot/plugin.cpp","line_range":"1418-1436","gmt_create":"2026-04-21T14:58:18.8872111+04:00","gmt_modified":"2026-04-21T14:58:18.8872111+04:00"},{"id":"bb601a88a37604ead660e6ca99a665f1","path":"plugins/snapshot/plugin.cpp","line_range":"737-743","gmt_create":"2026-04-21T14:58:18.8877142+04:00","gmt_modified":"2026-04-21T14:58:18.8877142+04:00"},{"id":"acc7bf79a9b12f3731ba97b5f0daf981","path":"plugins/snapshot/plugin.cpp","line_range":"1390-1484","gmt_create":"2026-04-21T14:58:18.8877142+04:00","gmt_modified":"2026-04-21T14:58:18.8877142+04:00"},{"id":"183fc23b1afe83aae72f123e73a522e3","path":"plugins/snapshot/plugin.cpp","line_range":"1440-1449","gmt_create":"2026-04-21T14:58:18.8877142+04:00","gmt_modified":"2026-04-21T14:58:18.8877142+04:00"},{"id":"45821bb2aac9f23cc3c036a4be4fc2d0","path":"plugins/witness/witness.cpp","line_range":"335-551","gmt_create":"2026-04-21T14:58:18.8882519+04:00","gmt_modified":"2026-04-21T14:58:18.8882519+04:00"},{"id":"1ca2e9a47901009d154225645910fdd0","path":"plugins/snapshot/plugin.cpp","line_range":"1326-1376","gmt_create":"2026-04-21T14:58:18.8882519+04:00","gmt_modified":"2026-04-21T14:58:18.8882519+04:00"},{"id":"3159f6294be515487f5aa79015b513c3","path":"plugins/snapshot/plugin.cpp","line_range":"1426-1435","gmt_create":"2026-04-21T14:58:18.8882519+04:00","gmt_modified":"2026-04-21T14:58:18.8882519+04:00"},{"id":"4dd56096f073f9c64f5ca219853c20d6","path":"plugins/snapshot/plugin.cpp","line_range":"745-750","gmt_create":"2026-04-21T14:58:18.8882519+04:00","gmt_modified":"2026-04-21T14:58:18.8882519+04:00"},{"id":"1b0cdbb2e60325297067594b2948750a","path":"plugins/snapshot/plugin.cpp","line_range":"697-700","gmt_create":"2026-04-21T14:58:18.8882519+04:00","gmt_modified":"2026-04-21T14:58:18.8882519+04:00"},{"id":"99144581b107cfacfefe5e35d529713c","path":"plugins/snapshot/plugin.cpp","line_range":"2831-2845","gmt_create":"2026-04-21T14:58:18.8887695+04:00","gmt_modified":"2026-04-21T14:58:18.8887695+04:00"},{"id":"bf2786c553cb282c81e2df715d0710e1","path":"plugins/snapshot/plugin.cpp","line_range":"1719-1748","gmt_create":"2026-04-21T14:58:18.8887695+04:00","gmt_modified":"2026-04-21T14:58:18.8887695+04:00"},{"id":"f6bc3670add86d7b243a66c90d46ffc8","path":"plugins/snapshot/plugin.cpp","line_range":"1706-1748","gmt_create":"2026-04-21T14:58:18.8887695+04:00","gmt_modified":"2026-04-21T14:58:18.8887695+04:00"},{"id":"5a0d9dd7b4c46ab44ed775c3a397b093","path":"plugins/chain/plugin.cpp","line_range":"490-560","gmt_create":"2026-04-21T14:58:18.8887695+04:00","gmt_modified":"2026-04-21T14:58:18.8887695+04:00"},{"id":"be694fde1aa860a9329296964477111e","path":"plugins/snapshot/plugin.cpp","line_range":"2945-2959","gmt_create":"2026-04-21T14:58:18.8892864+04:00","gmt_modified":"2026-04-21T14:58:18.8892864+04:00"},{"id":"09857d193a091f282ecfcbccb507fe7b","path":"libraries/chain/database.cpp","line_range":"441-5201","gmt_create":"2026-04-21T14:58:18.8892864+04:00","gmt_modified":"2026-04-21T14:58:18.8892864+04:00"},{"id":"3b26461da0f92be2563f169a65f6fb20","path":"plugins/chain/plugin.cpp","line_range":"542-559","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"8e19ddfdf1b9c4bf08da230f1991fbae","path":"plugins/snapshot/plugin.cpp","line_range":"2976-3009","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"7f422ce5a550e0bf78739aa09dc6ad1e","path":"plugins/snapshot/plugin.cpp","line_range":"2468-2570","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"9ef8a2bfe7a4ae9fbe3d9339c0c3b7ae","path":"plugins/snapshot/plugin.cpp","line_range":"735-740","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"12f48585bb2924475247750bd428dfd0","path":"plugins/snapshot/plugin.cpp","line_range":"1814-1862","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"da29915a5700acc0cd17aa7c9638e0c2","path":"plugins/snapshot/plugin.cpp","line_range":"772-785","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"8c337e93c31b8b3a7a1491f116f27ed7","path":"plugins/snapshot/plugin.cpp","line_range":"165-176","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"1868caeecd8d398012baaddde0197979","path":"plugins/snapshot/plugin.cpp","line_range":"1587-1596","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"7bfbc374764b2321b6922f512ce1409b","path":"plugins/snapshot/plugin.cpp","line_range":"1610-1620","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"720664924c0f5ad167ebc8d59f432977","path":"plugins/snapshot/plugin.cpp","line_range":"1812-1877","gmt_create":"2026-04-21T14:58:18.8898121+04:00","gmt_modified":"2026-04-21T14:58:18.8898121+04:00"},{"id":"eb040536345f0f7cea67191d528e4a85","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"24-34","gmt_create":"2026-04-21T14:58:18.8908206+04:00","gmt_modified":"2026-04-21T14:58:18.8908206+04:00"},{"id":"6b01a3981c4710fbe43e2f50c18bcec5","path":"plugins/snapshot/plugin.cpp","line_range":"2598-2680","gmt_create":"2026-04-21T14:58:18.8913304+04:00","gmt_modified":"2026-04-21T14:58:18.8913304+04:00"},{"id":"9c6f3c36bb49caec4162b04901b48340","path":"plugins/chain/plugin.cpp","line_range":"364-432","gmt_create":"2026-04-21T14:58:18.8913304+04:00","gmt_modified":"2026-04-21T14:58:18.8913304+04:00"},{"id":"c6f770b3151f86c3f6096d9ccd7ec6f0","path":"plugins/snapshot/CMakeLists.txt","line_range":"27-38","gmt_create":"2026-04-21T14:58:18.8913304+04:00","gmt_modified":"2026-04-21T14:58:18.8913304+04:00"},{"id":"5b3e15b641f9632441134e75e3ce99cc","path":"plugins/snapshot/plugin.cpp","line_range":"2294-2464","gmt_create":"2026-04-21T14:58:18.8913304+04:00","gmt_modified":"2026-04-21T14:58:18.8913304+04:00"},{"id":"378f0a19787ac694be22607464bb7d42","path":"plugins/snapshot/plugin.cpp","line_range":"1378-1464","gmt_create":"2026-04-21T14:58:18.8913304+04:00","gmt_modified":"2026-04-21T14:58:18.8913304+04:00"},{"id":"5ef55c539008cc115b20e5fd0aa2c201","path":"libraries/chain/database.cpp","line_range":"4510-4623","gmt_create":"2026-04-21T14:58:41.9564174+04:00","gmt_modified":"2026-04-21T14:58:41.9564174+04:00"},{"id":"2fd3cc2097e9cb281eeb78f80ae32db0","path":"plugins/witness/witness.cpp","line_range":"354-392","gmt_create":"2026-04-21T14:58:41.9570559+04:00","gmt_modified":"2026-04-21T14:58:41.9570559+04:00"},{"id":"3aa7e25a4d15485b3ff382fb13b3bc08","path":"libraries/chain/database.cpp","line_range":"562-590","gmt_create":"2026-04-21T14:58:41.9575611+04:00","gmt_modified":"2026-04-21T14:58:41.9575611+04:00"},{"id":"8119b6f57c7009ee7c8a79c9d17711b2","path":"libraries/chain/include/graphene/chain/global_property_object.hpp","line_range":"24-146","gmt_create":"2026-04-21T14:58:41.9575611+04:00","gmt_modified":"2026-04-21T14:58:41.9575611+04:00"},{"id":"2808eceab28f2942dd6ff5a6e3a31e7b","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","line_range":"27-132","gmt_create":"2026-04-21T14:58:41.9581015+04:00","gmt_modified":"2026-04-21T14:58:41.9581015+04:00"},{"id":"875c5da58931b36274ca9d7d06a2e918","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"114-119","gmt_create":"2026-04-21T14:58:41.9581015+04:00","gmt_modified":"2026-04-21T14:58:41.9581015+04:00"},{"id":"e8a183119f6977db8a231027c2c9e026","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","line_range":"47-61","gmt_create":"2026-04-21T14:58:41.9586201+04:00","gmt_modified":"2026-04-21T14:58:41.9586201+04:00"},{"id":"3b3625f00f2ea0c8636f7e827410626a","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"110-112","gmt_create":"2026-04-21T14:58:41.9591331+04:00","gmt_modified":"2026-04-21T14:58:41.9591331+04:00"},{"id":"12095ebe9d5a003b2ea09d2b51390ef0","path":"libraries/chain/database.cpp","line_range":"4522-4526","gmt_create":"2026-04-21T14:58:41.9591331+04:00","gmt_modified":"2026-04-21T14:58:41.9591331+04:00"},{"id":"a9f591b0036c5e381b26bf82acf5a5ca","path":"libraries/chain/database.cpp","line_range":"4510-4520","gmt_create":"2026-04-21T14:58:41.9591331+04:00","gmt_modified":"2026-04-21T14:58:41.9591331+04:00"},{"id":"d4c652db859da70bac5fcc50f5bf98d9","path":"libraries/chain/database.cpp","line_range":"4510-4526","gmt_create":"2026-04-21T14:58:41.9591331+04:00","gmt_modified":"2026-04-21T14:58:41.9591331+04:00"},{"id":"b9c9bd8f569231067ae2d2827a4c7c09","path":"libraries/chain/database.cpp","line_range":"2255-2272","gmt_create":"2026-04-21T14:58:41.9601603+04:00","gmt_modified":"2026-04-21T14:58:41.9601603+04:00"},{"id":"afd8ec5de97908d340193e74cd918f8d","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"121-123","gmt_create":"2026-04-21T14:58:41.9601603+04:00","gmt_modified":"2026-04-21T14:58:41.9601603+04:00"},{"id":"adea2d00e5f4ef1a3ee39d08d4454e21","path":"libraries/chain/hardfork.d/12.hf","line_range":"1-6","gmt_create":"2026-04-21T14:58:41.9606791+04:00","gmt_modified":"2026-04-21T14:58:41.9606791+04:00"},{"id":"36615c570f30b13570e97530109c6cba","path":"thirdparty/chainbase/src/chainbase.cpp","line_range":"229-230","gmt_create":"2026-04-21T14:58:41.961197+04:00","gmt_modified":"2026-04-21T14:58:41.961197+04:00"},{"id":"782640a05c160fde2d06006db309802e","path":"libraries/chain/database.cpp","line_range":"592-626","gmt_create":"2026-04-21T14:58:41.961197+04:00","gmt_modified":"2026-04-21T14:58:41.961197+04:00"},{"id":"e951fb7f78d4f697e542f9b115981dd8","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"37-612","gmt_create":"2026-04-21T14:58:41.9617152+04:00","gmt_modified":"2026-04-21T14:58:41.9617152+04:00"},{"id":"efef0225e3c5942e3e386ca8ca907f45","path":"libraries/chain/fork_database.cpp","line_range":"113-145","gmt_create":"2026-04-21T14:58:41.9627599+04:00","gmt_modified":"2026-04-21T14:58:41.9627599+04:00"},{"id":"8352639ee8e2e7c4bc16eae03e608449","path":"plugins/chain/plugin.cpp","line_range":"183-649","gmt_create":"2026-04-21T15:26:12.4931541+04:00","gmt_modified":"2026-04-21T15:26:12.4931541+04:00"},{"id":"c7078847cda875b948ba0ee365fedd0b","path":"libraries/chain/database.cpp","line_range":"351-544","gmt_create":"2026-04-21T15:26:12.4936728+04:00","gmt_modified":"2026-04-21T15:26:12.4936728+04:00"},{"id":"ef6fb98db19c3efcbe268105ed5e68fc","path":"plugins/snapshot/plugin.cpp","line_range":"3031-3118","gmt_create":"2026-04-21T15:26:12.4936728+04:00","gmt_modified":"2026-04-21T15:26:12.4936728+04:00"},{"id":"cf2600b53a5f525680033591c8c66490","path":"plugins/chain/plugin.cpp","line_range":"1-694","gmt_create":"2026-04-21T15:26:12.4936728+04:00","gmt_modified":"2026-04-21T15:26:12.4936728+04:00"},{"id":"749573fcc7dbcb608fc4ff1d5ddedfbb","path":"libraries/chain/database.cpp","line_range":"1-6314","gmt_create":"2026-04-21T15:26:12.4936728+04:00","gmt_modified":"2026-04-21T15:26:12.4936728+04:00"},{"id":"46f3169187b8a40864070b1d3c974a78","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-124","gmt_create":"2026-04-21T15:26:12.4941866+04:00","gmt_modified":"2026-04-21T15:26:12.4941866+04:00"},{"id":"2fa0448b5ecfcbe21e60eca380f1f797","path":"plugins/chain/plugin.cpp","line_range":"21-93","gmt_create":"2026-04-21T15:26:12.4941866+04:00","gmt_modified":"2026-04-21T15:26:12.4941866+04:00"},{"id":"2957663d8fb674bf1f5c6222b46392db","path":"plugins/chain/plugin.cpp","line_range":"103-183","gmt_create":"2026-04-21T15:26:12.4941866+04:00","gmt_modified":"2026-04-21T15:26:12.4941866+04:00"},{"id":"a940626ebef2ff638a1f0c0ad34a604a","path":"libraries/chain/database.cpp","line_range":"438-544","gmt_create":"2026-04-21T15:26:12.4941866+04:00","gmt_modified":"2026-04-21T15:26:12.4941866+04:00"},{"id":"35b837bbd6820136066303569dc5f8e9","path":"plugins/chain/plugin.cpp","line_range":"650-666","gmt_create":"2026-04-21T15:26:12.4947008+04:00","gmt_modified":"2026-04-21T15:26:12.4947008+04:00"},{"id":"0ff2cbff5891d55dd05ff207f97709c4","path":"plugins/chain/plugin.cpp","line_range":"197-272","gmt_create":"2026-04-21T15:26:12.4947008+04:00","gmt_modified":"2026-04-21T15:26:12.4947008+04:00"},{"id":"2f7a82ca1b02b415d6cf71804ade660b","path":"plugins/chain/plugin.cpp","line_range":"274-386","gmt_create":"2026-04-21T15:26:12.4952158+04:00","gmt_modified":"2026-04-21T15:26:12.4952158+04:00"},{"id":"f7abf8832320f0102528ca2383d3dbdc","path":"plugins/chain/plugin.cpp","line_range":"388-649","gmt_create":"2026-04-21T15:26:12.4952158+04:00","gmt_modified":"2026-04-21T15:26:12.4952158+04:00"},{"id":"264b5284a45f2156a8dd6a39d2b8b343","path":"libraries/chain/database.cpp","line_range":"4253-4323","gmt_create":"2026-04-21T15:26:12.495735+04:00","gmt_modified":"2026-04-21T15:26:12.495735+04:00"},{"id":"77c5d49ba11e50b936f2e37cfe5bac15","path":"libraries/chain/database.cpp","line_range":"4314-4323","gmt_create":"2026-04-21T15:26:12.4962497+04:00","gmt_modified":"2026-04-21T15:26:12.4962497+04:00"},{"id":"06d2c969585ac21892f8648310ef36d6","path":"plugins/chain/plugin.cpp","line_range":"420-475","gmt_create":"2026-04-21T15:26:12.4967692+04:00","gmt_modified":"2026-04-21T15:26:12.4967692+04:00"},{"id":"c4e5c1ecfa627b20380d1bf818332958","path":"plugins/snapshot/plugin.cpp","line_range":"3031-3042","gmt_create":"2026-04-21T15:26:12.4967692+04:00","gmt_modified":"2026-04-21T15:26:12.4967692+04:00"},{"id":"d982ea0d9ca7142616c0b53357e3e203","path":"plugins/chain/plugin.cpp","line_range":"566-649","gmt_create":"2026-04-21T15:26:12.4972939+04:00","gmt_modified":"2026-04-21T15:26:12.4972939+04:00"},{"id":"b25e4b62701b8c78e297ddee5f2caad0","path":"plugins/chain/plugin.cpp","line_range":"344-382","gmt_create":"2026-04-21T15:26:12.4978097+04:00","gmt_modified":"2026-04-21T15:26:12.4978097+04:00"},{"id":"64826c30d399416ce63275a6cabd180c","path":"plugins/snapshot/plugin.cpp","line_range":"2817-2861","gmt_create":"2026-04-21T15:26:12.498327+04:00","gmt_modified":"2026-04-21T15:26:12.498327+04:00"},{"id":"93a1d075e0ec75d870207ec250efc575","path":"plugins/snapshot/plugin.cpp","line_range":"2908-2920","gmt_create":"2026-04-21T15:26:12.498327+04:00","gmt_modified":"2026-04-21T15:26:12.498327+04:00"},{"id":"3d03986a0ff0a3e1e44cbbea9b0302d7","path":"plugins/chain/plugin.cpp","line_range":"1-12","gmt_create":"2026-04-21T15:26:12.4988377+04:00","gmt_modified":"2026-04-21T15:26:12.4988377+04:00"},{"id":"32febe28fa31d374ab5de6556ddec265","path":"libraries/chain/database.cpp","line_range":"1-10","gmt_create":"2026-04-21T15:26:12.4988377+04:00","gmt_modified":"2026-04-21T15:26:12.4988377+04:00"},{"id":"aba8efd2da24a907a112525ea45ac4f6","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"23-24","gmt_create":"2026-04-21T15:26:12.4988377+04:00","gmt_modified":"2026-04-21T15:26:12.4988377+04:00"},{"id":"8f6d5eed4cbe8899c555b9eff6586d81","path":"plugins/chain/plugin.cpp","line_range":"92-105","gmt_create":"2026-04-21T15:26:12.4988377+04:00","gmt_modified":"2026-04-21T15:26:12.4988377+04:00"},{"id":"84bf9937db75200f50ce58380ad0e414","path":"plugins/chain/plugin.cpp","line_range":"24-51","gmt_create":"2026-04-21T15:26:12.4993502+04:00","gmt_modified":"2026-04-21T15:26:12.4993502+04:00"},{"id":"98be528d411be6c35939a760839f7201","path":"plugins/chain/plugin.cpp","line_range":"398-418","gmt_create":"2026-04-21T15:26:12.4993502+04:00","gmt_modified":"2026-04-21T15:26:12.4993502+04:00"},{"id":"056e785677daf89fe73710fde32d9ff8","path":"plugins/chain/plugin.cpp","line_range":"562-601","gmt_create":"2026-04-21T15:26:12.4993502+04:00","gmt_modified":"2026-04-21T15:26:12.4993502+04:00"},{"id":"e3ca1989a0833158cbedbe39c781bb6b","path":"plugins/chain/plugin.cpp","line_range":"251-271","gmt_create":"2026-04-21T15:26:12.4993502+04:00","gmt_modified":"2026-04-21T15:26:12.4993502+04:00"},{"id":"6a20190cd3b03b84a4bab259af0af6b1","path":"plugins/p2p/p2p_plugin.cpp","line_range":"467-566","gmt_create":"2026-04-21T15:28:15.4149185+04:00","gmt_modified":"2026-04-21T15:28:15.4149185+04:00"},{"id":"00cabf1b7055d04e0960c216d8cd0403","path":"libraries/network/node.cpp","line_range":"424-800","gmt_create":"2026-04-21T15:28:15.4154233+04:00","gmt_modified":"2026-04-21T15:28:15.4154233+04:00"},{"id":"d10d503ecf6e02af47ac3e2d2135da1f","path":"libraries/network/peer_connection.cpp","line_range":"68-162","gmt_create":"2026-04-21T15:28:15.4154233+04:00","gmt_modified":"2026-04-21T15:28:15.4154233+04:00"},{"id":"6dfd418bf1140349990a279ba15b5ce3","path":"libraries/network/stcp_socket.cpp","line_range":"37-92","gmt_create":"2026-04-21T15:28:15.4154233+04:00","gmt_modified":"2026-04-21T15:28:15.4154233+04:00"},{"id":"2e10237dfe812b2703942b296f4ccd5a","path":"libraries/network/include/graphene/network/config.hpp","line_range":"26-106","gmt_create":"2026-04-21T15:28:15.4159579+04:00","gmt_modified":"2026-04-21T15:28:15.4159579+04:00"},{"id":"95576c9a6ad8dd09d002408de4f3055b","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"47-71","gmt_create":"2026-04-21T15:28:15.4159579+04:00","gmt_modified":"2026-04-21T15:28:15.4159579+04:00"},{"id":"4a6eface4715768aeeb8b7b1719dd3a5","path":"share/vizd/config/config.ini","line_range":"1-136","gmt_create":"2026-04-21T15:28:15.4164731+04:00","gmt_modified":"2026-04-21T15:28:15.4164731+04:00"},{"id":"db51d27151ff0ee62237a12f6e28a8a8","path":"share/vizd/config/config_testnet.ini","line_range":"1-132","gmt_create":"2026-04-21T15:28:15.4170067+04:00","gmt_modified":"2026-04-21T15:28:15.4170067+04:00"},{"id":"201d56e7922b2c932dae08a7356a8a97","path":"share/vizd/config/config_witness.ini","line_range":"1-107","gmt_create":"2026-04-21T15:28:15.4175341+04:00","gmt_modified":"2026-04-21T15:28:15.4175341+04:00"},{"id":"d6f85d2cf86b491c902e83cdac4170ca","path":"plugins/p2p/p2p_plugin.cpp","line_range":"531-566","gmt_create":"2026-04-21T15:28:15.4201792+04:00","gmt_modified":"2026-04-21T15:28:15.4201792+04:00"},{"id":"d12f4353aeb902df69cc28f2056819be","path":"libraries/network/node.cpp","line_range":"776-790","gmt_create":"2026-04-21T15:28:15.4207047+04:00","gmt_modified":"2026-04-21T15:28:15.4207047+04:00"},{"id":"599fd39262fa543f50ee2886a28ec74d","path":"plugins/p2p/p2p_plugin.cpp","line_range":"497-521","gmt_create":"2026-04-21T15:28:15.4217488+04:00","gmt_modified":"2026-04-21T15:28:15.4217488+04:00"},{"id":"4550652139a82971105a5125534f4555","path":"libraries/network/node.cpp","line_range":"780-785","gmt_create":"2026-04-21T15:28:15.4217488+04:00","gmt_modified":"2026-04-21T15:28:15.4217488+04:00"},{"id":"39054c03364a3fe629ad93d0da500277","path":"plugins/p2p/p2p_plugin.cpp","line_range":"537-540","gmt_create":"2026-04-21T15:28:15.4222796+04:00","gmt_modified":"2026-04-21T15:28:15.4222796+04:00"},{"id":"9315d954a96215e742a9e8e44b66be72","path":"libraries/network/node.cpp","line_range":"786-792","gmt_create":"2026-04-21T15:28:15.4228005+04:00","gmt_modified":"2026-04-21T15:28:15.4228005+04:00"},{"id":"5df79c1ab672ebc533679aaf72b42d30","path":"plugins/p2p/p2p_plugin.cpp","line_range":"487-495","gmt_create":"2026-04-21T15:28:15.4228005+04:00","gmt_modified":"2026-04-21T15:28:15.4228005+04:00"},{"id":"893fd1ab6dda4e1c86c57aa335f5da33","path":"libraries/network/include/graphene/network/config.hpp","line_range":"52-56","gmt_create":"2026-04-21T15:28:15.4233127+04:00","gmt_modified":"2026-04-21T15:28:15.4233127+04:00"},{"id":"9f97158f7b71748204230bab74479dd2","path":"libraries/network/node.cpp","line_range":"441-445","gmt_create":"2026-04-21T15:28:15.4233127+04:00","gmt_modified":"2026-04-21T15:28:15.4233127+04:00"},{"id":"173cf5d3d4500a101b898ef965b66251","path":"libraries/network/peer_connection.cpp","line_range":"169-206","gmt_create":"2026-04-21T15:28:15.4233127+04:00","gmt_modified":"2026-04-21T15:28:15.4233127+04:00"},{"id":"a276a3e0d51fe09dbc074afa887a36a8","path":"libraries/network/stcp_socket.cpp","line_range":"49-66","gmt_create":"2026-04-21T15:28:15.4238467+04:00","gmt_modified":"2026-04-21T15:28:15.4238467+04:00"},{"id":"60c2ce3033cc50bf4f08e8e529997427","path":"libraries/network/node.cpp","line_range":"223-239","gmt_create":"2026-04-21T15:28:15.4238467+04:00","gmt_modified":"2026-04-21T15:28:15.4238467+04:00"},{"id":"198057082417232a02baaba3f2d0320b","path":"libraries/network/include/graphene/network/config.hpp","line_range":"48-50","gmt_create":"2026-04-21T15:28:15.4238467+04:00","gmt_modified":"2026-04-21T15:28:15.4238467+04:00"},{"id":"d67388cac943b43fc94bea840d26f317","path":"libraries/network/node.cpp","line_range":"638-640","gmt_create":"2026-04-21T15:28:15.4238467+04:00","gmt_modified":"2026-04-21T15:28:15.4238467+04:00"},{"id":"dc0a85c04287e3284abeb89a4338191e","path":"libraries/network/node.cpp","line_range":"518-526","gmt_create":"2026-04-21T15:28:15.4243676+04:00","gmt_modified":"2026-04-21T15:28:15.4243676+04:00"},{"id":"55dd79da7a7280440243883eddb77f5a","path":"libraries/network/node.cpp","line_range":"548-567","gmt_create":"2026-04-21T15:28:15.4243676+04:00","gmt_modified":"2026-04-21T15:28:15.4243676+04:00"},{"id":"1060bf826e74215d15b6438d876ec551","path":"libraries/network/peer_connection.cpp","line_range":"314-325","gmt_create":"2026-04-21T15:28:15.4248962+04:00","gmt_modified":"2026-04-21T15:28:15.4248962+04:00"},{"id":"96c09cad05e8eac2184754c5fc9d5948","path":"libraries/network/include/graphene/network/config.hpp","line_range":"55-106","gmt_create":"2026-04-21T15:28:15.4254216+04:00","gmt_modified":"2026-04-21T15:28:15.4254216+04:00"},{"id":"9ec635457cc11bc2bb69078993fcdb66","path":"plugins/p2p/p2p_plugin.cpp","line_range":"403-405","gmt_create":"2026-04-21T15:28:15.4302475+04:00","gmt_modified":"2026-04-21T15:28:15.4302475+04:00"},{"id":"5de01f3abcfa46f1e0b9b9e1ab525d3e","path":"share/vizd/config/config.ini","line_range":"112-136","gmt_create":"2026-04-21T15:28:15.4302475+04:00","gmt_modified":"2026-04-21T15:28:15.4302475+04:00"},{"id":"31a4b8e41ed9344abe530bbfe18a239f","path":"plugins/p2p/p2p_plugin.cpp","line_range":"467-482","gmt_create":"2026-04-21T15:28:15.4307519+04:00","gmt_modified":"2026-04-21T15:28:15.4307519+04:00"},{"id":"8535df170dc6215a3ad88dd93b9c0e98","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-642","gmt_create":"2026-04-21T15:30:04.7532214+04:00","gmt_modified":"2026-04-21T15:30:04.7532214+04:00"},{"id":"f7390d5bc34c6546fd47a2393e083e7e","path":"libraries/chain/include/graphene/chain/block_log.hpp","line_range":"1-75","gmt_create":"2026-04-21T15:30:04.7537456+04:00","gmt_modified":"2026-04-21T15:30:04.7537456+04:00"},{"id":"35d46d5633a13462eb52e54aca34d6d9","path":"libraries/chain/block_log.cpp","line_range":"1-302","gmt_create":"2026-04-21T15:30:04.7537456+04:00","gmt_modified":"2026-04-21T15:30:04.7537456+04:00"},{"id":"a46413107d52cb603cd476527793535e","path":"libraries/chain/dlt_block_log.cpp","line_range":"1-414","gmt_create":"2026-04-21T15:30:04.7542651+04:00","gmt_modified":"2026-04-21T15:30:04.7542651+04:00"},{"id":"68fdad7841401e90c5c5ea40abfbff2a","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"1-125","gmt_create":"2026-04-21T15:30:04.7542651+04:00","gmt_modified":"2026-04-21T15:30:04.7542651+04:00"},{"id":"ea25ac84742909e90d76068a94ded047","path":"libraries/chain/fork_database.cpp","line_range":"1-245","gmt_create":"2026-04-21T15:30:04.7542651+04:00","gmt_modified":"2026-04-21T15:30:04.7542651+04:00"},{"id":"f4da2f9c389f5c6ea43ba001cda708fb","path":"libraries/chain/include/graphene/chain/db_with.hpp","line_range":"1-154","gmt_create":"2026-04-21T15:30:04.7547934+04:00","gmt_modified":"2026-04-21T15:30:04.7547934+04:00"},{"id":"b54ec203d1da8e4c616a3fec2311049f","path":"plugins/snapshot/plugin.cpp","line_range":"2130-2140","gmt_create":"2026-04-21T15:30:04.7547934+04:00","gmt_modified":"2026-04-21T15:30:04.7547934+04:00"},{"id":"9eed7eba95404e8e27e3d3c2edb279fe","path":"plugins/witness/witness.cpp","line_range":"449-467","gmt_create":"2026-04-21T15:30:04.7547934+04:00","gmt_modified":"2026-04-21T15:30:04.7547934+04:00"},{"id":"e1fa9bfc496492a842998adc3b3afaa9","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"111-118","gmt_create":"2026-04-21T15:30:04.7553287+04:00","gmt_modified":"2026-04-21T15:30:04.7553287+04:00"},{"id":"dc73ad58c67e8cdb39773f20f3e6b029","path":"thirdparty/chainbase/src/chainbase.cpp","line_range":"225-279","gmt_create":"2026-04-21T15:30:04.7553287+04:00","gmt_modified":"2026-04-21T15:30:04.7553287+04:00"},{"id":"41d7095dbf9aa542d0db24c316979a35","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"61-115","gmt_create":"2026-04-21T15:30:04.7581056+04:00","gmt_modified":"2026-04-21T15:30:04.7581056+04:00"},{"id":"535c5a17a7ac07403ea96a2073235389","path":"libraries/chain/database.cpp","line_range":"281-324","gmt_create":"2026-04-21T15:30:04.7581056+04:00","gmt_modified":"2026-04-21T15:30:04.7581056+04:00"},{"id":"aad83f64f27db64e1e7945b311188609","path":"libraries/chain/include/graphene/chain/block_log.hpp","line_range":"38-75","gmt_create":"2026-04-21T15:30:04.7581056+04:00","gmt_modified":"2026-04-21T15:30:04.7581056+04:00"},{"id":"4b6ddb0b2b955bd31e4cb1cff392a24a","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"53-125","gmt_create":"2026-04-21T15:30:04.7586449+04:00","gmt_modified":"2026-04-21T15:30:04.7586449+04:00"},{"id":"5ed5a102f0b94dd380ec8d1c114c0889","path":"libraries/chain/database.cpp","line_range":"929-984","gmt_create":"2026-04-21T15:30:04.7586449+04:00","gmt_modified":"2026-04-21T15:30:04.7586449+04:00"},{"id":"fddd6da7e2bbee882e0448463e98d666","path":"libraries/chain/include/graphene/chain/db_with.hpp","line_range":"33-100","gmt_create":"2026-04-21T15:30:04.759188+04:00","gmt_modified":"2026-04-21T15:30:04.759188+04:00"},{"id":"0809c80d1d7608dbd9154e2bdad078ea","path":"libraries/chain/database.cpp","line_range":"94-184","gmt_create":"2026-04-21T15:30:04.7602782+04:00","gmt_modified":"2026-04-21T15:30:04.7602782+04:00"},{"id":"17d428d8b156ca6e29747a2586eb1432","path":"libraries/chain/database.cpp","line_range":"330-410","gmt_create":"2026-04-21T15:30:04.7608175+04:00","gmt_modified":"2026-04-21T15:30:04.7608175+04:00"},{"id":"7371cc1e09db6e42e0ba073fc458e918","path":"libraries/chain/database.cpp","line_range":"134-184","gmt_create":"2026-04-21T15:30:04.7608175+04:00","gmt_modified":"2026-04-21T15:30:04.7608175+04:00"},{"id":"fa3a8c03917088e8342e1898d59f367d","path":"libraries/chain/database.cpp","line_range":"503-519","gmt_create":"2026-04-21T15:30:04.7613597+04:00","gmt_modified":"2026-04-21T15:30:04.7613597+04:00"},{"id":"0e9b1f9e1d1d19556ed50ab11d701180","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"61-68","gmt_create":"2026-04-21T15:30:04.7616243+04:00","gmt_modified":"2026-04-21T15:30:04.7616243+04:00"},{"id":"a7d8433fc6d55a59afc7ba4f5a2a32d5","path":"plugins/snapshot/plugin.cpp","line_range":"2135-2136","gmt_create":"2026-04-21T15:30:04.7616243+04:00","gmt_modified":"2026-04-21T15:30:04.7616243+04:00"},{"id":"6dec571af966adf5d77fa20a65c2d659","path":"libraries/chain/database.cpp","line_range":"704-752","gmt_create":"2026-04-21T15:30:04.7623669+04:00","gmt_modified":"2026-04-21T15:30:04.7623669+04:00"},{"id":"99ab830dc4812f05f72523b579a487e3","path":"libraries/chain/database.cpp","line_range":"3986-4039","gmt_create":"2026-04-21T15:30:04.764096+04:00","gmt_modified":"2026-04-21T15:30:04.764096+04:00"},{"id":"d0d042bd484b2bbc0c98e3b9e682b7db","path":"libraries/chain/database.cpp","line_range":"4144-4175","gmt_create":"2026-04-21T15:30:04.7646379+04:00","gmt_modified":"2026-04-21T15:30:04.7646379+04:00"},{"id":"5cbd06ffd00c865331403feb32ff85da","path":"libraries/chain/database.cpp","line_range":"4384-4424","gmt_create":"2026-04-21T15:30:04.7646379+04:00","gmt_modified":"2026-04-21T15:30:04.7646379+04:00"},{"id":"9c04d6593830449265de8e58d6da5ca9","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"70-73","gmt_create":"2026-04-21T15:30:04.7651713+04:00","gmt_modified":"2026-04-21T15:30:04.7651713+04:00"},{"id":"1f3bb0053108316e99dad887b8984f52","path":"libraries/chain/database.cpp","line_range":"292-292","gmt_create":"2026-04-21T15:30:04.7651713+04:00","gmt_modified":"2026-04-21T15:30:04.7651713+04:00"},{"id":"fbd7d962d15d88812122d9772306df11","path":"libraries/chain/database.cpp","line_range":"4460-4490","gmt_create":"2026-04-21T15:30:04.7662366+04:00","gmt_modified":"2026-04-21T15:30:04.7662366+04:00"},{"id":"0370b3c1adf528e9e76da6b6040e41c9","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"75-77","gmt_create":"2026-04-21T15:30:04.7662366+04:00","gmt_modified":"2026-04-21T15:30:04.7662366+04:00"},{"id":"8473a68190b3b5531da1208473455cc1","path":"libraries/chain/database.cpp","line_range":"1147-1202","gmt_create":"2026-04-21T15:30:04.7667673+04:00","gmt_modified":"2026-04-21T15:30:04.7667673+04:00"},{"id":"1162f44e77f6f98ad3482f528c20add0","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"79-96","gmt_create":"2026-04-21T15:30:04.7673028+04:00","gmt_modified":"2026-04-21T15:30:04.7673028+04:00"},{"id":"f891ad043959cc80589b9c9fd48c1544","path":"libraries/chain/database.cpp","line_range":"340-350","gmt_create":"2026-04-21T15:30:04.7678412+04:00","gmt_modified":"2026-04-21T15:30:04.7678412+04:00"},{"id":"62fcc55341cc86c03fcdb10c26f8eb3c","path":"libraries/chain/database.cpp","line_range":"4346-4366","gmt_create":"2026-04-21T15:30:04.7678412+04:00","gmt_modified":"2026-04-21T15:30:04.7678412+04:00"},{"id":"1f50af9f8c555cdfb0baa7cb29c7fd30","path":"libraries/chain/database.cpp","line_range":"948-970","gmt_create":"2026-04-21T15:30:04.7683646+04:00","gmt_modified":"2026-04-21T15:30:04.7683646+04:00"},{"id":"34a4a734b41732c137188fcf31c723b9","path":"libraries/chain/database.cpp","line_range":"3652-3711","gmt_create":"2026-04-21T15:30:04.7683646+04:00","gmt_modified":"2026-04-21T15:30:04.7683646+04:00"},{"id":"8a3a2a2a99dab8064a067d010f44e8e9","path":"libraries/chain/database.cpp","line_range":"639-673","gmt_create":"2026-04-21T15:30:04.7689149+04:00","gmt_modified":"2026-04-21T15:30:04.7689149+04:00"},{"id":"cad767850c269f0113035d1bbc4f6349","path":"libraries/chain/database.cpp","line_range":"562-605","gmt_create":"2026-04-21T15:30:04.7689149+04:00","gmt_modified":"2026-04-21T15:30:04.7689149+04:00"},{"id":"63a6bdbdee9342db7dc03b40a7c414ef","path":"libraries/chain/database.cpp","line_range":"412-422","gmt_create":"2026-04-21T15:30:04.7694491+04:00","gmt_modified":"2026-04-21T15:30:04.7694491+04:00"},{"id":"a5062d3a6ace4987fca2348f9a8e560c","path":"libraries/chain/database.cpp","line_range":"454-482","gmt_create":"2026-04-21T15:30:04.7694491+04:00","gmt_modified":"2026-04-21T15:30:04.7694491+04:00"},{"id":"72c4ace062ec4e5c5de0b6e82769cee3","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"148-164","gmt_create":"2026-04-21T15:30:04.7705304+04:00","gmt_modified":"2026-04-21T15:30:04.7705304+04:00"},{"id":"28f8369b7b78bb581a54f43abbad2630","path":"libraries/chain/database.cpp","line_range":"546-556","gmt_create":"2026-04-21T15:30:04.7705304+04:00","gmt_modified":"2026-04-21T15:30:04.7705304+04:00"},{"id":"2576ae4d890be609ca8a378656829511","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"631-632","gmt_create":"2026-04-21T15:30:04.7710625+04:00","gmt_modified":"2026-04-21T15:30:04.7710625+04:00"},{"id":"ac7785f3f2ab2c3e25df784cf097dc65","path":"libraries/chain/database.cpp","line_range":"1106-1145","gmt_create":"2026-04-21T15:30:04.7710625+04:00","gmt_modified":"2026-04-21T15:30:04.7710625+04:00"},{"id":"7511d9c5bfacc11c15e1b51a32236cc2","path":"libraries/chain/database.cpp","line_range":"1460-1470","gmt_create":"2026-04-21T15:30:04.7710625+04:00","gmt_modified":"2026-04-21T15:30:04.7710625+04:00"},{"id":"f2224a7a71c25f1fc0fad10ffb2d56bd","path":"libraries/chain/database.cpp","line_range":"3444-3499","gmt_create":"2026-04-21T15:30:04.7716538+04:00","gmt_modified":"2026-04-21T15:30:04.7716538+04:00"},{"id":"419e69541681369abacdf1c8a316d67c","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"218-224","gmt_create":"2026-04-21T15:30:04.7716538+04:00","gmt_modified":"2026-04-21T15:30:04.7716538+04:00"},{"id":"6d9c0eadddeb6216c880a1c40057ea75","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"284-307","gmt_create":"2026-04-21T15:30:04.7732724+04:00","gmt_modified":"2026-04-21T15:30:04.7732724+04:00"},{"id":"736c39f30231bbd09aec04cef70476a2","path":"libraries/chain/database.cpp","line_range":"1158-1198","gmt_create":"2026-04-21T15:30:04.7732724+04:00","gmt_modified":"2026-04-21T15:30:04.7732724+04:00"},{"id":"ce35e57c6f76040714ae4749d8a9f472","path":"libraries/chain/database.cpp","line_range":"3652-3655","gmt_create":"2026-04-21T15:30:04.7732724+04:00","gmt_modified":"2026-04-21T15:30:04.7732724+04:00"},{"id":"a6c82e1567b28de0ad8e70abe5a1e480","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"93-141","gmt_create":"2026-04-21T15:30:04.7738022+04:00","gmt_modified":"2026-04-21T15:30:04.7738022+04:00"},{"id":"f586da025600c4160546804b10db7f8a","path":"libraries/chain/database.cpp","line_range":"458-584","gmt_create":"2026-04-21T15:30:04.7738022+04:00","gmt_modified":"2026-04-21T15:30:04.7738022+04:00"},{"id":"30ce2f443549d3bb41ca3052b7be13dd","path":"libraries/chain/database.cpp","line_range":"2047-2144","gmt_create":"2026-04-21T15:30:04.7743464+04:00","gmt_modified":"2026-04-21T15:30:04.7743464+04:00"},{"id":"5d5f104357a87634f51432f49b92aef5","path":"libraries/chain/database.cpp","line_range":"4378-4416","gmt_create":"2026-04-21T15:30:04.7743464+04:00","gmt_modified":"2026-04-21T15:30:04.7743464+04:00"},{"id":"d9f187f4c40d91e8fdcdf7b5ef8b0754","path":"libraries/chain/database.cpp","line_range":"4220-4230","gmt_create":"2026-04-21T15:30:04.7748711+04:00","gmt_modified":"2026-04-21T15:30:04.7748711+04:00"},{"id":"0cdfb0cbf62a0e057c03eacd6dee840b","path":"libraries/chain/database.cpp","line_range":"4517-4620","gmt_create":"2026-04-21T15:30:04.7748711+04:00","gmt_modified":"2026-04-21T15:30:04.7748711+04:00"},{"id":"92f4f10a371df986c6158b05ac734805","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-10","gmt_create":"2026-04-21T15:30:04.775879+04:00","gmt_modified":"2026-04-21T15:30:04.775879+04:00"},{"id":"a730b509fdc5ec32fa2216c3ef6efa28","path":"libraries/chain/database.cpp","line_range":"1-30","gmt_create":"2026-04-21T15:30:04.775879+04:00","gmt_modified":"2026-04-21T15:30:04.775879+04:00"},{"id":"a4644f41f12ac8028286aa97c48c8444","path":"libraries/chain/database.cpp","line_range":"800-830","gmt_create":"2026-04-21T15:30:04.775879+04:00","gmt_modified":"2026-04-21T15:30:04.775879+04:00"},{"id":"515d489d84fcc81c4dd7f5a4d6dd0874","path":"libraries/chain/database.cpp","line_range":"270-279","gmt_create":"2026-04-21T15:30:04.775879+04:00","gmt_modified":"2026-04-21T15:30:04.775879+04:00"},{"id":"9d5546b7f51ade657d3816295d69febc","path":"libraries/chain/database.cpp","line_range":"492-501","gmt_create":"2026-04-21T15:30:04.7774485+04:00","gmt_modified":"2026-04-21T15:30:04.7774485+04:00"},{"id":"fd3d7adf0ba56e6838d4eea9abd1a60c","path":"programs/vizd/main.cpp","line_range":"106-158","gmt_create":"2026-04-21T15:32:31.2939112+04:00","gmt_modified":"2026-04-21T15:32:31.2939112+04:00"},{"id":"c758c39090ce29d48714f0b9bccdd27a","path":"share/vizd/config/config_witness.ini","line_range":"1-138","gmt_create":"2026-04-21T15:32:31.2944288+04:00","gmt_modified":"2026-04-21T15:32:31.2944288+04:00"},{"id":"f8f65271eaaf5c8cf0099898b63aa58b","path":"share/vizd/config/config_debug.ini","line_range":"1-126","gmt_create":"2026-04-21T15:32:31.2944288+04:00","gmt_modified":"2026-04-21T15:32:31.2944288+04:00"},{"id":"1abccbeca74c86c6e02b6a1f43ea43de","path":"share/vizd/config/config_mongo.ini","line_range":"1-135","gmt_create":"2026-04-21T15:32:31.2949469+04:00","gmt_modified":"2026-04-21T15:32:31.2949469+04:00"},{"id":"4f977fd57dca5490d16f1761432c725b","path":"share/vizd/config/config_debug_mongo.ini","line_range":"1-135","gmt_create":"2026-04-21T15:32:31.2954563+04:00","gmt_modified":"2026-04-21T15:32:31.2954563+04:00"},{"id":"c351a86da211936d631fd2e0bbe5b84f","path":"share/vizd/config/config_stock_exchange.ini","line_range":"1-114","gmt_create":"2026-04-21T15:32:31.2956584+04:00","gmt_modified":"2026-04-21T15:32:31.2956584+04:00"},{"id":"4626a48f7169b0da344b3d2d0691c633","path":"share/vizd/docker/Dockerfile-production","line_range":"74-87","gmt_create":"2026-04-21T15:32:31.2956584+04:00","gmt_modified":"2026-04-21T15:32:31.2956584+04:00"},{"id":"6f4e2776778cf6cc5a3739459544039a","path":"share/vizd/docker/Dockerfile-testnet","line_range":"75-87","gmt_create":"2026-04-21T15:32:31.2961627+04:00","gmt_modified":"2026-04-21T15:32:31.2961627+04:00"},{"id":"ee1d40f8b2421c8aa7b671906fdb4df4","path":"share/vizd/docker/Dockerfile-mongo","line_range":"97-110","gmt_create":"2026-04-21T15:32:31.2961627+04:00","gmt_modified":"2026-04-21T15:32:31.2961627+04:00"},{"id":"ec9ba1b0f4f923706b2454f1e16d5b95","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"68-81","gmt_create":"2026-04-21T15:32:31.2961627+04:00","gmt_modified":"2026-04-21T15:32:31.2961627+04:00"},{"id":"daf567477cad94f475b380e7ac8b5439","path":"share/vizd/config/config_witness.ini","line_range":"68-138","gmt_create":"2026-04-21T15:32:31.2977364+04:00","gmt_modified":"2026-04-21T15:32:31.2977364+04:00"},{"id":"b2d817a8ec09b559ad57bf66b06c348f","path":"share/vizd/config/config_debug.ini","line_range":"69-126","gmt_create":"2026-04-21T15:32:31.2977364+04:00","gmt_modified":"2026-04-21T15:32:31.2977364+04:00"},{"id":"673a61d7e56bc37ab36bf615a015181e","path":"share/vizd/config/config_mongo.ini","line_range":"69-135","gmt_create":"2026-04-21T15:32:31.2982785+04:00","gmt_modified":"2026-04-21T15:32:31.2982785+04:00"},{"id":"3e1083629fe0eed3f00704e1bc12b885","path":"share/vizd/config/config_testnet.ini","line_range":"69-132","gmt_create":"2026-04-21T15:32:31.2982785+04:00","gmt_modified":"2026-04-21T15:32:31.2982785+04:00"},{"id":"eabde1a6d322eb878522a47c6e25f070","path":"share/vizd/config/config_debug_mongo.ini","line_range":"69-135","gmt_create":"2026-04-21T15:32:31.2982785+04:00","gmt_modified":"2026-04-21T15:32:31.2982785+04:00"},{"id":"640968bf458b7eaea7e354dbae9e284a","path":"share/vizd/config/config_stock_exchange.ini","line_range":"69-114","gmt_create":"2026-04-21T15:32:31.2982785+04:00","gmt_modified":"2026-04-21T15:32:31.2982785+04:00"},{"id":"77477d1ed669fead148aaefdbfe9e6eb","path":"programs/vizd/main.cpp","line_range":"62-91","gmt_create":"2026-04-21T15:32:31.2989001+04:00","gmt_modified":"2026-04-21T15:32:31.2989001+04:00"},{"id":"b47f5a059c5d915b770896cc65d0c8cf","path":"plugins/witness/include/graphene/plugins/witness/witness.hpp","line_range":"34-65","gmt_create":"2026-04-21T15:32:31.2989001+04:00","gmt_modified":"2026-04-21T15:32:31.2989001+04:00"},{"id":"4f7612633c8054e6232c691aeaee651f","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"14-47","gmt_create":"2026-04-21T15:32:31.2989001+04:00","gmt_modified":"2026-04-21T15:32:31.2989001+04:00"},{"id":"e6d50b7511673592347fe0f11fd43f25","path":"plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp","line_range":"38-108","gmt_create":"2026-04-21T15:32:31.2994041+04:00","gmt_modified":"2026-04-21T15:32:31.2994041+04:00"},{"id":"3a51b02bba0881af0db105934c4af844","path":"share/vizd/config/config_witness.ini","line_range":"82-86","gmt_create":"2026-04-21T15:32:31.3004502+04:00","gmt_modified":"2026-04-21T15:32:31.3004502+04:00"},{"id":"3847e2a600af28cffb5115ff6f5e62cf","path":"plugins/witness/include/graphene/plugins/witness/witness.hpp","line_range":"20-32","gmt_create":"2026-04-21T15:32:31.3004502+04:00","gmt_modified":"2026-04-21T15:32:31.3004502+04:00"},{"id":"b79ce070ba281e1e209405be0e760eb7","path":"plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp","line_range":"62-90","gmt_create":"2026-04-21T15:32:31.3014948+04:00","gmt_modified":"2026-04-21T15:32:31.3014948+04:00"},{"id":"8204ffe8ec3fe064393dd8aa8a78dd01","path":"documentation/debug_node_plugin.md","line_range":"50-134","gmt_create":"2026-04-21T15:32:31.3014948+04:00","gmt_modified":"2026-04-21T15:32:31.3014948+04:00"},{"id":"b7ed71ac14b0cfe504186b5e57353c1b","path":"documentation/testnet.md","line_range":"21-37","gmt_create":"2026-04-21T15:32:31.3026991+04:00","gmt_modified":"2026-04-21T15:32:31.3026991+04:00"},{"id":"56b0a9ddc7fe94bac06d4fb19fb41e1b","path":"share/vizd/config/config.ini","line_range":"7-12","gmt_create":"2026-04-21T15:32:31.3032038+04:00","gmt_modified":"2026-04-21T15:32:31.3032038+04:00"},{"id":"f914faa6473460331ff4a6c73ec1f80b","path":"share/vizd/config/config.ini","line_range":"22-67","gmt_create":"2026-04-21T15:32:31.3047781+04:00","gmt_modified":"2026-04-21T15:32:31.3047781+04:00"},{"id":"85a14684582fcab24235497917acf330","path":"share/vizd/config/config_witness.ini","line_range":"76-86","gmt_create":"2026-04-21T15:32:31.3047781+04:00","gmt_modified":"2026-04-21T15:32:31.3047781+04:00"},{"id":"76966124f3896db36029f4ac32bf2437","path":"share/vizd/config/config_debug.ini","line_range":"95-105","gmt_create":"2026-04-21T15:32:31.3047781+04:00","gmt_modified":"2026-04-21T15:32:31.3047781+04:00"},{"id":"c7c0dcd57e34a1a1314bbe3179487c7d","path":"share/vizd/config/config_mongo.ini","line_range":"71-72","gmt_create":"2026-04-21T15:32:31.3047781+04:00","gmt_modified":"2026-04-21T15:32:31.3047781+04:00"},{"id":"69fc08520a82976c71671ea261b7cb6e","path":"share/vizd/config/config_stock_exchange.ini","line_range":"22-34","gmt_create":"2026-04-21T15:32:31.3053075+04:00","gmt_modified":"2026-04-21T15:32:31.3053075+04:00"},{"id":"4c9808b45cc8214948247f9c028c449e","path":"libraries/network/include/graphene/network/node.hpp","line_range":"190-304","gmt_create":"2026-04-21T15:56:02.4682992+04:00","gmt_modified":"2026-04-21T15:56:02.4682992+04:00"},{"id":"f3e64d0f15916610b56b4984629897eb","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"79-351","gmt_create":"2026-04-21T15:56:02.4688326+04:00","gmt_modified":"2026-04-21T15:56:02.4688326+04:00"},{"id":"bd53d927e426e2adc3ba3e67de570e14","path":"libraries/network/include/graphene/network/message.hpp","line_range":"42-106","gmt_create":"2026-04-21T15:56:02.4688326+04:00","gmt_modified":"2026-04-21T15:56:02.4688326+04:00"},{"id":"73e0e7e26abf65a9313e01fa4e09dfca","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"72-573","gmt_create":"2026-04-21T15:56:02.4688326+04:00","gmt_modified":"2026-04-21T15:56:02.4688326+04:00"},{"id":"51e8273797f43b8343be1a56f19fb908","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"37-93","gmt_create":"2026-04-21T15:56:02.4688326+04:00","gmt_modified":"2026-04-21T15:56:02.4688326+04:00"},{"id":"e1d125a8c8480d30e5a2c6c4892aabbc","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"45-79","gmt_create":"2026-04-21T15:56:02.4698408+04:00","gmt_modified":"2026-04-21T15:56:02.4698408+04:00"},{"id":"ef38e28fe50f9c7ca231d642c3466329","path":"libraries/network/include/graphene/network/node.hpp","line_range":"1-355","gmt_create":"2026-04-21T15:56:02.4698408+04:00","gmt_modified":"2026-04-21T15:56:02.4698408+04:00"},{"id":"94a21f01af8f906ea628560bd3a4c163","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"1-383","gmt_create":"2026-04-21T15:56:02.470838+04:00","gmt_modified":"2026-04-21T15:56:02.470838+04:00"},{"id":"2bfc000edc3254405fc76c016ce54bc5","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"1-573","gmt_create":"2026-04-21T15:56:02.470838+04:00","gmt_modified":"2026-04-21T15:56:02.470838+04:00"},{"id":"642441460b648f34dc507aa5fa5722e6","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"1-99","gmt_create":"2026-04-21T15:56:02.470838+04:00","gmt_modified":"2026-04-21T15:56:02.470838+04:00"},{"id":"e4d612794fd6c5cbd0dc716c92d3480b","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"1-141","gmt_create":"2026-04-21T15:56:02.470838+04:00","gmt_modified":"2026-04-21T15:56:02.470838+04:00"},{"id":"154cd3cd3425e81e25e006bb710aef58","path":"libraries/network/include/graphene/network/message.hpp","line_range":"1-114","gmt_create":"2026-04-21T15:56:02.470838+04:00","gmt_modified":"2026-04-21T15:56:02.470838+04:00"},{"id":"86453e8b58e697e5fd190c8a61937802","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"1-85","gmt_create":"2026-04-21T15:56:02.4718375+04:00","gmt_modified":"2026-04-21T15:56:02.4718375+04:00"},{"id":"39d7a939d31b3c894ef58a3051855c99","path":"libraries/network/include/graphene/network/config.hpp","line_range":"1-106","gmt_create":"2026-04-21T15:56:02.4718375+04:00","gmt_modified":"2026-04-21T15:56:02.4718375+04:00"},{"id":"9a04e26ab83b6cd6497006db9e99b1e0","path":"libraries/network/include/graphene/network/node.hpp","line_range":"182-304","gmt_create":"2026-04-21T15:56:02.4718375+04:00","gmt_modified":"2026-04-21T15:56:02.4718375+04:00"},{"id":"7a227c19adaff4de6610f94bf4e96ad7","path":"libraries/network/node.cpp","line_range":"780-790","gmt_create":"2026-04-21T15:56:02.474507+04:00","gmt_modified":"2026-04-21T15:56:02.474507+04:00"},{"id":"28741bf9645e08261adc7734c70b8361","path":"libraries/network/peer_connection.cpp","line_range":"208-242","gmt_create":"2026-04-21T15:56:02.474507+04:00","gmt_modified":"2026-04-21T15:56:02.474507+04:00"},{"id":"134b1ec357374c1e4de9f1f9dd5a4497","path":"libraries/network/stcp_socket.cpp","line_range":"69-72","gmt_create":"2026-04-21T15:56:02.4750168+04:00","gmt_modified":"2026-04-21T15:56:02.4750168+04:00"},{"id":"56976108609a53bc4588a840285eb1cd","path":"libraries/network/node.cpp","line_range":"424-799","gmt_create":"2026-04-21T15:56:02.4756238+04:00","gmt_modified":"2026-04-21T15:56:02.4756238+04:00"},{"id":"3c503dce774e20257775c00826d8f5cb","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"82-106","gmt_create":"2026-04-21T15:56:02.4766488+04:00","gmt_modified":"2026-04-21T15:56:02.4766488+04:00"},{"id":"40c1aeb5940e13e5043dab3511da4bf5","path":"libraries/network/peer_connection.cpp","line_range":"41-66","gmt_create":"2026-04-21T15:56:02.4776991+04:00","gmt_modified":"2026-04-21T15:56:02.4776991+04:00"},{"id":"26e45e7ec616f7e322bad8ce47216277","path":"libraries/network/peer_connection.cpp","line_range":"310-354","gmt_create":"2026-04-21T15:56:02.4776991+04:00","gmt_modified":"2026-04-21T15:56:02.4776991+04:00"},{"id":"a19a1b4be38ce1ae309e895ef40dbb73","path":"libraries/network/core_messages.cpp","line_range":"30-49","gmt_create":"2026-04-21T15:56:02.4783269+04:00","gmt_modified":"2026-04-21T15:56:02.4783269+04:00"},{"id":"ae5529e86367f56b5d03bb968150da4d","path":"libraries/network/stcp_socket.cpp","line_range":"49-72","gmt_create":"2026-04-21T15:56:02.4798749+04:00","gmt_modified":"2026-04-21T15:56:02.4798749+04:00"},{"id":"cdd97b3b31d2f6f78ebbdab686ade7b3","path":"libraries/network/stcp_socket.cpp","line_range":"132-177","gmt_create":"2026-04-21T15:56:02.4801852+04:00","gmt_modified":"2026-04-21T15:56:02.4801852+04:00"},{"id":"360efa90cd6999cde8f070be49628512","path":"libraries/network/stcp_socket.cpp","line_range":"49-177","gmt_create":"2026-04-21T15:56:02.4806904+04:00","gmt_modified":"2026-04-21T15:56:02.4806904+04:00"},{"id":"4cae612e2a1da076967e2db2af5bd3c5","path":"libraries/network/peer_database.cpp","line_range":"41-82","gmt_create":"2026-04-21T15:56:02.4812226+04:00","gmt_modified":"2026-04-21T15:56:02.4812226+04:00"},{"id":"c16d714a5e83ef07a1d8e850562b3249","path":"libraries/network/peer_database.cpp","line_range":"100-174","gmt_create":"2026-04-21T15:56:02.4817529+04:00","gmt_modified":"2026-04-21T15:56:02.4817529+04:00"},{"id":"652640f4ecd98b067898764d939b1576","path":"libraries/network/include/graphene/network/message.hpp","line_range":"70-105","gmt_create":"2026-04-21T15:56:02.4822823+04:00","gmt_modified":"2026-04-21T15:56:02.4822823+04:00"},{"id":"64f43f37d8e783f40ae5ad401902bab3","path":"libraries/network/node.cpp","line_range":"3710-3723","gmt_create":"2026-04-21T15:56:02.4828068+04:00","gmt_modified":"2026-04-21T15:56:02.4828068+04:00"},{"id":"ae13127d7665db8e1646bd3539b3a9d4","path":"libraries/network/node.cpp","line_range":"312-381","gmt_create":"2026-04-21T15:56:02.4828068+04:00","gmt_modified":"2026-04-21T15:56:02.4828068+04:00"},{"id":"fd1882a4f5928d935ae09849d9fdfdb1","path":"libraries/network/node.cpp","line_range":"383-420","gmt_create":"2026-04-21T15:56:02.4828068+04:00","gmt_modified":"2026-04-21T15:56:02.4828068+04:00"},{"id":"140ef12d87c750788fc20315395d74bc","path":"libraries/network/include/graphene/network/node.hpp","line_range":"173-179","gmt_create":"2026-04-21T15:56:02.4828068+04:00","gmt_modified":"2026-04-21T15:56:02.4828068+04:00"},{"id":"f63564c3e06f67088b86791ce7e6e0bb","path":"libraries/network/node.cpp","line_range":"4920-4970","gmt_create":"2026-04-21T15:56:02.4838127+04:00","gmt_modified":"2026-04-21T15:56:02.4838127+04:00"},{"id":"9e22b541b5e1bff359a6e0f014c993b3","path":"libraries/network/node.cpp","line_range":"5128-5131","gmt_create":"2026-04-21T15:56:02.4843172+04:00","gmt_modified":"2026-04-21T15:56:02.4843172+04:00"},{"id":"702eb271c3f420accb2a5afcb5628d1d","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"322-346","gmt_create":"2026-04-21T15:56:02.4843172+04:00","gmt_modified":"2026-04-21T15:56:02.4843172+04:00"},{"id":"7ab814a8539011c4d23ec1eb74941b3e","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"428-448","gmt_create":"2026-04-21T15:56:02.4843172+04:00","gmt_modified":"2026-04-21T15:56:02.4843172+04:00"},{"id":"c55228ab1fcfca5c9d71ea8236707e15","path":"libraries/network/include/graphene/network/node.hpp","line_range":"26-28","gmt_create":"2026-04-21T15:56:02.4853203+04:00","gmt_modified":"2026-04-21T15:56:02.4853203+04:00"},{"id":"81b2f4f8f38aa2cc8450eece0819b1b9","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"26-29","gmt_create":"2026-04-21T15:56:02.4853203+04:00","gmt_modified":"2026-04-21T15:56:02.4853203+04:00"},{"id":"d06fc379123070888b492f3273b63a65","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"26-28","gmt_create":"2026-04-21T15:56:02.4853203+04:00","gmt_modified":"2026-04-21T15:56:02.4853203+04:00"},{"id":"e285117d124780371406d47361f47d0b","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"26-28","gmt_create":"2026-04-21T15:56:02.4853203+04:00","gmt_modified":"2026-04-21T15:56:02.4853203+04:00"},{"id":"dfa117c22b4c14cbb5722e7ef0134aa3","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"26-27","gmt_create":"2026-04-21T15:56:02.4853203+04:00","gmt_modified":"2026-04-21T15:56:02.4853203+04:00"},{"id":"ad638fd17d802b229735469514a8ea20","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"39-45","gmt_create":"2026-04-21T15:56:02.4883284+04:00","gmt_modified":"2026-04-21T15:56:02.4883284+04:00"},{"id":"23342fa016b253b100a28bcbfd13c5e2","path":"libraries/network/include/graphene/network/node.hpp","line_range":"288-298","gmt_create":"2026-04-21T15:56:02.488834+04:00","gmt_modified":"2026-04-21T15:56:02.488834+04:00"},{"id":"ced32203d2d382e7209d64d79aa7f2a4","path":"libraries/network/include/graphene/network/message.hpp","line_range":"85-105","gmt_create":"2026-04-21T15:56:02.4898406+04:00","gmt_modified":"2026-04-21T15:56:02.4898406+04:00"},{"id":"cd9da93f4e658ab70fefdc0acf48bfc3","path":"share/vizd/config/config.ini","line_range":"1-130","gmt_create":"2026-04-21T15:57:28.9845328+04:00","gmt_modified":"2026-04-21T15:57:28.9845328+04:00"},{"id":"a69a24541084384de57bc647b3ba361e","path":"share/vizd/vizd.sh","line_range":"1-82","gmt_create":"2026-04-21T15:57:28.9845328+04:00","gmt_modified":"2026-04-21T15:57:28.9845328+04:00"},{"id":"29e3a849850e5201a980bcd1b117d5a9","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"1-62","gmt_create":"2026-04-21T15:57:28.9845328+04:00","gmt_modified":"2026-04-21T15:57:28.9845328+04:00"},{"id":"21feadcae02d52c435c35c80eea18b5a","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"1-146","gmt_create":"2026-04-21T15:57:28.9845328+04:00","gmt_modified":"2026-04-21T15:57:28.9845328+04:00"},{"id":"16b73e305bf098e5215ed015a758c60e","path":"plugins/p2p/p2p_plugin.cpp","line_range":"489-560","gmt_create":"2026-04-21T15:57:28.9850355+04:00","gmt_modified":"2026-04-21T15:57:28.9850355+04:00"},{"id":"2663855afc30e579f61e7d97020a2f69","path":"README.md","line_range":"1-53","gmt_create":"2026-04-21T15:57:28.9850355+04:00","gmt_modified":"2026-04-21T15:57:28.9850355+04:00"},{"id":"179eae2bdbae82637c182b728cf2cecb","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"19-31","gmt_create":"2026-04-21T15:57:28.9855518+04:00","gmt_modified":"2026-04-21T15:57:28.9855518+04:00"},{"id":"70d6dbcd9940748dd3688dec5582982a","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"13-36","gmt_create":"2026-04-21T15:57:28.9855518+04:00","gmt_modified":"2026-04-21T15:57:28.9855518+04:00"},{"id":"ca4ab7933cc4e77dfe8ae01a0c049d05","path":"share/vizd/vizd.sh","line_range":"62-81","gmt_create":"2026-04-21T15:57:28.9860904+04:00","gmt_modified":"2026-04-21T15:57:28.9860904+04:00"},{"id":"0b3517467b4def3ef0f8d54455b9523c","path":"plugins/p2p/p2p_plugin.cpp","line_range":"570-589","gmt_create":"2026-04-21T15:57:28.9866304+04:00","gmt_modified":"2026-04-21T15:57:28.9866304+04:00"},{"id":"a08c0d0712941934559cd718be033130","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"103-113","gmt_create":"2026-04-21T15:57:28.9866304+04:00","gmt_modified":"2026-04-21T15:57:28.9866304+04:00"},{"id":"61e031ec1026138d70ad5a2c41c13b2e","path":"plugins/database_api/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9871694+04:00","gmt_modified":"2026-04-21T15:57:28.9871694+04:00"},{"id":"47c52ba0d825f62d208e68c367211370","path":"share/vizd/config/config.ini","line_range":"16-20","gmt_create":"2026-04-21T15:57:28.9871694+04:00","gmt_modified":"2026-04-21T15:57:28.9871694+04:00"},{"id":"5cc29dd694b27150d17b9a3b20a69de8","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"48-52","gmt_create":"2026-04-21T15:57:28.9871694+04:00","gmt_modified":"2026-04-21T15:57:28.9871694+04:00"},{"id":"c524e6ae861831d5eb348ce30d6f7328","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"103-107","gmt_create":"2026-04-21T15:57:28.9877023+04:00","gmt_modified":"2026-04-21T15:57:28.9877023+04:00"},{"id":"e4d9f21f769ce4228f96df028e3e997c","path":"libraries/network/include/graphene/network/node.hpp","line_range":"172-179","gmt_create":"2026-04-21T15:57:28.9882237+04:00","gmt_modified":"2026-04-21T15:57:28.9882237+04:00"},{"id":"edf400f832fe8ddce11c6a86ad0819d0","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"320-342","gmt_create":"2026-04-21T15:57:28.9882237+04:00","gmt_modified":"2026-04-21T15:57:28.9882237+04:00"},{"id":"45d68c85adf811d4d179c52a947bf612","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"28-30","gmt_create":"2026-04-21T15:57:28.9882237+04:00","gmt_modified":"2026-04-21T15:57:28.9882237+04:00"},{"id":"df364d05777ec16508493d2d4c99707a","path":"plugins/p2p/p2p_plugin.cpp","line_range":"685-692","gmt_create":"2026-04-21T15:57:28.9887388+04:00","gmt_modified":"2026-04-21T15:57:28.9887388+04:00"},{"id":"bf80172039e326eadb2f6aa84c1f7ffc","path":"share/vizd/config/config.ini","line_range":"111-130","gmt_create":"2026-04-21T15:57:28.9887388+04:00","gmt_modified":"2026-04-21T15:57:28.9887388+04:00"},{"id":"821616e0ed0d4912716616d4554297b2","path":"share/vizd/vizd.sh","line_range":"62-72","gmt_create":"2026-04-21T15:57:28.9887388+04:00","gmt_modified":"2026-04-21T15:57:28.9887388+04:00"},{"id":"21bc88ff0e0497e6f99b8294446f75bf","path":"plugins/p2p/p2p_plugin.cpp","line_range":"15-17","gmt_create":"2026-04-21T15:57:28.9892587+04:00","gmt_modified":"2026-04-21T15:57:28.9892587+04:00"},{"id":"68d7477b38e6bcbf08f2b34ba98d7b72","path":"share/vizd/config/config.ini","line_range":"49-67","gmt_create":"2026-04-21T15:57:28.9892587+04:00","gmt_modified":"2026-04-21T15:57:28.9892587+04:00"},{"id":"0cb7084d820b15fef3e5e73c72aa1d7f","path":"share/vizd/vizd.sh","line_range":"44-53","gmt_create":"2026-04-21T15:57:28.9892587+04:00","gmt_modified":"2026-04-21T15:57:28.9892587+04:00"},{"id":"f0f6538eacf86c560137434c114af69b","path":"share/vizd/config/config.ini","line_range":"13-47","gmt_create":"2026-04-21T15:57:28.9897763+04:00","gmt_modified":"2026-04-21T15:57:28.9897763+04:00"},{"id":"25ccc79e1b45c77f7730bfdbb6d4f92b","path":"plugins/p2p/p2p_plugin.cpp","line_range":"510-530","gmt_create":"2026-04-21T15:57:28.9897763+04:00","gmt_modified":"2026-04-21T15:57:28.9897763+04:00"},{"id":"e1dc526112e9b2821473d75cb1df0ca9","path":"documentation/building.md","line_range":"1-212","gmt_create":"2026-04-21T15:57:28.990298+04:00","gmt_modified":"2026-04-21T15:57:28.990298+04:00"},{"id":"8a8c8bda0bcc71ad28464a215d311958","path":"README.md","line_range":"12-29","gmt_create":"2026-04-21T15:57:28.990298+04:00","gmt_modified":"2026-04-21T15:57:28.990298+04:00"},{"id":"4015fb3cab77d0da4f1b816271be9949","path":"share/vizd/vizd.sh","line_range":"47-48","gmt_create":"2026-04-21T15:57:28.990298+04:00","gmt_modified":"2026-04-21T15:57:28.990298+04:00"},{"id":"df001d9a27f5ba2d6b5033ac67103d58","path":"share/vizd/config/config.ini","line_range":"13-14","gmt_create":"2026-04-21T15:57:28.9908281+04:00","gmt_modified":"2026-04-21T15:57:28.9908281+04:00"},{"id":"0a2a211af5e6b3a4c40670f74bc2a6e8","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"38-38","gmt_create":"2026-04-21T15:57:28.9913408+04:00","gmt_modified":"2026-04-21T15:57:28.9913408+04:00"},{"id":"eed32e73c8436816efba7117d80aad64","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"84-92","gmt_create":"2026-04-21T15:57:28.9913408+04:00","gmt_modified":"2026-04-21T15:57:28.9913408+04:00"},{"id":"ab84791989e03b9f71c46fdfdccdb602","path":"plugins/chain/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9918561+04:00","gmt_modified":"2026-04-21T15:57:28.9918561+04:00"},{"id":"d3dc18f36c6280ddb7ec6db67e725d88","path":"share/vizd/config/config.ini","line_range":"36-40","gmt_create":"2026-04-21T15:57:28.9937662+04:00","gmt_modified":"2026-04-21T15:57:28.9937662+04:00"},{"id":"885a9177295fa8885934f629e1eddc2b","path":"share/vizd/config/config.ini","line_range":"22-34","gmt_create":"2026-04-21T15:57:28.9937662+04:00","gmt_modified":"2026-04-21T15:57:28.9937662+04:00"},{"id":"5fbde568358ad17dc5bd5fc9b6776d67","path":"share/vizd/config/config.ini","line_range":"1-8","gmt_create":"2026-04-21T15:57:28.9943527+04:00","gmt_modified":"2026-04-21T15:57:28.9943527+04:00"},{"id":"d2799b1f16c8056f30cbdba9c608626d","path":"share/vizd/vizd.sh","line_range":"9-29","gmt_create":"2026-04-21T15:57:28.9943527+04:00","gmt_modified":"2026-04-21T15:57:28.9943527+04:00"},{"id":"17b57d98518d55255a9cbf07ea419d6a","path":"share/vizd/config/config.ini","line_range":"22-40","gmt_create":"2026-04-21T15:57:28.9943527+04:00","gmt_modified":"2026-04-21T15:57:28.9943527+04:00"},{"id":"c29f8441fe27290770ebda76521eac43","path":"plugins/p2p/p2p_plugin.cpp","line_range":"508-552","gmt_create":"2026-04-21T15:57:28.9948571+04:00","gmt_modified":"2026-04-21T15:57:28.9948571+04:00"},{"id":"fd03124b7070007bfd50f9d2cb2ca67d","path":"plugins/account_history/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9948571+04:00","gmt_modified":"2026-04-21T15:57:28.9948571+04:00"},{"id":"78a80141a72a91984e8b21280bfc28f2","path":"plugins/operation_history/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9953878+04:00","gmt_modified":"2026-04-21T15:57:28.9953878+04:00"},{"id":"5b34a67d4243c9b1a0f8409302fb3919","path":"plugins/p2p/p2p_plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9953878+04:00","gmt_modified":"2026-04-21T15:57:28.9953878+04:00"},{"id":"84d30a358c8725c09f516b87f5d501f2","path":"plugins/network_broadcast_api/network_broadcast_api.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9953878+04:00","gmt_modified":"2026-04-21T15:57:28.9953878+04:00"},{"id":"30129b27709b024b5cbb8632f96423e8","path":"plugins/witness_api/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9953878+04:00","gmt_modified":"2026-04-21T15:57:28.9953878+04:00"},{"id":"7f7ea5acbd1bd158d4bc3f748543593b","path":"plugins/block_info/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9953878+04:00","gmt_modified":"2026-04-21T15:57:28.9953878+04:00"},{"id":"3ff1eb0df8f2318b660684c306e4fe18","path":"plugins/raw_block/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9959191+04:00","gmt_modified":"2026-04-21T15:57:28.9959191+04:00"},{"id":"7cf3493cf3f1aea0973642ec4ddd6af2","path":"plugins/debug_node/plugin.cpp","line_range":"1-200","gmt_create":"2026-04-21T15:57:28.9959191+04:00","gmt_modified":"2026-04-21T15:57:28.9959191+04:00"},{"id":"51e5b540b780cb77a17287085d7621f9","path":"install-deps-linux.sh","line_range":"1-113","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"9fd632e8659c7f32c281644c67acb734","path":"build-linux.sh","line_range":"1-191","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"e7c2a58f6ddf39d12b83f33ba6e80c3e","path":"build-mac.sh","line_range":"1-242","gmt_create":"2026-04-21T16:26:14.408945+04:00","gmt_modified":"2026-04-21T16:26:14.408945+04:00"},{"id":"32a2d62cc1c57934e075da026dbf2f89","path":"programs/build_helpers/CMakeLists.txt","line_range":"1-8","gmt_create":"2026-04-21T16:26:14.408945+04:00","gmt_modified":"2026-04-21T16:26:14.408945+04:00"},{"id":"d74506dfcf8e18814af65d9ea1ab35de","path":"programs/util/CMakeLists.txt","line_range":"1-69","gmt_create":"2026-04-21T16:26:14.4094483+04:00","gmt_modified":"2026-04-21T16:26:14.4094483+04:00"},{"id":"ab55f798eabaf3585e51f7e1322063ec","path":"documentation/building.md","line_range":"183-220","gmt_create":"2026-04-21T16:26:14.4100711+04:00","gmt_modified":"2026-04-21T16:26:14.4100711+04:00"},{"id":"32dedde539c0f492b56c6bc1f38cd0f0","path":"build-linux.sh","line_range":"17-29","gmt_create":"2026-04-21T16:26:14.4100711+04:00","gmt_modified":"2026-04-21T16:26:14.4100711+04:00"},{"id":"0b93309fbf8b897d5f7d4af28485f767","path":"build-mac.sh","line_range":"15-26","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"23379f07290d5deea02a833accc4f72d","path":"programs/build_helpers/cat-parts.cpp","line_range":"1-68","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"a7f71b8eb346f6812e60139d849614c4","path":"programs/build_helpers/cat_parts.py","line_range":"1-74","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"5c86456e81518432422619fbb4597d43","path":"programs/build_helpers/check_reflect.py","line_range":"1-160","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"6eee2bca096c4f6719b5bf67577d4935","path":"programs/util/newplugin.py","line_range":"1-251","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"9eeb9e4a34009e137d405902417a3a21","path":"programs/util/pretty_schema.py","line_range":"1-28","gmt_create":"2026-04-21T16:26:14.4105737+04:00","gmt_modified":"2026-04-21T16:26:14.4105737+04:00"},{"id":"1ab68b979774178055cf5be09ba010dd","path":"programs/util/schema_test.cpp","line_range":"1-57","gmt_create":"2026-04-21T16:26:14.4115764+04:00","gmt_modified":"2026-04-21T16:26:14.4115764+04:00"},{"id":"621bc84bf3f86ca533eb8eb91f62383f","path":"programs/build_helpers/configure_build.py","line_range":"1-202","gmt_create":"2026-04-21T16:26:14.4115764+04:00","gmt_modified":"2026-04-21T16:26:14.4115764+04:00"},{"id":"afb46e7f12fa61be4925cf6c5c3e0677","path":"install-deps-linux.sh","line_range":"28-106","gmt_create":"2026-04-21T16:26:14.4115764+04:00","gmt_modified":"2026-04-21T16:26:14.4115764+04:00"},{"id":"27329b3455bb48b75b0c227eba4e7675","path":"build-linux.sh","line_range":"63-98","gmt_create":"2026-04-21T16:26:14.4121405+04:00","gmt_modified":"2026-04-21T16:26:14.4121405+04:00"},{"id":"4d24ec34fca7e727433f419eea43acfc","path":"build-linux.sh","line_range":"120-128","gmt_create":"2026-04-21T16:26:14.4121405+04:00","gmt_modified":"2026-04-21T16:26:14.4121405+04:00"},{"id":"1f1975afafa74b8181d99dc97cf9c7b9","path":"programs/build_helpers/cat-parts.cpp","line_range":"7-68","gmt_create":"2026-04-21T16:26:14.4127013+04:00","gmt_modified":"2026-04-21T16:26:14.4127013+04:00"},{"id":"c43c611c9dde8f2551f40d6accc85798","path":"programs/build_helpers/cat_parts.py","line_range":"28-74","gmt_create":"2026-04-21T16:26:14.413267+04:00","gmt_modified":"2026-04-21T16:26:14.413267+04:00"},{"id":"fd50d7f490cd95e901605c599cb6b808","path":"programs/build_helpers/check_reflect.py","line_range":"44-160","gmt_create":"2026-04-21T16:26:14.4137697+04:00","gmt_modified":"2026-04-21T16:26:14.4137697+04:00"},{"id":"5e1ce3aca99e62fc8f169952b907af51","path":"programs/util/newplugin.py","line_range":"225-247","gmt_create":"2026-04-21T16:26:14.4137697+04:00","gmt_modified":"2026-04-21T16:26:14.4137697+04:00"},{"id":"684690fffcc7879904329b01c22fc01c","path":"programs/util/pretty_schema.py","line_range":"9-27","gmt_create":"2026-04-21T16:26:14.4137697+04:00","gmt_modified":"2026-04-21T16:26:14.4137697+04:00"},{"id":"8139981360dac7647f63c407ce4963bd","path":"programs/util/schema_test.cpp","line_range":"15-56","gmt_create":"2026-04-21T16:26:14.4150356+04:00","gmt_modified":"2026-04-21T16:26:14.4150356+04:00"},{"id":"32769cfba52c72dcc80e8fcfbf574a29","path":"programs/build_helpers/configure_build.py","line_range":"143-196","gmt_create":"2026-04-21T16:26:14.4155382+04:00","gmt_modified":"2026-04-21T16:26:14.4155382+04:00"},{"id":"79d466d586fbb7f5be487c7b23e48bb1","path":"install-deps-linux.sh","line_range":"34-106","gmt_create":"2026-04-21T16:26:14.4155382+04:00","gmt_modified":"2026-04-21T16:26:14.4155382+04:00"},{"id":"dea1585ea380a2d0e65af090ab376670","path":"build-linux.sh","line_range":"155-165","gmt_create":"2026-04-21T16:26:14.4155382+04:00","gmt_modified":"2026-04-21T16:26:14.4155382+04:00"},{"id":"471f9379e6fa05c65eb8377330f4f79c","path":"build-mac.sh","line_range":"126-171","gmt_create":"2026-04-21T16:26:14.4155382+04:00","gmt_modified":"2026-04-21T16:26:14.4155382+04:00"},{"id":"916bcb2c609dddf634c4359361caf193","path":"programs/build_helpers/cat-parts.cpp","line_range":"1-6","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"5459af8d7ebdab15fd37c09db2a41dd6","path":"programs/build_helpers/cat_parts.py","line_range":"3-4","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"fc71f5e8f1d5740b4c1cb5292074801e","path":"programs/build_helpers/check_reflect.py","line_range":"3-6","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"67bf08b01d6bb0bd99689730f120072b","path":"programs/util/newplugin.py","line_range":"1-2","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"7ef688071083aeae57c7b536c60104a4","path":"programs/util/pretty_schema.py","line_range":"3-5","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"46094abe04c1acaf291e445e04283cd6","path":"programs/util/schema_test.cpp","line_range":"1-3","gmt_create":"2026-04-21T16:26:14.416541+04:00","gmt_modified":"2026-04-21T16:26:14.416541+04:00"},{"id":"4c975236f257bd6b6687ea60cfc84a64","path":"programs/build_helpers/configure_build.py","line_range":"3-6","gmt_create":"2026-04-21T16:26:14.4176405+04:00","gmt_modified":"2026-04-21T16:26:14.4176405+04:00"},{"id":"3c9e25a94a6728f8cb52f2d99771b702","path":"programs/build_helpers/cat-parts.cpp","line_range":"4-33","gmt_create":"2026-04-21T16:26:14.4195168+04:00","gmt_modified":"2026-04-21T16:26:14.4195168+04:00"},{"id":"f5a3f2574d8fda749d7937a2ae0861d0","path":"install-deps-linux.sh","line_range":"28-31","gmt_create":"2026-04-21T16:26:14.4200196+04:00","gmt_modified":"2026-04-21T16:26:14.4200196+04:00"},{"id":"1778fb55304511509ff6a6843a113239","path":"build-linux.sh","line_range":"57-61","gmt_create":"2026-04-21T16:26:14.4200196+04:00","gmt_modified":"2026-04-21T16:26:14.4200196+04:00"},{"id":"bb880145c71667714a9ba7f7c9985047","path":"build-linux.sh","line_range":"83-84","gmt_create":"2026-04-21T16:26:14.4200196+04:00","gmt_modified":"2026-04-21T16:26:14.4200196+04:00"},{"id":"86184d9e91fba06e8c2dc6051c28e321","path":"build-mac.sh","line_range":"108-114","gmt_create":"2026-04-21T16:26:14.4210229+04:00","gmt_modified":"2026-04-21T16:26:14.4210229+04:00"},{"id":"332469374bbfba511992be994037dcc0","path":"build-mac.sh","line_range":"118-122","gmt_create":"2026-04-21T16:26:14.4210229+04:00","gmt_modified":"2026-04-21T16:26:14.4210229+04:00"},{"id":"7d6fbfbc03bef0db87e825d07ad80e15","path":"build-mac.sh","line_range":"71-72","gmt_create":"2026-04-21T16:26:14.4210229+04:00","gmt_modified":"2026-04-21T16:26:14.4210229+04:00"},{"id":"7c0820ab6c0cbfbbea453df44ff0ef46","path":"programs/build_helpers/cat-parts.cpp","line_range":"8-11","gmt_create":"2026-04-21T16:26:14.4210229+04:00","gmt_modified":"2026-04-21T16:26:14.4210229+04:00"},{"id":"ec71db05535b6e1ae68af2cf5252a5a5","path":"programs/build_helpers/cat_parts.py","line_range":"29-36","gmt_create":"2026-04-21T16:26:14.4210229+04:00","gmt_modified":"2026-04-21T16:26:14.4210229+04:00"},{"id":"11c3ab42f87ad593d30a8495e2a45320","path":"programs/build_helpers/check_reflect.py","line_range":"44-49","gmt_create":"2026-04-21T16:26:14.4220224+04:00","gmt_modified":"2026-04-21T16:26:14.4220224+04:00"},{"id":"09af8e740fdcc8c7dae42e9ac9e17d65","path":"programs/util/newplugin.py","line_range":"236-244","gmt_create":"2026-04-21T16:26:14.4220224+04:00","gmt_modified":"2026-04-21T16:26:14.4220224+04:00"},{"id":"ed2c4266ef25c8d6e9b3510a05ef6f71","path":"programs/util/pretty_schema.py","line_range":"9-12","gmt_create":"2026-04-21T16:26:14.4220224+04:00","gmt_modified":"2026-04-21T16:26:14.4220224+04:00"},{"id":"ce0ca23f01a4d30056f4bcbf994e427e","path":"programs/build_helpers/configure_build.py","line_range":"114-118","gmt_create":"2026-04-21T16:26:14.4220224+04:00","gmt_modified":"2026-04-21T16:26:14.4220224+04:00"},{"id":"816909e031b519b551290f0521f9321f","path":"install-deps-linux.sh","line_range":"8-9","gmt_create":"2026-04-21T16:26:14.4220224+04:00","gmt_modified":"2026-04-21T16:26:14.4220224+04:00"},{"id":"41a93f3335897e107d22d2ffc52927b9","path":"build-linux.sh","line_range":"14-15","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"10d8f723335a76124d40ae6230e7da2b","path":"build-linux.sh","line_range":"204","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"9a56fcbd7bd281991732b44489c4679f","path":"build-mac.sh","line_range":"12-13","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"5b06718dc93c911ef427db1fde5be29f","path":"build-mac.sh","line_range":"349","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"2776ecb02a15a1e783d8e979cd17af99","path":"programs/build_helpers/cat_parts.py","line_range":"28-69","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"27d686a223b20f315161be7a3b6b3bb4","path":"programs/build_helpers/check_reflect.py","line_range":"153-160","gmt_create":"2026-04-21T16:26:14.4230226+04:00","gmt_modified":"2026-04-21T16:26:14.4230226+04:00"},{"id":"ee321576ac8ffc298a9590e16e109884","path":"programs/util/schema_test.cpp","line_range":"44-56","gmt_create":"2026-04-21T16:26:14.4240224+04:00","gmt_modified":"2026-04-21T16:26:14.4240224+04:00"},{"id":"915852c64270b0a1c08cb47508b276f6","path":"programs/util/CMakeLists.txt","line_range":"46-56","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":"bc3fd12483f97978c22a14c1214c7904","path":"documentation/building.md","line_range":"189-220","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":"731eac041c57779eef0cfdb20b8c69e3","path":"README.md","line_range":"7-10","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":"1106bfc01676ad81d488b96e2d569103","path":"CMakeLists.txt","line_range":"206-209","gmt_create":"2026-04-21T16:26:53.8998501+04:00","gmt_modified":"2026-04-21T16:26:53.8998501+04:00"},{"id":"4211fc9687ec79ba37387e91a1ec19ab","path":"thirdparty/CMakeLists.txt","line_range":"1-3","gmt_create":"2026-04-21T16:26:53.8998501+04:00","gmt_modified":"2026-04-21T16:26:53.8998501+04:00"},{"id":"030a364fa15bdad5dfe4e058917230a5","path":"libraries/CMakeLists.txt","line_range":"1-8","gmt_create":"2026-04-21T16:26:53.9004228+04:00","gmt_modified":"2026-04-21T16:26:53.9004228+04:00"},{"id":"b90528e4a3f223adc9c5a100410e645d","path":"plugins/CMakeLists.txt","line_range":"1-12","gmt_create":"2026-04-21T16:26:53.9004228+04:00","gmt_modified":"2026-04-21T16:26:53.9004228+04:00"},{"id":"5021dc059b33c79e33a7347bdd3cf1fc","path":"programs/CMakeLists.txt","line_range":"1-8","gmt_create":"2026-04-21T16:26:53.9004228+04:00","gmt_modified":"2026-04-21T16:26:53.9004228+04:00"},{"id":"df1cccabdff62e4586fa6f8f43e25c72","path":"build-mingw.bat","line_range":"1-125","gmt_create":"2026-04-21T16:26:53.9014965+04:00","gmt_modified":"2026-04-21T16:26:53.9014965+04:00"},{"id":"f777a7de1bab7f5a82a3d5308dca8982","path":"build-msvc.bat","line_range":"1-116","gmt_create":"2026-04-21T16:26:53.9014965+04:00","gmt_modified":"2026-04-21T16:26:53.9014965+04:00"},{"id":"272d12071bd66c273a6e839fa8f9b1eb","path":"CMakeLists.txt","line_range":"1-271","gmt_create":"2026-04-21T16:26:53.9014965+04:00","gmt_modified":"2026-04-21T16:26:53.9014965+04:00"},{"id":"6fb1a1d9a1f74f9b55379cb666d5a1b9","path":"build-linux.sh","line_range":"214-229","gmt_create":"2026-04-21T16:26:53.9054993+04:00","gmt_modified":"2026-04-21T16:26:53.9054993+04:00"},{"id":"fb720b9e6c89e1750efee187a1a045fa","path":"build-mac.sh","line_range":"210-224","gmt_create":"2026-04-21T16:26:53.9054993+04:00","gmt_modified":"2026-04-21T16:26:53.9054993+04:00"},{"id":"00d5f1887685989f32b7f5ea0c27d174","path":"build-mingw.bat","line_range":"90-111","gmt_create":"2026-04-21T16:26:53.9054993+04:00","gmt_modified":"2026-04-21T16:26:53.9054993+04:00"},{"id":"6b102bd6597e034827458e1f4b3932dd","path":"build-msvc.bat","line_range":"82-102","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"0a808a782579d7d0491b236e2b45491f","path":"programs/build_helpers/configure_build.py","line_range":"143-195","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"565802f5a0e107f02639e8c60cab76ec","path":"programs/build_helpers/cat_parts.py","line_range":"11-69","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"859aec492420ac9d5fffdb068529170d","path":"programs/util/newplugin.py","line_range":"225-246","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"15ecdcd571bbebbc7cbca8702d47016b","path":"CMakeLists.txt","line_range":"2-3","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"a0f124b1b6cd68e749cf261bb63ffc8a","path":"CMakeLists.txt","line_range":"11-20","gmt_create":"2026-04-21T16:26:53.9064992+04:00","gmt_modified":"2026-04-21T16:26:53.9064992+04:00"},{"id":"0c358ebc42c3826066a2d7bad2523510","path":"CMakeLists.txt","line_range":"38-49","gmt_create":"2026-04-21T16:26:53.9074993+04:00","gmt_modified":"2026-04-21T16:26:53.9074993+04:00"},{"id":"2ecf268427e950f08b4874415f0c961e","path":"CMakeLists.txt","line_range":"51-53","gmt_create":"2026-04-21T16:26:53.9074993+04:00","gmt_modified":"2026-04-21T16:26:53.9074993+04:00"},{"id":"864f7d9894965f0bdd4a67a16204e75e","path":"CMakeLists.txt","line_range":"55-80","gmt_create":"2026-04-21T16:26:53.9074993+04:00","gmt_modified":"2026-04-21T16:26:53.9074993+04:00"},{"id":"cc79203d75556f79e8e759004b96a35e","path":"CMakeLists.txt","line_range":"82-88","gmt_create":"2026-04-21T16:26:53.9074993+04:00","gmt_modified":"2026-04-21T16:26:53.9074993+04:00"},{"id":"1b6b2303cf1e5dda2e5696b31e2e2fb2","path":"CMakeLists.txt","line_range":"96-100","gmt_create":"2026-04-21T16:26:53.9074993+04:00","gmt_modified":"2026-04-21T16:26:53.9074993+04:00"},{"id":"5484b10e47fb411ca14c80626cbf1939","path":"CMakeLists.txt","line_range":"108-152","gmt_create":"2026-04-21T16:26:53.9084992+04:00","gmt_modified":"2026-04-21T16:26:53.9084992+04:00"},{"id":"2072977dd111dcee094ab68f7fc24319","path":"CMakeLists.txt","line_range":"154-198","gmt_create":"2026-04-21T16:26:53.9085948+04:00","gmt_modified":"2026-04-21T16:26:53.9085948+04:00"},{"id":"753c3def6d22983feeb34c79fc5f26fe","path":"CMakeLists.txt","line_range":"102-106","gmt_create":"2026-04-21T16:26:53.9103277+04:00","gmt_modified":"2026-04-21T16:26:53.9103277+04:00"},{"id":"e0da045e5ea1924832fe01959f39d116","path":"CMakeLists.txt","line_range":"156-160","gmt_create":"2026-04-21T16:26:53.9103277+04:00","gmt_modified":"2026-04-21T16:26:53.9103277+04:00"},{"id":"7dd195ba88e3888ca888a88b95a44895","path":"CMakeLists.txt","line_range":"172-176","gmt_create":"2026-04-21T16:26:53.9112657+04:00","gmt_modified":"2026-04-21T16:26:53.9112657+04:00"},{"id":"958bc51b018d064fbbdc25278080009d","path":"programs/build_helpers/configure_build.py","line_range":"35-119","gmt_create":"2026-04-21T16:26:53.9114024+04:00","gmt_modified":"2026-04-21T16:26:53.9114024+04:00"},{"id":"528109d1930fd62df86f542054926a26","path":"share/vizd/docker/Dockerfile-production","line_range":"1-102","gmt_create":"2026-04-21T16:26:53.9139083+04:00","gmt_modified":"2026-04-21T16:26:53.9139083+04:00"},{"id":"262f645221c0965d812b555f22bf539f","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"1-85","gmt_create":"2026-04-21T16:26:53.9139083+04:00","gmt_modified":"2026-04-21T16:26:53.9139083+04:00"},{"id":"f38ad26c7e1face7c2d2fad5a9e3187d","path":"share/vizd/docker/Dockerfile-mongo","line_range":"1-114","gmt_create":"2026-04-21T16:26:53.9139083+04:00","gmt_modified":"2026-04-21T16:26:53.9139083+04:00"},{"id":"19cb0523b9a6f112f678c8911e59e1fe","path":"share/vizd/docker/Dockerfile-testnet","line_range":"1-102","gmt_create":"2026-04-21T16:26:53.9139083+04:00","gmt_modified":"2026-04-21T16:26:53.9139083+04:00"},{"id":"fa0ca8df86b3f81960903c65c86bde4f","path":"share/vizd/docker/Dockerfile-production","line_range":"56-62","gmt_create":"2026-04-21T16:26:53.9139083+04:00","gmt_modified":"2026-04-21T16:26:53.9139083+04:00"},{"id":"b32b79c58b325a4f0274d6fd36d53f0f","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"43-49","gmt_create":"2026-04-21T16:26:53.9149082+04:00","gmt_modified":"2026-04-21T16:26:53.9149082+04:00"},{"id":"85e469b4cf001a6e80ad6fad81dc00ba","path":"share/vizd/docker/Dockerfile-mongo","line_range":"72-78","gmt_create":"2026-04-21T16:26:53.9149082+04:00","gmt_modified":"2026-04-21T16:26:53.9149082+04:00"},{"id":"ac6949ec803fc4885c6153eac96ab9c9","path":"share/vizd/docker/Dockerfile-testnet","line_range":"56-62","gmt_create":"2026-04-21T16:26:53.9149082+04:00","gmt_modified":"2026-04-21T16:26:53.9149082+04:00"},{"id":"8e242ae9fb98997b4bb2f550e53ea193","path":"install-deps-linux.sh","line_range":"98-106","gmt_create":"2026-04-21T16:26:53.9179083+04:00","gmt_modified":"2026-04-21T16:26:53.9179083+04:00"},{"id":"cd1962e18426ac5153531c526c11523a","path":"build-linux.sh","line_range":"107-178","gmt_create":"2026-04-21T16:26:53.9189081+04:00","gmt_modified":"2026-04-21T16:26:53.9189081+04:00"},{"id":"19a1e249e7d4884f21cb5f076c76a235","path":"build-mac.sh","line_range":"125-171","gmt_create":"2026-04-21T16:26:53.9189081+04:00","gmt_modified":"2026-04-21T16:26:53.9189081+04:00"},{"id":"d3a3509b87b163533a17748988f6b860","path":"build-mingw.bat","line_range":"32-56","gmt_create":"2026-04-21T16:26:53.9189081+04:00","gmt_modified":"2026-04-21T16:26:53.9189081+04:00"},{"id":"645ba8b8c07deba73e93751cb698bf11","path":"build-msvc.bat","line_range":"32-56","gmt_create":"2026-04-21T16:26:53.9189081+04:00","gmt_modified":"2026-04-21T16:26:53.9189081+04:00"},{"id":"5430c8f099db45f163a9d10b60ebbca1","path":"CMakeLists.txt","line_range":"144-152","gmt_create":"2026-04-21T16:26:53.9214157+04:00","gmt_modified":"2026-04-21T16:26:53.9214157+04:00"},{"id":"2db270ba42ae42bab294590367a2e35f","path":"CMakeLists.txt","line_range":"176-183","gmt_create":"2026-04-21T16:26:53.9214157+04:00","gmt_modified":"2026-04-21T16:26:53.9214157+04:00"},{"id":"f9cd5f0f7d8ded72b22208172ac8112f","path":"CMakeLists.txt","line_range":"65-73","gmt_create":"2026-04-21T16:26:53.9224157+04:00","gmt_modified":"2026-04-21T16:26:53.9224157+04:00"},{"id":"e222d4def77d92a302cd44ea5af4a61e","path":"CMakeLists.txt","line_range":"75-80","gmt_create":"2026-04-21T16:26:53.9224157+04:00","gmt_modified":"2026-04-21T16:26:53.9224157+04:00"},{"id":"ab2e3fc89cca8674222b5dfae8b030b4","path":"build-linux.sh","line_range":"109-112","gmt_create":"2026-04-21T16:26:53.9234156+04:00","gmt_modified":"2026-04-21T16:26:53.9234156+04:00"},{"id":"1e7306c18e6575c49ee258dd129e80cf","path":"build-mac.sh","line_range":"102-115","gmt_create":"2026-04-21T16:26:53.9234156+04:00","gmt_modified":"2026-04-21T16:26:53.9234156+04:00"},{"id":"32ae4eca94ada54eb757a1eba1d23c49","path":"build-linux.sh","line_range":"189-191","gmt_create":"2026-04-21T16:26:53.9244156+04:00","gmt_modified":"2026-04-21T16:26:53.9244156+04:00"},{"id":"10c0591de2608d10413b8cc36d50eff7","path":"build-mac.sh","line_range":"166-171","gmt_create":"2026-04-21T16:26:53.9244156+04:00","gmt_modified":"2026-04-21T16:26:53.9244156+04:00"},{"id":"c2819e84fd47fd5ea97a62d8f3440f10","path":"install-deps-linux.sh","line_range":"108-113","gmt_create":"2026-04-21T16:26:53.9259194+04:00","gmt_modified":"2026-04-21T16:26:53.9259194+04:00"},{"id":"54c71cb376c0ba46ca343d6999f58540","path":"build-mac.sh","line_range":"330-351","gmt_create":"2026-04-21T16:26:53.9259194+04:00","gmt_modified":"2026-04-21T16:26:53.9259194+04:00"},{"id":"4094040cff52b86ee4afa7253b2f5ffd","path":"build-mingw.bat","line_range":"12-22","gmt_create":"2026-04-21T16:26:53.9259194+04:00","gmt_modified":"2026-04-21T16:26:53.9259194+04:00"},{"id":"f051815e1cfbbe8b6d7d0905e012c596","path":"build-msvc.bat","line_range":"12-22","gmt_create":"2026-04-21T16:26:53.9259194+04:00","gmt_modified":"2026-04-21T16:26:53.9259194+04:00"},{"id":"94fdff1d47b8566b84a47928c2fb7d29","path":"programs/build_helpers/configure_build.py","line_range":"168-184","gmt_create":"2026-04-21T16:26:53.9259194+04:00","gmt_modified":"2026-04-21T16:26:53.9259194+04:00"},{"id":"fdf22186e23f342d8011169094b92f76","path":"programs/vizd/main.cpp","line_range":"108-142","gmt_create":"2026-04-21T16:27:59.8401461+04:00","gmt_modified":"2026-04-21T16:27:59.8401461+04:00"},{"id":"7fd94c2e5035791fc11afdf57071a54e","path":"libraries/time/time.cpp","line_range":"53-79","gmt_create":"2026-04-21T16:27:59.8401461+04:00","gmt_modified":"2026-04-21T16:27:59.8401461+04:00"},{"id":"4abeaa04ed380a023596a9003ae3f962","path":"thirdparty/fc/src/network/ntp.cpp","line_range":"19-61","gmt_create":"2026-04-21T16:27:59.8406703+04:00","gmt_modified":"2026-04-21T16:27:59.8406703+04:00"},{"id":"ebed86c9424e50437f242d4d4ca4428f","path":"thirdparty/fc/include/fc/network/ntp.hpp","line_range":"17-52","gmt_create":"2026-04-21T16:27:59.8406703+04:00","gmt_modified":"2026-04-21T16:27:59.8406703+04:00"},{"id":"7af855607c7b44dcc16935e2748bdfa8","path":"libraries/time/include/graphene/time/time.hpp","line_range":"17-61","gmt_create":"2026-04-21T16:27:59.8411959+04:00","gmt_modified":"2026-04-21T16:27:59.8411959+04:00"},{"id":"32db04a0b31a57f872fe1b46840fedd8","path":"libraries/time/time.cpp","line_range":"19-51","gmt_create":"2026-04-21T16:27:59.8411959+04:00","gmt_modified":"2026-04-21T16:27:59.8411959+04:00"},{"id":"15389602b783c9e9bf11ad601dd995a2","path":"thirdparty/fc/src/network/ntp.cpp","line_range":"176-236","gmt_create":"2026-04-21T16:27:59.8422324+04:00","gmt_modified":"2026-04-21T16:27:59.8422324+04:00"},{"id":"ca576d0386d226ebb86a8ebbead8203e","path":"thirdparty/fc/src/network/ntp.cpp","line_range":"43-57","gmt_create":"2026-04-21T16:27:59.8422324+04:00","gmt_modified":"2026-04-21T16:27:59.8422324+04:00"},{"id":"3c10ad8f5bba703a75a912fc6ddb0bcd","path":"libraries/time/time.cpp","line_range":"27-50","gmt_create":"2026-04-21T16:27:59.8427511+04:00","gmt_modified":"2026-04-21T16:27:59.8427511+04:00"},{"id":"b5a27a63923dc7aab2f7f521e08ca66b","path":"libraries/time/time.cpp","line_range":"29-57","gmt_create":"2026-04-21T16:27:59.8427511+04:00","gmt_modified":"2026-04-21T16:27:59.8427511+04:00"},{"id":"1784c203168b747e1b7560119aa281f4","path":"libraries/time/time.cpp","line_range":"134-137","gmt_create":"2026-04-21T16:27:59.843274+04:00","gmt_modified":"2026-04-21T16:27:59.843274+04:00"},{"id":"d7c4269b63f0052713c58ca33d4d73ae","path":"plugins/p2p/p2p_plugin.cpp","line_range":"158-161","gmt_create":"2026-04-21T16:27:59.8437949+04:00","gmt_modified":"2026-04-21T16:27:59.8437949+04:00"},{"id":"3ceafea0ac64b1565f76f15a24468e25","path":"libraries/time/include/graphene/time/time.hpp","line_range":"17-40","gmt_create":"2026-04-21T16:27:59.8443139+04:00","gmt_modified":"2026-04-21T16:27:59.8443139+04:00"},{"id":"ede9523ef9d1a1af20e63e650f23330e","path":"thirdparty/fc/tests/network/ntp_test.cpp","line_range":"9-28","gmt_create":"2026-04-21T16:27:59.8448334+04:00","gmt_modified":"2026-04-21T16:27:59.8448334+04:00"},{"id":"33dbfa2427785b91ec6345c1b38493f3","path":"plugins/p2p/p2p_plugin.cpp","line_range":"500-560","gmt_create":"2026-04-21T16:30:41.1605556+04:00","gmt_modified":"2026-04-21T16:30:41.1605556+04:00"},{"id":"87cd303182e872deaed0168d99d63bfe","path":"plugins/p2p/p2p_plugin.cpp","line_range":"1-742","gmt_create":"2026-04-21T16:30:41.1616535+04:00","gmt_modified":"2026-04-21T16:30:41.1616535+04:00"},{"id":"cc6fb049675a050d828d64a99901c9a3","path":"libraries/network/node.cpp","line_range":"4900-4970","gmt_create":"2026-04-21T16:30:41.1719577+04:00","gmt_modified":"2026-04-21T16:30:41.1719577+04:00"},{"id":"481dce479b9899f6302ed5ac4788e142","path":"libraries/chain/database.cpp","line_range":"1-6396","gmt_create":"2026-04-21T16:31:00.2579762+04:00","gmt_modified":"2026-04-21T16:31:00.2579762+04:00"},{"id":"164305213190476d352a613197e7c51d","path":"thirdparty/chainbase/include/chainbase/chainbase.hpp","line_range":"1200-1260","gmt_create":"2026-04-21T16:31:00.2606399+04:00","gmt_modified":"2026-04-21T16:31:00.2606399+04:00"},{"id":"747c1faad94101e42db0b81e5c630245","path":"libraries/network/node.cpp","line_range":"1428-4828","gmt_create":"2026-04-21T16:31:00.2606399+04:00","gmt_modified":"2026-04-21T16:31:00.2606399+04:00"},{"id":"6bfc107197cd03ff08326ce5f73b0391","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"27-48","gmt_create":"2026-04-21T16:31:00.2606399+04:00","gmt_modified":"2026-04-21T16:31:00.2606399+04:00"},{"id":"8df6fdbcc30dbad82e9d741ab5ef411f","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"84-118","gmt_create":"2026-04-21T16:59:20.8418364+04:00","gmt_modified":"2026-04-21T16:59:20.8418364+04:00"},{"id":"f51059845e8c57c267a6b24d50d9360e","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-96","gmt_create":"2026-04-21T16:59:20.8418364+04:00","gmt_modified":"2026-04-21T16:59:20.8418364+04:00"},{"id":"7c1df5ea197d847695983fdc9514d3f7","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-57","gmt_create":"2026-04-21T16:59:20.8428393+04:00","gmt_modified":"2026-04-21T16:59:20.8428393+04:00"},{"id":"42700762f101eb5d1e050255c9765668","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"179-403","gmt_create":"2026-04-21T16:59:20.8428393+04:00","gmt_modified":"2026-04-21T16:59:20.8428393+04:00"},{"id":"ec3d8fbae1a5d225afa7f659b3c3c7f1","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"59-97","gmt_create":"2026-04-21T16:59:20.8428393+04:00","gmt_modified":"2026-04-21T16:59:20.8428393+04:00"},{"id":"ffa0a86ed69c22b294ffdb967f120301","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"18-52","gmt_create":"2026-04-21T16:59:20.8428393+04:00","gmt_modified":"2026-04-21T16:59:20.8428393+04:00"},{"id":"308a5e148e52b536b13866e6ed7bcbd6","path":"plugins/p2p/p2p_plugin.cpp","line_range":"203-257","gmt_create":"2026-04-21T16:59:20.8438392+04:00","gmt_modified":"2026-04-21T16:59:20.8438392+04:00"},{"id":"878dcc9a5950fdfeccf56797cadae454","path":"documentation/plugin.md","line_range":"1-28","gmt_create":"2026-04-21T16:59:20.8438392+04:00","gmt_modified":"2026-04-21T16:59:20.8438392+04:00"},{"id":"8738a86aa3be3ba78210d9d1753a85c7","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"109-113","gmt_create":"2026-04-21T16:59:20.8465801+04:00","gmt_modified":"2026-04-21T16:59:20.8465801+04:00"},{"id":"deb5fd998083d1fadfb4166d570952d9","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"88-91","gmt_create":"2026-04-21T16:59:20.8470828+04:00","gmt_modified":"2026-04-21T16:59:20.8470828+04:00"},{"id":"94ba26fd1d748fa9e7f34e734705a555","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"60-76","gmt_create":"2026-04-21T16:59:20.8470828+04:00","gmt_modified":"2026-04-21T16:59:20.8470828+04:00"},{"id":"8a639bfa4330b613e062546b599c9a62","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"38-55","gmt_create":"2026-04-21T16:59:20.8470828+04:00","gmt_modified":"2026-04-21T16:59:20.8470828+04:00"},{"id":"3cc842311268d524d5cd9a318f1af202","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"36-42","gmt_create":"2026-04-21T16:59:20.8480857+04:00","gmt_modified":"2026-04-21T16:59:20.8480857+04:00"},{"id":"63677bec54a74bea181bcd971d35d2ff","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"188-191","gmt_create":"2026-04-21T16:59:20.8490858+04:00","gmt_modified":"2026-04-21T16:59:20.8490858+04:00"},{"id":"b8bfa02d566b8da36ba3aa66aa72b28f","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"227-398","gmt_create":"2026-04-21T16:59:20.8490858+04:00","gmt_modified":"2026-04-21T16:59:20.8490858+04:00"},{"id":"83ee115c6ba0234d711d10e0e1a9cb70","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"61-65","gmt_create":"2026-04-21T16:59:20.8490858+04:00","gmt_modified":"2026-04-21T16:59:20.8490858+04:00"},{"id":"c848c312515a672a6ed63c3bcd198a6d","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"83-92","gmt_create":"2026-04-21T16:59:20.8500861+04:00","gmt_modified":"2026-04-21T16:59:20.8500861+04:00"},{"id":"49ef0ea42562b90e2b119834d5441dbe","path":"plugins/p2p/p2p_plugin.cpp","line_range":"259-277","gmt_create":"2026-04-21T16:59:20.8500861+04:00","gmt_modified":"2026-04-21T16:59:20.8500861+04:00"},{"id":"c630e3fc43aa0ddd30b4aa70f6c5b30c","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"20-20","gmt_create":"2026-04-21T16:59:20.8500861+04:00","gmt_modified":"2026-04-21T16:59:20.8500861+04:00"},{"id":"5d152a0cf386180d48f03300ad973338","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"40-49","gmt_create":"2026-04-21T16:59:20.8500861+04:00","gmt_modified":"2026-04-21T16:59:20.8500861+04:00"},{"id":"07111fda00e5b2043fcd71667f0399fb","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"17-19","gmt_create":"2026-04-21T16:59:20.851173+04:00","gmt_modified":"2026-04-21T16:59:20.851173+04:00"},{"id":"8fb9b8d2bda2b7acaab839b1ddce034e","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"46-87","gmt_create":"2026-04-21T16:59:20.8517451+04:00","gmt_modified":"2026-04-21T16:59:20.8517451+04:00"},{"id":"56c5cbf090e087d3bdee349c29db0b90","path":"documentation/plugin.md","line_range":"11-20","gmt_create":"2026-04-21T16:59:20.8522476+04:00","gmt_modified":"2026-04-21T16:59:20.8522476+04:00"},{"id":"48d6b5387566b628f417f419c1c95250","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"77-77","gmt_create":"2026-04-21T16:59:20.8532503+04:00","gmt_modified":"2026-04-21T16:59:20.8532503+04:00"},{"id":"14d0358b6f8212bb0b72fd053913f053","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-42","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"b76aad1a6fa150a94b017d475823a154","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-43","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"24cc2a11be41166bfd5748d59033acd7","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"179-186","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"5c2c39f7a8485c2ab33778983fae071f","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"59-70","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"c2a79dfba7c1513c5243b63677e4b76c","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"18-32","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"4593d7844d3c3f6f2ceef720e5ef6c76","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"14-41","gmt_create":"2026-04-21T16:59:20.8542503+04:00","gmt_modified":"2026-04-21T16:59:20.8542503+04:00"},{"id":"689f876b64c3255f654a81649f9600e5","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"42-54","gmt_create":"2026-04-21T16:59:20.8552504+04:00","gmt_modified":"2026-04-21T16:59:20.8552504+04:00"},{"id":"22865c33f9584174fdf61a715848a685","path":"programs/util/newplugin.py","line_range":"168-173","gmt_create":"2026-04-21T16:59:20.8552504+04:00","gmt_modified":"2026-04-21T16:59:20.8552504+04:00"},{"id":"4bbde61be3ba2b3b2d9c42bfcbb53246","path":"documentation/plugin.md","line_range":"21-28","gmt_create":"2026-04-21T16:59:20.8552504+04:00","gmt_modified":"2026-04-21T16:59:20.8552504+04:00"},{"id":"14db855e3162a19ce192c2bedccef067","path":"libraries/chain/database.cpp","line_range":"313-317","gmt_create":"2026-04-21T16:59:20.8562505+04:00","gmt_modified":"2026-04-21T16:59:20.8562505+04:00"},{"id":"d88294367eb508d1997c8cec781bcb58","path":"libraries/chain/dlt_block_log.cpp","line_range":"1-200","gmt_create":"2026-04-21T16:59:20.8572504+04:00","gmt_modified":"2026-04-21T16:59:20.8572504+04:00"},{"id":"0a2d506478951221aeda17f6998e1825","path":"libraries/chain/dlt_block_log.cpp","line_range":"356-382","gmt_create":"2026-04-21T16:59:20.8572504+04:00","gmt_modified":"2026-04-21T16:59:20.8572504+04:00"},{"id":"fe778373981234fbca5449dd18bdf95a","path":"libraries/chain/database.cpp","line_range":"558-567","gmt_create":"2026-04-21T16:59:20.8582504+04:00","gmt_modified":"2026-04-21T16:59:20.8582504+04:00"},{"id":"0879833002d4ac8fe92cccfccc4f4255","path":"libraries/chain/database.cpp","line_range":"596-600","gmt_create":"2026-04-21T16:59:20.8582504+04:00","gmt_modified":"2026-04-21T16:59:20.8582504+04:00"},{"id":"eeba05d156bfbdc01164fea2726b2a59","path":"libraries/chain/database.cpp","line_range":"618-622","gmt_create":"2026-04-21T16:59:20.8582504+04:00","gmt_modified":"2026-04-21T16:59:20.8582504+04:00"},{"id":"2349e005de7b738a3947eb7d62bb7809","path":"documentation/snapshot-plugin.md","line_range":"104-164","gmt_create":"2026-04-21T16:59:20.8582504+04:00","gmt_modified":"2026-04-21T16:59:20.8582504+04:00"},{"id":"bf8ddf18c65464f20f28a2f556b92eef","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"15-41","gmt_create":"2026-04-21T16:59:20.8592504+04:00","gmt_modified":"2026-04-21T16:59:20.8592504+04:00"},{"id":"486c7524fd7116e7c39cce90d4334b10","path":"plugins/p2p/p2p_plugin.cpp","line_range":"265-276","gmt_create":"2026-04-21T16:59:20.8592504+04:00","gmt_modified":"2026-04-21T16:59:20.8592504+04:00"},{"id":"5e39a61e9ad362688e1a8379db305eb9","path":"plugins/p2p/p2p_plugin.cpp","line_range":"118-165","gmt_create":"2026-04-21T16:59:20.8592504+04:00","gmt_modified":"2026-04-21T16:59:20.8592504+04:00"},{"id":"e8361bd5972aca40b26bbfea82e31404","path":"libraries/chain/database.cpp","line_range":"558-580","gmt_create":"2026-04-21T16:59:20.8602503+04:00","gmt_modified":"2026-04-21T16:59:20.8602503+04:00"},{"id":"f4cef35f6434606772b1da8e6e275858","path":"libraries/chain/database.cpp","line_range":"599-620","gmt_create":"2026-04-21T16:59:20.8602503+04:00","gmt_modified":"2026-04-21T16:59:20.8602503+04:00"},{"id":"70efa2637d099ce229d5962a7cb20ec3","path":"libraries/chain/database.cpp","line_range":"623-640","gmt_create":"2026-04-21T16:59:20.8602503+04:00","gmt_modified":"2026-04-21T16:59:20.8602503+04:00"},{"id":"f444c6df70c26419b2a93d2c2273e92c","path":"plugins/p2p/p2p_plugin.cpp","line_range":"500-508","gmt_create":"2026-04-21T16:59:20.8602503+04:00","gmt_modified":"2026-04-21T16:59:20.8602503+04:00"},{"id":"a95d43c6ca0c691fbbe04e13f28953cb","path":"thirdparty/fc/include/fc/network/ip.hpp","line_range":"69-71","gmt_create":"2026-04-21T16:59:20.8602503+04:00","gmt_modified":"2026-04-21T16:59:20.8602503+04:00"},{"id":"46e0355f5ef5951452e05b75a4e7909a","path":"thirdparty/fc/src/network/ip.cpp","line_range":"35-39","gmt_create":"2026-04-21T16:59:20.8614484+04:00","gmt_modified":"2026-04-21T16:59:20.8614484+04:00"},{"id":"a5c605a8f2aeb6be0430e0dede3a7c4c","path":"thirdparty/fc/include/fc/network/ip.hpp","line_range":"12-87","gmt_create":"2026-04-21T16:59:20.8614484+04:00","gmt_modified":"2026-04-21T16:59:20.8614484+04:00"},{"id":"cf9ac0713791e3f0155afc85ae3b1270","path":"thirdparty/fc/src/network/ip.cpp","line_range":"14-87","gmt_create":"2026-04-21T16:59:20.8620337+04:00","gmt_modified":"2026-04-21T16:59:20.8620337+04:00"},{"id":"8693e2e59759e0fec581c5affcf874a4","path":"libraries/network/peer_connection.hpp","line_range":"109-110","gmt_create":"2026-04-21T16:59:20.8620337+04:00","gmt_modified":"2026-04-21T16:59:20.8620337+04:00"},{"id":"de2a3d9dcbf8557a92762e57bf3e5a55","path":"libraries/network/node.cpp","line_range":"4900-4903","gmt_create":"2026-04-21T16:59:20.8620337+04:00","gmt_modified":"2026-04-21T16:59:20.8620337+04:00"},{"id":"a229446dae94228f93b0b91568ad5731","path":"libraries/network/core_messages.hpp","line_range":"333-345","gmt_create":"2026-04-21T16:59:20.8626062+04:00","gmt_modified":"2026-04-21T16:59:20.8626062+04:00"},{"id":"c0a51deb86a3baed7b0c00196330d6dd","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-24","gmt_create":"2026-04-21T16:59:20.8626062+04:00","gmt_modified":"2026-04-21T16:59:20.8626062+04:00"},{"id":"e4cc4d73635312873c5714774885f075","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-38","gmt_create":"2026-04-21T16:59:20.8631087+04:00","gmt_modified":"2026-04-21T16:59:20.8631087+04:00"},{"id":"535fb8ae27f3028ef0bc007fe8e6d9e4","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"44-44","gmt_create":"2026-04-21T16:59:20.8641119+04:00","gmt_modified":"2026-04-21T16:59:20.8641119+04:00"},{"id":"75d9368d3d98aa6d9c428970a63b11cf","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"35-35","gmt_create":"2026-04-21T16:59:20.8641119+04:00","gmt_modified":"2026-04-21T16:59:20.8641119+04:00"},{"id":"68233684e873ddae3fb16456ee2935b6","path":"libraries/protocol/include/graphene/protocol/operations.hpp","line_range":"14-27","gmt_create":"2026-04-21T16:59:20.8651116+04:00","gmt_modified":"2026-04-21T16:59:20.8651116+04:00"},{"id":"38dd1148f1f885fd680994cdceecba74","path":"libraries/chain/chain_evaluator.cpp","line_range":"216-216","gmt_create":"2026-04-21T16:59:20.8651116+04:00","gmt_modified":"2026-04-21T16:59:20.8651116+04:00"},{"id":"d6755387033134961bc624ab0cfa47af","path":"libraries/chain/chain_evaluator.cpp","line_range":"551-551","gmt_create":"2026-04-21T16:59:20.8661116+04:00","gmt_modified":"2026-04-21T16:59:20.8661116+04:00"},{"id":"6a7b254fb749104adcf900df81294efc","path":"libraries/chain/chain_evaluator.cpp","line_range":"1296-1296","gmt_create":"2026-04-21T16:59:20.8661116+04:00","gmt_modified":"2026-04-21T16:59:20.8661116+04:00"},{"id":"0d653f2cfc0e2b612ff1d3958755ec8a","path":"plugins/p2p/p2p_plugin.cpp","line_range":"499-528","gmt_create":"2026-04-21T16:59:20.8661116+04:00","gmt_modified":"2026-04-21T16:59:20.8661116+04:00"},{"id":"a7f1569fce7a15457b0edf8049ffc90e","path":"plugins/debug_node/plugin.cpp","line_range":"124-128","gmt_create":"2026-04-21T16:59:20.8661116+04:00","gmt_modified":"2026-04-21T16:59:20.8661116+04:00"},{"id":"dbcec612bbf7a24accc2d16b541fee52","path":"documentation/snapshot-plugin.md","line_range":"142-164","gmt_create":"2026-04-21T16:59:20.8691116+04:00","gmt_modified":"2026-04-21T16:59:20.8691116+04:00"}],"knowledge_relations":[{"id":28090,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"b70b275b872bbc6ecd1c4312dea1f126","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-21T14:56:29.6175178+04:00","gmt_modified":"2026-04-21T14:56:29.6175178+04:00"},{"id":28091,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"93d2279380057f5ff7bb0ec4d574b04a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-21T14:56:29.6185702+04:00","gmt_modified":"2026-04-21T14:56:29.6185702+04:00"},{"id":28092,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"bd9a9323b695ba6f4ee219c6ac05d65b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-21T14:56:29.6191131+04:00","gmt_modified":"2026-04-21T14:56:29.6191131+04:00"},{"id":28093,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-21T14:56:29.6202022+04:00","gmt_modified":"2026-04-21T14:56:29.6202022+04:00"},{"id":28094,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"52f5e880c05c0b3e52e994a389aba5e4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-21T14:56:29.6207385+04:00","gmt_modified":"2026-04-21T14:56:29.6207385+04:00"},{"id":28095,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-21T14:56:29.6207385+04:00","gmt_modified":"2026-04-21T14:56:29.6207385+04:00"},{"id":28096,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"d952eb3122d64a10b5a53c11fa123b9d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/core_messages.hpp","gmt_create":"2026-04-21T14:56:29.6212637+04:00","gmt_modified":"2026-04-21T14:56:29.6212637+04:00"},{"id":28097,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"d33d6933dcb9e547029007fca6bc61c8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-21T14:56:29.6217864+04:00","gmt_modified":"2026-04-21T14:56:29.6217864+04:00"},{"id":28098,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"34e5909c35ad9d055be9727b3a207c55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/stcp_socket.hpp","gmt_create":"2026-04-21T14:56:29.6223033+04:00","gmt_modified":"2026-04-21T14:56:29.6223033+04:00"},{"id":28099,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"ab664a3a8e43d25e578a4db7198b64ef","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message_oriented_connection.hpp","gmt_create":"2026-04-21T14:56:29.6228175+04:00","gmt_modified":"2026-04-21T14:56:29.6228175+04:00"},{"id":28100,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"2635c59c839f9bfaf8b36ce827ebd4a8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-21T14:56:29.6228175+04:00","gmt_modified":"2026-04-21T14:56:29.6228175+04:00"},{"id":28101,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"098d39a4f70011748b886f1f0aac6def","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-21T14:56:29.6233339+04:00","gmt_modified":"2026-04-21T14:56:29.6233339+04:00"},{"id":28102,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T14:56:29.6238597+04:00","gmt_modified":"2026-04-21T14:56:29.6238597+04:00"},{"id":28103,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"2196e7f627016478589d0cf2cfb7ce7a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-21T14:56:29.6243776+04:00","gmt_modified":"2026-04-21T14:56:29.6243776+04:00"},{"id":28104,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"ab60fe01a1fec05393a76d15a9aa8e3a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#180-355","gmt_create":"2026-04-21T14:56:29.6243776+04:00","gmt_modified":"2026-04-21T14:56:29.6243776+04:00"},{"id":28105,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"ab60fe01a1fec05393a76d15a9aa8e3a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 180-355","gmt_create":"2026-04-21T14:56:29.6243776+04:00","gmt_modified":"2026-04-21T14:56:29.6243776+04:00"},{"id":28106,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"ea68169c768566840fc2d9e0d99e2677","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#869-905","gmt_create":"2026-04-21T14:56:29.6249084+04:00","gmt_modified":"2026-04-21T14:56:29.6249084+04:00"},{"id":28107,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"ea68169c768566840fc2d9e0d99e2677","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 869-905","gmt_create":"2026-04-21T14:56:29.6249084+04:00","gmt_modified":"2026-04-21T14:56:29.6249084+04:00"},{"id":28108,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"3417785bc41a44ea5eadf361ca68f0d3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#79-354","gmt_create":"2026-04-21T14:56:29.6254341+04:00","gmt_modified":"2026-04-21T14:56:29.6254341+04:00"},{"id":28109,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"3417785bc41a44ea5eadf361ca68f0d3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-354","gmt_create":"2026-04-21T14:56:29.6259652+04:00","gmt_modified":"2026-04-21T14:56:29.6259652+04:00"},{"id":28110,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"8b81dbeb1bee070a8dcee7ebdf5ee115","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#104-134","gmt_create":"2026-04-21T14:56:29.6259652+04:00","gmt_modified":"2026-04-21T14:56:29.6259652+04:00"},{"id":28111,"source_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","target_id":"8b81dbeb1bee070a8dcee7ebdf5ee115","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 104-134","gmt_create":"2026-04-21T14:56:29.6259652+04:00","gmt_modified":"2026-04-21T14:56:29.6259652+04:00"},{"id":28112,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"c270b4d292d531283c1b958e3b06084a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-114","gmt_create":"2026-04-21T14:56:29.6259652+04:00","gmt_modified":"2026-04-21T14:56:29.6259652+04:00"},{"id":28113,"source_id":"52f5e880c05c0b3e52e994a389aba5e4","target_id":"c270b4d292d531283c1b958e3b06084a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-114","gmt_create":"2026-04-21T14:56:29.6264899+04:00","gmt_modified":"2026-04-21T14:56:29.6264899+04:00"},{"id":28114,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"9242876cabb25f4217fb4545452b9982","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#111-120","gmt_create":"2026-04-21T14:56:29.6270195+04:00","gmt_modified":"2026-04-21T14:56:29.6270195+04:00"},{"id":28115,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"9242876cabb25f4217fb4545452b9982","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-120","gmt_create":"2026-04-21T14:56:29.6275447+04:00","gmt_modified":"2026-04-21T14:56:29.6275447+04:00"},{"id":28116,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"f5b227ba8f7657892dae7907e793ad2e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4334-4463","gmt_create":"2026-04-21T14:56:29.6275447+04:00","gmt_modified":"2026-04-21T14:56:29.6275447+04:00"},{"id":28117,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"f5b227ba8f7657892dae7907e793ad2e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4334-4463","gmt_create":"2026-04-21T14:56:29.6275447+04:00","gmt_modified":"2026-04-21T14:56:29.6275447+04:00"},{"id":28118,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"cd5ffed637ea51c3fe32a6d61b347572","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#110-123","gmt_create":"2026-04-21T14:56:29.6280765+04:00","gmt_modified":"2026-04-21T14:56:29.6280765+04:00"},{"id":28119,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"cd5ffed637ea51c3fe32a6d61b347572","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 110-123","gmt_create":"2026-04-21T14:56:29.6280765+04:00","gmt_modified":"2026-04-21T14:56:29.6280765+04:00"},{"id":28120,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"9816f67eba1209423b7b960a1ee72ba9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#952-1047","gmt_create":"2026-04-21T14:56:29.6296459+04:00","gmt_modified":"2026-04-21T14:56:29.6296459+04:00"},{"id":28121,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"9816f67eba1209423b7b960a1ee72ba9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 952-1047","gmt_create":"2026-04-21T14:56:29.6301593+04:00","gmt_modified":"2026-04-21T14:56:29.6301593+04:00"},{"id":28122,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"c7408c979256460bd2f76f51530a0b98","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1623-1654","gmt_create":"2026-04-21T14:56:29.6301593+04:00","gmt_modified":"2026-04-21T14:56:29.6301593+04:00"},{"id":28123,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"c7408c979256460bd2f76f51530a0b98","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1623-1654","gmt_create":"2026-04-21T14:56:29.6311741+04:00","gmt_modified":"2026-04-21T14:56:29.6311741+04:00"},{"id":28124,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"018cbad99438c42c8504bf1adf36f1cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2282-2350","gmt_create":"2026-04-21T14:56:29.6322568+04:00","gmt_modified":"2026-04-21T14:56:29.6322568+04:00"},{"id":28125,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"018cbad99438c42c8504bf1adf36f1cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2282-2350","gmt_create":"2026-04-21T14:56:29.6322568+04:00","gmt_modified":"2026-04-21T14:56:29.6322568+04:00"},{"id":28126,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"97ebe7551ae2f4119f273c10b984256f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#869-931","gmt_create":"2026-04-21T14:56:29.6327896+04:00","gmt_modified":"2026-04-21T14:56:29.6327896+04:00"},{"id":28127,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"97ebe7551ae2f4119f273c10b984256f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 869-931","gmt_create":"2026-04-21T14:56:29.6327896+04:00","gmt_modified":"2026-04-21T14:56:29.6327896+04:00"},{"id":28128,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"812f40fab494300a9bdeb65097f63c08","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2029-2230","gmt_create":"2026-04-21T14:56:29.6333261+04:00","gmt_modified":"2026-04-21T14:56:29.6333261+04:00"},{"id":28129,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"812f40fab494300a9bdeb65097f63c08","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2029-2230","gmt_create":"2026-04-21T14:56:29.6338662+04:00","gmt_modified":"2026-04-21T14:56:29.6338662+04:00"},{"id":28130,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"284ac849a6fe2d634214f44a66ed1ddb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2232-2250","gmt_create":"2026-04-21T14:56:29.6338662+04:00","gmt_modified":"2026-04-21T14:56:29.6338662+04:00"},{"id":28131,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"284ac849a6fe2d634214f44a66ed1ddb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2232-2250","gmt_create":"2026-04-21T14:56:29.6344005+04:00","gmt_modified":"2026-04-21T14:56:29.6344005+04:00"},{"id":28132,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"182bbc38fbfc665b2cf6c71e075204db","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1400-1621","gmt_create":"2026-04-21T14:56:29.6349264+04:00","gmt_modified":"2026-04-21T14:56:29.6349264+04:00"},{"id":28133,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"182bbc38fbfc665b2cf6c71e075204db","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1400-1621","gmt_create":"2026-04-21T14:56:29.6349264+04:00","gmt_modified":"2026-04-21T14:56:29.6349264+04:00"},{"id":28134,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"7d8b28243694bfc562968329e37bb1a2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#79-80","gmt_create":"2026-04-21T14:56:29.6354481+04:00","gmt_modified":"2026-04-21T14:56:29.6354481+04:00"},{"id":28135,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"7d8b28243694bfc562968329e37bb1a2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-80","gmt_create":"2026-04-21T14:56:29.6354481+04:00","gmt_modified":"2026-04-21T14:56:29.6354481+04:00"},{"id":28136,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"61cf6f7ef7027e695f7ab44c4767b192","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3117-3199","gmt_create":"2026-04-21T14:56:29.6359608+04:00","gmt_modified":"2026-04-21T14:56:29.6359608+04:00"},{"id":28137,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"61cf6f7ef7027e695f7ab44c4767b192","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3117-3199","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28138,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"d08b62fae1f76f1abeb93cd7404a4f20","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#200-294","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28139,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"d08b62fae1f76f1abeb93cd7404a4f20","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 200-294","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28140,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"c15eb471ff3b016e8687758aa6678d0e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#933-950","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28141,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"c15eb471ff3b016e8687758aa6678d0e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 933-950","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28142,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"a47cbb515ce49df1fdcce7196c3b0f32","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1686-1713","gmt_create":"2026-04-21T14:56:29.6364836+04:00","gmt_modified":"2026-04-21T14:56:29.6364836+04:00"},{"id":28143,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"a47cbb515ce49df1fdcce7196c3b0f32","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1686-1713","gmt_create":"2026-04-21T14:56:29.6374893+04:00","gmt_modified":"2026-04-21T14:56:29.6374893+04:00"},{"id":28144,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"06874635182c0e9a36c989d2e268f6f3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#211-296","gmt_create":"2026-04-21T14:56:29.6379988+04:00","gmt_modified":"2026-04-21T14:56:29.6379988+04:00"},{"id":28145,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"06874635182c0e9a36c989d2e268f6f3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 211-296","gmt_create":"2026-04-21T14:56:29.6379988+04:00","gmt_modified":"2026-04-21T14:56:29.6379988+04:00"},{"id":28146,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"9d9b949416295b44550bfd169231f5a0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1788-1841","gmt_create":"2026-04-21T14:56:29.6390061+04:00","gmt_modified":"2026-04-21T14:56:29.6390061+04:00"},{"id":28147,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"9d9b949416295b44550bfd169231f5a0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1788-1841","gmt_create":"2026-04-21T14:56:29.6390061+04:00","gmt_modified":"2026-04-21T14:56:29.6390061+04:00"},{"id":28148,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"46c95c7b186547fb0f9c8eb86fded801","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1326-1398","gmt_create":"2026-04-21T14:56:29.6390061+04:00","gmt_modified":"2026-04-21T14:56:29.6390061+04:00"},{"id":28149,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"46c95c7b186547fb0f9c8eb86fded801","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1326-1398","gmt_create":"2026-04-21T14:56:29.6400156+04:00","gmt_modified":"2026-04-21T14:56:29.6400156+04:00"},{"id":28150,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"b95bfccf2a07cbaaa5db52e5df0a8997","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2830-2892","gmt_create":"2026-04-21T14:56:29.6400156+04:00","gmt_modified":"2026-04-21T14:56:29.6400156+04:00"},{"id":28151,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"b95bfccf2a07cbaaa5db52e5df0a8997","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2830-2892","gmt_create":"2026-04-21T14:56:29.6400156+04:00","gmt_modified":"2026-04-21T14:56:29.6400156+04:00"},{"id":28152,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"d4c579be914a7829e3743cb552977e39","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#111-217","gmt_create":"2026-04-21T14:56:29.6400156+04:00","gmt_modified":"2026-04-21T14:56:29.6400156+04:00"},{"id":28153,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"d4c579be914a7829e3743cb552977e39","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-217","gmt_create":"2026-04-21T14:56:29.6400156+04:00","gmt_modified":"2026-04-21T14:56:29.6400156+04:00"},{"id":28154,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"2edd59e37cc2cae027c83c09eeb3d302","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3574-3629","gmt_create":"2026-04-21T14:56:29.6410128+04:00","gmt_modified":"2026-04-21T14:56:29.6410128+04:00"},{"id":28155,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"2edd59e37cc2cae027c83c09eeb3d302","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3574-3629","gmt_create":"2026-04-21T14:56:29.6410128+04:00","gmt_modified":"2026-04-21T14:56:29.6410128+04:00"},{"id":28156,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"f58fbeea9c98375f05895a939c0928ed","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3436-3458","gmt_create":"2026-04-21T14:56:29.6410128+04:00","gmt_modified":"2026-04-21T14:56:29.6410128+04:00"},{"id":28157,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"f58fbeea9c98375f05895a939c0928ed","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3436-3458","gmt_create":"2026-04-21T14:56:29.6410128+04:00","gmt_modified":"2026-04-21T14:56:29.6410128+04:00"},{"id":28158,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"411e56c99f1343f89464373fe7d53329","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#45","gmt_create":"2026-04-21T14:56:29.6410128+04:00","gmt_modified":"2026-04-21T14:56:29.6410128+04:00"},{"id":28159,"source_id":"d33d6933dcb9e547029007fca6bc61c8","target_id":"411e56c99f1343f89464373fe7d53329","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45","gmt_create":"2026-04-21T14:56:29.6420107+04:00","gmt_modified":"2026-04-21T14:56:29.6420107+04:00"},{"id":28160,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"3057d2aa071c269a3a069883f3cc955b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3444-3458","gmt_create":"2026-04-21T14:56:29.6420107+04:00","gmt_modified":"2026-04-21T14:56:29.6420107+04:00"},{"id":28161,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"3057d2aa071c269a3a069883f3cc955b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3444-3458","gmt_create":"2026-04-21T14:56:29.6420107+04:00","gmt_modified":"2026-04-21T14:56:29.6420107+04:00"},{"id":28162,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"f772b22a4e82899d7a7971b13d3f8b90","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3574-3595","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28163,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"f772b22a4e82899d7a7971b13d3f8b90","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3574-3595","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28164,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"81df0fc28bc8e44e90b7a3d9e4b298de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3436-3449","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28165,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"81df0fc28bc8e44e90b7a3d9e4b298de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3436-3449","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28166,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"2b098b347f244acd11eab5745a409ec5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3428-3449","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28167,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"2b098b347f244acd11eab5745a409ec5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3428-3449","gmt_create":"2026-04-21T14:56:29.6431354+04:00","gmt_modified":"2026-04-21T14:56:29.6431354+04:00"},{"id":28168,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"88f188563f773540713889bb386294c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#260-262","gmt_create":"2026-04-21T14:56:29.644135+04:00","gmt_modified":"2026-04-21T14:56:29.644135+04:00"},{"id":28169,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"88f188563f773540713889bb386294c3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 260-262","gmt_create":"2026-04-21T14:56:29.644135+04:00","gmt_modified":"2026-04-21T14:56:29.644135+04:00"},{"id":28170,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"8cd8aa215e81d5e59c0db1c41ed82144","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#80-87","gmt_create":"2026-04-21T14:56:29.6451446+04:00","gmt_modified":"2026-04-21T14:56:29.6451446+04:00"},{"id":28171,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"8cd8aa215e81d5e59c0db1c41ed82144","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 80-87","gmt_create":"2026-04-21T14:56:29.6461422+04:00","gmt_modified":"2026-04-21T14:56:29.6461422+04:00"},{"id":28172,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"e8f818b14888097a73d7faea83c8e881","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2251-2280","gmt_create":"2026-04-21T14:56:29.6478219+04:00","gmt_modified":"2026-04-21T14:56:29.6478219+04:00"},{"id":28173,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"e8f818b14888097a73d7faea83c8e881","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2251-2280","gmt_create":"2026-04-21T14:56:29.6486562+04:00","gmt_modified":"2026-04-21T14:56:29.6486562+04:00"},{"id":28174,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"6f3a3b5f4539771fa1c21ef11a081a35","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2137-2168","gmt_create":"2026-04-21T14:56:29.6486562+04:00","gmt_modified":"2026-04-21T14:56:29.6486562+04:00"},{"id":28175,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"6f3a3b5f4539771fa1c21ef11a081a35","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2137-2168","gmt_create":"2026-04-21T14:56:29.6486562+04:00","gmt_modified":"2026-04-21T14:56:29.6486562+04:00"},{"id":28176,"source_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","target_id":"760711bb9fdeadb5b514857ca08d0ae1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4455-4460","gmt_create":"2026-04-21T14:56:29.6496546+04:00","gmt_modified":"2026-04-21T14:56:29.6496546+04:00"},{"id":28177,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"760711bb9fdeadb5b514857ca08d0ae1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4455-4460","gmt_create":"2026-04-21T14:56:29.6496546+04:00","gmt_modified":"2026-04-21T14:56:29.6496546+04:00"},{"id":28192,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"08825a3b18d6c21fd52a764ba6cc0b22","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1204-1270","gmt_create":"2026-04-21T14:57:03.9503311+04:00","gmt_modified":"2026-04-21T14:57:03.9503311+04:00"},{"id":28194,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"130bae0cd16aa807eab8ebe515cd1f27","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 521-544","gmt_create":"2026-04-21T14:57:03.952156+04:00","gmt_modified":"2026-04-21T14:57:03.952156+04:00"},{"id":28196,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"10c6e3c5e0da196bf5645b2676f5fe5f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-138","gmt_create":"2026-04-21T14:57:03.9531923+04:00","gmt_modified":"2026-04-21T14:57:03.9531923+04:00"},{"id":28198,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"fadf8ac80f586d7a383ae9b7774ab170","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-270","gmt_create":"2026-04-21T14:57:03.9537101+04:00","gmt_modified":"2026-04-21T14:57:03.9537101+04:00"},{"id":28200,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"16d80765ba580e717048366d3696a7ed","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T14:57:03.9542347+04:00","gmt_modified":"2026-04-21T14:57:03.9542347+04:00"},{"id":28202,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"79ffe2ea8487b9a11bf58c4c909f0b7a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6131","gmt_create":"2026-04-21T14:57:03.9552811+04:00","gmt_modified":"2026-04-21T14:57:03.9552811+04:00"},{"id":28204,"source_id":"bb278ec53a644e14e7d815fe8331bc74","target_id":"4b8e5a55d358a7e84067e5e1ca2baae3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-76","gmt_create":"2026-04-21T14:57:03.9613346+04:00","gmt_modified":"2026-04-21T14:57:03.9613346+04:00"},{"id":28206,"source_id":"3593b932a51a4e9d045d1cbc84dc9a6d","target_id":"9b9de0b42096dcf9ce22a02983b8e180","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-454","gmt_create":"2026-04-21T14:57:03.9626528+04:00","gmt_modified":"2026-04-21T14:57:03.9626528+04:00"},{"id":28208,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"e127ab43bafb719c65151cb149fd14c1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-577","gmt_create":"2026-04-21T14:57:03.9673131+04:00","gmt_modified":"2026-04-21T14:57:03.9673131+04:00"},{"id":28210,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"54b0796e4b027ce7818dcb8c6d2cef08","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 110-124","gmt_create":"2026-04-21T14:57:03.9684932+04:00","gmt_modified":"2026-04-21T14:57:03.9684932+04:00"},{"id":28212,"source_id":"c36b26945bd5c41be92a4926b8f3a003","target_id":"99aac75830a5934b26dd9481750767cd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-7","gmt_create":"2026-04-21T14:57:03.9689969+04:00","gmt_modified":"2026-04-21T14:57:03.9689969+04:00"},{"id":28214,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"bec9579489bd7b03445f43a1b0af2f0e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-138","gmt_create":"2026-04-21T14:57:03.9705706+04:00","gmt_modified":"2026-04-21T14:57:03.9705706+04:00"},{"id":28216,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"85634f4acca2ba552d2e800110d8b3d7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-92","gmt_create":"2026-04-21T14:57:03.9725849+04:00","gmt_modified":"2026-04-21T14:57:03.9725849+04:00"},{"id":28218,"source_id":"bb278ec53a644e14e7d815fe8331bc74","target_id":"4620befa2e1a2b36260a1a8b3f79a71d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-33","gmt_create":"2026-04-21T14:57:03.9751067+04:00","gmt_modified":"2026-04-21T14:57:03.9751067+04:00"},{"id":28220,"source_id":"3593b932a51a4e9d045d1cbc84dc9a6d","target_id":"2f81799767281c2d15179d4d368c3d98","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 336-340","gmt_create":"2026-04-21T14:57:03.9768517+04:00","gmt_modified":"2026-04-21T14:57:03.9768517+04:00"},{"id":28222,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"c465ac25a4d2b5700f380ebcabc70484","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-84","gmt_create":"2026-04-21T14:57:03.9814329+04:00","gmt_modified":"2026-04-21T14:57:03.9814329+04:00"},{"id":28224,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"97457fcf3928d33ecf59751b71c4ddfc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-55","gmt_create":"2026-04-21T14:57:03.9824876+04:00","gmt_modified":"2026-04-21T14:57:03.9824876+04:00"},{"id":28226,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"99db6cfeb000030194e9f1a3a65efd4c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-138","gmt_create":"2026-04-21T14:57:03.9835531+04:00","gmt_modified":"2026-04-21T14:57:03.9835531+04:00"},{"id":28228,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"a40f8149c6a1bf43319c1ae35c628e48","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-270","gmt_create":"2026-04-21T14:57:03.988745+04:00","gmt_modified":"2026-04-21T14:57:03.988745+04:00"},{"id":28230,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"6bad4c06f7a26c6db8813342ffc2409f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-138","gmt_create":"2026-04-21T14:57:03.9903521+04:00","gmt_modified":"2026-04-21T14:57:03.9903521+04:00"},{"id":28232,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"9c1d9350bb6f4227b2f93f6424361689","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 189-231","gmt_create":"2026-04-21T14:57:03.9913975+04:00","gmt_modified":"2026-04-21T14:57:03.9913975+04:00"},{"id":28234,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"5604fd71a133635e9e2f5c9080763f93","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1037-1177","gmt_create":"2026-04-21T14:57:03.9949565+04:00","gmt_modified":"2026-04-21T14:57:03.9949565+04:00"},{"id":28236,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"02214c72e299c321be2dd3cfe69e46d6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 259-294","gmt_create":"2026-04-21T14:57:03.9960539+04:00","gmt_modified":"2026-04-21T14:57:03.9960539+04:00"},{"id":28238,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"8e2b029a13acbaf27f133a218f3db7f5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 57-78","gmt_create":"2026-04-21T14:57:03.9970811+04:00","gmt_modified":"2026-04-21T14:57:03.9970811+04:00"},{"id":28240,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"e54c425f309443d0a1f2013035606ad6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4444-4533","gmt_create":"2026-04-21T14:57:04.0021562+04:00","gmt_modified":"2026-04-21T14:57:04.0021562+04:00"},{"id":28242,"source_id":"bb278ec53a644e14e7d815fe8331bc74","target_id":"191773dc9d6cf8f057ee823ac96e81bd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-72","gmt_create":"2026-04-21T14:57:04.0032116+04:00","gmt_modified":"2026-04-21T14:57:04.0032116+04:00"},{"id":28244,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"db5e12f9eb72680443996d6f6e431090","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 118-164","gmt_create":"2026-04-21T14:57:04.0042585+04:00","gmt_modified":"2026-04-21T14:57:04.0042585+04:00"},{"id":28246,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"4570e68acacd2b05afcb76cef53b76c4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 115-128","gmt_create":"2026-04-21T14:57:04.0067849+04:00","gmt_modified":"2026-04-21T14:57:04.0067849+04:00"},{"id":28248,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"1d0c0ef3de2f2e71d820f7340ebf071e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 561-580","gmt_create":"2026-04-21T14:57:04.0082162+04:00","gmt_modified":"2026-04-21T14:57:04.0082162+04:00"},{"id":28250,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"0518b2f237c1abd79a71c239a6129b13","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 738-792","gmt_create":"2026-04-21T14:57:04.0087192+04:00","gmt_modified":"2026-04-21T14:57:04.0087192+04:00"},{"id":28252,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"34808cff50d23f21ba27eaf1f94a1e65","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 206-230","gmt_create":"2026-04-21T14:57:04.0092397+04:00","gmt_modified":"2026-04-21T14:57:04.0092397+04:00"},{"id":28254,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"51f70fa39e4057673d6cce9a817de5f7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 476-515","gmt_create":"2026-04-21T14:57:04.00976+04:00","gmt_modified":"2026-04-21T14:57:04.00976+04:00"},{"id":28256,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"a5e70e96e2030bc51105ab323328bd6a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 92-103","gmt_create":"2026-04-21T14:57:04.0108048+04:00","gmt_modified":"2026-04-21T14:57:04.0108048+04:00"},{"id":28258,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"c914119998cc8956df7a92ba69025669","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1075-1087","gmt_create":"2026-04-21T14:57:04.011383+04:00","gmt_modified":"2026-04-21T14:57:04.011383+04:00"},{"id":28260,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"17d5f437adfa7d12530e73a6acf3cea3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4581-4594","gmt_create":"2026-04-21T14:57:04.0143929+04:00","gmt_modified":"2026-04-21T14:57:04.0143929+04:00"},{"id":28262,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a5bf8dbce76e473dbc956b2aaabc1871","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2125-2142","gmt_create":"2026-04-21T14:57:04.015443+04:00","gmt_modified":"2026-04-21T14:57:04.015443+04:00"},{"id":28264,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"cef0462ff84c34789c5798ea89079e80","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4334-4438","gmt_create":"2026-04-21T14:57:04.0159669+04:00","gmt_modified":"2026-04-21T14:57:04.0159669+04:00"},{"id":28266,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"d93beef095ac23ff8ee077459a184b57","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4420-4438","gmt_create":"2026-04-21T14:57:04.0159669+04:00","gmt_modified":"2026-04-21T14:57:04.0159669+04:00"},{"id":28268,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a0687e6cdfe244ad5edc2741e51b9637","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4444-4450","gmt_create":"2026-04-21T14:57:04.0164872+04:00","gmt_modified":"2026-04-21T14:57:04.0164872+04:00"},{"id":28270,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"6d14f9a3d31dd38c6934d4a20f5961aa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 114-124","gmt_create":"2026-04-21T14:57:04.0372989+04:00","gmt_modified":"2026-04-21T14:57:04.0372989+04:00"},{"id":28272,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"eff458ee8f783fdfd55a33c7c6b5a020","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4360-4398","gmt_create":"2026-04-21T14:57:04.0382994+04:00","gmt_modified":"2026-04-21T14:57:04.0382994+04:00"},{"id":28274,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"6afe192cc4bbb06c24372ff4220396ad","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4400-4419","gmt_create":"2026-04-21T14:57:04.0382994+04:00","gmt_modified":"2026-04-21T14:57:04.0382994+04:00"},{"id":28276,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"aa064e2ac860823bd57553bdaacd9fdd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 521-526","gmt_create":"2026-04-21T14:57:04.0403242+04:00","gmt_modified":"2026-04-21T14:57:04.0403242+04:00"},{"id":28278,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"40c355eeb0b9decefc18d06871d4f35c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4428-4430","gmt_create":"2026-04-21T14:57:04.042323+04:00","gmt_modified":"2026-04-21T14:57:04.042323+04:00"},{"id":28280,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"929ab148875977b53b20860e4a7bfcfa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 34-46","gmt_create":"2026-04-21T14:57:04.0453222+04:00","gmt_modified":"2026-04-21T14:57:04.0453222+04:00"},{"id":28282,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"149b0b231bf8ac5eba3e6884e1e92e6d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-103","gmt_create":"2026-04-21T14:57:04.0463219+04:00","gmt_modified":"2026-04-21T14:57:04.0463219+04:00"},{"id":28284,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"b44544616631fe6486fb65dd48480409","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-46","gmt_create":"2026-04-21T14:57:04.0498331+04:00","gmt_modified":"2026-04-21T14:57:04.0498331+04:00"},{"id":28286,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"e1f857384f44e71eb08c99ff531b156e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 59-75","gmt_create":"2026-04-21T14:57:04.0508423+04:00","gmt_modified":"2026-04-21T14:57:04.0508423+04:00"},{"id":28288,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"67d0e0fc93e91380c1431112565b8397","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1390-1397","gmt_create":"2026-04-21T14:57:04.0508423+04:00","gmt_modified":"2026-04-21T14:57:04.0508423+04:00"},{"id":28303,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"38ebf46966056ad075ef10d47f35bd63","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2026-04-21T14:58:18.8943457+04:00","gmt_modified":"2026-04-21T14:58:18.8943457+04:00"},{"id":28305,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"39bb010f4844b32951d0caff06ff7a8b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-88","gmt_create":"2026-04-21T14:58:18.8943457+04:00","gmt_modified":"2026-04-21T14:58:18.8943457+04:00"},{"id":28307,"source_id":"9be507263cf352b287af44392c08d8e9","target_id":"7fddadd553eea0193d9fac38ae3fc27d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-52","gmt_create":"2026-04-21T14:58:18.8953453+04:00","gmt_modified":"2026-04-21T14:58:18.8953453+04:00"},{"id":28309,"source_id":"a704d9d09f17cd2bafd2ca5503c8a467","target_id":"db1d8680c92d1bf3738935f7a8222d85","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-52","gmt_create":"2026-04-21T14:58:18.8953453+04:00","gmt_modified":"2026-04-21T14:58:18.8953453+04:00"},{"id":28311,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"43fa824ac508d796bfc427ecb25f9aec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-76","gmt_create":"2026-04-21T14:58:18.8963995+04:00","gmt_modified":"2026-04-21T14:58:18.8963995+04:00"},{"id":28313,"source_id":"9be507263cf352b287af44392c08d8e9","target_id":"31a53fc15540bfbb02489d919f88e5ac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 16-52","gmt_create":"2026-04-21T14:58:18.9079102+04:00","gmt_modified":"2026-04-21T14:58:18.9079102+04:00"},{"id":28315,"source_id":"4e25baf48a44d24a8c233acb024adc06","target_id":"ab15b2f02cfc8f31905aa2e047fa6708","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 30-158","gmt_create":"2026-04-21T14:58:18.9079102+04:00","gmt_modified":"2026-04-21T14:58:18.9079102+04:00"},{"id":28317,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"4bfb891f257d1b2edcf6bf0baecede35","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 675-780","gmt_create":"2026-04-21T14:58:18.9089094+04:00","gmt_modified":"2026-04-21T14:58:18.9089094+04:00"},{"id":28319,"source_id":"4e25baf48a44d24a8c233acb024adc06","target_id":"cad29605a7993547a682094b9c1fcad3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-107","gmt_create":"2026-04-21T14:58:18.9089094+04:00","gmt_modified":"2026-04-21T14:58:18.9089094+04:00"},{"id":28321,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"2db378b12ea8079473dee9fe9d2728ac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 885-987","gmt_create":"2026-04-21T14:58:18.9099088+04:00","gmt_modified":"2026-04-21T14:58:18.9099088+04:00"},{"id":28323,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"731f7e3059779dad9c9eb8cd69c6942a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 789-883","gmt_create":"2026-04-21T14:58:18.9099088+04:00","gmt_modified":"2026-04-21T14:58:18.9099088+04:00"},{"id":28325,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"3285e48f2fec78af9a88ad7ae2e63e1c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1400-1484","gmt_create":"2026-04-21T14:58:18.9099088+04:00","gmt_modified":"2026-04-21T14:58:18.9099088+04:00"},{"id":28327,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"9c8ca31c28bd8a346634d03ad6032d8e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1046-1288","gmt_create":"2026-04-21T14:58:18.9114133+04:00","gmt_modified":"2026-04-21T14:58:18.9114133+04:00"},{"id":28329,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"0e8bf89344d2a0fccf751378026dde2d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1902-2038","gmt_create":"2026-04-21T14:58:18.9114133+04:00","gmt_modified":"2026-04-21T14:58:18.9114133+04:00"},{"id":28331,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"83429ace394b68f7e40a8ccc861c7d40","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1470-1599","gmt_create":"2026-04-21T14:58:18.9114133+04:00","gmt_modified":"2026-04-21T14:58:18.9114133+04:00"},{"id":28333,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"046dda92b70e2708fc5b816143d89058","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2473-2510","gmt_create":"2026-04-21T14:58:18.9114133+04:00","gmt_modified":"2026-04-21T14:58:18.9114133+04:00"},{"id":28335,"source_id":"e602c0b51903a7d2b2b9f8659b518ec8","target_id":"f0cf4ee8d0a772ae70e7c8452ba7f2f9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 247-273","gmt_create":"2026-04-21T14:58:18.9124192+04:00","gmt_modified":"2026-04-21T14:58:18.9124192+04:00"},{"id":28337,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"92879d0fd0121256d12b60aa1c30df55","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1418-1436","gmt_create":"2026-04-21T14:58:18.9124192+04:00","gmt_modified":"2026-04-21T14:58:18.9124192+04:00"},{"id":28339,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"bb601a88a37604ead660e6ca99a665f1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 737-743","gmt_create":"2026-04-21T14:58:18.9124192+04:00","gmt_modified":"2026-04-21T14:58:18.9124192+04:00"},{"id":28341,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"acc7bf79a9b12f3731ba97b5f0daf981","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1390-1484","gmt_create":"2026-04-21T14:58:18.9134211+04:00","gmt_modified":"2026-04-21T14:58:18.9134211+04:00"},{"id":28343,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"183fc23b1afe83aae72f123e73a522e3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1440-1449","gmt_create":"2026-04-21T14:58:18.9144243+04:00","gmt_modified":"2026-04-21T14:58:18.9144243+04:00"},{"id":28345,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"45821bb2aac9f23cc3c036a4be4fc2d0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 335-551","gmt_create":"2026-04-21T14:58:18.9144243+04:00","gmt_modified":"2026-04-21T14:58:18.9144243+04:00"},{"id":28347,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"1ca2e9a47901009d154225645910fdd0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1326-1376","gmt_create":"2026-04-21T14:58:18.9144243+04:00","gmt_modified":"2026-04-21T14:58:18.9144243+04:00"},{"id":28349,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"3159f6294be515487f5aa79015b513c3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1426-1435","gmt_create":"2026-04-21T14:58:18.9144243+04:00","gmt_modified":"2026-04-21T14:58:18.9144243+04:00"},{"id":28351,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"4dd56096f073f9c64f5ca219853c20d6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 745-750","gmt_create":"2026-04-21T14:58:18.9154199+04:00","gmt_modified":"2026-04-21T14:58:18.9154199+04:00"},{"id":28353,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"1b0cdbb2e60325297067594b2948750a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 697-700","gmt_create":"2026-04-21T14:58:18.9154199+04:00","gmt_modified":"2026-04-21T14:58:18.9154199+04:00"},{"id":28355,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"99144581b107cfacfefe5e35d529713c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2831-2845","gmt_create":"2026-04-21T14:58:18.9154199+04:00","gmt_modified":"2026-04-21T14:58:18.9154199+04:00"},{"id":28357,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"bf2786c553cb282c81e2df715d0710e1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1719-1748","gmt_create":"2026-04-21T14:58:18.9154199+04:00","gmt_modified":"2026-04-21T14:58:18.9154199+04:00"},{"id":28359,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"f6bc3670add86d7b243a66c90d46ffc8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1706-1748","gmt_create":"2026-04-21T14:58:18.9164191+04:00","gmt_modified":"2026-04-21T14:58:18.9164191+04:00"},{"id":28361,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"5a0d9dd7b4c46ab44ed775c3a397b093","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 490-560","gmt_create":"2026-04-21T14:58:18.9164191+04:00","gmt_modified":"2026-04-21T14:58:18.9164191+04:00"},{"id":28363,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"be694fde1aa860a9329296964477111e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2945-2959","gmt_create":"2026-04-21T14:58:18.9164191+04:00","gmt_modified":"2026-04-21T14:58:18.9164191+04:00"},{"id":28365,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"09857d193a091f282ecfcbccb507fe7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 441-5201","gmt_create":"2026-04-21T14:58:18.9174186+04:00","gmt_modified":"2026-04-21T14:58:18.9174186+04:00"},{"id":28367,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"3b26461da0f92be2563f169a65f6fb20","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 542-559","gmt_create":"2026-04-21T14:58:18.9174186+04:00","gmt_modified":"2026-04-21T14:58:18.9174186+04:00"},{"id":28369,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"8e19ddfdf1b9c4bf08da230f1991fbae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2976-3009","gmt_create":"2026-04-21T14:58:18.9184188+04:00","gmt_modified":"2026-04-21T14:58:18.9184188+04:00"},{"id":28371,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"7f422ce5a550e0bf78739aa09dc6ad1e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2468-2570","gmt_create":"2026-04-21T14:58:18.9184188+04:00","gmt_modified":"2026-04-21T14:58:18.9184188+04:00"},{"id":28373,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"9ef8a2bfe7a4ae9fbe3d9339c0c3b7ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 735-740","gmt_create":"2026-04-21T14:58:18.9184188+04:00","gmt_modified":"2026-04-21T14:58:18.9184188+04:00"},{"id":28375,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"12f48585bb2924475247750bd428dfd0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1814-1862","gmt_create":"2026-04-21T14:58:18.9194188+04:00","gmt_modified":"2026-04-21T14:58:18.9194188+04:00"},{"id":28377,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"da29915a5700acc0cd17aa7c9638e0c2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 772-785","gmt_create":"2026-04-21T14:58:18.9194188+04:00","gmt_modified":"2026-04-21T14:58:18.9194188+04:00"},{"id":28379,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"8c337e93c31b8b3a7a1491f116f27ed7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 165-176","gmt_create":"2026-04-21T14:58:18.9194188+04:00","gmt_modified":"2026-04-21T14:58:18.9194188+04:00"},{"id":28381,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"1868caeecd8d398012baaddde0197979","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1587-1596","gmt_create":"2026-04-21T14:58:18.9194188+04:00","gmt_modified":"2026-04-21T14:58:18.9194188+04:00"},{"id":28383,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"7bfbc374764b2321b6922f512ce1409b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1610-1620","gmt_create":"2026-04-21T14:58:18.9194188+04:00","gmt_modified":"2026-04-21T14:58:18.9194188+04:00"},{"id":28385,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"720664924c0f5ad167ebc8d59f432977","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1812-1877","gmt_create":"2026-04-21T14:58:18.9208202+04:00","gmt_modified":"2026-04-21T14:58:18.9208202+04:00"},{"id":28387,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"eb040536345f0f7cea67191d528e4a85","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 24-34","gmt_create":"2026-04-21T14:58:18.9208202+04:00","gmt_modified":"2026-04-21T14:58:18.9208202+04:00"},{"id":28389,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"6b01a3981c4710fbe43e2f50c18bcec5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2598-2680","gmt_create":"2026-04-21T14:58:18.9218186+04:00","gmt_modified":"2026-04-21T14:58:18.9218186+04:00"},{"id":28391,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"9c6f3c36bb49caec4162b04901b48340","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 364-432","gmt_create":"2026-04-21T14:58:18.9223298+04:00","gmt_modified":"2026-04-21T14:58:18.9223298+04:00"},{"id":28393,"source_id":"a704d9d09f17cd2bafd2ca5503c8a467","target_id":"c6f770b3151f86c3f6096d9ccd7ec6f0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-38","gmt_create":"2026-04-21T14:58:18.9223298+04:00","gmt_modified":"2026-04-21T14:58:18.9223298+04:00"},{"id":28395,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"5b3e15b641f9632441134e75e3ce99cc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2294-2464","gmt_create":"2026-04-21T14:58:18.9233351+04:00","gmt_modified":"2026-04-21T14:58:18.9233351+04:00"},{"id":28397,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"378f0a19787ac694be22607464bb7d42","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1378-1464","gmt_create":"2026-04-21T14:58:18.9233351+04:00","gmt_modified":"2026-04-21T14:58:18.9233351+04:00"},{"id":28398,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T14:58:41.9627599+04:00","gmt_modified":"2026-04-21T14:58:41.9627599+04:00"},{"id":28399,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"3ca2692851e9198383dace6a01709d61","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-04-21T14:58:41.9632805+04:00","gmt_modified":"2026-04-21T14:58:41.9632805+04:00"},{"id":28400,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"f590c1185fbb4d474296d1770fc56941","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/global_property_object.hpp","gmt_create":"2026-04-21T14:58:41.9632805+04:00","gmt_modified":"2026-04-21T14:58:41.9632805+04:00"},{"id":28401,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"066be1fde7b3232a078c0ab7eadbb6ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/witness_objects.hpp","gmt_create":"2026-04-21T14:58:41.9632805+04:00","gmt_modified":"2026-04-21T14:58:41.9632805+04:00"},{"id":28402,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"098d39a4f70011748b886f1f0aac6def","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28403,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"2635c59c839f9bfaf8b36ce827ebd4a8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28404,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"2196e7f627016478589d0cf2cfb7ce7a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28405,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"cb4161c07e6dfd4c4af1af88fe4a213b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config_testnet.hpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28406,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"60d499d475104d27ca84470eedeadbab","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28407,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"55bc22bd32ecd08a0a502b603c69e431","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/include/graphene/plugins/witness/witness.hpp","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28408,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"c36b26945bd5c41be92a4926b8f3a003","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/hardfork.d/12.hf","gmt_create":"2026-04-21T14:58:41.9638082+04:00","gmt_modified":"2026-04-21T14:58:41.9638082+04:00"},{"id":28409,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"31ce877d410b43a59ae8e84069d217b9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/src/chainbase.cpp","gmt_create":"2026-04-21T14:58:41.9717816+04:00","gmt_modified":"2026-04-21T14:58:41.9717816+04:00"},{"id":28410,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"5ef55c539008cc115b20e5fd0aa2c201","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4510-4623","gmt_create":"2026-04-21T14:58:41.9727808+04:00","gmt_modified":"2026-04-21T14:58:41.9727808+04:00"},{"id":28411,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"5ef55c539008cc115b20e5fd0aa2c201","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4510-4623","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28412,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"88f188563f773540713889bb386294c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#260-262","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28413,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"2fd3cc2097e9cb281eeb78f80ae32db0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#354-392","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28414,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"2fd3cc2097e9cb281eeb78f80ae32db0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 354-392","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28415,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"3aa7e25a4d15485b3ff382fb13b3bc08","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#562-590","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28416,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"3aa7e25a4d15485b3ff382fb13b3bc08","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 562-590","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28417,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"8119b6f57c7009ee7c8a79c9d17711b2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/global_property_object.hpp#24-146","gmt_create":"2026-04-21T14:58:41.9737808+04:00","gmt_modified":"2026-04-21T14:58:41.9737808+04:00"},{"id":28418,"source_id":"f590c1185fbb4d474296d1770fc56941","target_id":"8119b6f57c7009ee7c8a79c9d17711b2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 24-146","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28419,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"2808eceab28f2942dd6ff5a6e3a31e7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/witness_objects.hpp#27-132","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28420,"source_id":"066be1fde7b3232a078c0ab7eadbb6ea","target_id":"2808eceab28f2942dd6ff5a6e3a31e7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-132","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28421,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"875c5da58931b36274ca9d7d06a2e918","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#114-119","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28422,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"875c5da58931b36274ca9d7d06a2e918","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 114-119","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28423,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"e8a183119f6977db8a231027c2c9e026","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/witness_objects.hpp#47-61","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28424,"source_id":"066be1fde7b3232a078c0ab7eadbb6ea","target_id":"e8a183119f6977db8a231027c2c9e026","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-61","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28425,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"3b3625f00f2ea0c8636f7e827410626a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#110-112","gmt_create":"2026-04-21T14:58:41.9747808+04:00","gmt_modified":"2026-04-21T14:58:41.9747808+04:00"},{"id":28426,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"3b3625f00f2ea0c8636f7e827410626a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 110-112","gmt_create":"2026-04-21T14:58:41.9758641+04:00","gmt_modified":"2026-04-21T14:58:41.9758641+04:00"},{"id":28427,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"12095ebe9d5a003b2ea09d2b51390ef0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4522-4526","gmt_create":"2026-04-21T14:58:41.9758641+04:00","gmt_modified":"2026-04-21T14:58:41.9758641+04:00"},{"id":28428,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"12095ebe9d5a003b2ea09d2b51390ef0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4522-4526","gmt_create":"2026-04-21T14:58:41.9758641+04:00","gmt_modified":"2026-04-21T14:58:41.9758641+04:00"},{"id":28429,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"a9f591b0036c5e381b26bf82acf5a5ca","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4510-4520","gmt_create":"2026-04-21T14:58:41.9758641+04:00","gmt_modified":"2026-04-21T14:58:41.9758641+04:00"},{"id":28430,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a9f591b0036c5e381b26bf82acf5a5ca","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4510-4520","gmt_create":"2026-04-21T14:58:41.9768661+04:00","gmt_modified":"2026-04-21T14:58:41.9768661+04:00"},{"id":28431,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"d4c652db859da70bac5fcc50f5bf98d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4510-4526","gmt_create":"2026-04-21T14:58:41.9768661+04:00","gmt_modified":"2026-04-21T14:58:41.9768661+04:00"},{"id":28432,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"d4c652db859da70bac5fcc50f5bf98d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4510-4526","gmt_create":"2026-04-21T14:58:41.9768661+04:00","gmt_modified":"2026-04-21T14:58:41.9768661+04:00"},{"id":28433,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"8cd8aa215e81d5e59c0db1c41ed82144","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#80-87","gmt_create":"2026-04-21T14:58:41.9768661+04:00","gmt_modified":"2026-04-21T14:58:41.9768661+04:00"},{"id":28434,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"b9c9bd8f569231067ae2d2827a4c7c09","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2255-2272","gmt_create":"2026-04-21T14:58:41.977865+04:00","gmt_modified":"2026-04-21T14:58:41.977865+04:00"},{"id":28435,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"b9c9bd8f569231067ae2d2827a4c7c09","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2255-2272","gmt_create":"2026-04-21T14:58:41.977865+04:00","gmt_modified":"2026-04-21T14:58:41.977865+04:00"},{"id":28436,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"afd8ec5de97908d340193e74cd918f8d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#121-123","gmt_create":"2026-04-21T14:58:41.977865+04:00","gmt_modified":"2026-04-21T14:58:41.977865+04:00"},{"id":28437,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"afd8ec5de97908d340193e74cd918f8d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 121-123","gmt_create":"2026-04-21T14:58:41.977865+04:00","gmt_modified":"2026-04-21T14:58:41.977865+04:00"},{"id":28438,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"cd5ffed637ea51c3fe32a6d61b347572","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#110-123","gmt_create":"2026-04-21T14:58:41.977865+04:00","gmt_modified":"2026-04-21T14:58:41.977865+04:00"},{"id":28439,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"adea2d00e5f4ef1a3ee39d08d4454e21","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/hardfork.d/12.hf#1-6","gmt_create":"2026-04-21T14:58:41.9788641+04:00","gmt_modified":"2026-04-21T14:58:41.9788641+04:00"},{"id":28440,"source_id":"c36b26945bd5c41be92a4926b8f3a003","target_id":"adea2d00e5f4ef1a3ee39d08d4454e21","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6","gmt_create":"2026-04-21T14:58:41.9788641+04:00","gmt_modified":"2026-04-21T14:58:41.9788641+04:00"},{"id":28441,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"36615c570f30b13570e97530109c6cba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/src/chainbase.cpp#229-230","gmt_create":"2026-04-21T14:58:41.9788641+04:00","gmt_modified":"2026-04-21T14:58:41.9788641+04:00"},{"id":28442,"source_id":"31ce877d410b43a59ae8e84069d217b9","target_id":"36615c570f30b13570e97530109c6cba","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 229-230","gmt_create":"2026-04-21T14:58:41.9788641+04:00","gmt_modified":"2026-04-21T14:58:41.9788641+04:00"},{"id":28443,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"782640a05c160fde2d06006db309802e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#592-626","gmt_create":"2026-04-21T14:58:41.9788641+04:00","gmt_modified":"2026-04-21T14:58:41.9788641+04:00"},{"id":28444,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"782640a05c160fde2d06006db309802e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 592-626","gmt_create":"2026-04-21T14:58:41.9798634+04:00","gmt_modified":"2026-04-21T14:58:41.9798634+04:00"},{"id":28445,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"e951fb7f78d4f697e542f9b115981dd8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#37-612","gmt_create":"2026-04-21T14:58:41.9798634+04:00","gmt_modified":"2026-04-21T14:58:41.9798634+04:00"},{"id":28446,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"e951fb7f78d4f697e542f9b115981dd8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-612","gmt_create":"2026-04-21T14:58:41.9798634+04:00","gmt_modified":"2026-04-21T14:58:41.9798634+04:00"},{"id":28447,"source_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","target_id":"efef0225e3c5942e3e386ca8ca907f45","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#113-145","gmt_create":"2026-04-21T14:58:41.9808638+04:00","gmt_modified":"2026-04-21T14:58:41.9808638+04:00"},{"id":28448,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"efef0225e3c5942e3e386ca8ca907f45","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 113-145","gmt_create":"2026-04-21T14:58:41.9808638+04:00","gmt_modified":"2026-04-21T14:58:41.9808638+04:00"},{"id":28449,"source_id":"545e2c55-9759-4acc-9801-a0c592e13e63","target_id":"64d53aaf-b586-4b5c-9e78-eda060df3fe0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 545e2c55-9759-4acc-9801-a0c592e13e63 -\u003e 64d53aaf-b586-4b5c-9e78-eda060df3fe0","gmt_create":"2026-04-21T14:58:42.5580208+04:00","gmt_modified":"2026-04-21T14:58:42.5580208+04:00"},{"id":28450,"source_id":"545e2c55-9759-4acc-9801-a0c592e13e63","target_id":"0a59acb5-40df-466d-91e3-ed6eccaff101","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 545e2c55-9759-4acc-9801-a0c592e13e63 -\u003e 0a59acb5-40df-466d-91e3-ed6eccaff101","gmt_create":"2026-04-21T14:58:42.5580208+04:00","gmt_modified":"2026-04-21T14:58:42.5580208+04:00"},{"id":28451,"source_id":"545e2c55-9759-4acc-9801-a0c592e13e63","target_id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 545e2c55-9759-4acc-9801-a0c592e13e63 -\u003e f87cd13c-94db-4641-8cab-5f0ef5598cd4","gmt_create":"2026-04-21T14:58:42.5580208+04:00","gmt_modified":"2026-04-21T14:58:42.5580208+04:00"},{"id":28452,"source_id":"545e2c55-9759-4acc-9801-a0c592e13e63","target_id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 545e2c55-9759-4acc-9801-a0c592e13e63 -\u003e 4331f8e8-c9fb-4633-96d5-dcefc7d9a949","gmt_create":"2026-04-21T14:58:42.5580208+04:00","gmt_modified":"2026-04-21T14:58:42.5580208+04:00"},{"id":28453,"source_id":"545e2c55-9759-4acc-9801-a0c592e13e63","target_id":"70e6b738-ffe5-40d7-a8e5-93611f63120e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 545e2c55-9759-4acc-9801-a0c592e13e63 -\u003e 70e6b738-ffe5-40d7-a8e5-93611f63120e","gmt_create":"2026-04-21T14:58:42.5595289+04:00","gmt_modified":"2026-04-21T14:58:42.5595289+04:00"},{"id":28456,"source_id":"feb85dd7-e1b5-4da1-90c8-d62e4ab36a9b","target_id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: feb85dd7-e1b5-4da1-90c8-d62e4ab36a9b -\u003e 35ae67dc-be32-4c17-a43b-361dfa56b2c2","gmt_create":"2026-04-21T14:58:42.5615376+04:00","gmt_modified":"2026-04-21T14:58:42.5615376+04:00"},{"id":28458,"source_id":"ee136fe0-5a11-488d-b78f-b244c95ed999","target_id":"044f1c89-8d37-4125-8c3a-648cec0d2c18","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ee136fe0-5a11-488d-b78f-b244c95ed999 -\u003e 044f1c89-8d37-4125-8c3a-648cec0d2c18","gmt_create":"2026-04-21T14:58:42.5615376+04:00","gmt_modified":"2026-04-21T14:58:42.5615376+04:00"},{"id":28459,"source_id":"ee136fe0-5a11-488d-b78f-b244c95ed999","target_id":"404f16df-b055-4b9e-854c-6e455a269473","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ee136fe0-5a11-488d-b78f-b244c95ed999 -\u003e 404f16df-b055-4b9e-854c-6e455a269473","gmt_create":"2026-04-21T14:58:42.5615376+04:00","gmt_modified":"2026-04-21T14:58:42.5615376+04:00"},{"id":28460,"source_id":"ee136fe0-5a11-488d-b78f-b244c95ed999","target_id":"0c6850f6-bb8f-4377-88c5-c1da328b3af5","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ee136fe0-5a11-488d-b78f-b244c95ed999 -\u003e 0c6850f6-bb8f-4377-88c5-c1da328b3af5","gmt_create":"2026-04-21T14:58:42.5625378+04:00","gmt_modified":"2026-04-21T14:58:42.5625378+04:00"},{"id":28461,"source_id":"40ecb6d8-c687-4775-90d9-27e6128f6633","target_id":"95105c1a-9358-41f7-91d2-9063912afd0a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 40ecb6d8-c687-4775-90d9-27e6128f6633 -\u003e 95105c1a-9358-41f7-91d2-9063912afd0a","gmt_create":"2026-04-21T14:58:42.5625378+04:00","gmt_modified":"2026-04-21T14:58:42.5625378+04:00"},{"id":28462,"source_id":"40ecb6d8-c687-4775-90d9-27e6128f6633","target_id":"f9f86072-b6db-4a3a-86a5-58e94c5807c0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 40ecb6d8-c687-4775-90d9-27e6128f6633 -\u003e f9f86072-b6db-4a3a-86a5-58e94c5807c0","gmt_create":"2026-04-21T14:58:42.5635367+04:00","gmt_modified":"2026-04-21T14:58:42.5635367+04:00"},{"id":28463,"source_id":"40ecb6d8-c687-4775-90d9-27e6128f6633","target_id":"f1f0a4e5-e57c-42c1-b8b6-a8927ad2ffd0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 40ecb6d8-c687-4775-90d9-27e6128f6633 -\u003e f1f0a4e5-e57c-42c1-b8b6-a8927ad2ffd0","gmt_create":"2026-04-21T14:58:42.5635367+04:00","gmt_modified":"2026-04-21T14:58:42.5635367+04:00"},{"id":28465,"source_id":"98fcff34-cc61-4393-a258-6869d7866061","target_id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 98fcff34-cc61-4393-a258-6869d7866061 -\u003e 08c142a7-2d4b-4194-8db1-c6edad4be1eb","gmt_create":"2026-04-21T14:58:42.5645357+04:00","gmt_modified":"2026-04-21T14:58:42.5645357+04:00"},{"id":28466,"source_id":"98fcff34-cc61-4393-a258-6869d7866061","target_id":"3e9481ba-6ceb-42ae-9140-cc5d1f93253e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 98fcff34-cc61-4393-a258-6869d7866061 -\u003e 3e9481ba-6ceb-42ae-9140-cc5d1f93253e","gmt_create":"2026-04-21T14:58:42.5645357+04:00","gmt_modified":"2026-04-21T14:58:42.5645357+04:00"},{"id":28467,"source_id":"98fcff34-cc61-4393-a258-6869d7866061","target_id":"9d564ecb-4d17-44c3-9caa-7737c64850f2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 98fcff34-cc61-4393-a258-6869d7866061 -\u003e 9d564ecb-4d17-44c3-9caa-7737c64850f2","gmt_create":"2026-04-21T14:58:42.5645357+04:00","gmt_modified":"2026-04-21T14:58:42.5645357+04:00"},{"id":28469,"source_id":"6bf4f125-2c28-4ddf-80dc-190ab45ebf4e","target_id":"869baa5c-fb26-485e-84c6-9e699609cbff","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6bf4f125-2c28-4ddf-80dc-190ab45ebf4e -\u003e 869baa5c-fb26-485e-84c6-9e699609cbff","gmt_create":"2026-04-21T14:58:42.5655369+04:00","gmt_modified":"2026-04-21T14:58:42.5655369+04:00"},{"id":28470,"source_id":"6bf4f125-2c28-4ddf-80dc-190ab45ebf4e","target_id":"f8ac1ceb-1318-4af3-8a98-5a1896b358e1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6bf4f125-2c28-4ddf-80dc-190ab45ebf4e -\u003e f8ac1ceb-1318-4af3-8a98-5a1896b358e1","gmt_create":"2026-04-21T14:58:42.5655369+04:00","gmt_modified":"2026-04-21T14:58:42.5655369+04:00"},{"id":28471,"source_id":"6bf4f125-2c28-4ddf-80dc-190ab45ebf4e","target_id":"917aff75-1b95-4c98-b566-a772c18c8fa0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6bf4f125-2c28-4ddf-80dc-190ab45ebf4e -\u003e 917aff75-1b95-4c98-b566-a772c18c8fa0","gmt_create":"2026-04-21T14:58:42.5665372+04:00","gmt_modified":"2026-04-21T14:58:42.5665372+04:00"},{"id":28472,"source_id":"6bf4f125-2c28-4ddf-80dc-190ab45ebf4e","target_id":"91b325fe-eee8-4df7-8dfe-6f45f76d4ed3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6bf4f125-2c28-4ddf-80dc-190ab45ebf4e -\u003e 91b325fe-eee8-4df7-8dfe-6f45f76d4ed3","gmt_create":"2026-04-21T14:58:42.5665372+04:00","gmt_modified":"2026-04-21T14:58:42.5665372+04:00"},{"id":28478,"source_id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","target_id":"28db3066-b7c6-4bc7-9d70-b586242fb475","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08c142a7-2d4b-4194-8db1-c6edad4be1eb -\u003e 28db3066-b7c6-4bc7-9d70-b586242fb475","gmt_create":"2026-04-21T14:58:42.5685373+04:00","gmt_modified":"2026-04-21T14:58:42.5685373+04:00"},{"id":28480,"source_id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","target_id":"b266130c-426c-4771-97c9-7fcbbbb1d6d7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08c142a7-2d4b-4194-8db1-c6edad4be1eb -\u003e b266130c-426c-4771-97c9-7fcbbbb1d6d7","gmt_create":"2026-04-21T14:58:42.5685373+04:00","gmt_modified":"2026-04-21T14:58:42.5685373+04:00"},{"id":28481,"source_id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","target_id":"121e8dbe-2bce-4c8e-82e2-cc7e6fb2e6ab","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08c142a7-2d4b-4194-8db1-c6edad4be1eb -\u003e 121e8dbe-2bce-4c8e-82e2-cc7e6fb2e6ab","gmt_create":"2026-04-21T14:58:42.5700416+04:00","gmt_modified":"2026-04-21T14:58:42.5700416+04:00"},{"id":28482,"source_id":"044f1c89-8d37-4125-8c3a-648cec0d2c18","target_id":"b47d3c4e-e279-480a-b154-f5776e2cd476","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 044f1c89-8d37-4125-8c3a-648cec0d2c18 -\u003e b47d3c4e-e279-480a-b154-f5776e2cd476","gmt_create":"2026-04-21T14:58:42.5700416+04:00","gmt_modified":"2026-04-21T14:58:42.5700416+04:00"},{"id":28483,"source_id":"044f1c89-8d37-4125-8c3a-648cec0d2c18","target_id":"65aeea2b-9f37-4773-a6ec-60e6015a94ed","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 044f1c89-8d37-4125-8c3a-648cec0d2c18 -\u003e 65aeea2b-9f37-4773-a6ec-60e6015a94ed","gmt_create":"2026-04-21T14:58:42.5700416+04:00","gmt_modified":"2026-04-21T14:58:42.5700416+04:00"},{"id":28484,"source_id":"0a59acb5-40df-466d-91e3-ed6eccaff101","target_id":"c1b1b5a2-5e1f-4a1a-9e7b-da5832ea0668","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0a59acb5-40df-466d-91e3-ed6eccaff101 -\u003e c1b1b5a2-5e1f-4a1a-9e7b-da5832ea0668","gmt_create":"2026-04-21T14:58:42.5700416+04:00","gmt_modified":"2026-04-21T14:58:42.5700416+04:00"},{"id":28485,"source_id":"0a59acb5-40df-466d-91e3-ed6eccaff101","target_id":"d4152d99-e52b-4580-a01b-a361d951188a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0a59acb5-40df-466d-91e3-ed6eccaff101 -\u003e d4152d99-e52b-4580-a01b-a361d951188a","gmt_create":"2026-04-21T14:58:42.5700416+04:00","gmt_modified":"2026-04-21T14:58:42.5700416+04:00"},{"id":28486,"source_id":"0a59acb5-40df-466d-91e3-ed6eccaff101","target_id":"495f2dc7-f519-46ca-a8d0-6081782596bd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0a59acb5-40df-466d-91e3-ed6eccaff101 -\u003e 495f2dc7-f519-46ca-a8d0-6081782596bd","gmt_create":"2026-04-21T14:58:42.571046+04:00","gmt_modified":"2026-04-21T14:58:42.571046+04:00"},{"id":28487,"source_id":"0a59acb5-40df-466d-91e3-ed6eccaff101","target_id":"545aae90-5c64-4034-84f4-e32d8790461e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0a59acb5-40df-466d-91e3-ed6eccaff101 -\u003e 545aae90-5c64-4034-84f4-e32d8790461e","gmt_create":"2026-04-21T14:58:42.571046+04:00","gmt_modified":"2026-04-21T14:58:42.571046+04:00"},{"id":28488,"source_id":"404f16df-b055-4b9e-854c-6e455a269473","target_id":"60c25aa8-7c9f-4239-a8ca-d928fcaf1d5f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 404f16df-b055-4b9e-854c-6e455a269473 -\u003e 60c25aa8-7c9f-4239-a8ca-d928fcaf1d5f","gmt_create":"2026-04-21T14:58:42.571046+04:00","gmt_modified":"2026-04-21T14:58:42.571046+04:00"},{"id":28489,"source_id":"404f16df-b055-4b9e-854c-6e455a269473","target_id":"a68973fc-abf9-40f7-b4e2-51834351ca15","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 404f16df-b055-4b9e-854c-6e455a269473 -\u003e a68973fc-abf9-40f7-b4e2-51834351ca15","gmt_create":"2026-04-21T14:58:42.571046+04:00","gmt_modified":"2026-04-21T14:58:42.571046+04:00"},{"id":28490,"source_id":"404f16df-b055-4b9e-854c-6e455a269473","target_id":"5e4f73d4-9488-41eb-adde-5ca21c9ba61e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 404f16df-b055-4b9e-854c-6e455a269473 -\u003e 5e4f73d4-9488-41eb-adde-5ca21c9ba61e","gmt_create":"2026-04-21T14:58:42.5720458+04:00","gmt_modified":"2026-04-21T14:58:42.5720458+04:00"},{"id":28491,"source_id":"404f16df-b055-4b9e-854c-6e455a269473","target_id":"b6ba3882-b400-4e98-94b5-633a2df52979","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 404f16df-b055-4b9e-854c-6e455a269473 -\u003e b6ba3882-b400-4e98-94b5-633a2df52979","gmt_create":"2026-04-21T14:58:42.5720458+04:00","gmt_modified":"2026-04-21T14:58:42.5720458+04:00"},{"id":28492,"source_id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","target_id":"9341f099-7b24-4f13-83d6-530477010104","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: f87cd13c-94db-4641-8cab-5f0ef5598cd4 -\u003e 9341f099-7b24-4f13-83d6-530477010104","gmt_create":"2026-04-21T14:58:42.5720458+04:00","gmt_modified":"2026-04-21T14:58:42.5720458+04:00"},{"id":28493,"source_id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","target_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: f87cd13c-94db-4641-8cab-5f0ef5598cd4 -\u003e 53e60cbd-820e-4c87-b71c-7f37e5209e76","gmt_create":"2026-04-21T14:58:42.5720458+04:00","gmt_modified":"2026-04-21T14:58:42.5720458+04:00"},{"id":28495,"source_id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","target_id":"a35f29ed-8b7c-4051-b425-2cc9013c03e5","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: f87cd13c-94db-4641-8cab-5f0ef5598cd4 -\u003e a35f29ed-8b7c-4051-b425-2cc9013c03e5","gmt_create":"2026-04-21T14:58:42.5730475+04:00","gmt_modified":"2026-04-21T14:58:42.5730475+04:00"},{"id":28496,"source_id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","target_id":"facd2085-5062-4a81-a219-d07d66dc42db","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4331f8e8-c9fb-4633-96d5-dcefc7d9a949 -\u003e facd2085-5062-4a81-a219-d07d66dc42db","gmt_create":"2026-04-21T14:58:42.5730475+04:00","gmt_modified":"2026-04-21T14:58:42.5730475+04:00"},{"id":28497,"source_id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","target_id":"1f472b32-a687-468e-a795-121b23dca338","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4331f8e8-c9fb-4633-96d5-dcefc7d9a949 -\u003e 1f472b32-a687-468e-a795-121b23dca338","gmt_create":"2026-04-21T14:58:42.574047+04:00","gmt_modified":"2026-04-21T14:58:42.574047+04:00"},{"id":28498,"source_id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","target_id":"39a7ebb6-e871-4365-a8e6-76cdb7651290","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4331f8e8-c9fb-4633-96d5-dcefc7d9a949 -\u003e 39a7ebb6-e871-4365-a8e6-76cdb7651290","gmt_create":"2026-04-21T14:58:42.574047+04:00","gmt_modified":"2026-04-21T14:58:42.574047+04:00"},{"id":28499,"source_id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","target_id":"00b46de3-10d9-4f2d-b01e-abe830fab8bf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4331f8e8-c9fb-4633-96d5-dcefc7d9a949 -\u003e 00b46de3-10d9-4f2d-b01e-abe830fab8bf","gmt_create":"2026-04-21T14:58:42.574047+04:00","gmt_modified":"2026-04-21T14:58:42.574047+04:00"},{"id":28500,"source_id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","target_id":"b2a1413a-6c97-49e8-8a45-dffb8d04ec31","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 652f64b6-10ab-4d0f-a6bf-87a17c018ddd -\u003e b2a1413a-6c97-49e8-8a45-dffb8d04ec31","gmt_create":"2026-04-21T14:58:42.5750467+04:00","gmt_modified":"2026-04-21T14:58:42.5750467+04:00"},{"id":28501,"source_id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","target_id":"fa23f625-e0bb-4035-9098-f1b595766f03","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 652f64b6-10ab-4d0f-a6bf-87a17c018ddd -\u003e fa23f625-e0bb-4035-9098-f1b595766f03","gmt_create":"2026-04-21T14:58:42.5750467+04:00","gmt_modified":"2026-04-21T14:58:42.5750467+04:00"},{"id":28502,"source_id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","target_id":"ad689a7c-7252-43ea-acb9-f94bc566a3f3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 652f64b6-10ab-4d0f-a6bf-87a17c018ddd -\u003e ad689a7c-7252-43ea-acb9-f94bc566a3f3","gmt_create":"2026-04-21T14:58:42.5750467+04:00","gmt_modified":"2026-04-21T14:58:42.5750467+04:00"},{"id":28503,"source_id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","target_id":"ef9f708e-fa60-4526-92e5-9fcb81fc7c57","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 652f64b6-10ab-4d0f-a6bf-87a17c018ddd -\u003e ef9f708e-fa60-4526-92e5-9fcb81fc7c57","gmt_create":"2026-04-21T14:58:42.5760466+04:00","gmt_modified":"2026-04-21T14:58:42.5760466+04:00"},{"id":28505,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"d018473a-d7ca-4ee5-9535-6e902bb16128","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e d018473a-d7ca-4ee5-9535-6e902bb16128","gmt_create":"2026-04-21T14:58:42.5760466+04:00","gmt_modified":"2026-04-21T14:58:42.5760466+04:00"},{"id":28507,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"00fca86c-1092-4f62-9718-328cd2538fd7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e 00fca86c-1092-4f62-9718-328cd2538fd7","gmt_create":"2026-04-21T14:58:42.5770458+04:00","gmt_modified":"2026-04-21T14:58:42.5770458+04:00"},{"id":28508,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"bc7e8e9a-7d66-4ab4-86c8-2ddbbffc3677","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e bc7e8e9a-7d66-4ab4-86c8-2ddbbffc3677","gmt_create":"2026-04-21T14:58:42.5770458+04:00","gmt_modified":"2026-04-21T14:58:42.5770458+04:00"},{"id":28509,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"06963af0-f077-4656-92c0-7b789186b834","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e 06963af0-f077-4656-92c0-7b789186b834","gmt_create":"2026-04-21T14:58:42.5770458+04:00","gmt_modified":"2026-04-21T14:58:42.5770458+04:00"},{"id":28510,"source_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","target_id":"f52a9806-24c5-4240-add0-132a46428801","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 53e60cbd-820e-4c87-b71c-7f37e5209e76 -\u003e f52a9806-24c5-4240-add0-132a46428801","gmt_create":"2026-04-21T14:58:42.5770458+04:00","gmt_modified":"2026-04-21T14:58:42.5770458+04:00"},{"id":28511,"source_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","target_id":"0ce50c8e-b42b-4500-9b8a-5cc481b9daa3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 53e60cbd-820e-4c87-b71c-7f37e5209e76 -\u003e 0ce50c8e-b42b-4500-9b8a-5cc481b9daa3","gmt_create":"2026-04-21T14:58:42.578047+04:00","gmt_modified":"2026-04-21T14:58:42.578047+04:00"},{"id":28512,"source_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","target_id":"babbad5d-c4d7-4d13-93e9-5281324f8aec","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 53e60cbd-820e-4c87-b71c-7f37e5209e76 -\u003e babbad5d-c4d7-4d13-93e9-5281324f8aec","gmt_create":"2026-04-21T14:58:42.578047+04:00","gmt_modified":"2026-04-21T14:58:42.578047+04:00"},{"id":28513,"source_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","target_id":"08b4f1e2-4378-4576-91a2-fee8d2b243b8","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 53e60cbd-820e-4c87-b71c-7f37e5209e76 -\u003e 08b4f1e2-4378-4576-91a2-fee8d2b243b8","gmt_create":"2026-04-21T14:58:42.578047+04:00","gmt_modified":"2026-04-21T14:58:42.578047+04:00"},{"id":28514,"source_id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","target_id":"176d7d3a-5d1d-4a91-977c-40e482e05a72","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 53e60cbd-820e-4c87-b71c-7f37e5209e76 -\u003e 176d7d3a-5d1d-4a91-977c-40e482e05a72","gmt_create":"2026-04-21T14:58:42.578047+04:00","gmt_modified":"2026-04-21T14:58:42.578047+04:00"},{"id":28519,"source_id":"500c516d-131c-4d97-a2e6-142ef59c4741","target_id":"0da1ba8a-ae9c-417e-a45d-c1aed93a8acc","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 500c516d-131c-4d97-a2e6-142ef59c4741 -\u003e 0da1ba8a-ae9c-417e-a45d-c1aed93a8acc","gmt_create":"2026-04-21T14:58:42.5790483+04:00","gmt_modified":"2026-04-21T14:58:42.5790483+04:00"},{"id":28520,"source_id":"500c516d-131c-4d97-a2e6-142ef59c4741","target_id":"51b19f1f-4899-46ff-a8a5-637803c21e03","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 500c516d-131c-4d97-a2e6-142ef59c4741 -\u003e 51b19f1f-4899-46ff-a8a5-637803c21e03","gmt_create":"2026-04-21T14:58:42.5805545+04:00","gmt_modified":"2026-04-21T14:58:42.5805545+04:00"},{"id":28521,"source_id":"500c516d-131c-4d97-a2e6-142ef59c4741","target_id":"6add847e-ec39-4344-8432-87a2daa11ccf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 500c516d-131c-4d97-a2e6-142ef59c4741 -\u003e 6add847e-ec39-4344-8432-87a2daa11ccf","gmt_create":"2026-04-21T14:58:42.5805545+04:00","gmt_modified":"2026-04-21T14:58:42.5805545+04:00"},{"id":28522,"source_id":"500c516d-131c-4d97-a2e6-142ef59c4741","target_id":"3b07791c-0a8e-4b2e-9c73-fd6b2b257725","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 500c516d-131c-4d97-a2e6-142ef59c4741 -\u003e 3b07791c-0a8e-4b2e-9c73-fd6b2b257725","gmt_create":"2026-04-21T14:58:42.5805545+04:00","gmt_modified":"2026-04-21T14:58:42.5805545+04:00"},{"id":28523,"source_id":"500c516d-131c-4d97-a2e6-142ef59c4741","target_id":"25e670c7-60ae-4ce4-a41b-fb834e5fe871","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 500c516d-131c-4d97-a2e6-142ef59c4741 -\u003e 25e670c7-60ae-4ce4-a41b-fb834e5fe871","gmt_create":"2026-04-21T14:58:42.5815629+04:00","gmt_modified":"2026-04-21T14:58:42.5815629+04:00"},{"id":28530,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"c301941c4a936a7622e3c2d4c4e7d534","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-21T15:26:12.4993502+04:00","gmt_modified":"2026-04-21T15:26:12.4993502+04:00"},{"id":28531,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"09931459f68fae54afb88979ffd55b0e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-21T15:26:12.4998692+04:00","gmt_modified":"2026-04-21T15:26:12.4998692+04:00"},{"id":28532,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T15:26:12.4998692+04:00","gmt_modified":"2026-04-21T15:26:12.4998692+04:00"},{"id":28533,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"523379c439d6dd6e80c4a0a9b810cd94","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-21T15:26:12.5003861+04:00","gmt_modified":"2026-04-21T15:26:12.5003861+04:00"},{"id":28534,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"ea908bf3b792540b293380d2405df2a1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: README.md","gmt_create":"2026-04-21T15:26:12.5008991+04:00","gmt_modified":"2026-04-21T15:26:12.5008991+04:00"},{"id":28535,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"e602c0b51903a7d2b2b9f8659b518ec8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-21T15:26:12.5008991+04:00","gmt_modified":"2026-04-21T15:26:12.5008991+04:00"},{"id":28536,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"8352639ee8e2e7c4bc16eae03e608449","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#183-649","gmt_create":"2026-04-21T15:26:12.5008991+04:00","gmt_modified":"2026-04-21T15:26:12.5008991+04:00"},{"id":28537,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"8352639ee8e2e7c4bc16eae03e608449","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 183-649","gmt_create":"2026-04-21T15:26:12.5008991+04:00","gmt_modified":"2026-04-21T15:26:12.5008991+04:00"},{"id":28538,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"c7078847cda875b948ba0ee365fedd0b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#351-544","gmt_create":"2026-04-21T15:26:12.5019271+04:00","gmt_modified":"2026-04-21T15:26:12.5019271+04:00"},{"id":28539,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"c7078847cda875b948ba0ee365fedd0b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 351-544","gmt_create":"2026-04-21T15:26:12.5019271+04:00","gmt_modified":"2026-04-21T15:26:12.5019271+04:00"},{"id":28540,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"ef6fb98db19c3efcbe268105ed5e68fc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3031-3118","gmt_create":"2026-04-21T15:26:12.5019271+04:00","gmt_modified":"2026-04-21T15:26:12.5019271+04:00"},{"id":28541,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"ef6fb98db19c3efcbe268105ed5e68fc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3031-3118","gmt_create":"2026-04-21T15:26:12.5019271+04:00","gmt_modified":"2026-04-21T15:26:12.5019271+04:00"},{"id":28542,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"cf2600b53a5f525680033591c8c66490","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#1-694","gmt_create":"2026-04-21T15:26:12.5024449+04:00","gmt_modified":"2026-04-21T15:26:12.5024449+04:00"},{"id":28543,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"cf2600b53a5f525680033591c8c66490","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-694","gmt_create":"2026-04-21T15:26:12.5024449+04:00","gmt_modified":"2026-04-21T15:26:12.5024449+04:00"},{"id":28544,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"749573fcc7dbcb608fc4ff1d5ddedfbb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-6314","gmt_create":"2026-04-21T15:26:12.5024449+04:00","gmt_modified":"2026-04-21T15:26:12.5024449+04:00"},{"id":28545,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"749573fcc7dbcb608fc4ff1d5ddedfbb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6314","gmt_create":"2026-04-21T15:26:12.5024449+04:00","gmt_modified":"2026-04-21T15:26:12.5024449+04:00"},{"id":28546,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"46f3169187b8a40864070b1d3c974a78","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-124","gmt_create":"2026-04-21T15:26:12.5029613+04:00","gmt_modified":"2026-04-21T15:26:12.5029613+04:00"},{"id":28547,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"46f3169187b8a40864070b1d3c974a78","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-124","gmt_create":"2026-04-21T15:26:12.5029613+04:00","gmt_modified":"2026-04-21T15:26:12.5029613+04:00"},{"id":28548,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"2fa0448b5ecfcbe21e60eca380f1f797","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#21-93","gmt_create":"2026-04-21T15:26:12.5029613+04:00","gmt_modified":"2026-04-21T15:26:12.5029613+04:00"},{"id":28549,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"2fa0448b5ecfcbe21e60eca380f1f797","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-93","gmt_create":"2026-04-21T15:26:12.5029613+04:00","gmt_modified":"2026-04-21T15:26:12.5029613+04:00"},{"id":28550,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"2957663d8fb674bf1f5c6222b46392db","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#103-183","gmt_create":"2026-04-21T15:26:12.5034794+04:00","gmt_modified":"2026-04-21T15:26:12.5034794+04:00"},{"id":28551,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"2957663d8fb674bf1f5c6222b46392db","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 103-183","gmt_create":"2026-04-21T15:26:12.5034794+04:00","gmt_modified":"2026-04-21T15:26:12.5034794+04:00"},{"id":28552,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"a940626ebef2ff638a1f0c0ad34a604a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#438-544","gmt_create":"2026-04-21T15:26:12.5034794+04:00","gmt_modified":"2026-04-21T15:26:12.5034794+04:00"},{"id":28553,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a940626ebef2ff638a1f0c0ad34a604a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 438-544","gmt_create":"2026-04-21T15:26:12.5039999+04:00","gmt_modified":"2026-04-21T15:26:12.5039999+04:00"},{"id":28554,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"35b837bbd6820136066303569dc5f8e9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#650-666","gmt_create":"2026-04-21T15:26:12.5039999+04:00","gmt_modified":"2026-04-21T15:26:12.5039999+04:00"},{"id":28555,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"35b837bbd6820136066303569dc5f8e9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 650-666","gmt_create":"2026-04-21T15:26:12.5039999+04:00","gmt_modified":"2026-04-21T15:26:12.5039999+04:00"},{"id":28556,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"0ff2cbff5891d55dd05ff207f97709c4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#197-272","gmt_create":"2026-04-21T15:26:12.5039999+04:00","gmt_modified":"2026-04-21T15:26:12.5039999+04:00"},{"id":28557,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"0ff2cbff5891d55dd05ff207f97709c4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 197-272","gmt_create":"2026-04-21T15:26:12.5039999+04:00","gmt_modified":"2026-04-21T15:26:12.5039999+04:00"},{"id":28558,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"2f7a82ca1b02b415d6cf71804ade660b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#274-386","gmt_create":"2026-04-21T15:26:12.505038+04:00","gmt_modified":"2026-04-21T15:26:12.505038+04:00"},{"id":28559,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"2f7a82ca1b02b415d6cf71804ade660b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 274-386","gmt_create":"2026-04-21T15:26:12.505038+04:00","gmt_modified":"2026-04-21T15:26:12.505038+04:00"},{"id":28560,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"f7abf8832320f0102528ca2383d3dbdc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#388-649","gmt_create":"2026-04-21T15:26:12.505038+04:00","gmt_modified":"2026-04-21T15:26:12.505038+04:00"},{"id":28561,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"f7abf8832320f0102528ca2383d3dbdc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 388-649","gmt_create":"2026-04-21T15:26:12.505038+04:00","gmt_modified":"2026-04-21T15:26:12.505038+04:00"},{"id":28562,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"264b5284a45f2156a8dd6a39d2b8b343","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4253-4323","gmt_create":"2026-04-21T15:26:12.5056277+04:00","gmt_modified":"2026-04-21T15:26:12.5056277+04:00"},{"id":28563,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"264b5284a45f2156a8dd6a39d2b8b343","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4253-4323","gmt_create":"2026-04-21T15:26:12.5061316+04:00","gmt_modified":"2026-04-21T15:26:12.5061316+04:00"},{"id":28564,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"77c5d49ba11e50b936f2e37cfe5bac15","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4314-4323","gmt_create":"2026-04-21T15:26:12.5061316+04:00","gmt_modified":"2026-04-21T15:26:12.5061316+04:00"},{"id":28565,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"77c5d49ba11e50b936f2e37cfe5bac15","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4314-4323","gmt_create":"2026-04-21T15:26:12.5061316+04:00","gmt_modified":"2026-04-21T15:26:12.5061316+04:00"},{"id":28566,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"06d2c969585ac21892f8648310ef36d6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#420-475","gmt_create":"2026-04-21T15:26:12.5172358+04:00","gmt_modified":"2026-04-21T15:26:12.5172358+04:00"},{"id":28567,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"06d2c969585ac21892f8648310ef36d6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 420-475","gmt_create":"2026-04-21T15:26:12.5172358+04:00","gmt_modified":"2026-04-21T15:26:12.5172358+04:00"},{"id":28568,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"c4e5c1ecfa627b20380d1bf818332958","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3031-3042","gmt_create":"2026-04-21T15:26:12.5187402+04:00","gmt_modified":"2026-04-21T15:26:12.5187402+04:00"},{"id":28569,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"c4e5c1ecfa627b20380d1bf818332958","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3031-3042","gmt_create":"2026-04-21T15:26:12.5187402+04:00","gmt_modified":"2026-04-21T15:26:12.5187402+04:00"},{"id":28570,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"d982ea0d9ca7142616c0b53357e3e203","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#566-649","gmt_create":"2026-04-21T15:26:12.5192615+04:00","gmt_modified":"2026-04-21T15:26:12.5192615+04:00"},{"id":28571,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"d982ea0d9ca7142616c0b53357e3e203","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 566-649","gmt_create":"2026-04-21T15:26:12.5192615+04:00","gmt_modified":"2026-04-21T15:26:12.5192615+04:00"},{"id":28572,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"b25e4b62701b8c78e297ddee5f2caad0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#344-382","gmt_create":"2026-04-21T15:26:12.5197811+04:00","gmt_modified":"2026-04-21T15:26:12.5197811+04:00"},{"id":28573,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"b25e4b62701b8c78e297ddee5f2caad0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 344-382","gmt_create":"2026-04-21T15:26:12.5197811+04:00","gmt_modified":"2026-04-21T15:26:12.5197811+04:00"},{"id":28574,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"64826c30d399416ce63275a6cabd180c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2817-2861","gmt_create":"2026-04-21T15:26:12.5202973+04:00","gmt_modified":"2026-04-21T15:26:12.5202973+04:00"},{"id":28575,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"64826c30d399416ce63275a6cabd180c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2817-2861","gmt_create":"2026-04-21T15:26:12.5202973+04:00","gmt_modified":"2026-04-21T15:26:12.5202973+04:00"},{"id":28576,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"93a1d075e0ec75d870207ec250efc575","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2908-2920","gmt_create":"2026-04-21T15:26:12.5202973+04:00","gmt_modified":"2026-04-21T15:26:12.5202973+04:00"},{"id":28577,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"93a1d075e0ec75d870207ec250efc575","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2908-2920","gmt_create":"2026-04-21T15:26:12.5202973+04:00","gmt_modified":"2026-04-21T15:26:12.5202973+04:00"},{"id":28578,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"3d03986a0ff0a3e1e44cbbea9b0302d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#1-12","gmt_create":"2026-04-21T15:26:12.520964+04:00","gmt_modified":"2026-04-21T15:26:12.520964+04:00"},{"id":28579,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"3d03986a0ff0a3e1e44cbbea9b0302d7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-12","gmt_create":"2026-04-21T15:26:12.5214671+04:00","gmt_modified":"2026-04-21T15:26:12.5214671+04:00"},{"id":28580,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"32febe28fa31d374ab5de6556ddec265","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-10","gmt_create":"2026-04-21T15:26:12.5214671+04:00","gmt_modified":"2026-04-21T15:26:12.5214671+04:00"},{"id":28581,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"32febe28fa31d374ab5de6556ddec265","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-10","gmt_create":"2026-04-21T15:26:12.5214671+04:00","gmt_modified":"2026-04-21T15:26:12.5214671+04:00"},{"id":28582,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"aba8efd2da24a907a112525ea45ac4f6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#23-24","gmt_create":"2026-04-21T15:26:12.5214671+04:00","gmt_modified":"2026-04-21T15:26:12.5214671+04:00"},{"id":28583,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"aba8efd2da24a907a112525ea45ac4f6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 23-24","gmt_create":"2026-04-21T15:26:12.5219762+04:00","gmt_modified":"2026-04-21T15:26:12.5219762+04:00"},{"id":28584,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"8f6d5eed4cbe8899c555b9eff6586d81","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#92-105","gmt_create":"2026-04-21T15:26:12.5219762+04:00","gmt_modified":"2026-04-21T15:26:12.5219762+04:00"},{"id":28585,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"8f6d5eed4cbe8899c555b9eff6586d81","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 92-105","gmt_create":"2026-04-21T15:26:12.5219762+04:00","gmt_modified":"2026-04-21T15:26:12.5219762+04:00"},{"id":28586,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"84bf9937db75200f50ce58380ad0e414","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#24-51","gmt_create":"2026-04-21T15:26:12.5219762+04:00","gmt_modified":"2026-04-21T15:26:12.5219762+04:00"},{"id":28587,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"84bf9937db75200f50ce58380ad0e414","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 24-51","gmt_create":"2026-04-21T15:26:12.5224854+04:00","gmt_modified":"2026-04-21T15:26:12.5224854+04:00"},{"id":28588,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"98be528d411be6c35939a760839f7201","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#398-418","gmt_create":"2026-04-21T15:26:12.5224854+04:00","gmt_modified":"2026-04-21T15:26:12.5224854+04:00"},{"id":28589,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"98be528d411be6c35939a760839f7201","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 398-418","gmt_create":"2026-04-21T15:26:12.5224854+04:00","gmt_modified":"2026-04-21T15:26:12.5224854+04:00"},{"id":28590,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"056e785677daf89fe73710fde32d9ff8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#562-601","gmt_create":"2026-04-21T15:26:12.5224854+04:00","gmt_modified":"2026-04-21T15:26:12.5224854+04:00"},{"id":28591,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"056e785677daf89fe73710fde32d9ff8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 562-601","gmt_create":"2026-04-21T15:26:12.5224854+04:00","gmt_modified":"2026-04-21T15:26:12.5224854+04:00"},{"id":28592,"source_id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","target_id":"e3ca1989a0833158cbedbe39c781bb6b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#251-271","gmt_create":"2026-04-21T15:26:12.5229961+04:00","gmt_modified":"2026-04-21T15:26:12.5229961+04:00"},{"id":28593,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"e3ca1989a0833158cbedbe39c781bb6b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 251-271","gmt_create":"2026-04-21T15:26:12.5229961+04:00","gmt_modified":"2026-04-21T15:26:12.5229961+04:00"},{"id":28594,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-21T15:28:15.4312627+04:00","gmt_modified":"2026-04-21T15:28:15.4312627+04:00"},{"id":28595,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"93d2279380057f5ff7bb0ec4d574b04a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-21T15:28:15.4317906+04:00","gmt_modified":"2026-04-21T15:28:15.4317906+04:00"},{"id":28596,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"509c1750918b17167d058b5f1528df2e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.cpp","gmt_create":"2026-04-21T15:28:15.4317906+04:00","gmt_modified":"2026-04-21T15:28:15.4317906+04:00"},{"id":28597,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"51762eb7a9db71fd1b93f196bac889de","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/stcp_socket.cpp","gmt_create":"2026-04-21T15:28:15.4323253+04:00","gmt_modified":"2026-04-21T15:28:15.4323253+04:00"},{"id":28598,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T15:28:15.4328622+04:00","gmt_modified":"2026-04-21T15:28:15.4328622+04:00"},{"id":28599,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"645d8e6ea333ab8b9be2b7e711c5a349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-21T15:28:15.4333883+04:00","gmt_modified":"2026-04-21T15:28:15.4333883+04:00"},{"id":28600,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"041c5ab0bad4a30c8e8c4053859b33cc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_testnet.ini","gmt_create":"2026-04-21T15:28:15.4333883+04:00","gmt_modified":"2026-04-21T15:28:15.4333883+04:00"},{"id":28601,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"69f92fde51907bfe1568da2234d5432c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_witness.ini","gmt_create":"2026-04-21T15:28:15.433931+04:00","gmt_modified":"2026-04-21T15:28:15.433931+04:00"},{"id":28602,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"b70b275b872bbc6ecd1c4312dea1f126","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-21T15:28:15.4344545+04:00","gmt_modified":"2026-04-21T15:28:15.4344545+04:00"},{"id":28603,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-21T15:28:15.4344545+04:00","gmt_modified":"2026-04-21T15:28:15.4344545+04:00"},{"id":28604,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"52f5e880c05c0b3e52e994a389aba5e4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-21T15:28:15.434998+04:00","gmt_modified":"2026-04-21T15:28:15.434998+04:00"},{"id":28605,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"6a20190cd3b03b84a4bab259af0af6b1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#467-566","gmt_create":"2026-04-21T15:28:15.4355242+04:00","gmt_modified":"2026-04-21T15:28:15.4355242+04:00"},{"id":28606,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"6a20190cd3b03b84a4bab259af0af6b1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 467-566","gmt_create":"2026-04-21T15:28:15.4355242+04:00","gmt_modified":"2026-04-21T15:28:15.4355242+04:00"},{"id":28607,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"00cabf1b7055d04e0960c216d8cd0403","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#424-800","gmt_create":"2026-04-21T15:28:15.4360542+04:00","gmt_modified":"2026-04-21T15:28:15.4360542+04:00"},{"id":28608,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"00cabf1b7055d04e0960c216d8cd0403","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 424-800","gmt_create":"2026-04-21T15:28:15.4365801+04:00","gmt_modified":"2026-04-21T15:28:15.4365801+04:00"},{"id":28609,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"d10d503ecf6e02af47ac3e2d2135da1f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#68-162","gmt_create":"2026-04-21T15:28:15.4371103+04:00","gmt_modified":"2026-04-21T15:28:15.4371103+04:00"},{"id":28610,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"d10d503ecf6e02af47ac3e2d2135da1f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 68-162","gmt_create":"2026-04-21T15:28:15.4371103+04:00","gmt_modified":"2026-04-21T15:28:15.4371103+04:00"},{"id":28611,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"6dfd418bf1140349990a279ba15b5ce3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#37-92","gmt_create":"2026-04-21T15:28:15.4376313+04:00","gmt_modified":"2026-04-21T15:28:15.4376313+04:00"},{"id":28612,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"6dfd418bf1140349990a279ba15b5ce3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-92","gmt_create":"2026-04-21T15:28:15.4376313+04:00","gmt_modified":"2026-04-21T15:28:15.4376313+04:00"},{"id":28613,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"2e10237dfe812b2703942b296f4ccd5a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#26-106","gmt_create":"2026-04-21T15:28:15.4376313+04:00","gmt_modified":"2026-04-21T15:28:15.4376313+04:00"},{"id":28614,"source_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","target_id":"2e10237dfe812b2703942b296f4ccd5a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-106","gmt_create":"2026-04-21T15:28:15.4381568+04:00","gmt_modified":"2026-04-21T15:28:15.4381568+04:00"},{"id":28615,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"c270b4d292d531283c1b958e3b06084a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-114","gmt_create":"2026-04-21T15:28:15.4386813+04:00","gmt_modified":"2026-04-21T15:28:15.4386813+04:00"},{"id":28616,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"95576c9a6ad8dd09d002408de4f3055b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#47-71","gmt_create":"2026-04-21T15:28:15.4392231+04:00","gmt_modified":"2026-04-21T15:28:15.4392231+04:00"},{"id":28617,"source_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","target_id":"95576c9a6ad8dd09d002408de4f3055b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-71","gmt_create":"2026-04-21T15:28:15.4392231+04:00","gmt_modified":"2026-04-21T15:28:15.4392231+04:00"},{"id":28618,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"4a6eface4715768aeeb8b7b1719dd3a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-136","gmt_create":"2026-04-21T15:28:15.4397513+04:00","gmt_modified":"2026-04-21T15:28:15.4397513+04:00"},{"id":28619,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"4a6eface4715768aeeb8b7b1719dd3a5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-136","gmt_create":"2026-04-21T15:28:15.4397513+04:00","gmt_modified":"2026-04-21T15:28:15.4397513+04:00"},{"id":28620,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"db51d27151ff0ee62237a12f6e28a8a8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#1-132","gmt_create":"2026-04-21T15:28:15.4397513+04:00","gmt_modified":"2026-04-21T15:28:15.4397513+04:00"},{"id":28621,"source_id":"041c5ab0bad4a30c8e8c4053859b33cc","target_id":"db51d27151ff0ee62237a12f6e28a8a8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-132","gmt_create":"2026-04-21T15:28:15.4397513+04:00","gmt_modified":"2026-04-21T15:28:15.4397513+04:00"},{"id":28622,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"201d56e7922b2c932dae08a7356a8a97","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#1-107","gmt_create":"2026-04-21T15:28:15.4402735+04:00","gmt_modified":"2026-04-21T15:28:15.4402735+04:00"},{"id":28623,"source_id":"69f92fde51907bfe1568da2234d5432c","target_id":"201d56e7922b2c932dae08a7356a8a97","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-107","gmt_create":"2026-04-21T15:28:15.4402735+04:00","gmt_modified":"2026-04-21T15:28:15.4402735+04:00"},{"id":28624,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"d6f85d2cf86b491c902e83cdac4170ca","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#531-566","gmt_create":"2026-04-21T15:28:15.4429172+04:00","gmt_modified":"2026-04-21T15:28:15.4429172+04:00"},{"id":28625,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"d6f85d2cf86b491c902e83cdac4170ca","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 531-566","gmt_create":"2026-04-21T15:28:15.4434418+04:00","gmt_modified":"2026-04-21T15:28:15.4434418+04:00"},{"id":28626,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"d12f4353aeb902df69cc28f2056819be","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#776-790","gmt_create":"2026-04-21T15:28:15.4434418+04:00","gmt_modified":"2026-04-21T15:28:15.4434418+04:00"},{"id":28627,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"d12f4353aeb902df69cc28f2056819be","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 776-790","gmt_create":"2026-04-21T15:28:15.4440304+04:00","gmt_modified":"2026-04-21T15:28:15.4440304+04:00"},{"id":28628,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"599fd39262fa543f50ee2886a28ec74d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#497-521","gmt_create":"2026-04-21T15:28:15.4445362+04:00","gmt_modified":"2026-04-21T15:28:15.4445362+04:00"},{"id":28629,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"599fd39262fa543f50ee2886a28ec74d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 497-521","gmt_create":"2026-04-21T15:28:15.4450742+04:00","gmt_modified":"2026-04-21T15:28:15.4450742+04:00"},{"id":28630,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"4550652139a82971105a5125534f4555","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#780-785","gmt_create":"2026-04-21T15:28:15.4455906+04:00","gmt_modified":"2026-04-21T15:28:15.4455906+04:00"},{"id":28631,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"4550652139a82971105a5125534f4555","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 780-785","gmt_create":"2026-04-21T15:28:15.4455906+04:00","gmt_modified":"2026-04-21T15:28:15.4455906+04:00"},{"id":28632,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"39054c03364a3fe629ad93d0da500277","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#537-540","gmt_create":"2026-04-21T15:28:15.44621+04:00","gmt_modified":"2026-04-21T15:28:15.44621+04:00"},{"id":28633,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"39054c03364a3fe629ad93d0da500277","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 537-540","gmt_create":"2026-04-21T15:28:15.44621+04:00","gmt_modified":"2026-04-21T15:28:15.44621+04:00"},{"id":28634,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"9315d954a96215e742a9e8e44b66be72","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#786-792","gmt_create":"2026-04-21T15:28:15.44621+04:00","gmt_modified":"2026-04-21T15:28:15.44621+04:00"},{"id":28635,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"9315d954a96215e742a9e8e44b66be72","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 786-792","gmt_create":"2026-04-21T15:28:15.447216+04:00","gmt_modified":"2026-04-21T15:28:15.447216+04:00"},{"id":28636,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"5df79c1ab672ebc533679aaf72b42d30","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#487-495","gmt_create":"2026-04-21T15:28:15.447216+04:00","gmt_modified":"2026-04-21T15:28:15.447216+04:00"},{"id":28637,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"5df79c1ab672ebc533679aaf72b42d30","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 487-495","gmt_create":"2026-04-21T15:28:15.4477215+04:00","gmt_modified":"2026-04-21T15:28:15.4477215+04:00"},{"id":28638,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"893fd1ab6dda4e1c86c57aa335f5da33","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#52-56","gmt_create":"2026-04-21T15:28:15.4477215+04:00","gmt_modified":"2026-04-21T15:28:15.4477215+04:00"},{"id":28639,"source_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","target_id":"893fd1ab6dda4e1c86c57aa335f5da33","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 52-56","gmt_create":"2026-04-21T15:28:15.4477215+04:00","gmt_modified":"2026-04-21T15:28:15.4477215+04:00"},{"id":28640,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"9f97158f7b71748204230bab74479dd2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#441-445","gmt_create":"2026-04-21T15:28:15.4487283+04:00","gmt_modified":"2026-04-21T15:28:15.4487283+04:00"},{"id":28641,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"9f97158f7b71748204230bab74479dd2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 441-445","gmt_create":"2026-04-21T15:28:15.4487283+04:00","gmt_modified":"2026-04-21T15:28:15.4487283+04:00"},{"id":28642,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"173cf5d3d4500a101b898ef965b66251","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#169-206","gmt_create":"2026-04-21T15:28:15.4487283+04:00","gmt_modified":"2026-04-21T15:28:15.4487283+04:00"},{"id":28643,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"173cf5d3d4500a101b898ef965b66251","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 169-206","gmt_create":"2026-04-21T15:28:15.4487283+04:00","gmt_modified":"2026-04-21T15:28:15.4487283+04:00"},{"id":28644,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"a276a3e0d51fe09dbc074afa887a36a8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-66","gmt_create":"2026-04-21T15:28:15.4487283+04:00","gmt_modified":"2026-04-21T15:28:15.4487283+04:00"},{"id":28645,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"a276a3e0d51fe09dbc074afa887a36a8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-66","gmt_create":"2026-04-21T15:28:15.449727+04:00","gmt_modified":"2026-04-21T15:28:15.449727+04:00"},{"id":28646,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"60c2ce3033cc50bf4f08e8e529997427","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#223-239","gmt_create":"2026-04-21T15:28:15.449727+04:00","gmt_modified":"2026-04-21T15:28:15.449727+04:00"},{"id":28647,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"60c2ce3033cc50bf4f08e8e529997427","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 223-239","gmt_create":"2026-04-21T15:28:15.449727+04:00","gmt_modified":"2026-04-21T15:28:15.449727+04:00"},{"id":28648,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"198057082417232a02baaba3f2d0320b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#48-50","gmt_create":"2026-04-21T15:28:15.449727+04:00","gmt_modified":"2026-04-21T15:28:15.449727+04:00"},{"id":28649,"source_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","target_id":"198057082417232a02baaba3f2d0320b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-50","gmt_create":"2026-04-21T15:28:15.449727+04:00","gmt_modified":"2026-04-21T15:28:15.449727+04:00"},{"id":28650,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"d67388cac943b43fc94bea840d26f317","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#638-640","gmt_create":"2026-04-21T15:28:15.450727+04:00","gmt_modified":"2026-04-21T15:28:15.450727+04:00"},{"id":28651,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"d67388cac943b43fc94bea840d26f317","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 638-640","gmt_create":"2026-04-21T15:28:15.450727+04:00","gmt_modified":"2026-04-21T15:28:15.450727+04:00"},{"id":28652,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"dc0a85c04287e3284abeb89a4338191e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#518-526","gmt_create":"2026-04-21T15:28:15.450727+04:00","gmt_modified":"2026-04-21T15:28:15.450727+04:00"},{"id":28653,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"dc0a85c04287e3284abeb89a4338191e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 518-526","gmt_create":"2026-04-21T15:28:15.450727+04:00","gmt_modified":"2026-04-21T15:28:15.450727+04:00"},{"id":28654,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"55dd79da7a7280440243883eddb77f5a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#548-567","gmt_create":"2026-04-21T15:28:15.4517261+04:00","gmt_modified":"2026-04-21T15:28:15.4517261+04:00"},{"id":28655,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"55dd79da7a7280440243883eddb77f5a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 548-567","gmt_create":"2026-04-21T15:28:15.4517261+04:00","gmt_modified":"2026-04-21T15:28:15.4517261+04:00"},{"id":28656,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"1060bf826e74215d15b6438d876ec551","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#314-325","gmt_create":"2026-04-21T15:28:15.4517261+04:00","gmt_modified":"2026-04-21T15:28:15.4517261+04:00"},{"id":28657,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"1060bf826e74215d15b6438d876ec551","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 314-325","gmt_create":"2026-04-21T15:28:15.4517261+04:00","gmt_modified":"2026-04-21T15:28:15.4517261+04:00"},{"id":28658,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"96c09cad05e8eac2184754c5fc9d5948","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#55-106","gmt_create":"2026-04-21T15:28:15.4522294+04:00","gmt_modified":"2026-04-21T15:28:15.4522294+04:00"},{"id":28659,"source_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","target_id":"96c09cad05e8eac2184754c5fc9d5948","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 55-106","gmt_create":"2026-04-21T15:28:15.4522294+04:00","gmt_modified":"2026-04-21T15:28:15.4522294+04:00"},{"id":28660,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"9ec635457cc11bc2bb69078993fcdb66","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#403-405","gmt_create":"2026-04-21T15:28:15.458234+04:00","gmt_modified":"2026-04-21T15:28:15.458234+04:00"},{"id":28661,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"9ec635457cc11bc2bb69078993fcdb66","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 403-405","gmt_create":"2026-04-21T15:28:15.458234+04:00","gmt_modified":"2026-04-21T15:28:15.458234+04:00"},{"id":28662,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"5de01f3abcfa46f1e0b9b9e1ab525d3e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#112-136","gmt_create":"2026-04-21T15:28:15.458234+04:00","gmt_modified":"2026-04-21T15:28:15.458234+04:00"},{"id":28663,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"5de01f3abcfa46f1e0b9b9e1ab525d3e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 112-136","gmt_create":"2026-04-21T15:28:15.471258+04:00","gmt_modified":"2026-04-21T15:28:15.471258+04:00"},{"id":28664,"source_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","target_id":"31a4b8e41ed9344abe530bbfe18a239f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#467-482","gmt_create":"2026-04-21T15:28:15.4727637+04:00","gmt_modified":"2026-04-21T15:28:15.4727637+04:00"},{"id":28665,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"31a4b8e41ed9344abe530bbfe18a239f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 467-482","gmt_create":"2026-04-21T15:28:15.4727637+04:00","gmt_modified":"2026-04-21T15:28:15.4727637+04:00"},{"id":28680,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"8535df170dc6215a3ad88dd93b9c0e98","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-642","gmt_create":"2026-04-21T15:30:04.8007407+04:00","gmt_modified":"2026-04-21T15:30:04.8007407+04:00"},{"id":28682,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"1b4630a5893f8fcb04364e115b884172","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6394","gmt_create":"2026-04-21T15:30:04.8007407+04:00","gmt_modified":"2026-04-21T15:30:04.8007407+04:00"},{"id":28684,"source_id":"0153064dfb16c76b2c8535baf78ce4a4","target_id":"f7390d5bc34c6546fd47a2393e083e7e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-75","gmt_create":"2026-04-21T15:30:04.8012674+04:00","gmt_modified":"2026-04-21T15:30:04.8012674+04:00"},{"id":28686,"source_id":"f61784c393035c7948a4317e8dcf5280","target_id":"35d46d5633a13462eb52e54aca34d6d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-302","gmt_create":"2026-04-21T15:30:04.8024944+04:00","gmt_modified":"2026-04-21T15:30:04.8024944+04:00"},{"id":28689,"source_id":"3593b932a51a4e9d045d1cbc84dc9a6d","target_id":"a46413107d52cb603cd476527793535e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-414","gmt_create":"2026-04-21T15:30:04.8035321+04:00","gmt_modified":"2026-04-21T15:30:04.8035321+04:00"},{"id":28691,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"68fdad7841401e90c5c5ea40abfbff2a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-125","gmt_create":"2026-04-21T15:30:04.8041039+04:00","gmt_modified":"2026-04-21T15:30:04.8041039+04:00"},{"id":28693,"source_id":"098d39a4f70011748b886f1f0aac6def","target_id":"ea25ac84742909e90d76068a94ded047","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-245","gmt_create":"2026-04-21T15:30:04.8046387+04:00","gmt_modified":"2026-04-21T15:30:04.8046387+04:00"},{"id":28695,"source_id":"98d1be79114cf1be689f3853988cf901","target_id":"f4da2f9c389f5c6ea43ba001cda708fb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-154","gmt_create":"2026-04-21T15:30:04.8051822+04:00","gmt_modified":"2026-04-21T15:30:04.8051822+04:00"},{"id":28697,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"b54ec203d1da8e4c616a3fec2311049f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2130-2140","gmt_create":"2026-04-21T15:30:04.8057099+04:00","gmt_modified":"2026-04-21T15:30:04.8057099+04:00"},{"id":28699,"source_id":"60d499d475104d27ca84470eedeadbab","target_id":"9eed7eba95404e8e27e3d3c2edb279fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 449-467","gmt_create":"2026-04-21T15:30:04.8062546+04:00","gmt_modified":"2026-04-21T15:30:04.8062546+04:00"},{"id":28701,"source_id":"2196e7f627016478589d0cf2cfb7ce7a","target_id":"e1fa9bfc496492a842998adc3b3afaa9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-118","gmt_create":"2026-04-21T15:30:04.8073229+04:00","gmt_modified":"2026-04-21T15:30:04.8073229+04:00"},{"id":28703,"source_id":"31ce877d410b43a59ae8e84069d217b9","target_id":"dc73ad58c67e8cdb39773f20f3e6b029","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 225-279","gmt_create":"2026-04-21T15:30:04.8073229+04:00","gmt_modified":"2026-04-21T15:30:04.8073229+04:00"},{"id":28705,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"41d7095dbf9aa542d0db24c316979a35","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-115","gmt_create":"2026-04-21T15:30:04.8099582+04:00","gmt_modified":"2026-04-21T15:30:04.8099582+04:00"},{"id":28707,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"535c5a17a7ac07403ea96a2073235389","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 281-324","gmt_create":"2026-04-21T15:30:04.8104822+04:00","gmt_modified":"2026-04-21T15:30:04.8104822+04:00"},{"id":28709,"source_id":"0153064dfb16c76b2c8535baf78ce4a4","target_id":"aad83f64f27db64e1e7945b311188609","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-75","gmt_create":"2026-04-21T15:30:04.8104822+04:00","gmt_modified":"2026-04-21T15:30:04.8104822+04:00"},{"id":28712,"source_id":"2635c59c839f9bfaf8b36ce827ebd4a8","target_id":"4b6ddb0b2b955bd31e4cb1cff392a24a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-125","gmt_create":"2026-04-21T15:30:04.8115421+04:00","gmt_modified":"2026-04-21T15:30:04.8115421+04:00"},{"id":28714,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"5ed5a102f0b94dd380ec8d1c114c0889","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 929-984","gmt_create":"2026-04-21T15:30:04.8116625+04:00","gmt_modified":"2026-04-21T15:30:04.8116625+04:00"},{"id":28716,"source_id":"98d1be79114cf1be689f3853988cf901","target_id":"fddd6da7e2bbee882e0448463e98d666","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-100","gmt_create":"2026-04-21T15:30:04.8121807+04:00","gmt_modified":"2026-04-21T15:30:04.8121807+04:00"},{"id":28718,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"0809c80d1d7608dbd9154e2bdad078ea","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 94-184","gmt_create":"2026-04-21T15:30:04.8142902+04:00","gmt_modified":"2026-04-21T15:30:04.8142902+04:00"},{"id":28720,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"17d428d8b156ca6e29747a2586eb1432","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 330-410","gmt_create":"2026-04-21T15:30:04.8153357+04:00","gmt_modified":"2026-04-21T15:30:04.8153357+04:00"},{"id":28722,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"7371cc1e09db6e42e0ba073fc458e918","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 134-184","gmt_create":"2026-04-21T15:30:04.815859+04:00","gmt_modified":"2026-04-21T15:30:04.815859+04:00"},{"id":28724,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"fa3a8c03917088e8342e1898d59f367d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 503-519","gmt_create":"2026-04-21T15:30:04.8169119+04:00","gmt_modified":"2026-04-21T15:30:04.8169119+04:00"},{"id":28726,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"0e9b1f9e1d1d19556ed50ab11d701180","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-68","gmt_create":"2026-04-21T15:30:04.8180242+04:00","gmt_modified":"2026-04-21T15:30:04.8180242+04:00"},{"id":28728,"source_id":"523379c439d6dd6e80c4a0a9b810cd94","target_id":"a7d8433fc6d55a59afc7ba4f5a2a32d5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2135-2136","gmt_create":"2026-04-21T15:30:04.8180242+04:00","gmt_modified":"2026-04-21T15:30:04.8180242+04:00"},{"id":28730,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"6dec571af966adf5d77fa20a65c2d659","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 704-752","gmt_create":"2026-04-21T15:30:04.8187203+04:00","gmt_modified":"2026-04-21T15:30:04.8187203+04:00"},{"id":28732,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"99ab830dc4812f05f72523b579a487e3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3986-4039","gmt_create":"2026-04-21T15:30:04.8202964+04:00","gmt_modified":"2026-04-21T15:30:04.8202964+04:00"},{"id":28734,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"d0d042bd484b2bbc0c98e3b9e682b7db","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4144-4175","gmt_create":"2026-04-21T15:30:04.8208143+04:00","gmt_modified":"2026-04-21T15:30:04.8208143+04:00"},{"id":28736,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"5cbd06ffd00c865331403feb32ff85da","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4384-4424","gmt_create":"2026-04-21T15:30:04.8208143+04:00","gmt_modified":"2026-04-21T15:30:04.8208143+04:00"},{"id":28738,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"9c04d6593830449265de8e58d6da5ca9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 70-73","gmt_create":"2026-04-21T15:30:04.8213479+04:00","gmt_modified":"2026-04-21T15:30:04.8213479+04:00"},{"id":28740,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"1f3bb0053108316e99dad887b8984f52","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 292-292","gmt_create":"2026-04-21T15:30:04.8218744+04:00","gmt_modified":"2026-04-21T15:30:04.8218744+04:00"},{"id":28742,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"fbd7d962d15d88812122d9772306df11","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4460-4490","gmt_create":"2026-04-21T15:30:04.8229425+04:00","gmt_modified":"2026-04-21T15:30:04.8229425+04:00"},{"id":28744,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"0370b3c1adf528e9e76da6b6040e41c9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 75-77","gmt_create":"2026-04-21T15:30:04.8229425+04:00","gmt_modified":"2026-04-21T15:30:04.8229425+04:00"},{"id":28746,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"8473a68190b3b5531da1208473455cc1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1147-1202","gmt_create":"2026-04-21T15:30:04.8234616+04:00","gmt_modified":"2026-04-21T15:30:04.8234616+04:00"},{"id":28748,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"1162f44e77f6f98ad3482f528c20add0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-96","gmt_create":"2026-04-21T15:30:04.8239948+04:00","gmt_modified":"2026-04-21T15:30:04.8239948+04:00"},{"id":28750,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"f891ad043959cc80589b9c9fd48c1544","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 340-350","gmt_create":"2026-04-21T15:30:04.8245195+04:00","gmt_modified":"2026-04-21T15:30:04.8245195+04:00"},{"id":28752,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"62fcc55341cc86c03fcdb10c26f8eb3c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4346-4366","gmt_create":"2026-04-21T15:30:04.8250397+04:00","gmt_modified":"2026-04-21T15:30:04.8250397+04:00"},{"id":28754,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"1f50af9f8c555cdfb0baa7cb29c7fd30","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 948-970","gmt_create":"2026-04-21T15:30:04.8255724+04:00","gmt_modified":"2026-04-21T15:30:04.8255724+04:00"},{"id":28756,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"34a4a734b41732c137188fcf31c723b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3652-3711","gmt_create":"2026-04-21T15:30:04.8260922+04:00","gmt_modified":"2026-04-21T15:30:04.8260922+04:00"},{"id":28758,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"8a3a2a2a99dab8064a067d010f44e8e9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 639-673","gmt_create":"2026-04-21T15:30:04.8266307+04:00","gmt_modified":"2026-04-21T15:30:04.8266307+04:00"},{"id":28760,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"cad767850c269f0113035d1bbc4f6349","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 562-605","gmt_create":"2026-04-21T15:30:04.8271601+04:00","gmt_modified":"2026-04-21T15:30:04.8271601+04:00"},{"id":28762,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"63a6bdbdee9342db7dc03b40a7c414ef","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 412-422","gmt_create":"2026-04-21T15:30:04.8276838+04:00","gmt_modified":"2026-04-21T15:30:04.8276838+04:00"},{"id":28764,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a5062d3a6ace4987fca2348f9a8e560c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 454-482","gmt_create":"2026-04-21T15:30:04.8276838+04:00","gmt_modified":"2026-04-21T15:30:04.8276838+04:00"},{"id":28766,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"72c4ace062ec4e5c5de0b6e82769cee3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 148-164","gmt_create":"2026-04-21T15:30:04.8286923+04:00","gmt_modified":"2026-04-21T15:30:04.8286923+04:00"},{"id":28768,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"28f8369b7b78bb581a54f43abbad2630","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 546-556","gmt_create":"2026-04-21T15:30:04.8292015+04:00","gmt_modified":"2026-04-21T15:30:04.8292015+04:00"},{"id":28770,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"2576ae4d890be609ca8a378656829511","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 631-632","gmt_create":"2026-04-21T15:30:04.8292015+04:00","gmt_modified":"2026-04-21T15:30:04.8292015+04:00"},{"id":28772,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"ac7785f3f2ab2c3e25df784cf097dc65","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1106-1145","gmt_create":"2026-04-21T15:30:04.8292015+04:00","gmt_modified":"2026-04-21T15:30:04.8292015+04:00"},{"id":28774,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"7511d9c5bfacc11c15e1b51a32236cc2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1460-1470","gmt_create":"2026-04-21T15:30:04.8302122+04:00","gmt_modified":"2026-04-21T15:30:04.8302122+04:00"},{"id":28776,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"f2224a7a71c25f1fc0fad10ffb2d56bd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3444-3499","gmt_create":"2026-04-21T15:30:04.8302122+04:00","gmt_modified":"2026-04-21T15:30:04.8302122+04:00"},{"id":28778,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"419e69541681369abacdf1c8a316d67c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 218-224","gmt_create":"2026-04-21T15:30:04.8312187+04:00","gmt_modified":"2026-04-21T15:30:04.8312187+04:00"},{"id":28780,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"6d9c0eadddeb6216c880a1c40057ea75","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 284-307","gmt_create":"2026-04-21T15:30:04.8332424+04:00","gmt_modified":"2026-04-21T15:30:04.8332424+04:00"},{"id":28782,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"736c39f30231bbd09aec04cef70476a2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1158-1198","gmt_create":"2026-04-21T15:30:04.8342589+04:00","gmt_modified":"2026-04-21T15:30:04.8342589+04:00"},{"id":28784,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"ce35e57c6f76040714ae4749d8a9f472","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3652-3655","gmt_create":"2026-04-21T15:30:04.8352595+04:00","gmt_modified":"2026-04-21T15:30:04.8352595+04:00"},{"id":28786,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"a6c82e1567b28de0ad8e70abe5a1e480","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 93-141","gmt_create":"2026-04-21T15:30:04.8352595+04:00","gmt_modified":"2026-04-21T15:30:04.8352595+04:00"},{"id":28788,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"f586da025600c4160546804b10db7f8a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 458-584","gmt_create":"2026-04-21T15:30:04.8362582+04:00","gmt_modified":"2026-04-21T15:30:04.8362582+04:00"},{"id":28791,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"30ce2f443549d3bb41ca3052b7be13dd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2047-2144","gmt_create":"2026-04-21T15:30:04.8382544+04:00","gmt_modified":"2026-04-21T15:30:04.8382544+04:00"},{"id":28793,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"5d5f104357a87634f51432f49b92aef5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4378-4416","gmt_create":"2026-04-21T15:30:04.838767+04:00","gmt_modified":"2026-04-21T15:30:04.838767+04:00"},{"id":28796,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"d9f187f4c40d91e8fdcdf7b5ef8b0754","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4220-4230","gmt_create":"2026-04-21T15:30:04.8505345+04:00","gmt_modified":"2026-04-21T15:30:04.8505345+04:00"},{"id":28798,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"0cdfb0cbf62a0e057c03eacd6dee840b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4517-4620","gmt_create":"2026-04-21T15:30:04.8521002+04:00","gmt_modified":"2026-04-21T15:30:04.8521002+04:00"},{"id":28800,"source_id":"3ca2692851e9198383dace6a01709d61","target_id":"92f4f10a371df986c6158b05ac734805","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-10","gmt_create":"2026-04-21T15:30:04.8526128+04:00","gmt_modified":"2026-04-21T15:30:04.8526128+04:00"},{"id":28802,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a730b509fdc5ec32fa2216c3ef6efa28","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-30","gmt_create":"2026-04-21T15:30:04.8531427+04:00","gmt_modified":"2026-04-21T15:30:04.8531427+04:00"},{"id":28804,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"a4644f41f12ac8028286aa97c48c8444","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 800-830","gmt_create":"2026-04-21T15:30:04.8553537+04:00","gmt_modified":"2026-04-21T15:30:04.8553537+04:00"},{"id":28806,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"515d489d84fcc81c4dd7f5a4d6dd0874","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 270-279","gmt_create":"2026-04-21T15:30:04.8558963+04:00","gmt_modified":"2026-04-21T15:30:04.8558963+04:00"},{"id":28808,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"9d5546b7f51ade657d3816295d69febc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 492-501","gmt_create":"2026-04-21T15:30:04.8569386+04:00","gmt_modified":"2026-04-21T15:30:04.8569386+04:00"},{"id":28810,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"586a22540607ed6077db118d3150bdca","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4016-4020","gmt_create":"2026-04-21T15:30:04.8574521+04:00","gmt_modified":"2026-04-21T15:30:04.8574521+04:00"},{"id":28812,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"b6dbaa0d0e876fec051483a2ed76270f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3998-4000","gmt_create":"2026-04-21T15:30:04.8589017+04:00","gmt_modified":"2026-04-21T15:30:04.8589017+04:00"},{"id":28813,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"523379c439d6dd6e80c4a0a9b810cd94","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-21T15:30:11.1147477+04:00","gmt_modified":"2026-04-21T15:30:11.1147477+04:00"},{"id":28814,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"de22894588ed594e30c71d7793ba8bf2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","gmt_create":"2026-04-21T15:30:11.1147477+04:00","gmt_modified":"2026-04-21T15:30:11.1147477+04:00"},{"id":28815,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"9be507263cf352b287af44392c08d8e9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","gmt_create":"2026-04-21T15:30:11.1152727+04:00","gmt_modified":"2026-04-21T15:30:11.1152727+04:00"},{"id":28816,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"4e25baf48a44d24a8c233acb024adc06","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","gmt_create":"2026-04-21T15:30:11.115792+04:00","gmt_modified":"2026-04-21T15:30:11.115792+04:00"},{"id":28817,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"a704d9d09f17cd2bafd2ca5503c8a467","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/CMakeLists.txt","gmt_create":"2026-04-21T15:30:11.115792+04:00","gmt_modified":"2026-04-21T15:30:11.115792+04:00"},{"id":28818,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"b5cb56980d30b3c5e2719d0d87e36e2f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/snapshot.json","gmt_create":"2026-04-21T15:30:11.115792+04:00","gmt_modified":"2026-04-21T15:30:11.115792+04:00"},{"id":28819,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"5d67d9232d3be86e9e06019f5070806e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/snapshot-testnet.json","gmt_create":"2026-04-21T15:30:11.1163135+04:00","gmt_modified":"2026-04-21T15:30:11.1163135+04:00"},{"id":28820,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"e602c0b51903a7d2b2b9f8659b518ec8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-21T15:30:11.1163135+04:00","gmt_modified":"2026-04-21T15:30:11.1163135+04:00"},{"id":28821,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"c301941c4a936a7622e3c2d4c4e7d534","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-21T15:30:11.1163135+04:00","gmt_modified":"2026-04-21T15:30:11.1163135+04:00"},{"id":28822,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"09931459f68fae54afb88979ffd55b0e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-21T15:30:11.1163135+04:00","gmt_modified":"2026-04-21T15:30:11.1163135+04:00"},{"id":28823,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T15:30:11.1163135+04:00","gmt_modified":"2026-04-21T15:30:11.1163135+04:00"},{"id":28824,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"60d499d475104d27ca84470eedeadbab","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-21T15:30:11.1168922+04:00","gmt_modified":"2026-04-21T15:30:11.1168922+04:00"},{"id":28825,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"3593b932a51a4e9d045d1cbc84dc9a6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-21T15:30:11.1168922+04:00","gmt_modified":"2026-04-21T15:30:11.1168922+04:00"},{"id":28826,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"9b6725b1cfd60ec40946706dd6f99b9a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/interprocess/file_mutex.cpp","gmt_create":"2026-04-21T15:30:11.1168922+04:00","gmt_modified":"2026-04-21T15:30:11.1168922+04:00"},{"id":28827,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"645d8e6ea333ab8b9be2b7e711c5a349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-21T15:30:11.1174714+04:00","gmt_modified":"2026-04-21T15:30:11.1174714+04:00"},{"id":28828,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"38ebf46966056ad075ef10d47f35bd63","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1-50","gmt_create":"2026-04-21T15:30:11.1174714+04:00","gmt_modified":"2026-04-21T15:30:11.1174714+04:00"},{"id":28829,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"39bb010f4844b32951d0caff06ff7a8b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#1-88","gmt_create":"2026-04-21T15:30:11.1179755+04:00","gmt_modified":"2026-04-21T15:30:11.1179755+04:00"},{"id":28830,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"7fddadd553eea0193d9fac38ae3fc27d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp#1-52","gmt_create":"2026-04-21T15:30:11.1179755+04:00","gmt_modified":"2026-04-21T15:30:11.1179755+04:00"},{"id":28831,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"db1d8680c92d1bf3738935f7a8222d85","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/CMakeLists.txt#1-52","gmt_create":"2026-04-21T15:30:11.1184996+04:00","gmt_modified":"2026-04-21T15:30:11.1184996+04:00"},{"id":28832,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"43fa824ac508d796bfc427ecb25f9aec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-76","gmt_create":"2026-04-21T15:30:11.1184996+04:00","gmt_modified":"2026-04-21T15:30:11.1184996+04:00"},{"id":28833,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"31a53fc15540bfbb02489d919f88e5ac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp#16-52","gmt_create":"2026-04-21T15:30:11.1190228+04:00","gmt_modified":"2026-04-21T15:30:11.1190228+04:00"},{"id":28834,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"ab15b2f02cfc8f31905aa2e047fa6708","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp#30-158","gmt_create":"2026-04-21T15:30:11.1190228+04:00","gmt_modified":"2026-04-21T15:30:11.1190228+04:00"},{"id":28835,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"4bfb891f257d1b2edcf6bf0baecede35","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#675-780","gmt_create":"2026-04-21T15:30:11.1195408+04:00","gmt_modified":"2026-04-21T15:30:11.1195408+04:00"},{"id":28836,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"cad29605a7993547a682094b9c1fcad3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp#37-107","gmt_create":"2026-04-21T15:30:11.1195408+04:00","gmt_modified":"2026-04-21T15:30:11.1195408+04:00"},{"id":28837,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"2db378b12ea8079473dee9fe9d2728ac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#885-987","gmt_create":"2026-04-21T15:30:11.1200635+04:00","gmt_modified":"2026-04-21T15:30:11.1200635+04:00"},{"id":28838,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"731f7e3059779dad9c9eb8cd69c6942a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#789-883","gmt_create":"2026-04-21T15:30:11.1205825+04:00","gmt_modified":"2026-04-21T15:30:11.1205825+04:00"},{"id":28839,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"3285e48f2fec78af9a88ad7ae2e63e1c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1400-1484","gmt_create":"2026-04-21T15:30:11.1205825+04:00","gmt_modified":"2026-04-21T15:30:11.1205825+04:00"},{"id":28840,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"9c8ca31c28bd8a346634d03ad6032d8e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1046-1288","gmt_create":"2026-04-21T15:30:11.1211128+04:00","gmt_modified":"2026-04-21T15:30:11.1211128+04:00"},{"id":28841,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"0e8bf89344d2a0fccf751378026dde2d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1902-2038","gmt_create":"2026-04-21T15:30:11.1211128+04:00","gmt_modified":"2026-04-21T15:30:11.1211128+04:00"},{"id":28842,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"83429ace394b68f7e40a8ccc861c7d40","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1470-1599","gmt_create":"2026-04-21T15:30:11.1216359+04:00","gmt_modified":"2026-04-21T15:30:11.1216359+04:00"},{"id":28843,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"046dda92b70e2708fc5b816143d89058","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2473-2510","gmt_create":"2026-04-21T15:30:11.1216359+04:00","gmt_modified":"2026-04-21T15:30:11.1216359+04:00"},{"id":28844,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"f0cf4ee8d0a772ae70e7c8452ba7f2f9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#247-273","gmt_create":"2026-04-21T15:30:11.1216359+04:00","gmt_modified":"2026-04-21T15:30:11.1216359+04:00"},{"id":28845,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"92879d0fd0121256d12b60aa1c30df55","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1418-1436","gmt_create":"2026-04-21T15:30:11.1221818+04:00","gmt_modified":"2026-04-21T15:30:11.1221818+04:00"},{"id":28846,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"bb601a88a37604ead660e6ca99a665f1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#737-743","gmt_create":"2026-04-21T15:30:11.1226999+04:00","gmt_modified":"2026-04-21T15:30:11.1226999+04:00"},{"id":28847,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"acc7bf79a9b12f3731ba97b5f0daf981","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1390-1484","gmt_create":"2026-04-21T15:30:11.1226999+04:00","gmt_modified":"2026-04-21T15:30:11.1226999+04:00"},{"id":28848,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"183fc23b1afe83aae72f123e73a522e3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1440-1449","gmt_create":"2026-04-21T15:30:11.1232295+04:00","gmt_modified":"2026-04-21T15:30:11.1232295+04:00"},{"id":28849,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"45821bb2aac9f23cc3c036a4be4fc2d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#335-551","gmt_create":"2026-04-21T15:30:11.1232295+04:00","gmt_modified":"2026-04-21T15:30:11.1232295+04:00"},{"id":28850,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"1ca2e9a47901009d154225645910fdd0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1326-1376","gmt_create":"2026-04-21T15:30:11.1232295+04:00","gmt_modified":"2026-04-21T15:30:11.1232295+04:00"},{"id":28851,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"3159f6294be515487f5aa79015b513c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1426-1435","gmt_create":"2026-04-21T15:30:11.1232295+04:00","gmt_modified":"2026-04-21T15:30:11.1232295+04:00"},{"id":28852,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"4dd56096f073f9c64f5ca219853c20d6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#745-750","gmt_create":"2026-04-21T15:30:11.1232295+04:00","gmt_modified":"2026-04-21T15:30:11.1232295+04:00"},{"id":28853,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"1b0cdbb2e60325297067594b2948750a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#697-700","gmt_create":"2026-04-21T15:30:11.1247675+04:00","gmt_modified":"2026-04-21T15:30:11.1247675+04:00"},{"id":28854,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"99144581b107cfacfefe5e35d529713c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2831-2845","gmt_create":"2026-04-21T15:30:11.1247675+04:00","gmt_modified":"2026-04-21T15:30:11.1247675+04:00"},{"id":28855,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"bf2786c553cb282c81e2df715d0710e1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1719-1748","gmt_create":"2026-04-21T15:30:11.1257776+04:00","gmt_modified":"2026-04-21T15:30:11.1257776+04:00"},{"id":28856,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"f6bc3670add86d7b243a66c90d46ffc8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1706-1748","gmt_create":"2026-04-21T15:30:11.1257776+04:00","gmt_modified":"2026-04-21T15:30:11.1257776+04:00"},{"id":28857,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"5a0d9dd7b4c46ab44ed775c3a397b093","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#490-560","gmt_create":"2026-04-21T15:30:11.1267755+04:00","gmt_modified":"2026-04-21T15:30:11.1267755+04:00"},{"id":28858,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"be694fde1aa860a9329296964477111e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2945-2959","gmt_create":"2026-04-21T15:30:11.127776+04:00","gmt_modified":"2026-04-21T15:30:11.127776+04:00"},{"id":28859,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"09857d193a091f282ecfcbccb507fe7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#441-5201","gmt_create":"2026-04-21T15:30:11.127776+04:00","gmt_modified":"2026-04-21T15:30:11.127776+04:00"},{"id":28860,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"3b26461da0f92be2563f169a65f6fb20","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#542-559","gmt_create":"2026-04-21T15:30:11.128888+04:00","gmt_modified":"2026-04-21T15:30:11.128888+04:00"},{"id":28861,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"8e19ddfdf1b9c4bf08da230f1991fbae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2976-3009","gmt_create":"2026-04-21T15:30:11.128888+04:00","gmt_modified":"2026-04-21T15:30:11.128888+04:00"},{"id":28862,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"7f422ce5a550e0bf78739aa09dc6ad1e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2468-2570","gmt_create":"2026-04-21T15:30:11.1298895+04:00","gmt_modified":"2026-04-21T15:30:11.1298895+04:00"},{"id":28863,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"9ef8a2bfe7a4ae9fbe3d9339c0c3b7ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#735-740","gmt_create":"2026-04-21T15:30:11.1298895+04:00","gmt_modified":"2026-04-21T15:30:11.1298895+04:00"},{"id":28864,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"12f48585bb2924475247750bd428dfd0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1814-1862","gmt_create":"2026-04-21T15:30:11.1308856+04:00","gmt_modified":"2026-04-21T15:30:11.1308856+04:00"},{"id":28865,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"da29915a5700acc0cd17aa7c9638e0c2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#772-785","gmt_create":"2026-04-21T15:30:11.1308856+04:00","gmt_modified":"2026-04-21T15:30:11.1308856+04:00"},{"id":28866,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"8c337e93c31b8b3a7a1491f116f27ed7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#165-176","gmt_create":"2026-04-21T15:30:11.1318852+04:00","gmt_modified":"2026-04-21T15:30:11.1318852+04:00"},{"id":28867,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"1868caeecd8d398012baaddde0197979","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1587-1596","gmt_create":"2026-04-21T15:30:11.1318852+04:00","gmt_modified":"2026-04-21T15:30:11.1318852+04:00"},{"id":28868,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"7bfbc374764b2321b6922f512ce1409b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1610-1620","gmt_create":"2026-04-21T15:30:11.1318852+04:00","gmt_modified":"2026-04-21T15:30:11.1318852+04:00"},{"id":28869,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"720664924c0f5ad167ebc8d59f432977","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1812-1877","gmt_create":"2026-04-21T15:30:11.1318852+04:00","gmt_modified":"2026-04-21T15:30:11.1318852+04:00"},{"id":28870,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"eb040536345f0f7cea67191d528e4a85","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#24-34","gmt_create":"2026-04-21T15:30:11.1333918+04:00","gmt_modified":"2026-04-21T15:30:11.1333918+04:00"},{"id":28871,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"6b01a3981c4710fbe43e2f50c18bcec5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2598-2680","gmt_create":"2026-04-21T15:30:11.1343983+04:00","gmt_modified":"2026-04-21T15:30:11.1343983+04:00"},{"id":28872,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"9c6f3c36bb49caec4162b04901b48340","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#364-432","gmt_create":"2026-04-21T15:30:11.1343983+04:00","gmt_modified":"2026-04-21T15:30:11.1343983+04:00"},{"id":28873,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"c6f770b3151f86c3f6096d9ccd7ec6f0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/CMakeLists.txt#27-38","gmt_create":"2026-04-21T15:30:11.1353973+04:00","gmt_modified":"2026-04-21T15:30:11.1353973+04:00"},{"id":28874,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"5b3e15b641f9632441134e75e3ce99cc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2294-2464","gmt_create":"2026-04-21T15:30:11.1353973+04:00","gmt_modified":"2026-04-21T15:30:11.1353973+04:00"},{"id":28875,"source_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","target_id":"378f0a19787ac694be22607464bb7d42","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1378-1464","gmt_create":"2026-04-21T15:30:11.1363991+04:00","gmt_modified":"2026-04-21T15:30:11.1363991+04:00"},{"id":28876,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"6fbf010286f4a6a3f06e8088c9988689","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/vizd/main.cpp","gmt_create":"2026-04-21T15:32:31.3059024+04:00","gmt_modified":"2026-04-21T15:32:31.3059024+04:00"},{"id":28877,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"645d8e6ea333ab8b9be2b7e711c5a349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-21T15:32:31.3064224+04:00","gmt_modified":"2026-04-21T15:32:31.3064224+04:00"},{"id":28878,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"69f92fde51907bfe1568da2234d5432c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_witness.ini","gmt_create":"2026-04-21T15:32:31.3064224+04:00","gmt_modified":"2026-04-21T15:32:31.3064224+04:00"},{"id":28879,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b5d295f4241120c75ca1f223d1136815","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_debug.ini","gmt_create":"2026-04-21T15:32:31.3069398+04:00","gmt_modified":"2026-04-21T15:32:31.3069398+04:00"},{"id":28880,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b1479d6428f0dd1904cd3abe8f9761a7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_mongo.ini","gmt_create":"2026-04-21T15:32:31.3069398+04:00","gmt_modified":"2026-04-21T15:32:31.3069398+04:00"},{"id":28881,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"041c5ab0bad4a30c8e8c4053859b33cc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_testnet.ini","gmt_create":"2026-04-21T15:32:31.3081041+04:00","gmt_modified":"2026-04-21T15:32:31.3081041+04:00"},{"id":28882,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b4112da6d842e6d4a4827e24ffbe6b51","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_debug_mongo.ini","gmt_create":"2026-04-21T15:32:31.3086752+04:00","gmt_modified":"2026-04-21T15:32:31.3086752+04:00"},{"id":28883,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"6f528713f6038767a26fe7134516814e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_stock_exchange.ini","gmt_create":"2026-04-21T15:32:31.3091792+04:00","gmt_modified":"2026-04-21T15:32:31.3091792+04:00"},{"id":28884,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"7f4d98efd3657e17fbc58c9714bc89bb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-production","gmt_create":"2026-04-21T15:32:31.3098455+04:00","gmt_modified":"2026-04-21T15:32:31.3098455+04:00"},{"id":28885,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"2a1a6ffdba8673bc193473db23d59eac","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-04-21T15:32:31.3098455+04:00","gmt_modified":"2026-04-21T15:32:31.3098455+04:00"},{"id":28886,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"db2e7ab5c6a8e2b6df369ec9436ffa81","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-04-21T15:32:31.3104537+04:00","gmt_modified":"2026-04-21T15:32:31.3104537+04:00"},{"id":28887,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"951b5b7fafdfdaf1eca79d8067f3b25d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-04-21T15:32:31.3200953+04:00","gmt_modified":"2026-04-21T15:32:31.3200953+04:00"},{"id":28888,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"38165effb8391debc3201ce79007fec0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/testnet.md","gmt_create":"2026-04-21T15:32:31.3216986+04:00","gmt_modified":"2026-04-21T15:32:31.3216986+04:00"},{"id":28889,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"62570dc38423368a7faed891907fc203","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/debug_node_plugin.md","gmt_create":"2026-04-21T15:32:31.3216986+04:00","gmt_modified":"2026-04-21T15:32:31.3216986+04:00"},{"id":28890,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"55bc22bd32ecd08a0a502b603c69e431","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/include/graphene/plugins/witness/witness.hpp","gmt_create":"2026-04-21T15:32:31.3216986+04:00","gmt_modified":"2026-04-21T15:32:31.3216986+04:00"},{"id":28891,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"06073f9dbeb663e6a46caee8fc699fb8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","gmt_create":"2026-04-21T15:32:31.3226069+04:00","gmt_modified":"2026-04-21T15:32:31.3226069+04:00"},{"id":28892,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"d421da24ce55d2a8d6d3fb6ca8320a1c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp","gmt_create":"2026-04-21T15:32:31.3226069+04:00","gmt_modified":"2026-04-21T15:32:31.3226069+04:00"},{"id":28893,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"fd3d7adf0ba56e6838d4eea9abd1a60c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#106-158","gmt_create":"2026-04-21T15:32:31.3226069+04:00","gmt_modified":"2026-04-21T15:32:31.3226069+04:00"},{"id":28894,"source_id":"6fbf010286f4a6a3f06e8088c9988689","target_id":"fd3d7adf0ba56e6838d4eea9abd1a60c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 106-158","gmt_create":"2026-04-21T15:32:31.3226069+04:00","gmt_modified":"2026-04-21T15:32:31.3226069+04:00"},{"id":28895,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"4a6eface4715768aeeb8b7b1719dd3a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-136","gmt_create":"2026-04-21T15:32:31.3236095+04:00","gmt_modified":"2026-04-21T15:32:31.3236095+04:00"},{"id":28896,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"c758c39090ce29d48714f0b9bccdd27a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#1-138","gmt_create":"2026-04-21T15:32:31.3236095+04:00","gmt_modified":"2026-04-21T15:32:31.3236095+04:00"},{"id":28897,"source_id":"69f92fde51907bfe1568da2234d5432c","target_id":"c758c39090ce29d48714f0b9bccdd27a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-138","gmt_create":"2026-04-21T15:32:31.3236095+04:00","gmt_modified":"2026-04-21T15:32:31.3236095+04:00"},{"id":28898,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"f8f65271eaaf5c8cf0099898b63aa58b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug.ini#1-126","gmt_create":"2026-04-21T15:32:31.3246061+04:00","gmt_modified":"2026-04-21T15:32:31.3246061+04:00"},{"id":28899,"source_id":"b5d295f4241120c75ca1f223d1136815","target_id":"f8f65271eaaf5c8cf0099898b63aa58b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-126","gmt_create":"2026-04-21T15:32:31.3246061+04:00","gmt_modified":"2026-04-21T15:32:31.3246061+04:00"},{"id":28900,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"1abccbeca74c86c6e02b6a1f43ea43de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_mongo.ini#1-135","gmt_create":"2026-04-21T15:32:31.3246061+04:00","gmt_modified":"2026-04-21T15:32:31.3246061+04:00"},{"id":28901,"source_id":"b1479d6428f0dd1904cd3abe8f9761a7","target_id":"1abccbeca74c86c6e02b6a1f43ea43de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-135","gmt_create":"2026-04-21T15:32:31.3246061+04:00","gmt_modified":"2026-04-21T15:32:31.3246061+04:00"},{"id":28902,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"db51d27151ff0ee62237a12f6e28a8a8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#1-132","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28903,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"4f977fd57dca5490d16f1761432c725b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug_mongo.ini#1-135","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28904,"source_id":"b4112da6d842e6d4a4827e24ffbe6b51","target_id":"4f977fd57dca5490d16f1761432c725b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-135","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28905,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"c351a86da211936d631fd2e0bbe5b84f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_stock_exchange.ini#1-114","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28906,"source_id":"6f528713f6038767a26fe7134516814e","target_id":"c351a86da211936d631fd2e0bbe5b84f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-114","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28907,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"4626a48f7169b0da344b3d2d0691c633","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#74-87","gmt_create":"2026-04-21T15:32:31.3256091+04:00","gmt_modified":"2026-04-21T15:32:31.3256091+04:00"},{"id":28908,"source_id":"7f4d98efd3657e17fbc58c9714bc89bb","target_id":"4626a48f7169b0da344b3d2d0691c633","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 74-87","gmt_create":"2026-04-21T15:32:31.326608+04:00","gmt_modified":"2026-04-21T15:32:31.326608+04:00"},{"id":28909,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"6f4e2776778cf6cc5a3739459544039a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#75-87","gmt_create":"2026-04-21T15:32:31.326608+04:00","gmt_modified":"2026-04-21T15:32:31.326608+04:00"},{"id":28910,"source_id":"2a1a6ffdba8673bc193473db23d59eac","target_id":"6f4e2776778cf6cc5a3739459544039a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 75-87","gmt_create":"2026-04-21T15:32:31.326608+04:00","gmt_modified":"2026-04-21T15:32:31.326608+04:00"},{"id":28911,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"ee1d40f8b2421c8aa7b671906fdb4df4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-mongo#97-110","gmt_create":"2026-04-21T15:32:31.326608+04:00","gmt_modified":"2026-04-21T15:32:31.326608+04:00"},{"id":28912,"source_id":"db2e7ab5c6a8e2b6df369ec9436ffa81","target_id":"ee1d40f8b2421c8aa7b671906fdb4df4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 97-110","gmt_create":"2026-04-21T15:32:31.3276064+04:00","gmt_modified":"2026-04-21T15:32:31.3276064+04:00"},{"id":28913,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"ec9ba1b0f4f923706b2454f1e16d5b95","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#68-81","gmt_create":"2026-04-21T15:32:31.3276064+04:00","gmt_modified":"2026-04-21T15:32:31.3276064+04:00"},{"id":28914,"source_id":"951b5b7fafdfdaf1eca79d8067f3b25d","target_id":"ec9ba1b0f4f923706b2454f1e16d5b95","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 68-81","gmt_create":"2026-04-21T15:32:31.3276064+04:00","gmt_modified":"2026-04-21T15:32:31.3276064+04:00"},{"id":28915,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"daf567477cad94f475b380e7ac8b5439","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#68-138","gmt_create":"2026-04-21T15:32:31.3286066+04:00","gmt_modified":"2026-04-21T15:32:31.3286066+04:00"},{"id":28916,"source_id":"69f92fde51907bfe1568da2234d5432c","target_id":"daf567477cad94f475b380e7ac8b5439","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 68-138","gmt_create":"2026-04-21T15:32:31.3286066+04:00","gmt_modified":"2026-04-21T15:32:31.3286066+04:00"},{"id":28917,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b2d817a8ec09b559ad57bf66b06c348f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug.ini#69-126","gmt_create":"2026-04-21T15:32:31.3286066+04:00","gmt_modified":"2026-04-21T15:32:31.3286066+04:00"},{"id":28918,"source_id":"b5d295f4241120c75ca1f223d1136815","target_id":"b2d817a8ec09b559ad57bf66b06c348f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-126","gmt_create":"2026-04-21T15:32:31.3286066+04:00","gmt_modified":"2026-04-21T15:32:31.3286066+04:00"},{"id":28919,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"673a61d7e56bc37ab36bf615a015181e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_mongo.ini#69-135","gmt_create":"2026-04-21T15:32:31.3296066+04:00","gmt_modified":"2026-04-21T15:32:31.3296066+04:00"},{"id":28920,"source_id":"b1479d6428f0dd1904cd3abe8f9761a7","target_id":"673a61d7e56bc37ab36bf615a015181e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-135","gmt_create":"2026-04-21T15:32:31.3296066+04:00","gmt_modified":"2026-04-21T15:32:31.3296066+04:00"},{"id":28921,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"3e1083629fe0eed3f00704e1bc12b885","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#69-132","gmt_create":"2026-04-21T15:32:31.3296066+04:00","gmt_modified":"2026-04-21T15:32:31.3296066+04:00"},{"id":28922,"source_id":"041c5ab0bad4a30c8e8c4053859b33cc","target_id":"3e1083629fe0eed3f00704e1bc12b885","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-132","gmt_create":"2026-04-21T15:32:31.3296066+04:00","gmt_modified":"2026-04-21T15:32:31.3296066+04:00"},{"id":28923,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"eabde1a6d322eb878522a47c6e25f070","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug_mongo.ini#69-135","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28924,"source_id":"b4112da6d842e6d4a4827e24ffbe6b51","target_id":"eabde1a6d322eb878522a47c6e25f070","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-135","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28925,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"640968bf458b7eaea7e354dbae9e284a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_stock_exchange.ini#69-114","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28926,"source_id":"6f528713f6038767a26fe7134516814e","target_id":"640968bf458b7eaea7e354dbae9e284a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-114","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28927,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"77477d1ed669fead148aaefdbfe9e6eb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#62-91","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28928,"source_id":"6fbf010286f4a6a3f06e8088c9988689","target_id":"77477d1ed669fead148aaefdbfe9e6eb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-91","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28929,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b47f5a059c5d915b770896cc65d0c8cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/include/graphene/plugins/witness/witness.hpp#34-65","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28930,"source_id":"55bc22bd32ecd08a0a502b603c69e431","target_id":"b47f5a059c5d915b770896cc65d0c8cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 34-65","gmt_create":"2026-04-21T15:32:31.3306077+04:00","gmt_modified":"2026-04-21T15:32:31.3306077+04:00"},{"id":28931,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"4f7612633c8054e6232c691aeaee651f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#14-47","gmt_create":"2026-04-21T15:32:31.332203+04:00","gmt_modified":"2026-04-21T15:32:31.332203+04:00"},{"id":28932,"source_id":"06073f9dbeb663e6a46caee8fc699fb8","target_id":"4f7612633c8054e6232c691aeaee651f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-47","gmt_create":"2026-04-21T15:32:31.332203+04:00","gmt_modified":"2026-04-21T15:32:31.332203+04:00"},{"id":28933,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"e6d50b7511673592347fe0f11fd43f25","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp#38-108","gmt_create":"2026-04-21T15:32:31.332203+04:00","gmt_modified":"2026-04-21T15:32:31.332203+04:00"},{"id":28934,"source_id":"d421da24ce55d2a8d6d3fb6ca8320a1c","target_id":"e6d50b7511673592347fe0f11fd43f25","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-108","gmt_create":"2026-04-21T15:32:31.332203+04:00","gmt_modified":"2026-04-21T15:32:31.332203+04:00"},{"id":28935,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"3a51b02bba0881af0db105934c4af844","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#82-86","gmt_create":"2026-04-21T15:32:31.333123+04:00","gmt_modified":"2026-04-21T15:32:31.333123+04:00"},{"id":28936,"source_id":"69f92fde51907bfe1568da2234d5432c","target_id":"3a51b02bba0881af0db105934c4af844","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 82-86","gmt_create":"2026-04-21T15:32:31.333123+04:00","gmt_modified":"2026-04-21T15:32:31.333123+04:00"},{"id":28937,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"3847e2a600af28cffb5115ff6f5e62cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/include/graphene/plugins/witness/witness.hpp#20-32","gmt_create":"2026-04-21T15:32:31.3341231+04:00","gmt_modified":"2026-04-21T15:32:31.3341231+04:00"},{"id":28938,"source_id":"55bc22bd32ecd08a0a502b603c69e431","target_id":"3847e2a600af28cffb5115ff6f5e62cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-32","gmt_create":"2026-04-21T15:32:31.3341231+04:00","gmt_modified":"2026-04-21T15:32:31.3341231+04:00"},{"id":28939,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b79ce070ba281e1e209405be0e760eb7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp#62-90","gmt_create":"2026-04-21T15:32:31.3341231+04:00","gmt_modified":"2026-04-21T15:32:31.3341231+04:00"},{"id":28940,"source_id":"d421da24ce55d2a8d6d3fb6ca8320a1c","target_id":"b79ce070ba281e1e209405be0e760eb7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-90","gmt_create":"2026-04-21T15:32:31.3341231+04:00","gmt_modified":"2026-04-21T15:32:31.3341231+04:00"},{"id":28941,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"8204ffe8ec3fe064393dd8aa8a78dd01","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/debug_node_plugin.md#50-134","gmt_create":"2026-04-21T15:32:31.3351261+04:00","gmt_modified":"2026-04-21T15:32:31.3351261+04:00"},{"id":28942,"source_id":"62570dc38423368a7faed891907fc203","target_id":"8204ffe8ec3fe064393dd8aa8a78dd01","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-134","gmt_create":"2026-04-21T15:32:31.3351261+04:00","gmt_modified":"2026-04-21T15:32:31.3351261+04:00"},{"id":28943,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"b7ed71ac14b0cfe504186b5e57353c1b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/testnet.md#21-37","gmt_create":"2026-04-21T15:32:31.3361224+04:00","gmt_modified":"2026-04-21T15:32:31.3361224+04:00"},{"id":28944,"source_id":"38165effb8391debc3201ce79007fec0","target_id":"b7ed71ac14b0cfe504186b5e57353c1b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-37","gmt_create":"2026-04-21T15:32:31.3371222+04:00","gmt_modified":"2026-04-21T15:32:31.3371222+04:00"},{"id":28945,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"56b0a9ddc7fe94bac06d4fb19fb41e1b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#7-12","gmt_create":"2026-04-21T15:32:31.3381235+04:00","gmt_modified":"2026-04-21T15:32:31.3381235+04:00"},{"id":28946,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"56b0a9ddc7fe94bac06d4fb19fb41e1b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 7-12","gmt_create":"2026-04-21T15:32:31.3381235+04:00","gmt_modified":"2026-04-21T15:32:31.3381235+04:00"},{"id":28947,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"f914faa6473460331ff4a6c73ec1f80b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#22-67","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28948,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"f914faa6473460331ff4a6c73ec1f80b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-67","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28949,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"85a14684582fcab24235497917acf330","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#76-86","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28950,"source_id":"69f92fde51907bfe1568da2234d5432c","target_id":"85a14684582fcab24235497917acf330","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 76-86","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28951,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"76966124f3896db36029f4ac32bf2437","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug.ini#95-105","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28952,"source_id":"b5d295f4241120c75ca1f223d1136815","target_id":"76966124f3896db36029f4ac32bf2437","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 95-105","gmt_create":"2026-04-21T15:32:31.3411234+04:00","gmt_modified":"2026-04-21T15:32:31.3411234+04:00"},{"id":28953,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"c7c0dcd57e34a1a1314bbe3179487c7d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_mongo.ini#71-72","gmt_create":"2026-04-21T15:32:31.3426296+04:00","gmt_modified":"2026-04-21T15:32:31.3426296+04:00"},{"id":28954,"source_id":"b1479d6428f0dd1904cd3abe8f9761a7","target_id":"c7c0dcd57e34a1a1314bbe3179487c7d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 71-72","gmt_create":"2026-04-21T15:32:31.3426296+04:00","gmt_modified":"2026-04-21T15:32:31.3426296+04:00"},{"id":28955,"source_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","target_id":"69fc08520a82976c71671ea261b7cb6e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_stock_exchange.ini#22-34","gmt_create":"2026-04-21T15:32:31.3426296+04:00","gmt_modified":"2026-04-21T15:32:31.3426296+04:00"},{"id":28956,"source_id":"6f528713f6038767a26fe7134516814e","target_id":"69fc08520a82976c71671ea261b7cb6e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-34","gmt_create":"2026-04-21T15:32:31.3436372+04:00","gmt_modified":"2026-04-21T15:32:31.3436372+04:00"},{"id":28957,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"2635c59c839f9bfaf8b36ce827ebd4a8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-21T15:32:34.667576+04:00","gmt_modified":"2026-04-21T15:32:34.667576+04:00"},{"id":28958,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"098d39a4f70011748b886f1f0aac6def","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28959,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"3ca2692851e9198383dace6a01709d61","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28960,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28961,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"0153064dfb16c76b2c8535baf78ce4a4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/block_log.hpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28962,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"bb278ec53a644e14e7d815fe8331bc74","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28963,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"3593b932a51a4e9d045d1cbc84dc9a6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28964,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T15:32:34.6685828+04:00","gmt_modified":"2026-04-21T15:32:34.6685828+04:00"},{"id":28965,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"60d499d475104d27ca84470eedeadbab","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-21T15:32:34.6695835+04:00","gmt_modified":"2026-04-21T15:32:34.6695835+04:00"},{"id":28966,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"2196e7f627016478589d0cf2cfb7ce7a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-21T15:32:34.6695835+04:00","gmt_modified":"2026-04-21T15:32:34.6695835+04:00"},{"id":28967,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"c36b26945bd5c41be92a4926b8f3a003","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/hardfork.d/12.hf","gmt_create":"2026-04-21T15:32:34.6695835+04:00","gmt_modified":"2026-04-21T15:32:34.6695835+04:00"},{"id":28968,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"9242876cabb25f4217fb4545452b9982","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#111-120","gmt_create":"2026-04-21T15:32:34.6695835+04:00","gmt_modified":"2026-04-21T15:32:34.6695835+04:00"},{"id":28969,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"8cd8aa215e81d5e59c0db1c41ed82144","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#80-87","gmt_create":"2026-04-21T15:32:34.6695835+04:00","gmt_modified":"2026-04-21T15:32:34.6695835+04:00"},{"id":28970,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"08825a3b18d6c21fd52a764ba6cc0b22","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1204-1270","gmt_create":"2026-04-21T15:32:34.6705832+04:00","gmt_modified":"2026-04-21T15:32:34.6705832+04:00"},{"id":28971,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"130bae0cd16aa807eab8ebe515cd1f27","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#521-544","gmt_create":"2026-04-21T15:32:34.6705832+04:00","gmt_modified":"2026-04-21T15:32:34.6705832+04:00"},{"id":28972,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"10c6e3c5e0da196bf5645b2676f5fe5f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#1-138","gmt_create":"2026-04-21T15:32:34.6705832+04:00","gmt_modified":"2026-04-21T15:32:34.6705832+04:00"},{"id":28973,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"fadf8ac80f586d7a383ae9b7774ab170","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#1-270","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28974,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"16d80765ba580e717048366d3696a7ed","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-200","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28975,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"79ffe2ea8487b9a11bf58c4c909f0b7a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-6131","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28976,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"4b8e5a55d358a7e84067e5e1ca2baae3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#1-76","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28977,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"9b9de0b42096dcf9ce22a02983b8e180","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#1-454","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28978,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"e127ab43bafb719c65151cb149fd14c1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#1-577","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28979,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"54b0796e4b027ce7818dcb8c6d2cef08","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#110-124","gmt_create":"2026-04-21T15:32:34.6715823+04:00","gmt_modified":"2026-04-21T15:32:34.6715823+04:00"},{"id":28980,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"99aac75830a5934b26dd9481750767cd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/hardfork.d/12.hf#1-7","gmt_create":"2026-04-21T15:32:34.6731446+04:00","gmt_modified":"2026-04-21T15:32:34.6731446+04:00"},{"id":28981,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"bec9579489bd7b03445f43a1b0af2f0e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#53-138","gmt_create":"2026-04-21T15:32:34.6731446+04:00","gmt_modified":"2026-04-21T15:32:34.6731446+04:00"},{"id":28982,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"85634f4acca2ba552d2e800110d8b3d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#33-92","gmt_create":"2026-04-21T15:32:34.6741006+04:00","gmt_modified":"2026-04-21T15:32:34.6741006+04:00"},{"id":28983,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"4620befa2e1a2b36260a1a8b3f79a71d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#13-33","gmt_create":"2026-04-21T15:32:34.6751023+04:00","gmt_modified":"2026-04-21T15:32:34.6751023+04:00"},{"id":28984,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"2f81799767281c2d15179d4d368c3d98","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#336-340","gmt_create":"2026-04-21T15:32:34.6761017+04:00","gmt_modified":"2026-04-21T15:32:34.6761017+04:00"},{"id":28985,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"c465ac25a4d2b5700f380ebcabc70484","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#48-84","gmt_create":"2026-04-21T15:32:34.6761017+04:00","gmt_modified":"2026-04-21T15:32:34.6761017+04:00"},{"id":28986,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"97457fcf3928d33ecf59751b71c4ddfc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#48-55","gmt_create":"2026-04-21T15:32:34.6761017+04:00","gmt_modified":"2026-04-21T15:32:34.6761017+04:00"},{"id":28987,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"99db6cfeb000030194e9f1a3a65efd4c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#20-138","gmt_create":"2026-04-21T15:32:34.6773178+04:00","gmt_modified":"2026-04-21T15:32:34.6773178+04:00"},{"id":28988,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"a40f8149c6a1bf43319c1ae35c628e48","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#33-270","gmt_create":"2026-04-21T15:32:34.6778251+04:00","gmt_modified":"2026-04-21T15:32:34.6778251+04:00"},{"id":28989,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"6bad4c06f7a26c6db8813342ffc2409f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#111-138","gmt_create":"2026-04-21T15:32:34.6778251+04:00","gmt_modified":"2026-04-21T15:32:34.6778251+04:00"},{"id":28990,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"9c1d9350bb6f4227b2f93f6424361689","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#189-231","gmt_create":"2026-04-21T15:32:34.6778251+04:00","gmt_modified":"2026-04-21T15:32:34.6778251+04:00"},{"id":28991,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"5604fd71a133635e9e2f5c9080763f93","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1037-1177","gmt_create":"2026-04-21T15:32:34.6778251+04:00","gmt_modified":"2026-04-21T15:32:34.6778251+04:00"},{"id":28992,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"02214c72e299c321be2dd3cfe69e46d6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#259-294","gmt_create":"2026-04-21T15:32:34.6788313+04:00","gmt_modified":"2026-04-21T15:32:34.6788313+04:00"},{"id":28993,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"8e2b029a13acbaf27f133a218f3db7f5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#57-78","gmt_create":"2026-04-21T15:32:34.6788313+04:00","gmt_modified":"2026-04-21T15:32:34.6788313+04:00"},{"id":28994,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"e54c425f309443d0a1f2013035606ad6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4444-4533","gmt_create":"2026-04-21T15:32:34.6788313+04:00","gmt_modified":"2026-04-21T15:32:34.6788313+04:00"},{"id":28995,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"191773dc9d6cf8f057ee823ac96e81bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-72","gmt_create":"2026-04-21T15:32:34.6798316+04:00","gmt_modified":"2026-04-21T15:32:34.6798316+04:00"},{"id":28996,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"db5e12f9eb72680443996d6f6e431090","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#118-164","gmt_create":"2026-04-21T15:32:34.6798316+04:00","gmt_modified":"2026-04-21T15:32:34.6798316+04:00"},{"id":28997,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"4570e68acacd2b05afcb76cef53b76c4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#115-128","gmt_create":"2026-04-21T15:32:34.6808318+04:00","gmt_modified":"2026-04-21T15:32:34.6808318+04:00"},{"id":28998,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"1d0c0ef3de2f2e71d820f7340ebf071e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#561-580","gmt_create":"2026-04-21T15:32:34.6808318+04:00","gmt_modified":"2026-04-21T15:32:34.6808318+04:00"},{"id":28999,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"0518b2f237c1abd79a71c239a6129b13","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#738-792","gmt_create":"2026-04-21T15:32:34.6808318+04:00","gmt_modified":"2026-04-21T15:32:34.6808318+04:00"},{"id":29000,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"34808cff50d23f21ba27eaf1f94a1e65","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#206-230","gmt_create":"2026-04-21T15:32:34.6808318+04:00","gmt_modified":"2026-04-21T15:32:34.6808318+04:00"},{"id":29001,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"51f70fa39e4057673d6cce9a817de5f7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#476-515","gmt_create":"2026-04-21T15:32:34.6808318+04:00","gmt_modified":"2026-04-21T15:32:34.6808318+04:00"},{"id":29002,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"a5e70e96e2030bc51105ab323328bd6a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#92-103","gmt_create":"2026-04-21T15:32:34.6818304+04:00","gmt_modified":"2026-04-21T15:32:34.6818304+04:00"},{"id":29003,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"c914119998cc8956df7a92ba69025669","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1075-1087","gmt_create":"2026-04-21T15:32:34.6818304+04:00","gmt_modified":"2026-04-21T15:32:34.6818304+04:00"},{"id":29004,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"17d5f437adfa7d12530e73a6acf3cea3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4581-4594","gmt_create":"2026-04-21T15:32:34.6818304+04:00","gmt_modified":"2026-04-21T15:32:34.6818304+04:00"},{"id":29005,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"a5bf8dbce76e473dbc956b2aaabc1871","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2125-2142","gmt_create":"2026-04-21T15:32:34.6818304+04:00","gmt_modified":"2026-04-21T15:32:34.6818304+04:00"},{"id":29006,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"cef0462ff84c34789c5798ea89079e80","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4334-4438","gmt_create":"2026-04-21T15:32:34.68334+04:00","gmt_modified":"2026-04-21T15:32:34.68334+04:00"},{"id":29007,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"d93beef095ac23ff8ee077459a184b57","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4420-4438","gmt_create":"2026-04-21T15:32:34.68334+04:00","gmt_modified":"2026-04-21T15:32:34.68334+04:00"},{"id":29008,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"a0687e6cdfe244ad5edc2741e51b9637","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4444-4450","gmt_create":"2026-04-21T15:32:34.68334+04:00","gmt_modified":"2026-04-21T15:32:34.68334+04:00"},{"id":29009,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"6d14f9a3d31dd38c6934d4a20f5961aa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#114-124","gmt_create":"2026-04-21T15:32:34.68334+04:00","gmt_modified":"2026-04-21T15:32:34.68334+04:00"},{"id":29010,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"eff458ee8f783fdfd55a33c7c6b5a020","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4360-4398","gmt_create":"2026-04-21T15:32:34.6843461+04:00","gmt_modified":"2026-04-21T15:32:34.6843461+04:00"},{"id":29011,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"6afe192cc4bbb06c24372ff4220396ad","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4400-4419","gmt_create":"2026-04-21T15:32:34.6843461+04:00","gmt_modified":"2026-04-21T15:32:34.6843461+04:00"},{"id":29012,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"aa064e2ac860823bd57553bdaacd9fdd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#521-526","gmt_create":"2026-04-21T15:32:34.6853464+04:00","gmt_modified":"2026-04-21T15:32:34.6853464+04:00"},{"id":29013,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"40c355eeb0b9decefc18d06871d4f35c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4428-4430","gmt_create":"2026-04-21T15:32:34.6853464+04:00","gmt_modified":"2026-04-21T15:32:34.6853464+04:00"},{"id":29014,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"929ab148875977b53b20860e4a7bfcfa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#34-46","gmt_create":"2026-04-21T15:32:34.6863476+04:00","gmt_modified":"2026-04-21T15:32:34.6863476+04:00"},{"id":29015,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"149b0b231bf8ac5eba3e6884e1e92e6d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#48-103","gmt_create":"2026-04-21T15:32:34.7000559+04:00","gmt_modified":"2026-04-21T15:32:34.7000559+04:00"},{"id":29016,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"b44544616631fe6486fb65dd48480409","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#38-46","gmt_create":"2026-04-21T15:32:34.7020565+04:00","gmt_modified":"2026-04-21T15:32:34.7020565+04:00"},{"id":29017,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"e1f857384f44e71eb08c99ff531b156e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#59-75","gmt_create":"2026-04-21T15:32:34.7020565+04:00","gmt_modified":"2026-04-21T15:32:34.7020565+04:00"},{"id":29018,"source_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","target_id":"67d0e0fc93e91380c1431112565b8397","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1390-1397","gmt_create":"2026-04-21T15:32:34.7030582+04:00","gmt_modified":"2026-04-21T15:32:34.7030582+04:00"},{"id":29020,"source_id":"40ecb6d8-c687-4775-90d9-27e6128f6633","target_id":"b9054c12-190c-4600-943b-ab87c8f42eb0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 40ecb6d8-c687-4775-90d9-27e6128f6633 -\u003e b9054c12-190c-4600-943b-ab87c8f42eb0","gmt_create":"2026-04-21T15:32:35.3325232+04:00","gmt_modified":"2026-04-21T15:32:35.3325232+04:00"},{"id":29021,"source_id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","target_id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08c142a7-2d4b-4194-8db1-c6edad4be1eb -\u003e 8dd8c2f7-1214-46bc-8d91-dd8366b9f296","gmt_create":"2026-04-21T15:32:35.3340966+04:00","gmt_modified":"2026-04-21T15:32:35.3340966+04:00"},{"id":29023,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"30b4fcb5-3155-40c2-8463-0733616f78ce","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e 30b4fcb5-3155-40c2-8463-0733616f78ce","gmt_create":"2026-04-21T15:32:35.3383291+04:00","gmt_modified":"2026-04-21T15:32:35.3383291+04:00"},{"id":29039,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"4c9808b45cc8214948247f9c028c449e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 190-304","gmt_create":"2026-04-21T15:56:02.4950444+04:00","gmt_modified":"2026-04-21T15:56:02.4950444+04:00"},{"id":29041,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"f3e64d0f15916610b56b4984629897eb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-351","gmt_create":"2026-04-21T15:56:02.4961099+04:00","gmt_modified":"2026-04-21T15:56:02.4961099+04:00"},{"id":29043,"source_id":"52f5e880c05c0b3e52e994a389aba5e4","target_id":"bd53d927e426e2adc3ba3e67de570e14","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-106","gmt_create":"2026-04-21T15:56:02.4966376+04:00","gmt_modified":"2026-04-21T15:56:02.4966376+04:00"},{"id":29045,"source_id":"d952eb3122d64a10b5a53c11fa123b9d","target_id":"73e0e7e26abf65a9313e01fa4e09dfca","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 72-573","gmt_create":"2026-04-21T15:56:02.4971595+04:00","gmt_modified":"2026-04-21T15:56:02.4971595+04:00"},{"id":29047,"source_id":"34e5909c35ad9d055be9727b3a207c55","target_id":"51e8273797f43b8343be1a56f19fb908","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-93","gmt_create":"2026-04-21T15:56:02.4977813+04:00","gmt_modified":"2026-04-21T15:56:02.4977813+04:00"},{"id":29050,"source_id":"ab664a3a8e43d25e578a4db7198b64ef","target_id":"e1d125a8c8480d30e5a2c6c4892aabbc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45-79","gmt_create":"2026-04-21T15:56:02.4988082+04:00","gmt_modified":"2026-04-21T15:56:02.4988082+04:00"},{"id":29053,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"ef38e28fe50f9c7ca231d642c3466329","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-355","gmt_create":"2026-04-21T15:56:02.5011175+04:00","gmt_modified":"2026-04-21T15:56:02.5011175+04:00"},{"id":29055,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"94a21f01af8f906ea628560bd3a4c163","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-383","gmt_create":"2026-04-21T15:56:02.5017531+04:00","gmt_modified":"2026-04-21T15:56:02.5017531+04:00"},{"id":29057,"source_id":"d952eb3122d64a10b5a53c11fa123b9d","target_id":"2bfc000edc3254405fc76c016ce54bc5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-573","gmt_create":"2026-04-21T15:56:02.5027885+04:00","gmt_modified":"2026-04-21T15:56:02.5027885+04:00"},{"id":29059,"source_id":"34e5909c35ad9d055be9727b3a207c55","target_id":"642441460b648f34dc507aa5fa5722e6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-99","gmt_create":"2026-04-21T15:56:02.5033545+04:00","gmt_modified":"2026-04-21T15:56:02.5033545+04:00"},{"id":29061,"source_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","target_id":"e4d612794fd6c5cbd0dc716c92d3480b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-141","gmt_create":"2026-04-21T15:56:02.5039826+04:00","gmt_modified":"2026-04-21T15:56:02.5039826+04:00"},{"id":29063,"source_id":"52f5e880c05c0b3e52e994a389aba5e4","target_id":"154cd3cd3425e81e25e006bb710aef58","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-114","gmt_create":"2026-04-21T15:56:02.5044902+04:00","gmt_modified":"2026-04-21T15:56:02.5044902+04:00"},{"id":29065,"source_id":"ab664a3a8e43d25e578a4db7198b64ef","target_id":"86453e8b58e697e5fd190c8a61937802","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-85","gmt_create":"2026-04-21T15:56:02.5052988+04:00","gmt_modified":"2026-04-21T15:56:02.5052988+04:00"},{"id":29067,"source_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","target_id":"39d7a939d31b3c894ef58a3051855c99","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-106","gmt_create":"2026-04-21T15:56:02.5063356+04:00","gmt_modified":"2026-04-21T15:56:02.5063356+04:00"},{"id":29069,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"9a04e26ab83b6cd6497006db9e99b1e0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 182-304","gmt_create":"2026-04-21T15:56:02.5068585+04:00","gmt_modified":"2026-04-21T15:56:02.5068585+04:00"},{"id":29071,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"7a227c19adaff4de6610f94bf4e96ad7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 780-790","gmt_create":"2026-04-21T15:56:02.5094839+04:00","gmt_modified":"2026-04-21T15:56:02.5094839+04:00"},{"id":29073,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"28741bf9645e08261adc7734c70b8361","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 208-242","gmt_create":"2026-04-21T15:56:02.510012+04:00","gmt_modified":"2026-04-21T15:56:02.510012+04:00"},{"id":29075,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"134b1ec357374c1e4de9f1f9dd5a4497","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-72","gmt_create":"2026-04-21T15:56:02.5110656+04:00","gmt_modified":"2026-04-21T15:56:02.5110656+04:00"},{"id":29077,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"56976108609a53bc4588a840285eb1cd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 424-799","gmt_create":"2026-04-21T15:56:02.5115769+04:00","gmt_modified":"2026-04-21T15:56:02.5115769+04:00"},{"id":29079,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"3c503dce774e20257775c00826d8f5cb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 82-106","gmt_create":"2026-04-21T15:56:02.5126292+04:00","gmt_modified":"2026-04-21T15:56:02.5126292+04:00"},{"id":29082,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"40c1aeb5940e13e5043dab3511da4bf5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 41-66","gmt_create":"2026-04-21T15:56:02.5362753+04:00","gmt_modified":"2026-04-21T15:56:02.5362753+04:00"},{"id":29084,"source_id":"509c1750918b17167d058b5f1528df2e","target_id":"26e45e7ec616f7e322bad8ce47216277","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 310-354","gmt_create":"2026-04-21T15:56:02.537335+04:00","gmt_modified":"2026-04-21T15:56:02.537335+04:00"},{"id":29086,"source_id":"153af24462ad511fd6565de7789689cd","target_id":"a19a1b4be38ce1ae309e895ef40dbb73","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 30-49","gmt_create":"2026-04-21T15:56:02.5383922+04:00","gmt_modified":"2026-04-21T15:56:02.5383922+04:00"},{"id":29088,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"ae5529e86367f56b5d03bb968150da4d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-72","gmt_create":"2026-04-21T15:56:02.5399559+04:00","gmt_modified":"2026-04-21T15:56:02.5399559+04:00"},{"id":29090,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"cdd97b3b31d2f6f78ebbdab686ade7b3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 132-177","gmt_create":"2026-04-21T15:56:02.5410008+04:00","gmt_modified":"2026-04-21T15:56:02.5410008+04:00"},{"id":29092,"source_id":"51762eb7a9db71fd1b93f196bac889de","target_id":"360efa90cd6999cde8f070be49628512","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-177","gmt_create":"2026-04-21T15:56:02.541577+04:00","gmt_modified":"2026-04-21T15:56:02.541577+04:00"},{"id":29094,"source_id":"930618aeb9ee3ba20d1a8b6680be0169","target_id":"4cae612e2a1da076967e2db2af5bd3c5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 41-82","gmt_create":"2026-04-21T15:56:02.5426147+04:00","gmt_modified":"2026-04-21T15:56:02.5426147+04:00"},{"id":29096,"source_id":"930618aeb9ee3ba20d1a8b6680be0169","target_id":"c16d714a5e83ef07a1d8e850562b3249","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 100-174","gmt_create":"2026-04-21T15:56:02.5426147+04:00","gmt_modified":"2026-04-21T15:56:02.5426147+04:00"},{"id":29098,"source_id":"52f5e880c05c0b3e52e994a389aba5e4","target_id":"652640f4ecd98b067898764d939b1576","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 70-105","gmt_create":"2026-04-21T15:56:02.5448336+04:00","gmt_modified":"2026-04-21T15:56:02.5448336+04:00"},{"id":29100,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"64f43f37d8e783f40ae5ad401902bab3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3710-3723","gmt_create":"2026-04-21T15:56:02.5455815+04:00","gmt_modified":"2026-04-21T15:56:02.5455815+04:00"},{"id":29102,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"ae13127d7665db8e1646bd3539b3a9d4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 312-381","gmt_create":"2026-04-21T15:56:02.5461062+04:00","gmt_modified":"2026-04-21T15:56:02.5461062+04:00"},{"id":29104,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"fd1882a4f5928d935ae09849d9fdfdb1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 383-420","gmt_create":"2026-04-21T15:56:02.5466234+04:00","gmt_modified":"2026-04-21T15:56:02.5466234+04:00"},{"id":29106,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"140ef12d87c750788fc20315395d74bc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 173-179","gmt_create":"2026-04-21T15:56:02.5476744+04:00","gmt_modified":"2026-04-21T15:56:02.5476744+04:00"},{"id":29108,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"f63564c3e06f67088b86791ce7e6e0bb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4920-4970","gmt_create":"2026-04-21T15:56:02.548202+04:00","gmt_modified":"2026-04-21T15:56:02.548202+04:00"},{"id":29110,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"9e22b541b5e1bff359a6e0f014c993b3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5128-5131","gmt_create":"2026-04-21T15:56:02.5489875+04:00","gmt_modified":"2026-04-21T15:56:02.5489875+04:00"},{"id":29112,"source_id":"d952eb3122d64a10b5a53c11fa123b9d","target_id":"702eb271c3f420accb2a5afcb5628d1d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 322-346","gmt_create":"2026-04-21T15:56:02.5494916+04:00","gmt_modified":"2026-04-21T15:56:02.5494916+04:00"},{"id":29114,"source_id":"d952eb3122d64a10b5a53c11fa123b9d","target_id":"7ab814a8539011c4d23ec1eb74941b3e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 428-448","gmt_create":"2026-04-21T15:56:02.5525487+04:00","gmt_modified":"2026-04-21T15:56:02.5525487+04:00"},{"id":29116,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"c55228ab1fcfca5c9d71ea8236707e15","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-21T15:56:02.5530557+04:00","gmt_modified":"2026-04-21T15:56:02.5530557+04:00"},{"id":29118,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"81b2f4f8f38aa2cc8450eece0819b1b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-29","gmt_create":"2026-04-21T15:56:02.5541774+04:00","gmt_modified":"2026-04-21T15:56:02.5541774+04:00"},{"id":29120,"source_id":"d952eb3122d64a10b5a53c11fa123b9d","target_id":"d06fc379123070888b492f3273b63a65","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-21T15:56:02.5548007+04:00","gmt_modified":"2026-04-21T15:56:02.5548007+04:00"},{"id":29122,"source_id":"34e5909c35ad9d055be9727b3a207c55","target_id":"e285117d124780371406d47361f47d0b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-21T15:56:02.5553061+04:00","gmt_modified":"2026-04-21T15:56:02.5553061+04:00"},{"id":29124,"source_id":"ab664a3a8e43d25e578a4db7198b64ef","target_id":"dfa117c22b4c14cbb5722e7ef0134aa3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-27","gmt_create":"2026-04-21T15:56:02.5553061+04:00","gmt_modified":"2026-04-21T15:56:02.5553061+04:00"},{"id":29126,"source_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","target_id":"ad638fd17d802b229735469514a8ea20","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 39-45","gmt_create":"2026-04-21T15:56:02.5583566+04:00","gmt_modified":"2026-04-21T15:56:02.5583566+04:00"},{"id":29128,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"23342fa016b253b100a28bcbfd13c5e2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 288-298","gmt_create":"2026-04-21T15:56:02.5593626+04:00","gmt_modified":"2026-04-21T15:56:02.5593626+04:00"},{"id":29130,"source_id":"52f5e880c05c0b3e52e994a389aba5e4","target_id":"ced32203d2d382e7209d64d79aa7f2a4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 85-105","gmt_create":"2026-04-21T15:56:02.5593626+04:00","gmt_modified":"2026-04-21T15:56:02.5593626+04:00"},{"id":29131,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"ea908bf3b792540b293380d2405df2a1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: README.md","gmt_create":"2026-04-21T15:57:28.9969666+04:00","gmt_modified":"2026-04-21T15:57:28.9969666+04:00"},{"id":29132,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"645d8e6ea333ab8b9be2b7e711c5a349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-21T15:57:28.9969666+04:00","gmt_modified":"2026-04-21T15:57:28.9969666+04:00"},{"id":29133,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"a37a8cd6659c40ddae05b63af21c8692","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/vizd.sh","gmt_create":"2026-04-21T15:57:28.997479+04:00","gmt_modified":"2026-04-21T15:57:28.997479+04:00"},{"id":29134,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"373e154cf173767203286437d4786f5f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","gmt_create":"2026-04-21T15:57:28.997479+04:00","gmt_modified":"2026-04-21T15:57:28.997479+04:00"},{"id":29135,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"e282d94f35b97a76846b70776d2ccc25","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","gmt_create":"2026-04-21T15:57:28.997479+04:00","gmt_modified":"2026-04-21T15:57:28.997479+04:00"},{"id":29136,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"fdf208f1bae466f93c33f5df9e581f34","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/database_api/plugin.cpp","gmt_create":"2026-04-21T15:57:28.997479+04:00","gmt_modified":"2026-04-21T15:57:28.997479+04:00"},{"id":29137,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"34d746e22563e28738c4600d05c8871e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/account_history/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29138,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"e3fcd9cc1f0cfd5b50612d1c4eecf62e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/operation_history/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29139,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"dccdf5910777179735772fd2811e918b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/mongo_db/mongo_db_plugin.cpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29140,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29141,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29142,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"b70b275b872bbc6ecd1c4312dea1f126","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-21T15:57:28.9980006+04:00","gmt_modified":"2026-04-21T15:57:28.9980006+04:00"},{"id":29143,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"bd9a9323b695ba6f4ee219c6ac05d65b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-21T15:57:28.9985202+04:00","gmt_modified":"2026-04-21T15:57:28.9985202+04:00"},{"id":29144,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"5d944cf7303ab4c04644e6f2964d2153","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/network_broadcast_api/network_broadcast_api.cpp","gmt_create":"2026-04-21T15:57:28.9985202+04:00","gmt_modified":"2026-04-21T15:57:28.9985202+04:00"},{"id":29145,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"4e8688b368af6dc914b95a90b78d69c3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness_api/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9985202+04:00","gmt_modified":"2026-04-21T15:57:28.9985202+04:00"},{"id":29146,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"2ae1cf69f9a00783b163bef51ffbb862","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/block_info/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9985202+04:00","gmt_modified":"2026-04-21T15:57:28.9985202+04:00"},{"id":29147,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"6a4a78406dbdd0849ee3ba490d08a84f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/raw_block/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9990403+04:00","gmt_modified":"2026-04-21T15:57:28.9990403+04:00"},{"id":29148,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"b351ad675c4e39f560f3e0425a47bb80","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/debug_node/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9990403+04:00","gmt_modified":"2026-04-21T15:57:28.9990403+04:00"},{"id":29149,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"c301941c4a936a7622e3c2d4c4e7d534","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-21T15:57:28.9990403+04:00","gmt_modified":"2026-04-21T15:57:28.9990403+04:00"},{"id":29150,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"a0520874fa0a5f141c90a7ada0d15b38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/building.md","gmt_create":"2026-04-21T15:57:28.9995571+04:00","gmt_modified":"2026-04-21T15:57:28.9995571+04:00"},{"id":29151,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"38165effb8391debc3201ce79007fec0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/testnet.md","gmt_create":"2026-04-21T15:57:28.9995571+04:00","gmt_modified":"2026-04-21T15:57:28.9995571+04:00"},{"id":29152,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"62570dc38423368a7faed891907fc203","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/debug_node_plugin.md","gmt_create":"2026-04-21T15:57:28.9995571+04:00","gmt_modified":"2026-04-21T15:57:28.9995571+04:00"},{"id":29153,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"cd9da93f4e658ab70fefdc0acf48bfc3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-130","gmt_create":"2026-04-21T15:57:29.0000847+04:00","gmt_modified":"2026-04-21T15:57:29.0000847+04:00"},{"id":29154,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"cd9da93f4e658ab70fefdc0acf48bfc3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-130","gmt_create":"2026-04-21T15:57:29.0000847+04:00","gmt_modified":"2026-04-21T15:57:29.0000847+04:00"},{"id":29155,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"a69a24541084384de57bc647b3ba361e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#1-82","gmt_create":"2026-04-21T15:57:29.0000847+04:00","gmt_modified":"2026-04-21T15:57:29.0000847+04:00"},{"id":29156,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"a69a24541084384de57bc647b3ba361e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-82","gmt_create":"2026-04-21T15:57:29.0000847+04:00","gmt_modified":"2026-04-21T15:57:29.0000847+04:00"},{"id":29157,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"29e3a849850e5201a980bcd1b117d5a9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#1-62","gmt_create":"2026-04-21T15:57:29.0015943+04:00","gmt_modified":"2026-04-21T15:57:29.0015943+04:00"},{"id":29158,"source_id":"373e154cf173767203286437d4786f5f","target_id":"29e3a849850e5201a980bcd1b117d5a9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-62","gmt_create":"2026-04-21T15:57:29.0015943+04:00","gmt_modified":"2026-04-21T15:57:29.0015943+04:00"},{"id":29159,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"21feadcae02d52c435c35c80eea18b5a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#1-146","gmt_create":"2026-04-21T15:57:29.0024768+04:00","gmt_modified":"2026-04-21T15:57:29.0024768+04:00"},{"id":29160,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"21feadcae02d52c435c35c80eea18b5a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-146","gmt_create":"2026-04-21T15:57:29.0024768+04:00","gmt_modified":"2026-04-21T15:57:29.0024768+04:00"},{"id":29161,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"16b73e305bf098e5215ed015a758c60e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#489-560","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29162,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"16b73e305bf098e5215ed015a758c60e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 489-560","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29163,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"2663855afc30e579f61e7d97020a2f69","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: README.md#1-53","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29164,"source_id":"ea908bf3b792540b293380d2405df2a1","target_id":"2663855afc30e579f61e7d97020a2f69","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-53","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29165,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"179eae2bdbae82637c182b728cf2cecb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#19-31","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29166,"source_id":"373e154cf173767203286437d4786f5f","target_id":"179eae2bdbae82637c182b728cf2cecb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 19-31","gmt_create":"2026-04-21T15:57:29.0030081+04:00","gmt_modified":"2026-04-21T15:57:29.0030081+04:00"},{"id":29167,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"70d6dbcd9940748dd3688dec5582982a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#13-36","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29168,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"70d6dbcd9940748dd3688dec5582982a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-36","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29169,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"ca4ab7933cc4e77dfe8ae01a0c049d05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#62-81","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29170,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"ca4ab7933cc4e77dfe8ae01a0c049d05","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-81","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29171,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"0b3517467b4def3ef0f8d54455b9523c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#570-589","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29172,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"0b3517467b4def3ef0f8d54455b9523c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 570-589","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29173,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"a08c0d0712941934559cd718be033130","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#103-113","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29174,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"a08c0d0712941934559cd718be033130","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 103-113","gmt_create":"2026-04-21T15:57:29.0040117+04:00","gmt_modified":"2026-04-21T15:57:29.0040117+04:00"},{"id":29175,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"61e031ec1026138d70ad5a2c41c13b2e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0151083+04:00","gmt_modified":"2026-04-21T15:57:29.0151083+04:00"},{"id":29176,"source_id":"fdf208f1bae466f93c33f5df9e581f34","target_id":"61e031ec1026138d70ad5a2c41c13b2e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0151083+04:00","gmt_modified":"2026-04-21T15:57:29.0151083+04:00"},{"id":29177,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"47c52ba0d825f62d208e68c367211370","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#16-20","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29178,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"47c52ba0d825f62d208e68c367211370","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 16-20","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29179,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"5cc29dd694b27150d17b9a3b20a69de8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#48-52","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29180,"source_id":"373e154cf173767203286437d4786f5f","target_id":"5cc29dd694b27150d17b9a3b20a69de8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-52","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29181,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"c524e6ae861831d5eb348ce30d6f7328","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#103-107","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29182,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"c524e6ae861831d5eb348ce30d6f7328","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 103-107","gmt_create":"2026-04-21T15:57:29.0167334+04:00","gmt_modified":"2026-04-21T15:57:29.0167334+04:00"},{"id":29183,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"e4d9f21f769ce4228f96df028e3e997c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#172-179","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29184,"source_id":"b70b275b872bbc6ecd1c4312dea1f126","target_id":"e4d9f21f769ce4228f96df028e3e997c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 172-179","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29185,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"edf400f832fe8ddce11c6a86ad0819d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#320-342","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29186,"source_id":"bd9a9323b695ba6f4ee219c6ac05d65b","target_id":"edf400f832fe8ddce11c6a86ad0819d0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 320-342","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29187,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"45d68c85adf811d4d179c52a947bf612","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#28-30","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29188,"source_id":"373e154cf173767203286437d4786f5f","target_id":"45d68c85adf811d4d179c52a947bf612","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28-30","gmt_create":"2026-04-21T15:57:29.0176217+04:00","gmt_modified":"2026-04-21T15:57:29.0176217+04:00"},{"id":29189,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"df364d05777ec16508493d2d4c99707a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#685-692","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29190,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"df364d05777ec16508493d2d4c99707a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 685-692","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29191,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"bf80172039e326eadb2f6aa84c1f7ffc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#111-130","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29192,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"bf80172039e326eadb2f6aa84c1f7ffc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-130","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29193,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"821616e0ed0d4912716616d4554297b2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#62-72","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29194,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"821616e0ed0d4912716616d4554297b2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-72","gmt_create":"2026-04-21T15:57:29.0186225+04:00","gmt_modified":"2026-04-21T15:57:29.0186225+04:00"},{"id":29195,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"21bc88ff0e0497e6f99b8294446f75bf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#15-17","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29196,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"21bc88ff0e0497e6f99b8294446f75bf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-17","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29197,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"68d7477b38e6bcbf08f2b34ba98d7b72","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#49-67","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29198,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"68d7477b38e6bcbf08f2b34ba98d7b72","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-67","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29199,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"0cb7084d820b15fef3e5e73c72aa1d7f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#44-53","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29200,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"0cb7084d820b15fef3e5e73c72aa1d7f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-53","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29201,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"f0f6538eacf86c560137434c114af69b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#13-47","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29202,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"f0f6538eacf86c560137434c114af69b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-47","gmt_create":"2026-04-21T15:57:29.0196225+04:00","gmt_modified":"2026-04-21T15:57:29.0196225+04:00"},{"id":29203,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"25ccc79e1b45c77f7730bfdbb6d4f92b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#510-530","gmt_create":"2026-04-21T15:57:29.0206225+04:00","gmt_modified":"2026-04-21T15:57:29.0206225+04:00"},{"id":29204,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"25ccc79e1b45c77f7730bfdbb6d4f92b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 510-530","gmt_create":"2026-04-21T15:57:29.0206225+04:00","gmt_modified":"2026-04-21T15:57:29.0206225+04:00"},{"id":29205,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"e1dc526112e9b2821473d75cb1df0ca9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#1-212","gmt_create":"2026-04-21T15:57:29.0206225+04:00","gmt_modified":"2026-04-21T15:57:29.0206225+04:00"},{"id":29206,"source_id":"a0520874fa0a5f141c90a7ada0d15b38","target_id":"e1dc526112e9b2821473d75cb1df0ca9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-212","gmt_create":"2026-04-21T15:57:29.0216235+04:00","gmt_modified":"2026-04-21T15:57:29.0216235+04:00"},{"id":29207,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"8a8c8bda0bcc71ad28464a215d311958","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: README.md#12-29","gmt_create":"2026-04-21T15:57:29.0216235+04:00","gmt_modified":"2026-04-21T15:57:29.0216235+04:00"},{"id":29208,"source_id":"ea908bf3b792540b293380d2405df2a1","target_id":"8a8c8bda0bcc71ad28464a215d311958","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-29","gmt_create":"2026-04-21T15:57:29.0216235+04:00","gmt_modified":"2026-04-21T15:57:29.0216235+04:00"},{"id":29209,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"4015fb3cab77d0da4f1b816271be9949","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#47-48","gmt_create":"2026-04-21T15:57:29.0225046+04:00","gmt_modified":"2026-04-21T15:57:29.0225046+04:00"},{"id":29210,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"4015fb3cab77d0da4f1b816271be9949","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-48","gmt_create":"2026-04-21T15:57:29.0225046+04:00","gmt_modified":"2026-04-21T15:57:29.0225046+04:00"},{"id":29211,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"df001d9a27f5ba2d6b5033ac67103d58","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#13-14","gmt_create":"2026-04-21T15:57:29.0235116+04:00","gmt_modified":"2026-04-21T15:57:29.0235116+04:00"},{"id":29212,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"df001d9a27f5ba2d6b5033ac67103d58","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-14","gmt_create":"2026-04-21T15:57:29.0235116+04:00","gmt_modified":"2026-04-21T15:57:29.0235116+04:00"},{"id":29213,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"b7ed71ac14b0cfe504186b5e57353c1b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/testnet.md#21-37","gmt_create":"2026-04-21T15:57:29.0235116+04:00","gmt_modified":"2026-04-21T15:57:29.0235116+04:00"},{"id":29214,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"0a2a211af5e6b3a4c40670f74bc2a6e8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#38-38","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29215,"source_id":"373e154cf173767203286437d4786f5f","target_id":"0a2a211af5e6b3a4c40670f74bc2a6e8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-38","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29216,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"eed32e73c8436816efba7117d80aad64","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#84-92","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29217,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"eed32e73c8436816efba7117d80aad64","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 84-92","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29218,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"ab84791989e03b9f71c46fdfdccdb602","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29219,"source_id":"c301941c4a936a7622e3c2d4c4e7d534","target_id":"ab84791989e03b9f71c46fdfdccdb602","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0245116+04:00","gmt_modified":"2026-04-21T15:57:29.0245116+04:00"},{"id":29220,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"d3dc18f36c6280ddb7ec6db67e725d88","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#36-40","gmt_create":"2026-04-21T15:57:29.0256318+04:00","gmt_modified":"2026-04-21T15:57:29.0256318+04:00"},{"id":29221,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"d3dc18f36c6280ddb7ec6db67e725d88","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 36-40","gmt_create":"2026-04-21T15:57:29.0256318+04:00","gmt_modified":"2026-04-21T15:57:29.0256318+04:00"},{"id":29222,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"885a9177295fa8885934f629e1eddc2b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#22-34","gmt_create":"2026-04-21T15:57:29.0266342+04:00","gmt_modified":"2026-04-21T15:57:29.0266342+04:00"},{"id":29223,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"885a9177295fa8885934f629e1eddc2b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-34","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29224,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"5fbde568358ad17dc5bd5fc9b6776d67","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-8","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29225,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"5fbde568358ad17dc5bd5fc9b6776d67","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29226,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"d2799b1f16c8056f30cbdba9c608626d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#9-29","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29227,"source_id":"a37a8cd6659c40ddae05b63af21c8692","target_id":"d2799b1f16c8056f30cbdba9c608626d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-29","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29228,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"17b57d98518d55255a9cbf07ea419d6a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#22-40","gmt_create":"2026-04-21T15:57:29.0267384+04:00","gmt_modified":"2026-04-21T15:57:29.0267384+04:00"},{"id":29229,"source_id":"645d8e6ea333ab8b9be2b7e711c5a349","target_id":"17b57d98518d55255a9cbf07ea419d6a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-40","gmt_create":"2026-04-21T15:57:29.0276867+04:00","gmt_modified":"2026-04-21T15:57:29.0276867+04:00"},{"id":29230,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"c29f8441fe27290770ebda76521eac43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#508-552","gmt_create":"2026-04-21T15:57:29.0276867+04:00","gmt_modified":"2026-04-21T15:57:29.0276867+04:00"},{"id":29231,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"c29f8441fe27290770ebda76521eac43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 508-552","gmt_create":"2026-04-21T15:57:29.0276867+04:00","gmt_modified":"2026-04-21T15:57:29.0276867+04:00"},{"id":29232,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"fd03124b7070007bfd50f9d2cb2ca67d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0286755+04:00","gmt_modified":"2026-04-21T15:57:29.0286755+04:00"},{"id":29233,"source_id":"34d746e22563e28738c4600d05c8871e","target_id":"fd03124b7070007bfd50f9d2cb2ca67d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0286755+04:00","gmt_modified":"2026-04-21T15:57:29.0286755+04:00"},{"id":29234,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"78a80141a72a91984e8b21280bfc28f2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/operation_history/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0291813+04:00","gmt_modified":"2026-04-21T15:57:29.0291813+04:00"},{"id":29235,"source_id":"e3fcd9cc1f0cfd5b50612d1c4eecf62e","target_id":"78a80141a72a91984e8b21280bfc28f2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0297074+04:00","gmt_modified":"2026-04-21T15:57:29.0297074+04:00"},{"id":29236,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"5b34a67d4243c9b1a0f8409302fb3919","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0297074+04:00","gmt_modified":"2026-04-21T15:57:29.0297074+04:00"},{"id":29237,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"5b34a67d4243c9b1a0f8409302fb3919","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0302264+04:00","gmt_modified":"2026-04-21T15:57:29.0302264+04:00"},{"id":29238,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"84d30a358c8725c09f516b87f5d501f2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/network_broadcast_api/network_broadcast_api.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0302264+04:00","gmt_modified":"2026-04-21T15:57:29.0302264+04:00"},{"id":29239,"source_id":"5d944cf7303ab4c04644e6f2964d2153","target_id":"84d30a358c8725c09f516b87f5d501f2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0307541+04:00","gmt_modified":"2026-04-21T15:57:29.0307541+04:00"},{"id":29240,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"30129b27709b024b5cbb8632f96423e8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness_api/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0312809+04:00","gmt_modified":"2026-04-21T15:57:29.0312809+04:00"},{"id":29241,"source_id":"4e8688b368af6dc914b95a90b78d69c3","target_id":"30129b27709b024b5cbb8632f96423e8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0312809+04:00","gmt_modified":"2026-04-21T15:57:29.0312809+04:00"},{"id":29242,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"7f7ea5acbd1bd158d4bc3f748543593b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/block_info/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0317922+04:00","gmt_modified":"2026-04-21T15:57:29.0317922+04:00"},{"id":29243,"source_id":"2ae1cf69f9a00783b163bef51ffbb862","target_id":"7f7ea5acbd1bd158d4bc3f748543593b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.0317922+04:00","gmt_modified":"2026-04-21T15:57:29.0317922+04:00"},{"id":29244,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"3ff1eb0df8f2318b660684c306e4fe18","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/raw_block/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.0317922+04:00","gmt_modified":"2026-04-21T15:57:29.0317922+04:00"},{"id":29245,"source_id":"6a4a78406dbdd0849ee3ba490d08a84f","target_id":"3ff1eb0df8f2318b660684c306e4fe18","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.03231+04:00","gmt_modified":"2026-04-21T15:57:29.03231+04:00"},{"id":29246,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"7cf3493cf3f1aea0973642ec4ddd6af2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/debug_node/plugin.cpp#1-200","gmt_create":"2026-04-21T15:57:29.03231+04:00","gmt_modified":"2026-04-21T15:57:29.03231+04:00"},{"id":29247,"source_id":"b351ad675c4e39f560f3e0425a47bb80","target_id":"7cf3493cf3f1aea0973642ec4ddd6af2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T15:57:29.03231+04:00","gmt_modified":"2026-04-21T15:57:29.03231+04:00"},{"id":29248,"source_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","target_id":"8204ffe8ec3fe064393dd8aa8a78dd01","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/debug_node_plugin.md#50-134","gmt_create":"2026-04-21T15:57:29.0328438+04:00","gmt_modified":"2026-04-21T15:57:29.0328438+04:00"},{"id":29250,"source_id":"98fcff34-cc61-4393-a258-6869d7866061","target_id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 98fcff34-cc61-4393-a258-6869d7866061 -\u003e c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","gmt_create":"2026-04-21T15:59:40.5824828+04:00","gmt_modified":"2026-04-21T15:59:40.5824828+04:00"},{"id":29257,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/cat-parts.cpp","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":29258,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7992eefc6bdde6d2490af6a01bbb9444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/cat_parts.py","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":29259,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7fda3f7c232a7832f681a3520b08a720","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/check_reflect.py","gmt_create":"2026-04-21T16:26:14.4250223+04:00","gmt_modified":"2026-04-21T16:26:14.4250223+04:00"},{"id":29260,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"3dc1bfbaed7be58e42e79a2172bee9dd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/newplugin.py","gmt_create":"2026-04-21T16:26:14.4260225+04:00","gmt_modified":"2026-04-21T16:26:14.4260225+04:00"},{"id":29261,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"800d3badf96efc4303cc647a1369a853","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/pretty_schema.py","gmt_create":"2026-04-21T16:26:14.4260225+04:00","gmt_modified":"2026-04-21T16:26:14.4260225+04:00"},{"id":29262,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"c075231eba29c3611900574409ccbced","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/schema_test.cpp","gmt_create":"2026-04-21T16:26:14.4260225+04:00","gmt_modified":"2026-04-21T16:26:14.4260225+04:00"},{"id":29263,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"e4becafc97cfeff536e7154901ec07ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/configure_build.py","gmt_create":"2026-04-21T16:26:14.4260225+04:00","gmt_modified":"2026-04-21T16:26:14.4260225+04:00"},{"id":29264,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"8e6a83084720b465212fd2eb7724dc21","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: install-deps-linux.sh","gmt_create":"2026-04-21T16:26:14.4260225+04:00","gmt_modified":"2026-04-21T16:26:14.4260225+04:00"},{"id":29265,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"8262135b8e76bae157909e6fcfb29315","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-linux.sh","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29266,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"e1487f08842fe68bc3a5c32aed8e8eca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-mac.sh","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29267,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"94bb40a5d00a39c77fbe2491988b8212","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/CMakeLists.txt","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29268,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"23b7c8b22fbc863107446e05c12f4c29","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/CMakeLists.txt","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29269,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"a0520874fa0a5f141c90a7ada0d15b38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/building.md","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29270,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ea908bf3b792540b293380d2405df2a1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: README.md","gmt_create":"2026-04-21T16:26:14.4270224+04:00","gmt_modified":"2026-04-21T16:26:14.4270224+04:00"},{"id":29271,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"51e5b540b780cb77a17287085d7621f9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#1-113","gmt_create":"2026-04-21T16:26:14.4280224+04:00","gmt_modified":"2026-04-21T16:26:14.4280224+04:00"},{"id":29272,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"51e5b540b780cb77a17287085d7621f9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-113","gmt_create":"2026-04-21T16:26:14.4280224+04:00","gmt_modified":"2026-04-21T16:26:14.4280224+04:00"},{"id":29273,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"9fd632e8659c7f32c281644c67acb734","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#1-191","gmt_create":"2026-04-21T16:26:14.4280224+04:00","gmt_modified":"2026-04-21T16:26:14.4280224+04:00"},{"id":29274,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"9fd632e8659c7f32c281644c67acb734","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-191","gmt_create":"2026-04-21T16:26:14.4280224+04:00","gmt_modified":"2026-04-21T16:26:14.4280224+04:00"},{"id":29275,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"e7c2a58f6ddf39d12b83f33ba6e80c3e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#1-242","gmt_create":"2026-04-21T16:26:14.4290225+04:00","gmt_modified":"2026-04-21T16:26:14.4290225+04:00"},{"id":29276,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"e7c2a58f6ddf39d12b83f33ba6e80c3e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-242","gmt_create":"2026-04-21T16:26:14.4293087+04:00","gmt_modified":"2026-04-21T16:26:14.4293087+04:00"},{"id":29277,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"32a2d62cc1c57934e075da026dbf2f89","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/CMakeLists.txt#1-8","gmt_create":"2026-04-21T16:26:14.4293087+04:00","gmt_modified":"2026-04-21T16:26:14.4293087+04:00"},{"id":29278,"source_id":"94bb40a5d00a39c77fbe2491988b8212","target_id":"32a2d62cc1c57934e075da026dbf2f89","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-21T16:26:14.4298131+04:00","gmt_modified":"2026-04-21T16:26:14.4298131+04:00"},{"id":29279,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"d74506dfcf8e18814af65d9ea1ab35de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/CMakeLists.txt#1-69","gmt_create":"2026-04-21T16:26:14.4298131+04:00","gmt_modified":"2026-04-21T16:26:14.4298131+04:00"},{"id":29280,"source_id":"23b7c8b22fbc863107446e05c12f4c29","target_id":"d74506dfcf8e18814af65d9ea1ab35de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-69","gmt_create":"2026-04-21T16:26:14.4298131+04:00","gmt_modified":"2026-04-21T16:26:14.4298131+04:00"},{"id":29281,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ab55f798eabaf3585e51f7e1322063ec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#183-220","gmt_create":"2026-04-21T16:26:14.4304399+04:00","gmt_modified":"2026-04-21T16:26:14.4304399+04:00"},{"id":29282,"source_id":"a0520874fa0a5f141c90a7ada0d15b38","target_id":"ab55f798eabaf3585e51f7e1322063ec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 183-220","gmt_create":"2026-04-21T16:26:14.4309435+04:00","gmt_modified":"2026-04-21T16:26:14.4309435+04:00"},{"id":29283,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"32dedde539c0f492b56c6bc1f38cd0f0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#17-29","gmt_create":"2026-04-21T16:26:14.4309435+04:00","gmt_modified":"2026-04-21T16:26:14.4309435+04:00"},{"id":29284,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"32dedde539c0f492b56c6bc1f38cd0f0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-29","gmt_create":"2026-04-21T16:26:14.4309435+04:00","gmt_modified":"2026-04-21T16:26:14.4309435+04:00"},{"id":29285,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"0b93309fbf8b897d5f7d4af28485f767","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#15-26","gmt_create":"2026-04-21T16:26:14.4309435+04:00","gmt_modified":"2026-04-21T16:26:14.4309435+04:00"},{"id":29286,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"0b93309fbf8b897d5f7d4af28485f767","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-26","gmt_create":"2026-04-21T16:26:14.4309435+04:00","gmt_modified":"2026-04-21T16:26:14.4309435+04:00"},{"id":29287,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"23379f07290d5deea02a833accc4f72d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat-parts.cpp#1-68","gmt_create":"2026-04-21T16:26:14.4319469+04:00","gmt_modified":"2026-04-21T16:26:14.4319469+04:00"},{"id":29288,"source_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","target_id":"23379f07290d5deea02a833accc4f72d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-68","gmt_create":"2026-04-21T16:26:14.4319469+04:00","gmt_modified":"2026-04-21T16:26:14.4319469+04:00"},{"id":29289,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"a7f71b8eb346f6812e60139d849614c4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#1-74","gmt_create":"2026-04-21T16:26:14.432526+04:00","gmt_modified":"2026-04-21T16:26:14.432526+04:00"},{"id":29290,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"a7f71b8eb346f6812e60139d849614c4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-74","gmt_create":"2026-04-21T16:26:14.432526+04:00","gmt_modified":"2026-04-21T16:26:14.432526+04:00"},{"id":29291,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"5c86456e81518432422619fbb4597d43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/check_reflect.py#1-160","gmt_create":"2026-04-21T16:26:14.4330291+04:00","gmt_modified":"2026-04-21T16:26:14.4330291+04:00"},{"id":29292,"source_id":"7fda3f7c232a7832f681a3520b08a720","target_id":"5c86456e81518432422619fbb4597d43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-160","gmt_create":"2026-04-21T16:26:14.4330291+04:00","gmt_modified":"2026-04-21T16:26:14.4330291+04:00"},{"id":29293,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"6eee2bca096c4f6719b5bf67577d4935","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#1-251","gmt_create":"2026-04-21T16:26:14.4330291+04:00","gmt_modified":"2026-04-21T16:26:14.4330291+04:00"},{"id":29294,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"6eee2bca096c4f6719b5bf67577d4935","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-251","gmt_create":"2026-04-21T16:26:14.4330291+04:00","gmt_modified":"2026-04-21T16:26:14.4330291+04:00"},{"id":29295,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"9eeb9e4a34009e137d405902417a3a21","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/pretty_schema.py#1-28","gmt_create":"2026-04-21T16:26:14.4335446+04:00","gmt_modified":"2026-04-21T16:26:14.4335446+04:00"},{"id":29296,"source_id":"800d3badf96efc4303cc647a1369a853","target_id":"9eeb9e4a34009e137d405902417a3a21","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-28","gmt_create":"2026-04-21T16:26:14.4335446+04:00","gmt_modified":"2026-04-21T16:26:14.4335446+04:00"},{"id":29297,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"1ab68b979774178055cf5be09ba010dd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/schema_test.cpp#1-57","gmt_create":"2026-04-21T16:26:14.4340608+04:00","gmt_modified":"2026-04-21T16:26:14.4340608+04:00"},{"id":29298,"source_id":"c075231eba29c3611900574409ccbced","target_id":"1ab68b979774178055cf5be09ba010dd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-57","gmt_create":"2026-04-21T16:26:14.4340608+04:00","gmt_modified":"2026-04-21T16:26:14.4340608+04:00"},{"id":29299,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"621bc84bf3f86ca533eb8eb91f62383f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#1-202","gmt_create":"2026-04-21T16:26:14.4340608+04:00","gmt_modified":"2026-04-21T16:26:14.4340608+04:00"},{"id":29300,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"621bc84bf3f86ca533eb8eb91f62383f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-202","gmt_create":"2026-04-21T16:26:14.4340608+04:00","gmt_modified":"2026-04-21T16:26:14.4340608+04:00"},{"id":29301,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"afb46e7f12fa61be4925cf6c5c3e0677","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#28-106","gmt_create":"2026-04-21T16:26:14.4346047+04:00","gmt_modified":"2026-04-21T16:26:14.4346047+04:00"},{"id":29302,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"afb46e7f12fa61be4925cf6c5c3e0677","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28-106","gmt_create":"2026-04-21T16:26:14.4346047+04:00","gmt_modified":"2026-04-21T16:26:14.4346047+04:00"},{"id":29303,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"27329b3455bb48b75b0c227eba4e7675","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#63-98","gmt_create":"2026-04-21T16:26:14.4346047+04:00","gmt_modified":"2026-04-21T16:26:14.4346047+04:00"},{"id":29304,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"27329b3455bb48b75b0c227eba4e7675","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 63-98","gmt_create":"2026-04-21T16:26:14.4351172+04:00","gmt_modified":"2026-04-21T16:26:14.4351172+04:00"},{"id":29305,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"4d24ec34fca7e727433f419eea43acfc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#120-128","gmt_create":"2026-04-21T16:26:14.4351172+04:00","gmt_modified":"2026-04-21T16:26:14.4351172+04:00"},{"id":29306,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"4d24ec34fca7e727433f419eea43acfc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 120-128","gmt_create":"2026-04-21T16:26:14.4351172+04:00","gmt_modified":"2026-04-21T16:26:14.4351172+04:00"},{"id":29307,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"1f1975afafa74b8181d99dc97cf9c7b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat-parts.cpp#7-68","gmt_create":"2026-04-21T16:26:14.4356349+04:00","gmt_modified":"2026-04-21T16:26:14.4356349+04:00"},{"id":29308,"source_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","target_id":"1f1975afafa74b8181d99dc97cf9c7b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 7-68","gmt_create":"2026-04-21T16:26:14.4356349+04:00","gmt_modified":"2026-04-21T16:26:14.4356349+04:00"},{"id":29309,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"c43c611c9dde8f2551f40d6accc85798","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#28-74","gmt_create":"2026-04-21T16:26:14.4356349+04:00","gmt_modified":"2026-04-21T16:26:14.4356349+04:00"},{"id":29310,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"c43c611c9dde8f2551f40d6accc85798","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28-74","gmt_create":"2026-04-21T16:26:14.4356349+04:00","gmt_modified":"2026-04-21T16:26:14.4356349+04:00"},{"id":29311,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"fd50d7f490cd95e901605c599cb6b808","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/check_reflect.py#44-160","gmt_create":"2026-04-21T16:26:14.4361544+04:00","gmt_modified":"2026-04-21T16:26:14.4361544+04:00"},{"id":29312,"source_id":"7fda3f7c232a7832f681a3520b08a720","target_id":"fd50d7f490cd95e901605c599cb6b808","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-160","gmt_create":"2026-04-21T16:26:14.4361544+04:00","gmt_modified":"2026-04-21T16:26:14.4361544+04:00"},{"id":29313,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"5e1ce3aca99e62fc8f169952b907af51","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#225-247","gmt_create":"2026-04-21T16:26:14.4361544+04:00","gmt_modified":"2026-04-21T16:26:14.4361544+04:00"},{"id":29314,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"5e1ce3aca99e62fc8f169952b907af51","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 225-247","gmt_create":"2026-04-21T16:26:14.4361544+04:00","gmt_modified":"2026-04-21T16:26:14.4361544+04:00"},{"id":29315,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"684690fffcc7879904329b01c22fc01c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/pretty_schema.py#9-27","gmt_create":"2026-04-21T16:26:14.4366698+04:00","gmt_modified":"2026-04-21T16:26:14.4366698+04:00"},{"id":29316,"source_id":"800d3badf96efc4303cc647a1369a853","target_id":"684690fffcc7879904329b01c22fc01c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-27","gmt_create":"2026-04-21T16:26:14.4366698+04:00","gmt_modified":"2026-04-21T16:26:14.4366698+04:00"},{"id":29317,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"8139981360dac7647f63c407ce4963bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/schema_test.cpp#15-56","gmt_create":"2026-04-21T16:26:14.4366698+04:00","gmt_modified":"2026-04-21T16:26:14.4366698+04:00"},{"id":29318,"source_id":"c075231eba29c3611900574409ccbced","target_id":"8139981360dac7647f63c407ce4963bd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-56","gmt_create":"2026-04-21T16:26:14.4371912+04:00","gmt_modified":"2026-04-21T16:26:14.4371912+04:00"},{"id":29319,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"32769cfba52c72dcc80e8fcfbf574a29","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#143-196","gmt_create":"2026-04-21T16:26:14.4371912+04:00","gmt_modified":"2026-04-21T16:26:14.4371912+04:00"},{"id":29320,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"32769cfba52c72dcc80e8fcfbf574a29","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 143-196","gmt_create":"2026-04-21T16:26:14.4371912+04:00","gmt_modified":"2026-04-21T16:26:14.4371912+04:00"},{"id":29321,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"79d466d586fbb7f5be487c7b23e48bb1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#34-106","gmt_create":"2026-04-21T16:26:14.4371912+04:00","gmt_modified":"2026-04-21T16:26:14.4371912+04:00"},{"id":29322,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"79d466d586fbb7f5be487c7b23e48bb1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 34-106","gmt_create":"2026-04-21T16:26:14.4376999+04:00","gmt_modified":"2026-04-21T16:26:14.4376999+04:00"},{"id":29323,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"dea1585ea380a2d0e65af090ab376670","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#155-165","gmt_create":"2026-04-21T16:26:14.4465101+04:00","gmt_modified":"2026-04-21T16:26:14.4465101+04:00"},{"id":29324,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"dea1585ea380a2d0e65af090ab376670","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 155-165","gmt_create":"2026-04-21T16:26:14.4470226+04:00","gmt_modified":"2026-04-21T16:26:14.4470226+04:00"},{"id":29325,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"471f9379e6fa05c65eb8377330f4f79c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#126-171","gmt_create":"2026-04-21T16:26:14.4470226+04:00","gmt_modified":"2026-04-21T16:26:14.4470226+04:00"},{"id":29326,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"471f9379e6fa05c65eb8377330f4f79c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 126-171","gmt_create":"2026-04-21T16:26:14.4470226+04:00","gmt_modified":"2026-04-21T16:26:14.4470226+04:00"},{"id":29327,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"916bcb2c609dddf634c4359361caf193","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat-parts.cpp#1-6","gmt_create":"2026-04-21T16:26:14.4475381+04:00","gmt_modified":"2026-04-21T16:26:14.4475381+04:00"},{"id":29328,"source_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","target_id":"916bcb2c609dddf634c4359361caf193","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6","gmt_create":"2026-04-21T16:26:14.4475381+04:00","gmt_modified":"2026-04-21T16:26:14.4475381+04:00"},{"id":29329,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"5459af8d7ebdab15fd37c09db2a41dd6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#3-4","gmt_create":"2026-04-21T16:26:14.4475381+04:00","gmt_modified":"2026-04-21T16:26:14.4475381+04:00"},{"id":29330,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"5459af8d7ebdab15fd37c09db2a41dd6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3-4","gmt_create":"2026-04-21T16:26:14.4475381+04:00","gmt_modified":"2026-04-21T16:26:14.4475381+04:00"},{"id":29331,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"fc71f5e8f1d5740b4c1cb5292074801e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/check_reflect.py#3-6","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29332,"source_id":"7fda3f7c232a7832f681a3520b08a720","target_id":"fc71f5e8f1d5740b4c1cb5292074801e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3-6","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29333,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"67bf08b01d6bb0bd99689730f120072b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#1-2","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29334,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"67bf08b01d6bb0bd99689730f120072b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-2","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29335,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7ef688071083aeae57c7b536c60104a4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/pretty_schema.py#3-5","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29336,"source_id":"800d3badf96efc4303cc647a1369a853","target_id":"7ef688071083aeae57c7b536c60104a4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3-5","gmt_create":"2026-04-21T16:26:14.4480511+04:00","gmt_modified":"2026-04-21T16:26:14.4480511+04:00"},{"id":29337,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"46094abe04c1acaf291e445e04283cd6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/schema_test.cpp#1-3","gmt_create":"2026-04-21T16:26:14.4485709+04:00","gmt_modified":"2026-04-21T16:26:14.4485709+04:00"},{"id":29338,"source_id":"c075231eba29c3611900574409ccbced","target_id":"46094abe04c1acaf291e445e04283cd6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-3","gmt_create":"2026-04-21T16:26:14.4485709+04:00","gmt_modified":"2026-04-21T16:26:14.4485709+04:00"},{"id":29339,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"4c975236f257bd6b6687ea60cfc84a64","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#3-6","gmt_create":"2026-04-21T16:26:14.4490889+04:00","gmt_modified":"2026-04-21T16:26:14.4490889+04:00"},{"id":29340,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"4c975236f257bd6b6687ea60cfc84a64","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3-6","gmt_create":"2026-04-21T16:26:14.4490889+04:00","gmt_modified":"2026-04-21T16:26:14.4490889+04:00"},{"id":29341,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"3c9e25a94a6728f8cb52f2d99771b702","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat-parts.cpp#4-33","gmt_create":"2026-04-21T16:26:14.4501163+04:00","gmt_modified":"2026-04-21T16:26:14.4501163+04:00"},{"id":29342,"source_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","target_id":"3c9e25a94a6728f8cb52f2d99771b702","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4-33","gmt_create":"2026-04-21T16:26:14.4501163+04:00","gmt_modified":"2026-04-21T16:26:14.4501163+04:00"},{"id":29343,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"f5a3f2574d8fda749d7937a2ae0861d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#28-31","gmt_create":"2026-04-21T16:26:14.4501163+04:00","gmt_modified":"2026-04-21T16:26:14.4501163+04:00"},{"id":29344,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"f5a3f2574d8fda749d7937a2ae0861d0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28-31","gmt_create":"2026-04-21T16:26:14.4501163+04:00","gmt_modified":"2026-04-21T16:26:14.4501163+04:00"},{"id":29345,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"1778fb55304511509ff6a6843a113239","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#57-61","gmt_create":"2026-04-21T16:26:14.4506332+04:00","gmt_modified":"2026-04-21T16:26:14.4506332+04:00"},{"id":29346,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"1778fb55304511509ff6a6843a113239","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 57-61","gmt_create":"2026-04-21T16:26:14.4506332+04:00","gmt_modified":"2026-04-21T16:26:14.4506332+04:00"},{"id":29347,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"bb880145c71667714a9ba7f7c9985047","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#83-84","gmt_create":"2026-04-21T16:26:14.4506332+04:00","gmt_modified":"2026-04-21T16:26:14.4506332+04:00"},{"id":29348,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"bb880145c71667714a9ba7f7c9985047","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 83-84","gmt_create":"2026-04-21T16:26:14.4506332+04:00","gmt_modified":"2026-04-21T16:26:14.4506332+04:00"},{"id":29349,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"86184d9e91fba06e8c2dc6051c28e321","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#108-114","gmt_create":"2026-04-21T16:26:14.4511422+04:00","gmt_modified":"2026-04-21T16:26:14.4511422+04:00"},{"id":29350,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"86184d9e91fba06e8c2dc6051c28e321","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 108-114","gmt_create":"2026-04-21T16:26:14.4511422+04:00","gmt_modified":"2026-04-21T16:26:14.4511422+04:00"},{"id":29351,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"332469374bbfba511992be994037dcc0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#118-122","gmt_create":"2026-04-21T16:26:14.4511422+04:00","gmt_modified":"2026-04-21T16:26:14.4511422+04:00"},{"id":29352,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"332469374bbfba511992be994037dcc0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 118-122","gmt_create":"2026-04-21T16:26:14.4511422+04:00","gmt_modified":"2026-04-21T16:26:14.4511422+04:00"},{"id":29353,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7d6fbfbc03bef0db87e825d07ad80e15","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#71-72","gmt_create":"2026-04-21T16:26:14.4516595+04:00","gmt_modified":"2026-04-21T16:26:14.4516595+04:00"},{"id":29354,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"7d6fbfbc03bef0db87e825d07ad80e15","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 71-72","gmt_create":"2026-04-21T16:26:14.4516595+04:00","gmt_modified":"2026-04-21T16:26:14.4516595+04:00"},{"id":29355,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"7c0820ab6c0cbfbbea453df44ff0ef46","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat-parts.cpp#8-11","gmt_create":"2026-04-21T16:26:14.4516595+04:00","gmt_modified":"2026-04-21T16:26:14.4516595+04:00"},{"id":29356,"source_id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","target_id":"7c0820ab6c0cbfbbea453df44ff0ef46","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 8-11","gmt_create":"2026-04-21T16:26:14.4516595+04:00","gmt_modified":"2026-04-21T16:26:14.4516595+04:00"},{"id":29357,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ec71db05535b6e1ae68af2cf5252a5a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#29-36","gmt_create":"2026-04-21T16:26:14.4516595+04:00","gmt_modified":"2026-04-21T16:26:14.4516595+04:00"},{"id":29358,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"ec71db05535b6e1ae68af2cf5252a5a5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 29-36","gmt_create":"2026-04-21T16:26:14.4521774+04:00","gmt_modified":"2026-04-21T16:26:14.4521774+04:00"},{"id":29359,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"11c3ab42f87ad593d30a8495e2a45320","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/check_reflect.py#44-49","gmt_create":"2026-04-21T16:26:14.4521774+04:00","gmt_modified":"2026-04-21T16:26:14.4521774+04:00"},{"id":29360,"source_id":"7fda3f7c232a7832f681a3520b08a720","target_id":"11c3ab42f87ad593d30a8495e2a45320","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-49","gmt_create":"2026-04-21T16:26:14.4521774+04:00","gmt_modified":"2026-04-21T16:26:14.4521774+04:00"},{"id":29361,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"09af8e740fdcc8c7dae42e9ac9e17d65","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#236-244","gmt_create":"2026-04-21T16:26:14.4521774+04:00","gmt_modified":"2026-04-21T16:26:14.4521774+04:00"},{"id":29362,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"09af8e740fdcc8c7dae42e9ac9e17d65","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 236-244","gmt_create":"2026-04-21T16:26:14.4526863+04:00","gmt_modified":"2026-04-21T16:26:14.4526863+04:00"},{"id":29363,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ed2c4266ef25c8d6e9b3510a05ef6f71","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/pretty_schema.py#9-12","gmt_create":"2026-04-21T16:26:14.4526863+04:00","gmt_modified":"2026-04-21T16:26:14.4526863+04:00"},{"id":29364,"source_id":"800d3badf96efc4303cc647a1369a853","target_id":"ed2c4266ef25c8d6e9b3510a05ef6f71","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-12","gmt_create":"2026-04-21T16:26:14.4526863+04:00","gmt_modified":"2026-04-21T16:26:14.4526863+04:00"},{"id":29365,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ce0ca23f01a4d30056f4bcbf994e427e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#114-118","gmt_create":"2026-04-21T16:26:14.4526863+04:00","gmt_modified":"2026-04-21T16:26:14.4526863+04:00"},{"id":29366,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"ce0ca23f01a4d30056f4bcbf994e427e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 114-118","gmt_create":"2026-04-21T16:26:14.4532038+04:00","gmt_modified":"2026-04-21T16:26:14.4532038+04:00"},{"id":29367,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"816909e031b519b551290f0521f9321f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#8-9","gmt_create":"2026-04-21T16:26:14.4532038+04:00","gmt_modified":"2026-04-21T16:26:14.4532038+04:00"},{"id":29368,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"816909e031b519b551290f0521f9321f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 8-9","gmt_create":"2026-04-21T16:26:14.4532038+04:00","gmt_modified":"2026-04-21T16:26:14.4532038+04:00"},{"id":29369,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"41a93f3335897e107d22d2ffc52927b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#14-15","gmt_create":"2026-04-21T16:26:14.4532038+04:00","gmt_modified":"2026-04-21T16:26:14.4532038+04:00"},{"id":29370,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"41a93f3335897e107d22d2ffc52927b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-15","gmt_create":"2026-04-21T16:26:14.4537197+04:00","gmt_modified":"2026-04-21T16:26:14.4537197+04:00"},{"id":29371,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"10d8f723335a76124d40ae6230e7da2b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#204","gmt_create":"2026-04-21T16:26:14.4537197+04:00","gmt_modified":"2026-04-21T16:26:14.4537197+04:00"},{"id":29372,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"10d8f723335a76124d40ae6230e7da2b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 204","gmt_create":"2026-04-21T16:26:14.4537197+04:00","gmt_modified":"2026-04-21T16:26:14.4537197+04:00"},{"id":29373,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"9a56fcbd7bd281991732b44489c4679f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#12-13","gmt_create":"2026-04-21T16:26:14.4537197+04:00","gmt_modified":"2026-04-21T16:26:14.4537197+04:00"},{"id":29374,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"9a56fcbd7bd281991732b44489c4679f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-13","gmt_create":"2026-04-21T16:26:14.4537197+04:00","gmt_modified":"2026-04-21T16:26:14.4537197+04:00"},{"id":29375,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"5b06718dc93c911ef427db1fde5be29f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#349","gmt_create":"2026-04-21T16:26:14.4542366+04:00","gmt_modified":"2026-04-21T16:26:14.4542366+04:00"},{"id":29376,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"5b06718dc93c911ef427db1fde5be29f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 349","gmt_create":"2026-04-21T16:26:14.4542366+04:00","gmt_modified":"2026-04-21T16:26:14.4542366+04:00"},{"id":29377,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"2776ecb02a15a1e783d8e979cd17af99","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#28-69","gmt_create":"2026-04-21T16:26:14.4542366+04:00","gmt_modified":"2026-04-21T16:26:14.4542366+04:00"},{"id":29378,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"2776ecb02a15a1e783d8e979cd17af99","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28-69","gmt_create":"2026-04-21T16:26:14.4542366+04:00","gmt_modified":"2026-04-21T16:26:14.4542366+04:00"},{"id":29379,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"27d686a223b20f315161be7a3b6b3bb4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/check_reflect.py#153-160","gmt_create":"2026-04-21T16:26:14.4547493+04:00","gmt_modified":"2026-04-21T16:26:14.4547493+04:00"},{"id":29380,"source_id":"7fda3f7c232a7832f681a3520b08a720","target_id":"27d686a223b20f315161be7a3b6b3bb4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 153-160","gmt_create":"2026-04-21T16:26:14.4547493+04:00","gmt_modified":"2026-04-21T16:26:14.4547493+04:00"},{"id":29381,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"ee321576ac8ffc298a9590e16e109884","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/schema_test.cpp#44-56","gmt_create":"2026-04-21T16:26:14.4547493+04:00","gmt_modified":"2026-04-21T16:26:14.4547493+04:00"},{"id":29382,"source_id":"c075231eba29c3611900574409ccbced","target_id":"ee321576ac8ffc298a9590e16e109884","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-56","gmt_create":"2026-04-21T16:26:14.4547493+04:00","gmt_modified":"2026-04-21T16:26:14.4547493+04:00"},{"id":29383,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"915852c64270b0a1c08cb47508b276f6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/CMakeLists.txt#46-56","gmt_create":"2026-04-21T16:26:14.4552688+04:00","gmt_modified":"2026-04-21T16:26:14.4552688+04:00"},{"id":29384,"source_id":"23b7c8b22fbc863107446e05c12f4c29","target_id":"915852c64270b0a1c08cb47508b276f6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-56","gmt_create":"2026-04-21T16:26:14.4552688+04:00","gmt_modified":"2026-04-21T16:26:14.4552688+04:00"},{"id":29385,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"bc3fd12483f97978c22a14c1214c7904","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#189-220","gmt_create":"2026-04-21T16:26:14.4552688+04:00","gmt_modified":"2026-04-21T16:26:14.4552688+04:00"},{"id":29386,"source_id":"a0520874fa0a5f141c90a7ada0d15b38","target_id":"bc3fd12483f97978c22a14c1214c7904","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 189-220","gmt_create":"2026-04-21T16:26:14.4557847+04:00","gmt_modified":"2026-04-21T16:26:14.4557847+04:00"},{"id":29387,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"731eac041c57779eef0cfdb20b8c69e3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: README.md#7-10","gmt_create":"2026-04-21T16:26:14.4557847+04:00","gmt_modified":"2026-04-21T16:26:14.4557847+04:00"},{"id":29388,"source_id":"ea908bf3b792540b293380d2405df2a1","target_id":"731eac041c57779eef0cfdb20b8c69e3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 7-10","gmt_create":"2026-04-21T16:26:14.4557847+04:00","gmt_modified":"2026-04-21T16:26:14.4557847+04:00"},{"id":29389,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"dd1855dc01a32938e488bda567ebd1c9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.9269225+04:00","gmt_modified":"2026-04-21T16:26:53.9269225+04:00"},{"id":29390,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"70998edf5007397cb6d5221af3fcfc9d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.9269225+04:00","gmt_modified":"2026-04-21T16:26:53.9269225+04:00"},{"id":29391,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"b95d3d8ef24dffbe6103b10e2bf9c52c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.9269225+04:00","gmt_modified":"2026-04-21T16:26:53.9269225+04:00"},{"id":29392,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"b4847b0f295d10c3104cb10005cfb417","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.9269225+04:00","gmt_modified":"2026-04-21T16:26:53.9269225+04:00"},{"id":29393,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e7535080fab3d6b21a819e3eb9b2041b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.9279229+04:00","gmt_modified":"2026-04-21T16:26:53.9279229+04:00"},{"id":29394,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e4becafc97cfeff536e7154901ec07ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/configure_build.py","gmt_create":"2026-04-21T16:26:53.9279229+04:00","gmt_modified":"2026-04-21T16:26:53.9279229+04:00"},{"id":29395,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"7992eefc6bdde6d2490af6a01bbb9444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/build_helpers/cat_parts.py","gmt_create":"2026-04-21T16:26:53.9279229+04:00","gmt_modified":"2026-04-21T16:26:53.9279229+04:00"},{"id":29396,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"3dc1bfbaed7be58e42e79a2172bee9dd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/newplugin.py","gmt_create":"2026-04-21T16:26:53.9279229+04:00","gmt_modified":"2026-04-21T16:26:53.9279229+04:00"},{"id":29397,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"a0520874fa0a5f141c90a7ada0d15b38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/building.md","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29398,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"8262135b8e76bae157909e6fcfb29315","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-linux.sh","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29399,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"8e6a83084720b465212fd2eb7724dc21","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: install-deps-linux.sh","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29400,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e1487f08842fe68bc3a5c32aed8e8eca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-mac.sh","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29401,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"9cf639ed945c1a04288421e3b39dc33f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-mingw.bat","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29402,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"4124c90050cc8a14f7d7eaaefe2f6b21","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-msvc.bat","gmt_create":"2026-04-21T16:26:53.9289226+04:00","gmt_modified":"2026-04-21T16:26:53.9289226+04:00"},{"id":29403,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"7f4d98efd3657e17fbc58c9714bc89bb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-production","gmt_create":"2026-04-21T16:26:53.9299225+04:00","gmt_modified":"2026-04-21T16:26:53.9299225+04:00"},{"id":29404,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"951b5b7fafdfdaf1eca79d8067f3b25d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-04-21T16:26:53.9299225+04:00","gmt_modified":"2026-04-21T16:26:53.9299225+04:00"},{"id":29405,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"db2e7ab5c6a8e2b6df369ec9436ffa81","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-04-21T16:26:53.9299225+04:00","gmt_modified":"2026-04-21T16:26:53.9299225+04:00"},{"id":29406,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"2a1a6ffdba8673bc193473db23d59eac","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-04-21T16:26:53.9299225+04:00","gmt_modified":"2026-04-21T16:26:53.9299225+04:00"},{"id":29407,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"a37a8cd6659c40ddae05b63af21c8692","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/vizd.sh","gmt_create":"2026-04-21T16:26:53.9299225+04:00","gmt_modified":"2026-04-21T16:26:53.9299225+04:00"},{"id":29408,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"1106bfc01676ad81d488b96e2d569103","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#206-209","gmt_create":"2026-04-21T16:26:53.9309224+04:00","gmt_modified":"2026-04-21T16:26:53.9309224+04:00"},{"id":29409,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"1106bfc01676ad81d488b96e2d569103","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 206-209","gmt_create":"2026-04-21T16:26:53.9309224+04:00","gmt_modified":"2026-04-21T16:26:53.9309224+04:00"},{"id":29410,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"4211fc9687ec79ba37387e91a1ec19ab","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/CMakeLists.txt#1-3","gmt_create":"2026-04-21T16:26:53.9309224+04:00","gmt_modified":"2026-04-21T16:26:53.9309224+04:00"},{"id":29411,"source_id":"e7535080fab3d6b21a819e3eb9b2041b","target_id":"4211fc9687ec79ba37387e91a1ec19ab","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-3","gmt_create":"2026-04-21T16:26:53.9309224+04:00","gmt_modified":"2026-04-21T16:26:53.9309224+04:00"},{"id":29412,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"030a364fa15bdad5dfe4e058917230a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/CMakeLists.txt#1-8","gmt_create":"2026-04-21T16:26:53.9309224+04:00","gmt_modified":"2026-04-21T16:26:53.9309224+04:00"},{"id":29413,"source_id":"b95d3d8ef24dffbe6103b10e2bf9c52c","target_id":"030a364fa15bdad5dfe4e058917230a5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-21T16:26:53.9319227+04:00","gmt_modified":"2026-04-21T16:26:53.9319227+04:00"},{"id":29414,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"b90528e4a3f223adc9c5a100410e645d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/CMakeLists.txt#1-12","gmt_create":"2026-04-21T16:26:53.9319227+04:00","gmt_modified":"2026-04-21T16:26:53.9319227+04:00"},{"id":29415,"source_id":"b4847b0f295d10c3104cb10005cfb417","target_id":"b90528e4a3f223adc9c5a100410e645d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-12","gmt_create":"2026-04-21T16:26:53.9319227+04:00","gmt_modified":"2026-04-21T16:26:53.9319227+04:00"},{"id":29416,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"5021dc059b33c79e33a7347bdd3cf1fc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/CMakeLists.txt#1-8","gmt_create":"2026-04-21T16:26:53.9319227+04:00","gmt_modified":"2026-04-21T16:26:53.9319227+04:00"},{"id":29417,"source_id":"70998edf5007397cb6d5221af3fcfc9d","target_id":"5021dc059b33c79e33a7347bdd3cf1fc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-21T16:26:53.9319227+04:00","gmt_modified":"2026-04-21T16:26:53.9319227+04:00"},{"id":29418,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"51e5b540b780cb77a17287085d7621f9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#1-113","gmt_create":"2026-04-21T16:26:53.9329224+04:00","gmt_modified":"2026-04-21T16:26:53.9329224+04:00"},{"id":29419,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"9fd632e8659c7f32c281644c67acb734","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#1-191","gmt_create":"2026-04-21T16:26:53.9329224+04:00","gmt_modified":"2026-04-21T16:26:53.9329224+04:00"},{"id":29420,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e7c2a58f6ddf39d12b83f33ba6e80c3e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#1-242","gmt_create":"2026-04-21T16:26:53.9329224+04:00","gmt_modified":"2026-04-21T16:26:53.9329224+04:00"},{"id":29421,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"df1cccabdff62e4586fa6f8f43e25c72","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mingw.bat#1-125","gmt_create":"2026-04-21T16:26:53.9339227+04:00","gmt_modified":"2026-04-21T16:26:53.9339227+04:00"},{"id":29422,"source_id":"9cf639ed945c1a04288421e3b39dc33f","target_id":"df1cccabdff62e4586fa6f8f43e25c72","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-125","gmt_create":"2026-04-21T16:26:53.9339227+04:00","gmt_modified":"2026-04-21T16:26:53.9339227+04:00"},{"id":29423,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"f777a7de1bab7f5a82a3d5308dca8982","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-msvc.bat#1-116","gmt_create":"2026-04-21T16:26:53.9427092+04:00","gmt_modified":"2026-04-21T16:26:53.9427092+04:00"},{"id":29424,"source_id":"4124c90050cc8a14f7d7eaaefe2f6b21","target_id":"f777a7de1bab7f5a82a3d5308dca8982","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-116","gmt_create":"2026-04-21T16:26:53.9432125+04:00","gmt_modified":"2026-04-21T16:26:53.9432125+04:00"},{"id":29425,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"272d12071bd66c273a6e839fa8f9b1eb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#1-271","gmt_create":"2026-04-21T16:26:53.9432125+04:00","gmt_modified":"2026-04-21T16:26:53.9432125+04:00"},{"id":29426,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"272d12071bd66c273a6e839fa8f9b1eb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-271","gmt_create":"2026-04-21T16:26:53.9437322+04:00","gmt_modified":"2026-04-21T16:26:53.9437322+04:00"},{"id":29427,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"621bc84bf3f86ca533eb8eb91f62383f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#1-202","gmt_create":"2026-04-21T16:26:53.9447779+04:00","gmt_modified":"2026-04-21T16:26:53.9447779+04:00"},{"id":29428,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"a7f71b8eb346f6812e60139d849614c4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#1-74","gmt_create":"2026-04-21T16:26:53.9447779+04:00","gmt_modified":"2026-04-21T16:26:53.9447779+04:00"},{"id":29429,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"6eee2bca096c4f6719b5bf67577d4935","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#1-251","gmt_create":"2026-04-21T16:26:53.9452953+04:00","gmt_modified":"2026-04-21T16:26:53.9452953+04:00"},{"id":29430,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"f5a3f2574d8fda749d7937a2ae0861d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#28-31","gmt_create":"2026-04-21T16:26:53.9452953+04:00","gmt_modified":"2026-04-21T16:26:53.9452953+04:00"},{"id":29431,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"1778fb55304511509ff6a6843a113239","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#57-61","gmt_create":"2026-04-21T16:26:53.9458145+04:00","gmt_modified":"2026-04-21T16:26:53.9458145+04:00"},{"id":29432,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"6fb1a1d9a1f74f9b55379cb666d5a1b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#214-229","gmt_create":"2026-04-21T16:26:53.9458145+04:00","gmt_modified":"2026-04-21T16:26:53.9458145+04:00"},{"id":29433,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"6fb1a1d9a1f74f9b55379cb666d5a1b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 214-229","gmt_create":"2026-04-21T16:26:53.9458145+04:00","gmt_modified":"2026-04-21T16:26:53.9458145+04:00"},{"id":29434,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"fb720b9e6c89e1750efee187a1a045fa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#210-224","gmt_create":"2026-04-21T16:26:53.946331+04:00","gmt_modified":"2026-04-21T16:26:53.946331+04:00"},{"id":29435,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"fb720b9e6c89e1750efee187a1a045fa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 210-224","gmt_create":"2026-04-21T16:26:53.946331+04:00","gmt_modified":"2026-04-21T16:26:53.946331+04:00"},{"id":29436,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"00d5f1887685989f32b7f5ea0c27d174","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mingw.bat#90-111","gmt_create":"2026-04-21T16:26:53.946331+04:00","gmt_modified":"2026-04-21T16:26:53.946331+04:00"},{"id":29437,"source_id":"9cf639ed945c1a04288421e3b39dc33f","target_id":"00d5f1887685989f32b7f5ea0c27d174","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 90-111","gmt_create":"2026-04-21T16:26:53.946331+04:00","gmt_modified":"2026-04-21T16:26:53.946331+04:00"},{"id":29438,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"6b102bd6597e034827458e1f4b3932dd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-msvc.bat#82-102","gmt_create":"2026-04-21T16:26:53.946331+04:00","gmt_modified":"2026-04-21T16:26:53.946331+04:00"},{"id":29439,"source_id":"4124c90050cc8a14f7d7eaaefe2f6b21","target_id":"6b102bd6597e034827458e1f4b3932dd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 82-102","gmt_create":"2026-04-21T16:26:53.9468572+04:00","gmt_modified":"2026-04-21T16:26:53.9468572+04:00"},{"id":29440,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"0a808a782579d7d0491b236e2b45491f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#143-195","gmt_create":"2026-04-21T16:26:53.9468572+04:00","gmt_modified":"2026-04-21T16:26:53.9468572+04:00"},{"id":29441,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"0a808a782579d7d0491b236e2b45491f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 143-195","gmt_create":"2026-04-21T16:26:53.9468572+04:00","gmt_modified":"2026-04-21T16:26:53.9468572+04:00"},{"id":29442,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"565802f5a0e107f02639e8c60cab76ec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/cat_parts.py#11-69","gmt_create":"2026-04-21T16:26:53.9468572+04:00","gmt_modified":"2026-04-21T16:26:53.9468572+04:00"},{"id":29443,"source_id":"7992eefc6bdde6d2490af6a01bbb9444","target_id":"565802f5a0e107f02639e8c60cab76ec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-69","gmt_create":"2026-04-21T16:26:53.9468572+04:00","gmt_modified":"2026-04-21T16:26:53.9468572+04:00"},{"id":29444,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"859aec492420ac9d5fffdb068529170d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#225-246","gmt_create":"2026-04-21T16:26:53.9474576+04:00","gmt_modified":"2026-04-21T16:26:53.9474576+04:00"},{"id":29445,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"859aec492420ac9d5fffdb068529170d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 225-246","gmt_create":"2026-04-21T16:26:53.9474576+04:00","gmt_modified":"2026-04-21T16:26:53.9474576+04:00"},{"id":29446,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"15ecdcd571bbebbc7cbca8702d47016b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#2-3","gmt_create":"2026-04-21T16:26:53.9474576+04:00","gmt_modified":"2026-04-21T16:26:53.9474576+04:00"},{"id":29447,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"15ecdcd571bbebbc7cbca8702d47016b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2-3","gmt_create":"2026-04-21T16:26:53.9474576+04:00","gmt_modified":"2026-04-21T16:26:53.9474576+04:00"},{"id":29448,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"a0f124b1b6cd68e749cf261bb63ffc8a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#11-20","gmt_create":"2026-04-21T16:26:53.9474576+04:00","gmt_modified":"2026-04-21T16:26:53.9474576+04:00"},{"id":29449,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"a0f124b1b6cd68e749cf261bb63ffc8a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-20","gmt_create":"2026-04-21T16:26:53.9479605+04:00","gmt_modified":"2026-04-21T16:26:53.9479605+04:00"},{"id":29450,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"0c358ebc42c3826066a2d7bad2523510","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#38-49","gmt_create":"2026-04-21T16:26:53.9479605+04:00","gmt_modified":"2026-04-21T16:26:53.9479605+04:00"},{"id":29451,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"0c358ebc42c3826066a2d7bad2523510","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-49","gmt_create":"2026-04-21T16:26:53.9479605+04:00","gmt_modified":"2026-04-21T16:26:53.9479605+04:00"},{"id":29452,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"2ecf268427e950f08b4874415f0c961e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#51-53","gmt_create":"2026-04-21T16:26:53.9479605+04:00","gmt_modified":"2026-04-21T16:26:53.9479605+04:00"},{"id":29453,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"2ecf268427e950f08b4874415f0c961e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 51-53","gmt_create":"2026-04-21T16:26:53.9484736+04:00","gmt_modified":"2026-04-21T16:26:53.9484736+04:00"},{"id":29454,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"864f7d9894965f0bdd4a67a16204e75e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#55-80","gmt_create":"2026-04-21T16:26:53.9484736+04:00","gmt_modified":"2026-04-21T16:26:53.9484736+04:00"},{"id":29455,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"864f7d9894965f0bdd4a67a16204e75e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 55-80","gmt_create":"2026-04-21T16:26:53.9484736+04:00","gmt_modified":"2026-04-21T16:26:53.9484736+04:00"},{"id":29456,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"cc79203d75556f79e8e759004b96a35e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#82-88","gmt_create":"2026-04-21T16:26:53.9484736+04:00","gmt_modified":"2026-04-21T16:26:53.9484736+04:00"},{"id":29457,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"cc79203d75556f79e8e759004b96a35e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 82-88","gmt_create":"2026-04-21T16:26:53.9484736+04:00","gmt_modified":"2026-04-21T16:26:53.9484736+04:00"},{"id":29458,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"1b6b2303cf1e5dda2e5696b31e2e2fb2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#96-100","gmt_create":"2026-04-21T16:26:53.9489904+04:00","gmt_modified":"2026-04-21T16:26:53.9489904+04:00"},{"id":29459,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"1b6b2303cf1e5dda2e5696b31e2e2fb2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 96-100","gmt_create":"2026-04-21T16:26:53.9489904+04:00","gmt_modified":"2026-04-21T16:26:53.9489904+04:00"},{"id":29460,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"5484b10e47fb411ca14c80626cbf1939","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#108-152","gmt_create":"2026-04-21T16:26:53.9489904+04:00","gmt_modified":"2026-04-21T16:26:53.9489904+04:00"},{"id":29461,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"5484b10e47fb411ca14c80626cbf1939","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 108-152","gmt_create":"2026-04-21T16:26:53.9489904+04:00","gmt_modified":"2026-04-21T16:26:53.9489904+04:00"},{"id":29462,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"2072977dd111dcee094ab68f7fc24319","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#154-198","gmt_create":"2026-04-21T16:26:53.9489904+04:00","gmt_modified":"2026-04-21T16:26:53.9489904+04:00"},{"id":29463,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"2072977dd111dcee094ab68f7fc24319","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 154-198","gmt_create":"2026-04-21T16:26:53.9494996+04:00","gmt_modified":"2026-04-21T16:26:53.9494996+04:00"},{"id":29464,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"753c3def6d22983feeb34c79fc5f26fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#102-106","gmt_create":"2026-04-21T16:26:53.9500249+04:00","gmt_modified":"2026-04-21T16:26:53.9500249+04:00"},{"id":29465,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"753c3def6d22983feeb34c79fc5f26fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 102-106","gmt_create":"2026-04-21T16:26:53.9500249+04:00","gmt_modified":"2026-04-21T16:26:53.9500249+04:00"},{"id":29466,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e0da045e5ea1924832fe01959f39d116","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#156-160","gmt_create":"2026-04-21T16:26:53.9505342+04:00","gmt_modified":"2026-04-21T16:26:53.9505342+04:00"},{"id":29467,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"e0da045e5ea1924832fe01959f39d116","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 156-160","gmt_create":"2026-04-21T16:26:53.9505342+04:00","gmt_modified":"2026-04-21T16:26:53.9505342+04:00"},{"id":29468,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"7dd195ba88e3888ca888a88b95a44895","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#172-176","gmt_create":"2026-04-21T16:26:53.9505342+04:00","gmt_modified":"2026-04-21T16:26:53.9505342+04:00"},{"id":29469,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"7dd195ba88e3888ca888a88b95a44895","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 172-176","gmt_create":"2026-04-21T16:26:53.9510451+04:00","gmt_modified":"2026-04-21T16:26:53.9510451+04:00"},{"id":29470,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"958bc51b018d064fbbdc25278080009d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#35-119","gmt_create":"2026-04-21T16:26:53.9510451+04:00","gmt_modified":"2026-04-21T16:26:53.9510451+04:00"},{"id":29471,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"958bc51b018d064fbbdc25278080009d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-119","gmt_create":"2026-04-21T16:26:53.9515582+04:00","gmt_modified":"2026-04-21T16:26:53.9515582+04:00"},{"id":29472,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"528109d1930fd62df86f542054926a26","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#1-102","gmt_create":"2026-04-21T16:26:53.9520729+04:00","gmt_modified":"2026-04-21T16:26:53.9520729+04:00"},{"id":29473,"source_id":"7f4d98efd3657e17fbc58c9714bc89bb","target_id":"528109d1930fd62df86f542054926a26","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-102","gmt_create":"2026-04-21T16:26:53.9520729+04:00","gmt_modified":"2026-04-21T16:26:53.9520729+04:00"},{"id":29474,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"262f645221c0965d812b555f22bf539f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#1-85","gmt_create":"2026-04-21T16:26:53.9520729+04:00","gmt_modified":"2026-04-21T16:26:53.9520729+04:00"},{"id":29475,"source_id":"951b5b7fafdfdaf1eca79d8067f3b25d","target_id":"262f645221c0965d812b555f22bf539f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-85","gmt_create":"2026-04-21T16:26:53.9525826+04:00","gmt_modified":"2026-04-21T16:26:53.9525826+04:00"},{"id":29476,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"f38ad26c7e1face7c2d2fad5a9e3187d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-mongo#1-114","gmt_create":"2026-04-21T16:26:53.9525826+04:00","gmt_modified":"2026-04-21T16:26:53.9525826+04:00"},{"id":29477,"source_id":"db2e7ab5c6a8e2b6df369ec9436ffa81","target_id":"f38ad26c7e1face7c2d2fad5a9e3187d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-114","gmt_create":"2026-04-21T16:26:53.9525826+04:00","gmt_modified":"2026-04-21T16:26:53.9525826+04:00"},{"id":29478,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"19cb0523b9a6f112f678c8911e59e1fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#1-102","gmt_create":"2026-04-21T16:26:53.9525826+04:00","gmt_modified":"2026-04-21T16:26:53.9525826+04:00"},{"id":29479,"source_id":"2a1a6ffdba8673bc193473db23d59eac","target_id":"19cb0523b9a6f112f678c8911e59e1fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-102","gmt_create":"2026-04-21T16:26:53.9530961+04:00","gmt_modified":"2026-04-21T16:26:53.9530961+04:00"},{"id":29480,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"fa0ca8df86b3f81960903c65c86bde4f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#56-62","gmt_create":"2026-04-21T16:26:53.9530961+04:00","gmt_modified":"2026-04-21T16:26:53.9530961+04:00"},{"id":29481,"source_id":"7f4d98efd3657e17fbc58c9714bc89bb","target_id":"fa0ca8df86b3f81960903c65c86bde4f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 56-62","gmt_create":"2026-04-21T16:26:53.9530961+04:00","gmt_modified":"2026-04-21T16:26:53.9530961+04:00"},{"id":29482,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"b32b79c58b325a4f0274d6fd36d53f0f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#43-49","gmt_create":"2026-04-21T16:26:53.9530961+04:00","gmt_modified":"2026-04-21T16:26:53.9530961+04:00"},{"id":29483,"source_id":"951b5b7fafdfdaf1eca79d8067f3b25d","target_id":"b32b79c58b325a4f0274d6fd36d53f0f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 43-49","gmt_create":"2026-04-21T16:26:53.9536122+04:00","gmt_modified":"2026-04-21T16:26:53.9536122+04:00"},{"id":29484,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"85e469b4cf001a6e80ad6fad81dc00ba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-mongo#72-78","gmt_create":"2026-04-21T16:26:53.9536122+04:00","gmt_modified":"2026-04-21T16:26:53.9536122+04:00"},{"id":29485,"source_id":"db2e7ab5c6a8e2b6df369ec9436ffa81","target_id":"85e469b4cf001a6e80ad6fad81dc00ba","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 72-78","gmt_create":"2026-04-21T16:26:53.9536122+04:00","gmt_modified":"2026-04-21T16:26:53.9536122+04:00"},{"id":29486,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"ac6949ec803fc4885c6153eac96ab9c9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#56-62","gmt_create":"2026-04-21T16:26:53.9536122+04:00","gmt_modified":"2026-04-21T16:26:53.9536122+04:00"},{"id":29487,"source_id":"2a1a6ffdba8673bc193473db23d59eac","target_id":"ac6949ec803fc4885c6153eac96ab9c9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 56-62","gmt_create":"2026-04-21T16:26:53.9541236+04:00","gmt_modified":"2026-04-21T16:26:53.9541236+04:00"},{"id":29488,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"8e242ae9fb98997b4bb2f550e53ea193","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#98-106","gmt_create":"2026-04-21T16:26:53.9551661+04:00","gmt_modified":"2026-04-21T16:26:53.9551661+04:00"},{"id":29489,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"8e242ae9fb98997b4bb2f550e53ea193","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 98-106","gmt_create":"2026-04-21T16:26:53.9551661+04:00","gmt_modified":"2026-04-21T16:26:53.9551661+04:00"},{"id":29490,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"cd1962e18426ac5153531c526c11523a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#107-178","gmt_create":"2026-04-21T16:26:53.9556794+04:00","gmt_modified":"2026-04-21T16:26:53.9556794+04:00"},{"id":29491,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"cd1962e18426ac5153531c526c11523a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 107-178","gmt_create":"2026-04-21T16:26:53.9556794+04:00","gmt_modified":"2026-04-21T16:26:53.9556794+04:00"},{"id":29492,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"19a1e249e7d4884f21cb5f076c76a235","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#125-171","gmt_create":"2026-04-21T16:26:53.9556794+04:00","gmt_modified":"2026-04-21T16:26:53.9556794+04:00"},{"id":29493,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"19a1e249e7d4884f21cb5f076c76a235","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 125-171","gmt_create":"2026-04-21T16:26:53.9556794+04:00","gmt_modified":"2026-04-21T16:26:53.9556794+04:00"},{"id":29494,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"d3a3509b87b163533a17748988f6b860","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mingw.bat#32-56","gmt_create":"2026-04-21T16:26:53.9561914+04:00","gmt_modified":"2026-04-21T16:26:53.9561914+04:00"},{"id":29495,"source_id":"9cf639ed945c1a04288421e3b39dc33f","target_id":"d3a3509b87b163533a17748988f6b860","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-56","gmt_create":"2026-04-21T16:26:53.9561914+04:00","gmt_modified":"2026-04-21T16:26:53.9561914+04:00"},{"id":29496,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"645ba8b8c07deba73e93751cb698bf11","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-msvc.bat#32-56","gmt_create":"2026-04-21T16:26:53.9561914+04:00","gmt_modified":"2026-04-21T16:26:53.9561914+04:00"},{"id":29497,"source_id":"4124c90050cc8a14f7d7eaaefe2f6b21","target_id":"645ba8b8c07deba73e93751cb698bf11","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-56","gmt_create":"2026-04-21T16:26:53.9561914+04:00","gmt_modified":"2026-04-21T16:26:53.9561914+04:00"},{"id":29498,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"5430c8f099db45f163a9d10b60ebbca1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#144-152","gmt_create":"2026-04-21T16:26:53.9572138+04:00","gmt_modified":"2026-04-21T16:26:53.9572138+04:00"},{"id":29499,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"5430c8f099db45f163a9d10b60ebbca1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 144-152","gmt_create":"2026-04-21T16:26:53.9572138+04:00","gmt_modified":"2026-04-21T16:26:53.9572138+04:00"},{"id":29500,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"2db270ba42ae42bab294590367a2e35f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#176-183","gmt_create":"2026-04-21T16:26:53.9572138+04:00","gmt_modified":"2026-04-21T16:26:53.9572138+04:00"},{"id":29501,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"2db270ba42ae42bab294590367a2e35f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 176-183","gmt_create":"2026-04-21T16:26:53.9572138+04:00","gmt_modified":"2026-04-21T16:26:53.9572138+04:00"},{"id":29502,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"f9cd5f0f7d8ded72b22208172ac8112f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#65-73","gmt_create":"2026-04-21T16:26:53.9578369+04:00","gmt_modified":"2026-04-21T16:26:53.9578369+04:00"},{"id":29503,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"f9cd5f0f7d8ded72b22208172ac8112f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 65-73","gmt_create":"2026-04-21T16:26:53.9578369+04:00","gmt_modified":"2026-04-21T16:26:53.9578369+04:00"},{"id":29504,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"e222d4def77d92a302cd44ea5af4a61e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#75-80","gmt_create":"2026-04-21T16:26:53.9578369+04:00","gmt_modified":"2026-04-21T16:26:53.9578369+04:00"},{"id":29505,"source_id":"dd1855dc01a32938e488bda567ebd1c9","target_id":"e222d4def77d92a302cd44ea5af4a61e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 75-80","gmt_create":"2026-04-21T16:26:53.9583397+04:00","gmt_modified":"2026-04-21T16:26:53.9583397+04:00"},{"id":29506,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"ab2e3fc89cca8674222b5dfae8b030b4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#109-112","gmt_create":"2026-04-21T16:26:53.9583397+04:00","gmt_modified":"2026-04-21T16:26:53.9583397+04:00"},{"id":29507,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"ab2e3fc89cca8674222b5dfae8b030b4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 109-112","gmt_create":"2026-04-21T16:26:53.9588576+04:00","gmt_modified":"2026-04-21T16:26:53.9588576+04:00"},{"id":29508,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"1e7306c18e6575c49ee258dd129e80cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#102-115","gmt_create":"2026-04-21T16:26:53.9588576+04:00","gmt_modified":"2026-04-21T16:26:53.9588576+04:00"},{"id":29509,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"1e7306c18e6575c49ee258dd129e80cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 102-115","gmt_create":"2026-04-21T16:26:53.9593732+04:00","gmt_modified":"2026-04-21T16:26:53.9593732+04:00"},{"id":29510,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"32ae4eca94ada54eb757a1eba1d23c49","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#189-191","gmt_create":"2026-04-21T16:26:53.9593732+04:00","gmt_modified":"2026-04-21T16:26:53.9593732+04:00"},{"id":29511,"source_id":"8262135b8e76bae157909e6fcfb29315","target_id":"32ae4eca94ada54eb757a1eba1d23c49","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 189-191","gmt_create":"2026-04-21T16:26:53.9598867+04:00","gmt_modified":"2026-04-21T16:26:53.9598867+04:00"},{"id":29512,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"10c0591de2608d10413b8cc36d50eff7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#166-171","gmt_create":"2026-04-21T16:26:53.9598867+04:00","gmt_modified":"2026-04-21T16:26:53.9598867+04:00"},{"id":29513,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"10c0591de2608d10413b8cc36d50eff7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 166-171","gmt_create":"2026-04-21T16:26:53.9598867+04:00","gmt_modified":"2026-04-21T16:26:53.9598867+04:00"},{"id":29514,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"c2819e84fd47fd5ea97a62d8f3440f10","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: install-deps-linux.sh#108-113","gmt_create":"2026-04-21T16:26:53.9603951+04:00","gmt_modified":"2026-04-21T16:26:53.9603951+04:00"},{"id":29515,"source_id":"8e6a83084720b465212fd2eb7724dc21","target_id":"c2819e84fd47fd5ea97a62d8f3440f10","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 108-113","gmt_create":"2026-04-21T16:26:53.9603951+04:00","gmt_modified":"2026-04-21T16:26:53.9603951+04:00"},{"id":29516,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"54c71cb376c0ba46ca343d6999f58540","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#330-351","gmt_create":"2026-04-21T16:26:53.9609145+04:00","gmt_modified":"2026-04-21T16:26:53.9609145+04:00"},{"id":29517,"source_id":"e1487f08842fe68bc3a5c32aed8e8eca","target_id":"54c71cb376c0ba46ca343d6999f58540","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 330-351","gmt_create":"2026-04-21T16:26:53.9609145+04:00","gmt_modified":"2026-04-21T16:26:53.9609145+04:00"},{"id":29518,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"4094040cff52b86ee4afa7253b2f5ffd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mingw.bat#12-22","gmt_create":"2026-04-21T16:26:53.9609145+04:00","gmt_modified":"2026-04-21T16:26:53.9609145+04:00"},{"id":29519,"source_id":"9cf639ed945c1a04288421e3b39dc33f","target_id":"4094040cff52b86ee4afa7253b2f5ffd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-22","gmt_create":"2026-04-21T16:26:53.9614223+04:00","gmt_modified":"2026-04-21T16:26:53.9614223+04:00"},{"id":29520,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"f051815e1cfbbe8b6d7d0905e012c596","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-msvc.bat#12-22","gmt_create":"2026-04-21T16:26:53.9614223+04:00","gmt_modified":"2026-04-21T16:26:53.9614223+04:00"},{"id":29521,"source_id":"4124c90050cc8a14f7d7eaaefe2f6b21","target_id":"f051815e1cfbbe8b6d7d0905e012c596","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-22","gmt_create":"2026-04-21T16:26:53.9614223+04:00","gmt_modified":"2026-04-21T16:26:53.9614223+04:00"},{"id":29522,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"94fdff1d47b8566b84a47928c2fb7d29","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/build_helpers/configure_build.py#168-184","gmt_create":"2026-04-21T16:26:53.9619336+04:00","gmt_modified":"2026-04-21T16:26:53.9619336+04:00"},{"id":29523,"source_id":"e4becafc97cfeff536e7154901ec07ea","target_id":"94fdff1d47b8566b84a47928c2fb7d29","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 168-184","gmt_create":"2026-04-21T16:26:53.9619336+04:00","gmt_modified":"2026-04-21T16:26:53.9619336+04:00"},{"id":29524,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"33254d89526bb4de9bd007c10bbcc83d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/include/fc/network/ntp.hpp","gmt_create":"2026-04-21T16:27:59.8453519+04:00","gmt_modified":"2026-04-21T16:27:59.8453519+04:00"},{"id":29525,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"a93ec3969f83e2cabbaff850ac40053c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/network/ntp.cpp","gmt_create":"2026-04-21T16:27:59.8453519+04:00","gmt_modified":"2026-04-21T16:27:59.8453519+04:00"},{"id":29526,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"92d3a25396f4c53eeaadc4bfc4e55eba","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/time/include/graphene/time/time.hpp","gmt_create":"2026-04-21T16:27:59.8466783+04:00","gmt_modified":"2026-04-21T16:27:59.8466783+04:00"},{"id":29527,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"13145676905a5071d9655152f5d44a93","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/time/time.cpp","gmt_create":"2026-04-21T16:27:59.847181+04:00","gmt_modified":"2026-04-21T16:27:59.847181+04:00"},{"id":29528,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"6fbf010286f4a6a3f06e8088c9988689","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/vizd/main.cpp","gmt_create":"2026-04-21T16:27:59.847181+04:00","gmt_modified":"2026-04-21T16:27:59.847181+04:00"},{"id":29529,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"8b5d262f61ba216b58b2e3c37eca49a3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/tests/network/ntp_test.cpp","gmt_create":"2026-04-21T16:27:59.8477052+04:00","gmt_modified":"2026-04-21T16:27:59.8477052+04:00"},{"id":29530,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"60d499d475104d27ca84470eedeadbab","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-21T16:27:59.8603051+04:00","gmt_modified":"2026-04-21T16:27:59.8603051+04:00"},{"id":29531,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"fdf22186e23f342d8011169094b92f76","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#108-142","gmt_create":"2026-04-21T16:27:59.8608081+04:00","gmt_modified":"2026-04-21T16:27:59.8608081+04:00"},{"id":29532,"source_id":"6fbf010286f4a6a3f06e8088c9988689","target_id":"fdf22186e23f342d8011169094b92f76","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 108-142","gmt_create":"2026-04-21T16:27:59.8613271+04:00","gmt_modified":"2026-04-21T16:27:59.8613271+04:00"},{"id":29533,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"7fd94c2e5035791fc11afdf57071a54e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/time.cpp#53-79","gmt_create":"2026-04-21T16:27:59.8613271+04:00","gmt_modified":"2026-04-21T16:27:59.8613271+04:00"},{"id":29534,"source_id":"13145676905a5071d9655152f5d44a93","target_id":"7fd94c2e5035791fc11afdf57071a54e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-79","gmt_create":"2026-04-21T16:27:59.8618517+04:00","gmt_modified":"2026-04-21T16:27:59.8618517+04:00"},{"id":29535,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"4abeaa04ed380a023596a9003ae3f962","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ntp.cpp#19-61","gmt_create":"2026-04-21T16:27:59.8623732+04:00","gmt_modified":"2026-04-21T16:27:59.8623732+04:00"},{"id":29536,"source_id":"a93ec3969f83e2cabbaff850ac40053c","target_id":"4abeaa04ed380a023596a9003ae3f962","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 19-61","gmt_create":"2026-04-21T16:27:59.8628919+04:00","gmt_modified":"2026-04-21T16:27:59.8628919+04:00"},{"id":29537,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"ebed86c9424e50437f242d4d4ca4428f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/include/fc/network/ntp.hpp#17-52","gmt_create":"2026-04-21T16:27:59.863159+04:00","gmt_modified":"2026-04-21T16:27:59.863159+04:00"},{"id":29538,"source_id":"33254d89526bb4de9bd007c10bbcc83d","target_id":"ebed86c9424e50437f242d4d4ca4428f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-52","gmt_create":"2026-04-21T16:27:59.8636618+04:00","gmt_modified":"2026-04-21T16:27:59.8636618+04:00"},{"id":29539,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"7af855607c7b44dcc16935e2748bdfa8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/include/graphene/time/time.hpp#17-61","gmt_create":"2026-04-21T16:27:59.8641814+04:00","gmt_modified":"2026-04-21T16:27:59.8641814+04:00"},{"id":29540,"source_id":"92d3a25396f4c53eeaadc4bfc4e55eba","target_id":"7af855607c7b44dcc16935e2748bdfa8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-61","gmt_create":"2026-04-21T16:27:59.8641814+04:00","gmt_modified":"2026-04-21T16:27:59.8641814+04:00"},{"id":29541,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"32db04a0b31a57f872fe1b46840fedd8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/time.cpp#19-51","gmt_create":"2026-04-21T16:27:59.8652765+04:00","gmt_modified":"2026-04-21T16:27:59.8652765+04:00"},{"id":29542,"source_id":"13145676905a5071d9655152f5d44a93","target_id":"32db04a0b31a57f872fe1b46840fedd8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 19-51","gmt_create":"2026-04-21T16:27:59.8652765+04:00","gmt_modified":"2026-04-21T16:27:59.8652765+04:00"},{"id":29543,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"15389602b783c9e9bf11ad601dd995a2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ntp.cpp#176-236","gmt_create":"2026-04-21T16:27:59.865779+04:00","gmt_modified":"2026-04-21T16:27:59.865779+04:00"},{"id":29544,"source_id":"a93ec3969f83e2cabbaff850ac40053c","target_id":"15389602b783c9e9bf11ad601dd995a2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 176-236","gmt_create":"2026-04-21T16:27:59.865779+04:00","gmt_modified":"2026-04-21T16:27:59.865779+04:00"},{"id":29545,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"ca576d0386d226ebb86a8ebbead8203e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ntp.cpp#43-57","gmt_create":"2026-04-21T16:27:59.865779+04:00","gmt_modified":"2026-04-21T16:27:59.865779+04:00"},{"id":29546,"source_id":"a93ec3969f83e2cabbaff850ac40053c","target_id":"ca576d0386d226ebb86a8ebbead8203e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 43-57","gmt_create":"2026-04-21T16:27:59.865779+04:00","gmt_modified":"2026-04-21T16:27:59.865779+04:00"},{"id":29547,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"3c10ad8f5bba703a75a912fc6ddb0bcd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/time.cpp#27-50","gmt_create":"2026-04-21T16:27:59.8667817+04:00","gmt_modified":"2026-04-21T16:27:59.8667817+04:00"},{"id":29548,"source_id":"13145676905a5071d9655152f5d44a93","target_id":"3c10ad8f5bba703a75a912fc6ddb0bcd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-50","gmt_create":"2026-04-21T16:27:59.8667817+04:00","gmt_modified":"2026-04-21T16:27:59.8667817+04:00"},{"id":29549,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"b5a27a63923dc7aab2f7f521e08ca66b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/time.cpp#29-57","gmt_create":"2026-04-21T16:27:59.8673289+04:00","gmt_modified":"2026-04-21T16:27:59.8673289+04:00"},{"id":29550,"source_id":"13145676905a5071d9655152f5d44a93","target_id":"b5a27a63923dc7aab2f7f521e08ca66b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 29-57","gmt_create":"2026-04-21T16:27:59.8673289+04:00","gmt_modified":"2026-04-21T16:27:59.8673289+04:00"},{"id":29551,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"1784c203168b747e1b7560119aa281f4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/time.cpp#134-137","gmt_create":"2026-04-21T16:27:59.8673289+04:00","gmt_modified":"2026-04-21T16:27:59.8673289+04:00"},{"id":29552,"source_id":"13145676905a5071d9655152f5d44a93","target_id":"1784c203168b747e1b7560119aa281f4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 134-137","gmt_create":"2026-04-21T16:27:59.8680512+04:00","gmt_modified":"2026-04-21T16:27:59.8680512+04:00"},{"id":29553,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T16:27:59.868554+04:00","gmt_modified":"2026-04-21T16:27:59.868554+04:00"},{"id":29554,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"d7c4269b63f0052713c58ca33d4d73ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#158-161","gmt_create":"2026-04-21T16:27:59.869076+04:00","gmt_modified":"2026-04-21T16:27:59.869076+04:00"},{"id":29555,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"d7c4269b63f0052713c58ca33d4d73ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 158-161","gmt_create":"2026-04-21T16:27:59.869076+04:00","gmt_modified":"2026-04-21T16:27:59.869076+04:00"},{"id":29556,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"3ceafea0ac64b1565f76f15a24468e25","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/time/include/graphene/time/time.hpp#17-40","gmt_create":"2026-04-21T16:27:59.870121+04:00","gmt_modified":"2026-04-21T16:27:59.870121+04:00"},{"id":29557,"source_id":"92d3a25396f4c53eeaadc4bfc4e55eba","target_id":"3ceafea0ac64b1565f76f15a24468e25","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-40","gmt_create":"2026-04-21T16:27:59.870121+04:00","gmt_modified":"2026-04-21T16:27:59.870121+04:00"},{"id":29558,"source_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","target_id":"ede9523ef9d1a1af20e63e650f23330e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/tests/network/ntp_test.cpp#9-28","gmt_create":"2026-04-21T16:27:59.8706456+04:00","gmt_modified":"2026-04-21T16:27:59.8706456+04:00"},{"id":29559,"source_id":"8b5d262f61ba216b58b2e3c37eca49a3","target_id":"ede9523ef9d1a1af20e63e650f23330e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-28","gmt_create":"2026-04-21T16:27:59.8711762+04:00","gmt_modified":"2026-04-21T16:27:59.8711762+04:00"},{"id":29560,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"b70b275b872bbc6ecd1c4312dea1f126","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-21T16:30:41.1770674+04:00","gmt_modified":"2026-04-21T16:30:41.1770674+04:00"},{"id":29561,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"93d2279380057f5ff7bb0ec4d574b04a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-21T16:30:41.1770674+04:00","gmt_modified":"2026-04-21T16:30:41.1770674+04:00"},{"id":29562,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"bd9a9323b695ba6f4ee219c6ac05d65b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-21T16:30:41.1776206+04:00","gmt_modified":"2026-04-21T16:30:41.1776206+04:00"},{"id":29563,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"509c1750918b17167d058b5f1528df2e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.cpp","gmt_create":"2026-04-21T16:30:41.1776206+04:00","gmt_modified":"2026-04-21T16:30:41.1776206+04:00"},{"id":29564,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"d952eb3122d64a10b5a53c11fa123b9d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/core_messages.hpp","gmt_create":"2026-04-21T16:30:41.1776206+04:00","gmt_modified":"2026-04-21T16:30:41.1776206+04:00"},{"id":29565,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"153af24462ad511fd6565de7789689cd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/core_messages.cpp","gmt_create":"2026-04-21T16:30:41.1781942+04:00","gmt_modified":"2026-04-21T16:30:41.1781942+04:00"},{"id":29566,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"34e5909c35ad9d055be9727b3a207c55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/stcp_socket.hpp","gmt_create":"2026-04-21T16:30:41.1781942+04:00","gmt_modified":"2026-04-21T16:30:41.1781942+04:00"},{"id":29567,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"51762eb7a9db71fd1b93f196bac889de","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/stcp_socket.cpp","gmt_create":"2026-04-21T16:30:41.1781942+04:00","gmt_modified":"2026-04-21T16:30:41.1781942+04:00"},{"id":29568,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"c1a4d9d9d4f732c65e6ae1b5310f515f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-21T16:30:41.1781942+04:00","gmt_modified":"2026-04-21T16:30:41.1781942+04:00"},{"id":29569,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"930618aeb9ee3ba20d1a8b6680be0169","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_database.cpp","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29570,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"52f5e880c05c0b3e52e994a389aba5e4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29571,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ab664a3a8e43d25e578a4db7198b64ef","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message_oriented_connection.hpp","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29572,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29573,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29574,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"4c9808b45cc8214948247f9c028c449e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#190-304","gmt_create":"2026-04-21T16:30:41.1786967+04:00","gmt_modified":"2026-04-21T16:30:41.1786967+04:00"},{"id":29575,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"f3e64d0f15916610b56b4984629897eb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#79-351","gmt_create":"2026-04-21T16:30:41.1797797+04:00","gmt_modified":"2026-04-21T16:30:41.1797797+04:00"},{"id":29576,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"bd53d927e426e2adc3ba3e67de570e14","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-106","gmt_create":"2026-04-21T16:30:41.1797797+04:00","gmt_modified":"2026-04-21T16:30:41.1797797+04:00"},{"id":29577,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"73e0e7e26abf65a9313e01fa4e09dfca","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#72-573","gmt_create":"2026-04-21T16:30:41.1805298+04:00","gmt_modified":"2026-04-21T16:30:41.1805298+04:00"},{"id":29578,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"51e8273797f43b8343be1a56f19fb908","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#37-93","gmt_create":"2026-04-21T16:30:41.1810328+04:00","gmt_modified":"2026-04-21T16:30:41.1810328+04:00"},{"id":29579,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"8b81dbeb1bee070a8dcee7ebdf5ee115","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#104-134","gmt_create":"2026-04-21T16:30:41.1810328+04:00","gmt_modified":"2026-04-21T16:30:41.1810328+04:00"},{"id":29580,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"e1d125a8c8480d30e5a2c6c4892aabbc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#45-79","gmt_create":"2026-04-21T16:30:41.1810328+04:00","gmt_modified":"2026-04-21T16:30:41.1810328+04:00"},{"id":29581,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"2e10237dfe812b2703942b296f4ccd5a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#26-106","gmt_create":"2026-04-21T16:30:41.1820358+04:00","gmt_modified":"2026-04-21T16:30:41.1820358+04:00"},{"id":29582,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"33dbfa2427785b91ec6345c1b38493f3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#500-560","gmt_create":"2026-04-21T16:30:41.1820358+04:00","gmt_modified":"2026-04-21T16:30:41.1820358+04:00"},{"id":29583,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"33dbfa2427785b91ec6345c1b38493f3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 500-560","gmt_create":"2026-04-21T16:30:41.1820358+04:00","gmt_modified":"2026-04-21T16:30:41.1820358+04:00"},{"id":29584,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ef38e28fe50f9c7ca231d642c3466329","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#1-355","gmt_create":"2026-04-21T16:30:41.1820358+04:00","gmt_modified":"2026-04-21T16:30:41.1820358+04:00"},{"id":29585,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"94a21f01af8f906ea628560bd3a4c163","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#1-383","gmt_create":"2026-04-21T16:30:41.1830355+04:00","gmt_modified":"2026-04-21T16:30:41.1830355+04:00"},{"id":29586,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"2bfc000edc3254405fc76c016ce54bc5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#1-573","gmt_create":"2026-04-21T16:30:41.1830355+04:00","gmt_modified":"2026-04-21T16:30:41.1830355+04:00"},{"id":29587,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"642441460b648f34dc507aa5fa5722e6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#1-99","gmt_create":"2026-04-21T16:30:41.1830355+04:00","gmt_modified":"2026-04-21T16:30:41.1830355+04:00"},{"id":29588,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"e4d612794fd6c5cbd0dc716c92d3480b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#1-141","gmt_create":"2026-04-21T16:30:41.1830355+04:00","gmt_modified":"2026-04-21T16:30:41.1830355+04:00"},{"id":29589,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"154cd3cd3425e81e25e006bb710aef58","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#1-114","gmt_create":"2026-04-21T16:30:41.1840357+04:00","gmt_modified":"2026-04-21T16:30:41.1840357+04:00"},{"id":29590,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"86453e8b58e697e5fd190c8a61937802","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#1-85","gmt_create":"2026-04-21T16:30:41.1840357+04:00","gmt_modified":"2026-04-21T16:30:41.1840357+04:00"},{"id":29591,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"39d7a939d31b3c894ef58a3051855c99","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#1-106","gmt_create":"2026-04-21T16:30:41.1840357+04:00","gmt_modified":"2026-04-21T16:30:41.1840357+04:00"},{"id":29592,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"87cd303182e872deaed0168d99d63bfe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#1-742","gmt_create":"2026-04-21T16:30:41.1840357+04:00","gmt_modified":"2026-04-21T16:30:41.1840357+04:00"},{"id":29593,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"87cd303182e872deaed0168d99d63bfe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-742","gmt_create":"2026-04-21T16:30:41.1850357+04:00","gmt_modified":"2026-04-21T16:30:41.1850357+04:00"},{"id":29594,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"9a04e26ab83b6cd6497006db9e99b1e0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#182-304","gmt_create":"2026-04-21T16:30:41.1850357+04:00","gmt_modified":"2026-04-21T16:30:41.1850357+04:00"},{"id":29595,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"7a227c19adaff4de6610f94bf4e96ad7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#780-790","gmt_create":"2026-04-21T16:30:41.186644+04:00","gmt_modified":"2026-04-21T16:30:41.186644+04:00"},{"id":29596,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"28741bf9645e08261adc7734c70b8361","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#208-242","gmt_create":"2026-04-21T16:30:41.186716+04:00","gmt_modified":"2026-04-21T16:30:41.186716+04:00"},{"id":29597,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"134b1ec357374c1e4de9f1f9dd5a4497","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#69-72","gmt_create":"2026-04-21T16:30:41.1872184+04:00","gmt_modified":"2026-04-21T16:30:41.1872184+04:00"},{"id":29598,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"56976108609a53bc4588a840285eb1cd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#424-799","gmt_create":"2026-04-21T16:30:41.1872184+04:00","gmt_modified":"2026-04-21T16:30:41.1872184+04:00"},{"id":29599,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"3c503dce774e20257775c00826d8f5cb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#82-106","gmt_create":"2026-04-21T16:30:41.188221+04:00","gmt_modified":"2026-04-21T16:30:41.188221+04:00"},{"id":29600,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"173cf5d3d4500a101b898ef965b66251","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#169-206","gmt_create":"2026-04-21T16:30:41.188221+04:00","gmt_modified":"2026-04-21T16:30:41.188221+04:00"},{"id":29601,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"40c1aeb5940e13e5043dab3511da4bf5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#41-66","gmt_create":"2026-04-21T16:30:41.188221+04:00","gmt_modified":"2026-04-21T16:30:41.188221+04:00"},{"id":29602,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"26e45e7ec616f7e322bad8ce47216277","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#310-354","gmt_create":"2026-04-21T16:30:41.1892212+04:00","gmt_modified":"2026-04-21T16:30:41.1892212+04:00"},{"id":29603,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"a19a1b4be38ce1ae309e895ef40dbb73","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/core_messages.cpp#30-49","gmt_create":"2026-04-21T16:30:41.1892212+04:00","gmt_modified":"2026-04-21T16:30:41.1892212+04:00"},{"id":29604,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ae5529e86367f56b5d03bb968150da4d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-72","gmt_create":"2026-04-21T16:30:41.1902211+04:00","gmt_modified":"2026-04-21T16:30:41.1902211+04:00"},{"id":29605,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"cdd97b3b31d2f6f78ebbdab686ade7b3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#132-177","gmt_create":"2026-04-21T16:30:41.1902211+04:00","gmt_modified":"2026-04-21T16:30:41.1902211+04:00"},{"id":29606,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"360efa90cd6999cde8f070be49628512","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-177","gmt_create":"2026-04-21T16:30:41.1912211+04:00","gmt_modified":"2026-04-21T16:30:41.1912211+04:00"},{"id":29607,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"4cae612e2a1da076967e2db2af5bd3c5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_database.cpp#41-82","gmt_create":"2026-04-21T16:30:41.1917239+04:00","gmt_modified":"2026-04-21T16:30:41.1917239+04:00"},{"id":29608,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"c16d714a5e83ef07a1d8e850562b3249","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_database.cpp#100-174","gmt_create":"2026-04-21T16:30:41.1917239+04:00","gmt_modified":"2026-04-21T16:30:41.1917239+04:00"},{"id":29609,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"652640f4ecd98b067898764d939b1576","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#70-105","gmt_create":"2026-04-21T16:30:41.1917239+04:00","gmt_modified":"2026-04-21T16:30:41.1917239+04:00"},{"id":29610,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"64f43f37d8e783f40ae5ad401902bab3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3710-3723","gmt_create":"2026-04-21T16:30:41.192807+04:00","gmt_modified":"2026-04-21T16:30:41.192807+04:00"},{"id":29611,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ae13127d7665db8e1646bd3539b3a9d4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#312-381","gmt_create":"2026-04-21T16:30:41.192807+04:00","gmt_modified":"2026-04-21T16:30:41.192807+04:00"},{"id":29612,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"fd1882a4f5928d935ae09849d9fdfdb1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#383-420","gmt_create":"2026-04-21T16:30:41.1933097+04:00","gmt_modified":"2026-04-21T16:30:41.1933097+04:00"},{"id":29613,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"140ef12d87c750788fc20315395d74bc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#173-179","gmt_create":"2026-04-21T16:30:41.1933097+04:00","gmt_modified":"2026-04-21T16:30:41.1933097+04:00"},{"id":29614,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"f63564c3e06f67088b86791ce7e6e0bb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4920-4970","gmt_create":"2026-04-21T16:30:41.1933097+04:00","gmt_modified":"2026-04-21T16:30:41.1933097+04:00"},{"id":29615,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"9e22b541b5e1bff359a6e0f014c993b3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5128-5131","gmt_create":"2026-04-21T16:30:41.1943123+04:00","gmt_modified":"2026-04-21T16:30:41.1943123+04:00"},{"id":29616,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"702eb271c3f420accb2a5afcb5628d1d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#322-346","gmt_create":"2026-04-21T16:30:41.1943123+04:00","gmt_modified":"2026-04-21T16:30:41.1943123+04:00"},{"id":29617,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"7ab814a8539011c4d23ec1eb74941b3e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#428-448","gmt_create":"2026-04-21T16:30:41.1943123+04:00","gmt_modified":"2026-04-21T16:30:41.1943123+04:00"},{"id":29618,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"cc6fb049675a050d828d64a99901c9a3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4900-4970","gmt_create":"2026-04-21T16:30:41.195315+04:00","gmt_modified":"2026-04-21T16:30:41.195315+04:00"},{"id":29619,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"cc6fb049675a050d828d64a99901c9a3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4900-4970","gmt_create":"2026-04-21T16:30:41.1954977+04:00","gmt_modified":"2026-04-21T16:30:41.1954977+04:00"},{"id":29620,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"c55228ab1fcfca5c9d71ea8236707e15","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#26-28","gmt_create":"2026-04-21T16:30:41.1960698+04:00","gmt_modified":"2026-04-21T16:30:41.1960698+04:00"},{"id":29621,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"81b2f4f8f38aa2cc8450eece0819b1b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#26-29","gmt_create":"2026-04-21T16:30:41.1960698+04:00","gmt_modified":"2026-04-21T16:30:41.1960698+04:00"},{"id":29622,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"d06fc379123070888b492f3273b63a65","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#26-28","gmt_create":"2026-04-21T16:30:41.1965723+04:00","gmt_modified":"2026-04-21T16:30:41.1965723+04:00"},{"id":29623,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"e285117d124780371406d47361f47d0b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#26-28","gmt_create":"2026-04-21T16:30:41.1965723+04:00","gmt_modified":"2026-04-21T16:30:41.1965723+04:00"},{"id":29624,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"dfa117c22b4c14cbb5722e7ef0134aa3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#26-27","gmt_create":"2026-04-21T16:30:41.1965723+04:00","gmt_modified":"2026-04-21T16:30:41.1965723+04:00"},{"id":29625,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ad638fd17d802b229735469514a8ea20","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#39-45","gmt_create":"2026-04-21T16:30:41.1985751+04:00","gmt_modified":"2026-04-21T16:30:41.1985751+04:00"},{"id":29626,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"23342fa016b253b100a28bcbfd13c5e2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#288-298","gmt_create":"2026-04-21T16:30:41.1985751+04:00","gmt_modified":"2026-04-21T16:30:41.1985751+04:00"},{"id":29627,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ced32203d2d382e7209d64d79aa7f2a4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#85-105","gmt_create":"2026-04-21T16:30:41.1985751+04:00","gmt_modified":"2026-04-21T16:30:41.1985751+04:00"},{"id":29628,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"3ca2692851e9198383dace6a01709d61","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-04-21T16:31:00.2897167+04:00","gmt_modified":"2026-04-21T16:31:00.2897167+04:00"},{"id":29629,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T16:31:00.2897167+04:00","gmt_modified":"2026-04-21T16:31:00.2897167+04:00"},{"id":29630,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"0153064dfb16c76b2c8535baf78ce4a4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/block_log.hpp","gmt_create":"2026-04-21T16:31:00.2897167+04:00","gmt_modified":"2026-04-21T16:31:00.2897167+04:00"},{"id":29631,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f61784c393035c7948a4317e8dcf5280","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/block_log.cpp","gmt_create":"2026-04-21T16:31:00.2897167+04:00","gmt_modified":"2026-04-21T16:31:00.2897167+04:00"},{"id":29632,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"bb278ec53a644e14e7d815fe8331bc74","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29633,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"3593b932a51a4e9d045d1cbc84dc9a6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29634,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"2635c59c839f9bfaf8b36ce827ebd4a8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29635,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"098d39a4f70011748b886f1f0aac6def","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29636,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"523379c439d6dd6e80c4a0a9b810cd94","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29637,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"98d1be79114cf1be689f3853988cf901","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/db_with.hpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29638,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"60d499d475104d27ca84470eedeadbab","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-21T16:31:00.2907166+04:00","gmt_modified":"2026-04-21T16:31:00.2907166+04:00"},{"id":29639,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"2196e7f627016478589d0cf2cfb7ce7a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29640,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"31ce877d410b43a59ae8e84069d217b9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/src/chainbase.cpp","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29641,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"77e0d7b407d3ca876eb04d56d3160619","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/include/chainbase/chainbase.hpp","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29642,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"93d2279380057f5ff7bb0ec4d574b04a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29643,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"d33d6933dcb9e547029007fca6bc61c8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29644,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"8535df170dc6215a3ad88dd93b9c0e98","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-642","gmt_create":"2026-04-21T16:31:00.2917171+04:00","gmt_modified":"2026-04-21T16:31:00.2917171+04:00"},{"id":29645,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"481dce479b9899f6302ed5ac4788e142","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-6396","gmt_create":"2026-04-21T16:31:00.2927172+04:00","gmt_modified":"2026-04-21T16:31:00.2927172+04:00"},{"id":29646,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"481dce479b9899f6302ed5ac4788e142","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6396","gmt_create":"2026-04-21T16:31:00.2927172+04:00","gmt_modified":"2026-04-21T16:31:00.2927172+04:00"},{"id":29647,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f7390d5bc34c6546fd47a2393e083e7e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/block_log.hpp#1-75","gmt_create":"2026-04-21T16:31:00.2927172+04:00","gmt_modified":"2026-04-21T16:31:00.2927172+04:00"},{"id":29648,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"35d46d5633a13462eb52e54aca34d6d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#1-302","gmt_create":"2026-04-21T16:31:00.2927172+04:00","gmt_modified":"2026-04-21T16:31:00.2927172+04:00"},{"id":29649,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"4b8e5a55d358a7e84067e5e1ca2baae3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#1-76","gmt_create":"2026-04-21T16:31:00.2927172+04:00","gmt_modified":"2026-04-21T16:31:00.2927172+04:00"},{"id":29650,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a46413107d52cb603cd476527793535e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#1-414","gmt_create":"2026-04-21T16:31:00.3003269+04:00","gmt_modified":"2026-04-21T16:31:00.3003269+04:00"},{"id":29651,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"68fdad7841401e90c5c5ea40abfbff2a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#1-125","gmt_create":"2026-04-21T16:31:00.3009073+04:00","gmt_modified":"2026-04-21T16:31:00.3009073+04:00"},{"id":29652,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"ea25ac84742909e90d76068a94ded047","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#1-245","gmt_create":"2026-04-21T16:31:00.3009073+04:00","gmt_modified":"2026-04-21T16:31:00.3009073+04:00"},{"id":29653,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f4da2f9c389f5c6ea43ba001cda708fb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/db_with.hpp#1-154","gmt_create":"2026-04-21T16:31:00.3014609+04:00","gmt_modified":"2026-04-21T16:31:00.3014609+04:00"},{"id":29654,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"b54ec203d1da8e4c616a3fec2311049f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2130-2140","gmt_create":"2026-04-21T16:31:00.3020353+04:00","gmt_modified":"2026-04-21T16:31:00.3020353+04:00"},{"id":29655,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"9eed7eba95404e8e27e3d3c2edb279fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#449-467","gmt_create":"2026-04-21T16:31:00.3020353+04:00","gmt_modified":"2026-04-21T16:31:00.3020353+04:00"},{"id":29656,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"e1fa9bfc496492a842998adc3b3afaa9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#111-118","gmt_create":"2026-04-21T16:31:00.3026129+04:00","gmt_modified":"2026-04-21T16:31:00.3026129+04:00"},{"id":29657,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"dc73ad58c67e8cdb39773f20f3e6b029","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/src/chainbase.cpp#225-279","gmt_create":"2026-04-21T16:31:00.3026129+04:00","gmt_modified":"2026-04-21T16:31:00.3026129+04:00"},{"id":29658,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"164305213190476d352a613197e7c51d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/include/chainbase/chainbase.hpp#1200-1260","gmt_create":"2026-04-21T16:31:00.3031155+04:00","gmt_modified":"2026-04-21T16:31:00.3031155+04:00"},{"id":29659,"source_id":"77e0d7b407d3ca876eb04d56d3160619","target_id":"164305213190476d352a613197e7c51d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1200-1260","gmt_create":"2026-04-21T16:31:00.3031155+04:00","gmt_modified":"2026-04-21T16:31:00.3031155+04:00"},{"id":29660,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"747c1faad94101e42db0b81e5c630245","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1428-4828","gmt_create":"2026-04-21T16:31:00.3036676+04:00","gmt_modified":"2026-04-21T16:31:00.3036676+04:00"},{"id":29661,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"747c1faad94101e42db0b81e5c630245","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1428-4828","gmt_create":"2026-04-21T16:31:00.3036676+04:00","gmt_modified":"2026-04-21T16:31:00.3036676+04:00"},{"id":29662,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"6bfc107197cd03ff08326ce5f73b0391","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#27-48","gmt_create":"2026-04-21T16:31:00.3036676+04:00","gmt_modified":"2026-04-21T16:31:00.3036676+04:00"},{"id":29663,"source_id":"d33d6933dcb9e547029007fca6bc61c8","target_id":"6bfc107197cd03ff08326ce5f73b0391","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-48","gmt_create":"2026-04-21T16:31:00.3041705+04:00","gmt_modified":"2026-04-21T16:31:00.3041705+04:00"},{"id":29664,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"41d7095dbf9aa542d0db24c316979a35","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#61-115","gmt_create":"2026-04-21T16:31:00.3052031+04:00","gmt_modified":"2026-04-21T16:31:00.3052031+04:00"},{"id":29665,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"535c5a17a7ac07403ea96a2073235389","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#281-324","gmt_create":"2026-04-21T16:31:00.3057159+04:00","gmt_modified":"2026-04-21T16:31:00.3057159+04:00"},{"id":29666,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"aad83f64f27db64e1e7945b311188609","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/block_log.hpp#38-75","gmt_create":"2026-04-21T16:31:00.3057159+04:00","gmt_modified":"2026-04-21T16:31:00.3057159+04:00"},{"id":29667,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"191773dc9d6cf8f057ee823ac96e81bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-72","gmt_create":"2026-04-21T16:31:00.3057159+04:00","gmt_modified":"2026-04-21T16:31:00.3057159+04:00"},{"id":29668,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"4b6ddb0b2b955bd31e4cb1cff392a24a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#53-125","gmt_create":"2026-04-21T16:31:00.3057159+04:00","gmt_modified":"2026-04-21T16:31:00.3057159+04:00"},{"id":29669,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"5ed5a102f0b94dd380ec8d1c114c0889","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#929-984","gmt_create":"2026-04-21T16:31:00.3062349+04:00","gmt_modified":"2026-04-21T16:31:00.3062349+04:00"},{"id":29670,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"fddd6da7e2bbee882e0448463e98d666","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/db_with.hpp#33-100","gmt_create":"2026-04-21T16:31:00.3062349+04:00","gmt_modified":"2026-04-21T16:31:00.3062349+04:00"},{"id":29671,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"0809c80d1d7608dbd9154e2bdad078ea","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#94-184","gmt_create":"2026-04-21T16:31:00.3067495+04:00","gmt_modified":"2026-04-21T16:31:00.3067495+04:00"},{"id":29672,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"17d428d8b156ca6e29747a2586eb1432","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#330-410","gmt_create":"2026-04-21T16:31:00.3072661+04:00","gmt_modified":"2026-04-21T16:31:00.3072661+04:00"},{"id":29673,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"7371cc1e09db6e42e0ba073fc458e918","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#134-184","gmt_create":"2026-04-21T16:31:00.3072661+04:00","gmt_modified":"2026-04-21T16:31:00.3072661+04:00"},{"id":29674,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"fa3a8c03917088e8342e1898d59f367d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#503-519","gmt_create":"2026-04-21T16:31:00.3082872+04:00","gmt_modified":"2026-04-21T16:31:00.3082872+04:00"},{"id":29675,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"0e9b1f9e1d1d19556ed50ab11d701180","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#61-68","gmt_create":"2026-04-21T16:31:00.3082872+04:00","gmt_modified":"2026-04-21T16:31:00.3082872+04:00"},{"id":29676,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a7d8433fc6d55a59afc7ba4f5a2a32d5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2135-2136","gmt_create":"2026-04-21T16:31:00.3082872+04:00","gmt_modified":"2026-04-21T16:31:00.3082872+04:00"},{"id":29677,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"6dec571af966adf5d77fa20a65c2d659","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#704-752","gmt_create":"2026-04-21T16:31:00.3092902+04:00","gmt_modified":"2026-04-21T16:31:00.3092902+04:00"},{"id":29678,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"99ab830dc4812f05f72523b579a487e3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3986-4039","gmt_create":"2026-04-21T16:31:00.3103821+04:00","gmt_modified":"2026-04-21T16:31:00.3103821+04:00"},{"id":29679,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"d0d042bd484b2bbc0c98e3b9e682b7db","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4144-4175","gmt_create":"2026-04-21T16:31:00.3109539+04:00","gmt_modified":"2026-04-21T16:31:00.3109539+04:00"},{"id":29680,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"5cbd06ffd00c865331403feb32ff85da","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4384-4424","gmt_create":"2026-04-21T16:31:00.3109539+04:00","gmt_modified":"2026-04-21T16:31:00.3109539+04:00"},{"id":29681,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"9c04d6593830449265de8e58d6da5ca9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#70-73","gmt_create":"2026-04-21T16:31:00.3114563+04:00","gmt_modified":"2026-04-21T16:31:00.3114563+04:00"},{"id":29682,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"1f3bb0053108316e99dad887b8984f52","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#292-292","gmt_create":"2026-04-21T16:31:00.3114563+04:00","gmt_modified":"2026-04-21T16:31:00.3114563+04:00"},{"id":29683,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"fbd7d962d15d88812122d9772306df11","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4460-4490","gmt_create":"2026-04-21T16:31:00.3124592+04:00","gmt_modified":"2026-04-21T16:31:00.3124592+04:00"},{"id":29684,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"0370b3c1adf528e9e76da6b6040e41c9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#75-77","gmt_create":"2026-04-21T16:31:00.3124592+04:00","gmt_modified":"2026-04-21T16:31:00.3124592+04:00"},{"id":29685,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"8473a68190b3b5531da1208473455cc1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1147-1202","gmt_create":"2026-04-21T16:31:00.3124592+04:00","gmt_modified":"2026-04-21T16:31:00.3124592+04:00"},{"id":29686,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"1162f44e77f6f98ad3482f528c20add0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#79-96","gmt_create":"2026-04-21T16:31:00.3134592+04:00","gmt_modified":"2026-04-21T16:31:00.3134592+04:00"},{"id":29687,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f891ad043959cc80589b9c9fd48c1544","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#340-350","gmt_create":"2026-04-21T16:31:00.3134592+04:00","gmt_modified":"2026-04-21T16:31:00.3134592+04:00"},{"id":29688,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"62fcc55341cc86c03fcdb10c26f8eb3c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4346-4366","gmt_create":"2026-04-21T16:31:00.3144592+04:00","gmt_modified":"2026-04-21T16:31:00.3144592+04:00"},{"id":29689,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"1f50af9f8c555cdfb0baa7cb29c7fd30","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#948-970","gmt_create":"2026-04-21T16:31:00.3144592+04:00","gmt_modified":"2026-04-21T16:31:00.3144592+04:00"},{"id":29690,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"34a4a734b41732c137188fcf31c723b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3652-3711","gmt_create":"2026-04-21T16:31:00.3144592+04:00","gmt_modified":"2026-04-21T16:31:00.3144592+04:00"},{"id":29691,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"8a3a2a2a99dab8064a067d010f44e8e9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#639-673","gmt_create":"2026-04-21T16:31:00.3154592+04:00","gmt_modified":"2026-04-21T16:31:00.3154592+04:00"},{"id":29692,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"cad767850c269f0113035d1bbc4f6349","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#562-605","gmt_create":"2026-04-21T16:31:00.3154592+04:00","gmt_modified":"2026-04-21T16:31:00.3154592+04:00"},{"id":29693,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"63a6bdbdee9342db7dc03b40a7c414ef","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#412-422","gmt_create":"2026-04-21T16:31:00.3165623+04:00","gmt_modified":"2026-04-21T16:31:00.3165623+04:00"},{"id":29694,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a5062d3a6ace4987fca2348f9a8e560c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#454-482","gmt_create":"2026-04-21T16:31:00.3165623+04:00","gmt_modified":"2026-04-21T16:31:00.3165623+04:00"},{"id":29695,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"72c4ace062ec4e5c5de0b6e82769cee3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#148-164","gmt_create":"2026-04-21T16:31:00.3170651+04:00","gmt_modified":"2026-04-21T16:31:00.3170651+04:00"},{"id":29696,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"28f8369b7b78bb581a54f43abbad2630","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#546-556","gmt_create":"2026-04-21T16:31:00.3170651+04:00","gmt_modified":"2026-04-21T16:31:00.3170651+04:00"},{"id":29697,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"2576ae4d890be609ca8a378656829511","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#631-632","gmt_create":"2026-04-21T16:31:00.3180678+04:00","gmt_modified":"2026-04-21T16:31:00.3180678+04:00"},{"id":29698,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"ac7785f3f2ab2c3e25df784cf097dc65","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1106-1145","gmt_create":"2026-04-21T16:31:00.3180678+04:00","gmt_modified":"2026-04-21T16:31:00.3180678+04:00"},{"id":29699,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"7511d9c5bfacc11c15e1b51a32236cc2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1460-1470","gmt_create":"2026-04-21T16:31:00.3180678+04:00","gmt_modified":"2026-04-21T16:31:00.3180678+04:00"},{"id":29700,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f2224a7a71c25f1fc0fad10ffb2d56bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3444-3499","gmt_create":"2026-04-21T16:31:00.3190682+04:00","gmt_modified":"2026-04-21T16:31:00.3190682+04:00"},{"id":29701,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"419e69541681369abacdf1c8a316d67c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#218-224","gmt_create":"2026-04-21T16:31:00.3190682+04:00","gmt_modified":"2026-04-21T16:31:00.3190682+04:00"},{"id":29702,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"6d9c0eadddeb6216c880a1c40057ea75","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#284-307","gmt_create":"2026-04-21T16:31:00.3210682+04:00","gmt_modified":"2026-04-21T16:31:00.3210682+04:00"},{"id":29703,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"736c39f30231bbd09aec04cef70476a2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1158-1198","gmt_create":"2026-04-21T16:31:00.3210682+04:00","gmt_modified":"2026-04-21T16:31:00.3210682+04:00"},{"id":29704,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"ce35e57c6f76040714ae4749d8a9f472","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3652-3655","gmt_create":"2026-04-21T16:31:00.3210682+04:00","gmt_modified":"2026-04-21T16:31:00.3210682+04:00"},{"id":29705,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a6c82e1567b28de0ad8e70abe5a1e480","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#93-141","gmt_create":"2026-04-21T16:31:00.3210682+04:00","gmt_modified":"2026-04-21T16:31:00.3210682+04:00"},{"id":29706,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f586da025600c4160546804b10db7f8a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#458-584","gmt_create":"2026-04-21T16:31:00.3220681+04:00","gmt_modified":"2026-04-21T16:31:00.3220681+04:00"},{"id":29707,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"f5b227ba8f7657892dae7907e793ad2e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4334-4463","gmt_create":"2026-04-21T16:31:00.3220681+04:00","gmt_modified":"2026-04-21T16:31:00.3220681+04:00"},{"id":29708,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"30ce2f443549d3bb41ca3052b7be13dd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2047-2144","gmt_create":"2026-04-21T16:31:00.3230681+04:00","gmt_modified":"2026-04-21T16:31:00.3230681+04:00"},{"id":29709,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"5d5f104357a87634f51432f49b92aef5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4378-4416","gmt_create":"2026-04-21T16:31:00.3230681+04:00","gmt_modified":"2026-04-21T16:31:00.3230681+04:00"},{"id":29710,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a5bf8dbce76e473dbc956b2aaabc1871","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2125-2142","gmt_create":"2026-04-21T16:31:00.3230681+04:00","gmt_modified":"2026-04-21T16:31:00.3230681+04:00"},{"id":29711,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"d9f187f4c40d91e8fdcdf7b5ef8b0754","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4220-4230","gmt_create":"2026-04-21T16:31:00.32413+04:00","gmt_modified":"2026-04-21T16:31:00.32413+04:00"},{"id":29712,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"0cdfb0cbf62a0e057c03eacd6dee840b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4517-4620","gmt_create":"2026-04-21T16:31:00.3252275+04:00","gmt_modified":"2026-04-21T16:31:00.3252275+04:00"},{"id":29713,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"92f4f10a371df986c6158b05ac734805","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-10","gmt_create":"2026-04-21T16:31:00.3258512+04:00","gmt_modified":"2026-04-21T16:31:00.3258512+04:00"},{"id":29714,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a730b509fdc5ec32fa2216c3ef6efa28","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-30","gmt_create":"2026-04-21T16:31:00.3258512+04:00","gmt_modified":"2026-04-21T16:31:00.3258512+04:00"},{"id":29715,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"a4644f41f12ac8028286aa97c48c8444","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#800-830","gmt_create":"2026-04-21T16:31:00.3273566+04:00","gmt_modified":"2026-04-21T16:31:00.3273566+04:00"},{"id":29716,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"515d489d84fcc81c4dd7f5a4d6dd0874","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#270-279","gmt_create":"2026-04-21T16:31:00.3273566+04:00","gmt_modified":"2026-04-21T16:31:00.3273566+04:00"},{"id":29717,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"9d5546b7f51ade657d3816295d69febc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#492-501","gmt_create":"2026-04-21T16:31:00.3273566+04:00","gmt_modified":"2026-04-21T16:31:00.3273566+04:00"},{"id":29718,"source_id":"feb85dd7-e1b5-4da1-90c8-d62e4ab36a9b","target_id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: feb85dd7-e1b5-4da1-90c8-d62e4ab36a9b -\u003e 0c90d3d7-fb99-45ce-aef8-14be1f476d4c","gmt_create":"2026-04-21T16:31:01.0058378+04:00","gmt_modified":"2026-04-21T16:31:01.0058378+04:00"},{"id":29719,"source_id":"ee136fe0-5a11-488d-b78f-b244c95ed999","target_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ee136fe0-5a11-488d-b78f-b244c95ed999 -\u003e d101f64c-2b77-4e6a-a088-ccdf01ad43ab","gmt_create":"2026-04-21T16:31:01.0058378+04:00","gmt_modified":"2026-04-21T16:31:01.0058378+04:00"},{"id":29720,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d101f64c-2b77-4e6a-a088-ccdf01ad43ab -\u003e 652f64b6-10ab-4d0f-a6bf-87a17c018ddd","gmt_create":"2026-04-21T16:31:01.0078378+04:00","gmt_modified":"2026-04-21T16:31:01.0078378+04:00"},{"id":29721,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d101f64c-2b77-4e6a-a088-ccdf01ad43ab -\u003e 36550816-6059-44a8-9ec7-d2656f7a96cb","gmt_create":"2026-04-21T16:31:01.0078378+04:00","gmt_modified":"2026-04-21T16:31:01.0078378+04:00"},{"id":29722,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"500c516d-131c-4d97-a2e6-142ef59c4741","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d101f64c-2b77-4e6a-a088-ccdf01ad43ab -\u003e 500c516d-131c-4d97-a2e6-142ef59c4741","gmt_create":"2026-04-21T16:31:01.0078378+04:00","gmt_modified":"2026-04-21T16:31:01.0078378+04:00"},{"id":29723,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"20d6c21a-8790-4634-9ead-5d0c4c59c0ff","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d101f64c-2b77-4e6a-a088-ccdf01ad43ab -\u003e 20d6c21a-8790-4634-9ead-5d0c4c59c0ff","gmt_create":"2026-04-21T16:31:01.0088384+04:00","gmt_modified":"2026-04-21T16:31:01.0088384+04:00"},{"id":29724,"source_id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","target_id":"a8a18a1a-a4f8-4ab6-b697-14aff82ffa34","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d101f64c-2b77-4e6a-a088-ccdf01ad43ab -\u003e a8a18a1a-a4f8-4ab6-b697-14aff82ffa34","gmt_create":"2026-04-21T16:31:01.0089363+04:00","gmt_modified":"2026-04-21T16:31:01.0089363+04:00"},{"id":29725,"source_id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","target_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: f87cd13c-94db-4641-8cab-5f0ef5598cd4 -\u003e 3a04ef44-27c8-4d40-8994-e8cb320d3117","gmt_create":"2026-04-21T16:31:01.0110218+04:00","gmt_modified":"2026-04-21T16:31:01.0110218+04:00"},{"id":29726,"source_id":"9341f099-7b24-4f13-83d6-530477010104","target_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9341f099-7b24-4f13-83d6-530477010104 -\u003e c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","gmt_create":"2026-04-21T16:31:01.0130216+04:00","gmt_modified":"2026-04-21T16:31:01.0130216+04:00"},{"id":29727,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"5162373d-0e70-4278-aa06-43b1a9d2b38a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 36550816-6059-44a8-9ec7-d2656f7a96cb -\u003e 5162373d-0e70-4278-aa06-43b1a9d2b38a","gmt_create":"2026-04-21T16:31:01.015066+04:00","gmt_modified":"2026-04-21T16:31:01.015066+04:00"},{"id":29728,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"b791152f-c6f1-4885-a74b-eae0122e9c26","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 36550816-6059-44a8-9ec7-d2656f7a96cb -\u003e b791152f-c6f1-4885-a74b-eae0122e9c26","gmt_create":"2026-04-21T16:31:01.015066+04:00","gmt_modified":"2026-04-21T16:31:01.015066+04:00"},{"id":29729,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"42c1f41c-e646-4774-a6a1-d1d4562e1998","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 36550816-6059-44a8-9ec7-d2656f7a96cb -\u003e 42c1f41c-e646-4774-a6a1-d1d4562e1998","gmt_create":"2026-04-21T16:31:01.0156418+04:00","gmt_modified":"2026-04-21T16:31:01.0156418+04:00"},{"id":29730,"source_id":"36550816-6059-44a8-9ec7-d2656f7a96cb","target_id":"bef90f2b-0676-44fd-a931-e3e664a4e6bd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 36550816-6059-44a8-9ec7-d2656f7a96cb -\u003e bef90f2b-0676-44fd-a931-e3e664a4e6bd","gmt_create":"2026-04-21T16:31:01.0156418+04:00","gmt_modified":"2026-04-21T16:31:01.0156418+04:00"},{"id":29731,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"db3aee5f-6690-4f81-9b4f-7838199336e6","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 3a04ef44-27c8-4d40-8994-e8cb320d3117 -\u003e db3aee5f-6690-4f81-9b4f-7838199336e6","gmt_create":"2026-04-21T16:31:01.0167196+04:00","gmt_modified":"2026-04-21T16:31:01.0167196+04:00"},{"id":29732,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"87aa5cd2-0092-446c-a074-22a2e50ba26f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 3a04ef44-27c8-4d40-8994-e8cb320d3117 -\u003e 87aa5cd2-0092-446c-a074-22a2e50ba26f","gmt_create":"2026-04-21T16:31:01.0167196+04:00","gmt_modified":"2026-04-21T16:31:01.0167196+04:00"},{"id":29733,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"ff4ff78c-dcdc-4b65-ada6-e4196ecf8786","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 3a04ef44-27c8-4d40-8994-e8cb320d3117 -\u003e ff4ff78c-dcdc-4b65-ada6-e4196ecf8786","gmt_create":"2026-04-21T16:31:01.0177223+04:00","gmt_modified":"2026-04-21T16:31:01.0177223+04:00"},{"id":29734,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"4cc885a5-0e6b-4ce5-8ce3-4bd3a213a73d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 3a04ef44-27c8-4d40-8994-e8cb320d3117 -\u003e 4cc885a5-0e6b-4ce5-8ce3-4bd3a213a73d","gmt_create":"2026-04-21T16:31:01.0177223+04:00","gmt_modified":"2026-04-21T16:31:01.0177223+04:00"},{"id":29735,"source_id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","target_id":"1ae912c2-1b2c-4fb5-a707-5be763d38a8d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 3a04ef44-27c8-4d40-8994-e8cb320d3117 -\u003e 1ae912c2-1b2c-4fb5-a707-5be763d38a8d","gmt_create":"2026-04-21T16:31:01.0177223+04:00","gmt_modified":"2026-04-21T16:31:01.0177223+04:00"},{"id":29736,"source_id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","target_id":"4742e642-9e5e-45dd-81ad-e39325b506cd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c2241faa-3b2a-4cd7-9f70-c498c7c8dd51 -\u003e 4742e642-9e5e-45dd-81ad-e39325b506cd","gmt_create":"2026-04-21T16:31:01.0187223+04:00","gmt_modified":"2026-04-21T16:31:01.0187223+04:00"},{"id":29737,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"ea908bf3b792540b293380d2405df2a1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: README.md","gmt_create":"2026-04-21T16:59:20.8701116+04:00","gmt_modified":"2026-04-21T16:59:20.8701116+04:00"},{"id":29738,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"0cd83f657a51bdf9c9bef932bb269738","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/plugin.md","gmt_create":"2026-04-21T16:59:20.8701116+04:00","gmt_modified":"2026-04-21T16:59:20.8701116+04:00"},{"id":29739,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"e602c0b51903a7d2b2b9f8659b518ec8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-21T16:59:20.8711118+04:00","gmt_modified":"2026-04-21T16:59:20.8711118+04:00"},{"id":29740,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b4847b0f295d10c3104cb10005cfb417","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/CMakeLists.txt","gmt_create":"2026-04-21T16:59:20.8712225+04:00","gmt_modified":"2026-04-21T16:59:20.8712225+04:00"},{"id":29741,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"09931459f68fae54afb88979ffd55b0e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-21T16:59:20.8712225+04:00","gmt_modified":"2026-04-21T16:59:20.8712225+04:00"},{"id":29742,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"373e154cf173767203286437d4786f5f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29743,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"3a1274b0ccd870a7719b3092be23a1bc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29744,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"e282d94f35b97a76846b70776d2ccc25","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29745,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"1829eeef535c0801eb2d7f66c4b68902","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29746,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29747,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"06073f9dbeb663e6a46caee8fc699fb8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","gmt_create":"2026-04-21T16:59:20.8717253+04:00","gmt_modified":"2026-04-21T16:59:20.8717253+04:00"},{"id":29748,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"de22894588ed594e30c71d7793ba8bf2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29749,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b351ad675c4e39f560f3e0425a47bb80","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/debug_node/plugin.cpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29750,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"6c69aa78eb5b232abe87e7584bb707ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29751,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"9cc5088ccba7b67d38635e02b78e5387","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29752,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"72f45d3ce938b9028a20c9f06c15db46","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/chain_evaluator.cpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29753,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b3e6748adef83c8488374b491cac5cbc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29754,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"3593b932a51a4e9d045d1cbc84dc9a6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-21T16:59:20.8727281+04:00","gmt_modified":"2026-04-21T16:59:20.8727281+04:00"},{"id":29755,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"bb278ec53a644e14e7d815fe8331bc74","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29756,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"93d2279380057f5ff7bb0ec4d574b04a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29757,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"3c69f30dcdc5f47af344481369ae9fd0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.hpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29758,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8bbc09ecfa758b54e3b7014bda5964c8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/core_messages.hpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29759,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"0c231b8c64571d7a6ab59f835c034b50","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/include/fc/network/ip.hpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29760,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"faf10b28c3427eeb5f7f5c7d3a10a475","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/network/ip.cpp","gmt_create":"2026-04-21T16:59:20.8737284+04:00","gmt_modified":"2026-04-21T16:59:20.8737284+04:00"},{"id":29761,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"3dc1bfbaed7be58e42e79a2172bee9dd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/newplugin.py","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29762,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"645d8e6ea333ab8b9be2b7e711c5a349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29763,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8df6fdbcc30dbad82e9d741ab5ef411f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#84-118","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29764,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"8df6fdbcc30dbad82e9d741ab5ef411f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 84-118","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29765,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"f51059845e8c57c267a6b24d50d9360e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-96","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29766,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"f51059845e8c57c267a6b24d50d9360e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-96","gmt_create":"2026-04-21T16:59:20.8747281+04:00","gmt_modified":"2026-04-21T16:59:20.8747281+04:00"},{"id":29767,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"7c1df5ea197d847695983fdc9514d3f7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-57","gmt_create":"2026-04-21T16:59:20.8757284+04:00","gmt_modified":"2026-04-21T16:59:20.8757284+04:00"},{"id":29768,"source_id":"373e154cf173767203286437d4786f5f","target_id":"7c1df5ea197d847695983fdc9514d3f7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-57","gmt_create":"2026-04-21T16:59:20.8757284+04:00","gmt_modified":"2026-04-21T16:59:20.8757284+04:00"},{"id":29769,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"42700762f101eb5d1e050255c9765668","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#179-403","gmt_create":"2026-04-21T16:59:20.8757284+04:00","gmt_modified":"2026-04-21T16:59:20.8757284+04:00"},{"id":29770,"source_id":"3a1274b0ccd870a7719b3092be23a1bc","target_id":"42700762f101eb5d1e050255c9765668","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 179-403","gmt_create":"2026-04-21T16:59:20.8757284+04:00","gmt_modified":"2026-04-21T16:59:20.8757284+04:00"},{"id":29771,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"ec3d8fbae1a5d225afa7f659b3c3c7f1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#59-97","gmt_create":"2026-04-21T16:59:20.8757284+04:00","gmt_modified":"2026-04-21T16:59:20.8757284+04:00"},{"id":29772,"source_id":"1829eeef535c0801eb2d7f66c4b68902","target_id":"ec3d8fbae1a5d225afa7f659b3c3c7f1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 59-97","gmt_create":"2026-04-21T16:59:20.8769531+04:00","gmt_modified":"2026-04-21T16:59:20.8769531+04:00"},{"id":29773,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"ffa0a86ed69c22b294ffdb967f120301","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#18-52","gmt_create":"2026-04-21T16:59:20.8774559+04:00","gmt_modified":"2026-04-21T16:59:20.8774559+04:00"},{"id":29774,"source_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","target_id":"ffa0a86ed69c22b294ffdb967f120301","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 18-52","gmt_create":"2026-04-21T16:59:20.877976+04:00","gmt_modified":"2026-04-21T16:59:20.877976+04:00"},{"id":29775,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"4f7612633c8054e6232c691aeaee651f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#14-47","gmt_create":"2026-04-21T16:59:20.8784883+04:00","gmt_modified":"2026-04-21T16:59:20.8784883+04:00"},{"id":29776,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"43fa824ac508d796bfc427ecb25f9aec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-76","gmt_create":"2026-04-21T16:59:20.8784883+04:00","gmt_modified":"2026-04-21T16:59:20.8784883+04:00"},{"id":29777,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"191773dc9d6cf8f057ee823ac96e81bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-72","gmt_create":"2026-04-21T16:59:20.8784883+04:00","gmt_modified":"2026-04-21T16:59:20.8784883+04:00"},{"id":29778,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"308a5e148e52b536b13866e6ed7bcbd6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#203-257","gmt_create":"2026-04-21T16:59:20.8790049+04:00","gmt_modified":"2026-04-21T16:59:20.8790049+04:00"},{"id":29779,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"308a5e148e52b536b13866e6ed7bcbd6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 203-257","gmt_create":"2026-04-21T16:59:20.8790049+04:00","gmt_modified":"2026-04-21T16:59:20.8790049+04:00"},{"id":29780,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b90528e4a3f223adc9c5a100410e645d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/CMakeLists.txt#1-12","gmt_create":"2026-04-21T16:59:20.8851951+04:00","gmt_modified":"2026-04-21T16:59:20.8851951+04:00"},{"id":29781,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"878dcc9a5950fdfeccf56797cadae454","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#1-28","gmt_create":"2026-04-21T16:59:20.885711+04:00","gmt_modified":"2026-04-21T16:59:20.885711+04:00"},{"id":29782,"source_id":"0cd83f657a51bdf9c9bef932bb269738","target_id":"878dcc9a5950fdfeccf56797cadae454","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-28","gmt_create":"2026-04-21T16:59:20.885711+04:00","gmt_modified":"2026-04-21T16:59:20.885711+04:00"},{"id":29783,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8738a86aa3be3ba78210d9d1753a85c7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#109-113","gmt_create":"2026-04-21T16:59:20.8867359+04:00","gmt_modified":"2026-04-21T16:59:20.8867359+04:00"},{"id":29784,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"8738a86aa3be3ba78210d9d1753a85c7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 109-113","gmt_create":"2026-04-21T16:59:20.8867359+04:00","gmt_modified":"2026-04-21T16:59:20.8867359+04:00"},{"id":29785,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"deb5fd998083d1fadfb4166d570952d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#88-91","gmt_create":"2026-04-21T16:59:20.8872626+04:00","gmt_modified":"2026-04-21T16:59:20.8872626+04:00"},{"id":29786,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"deb5fd998083d1fadfb4166d570952d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 88-91","gmt_create":"2026-04-21T16:59:20.8872626+04:00","gmt_modified":"2026-04-21T16:59:20.8872626+04:00"},{"id":29787,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"94ba26fd1d748fa9e7f34e734705a555","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#60-76","gmt_create":"2026-04-21T16:59:20.8872626+04:00","gmt_modified":"2026-04-21T16:59:20.8872626+04:00"},{"id":29788,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"94ba26fd1d748fa9e7f34e734705a555","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 60-76","gmt_create":"2026-04-21T16:59:20.8872626+04:00","gmt_modified":"2026-04-21T16:59:20.8872626+04:00"},{"id":29789,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8a639bfa4330b613e062546b599c9a62","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#38-55","gmt_create":"2026-04-21T16:59:20.8877703+04:00","gmt_modified":"2026-04-21T16:59:20.8877703+04:00"},{"id":29790,"source_id":"e282d94f35b97a76846b70776d2ccc25","target_id":"8a639bfa4330b613e062546b599c9a62","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-55","gmt_create":"2026-04-21T16:59:20.8877703+04:00","gmt_modified":"2026-04-21T16:59:20.8877703+04:00"},{"id":29791,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"3cc842311268d524d5cd9a318f1af202","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#36-42","gmt_create":"2026-04-21T16:59:20.8882845+04:00","gmt_modified":"2026-04-21T16:59:20.8882845+04:00"},{"id":29792,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"3cc842311268d524d5cd9a318f1af202","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 36-42","gmt_create":"2026-04-21T16:59:20.8882845+04:00","gmt_modified":"2026-04-21T16:59:20.8882845+04:00"},{"id":29793,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"179eae2bdbae82637c182b728cf2cecb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#19-31","gmt_create":"2026-04-21T16:59:20.8888009+04:00","gmt_modified":"2026-04-21T16:59:20.8888009+04:00"},{"id":29794,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"63677bec54a74bea181bcd971d35d2ff","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#188-191","gmt_create":"2026-04-21T16:59:20.8888009+04:00","gmt_modified":"2026-04-21T16:59:20.8888009+04:00"},{"id":29795,"source_id":"3a1274b0ccd870a7719b3092be23a1bc","target_id":"63677bec54a74bea181bcd971d35d2ff","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 188-191","gmt_create":"2026-04-21T16:59:20.8888009+04:00","gmt_modified":"2026-04-21T16:59:20.8888009+04:00"},{"id":29796,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b8bfa02d566b8da36ba3aa66aa72b28f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#227-398","gmt_create":"2026-04-21T16:59:20.8893168+04:00","gmt_modified":"2026-04-21T16:59:20.8893168+04:00"},{"id":29797,"source_id":"3a1274b0ccd870a7719b3092be23a1bc","target_id":"b8bfa02d566b8da36ba3aa66aa72b28f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 227-398","gmt_create":"2026-04-21T16:59:20.8893168+04:00","gmt_modified":"2026-04-21T16:59:20.8893168+04:00"},{"id":29798,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"83ee115c6ba0234d711d10e0e1a9cb70","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#61-65","gmt_create":"2026-04-21T16:59:20.8893168+04:00","gmt_modified":"2026-04-21T16:59:20.8893168+04:00"},{"id":29799,"source_id":"1829eeef535c0801eb2d7f66c4b68902","target_id":"83ee115c6ba0234d711d10e0e1a9cb70","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-65","gmt_create":"2026-04-21T16:59:20.8893168+04:00","gmt_modified":"2026-04-21T16:59:20.8893168+04:00"},{"id":29800,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"c848c312515a672a6ed63c3bcd198a6d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#83-92","gmt_create":"2026-04-21T16:59:20.8898313+04:00","gmt_modified":"2026-04-21T16:59:20.8898313+04:00"},{"id":29801,"source_id":"1829eeef535c0801eb2d7f66c4b68902","target_id":"c848c312515a672a6ed63c3bcd198a6d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 83-92","gmt_create":"2026-04-21T16:59:20.8898313+04:00","gmt_modified":"2026-04-21T16:59:20.8898313+04:00"},{"id":29802,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"49ef0ea42562b90e2b119834d5441dbe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#259-277","gmt_create":"2026-04-21T16:59:20.8898313+04:00","gmt_modified":"2026-04-21T16:59:20.8898313+04:00"},{"id":29803,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"49ef0ea42562b90e2b119834d5441dbe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 259-277","gmt_create":"2026-04-21T16:59:20.8898313+04:00","gmt_modified":"2026-04-21T16:59:20.8898313+04:00"},{"id":29804,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"c630e3fc43aa0ddd30b4aa70f6c5b30c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#20-20","gmt_create":"2026-04-21T16:59:20.8903455+04:00","gmt_modified":"2026-04-21T16:59:20.8903455+04:00"},{"id":29805,"source_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","target_id":"c630e3fc43aa0ddd30b4aa70f6c5b30c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-20","gmt_create":"2026-04-21T16:59:20.8903455+04:00","gmt_modified":"2026-04-21T16:59:20.8903455+04:00"},{"id":29806,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"5d152a0cf386180d48f03300ad973338","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#40-49","gmt_create":"2026-04-21T16:59:20.8903455+04:00","gmt_modified":"2026-04-21T16:59:20.8903455+04:00"},{"id":29807,"source_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","target_id":"5d152a0cf386180d48f03300ad973338","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 40-49","gmt_create":"2026-04-21T16:59:20.8903455+04:00","gmt_modified":"2026-04-21T16:59:20.8903455+04:00"},{"id":29808,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"07111fda00e5b2043fcd71667f0399fb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#17-19","gmt_create":"2026-04-21T16:59:20.8908737+04:00","gmt_modified":"2026-04-21T16:59:20.8908737+04:00"},{"id":29809,"source_id":"06073f9dbeb663e6a46caee8fc699fb8","target_id":"07111fda00e5b2043fcd71667f0399fb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-19","gmt_create":"2026-04-21T16:59:20.8908737+04:00","gmt_modified":"2026-04-21T16:59:20.8908737+04:00"},{"id":29810,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8fb9b8d2bda2b7acaab839b1ddce034e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#46-87","gmt_create":"2026-04-21T16:59:20.8913827+04:00","gmt_modified":"2026-04-21T16:59:20.8913827+04:00"},{"id":29811,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"8fb9b8d2bda2b7acaab839b1ddce034e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-87","gmt_create":"2026-04-21T16:59:20.8913827+04:00","gmt_modified":"2026-04-21T16:59:20.8913827+04:00"},{"id":29812,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"56c5cbf090e087d3bdee349c29db0b90","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#11-20","gmt_create":"2026-04-21T16:59:20.891998+04:00","gmt_modified":"2026-04-21T16:59:20.891998+04:00"},{"id":29813,"source_id":"0cd83f657a51bdf9c9bef932bb269738","target_id":"56c5cbf090e087d3bdee349c29db0b90","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-20","gmt_create":"2026-04-21T16:59:20.8925009+04:00","gmt_modified":"2026-04-21T16:59:20.8925009+04:00"},{"id":29814,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"48d6b5387566b628f417f419c1c95250","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#77-77","gmt_create":"2026-04-21T16:59:20.8925009+04:00","gmt_modified":"2026-04-21T16:59:20.8925009+04:00"},{"id":29815,"source_id":"1829eeef535c0801eb2d7f66c4b68902","target_id":"48d6b5387566b628f417f419c1c95250","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 77-77","gmt_create":"2026-04-21T16:59:20.8925009+04:00","gmt_modified":"2026-04-21T16:59:20.8925009+04:00"},{"id":29816,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"14d0358b6f8212bb0b72fd053913f053","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-42","gmt_create":"2026-04-21T16:59:20.8939307+04:00","gmt_modified":"2026-04-21T16:59:20.8939307+04:00"},{"id":29817,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"14d0358b6f8212bb0b72fd053913f053","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-42","gmt_create":"2026-04-21T16:59:20.8945101+04:00","gmt_modified":"2026-04-21T16:59:20.8945101+04:00"},{"id":29818,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"b76aad1a6fa150a94b017d475823a154","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-43","gmt_create":"2026-04-21T16:59:20.8945101+04:00","gmt_modified":"2026-04-21T16:59:20.8945101+04:00"},{"id":29819,"source_id":"373e154cf173767203286437d4786f5f","target_id":"b76aad1a6fa150a94b017d475823a154","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-43","gmt_create":"2026-04-21T16:59:20.8945101+04:00","gmt_modified":"2026-04-21T16:59:20.8945101+04:00"},{"id":29820,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"24cc2a11be41166bfd5748d59033acd7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#179-186","gmt_create":"2026-04-21T16:59:20.8945101+04:00","gmt_modified":"2026-04-21T16:59:20.8945101+04:00"},{"id":29821,"source_id":"3a1274b0ccd870a7719b3092be23a1bc","target_id":"24cc2a11be41166bfd5748d59033acd7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 179-186","gmt_create":"2026-04-21T16:59:20.8950126+04:00","gmt_modified":"2026-04-21T16:59:20.8950126+04:00"},{"id":29822,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"5c2c39f7a8485c2ab33778983fae071f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#59-70","gmt_create":"2026-04-21T16:59:20.8950126+04:00","gmt_modified":"2026-04-21T16:59:20.8950126+04:00"},{"id":29823,"source_id":"1829eeef535c0801eb2d7f66c4b68902","target_id":"5c2c39f7a8485c2ab33778983fae071f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 59-70","gmt_create":"2026-04-21T16:59:20.8950126+04:00","gmt_modified":"2026-04-21T16:59:20.8950126+04:00"},{"id":29824,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"c2a79dfba7c1513c5243b63677e4b76c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#18-32","gmt_create":"2026-04-21T16:59:20.8950126+04:00","gmt_modified":"2026-04-21T16:59:20.8950126+04:00"},{"id":29825,"source_id":"ff3ecc7e45f4ec2f8258d010c3e739e6","target_id":"c2a79dfba7c1513c5243b63677e4b76c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 18-32","gmt_create":"2026-04-21T16:59:20.8955307+04:00","gmt_modified":"2026-04-21T16:59:20.8955307+04:00"},{"id":29826,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"4593d7844d3c3f6f2ceef720e5ef6c76","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#14-41","gmt_create":"2026-04-21T16:59:20.8955307+04:00","gmt_modified":"2026-04-21T16:59:20.8955307+04:00"},{"id":29827,"source_id":"06073f9dbeb663e6a46caee8fc699fb8","target_id":"4593d7844d3c3f6f2ceef720e5ef6c76","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-41","gmt_create":"2026-04-21T16:59:20.8955307+04:00","gmt_modified":"2026-04-21T16:59:20.8955307+04:00"},{"id":29828,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"689f876b64c3255f654a81649f9600e5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-54","gmt_create":"2026-04-21T16:59:20.8955307+04:00","gmt_modified":"2026-04-21T16:59:20.8955307+04:00"},{"id":29829,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"689f876b64c3255f654a81649f9600e5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-54","gmt_create":"2026-04-21T16:59:20.8955307+04:00","gmt_modified":"2026-04-21T16:59:20.8955307+04:00"},{"id":29830,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"859aec492420ac9d5fffdb068529170d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#225-246","gmt_create":"2026-04-21T16:59:20.8960657+04:00","gmt_modified":"2026-04-21T16:59:20.8960657+04:00"},{"id":29831,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"22865c33f9584174fdf61a715848a685","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#168-173","gmt_create":"2026-04-21T16:59:20.8960657+04:00","gmt_modified":"2026-04-21T16:59:20.8960657+04:00"},{"id":29832,"source_id":"3dc1bfbaed7be58e42e79a2172bee9dd","target_id":"22865c33f9584174fdf61a715848a685","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 168-173","gmt_create":"2026-04-21T16:59:20.8960657+04:00","gmt_modified":"2026-04-21T16:59:20.8960657+04:00"},{"id":29833,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"4bbde61be3ba2b3b2d9c42bfcbb53246","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#21-28","gmt_create":"2026-04-21T16:59:20.8960657+04:00","gmt_modified":"2026-04-21T16:59:20.8960657+04:00"},{"id":29834,"source_id":"0cd83f657a51bdf9c9bef932bb269738","target_id":"4bbde61be3ba2b3b2d9c42bfcbb53246","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-28","gmt_create":"2026-04-21T16:59:20.8966402+04:00","gmt_modified":"2026-04-21T16:59:20.8966402+04:00"},{"id":29835,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"535c5a17a7ac07403ea96a2073235389","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#281-324","gmt_create":"2026-04-21T16:59:20.8966402+04:00","gmt_modified":"2026-04-21T16:59:20.8966402+04:00"},{"id":29836,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"1f3bb0053108316e99dad887b8984f52","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#292-292","gmt_create":"2026-04-21T16:59:20.8966402+04:00","gmt_modified":"2026-04-21T16:59:20.8966402+04:00"},{"id":29837,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"14db855e3162a19ce192c2bedccef067","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#313-317","gmt_create":"2026-04-21T16:59:20.8971427+04:00","gmt_modified":"2026-04-21T16:59:20.8971427+04:00"},{"id":29838,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"14db855e3162a19ce192c2bedccef067","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 313-317","gmt_create":"2026-04-21T16:59:20.8971427+04:00","gmt_modified":"2026-04-21T16:59:20.8971427+04:00"},{"id":29839,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"4620befa2e1a2b36260a1a8b3f79a71d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#13-33","gmt_create":"2026-04-21T16:59:20.8976652+04:00","gmt_modified":"2026-04-21T16:59:20.8976652+04:00"},{"id":29840,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"d88294367eb508d1997c8cec781bcb58","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#1-200","gmt_create":"2026-04-21T16:59:20.8976652+04:00","gmt_modified":"2026-04-21T16:59:20.8976652+04:00"},{"id":29841,"source_id":"3593b932a51a4e9d045d1cbc84dc9a6d","target_id":"d88294367eb508d1997c8cec781bcb58","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-21T16:59:20.8976652+04:00","gmt_modified":"2026-04-21T16:59:20.8976652+04:00"},{"id":29842,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"0a2d506478951221aeda17f6998e1825","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#356-382","gmt_create":"2026-04-21T16:59:20.8981965+04:00","gmt_modified":"2026-04-21T16:59:20.8981965+04:00"},{"id":29843,"source_id":"3593b932a51a4e9d045d1cbc84dc9a6d","target_id":"0a2d506478951221aeda17f6998e1825","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 356-382","gmt_create":"2026-04-21T16:59:20.8981965+04:00","gmt_modified":"2026-04-21T16:59:20.8981965+04:00"},{"id":29844,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"fe778373981234fbca5449dd18bdf95a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#558-567","gmt_create":"2026-04-21T16:59:20.8987122+04:00","gmt_modified":"2026-04-21T16:59:20.8987122+04:00"},{"id":29845,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"fe778373981234fbca5449dd18bdf95a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 558-567","gmt_create":"2026-04-21T16:59:20.8987122+04:00","gmt_modified":"2026-04-21T16:59:20.8987122+04:00"},{"id":29846,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"0879833002d4ac8fe92cccfccc4f4255","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#596-600","gmt_create":"2026-04-21T16:59:20.8987122+04:00","gmt_modified":"2026-04-21T16:59:20.8987122+04:00"},{"id":29847,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"0879833002d4ac8fe92cccfccc4f4255","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 596-600","gmt_create":"2026-04-21T16:59:20.8987122+04:00","gmt_modified":"2026-04-21T16:59:20.8987122+04:00"},{"id":29848,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"eeba05d156bfbdc01164fea2726b2a59","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#618-622","gmt_create":"2026-04-21T16:59:20.8992334+04:00","gmt_modified":"2026-04-21T16:59:20.8992334+04:00"},{"id":29849,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"eeba05d156bfbdc01164fea2726b2a59","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 618-622","gmt_create":"2026-04-21T16:59:20.8992334+04:00","gmt_modified":"2026-04-21T16:59:20.8992334+04:00"},{"id":29850,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"2349e005de7b738a3947eb7d62bb7809","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#104-164","gmt_create":"2026-04-21T16:59:20.8992334+04:00","gmt_modified":"2026-04-21T16:59:20.8992334+04:00"},{"id":29851,"source_id":"e602c0b51903a7d2b2b9f8659b518ec8","target_id":"2349e005de7b738a3947eb7d62bb7809","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 104-164","gmt_create":"2026-04-21T16:59:20.8992334+04:00","gmt_modified":"2026-04-21T16:59:20.8992334+04:00"},{"id":29852,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"bf8ddf18c65464f20f28a2f556b92eef","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#15-41","gmt_create":"2026-04-21T16:59:20.8997624+04:00","gmt_modified":"2026-04-21T16:59:20.8997624+04:00"},{"id":29853,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"bf8ddf18c65464f20f28a2f556b92eef","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-41","gmt_create":"2026-04-21T16:59:20.8997624+04:00","gmt_modified":"2026-04-21T16:59:20.8997624+04:00"},{"id":29854,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"486c7524fd7116e7c39cce90d4334b10","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#265-276","gmt_create":"2026-04-21T16:59:20.8997624+04:00","gmt_modified":"2026-04-21T16:59:20.8997624+04:00"},{"id":29855,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"486c7524fd7116e7c39cce90d4334b10","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 265-276","gmt_create":"2026-04-21T16:59:20.9002885+04:00","gmt_modified":"2026-04-21T16:59:20.9002885+04:00"},{"id":29856,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"5e39a61e9ad362688e1a8379db305eb9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#118-165","gmt_create":"2026-04-21T16:59:20.9002885+04:00","gmt_modified":"2026-04-21T16:59:20.9002885+04:00"},{"id":29857,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"5e39a61e9ad362688e1a8379db305eb9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 118-165","gmt_create":"2026-04-21T16:59:20.9002885+04:00","gmt_modified":"2026-04-21T16:59:20.9002885+04:00"},{"id":29858,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"e8361bd5972aca40b26bbfea82e31404","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#558-580","gmt_create":"2026-04-21T16:59:20.9008038+04:00","gmt_modified":"2026-04-21T16:59:20.9008038+04:00"},{"id":29859,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"e8361bd5972aca40b26bbfea82e31404","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 558-580","gmt_create":"2026-04-21T16:59:20.9008038+04:00","gmt_modified":"2026-04-21T16:59:20.9008038+04:00"},{"id":29860,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"f4cef35f6434606772b1da8e6e275858","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#599-620","gmt_create":"2026-04-21T16:59:20.9008038+04:00","gmt_modified":"2026-04-21T16:59:20.9008038+04:00"},{"id":29861,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"f4cef35f6434606772b1da8e6e275858","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 599-620","gmt_create":"2026-04-21T16:59:20.9008038+04:00","gmt_modified":"2026-04-21T16:59:20.9008038+04:00"},{"id":29862,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"70efa2637d099ce229d5962a7cb20ec3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#623-640","gmt_create":"2026-04-21T16:59:20.9013196+04:00","gmt_modified":"2026-04-21T16:59:20.9013196+04:00"},{"id":29863,"source_id":"b3e6748adef83c8488374b491cac5cbc","target_id":"70efa2637d099ce229d5962a7cb20ec3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 623-640","gmt_create":"2026-04-21T16:59:20.9013196+04:00","gmt_modified":"2026-04-21T16:59:20.9013196+04:00"},{"id":29864,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"f444c6df70c26419b2a93d2c2273e92c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#500-508","gmt_create":"2026-04-21T16:59:20.9013196+04:00","gmt_modified":"2026-04-21T16:59:20.9013196+04:00"},{"id":29865,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"f444c6df70c26419b2a93d2c2273e92c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 500-508","gmt_create":"2026-04-21T16:59:20.9013196+04:00","gmt_modified":"2026-04-21T16:59:20.9013196+04:00"},{"id":29866,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"a95d43c6ca0c691fbbe04e13f28953cb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/include/fc/network/ip.hpp#69-71","gmt_create":"2026-04-21T16:59:20.901836+04:00","gmt_modified":"2026-04-21T16:59:20.901836+04:00"},{"id":29867,"source_id":"0c231b8c64571d7a6ab59f835c034b50","target_id":"a95d43c6ca0c691fbbe04e13f28953cb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-71","gmt_create":"2026-04-21T16:59:20.901836+04:00","gmt_modified":"2026-04-21T16:59:20.901836+04:00"},{"id":29868,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"46e0355f5ef5951452e05b75a4e7909a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ip.cpp#35-39","gmt_create":"2026-04-21T16:59:20.901836+04:00","gmt_modified":"2026-04-21T16:59:20.901836+04:00"},{"id":29869,"source_id":"faf10b28c3427eeb5f7f5c7d3a10a475","target_id":"46e0355f5ef5951452e05b75a4e7909a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-39","gmt_create":"2026-04-21T16:59:20.901836+04:00","gmt_modified":"2026-04-21T16:59:20.901836+04:00"},{"id":29870,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"a5c605a8f2aeb6be0430e0dede3a7c4c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/include/fc/network/ip.hpp#12-87","gmt_create":"2026-04-21T16:59:20.9024132+04:00","gmt_modified":"2026-04-21T16:59:20.9024132+04:00"},{"id":29871,"source_id":"0c231b8c64571d7a6ab59f835c034b50","target_id":"a5c605a8f2aeb6be0430e0dede3a7c4c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-87","gmt_create":"2026-04-21T16:59:20.9024132+04:00","gmt_modified":"2026-04-21T16:59:20.9024132+04:00"},{"id":29872,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"cf9ac0713791e3f0155afc85ae3b1270","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ip.cpp#14-87","gmt_create":"2026-04-21T16:59:20.9024132+04:00","gmt_modified":"2026-04-21T16:59:20.9024132+04:00"},{"id":29873,"source_id":"faf10b28c3427eeb5f7f5c7d3a10a475","target_id":"cf9ac0713791e3f0155afc85ae3b1270","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-87","gmt_create":"2026-04-21T16:59:20.9024132+04:00","gmt_modified":"2026-04-21T16:59:20.9024132+04:00"},{"id":29874,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"8693e2e59759e0fec581c5affcf874a4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.hpp#109-110","gmt_create":"2026-04-21T16:59:20.9024132+04:00","gmt_modified":"2026-04-21T16:59:20.9024132+04:00"},{"id":29875,"source_id":"3c69f30dcdc5f47af344481369ae9fd0","target_id":"8693e2e59759e0fec581c5affcf874a4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 109-110","gmt_create":"2026-04-21T16:59:20.9029157+04:00","gmt_modified":"2026-04-21T16:59:20.9029157+04:00"},{"id":29876,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"de2a3d9dcbf8557a92762e57bf3e5a55","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4900-4903","gmt_create":"2026-04-21T16:59:20.9029157+04:00","gmt_modified":"2026-04-21T16:59:20.9029157+04:00"},{"id":29877,"source_id":"93d2279380057f5ff7bb0ec4d574b04a","target_id":"de2a3d9dcbf8557a92762e57bf3e5a55","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4900-4903","gmt_create":"2026-04-21T16:59:20.9029157+04:00","gmt_modified":"2026-04-21T16:59:20.9029157+04:00"},{"id":29878,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"a229446dae94228f93b0b91568ad5731","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/core_messages.hpp#333-345","gmt_create":"2026-04-21T16:59:20.9029157+04:00","gmt_modified":"2026-04-21T16:59:20.9029157+04:00"},{"id":29879,"source_id":"8bbc09ecfa758b54e3b7014bda5964c8","target_id":"a229446dae94228f93b0b91568ad5731","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 333-345","gmt_create":"2026-04-21T16:59:20.9034402+04:00","gmt_modified":"2026-04-21T16:59:20.9034402+04:00"},{"id":29880,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"c0a51deb86a3baed7b0c00196330d6dd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-24","gmt_create":"2026-04-21T16:59:20.9034402+04:00","gmt_modified":"2026-04-21T16:59:20.9034402+04:00"},{"id":29881,"source_id":"09931459f68fae54afb88979ffd55b0e","target_id":"c0a51deb86a3baed7b0c00196330d6dd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-24","gmt_create":"2026-04-21T16:59:20.9034402+04:00","gmt_modified":"2026-04-21T16:59:20.9034402+04:00"},{"id":29882,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"e4cc4d73635312873c5714774885f075","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-38","gmt_create":"2026-04-21T16:59:20.9034402+04:00","gmt_modified":"2026-04-21T16:59:20.9034402+04:00"},{"id":29883,"source_id":"373e154cf173767203286437d4786f5f","target_id":"e4cc4d73635312873c5714774885f075","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-38","gmt_create":"2026-04-21T16:59:20.9039596+04:00","gmt_modified":"2026-04-21T16:59:20.9039596+04:00"},{"id":29884,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"535fb8ae27f3028ef0bc007fe8e6d9e4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#44-44","gmt_create":"2026-04-21T16:59:20.9039596+04:00","gmt_modified":"2026-04-21T16:59:20.9039596+04:00"},{"id":29885,"source_id":"de22894588ed594e30c71d7793ba8bf2","target_id":"535fb8ae27f3028ef0bc007fe8e6d9e4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-44","gmt_create":"2026-04-21T16:59:20.9044839+04:00","gmt_modified":"2026-04-21T16:59:20.9044839+04:00"},{"id":29886,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"75d9368d3d98aa6d9c428970a63b11cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-35","gmt_create":"2026-04-21T16:59:20.9044839+04:00","gmt_modified":"2026-04-21T16:59:20.9044839+04:00"},{"id":29887,"source_id":"bb278ec53a644e14e7d815fe8331bc74","target_id":"75d9368d3d98aa6d9c428970a63b11cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-35","gmt_create":"2026-04-21T16:59:20.9044839+04:00","gmt_modified":"2026-04-21T16:59:20.9044839+04:00"},{"id":29888,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"68233684e873ddae3fb16456ee2935b6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/operations.hpp#14-27","gmt_create":"2026-04-21T16:59:20.9050022+04:00","gmt_modified":"2026-04-21T16:59:20.9050022+04:00"},{"id":29889,"source_id":"9cc5088ccba7b67d38635e02b78e5387","target_id":"68233684e873ddae3fb16456ee2935b6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-27","gmt_create":"2026-04-21T16:59:20.9055958+04:00","gmt_modified":"2026-04-21T16:59:20.9055958+04:00"},{"id":29890,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"38dd1148f1f885fd680994cdceecba74","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#216-216","gmt_create":"2026-04-21T16:59:20.9055958+04:00","gmt_modified":"2026-04-21T16:59:20.9055958+04:00"},{"id":29891,"source_id":"72f45d3ce938b9028a20c9f06c15db46","target_id":"38dd1148f1f885fd680994cdceecba74","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 216-216","gmt_create":"2026-04-21T16:59:20.9055958+04:00","gmt_modified":"2026-04-21T16:59:20.9055958+04:00"},{"id":29892,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"d6755387033134961bc624ab0cfa47af","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#551-551","gmt_create":"2026-04-21T16:59:20.9060981+04:00","gmt_modified":"2026-04-21T16:59:20.9060981+04:00"},{"id":29893,"source_id":"72f45d3ce938b9028a20c9f06c15db46","target_id":"d6755387033134961bc624ab0cfa47af","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 551-551","gmt_create":"2026-04-21T16:59:20.9060981+04:00","gmt_modified":"2026-04-21T16:59:20.9060981+04:00"},{"id":29894,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"6a7b254fb749104adcf900df81294efc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#1296-1296","gmt_create":"2026-04-21T16:59:20.9060981+04:00","gmt_modified":"2026-04-21T16:59:20.9060981+04:00"},{"id":29895,"source_id":"72f45d3ce938b9028a20c9f06c15db46","target_id":"6a7b254fb749104adcf900df81294efc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1296-1296","gmt_create":"2026-04-21T16:59:20.9060981+04:00","gmt_modified":"2026-04-21T16:59:20.9060981+04:00"},{"id":29896,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"0d653f2cfc0e2b612ff1d3958755ec8a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#499-528","gmt_create":"2026-04-21T16:59:20.9066131+04:00","gmt_modified":"2026-04-21T16:59:20.9066131+04:00"},{"id":29897,"source_id":"6c69aa78eb5b232abe87e7584bb707ca","target_id":"0d653f2cfc0e2b612ff1d3958755ec8a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 499-528","gmt_create":"2026-04-21T16:59:20.9066131+04:00","gmt_modified":"2026-04-21T16:59:20.9066131+04:00"},{"id":29898,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"a7f1569fce7a15457b0edf8049ffc90e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/debug_node/plugin.cpp#124-128","gmt_create":"2026-04-21T16:59:20.9066131+04:00","gmt_modified":"2026-04-21T16:59:20.9066131+04:00"},{"id":29899,"source_id":"b351ad675c4e39f560f3e0425a47bb80","target_id":"a7f1569fce7a15457b0edf8049ffc90e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 124-128","gmt_create":"2026-04-21T16:59:20.9066131+04:00","gmt_modified":"2026-04-21T16:59:20.9066131+04:00"},{"id":29900,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"c524e6ae861831d5eb348ce30d6f7328","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#103-107","gmt_create":"2026-04-21T16:59:20.907618+04:00","gmt_modified":"2026-04-21T16:59:20.907618+04:00"},{"id":29901,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"dbcec612bbf7a24accc2d16b541fee52","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#142-164","gmt_create":"2026-04-21T16:59:20.9093813+04:00","gmt_modified":"2026-04-21T16:59:20.9093813+04:00"},{"id":29902,"source_id":"e602c0b51903a7d2b2b9f8659b518ec8","target_id":"dbcec612bbf7a24accc2d16b541fee52","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 142-164","gmt_create":"2026-04-21T16:59:20.9093813+04:00","gmt_modified":"2026-04-21T16:59:20.9093813+04:00"},{"id":29903,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"eda890c7-51dd-41e5-af5f-a0fecb9458d9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 48f8c014-6fa2-47dd-a193-ee8f5612ea58 -\u003e eda890c7-51dd-41e5-af5f-a0fecb9458d9","gmt_create":"2026-04-21T16:59:21.5349408+04:00","gmt_modified":"2026-04-21T16:59:21.5349408+04:00"},{"id":29904,"source_id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","target_id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 48f8c014-6fa2-47dd-a193-ee8f5612ea58 -\u003e e56b4c71-c537-41c1-ac54-f3696b69e89d","gmt_create":"2026-04-21T16:59:21.5364467+04:00","gmt_modified":"2026-04-21T16:59:21.5364467+04:00"}],"source_files":[{"id":"b70b275b872bbc6ecd1c4312dea1f126","path":"libraries/network/include/graphene/network/node.hpp","filename":"node.hpp","gmt_create":"2026-04-21T14:56:29.5880505+04:00","gmt_modified":"2026-04-21T14:56:29.5880505+04:00"},{"id":"93d2279380057f5ff7bb0ec4d574b04a","path":"libraries/network/node.cpp","filename":"node.cpp","gmt_create":"2026-04-21T14:56:29.5880505+04:00","gmt_modified":"2026-04-21T14:56:29.5880505+04:00"},{"id":"bd9a9323b695ba6f4ee219c6ac05d65b","path":"libraries/network/include/graphene/network/peer_connection.hpp","filename":"peer_connection.hpp","gmt_create":"2026-04-21T14:56:29.5880505+04:00","gmt_modified":"2026-04-21T14:56:29.5880505+04:00"},{"id":"c1a4d9d9d4f732c65e6ae1b5310f515f","path":"libraries/network/include/graphene/network/peer_database.hpp","filename":"peer_database.hpp","gmt_create":"2026-04-21T14:56:29.5880505+04:00","gmt_modified":"2026-04-21T14:56:29.5880505+04:00"},{"id":"52f5e880c05c0b3e52e994a389aba5e4","path":"libraries/network/include/graphene/network/message.hpp","filename":"message.hpp","gmt_create":"2026-04-21T14:56:29.5880505+04:00","gmt_modified":"2026-04-21T14:56:29.5880505+04:00"},{"id":"2b3ddd15ed5a1f5ffe2964a30945aaeb","path":"libraries/network/include/graphene/network/config.hpp","filename":"config.hpp","gmt_create":"2026-04-21T14:56:29.5885673+04:00","gmt_modified":"2026-04-21T14:56:29.5885673+04:00"},{"id":"d952eb3122d64a10b5a53c11fa123b9d","path":"libraries/network/include/graphene/network/core_messages.hpp","filename":"core_messages.hpp","gmt_create":"2026-04-21T14:56:29.589085+04:00","gmt_modified":"2026-04-21T14:56:29.589085+04:00"},{"id":"d33d6933dcb9e547029007fca6bc61c8","path":"libraries/network/include/graphene/network/exceptions.hpp","filename":"exceptions.hpp","gmt_create":"2026-04-21T14:56:29.589085+04:00","gmt_modified":"2026-04-21T14:56:29.589085+04:00"},{"id":"34e5909c35ad9d055be9727b3a207c55","path":"libraries/network/include/graphene/network/stcp_socket.hpp","filename":"stcp_socket.hpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"ab664a3a8e43d25e578a4db7198b64ef","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","filename":"message_oriented_connection.hpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"2635c59c839f9bfaf8b36ce827ebd4a8","path":"libraries/chain/include/graphene/chain/fork_database.hpp","filename":"fork_database.hpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"098d39a4f70011748b886f1f0aac6def","path":"libraries/chain/fork_database.cpp","filename":"fork_database.cpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"b3e6748adef83c8488374b491cac5cbc","path":"libraries/chain/database.cpp","filename":"database.cpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"2196e7f627016478589d0cf2cfb7ce7a","path":"libraries/protocol/include/graphene/protocol/config.hpp","filename":"config.hpp","gmt_create":"2026-04-21T14:56:29.5896119+04:00","gmt_modified":"2026-04-21T14:56:29.5896119+04:00"},{"id":"3ca2692851e9198383dace6a01709d61","path":"libraries/chain/include/graphene/chain/database.hpp","filename":"database.hpp","gmt_create":"2026-04-21T14:57:03.8851174+04:00","gmt_modified":"2026-04-21T14:57:03.8851174+04:00"},{"id":"0153064dfb16c76b2c8535baf78ce4a4","path":"libraries/chain/include/graphene/chain/block_log.hpp","filename":"block_log.hpp","gmt_create":"2026-04-21T14:57:03.8856416+04:00","gmt_modified":"2026-04-21T14:57:03.8856416+04:00"},{"id":"bb278ec53a644e14e7d815fe8331bc74","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","filename":"dlt_block_log.hpp","gmt_create":"2026-04-21T14:57:03.8856416+04:00","gmt_modified":"2026-04-21T14:57:03.8856416+04:00"},{"id":"3593b932a51a4e9d045d1cbc84dc9a6d","path":"libraries/chain/dlt_block_log.cpp","filename":"dlt_block_log.cpp","gmt_create":"2026-04-21T14:57:03.8856416+04:00","gmt_modified":"2026-04-21T14:57:03.8856416+04:00"},{"id":"6c69aa78eb5b232abe87e7584bb707ca","path":"plugins/p2p/p2p_plugin.cpp","filename":"p2p_plugin.cpp","gmt_create":"2026-04-21T14:57:03.8856416+04:00","gmt_modified":"2026-04-21T14:57:03.8856416+04:00"},{"id":"60d499d475104d27ca84470eedeadbab","path":"plugins/witness/witness.cpp","filename":"witness.cpp","gmt_create":"2026-04-21T14:57:03.8856416+04:00","gmt_modified":"2026-04-21T14:57:03.8856416+04:00"},{"id":"c36b26945bd5c41be92a4926b8f3a003","path":"libraries/chain/hardfork.d/12.hf","filename":"12.hf","gmt_create":"2026-04-21T14:57:03.886188+04:00","gmt_modified":"2026-04-21T14:57:03.886188+04:00"},{"id":"523379c439d6dd6e80c4a0a9b810cd94","path":"plugins/snapshot/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T14:58:18.883024+04:00","gmt_modified":"2026-04-21T14:58:18.883024+04:00"},{"id":"de22894588ed594e30c71d7793ba8bf2","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T14:58:18.883024+04:00","gmt_modified":"2026-04-21T14:58:18.883024+04:00"},{"id":"9be507263cf352b287af44392c08d8e9","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","filename":"snapshot_types.hpp","gmt_create":"2026-04-21T14:58:18.883024+04:00","gmt_modified":"2026-04-21T14:58:18.883024+04:00"},{"id":"4e25baf48a44d24a8c233acb024adc06","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","filename":"snapshot_serializer.hpp","gmt_create":"2026-04-21T14:58:18.8840495+04:00","gmt_modified":"2026-04-21T14:58:18.8840495+04:00"},{"id":"a704d9d09f17cd2bafd2ca5503c8a467","path":"plugins/snapshot/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T14:58:18.8840495+04:00","gmt_modified":"2026-04-21T14:58:18.8840495+04:00"},{"id":"b5cb56980d30b3c5e2719d0d87e36e2f","path":"share/vizd/snapshot.json","filename":"snapshot.json","gmt_create":"2026-04-21T14:58:18.8840495+04:00","gmt_modified":"2026-04-21T14:58:18.8840495+04:00"},{"id":"5d67d9232d3be86e9e06019f5070806e","path":"share/vizd/snapshot-testnet.json","filename":"snapshot-testnet.json","gmt_create":"2026-04-21T14:58:18.8840495+04:00","gmt_modified":"2026-04-21T14:58:18.8840495+04:00"},{"id":"e602c0b51903a7d2b2b9f8659b518ec8","path":"documentation/snapshot-plugin.md","filename":"snapshot-plugin.md","gmt_create":"2026-04-21T14:58:18.8840495+04:00","gmt_modified":"2026-04-21T14:58:18.8840495+04:00"},{"id":"c301941c4a936a7622e3c2d4c4e7d534","path":"plugins/chain/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T14:58:18.8845625+04:00","gmt_modified":"2026-04-21T14:58:18.8845625+04:00"},{"id":"9b6725b1cfd60ec40946706dd6f99b9a","path":"thirdparty/fc/src/interprocess/file_mutex.cpp","filename":"file_mutex.cpp","gmt_create":"2026-04-21T14:58:18.8845625+04:00","gmt_modified":"2026-04-21T14:58:18.8845625+04:00"},{"id":"f590c1185fbb4d474296d1770fc56941","path":"libraries/chain/include/graphene/chain/global_property_object.hpp","filename":"global_property_object.hpp","gmt_create":"2026-04-21T14:58:41.9547833+04:00","gmt_modified":"2026-04-21T14:58:41.9547833+04:00"},{"id":"066be1fde7b3232a078c0ab7eadbb6ea","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","filename":"witness_objects.hpp","gmt_create":"2026-04-21T14:58:41.9547833+04:00","gmt_modified":"2026-04-21T14:58:41.9547833+04:00"},{"id":"cb4161c07e6dfd4c4af1af88fe4a213b","path":"libraries/protocol/include/graphene/protocol/config_testnet.hpp","filename":"config_testnet.hpp","gmt_create":"2026-04-21T14:58:41.9553842+04:00","gmt_modified":"2026-04-21T14:58:41.9553842+04:00"},{"id":"55bc22bd32ecd08a0a502b603c69e431","path":"plugins/witness/include/graphene/plugins/witness/witness.hpp","filename":"witness.hpp","gmt_create":"2026-04-21T14:58:41.9558898+04:00","gmt_modified":"2026-04-21T14:58:41.9558898+04:00"},{"id":"31ce877d410b43a59ae8e84069d217b9","path":"thirdparty/chainbase/src/chainbase.cpp","filename":"chainbase.cpp","gmt_create":"2026-04-21T14:58:41.9558898+04:00","gmt_modified":"2026-04-21T14:58:41.9558898+04:00"},{"id":"09931459f68fae54afb88979ffd55b0e","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T15:26:12.4931541+04:00","gmt_modified":"2026-04-21T15:26:12.4931541+04:00"},{"id":"ea908bf3b792540b293380d2405df2a1","path":"README.md","filename":"README.md","gmt_create":"2026-04-21T15:26:12.4931541+04:00","gmt_modified":"2026-04-21T15:26:12.4931541+04:00"},{"id":"509c1750918b17167d058b5f1528df2e","path":"libraries/network/peer_connection.cpp","filename":"peer_connection.cpp","gmt_create":"2026-04-21T15:28:15.4137235+04:00","gmt_modified":"2026-04-21T15:28:15.4137235+04:00"},{"id":"51762eb7a9db71fd1b93f196bac889de","path":"libraries/network/stcp_socket.cpp","filename":"stcp_socket.cpp","gmt_create":"2026-04-21T15:28:15.414249+04:00","gmt_modified":"2026-04-21T15:28:15.414249+04:00"},{"id":"645d8e6ea333ab8b9be2b7e711c5a349","path":"share/vizd/config/config.ini","filename":"config.ini","gmt_create":"2026-04-21T15:28:15.414249+04:00","gmt_modified":"2026-04-21T15:28:15.414249+04:00"},{"id":"041c5ab0bad4a30c8e8c4053859b33cc","path":"share/vizd/config/config_testnet.ini","filename":"config_testnet.ini","gmt_create":"2026-04-21T15:28:15.414249+04:00","gmt_modified":"2026-04-21T15:28:15.414249+04:00"},{"id":"69f92fde51907bfe1568da2234d5432c","path":"share/vizd/config/config_witness.ini","filename":"config_witness.ini","gmt_create":"2026-04-21T15:28:15.414249+04:00","gmt_modified":"2026-04-21T15:28:15.414249+04:00"},{"id":"f61784c393035c7948a4317e8dcf5280","path":"libraries/chain/block_log.cpp","filename":"block_log.cpp","gmt_create":"2026-04-21T15:30:04.7526875+04:00","gmt_modified":"2026-04-21T15:30:04.7526875+04:00"},{"id":"98d1be79114cf1be689f3853988cf901","path":"libraries/chain/include/graphene/chain/db_with.hpp","filename":"db_with.hpp","gmt_create":"2026-04-21T15:30:04.7532214+04:00","gmt_modified":"2026-04-21T15:30:04.7532214+04:00"},{"id":"6fbf010286f4a6a3f06e8088c9988689","path":"programs/vizd/main.cpp","filename":"main.cpp","gmt_create":"2026-04-21T15:32:31.2917741+04:00","gmt_modified":"2026-04-21T15:32:31.2917741+04:00"},{"id":"b5d295f4241120c75ca1f223d1136815","path":"share/vizd/config/config_debug.ini","filename":"config_debug.ini","gmt_create":"2026-04-21T15:32:31.2923115+04:00","gmt_modified":"2026-04-21T15:32:31.2923115+04:00"},{"id":"b1479d6428f0dd1904cd3abe8f9761a7","path":"share/vizd/config/config_mongo.ini","filename":"config_mongo.ini","gmt_create":"2026-04-21T15:32:31.2923115+04:00","gmt_modified":"2026-04-21T15:32:31.2923115+04:00"},{"id":"b4112da6d842e6d4a4827e24ffbe6b51","path":"share/vizd/config/config_debug_mongo.ini","filename":"config_debug_mongo.ini","gmt_create":"2026-04-21T15:32:31.2923115+04:00","gmt_modified":"2026-04-21T15:32:31.2923115+04:00"},{"id":"6f528713f6038767a26fe7134516814e","path":"share/vizd/config/config_stock_exchange.ini","filename":"config_stock_exchange.ini","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"7f4d98efd3657e17fbc58c9714bc89bb","path":"share/vizd/docker/Dockerfile-production","filename":"Dockerfile-production","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"2a1a6ffdba8673bc193473db23d59eac","path":"share/vizd/docker/Dockerfile-testnet","filename":"Dockerfile-testnet","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"db2e7ab5c6a8e2b6df369ec9436ffa81","path":"share/vizd/docker/Dockerfile-mongo","filename":"Dockerfile-mongo","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"951b5b7fafdfdaf1eca79d8067f3b25d","path":"share/vizd/docker/Dockerfile-lowmem","filename":"Dockerfile-lowmem","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"38165effb8391debc3201ce79007fec0","path":"documentation/testnet.md","filename":"testnet.md","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"62570dc38423368a7faed891907fc203","path":"documentation/debug_node_plugin.md","filename":"debug_node_plugin.md","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"06073f9dbeb663e6a46caee8fc699fb8","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","filename":"mongo_db_plugin.hpp","gmt_create":"2026-04-21T15:32:31.2928455+04:00","gmt_modified":"2026-04-21T15:32:31.2928455+04:00"},{"id":"d421da24ce55d2a8d6d3fb6ca8320a1c","path":"plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T15:32:31.2933684+04:00","gmt_modified":"2026-04-21T15:32:31.2933684+04:00"},{"id":"153af24462ad511fd6565de7789689cd","path":"libraries/network/core_messages.cpp","filename":"core_messages.cpp","gmt_create":"2026-04-21T15:56:02.46593+04:00","gmt_modified":"2026-04-21T15:56:02.46593+04:00"},{"id":"930618aeb9ee3ba20d1a8b6680be0169","path":"libraries/network/peer_database.cpp","filename":"peer_database.cpp","gmt_create":"2026-04-21T15:56:02.4672658+04:00","gmt_modified":"2026-04-21T15:56:02.4672658+04:00"},{"id":"a37a8cd6659c40ddae05b63af21c8692","path":"share/vizd/vizd.sh","filename":"vizd.sh","gmt_create":"2026-04-21T15:57:28.9828852+04:00","gmt_modified":"2026-04-21T15:57:28.9828852+04:00"},{"id":"373e154cf173767203286437d4786f5f","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","filename":"webserver_plugin.hpp","gmt_create":"2026-04-21T15:57:28.9828852+04:00","gmt_modified":"2026-04-21T15:57:28.9828852+04:00"},{"id":"e282d94f35b97a76846b70776d2ccc25","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T15:57:28.9828852+04:00","gmt_modified":"2026-04-21T15:57:28.9828852+04:00"},{"id":"fdf208f1bae466f93c33f5df9e581f34","path":"plugins/database_api/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9834012+04:00","gmt_modified":"2026-04-21T15:57:28.9834012+04:00"},{"id":"34d746e22563e28738c4600d05c8871e","path":"plugins/account_history/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9834012+04:00","gmt_modified":"2026-04-21T15:57:28.9834012+04:00"},{"id":"e3fcd9cc1f0cfd5b50612d1c4eecf62e","path":"plugins/operation_history/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9834012+04:00","gmt_modified":"2026-04-21T15:57:28.9834012+04:00"},{"id":"dccdf5910777179735772fd2811e918b","path":"plugins/mongo_db/mongo_db_plugin.cpp","filename":"mongo_db_plugin.cpp","gmt_create":"2026-04-21T15:57:28.9834012+04:00","gmt_modified":"2026-04-21T15:57:28.9834012+04:00"},{"id":"ff3ecc7e45f4ec2f8258d010c3e739e6","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","filename":"p2p_plugin.hpp","gmt_create":"2026-04-21T15:57:28.9834012+04:00","gmt_modified":"2026-04-21T15:57:28.9834012+04:00"},{"id":"5d944cf7303ab4c04644e6f2964d2153","path":"plugins/network_broadcast_api/network_broadcast_api.cpp","filename":"network_broadcast_api.cpp","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"4e8688b368af6dc914b95a90b78d69c3","path":"plugins/witness_api/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"2ae1cf69f9a00783b163bef51ffbb862","path":"plugins/block_info/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"6a4a78406dbdd0849ee3ba490d08a84f","path":"plugins/raw_block/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"b351ad675c4e39f560f3e0425a47bb80","path":"plugins/debug_node/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"a0520874fa0a5f141c90a7ada0d15b38","path":"documentation/building.md","filename":"building.md","gmt_create":"2026-04-21T15:57:28.9839295+04:00","gmt_modified":"2026-04-21T15:57:28.9839295+04:00"},{"id":"7c3bee8a68b9c0fe23d4d4c39cc8afb9","path":"programs/build_helpers/cat-parts.cpp","filename":"cat-parts.cpp","gmt_create":"2026-04-21T16:26:14.4067781+04:00","gmt_modified":"2026-04-21T16:26:14.4067781+04:00"},{"id":"7992eefc6bdde6d2490af6a01bbb9444","path":"programs/build_helpers/cat_parts.py","filename":"cat_parts.py","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"7fda3f7c232a7832f681a3520b08a720","path":"programs/build_helpers/check_reflect.py","filename":"check_reflect.py","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"3dc1bfbaed7be58e42e79a2172bee9dd","path":"programs/util/newplugin.py","filename":"newplugin.py","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"800d3badf96efc4303cc647a1369a853","path":"programs/util/pretty_schema.py","filename":"pretty_schema.py","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"c075231eba29c3611900574409ccbced","path":"programs/util/schema_test.cpp","filename":"schema_test.cpp","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"e4becafc97cfeff536e7154901ec07ea","path":"programs/build_helpers/configure_build.py","filename":"configure_build.py","gmt_create":"2026-04-21T16:26:14.407439+04:00","gmt_modified":"2026-04-21T16:26:14.407439+04:00"},{"id":"8e6a83084720b465212fd2eb7724dc21","path":"install-deps-linux.sh","filename":"install-deps-linux.sh","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"8262135b8e76bae157909e6fcfb29315","path":"build-linux.sh","filename":"build-linux.sh","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"e1487f08842fe68bc3a5c32aed8e8eca","path":"build-mac.sh","filename":"build-mac.sh","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"94bb40a5d00a39c77fbe2491988b8212","path":"programs/build_helpers/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"23b7c8b22fbc863107446e05c12f4c29","path":"programs/util/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:14.4079418+04:00","gmt_modified":"2026-04-21T16:26:14.4079418+04:00"},{"id":"dd1855dc01a32938e488bda567ebd1c9","path":"CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.897534+04:00","gmt_modified":"2026-04-21T16:26:53.897534+04:00"},{"id":"70998edf5007397cb6d5221af3fcfc9d","path":"programs/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.897956+04:00","gmt_modified":"2026-04-21T16:26:53.897956+04:00"},{"id":"b95d3d8ef24dffbe6103b10e2bf9c52c","path":"libraries/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.897956+04:00","gmt_modified":"2026-04-21T16:26:53.897956+04:00"},{"id":"b4847b0f295d10c3104cb10005cfb417","path":"plugins/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.897956+04:00","gmt_modified":"2026-04-21T16:26:53.897956+04:00"},{"id":"e7535080fab3d6b21a819e3eb9b2041b","path":"thirdparty/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-21T16:26:53.897956+04:00","gmt_modified":"2026-04-21T16:26:53.897956+04:00"},{"id":"9cf639ed945c1a04288421e3b39dc33f","path":"build-mingw.bat","filename":"build-mingw.bat","gmt_create":"2026-04-21T16:26:53.8992002+04:00","gmt_modified":"2026-04-21T16:26:53.8992002+04:00"},{"id":"4124c90050cc8a14f7d7eaaefe2f6b21","path":"build-msvc.bat","filename":"build-msvc.bat","gmt_create":"2026-04-21T16:26:53.8992665+04:00","gmt_modified":"2026-04-21T16:26:53.8992665+04:00"},{"id":"33254d89526bb4de9bd007c10bbcc83d","path":"thirdparty/fc/include/fc/network/ntp.hpp","filename":"ntp.hpp","gmt_create":"2026-04-21T16:27:59.8391085+04:00","gmt_modified":"2026-04-21T16:27:59.8391085+04:00"},{"id":"a93ec3969f83e2cabbaff850ac40053c","path":"thirdparty/fc/src/network/ntp.cpp","filename":"ntp.cpp","gmt_create":"2026-04-21T16:27:59.8391085+04:00","gmt_modified":"2026-04-21T16:27:59.8391085+04:00"},{"id":"92d3a25396f4c53eeaadc4bfc4e55eba","path":"libraries/time/include/graphene/time/time.hpp","filename":"time.hpp","gmt_create":"2026-04-21T16:27:59.8391085+04:00","gmt_modified":"2026-04-21T16:27:59.8391085+04:00"},{"id":"13145676905a5071d9655152f5d44a93","path":"libraries/time/time.cpp","filename":"time.cpp","gmt_create":"2026-04-21T16:27:59.8396274+04:00","gmt_modified":"2026-04-21T16:27:59.8396274+04:00"},{"id":"8b5d262f61ba216b58b2e3c37eca49a3","path":"thirdparty/fc/tests/network/ntp_test.cpp","filename":"ntp_test.cpp","gmt_create":"2026-04-21T16:27:59.8396274+04:00","gmt_modified":"2026-04-21T16:27:59.8396274+04:00"},{"id":"77e0d7b407d3ca876eb04d56d3160619","path":"thirdparty/chainbase/include/chainbase/chainbase.hpp","filename":"chainbase.hpp","gmt_create":"2026-04-21T16:31:00.2573729+04:00","gmt_modified":"2026-04-21T16:31:00.2573729+04:00"},{"id":"0cd83f657a51bdf9c9bef932bb269738","path":"documentation/plugin.md","filename":"plugin.md","gmt_create":"2026-04-21T16:59:20.8396178+04:00","gmt_modified":"2026-04-21T16:59:20.8396178+04:00"},{"id":"3a1274b0ccd870a7719b3092be23a1bc","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T16:59:20.8401882+04:00","gmt_modified":"2026-04-21T16:59:20.8401882+04:00"},{"id":"1829eeef535c0801eb2d7f66c4b68902","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-21T16:59:20.8401882+04:00","gmt_modified":"2026-04-21T16:59:20.8401882+04:00"},{"id":"9cc5088ccba7b67d38635e02b78e5387","path":"libraries/protocol/include/graphene/protocol/operations.hpp","filename":"operations.hpp","gmt_create":"2026-04-21T16:59:20.8407576+04:00","gmt_modified":"2026-04-21T16:59:20.8407576+04:00"},{"id":"72f45d3ce938b9028a20c9f06c15db46","path":"libraries/chain/chain_evaluator.cpp","filename":"chain_evaluator.cpp","gmt_create":"2026-04-21T16:59:20.8412601+04:00","gmt_modified":"2026-04-21T16:59:20.8412601+04:00"},{"id":"3c69f30dcdc5f47af344481369ae9fd0","path":"libraries/network/peer_connection.hpp","filename":"peer_connection.hpp","gmt_create":"2026-04-21T16:59:20.8413337+04:00","gmt_modified":"2026-04-21T16:59:20.8413337+04:00"},{"id":"8bbc09ecfa758b54e3b7014bda5964c8","path":"libraries/network/core_messages.hpp","filename":"core_messages.hpp","gmt_create":"2026-04-21T16:59:20.8418364+04:00","gmt_modified":"2026-04-21T16:59:20.8418364+04:00"},{"id":"0c231b8c64571d7a6ab59f835c034b50","path":"thirdparty/fc/include/fc/network/ip.hpp","filename":"ip.hpp","gmt_create":"2026-04-21T16:59:20.8418364+04:00","gmt_modified":"2026-04-21T16:59:20.8418364+04:00"},{"id":"faf10b28c3427eeb5f7f5c7d3a10a475","path":"thirdparty/fc/src/network/ip.cpp","filename":"ip.cpp","gmt_create":"2026-04-21T16:59:20.8418364+04:00","gmt_modified":"2026-04-21T16:59:20.8418364+04:00"}],"wiki_catalogs":[{"id":"94ebe0be-e352-450d-90a1-28ca3b85f26e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Project Overview","description":"overview","prompt":"Create comprehensive content for the VIZ CPP Node project overview section. Explain the project's purpose as a Graphene-based blockchain implementation with Fair-DPOS consensus algorithm, its architecture as a full consensus node for the VIZ World platform, and its relationship to the broader blockchain ecosystem. Document the core value proposition, target audience (node operators, application developers, wallet developers), and key differentiators from other blockchain implementations. Include both conceptual overviews for beginners new to blockchain technology and technical highlights for experienced developers. Use terminology consistent with the VIZ codebase. Provide practical examples demonstrating common use cases such as running a full node, developing applications, and operating witness nodes. Document the project's position in the Graphene blockchain family and its unique features like Fair-DPOS consensus and social network integration.","progress_status":"completed","dependent_files":"README.md,programs/vizd/main.cpp,libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:31:56+04:00","raw_data":"WikiEncrypted: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"},{"id":"cf445dfc-f221-4e60-b841-e00e7be231b0","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"System Overview","description":"system-overview","prompt":"Create comprehensive content for the VIZ CPP Node system overview section. Explain the overall architecture showing how the main vizd process orchestrates all components including the plugin system, core libraries, and external dependencies. Document the modular design that allows for flexible feature addition and removal through plugins. Describe the relationship between the application framework (appbase), the blockchain core (chain library), protocol definitions (protocol library), networking (network library), and wallet functionality (wallet library). Include system boundaries showing how the node interacts with peers, handles API requests, and manages persistent state. Provide high-level component diagrams illustrating the data flow from JSON-RPC requests through plugins to database operations, and explain the observer pattern used for event-driven architecture. Address the separation of concerns between different library layers and how they work together to form a complete blockchain node.","parent_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","progress_status":"completed","dependent_files":"programs/vizd/main.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:39:03+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"e087f12e-0b5d-410b-bbf9-c7656e414160","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Build System","description":"build-system","prompt":"Create comprehensive build system documentation for VIZ CPP Node. Document the CMake-based build configuration including cross-platform compilation, dependency management, and build targets. Explain the build helper tools including configure_build.py, cat_parts.py, and newplugin.py. Cover Docker-based development and production builds with detailed instructions for different environments. Document build options, compiler flags, and optimization settings. Include practical examples of common build scenarios such as development builds, release builds, and cross-compilation. Address troubleshooting common build issues, dependency conflicts, and platform-specific compilation problems. Explain the relationship between build configuration and runtime performance, making it accessible to developers while providing sufficient technical depth for advanced build customization.","parent_id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","progress_status":"completed","dependent_files":"install-deps-linux.sh,build-linux.sh,build-mac.sh,build-mingw.bat,build-msvc.bat,CMakeLists.txt,programs/build_helpers/,share/vizd/docker/,.github/workflows/","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-04-21T16:26:53.9619336+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"d7d4a113-9b50-436f-8c1f-052d397874d6","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Node Configuration","description":"node-configuration","prompt":"Create comprehensive node configuration documentation for VIZ CPP Node. Document the complete configuration file structure including all available parameters, their purposes, default values, and acceptable ranges. Explain different node types (full node, witness node, low-memory node, testnet node) and their specific configuration requirements. Cover essential settings such as database location, plugin activation, network parameters, and performance tuning options. Document authentication settings, API access controls, and security configurations. Include practical examples of common configuration scenarios for different deployment environments. Address parameter validation, configuration file syntax, and troubleshooting invalid configurations. Provide guidance on configuration file organization, backup strategies, and version management.","parent_id":"cdec8606-b623-47aa-8501-03011ba583a8","progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_testnet.ini,share/vizd/config/config_witness.ini,share/vizd/config/config_mongo.ini,share/vizd/config/config_debug.ini","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-03-03T07:40:51+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"86ce68ee-34b2-4018-b7f6-32813ce68949","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Node Deployment","description":"node-deployment","prompt":"Create comprehensive node deployment documentation for VIZ CPP Node. Document production deployment strategies including hardware requirements, system prerequisites, and installation procedures. Cover different node types including full nodes, witness nodes, and seed nodes with their specific configuration requirements and operational procedures. Explain the node startup process, configuration file management, and service integration. Include step-by-step installation guides for different operating systems, dependency management, and build optimization. Document performance tuning parameters, resource allocation recommendations, and capacity planning. Address security hardening procedures, firewall configuration, and access control setup. Provide troubleshooting guidance for common deployment issues, startup failures, and configuration errors.","parent_id":"af2002b4-a118-45ea-823c-1a85dd576b13","progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/vizd.sh,programs/vizd/main.cpp,documentation/building.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:40:48+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"6cd019ee-bc8d-479b-8839-ab84595afae5","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Plugin Lifecycle and Registration","description":"plugin-lifecycle-registration","prompt":"Create comprehensive content for plugin lifecycle and registration mechanisms. Document the complete plugin lifecycle from initialization to shutdown, including the plugin_initialize, plugin_startup, and plugin_shutdown phases. Explain how plugins register themselves with the appbase framework and the role of APPBASE_PLUGIN_REQUIRES macro in dependency management. Detail the plugin registration process in main.cpp and how the application framework manages plugin loading order. Include concrete examples of plugin initialization sequences and dependency resolution. Document the plugin naming conventions, static name() method implementation, and how plugins declare their requirements. Address plugin startup timing, error handling during initialization, and graceful shutdown procedures. Provide practical examples of plugin registration patterns and common pitfalls to avoid.","parent_id":"e263dbfc-2149-444f-82e9-1a2e835ed847","progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,plugins/snapshot/plugin.cpp,programs/vizd/main.cpp,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-04-20T10:26:06+04:00","raw_data":"WikiEncrypted:FgT6N5UmoqQ/n0GhU4kWL0J+Fybs3wSrBZ8i488xBvorI6lbBGjTYhS7bWXZzNetCm3S8JjcFgc9memzvSTO1YQPmT49Uldgjtl2WhFXjcF3WJX4hC0AP6UDYCYSCpEQRv9FPzViWgqq1DAOKLH+wBLA4uPKXHhu9yy+0mxa4aF6S4miAF3erjorTWHLA6eZthaZDF/KtxoS72PiMdX7my+r/UgxX2mhhzK4HFwOQsfLffXQD0QEh+3jSSXo7zksFg4c4HtLPHVniAghLUc4FaiLk4QFZXlsjRxPv9BGuHwpHdYEuf1paaNdIBxZnU6TwCa2zP+eoetFX/hv9cLPE3l34RJBTe3wc1a7XFlDFibG7B0J+cLTdLAoBbZhRWjZtE1jZ38MG19LiU8RC+/BMnG3Kez75HzaUyTdmrrQqVdzv7kWmLDr2ThjIUaJ8DQkZy04RHRESRIBA1lgvJHZvMT8NcvJs61mGdbbjPgm//7a9yxi7My3yX1iwGRqn3a/Lqro9m0YGAhxPL3igGWL4/yIH8gO/GppVOau8yklmHGVQu9sgROoFomlNcZjIUhjPnw/uM0DWMPEnpH8Oc+fqNXXVp8wpQDodiD65535YGFCx/7KABM6loSnvsPbRWYb9pV0KYB0b14G8jaRpOJbgJCApsYhcqTu5sydWErz6v3gUjTszz6cmK/3bvjy0SMoAl7MNDMYebUs8cZiR+8GzHYcHPs9ryxF5ofTQio5BxnxbKH1X7JB00SJVWogJHRL1KkShj5Asor6n/UugH/W+tclRJ/mK9WdtxaV1ifY61reOTJUCmD/eHgvDixPIrC6Z791SNiFzhWLqSJBwOIDrud9LLoSUYWRST13iunjJcEYVzRGkVxR2OU6rsDDFeb+ECIRi4WVM5Kte43i303/Po3fmPSmSdts5p3TU75MteEn71R5ONoH1vNowPjsyuyqGtNssow9U0prKW0nE5FZbXXi3IXUkFWtWroI0kR2htD6Ef70I+bG1C8j+UlcvM9Poffck/PbEruGH+aavXpaxMRcayIT6SGBEy4u+Iu6nughmmP9wKpSzEpStW6ZqgNOnYuOBqJihAHjutfprPUcZjdoifyNNnKRNxBO8EPMBsrIPEysvB7ubU5r0Gb29skV8Wb9LVqm5nGLBC24s8G5bmDfHCqyVxbx+b8AJOVVhAu8dKQK2Pt92R+PXA+VoTQEc0oaxgvsNPJjBx0W/dItwgUB+nItoqSytXeiucfQhINaKD6Ws/KvGKk3mRaS8i6KOJB0V0RoWpwWP0ZjUCGYZXr1i65I9ni82/QtacyhPKeR/dV508moShmcw2S3eD8BqmGKSnPAF7tH8RzIPcvuOFYLH9e7FNcoKV2NhKeNUgZdvVwTcf1NTZTx2ri19AUCa4vIawJUyhQ3/r7UxLrvqBxK8daQ+thKHrXe1gN1K0XAMQoNWSPy+srNGqhpD427EDMl03T99zDRZ8LbeufN2/KsYohFnR/rMKAsI/E1L0YR/5ZNtEKxqNbr68ADWZkE2Sup6GtbMqDmmgYV5G6HXTQsV5ZXSRJnextrT5JNJEoLW+HfSOESLc4syDu5fdoTXi7i772CuEzigL1YKaV1TzR4fpoHzc/CZh6rVObeBEVxqkaLniq228ZuM2e6omqfcHId8BjTE7hi5cBczbOJbVaUEErzMdIvr0EfHByOxwctdQ7JGbMQnxGnYwv2IqQgD1roNER2MFVMmabYAxqqlVGJvH4bRS4uAIK9R6j9O15/bsjfnsWIutsiUJq7WtMZ","layer_level":2},{"id":"e53ef043-5934-4664-b2ab-61ca20b77abc","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Hardfork Management","description":"hardfork-management","prompt":"Create comprehensive hardfork management documentation for VIZ CPP Node. Document the hardfork system architecture including version management, scheduled upgrades, and backward compatibility handling. Explain the hardfork directory structure and how hardfork files are processed during node startup. Detail the migration procedures for upgrading from older versions, including data schema changes and state transitions. Cover the hardfork evaluation system and how different operation types are handled across hardfork boundaries. Document the rollback mechanisms and recovery procedures for failed upgrades. Include practical examples of implementing custom hardfork logic, adding new operation types, and modifying existing behavior. Address common hardfork scenarios such as protocol changes, bug fixes, and feature additions. Provide troubleshooting guidance for hardfork-related issues and validation procedures for ensuring successful upgrades.","parent_id":"897392ae-54d8-437b-a160-4459c53e5848","progress_status":"completed","dependent_files":"libraries/chain/hardfork.d/0-preamble.hf,libraries/chain/database.cpp,libraries/chain/hardfork.d/12.hf,libraries/protocol/include/graphene/protocol/config.hpp,libraries/chain/hardfork.d/,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-04-20T11:24:22+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"f9d301a4-5d12-4abe-b38e-5f8c2b3c23a9","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Transaction Processing Pipeline","description":"transaction-processing","prompt":"Create comprehensive documentation for the transaction processing pipeline in the VIZ node. Explain the complete flow from transaction reception through validation, operation processing, authority verification, and state application. Document the transaction validation stages including syntax checking, signature verification, and operation validation. Detail the evaluator registry mechanism and how different operation types are processed through their respective evaluators. Include the transaction object lifecycle, from creation to final application. Explain error handling throughout the pipeline and rollback mechanisms. Document performance optimizations like batch processing and caching strategies used during transaction validation.","parent_id":"478424e1-4bbd-435f-ba13-944c9e421a4e","progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/protocol/transaction.cpp,libraries/chain/transaction_object.cpp,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T07:53:30+04:00","raw_data":"WikiEncrypted:pze/wTPA8hT9dADtWGlHVecGIju168riPHUw4TY8/AOhja4aeOzUlmfgdY/KTiokGkE0pwevgTXyU4//H92NNxIZ90VqY2mbD0yvEYoazibaKq9O1InwoMVUng4EkSsQB9oHT43atze2e4KWPpApnOpuXM/kNSqRnBSucHXjsMd+Tjj5PradoQvpJLU8cQA/Z7rNIJC0cpQOT83jnvDj0V6NqUee6Tv82FRi8ClWzP6EZWLJOwLqfzlzlavNBvEzOVrawfC21Hgjv0XI+S8iljUPDEK+/k4kPqQwBtNAZVNvSxdOMdQQd4H8dHYj42tsWQ4M2CHxt/jWDy4RZ7gusItaB76xjlAkrZESkdwZBkd//EMqxuKfE/A4/LQdGHNOTm+uaj6m8t76OHM9h4VR9V4eueF6t3bMM8jowIFMUsjHBlU+dkSn/NSR6LigMB4jIbNt61XMmwk1mFvwxws6PxL8XqLxS6WdTzKfDE4/IBBD7TZqimc2cA4z2+g/OZ39ZEQlIpiv8/TzTdAWlsxWrctDiJB94u/AwbbOehhEdFH2nS66e1wKUfknITsWMgsuyzC0CfWRd/fwrEG58bYEi74d+wo1sJlOuZEBaSfMiOosE7wvOH3oQ8Y2UgwJ0vjzgZUiE9G0ScjOOZWniMF0bqPEe06ztnJIGeefrHJOWjdIfN1dkS9ufS455XmgRlNSE/NqG4hDmxF9R9NWjkexlSw2BcqQfD6budkT9gXrT+DmvhvTAZNbhg3rbqVluS4bL3ruC2r+ajzWHoYzImenOWqpDXtY3PDdWzlF25dvXKPOiFCgnpIhx4/aEBmvfoFugNyi2rgkZ/GxUvgLFwYxUWsrXzOW3ghrF82KYZiOzclpGc9/z4O3aOx2rsywhd3+bwSLqnWiTUPCcJaACADsGSIk2O+4SSb/+dGgJEi0+9f+XVUkdntAmb/GY0r1Pj9Aggwk6gllw1jhIAFrhSeeN9YQkHHngVWQDTIqpEZrLiK8l9KRp0xOidl2MSvQPSjBk4h2qqynktmU6u6INK0QjvFuStt1EBvl9TX3ObV9TqdxQyTeD4wyygPZWQEip1CHg04iAihm5uA9siBylj/kLKn9MnuWugqJDyQmvMVc7PXW2PjXtPzhW7/Jb/SHMJoTD4Gr9dGOx46lLwizMVmH+Wdgu7ThE5TRiLm3zbM6Vva42JyyhlKovJOwOzbdE7oL4PEURcpIb7CwrNkCvuOclVRFhgGE6YTkuBTdHLlFpLoInX5qE2OW9+ydHnq5m3kxjp0jqHR1FEndp/SOAgjK8j5GUBfktjso1ePTCXqGifq82fcPCltrzG7k2QOtOSECTUa+pOeVnhutaJ3CR//hRALu3mrquQnFk0tLrX117kwCT9zFNRljPROygJRvN4BCTzDJgnqakMlqteAIkiRD3Fb0oHccw3FqJPY5lOQvvyGOgQeuBimDKH34MRTRl3pkYQbHOqjUqUi035eAfFu0Rvt/1KkKcP/6anglXytX8/wCssuFHVX8WLr/XarAK8wkI0F8fuBcwaifM6C4xWQNCD3dZMCNDxfik3SCqkRtAzmd1xC3HA1SQ5I/qlbrtzwC","layer_level":2},{"id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Chain Library","description":"chain-library","prompt":"Create comprehensive content for the Chain Library, which serves as the core blockchain state management system. Document the database.hpp/cpp implementation that handles blockchain state persistence, block validation, and fork resolution. Explain the chain_objects.hpp and chain_object_types.hpp that define the complete blockchain data model including account objects, transaction objects, witness objects, and committee objects. Detail the fork_database.hpp implementation for handling blockchain forks and maintaining consensus. Cover the block_log.hpp functionality for efficient block storage and retrieval. Include the database API methods for querying blockchain state, managing object lifecycles, and handling state transitions. Document the evaluator system for operation processing and the observer pattern implementation for event-driven architecture. Provide examples of common database operations, state queries, and performance optimization techniques.","parent_id":"70d0f804-ac06-4c37-9779-b30d8f137419","progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/database.cpp,libraries/chain/include/graphene/chain/chain_objects.hpp,libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/include/graphene/chain/fork_database.hpp,libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/include/graphene/chain/transaction_object.hpp,libraries/chain/include/graphene/chain/account_object.hpp,libraries/chain/include/graphene/chain/witness_objects.hpp,libraries/chain/include/graphene/chain/committee_objects.hpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-04-18T10:36:01+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"CMake Configuration","description":"cmake-configuration","prompt":"Create comprehensive CMake configuration documentation for VIZ CPP Node. Document the primary CMakeLists.txt structure including project setup, compiler requirements (GCC 4.8+, Clang 3.3+), and platform-specific configurations for Windows, macOS, and Linux. Explain build options including BUILD_TESTNET, LOW_MEMORY_NODE, CHAINBASE_CHECK_LOCKING, and ENABLE_MONGO_PLUGIN with their effects on compilation flags and feature availability. Detail the Boost library configuration with required components and static/dynamic linking options. Document compiler flags for different platforms, optimization settings, and debug/release configurations. Include practical examples of common CMake invocations for development, testing, and production builds. Address troubleshooting build configuration issues, dependency resolution problems, and platform-specific compilation challenges.","parent_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py,programs/build_helpers/CMakeLists.txt","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-03-03T07:53:46+04:00","raw_data":"WikiEncrypted:g3OHqDqjdBWAhmAZ37hW4JJS2u8qzwOVBZXve9aVGP6gazow1Wn8Wd0+UNTa//LywYD6BGd6YGJkamwOkpXAoi0OlYTJa1FWkUUdxN1EH33gTvgfxPrMV7qyTVAROvgnOaS+tl2HssNZt7914i9BaqorW50sTZye5RfdS89LYex/7mydM08IxLGVg4gJKjYPQuSdcpIS1hg+PsDlN9X/Ug8WYWzJ+yxiG9mx1LcaQ+EI6rrhmGEdPeGU6Qw9fk7ruPSqXVu9l9r4mKjSvUhBVKVkT1jFCBng1YqT9JGF0Ab6sCFyIsYqqszQOLVi+oQb1sqQjqb3zoWeB3SFa1Lms0I815Os4GqTE5eta8dnR9ObaTP2AARVEVUdZ6XTwAhUmyuVXzTyZN1URmGpLwWgMrDc7yhhGMV7769Lp1+4GlGgsYH3BI4ib6bfIlNusoofQp42/eD+SyU89DesRdReUag/QKOjfpsM4gI5MmmTVf7/VR5anxsQqwRyee+KZc9tNkW8u1ACyQ4rBstC3cBbHCmXMO3IBU0SyeskR3omlFced0DsX1iB9QuorjlKPKOnDPGIduPawhEA9p2q/FGQlRvsy69nI4aoEAtK8a1J2btjSCNTptMk8up5/UXig8N3WCwoOHQWylIeW1FS+voCO++HTscJGW8SiGRJ4Hy4okzLnJYhSbr2PCfyU0Ky/55gZOzwUC0tUzLaYJFPT6DhdVrucg/2QGwEW3Qr9xTXZWw3dbwyyJruOZAz9myg8yALLUnLa2oPa6JVEa8rMEXPYxLwUtxTvUz/9bta1Bk+8fV+yOKErm3S3c1Iy4rvdFrAw7EnK51nRMEgByN+6Mhz2At31gy/QH6NlKr9W84zJhxL89GRL+fFeY+cqb+D67sAZwA5Os1+hmQnNA0+Br0N5RCQFesEkPBNwX/P+dCzjBFVVFQJisw5esrClIk6Tyd6ZKfkBanNs/6jz0xhs4J4cSZEuVF1pZ5EuixRGZW9lG1ggwrToUFbxK/vlC48sFwKgMqKHoGLc3hYxJnNlOBzRmeUI0NkdGyBuynWi0YwdOhD+09MwmNRaykuqjMww/WUUvF8ZBftLHxEbkRWve/phBWR3zEpEWL7hxR0ofgKgm3y1glXck1Z4D6MFhfdGwNSXyxqBm/AAmQKEXGL2XLWC6HndhK60NNddB6HnvXjUpoJGUSL27pegS/wjGD2vIA5HXH68AzH+yt9UEj1PKzxWR1Zz9HaStw5nObACNkxOW4w/+j74auyHjuFC3/Hivjjf4vmpEAeRih0rkX3wAoDqZyG7g52qWlnNwPy/KoX2pJd87L865JOVDOXYigrgrSgb2t/CZVhSYYvk5bLD5RxJIbjyewxJ8dsPJ3k9edjffT6KwJ6N53zENqv1r6PPWxM2OVhkwbnKaIw9jBL+sA41LyFEcDjG8lzKt2jHbZvSlGkFf/GMK8ULEEMcLmhsz9337fYZohcNiYN9XyRV6WIL4steB3eN0xB7x25P+N+SzYXoVP4WJdaVruEIzfzwoN0yC4v9dhAWgq4exjh9o3QbKTxrsDjyG0PjP4gBYGypP4906w87pWPHheId+lDzjmGW09YAmm6Hg6SB285rTwUs1mbeWfEq3Xg4wqmBWF8gQp/ux8in34C2cYdn8ytE52DOq5OZbPQ4L9+/cMeoXuJZUBBxogig+Q8Qa3pwTCeedNxpddMOO6/qrfMbIaCm7xlKAkvQs31RM3WucVcQeDtL/0CpS/ECiSuk5lvuqy7Ua3KtF22KFv4BRoxy3FZZTUSw76br3o0DmfPWrDJYT1VoRMKMjztGzsy9kF7S5xcml4w3JpuWP559CFPYHvxznYSLIm6QhlLbIUKsz9WGweCxOnj09bqNE+GvddfuRisAa4=","layer_level":2},{"id":"b73e76b2-16dc-4990-b2b5-cc63b10c4235","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Unit Testing Infrastructure","description":"unit-testing-infrastructure","prompt":"Create comprehensive unit testing infrastructure documentation for VIZ CPP Node. Document the Boost.Test framework setup and configuration used throughout the testing suite. Explain the test categories including basic_tests for fundamental functionality, block_tests for blockchain operations, live_tests for historical data validation, operation_tests for individual operation validation, operation_time_tests for time-dependent operations, and serialization_tests for data encoding/decoding. Cover test execution commands using make chain_test and the generated chain_test executable. Document runtime configuration options including log_level settings (all, success, test_suite, message, warning, error, cpp_exception, system_error, fatal_error, nothing), report_level controls (no, confirm, short, detailed), and run_test filters for selective test execution. Include practical examples of running specific test suites, interpreting test results, and adding new test cases. Address test data management, mock object usage, and test environment isolation.","parent_id":"5cb1abde-464c-46e9-b4db-0d0e7871bd8c","progress_status":"completed","dependent_files":"documentation/testing.md,programs/util/schema_test.cpp,programs/util/test_block_log.cpp","gmt_create":"2026-03-03T07:29:31+04:00","gmt_modified":"2026-03-03T07:54:54+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"54f83d2e-e538-44ff-bb7b-d59f5c658704","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Debug Node Plugin","description":"debug-node-plugin","prompt":"Create comprehensive documentation for the debug node plugin functionality. Document the plugin's purpose as a development and debugging tool for blockchain state manipulation. Explain the available debug APIs including debug_push_blocks, debug_push_json_blocks, debug_generate_blocks, debug_generate_blocks_until, debug_pop_block, debug_get_witness_schedule, debug_set_hardfork, and debug_has_hardfork. Detail the block generation capabilities for creating test scenarios and the block pushing functionality for importing existing blockchain data. Document the witness schedule inspection features and hardfork management utilities. Include practical examples of common debugging workflows such as creating test environments, reproducing edge cases, and validating blockchain state changes. Explain the plugin's integration with the chain plugin and JSON-RPC framework. Address security considerations and proper usage in development vs production environments.","parent_id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","progress_status":"completed","dependent_files":"plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp,plugins/debug_node/plugin.cpp,plugins/debug_node/include/graphene/plugins/debug_node/api_helper.hpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T07:55:19+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"52f686b2-cbe8-4c30-8b82-c88c1822aa0f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Installation and Setup","description":"installation-setup","prompt":"Create comprehensive installation and setup documentation for VIZ CPP Node. Document system requirements including hardware specifications, operating system compatibility, and dependency prerequisites. Provide step-by-step installation procedures for different platforms (Linux, Windows, macOS) with detailed build instructions using CMake. Cover dependency management including Boost, OpenSSL, and other required libraries. Document cross-compilation procedures and platform-specific considerations. Include Docker containerization setup with pre-built images for production and development environments. Address common installation issues, build errors, and troubleshooting steps. Provide verification procedures to confirm successful installation and basic functionality testing.","parent_id":"86ce68ee-34b2-4018-b7f6-32813ce68949","progress_status":"completed","dependent_files":"documentation/building.md,CMakeLists.txt,share/vizd/config/config.ini,share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T07:56:01+04:00","raw_data":"WikiEncrypted:6nDTd1wU0hYJuRoAJhne4b5ashHc1omfgy81/++xSBe2w9rUrWuXSbrEHiZ6Cy0q5An6XvzHHLEqEmHIyn2epq5KEULOgH2CqfXy5wyGH0EduXcfrSX56fWPXFubhJoHVQNhHkotTEhKINivrUKUNsPV6o/SCw0uS9y0psxcKPtjaDoh0Fsz18Pdv9IgWC70bflhQsm2jmkHFIc62gg8wOTFVxbF44Nq2KVMgUmZu8HHDVmcWYlGBJG4KP3DT1WhmlX7YVXdIyz/7tiSMjzEmTAQvZZnyO7dKtsVFg3ASsOiAFqYVsIAD2SdlPu/dd4xojgsZw4HhAKnTZn+evhBpNEpL8R9UK82ostEvM0NLTbmE0HKj4B4RySYX7KYg/1d2bpsvrnoJ/ZhVZ8+9AvHl2H5pBA9HcIqHHTTGWu/WnGJDaaSjUfCPXaKPFx4joabBkzYJin7GRLyH+5IZNHA6n3VowgfhsraSEw/MnNETir9SG5GGrWTylTeglHHrcie14oBS34syZT+fNopbAHIhb02nGx/6OCLZ93UO3EGJgnIPuGoFjBUQoQNuOYYjLOAGMP/s+sfVM3r/HZHBua59+e/1tldVB/S2mDsKp26kPb8mx7mr2k/G7ZiBT9K41KCmTJsTej2HHTu0Ht9v/g6hYB9YXKnes9JogX33PqeOULXpDei3Xh9WM8PlpHH+Z9tHuDr+Q6CI5yHVart8aTTkL8zqZFHU9Bm9Ann/Nir98TTITDtqGSvAC+73P10xOYmx6FHJlBkoD+dc7yYj+YQF5ObJ3UCsFNrDQUGXpUUsQiSJkmzKzNwLSHkn0VHNi2webLwLUngr9FCvC/l4GtYDDIR0T5p5nJaaog5uzhpZiGACLuZeGcg4/VOQOZ4USyuIqDviAtW1szf7Okr5nIG3LbRQ9SN1zIGrTkdLys3ywOkB2ZE4kiRq5+GYL5cWQJMeWBkMo3pSPrk6Yv/4zQs/h3E1T/C7t+woDjnKOt+Wntxx2CrHFr7dWF+bWjfBTmGxufuACM44zSCzhOiruhjAnz71o70QjkErs3ZDcBYfB+ilY35E4CtfUoS9G4sNESCs4tQ+qt1zPgWOKYXR//oskpoDuzS6dAEiASGk9w0r7hEKuNo/gDh/qkL7UV3HebH2KL6Ugt15CizV8jt1wVKKxi/n1rsQJy7Sj080qAZtdDosKTgGzOwW0GXxC9h92lY/2ev69kX4pfXel0X1+l2LkwkOUqf64q6OSnAmzKWC903+LQT0RnvWZKVioCDvIGH9hSjaBI9wTHVoocTVmhPLLSj76MSfVnvx/2d0AUEliHgZGNzY7KlEJxsQUEc0ZjkXwY7BQwVKrOL8boU+LyTxj8zbBoMmaEykSzX2qgSwLOd1gEsM+jXNh14gKTgmUmO81ca/j13pbb6UIn6KIaAZSQv4dht4V9WEdvUqG+o9w5HClkedaVicqnp2cdRABOBYzxqZvEaumXpOtEg2YhaXBtv44HwWWahfIlw4O5DbN8+kiJ8G8GWQbKikFzXi+5/jDhEgYeNLInwwXK5bZ1ZYQZlLrVVgHDj0SkGxKpw5Aw/vIuOLro4OvglrGOXmuo6IUXnA/5Sz3eCRnEcsSND5LWjDpt6LskiimzqDwvjDD1Pl6sd9EGaILAbu6DSNyaU/xba0wiM22V4Pu11P932NcUzo7155XM9ungXueuXGtu6w/Gf8m7nGscdJw5fqfk1uLML5/6MFsG3RjtSzTgpiPSPNaIjHy3OEC1yI41UqM2FYg33NLyBV0/cmiQxGsPPGKhSp2mJVRVT2+ncIwxcNw==","layer_level":2},{"id":"5d0a9e23-70a7-4884-81c4-820d7ff7f354","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Operations Definition","description":"operations-definition","prompt":"Develop detailed content for the Operations Definition section covering the comprehensive operation type system. Document the static_variant definition in operations.hpp that enumerates all blockchain operations including account operations (transfer, account_update, account_create), asset operations (vesting transfers, withdrawals), content operations (content operations, votes), governance operations (proposals, witnesses), and specialized operations (committee requests, invites, paid subscriptions). Explain the operation_wrapper structure and serialization mechanisms. Detail the relationship between different operation categories and their hierarchical organization. Include examples of operation creation, validation, and serialization. Document the deprecated operations and their replacements. Address operation ordering requirements and hardfork implications.","parent_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/operations.hpp,libraries/protocol/operations.cpp,libraries/protocol/include/graphene/protocol/chain_operations.hpp,libraries/protocol/chain_operations.cpp,libraries/protocol/include/graphene/protocol/proposal_operations.hpp,libraries/protocol/proposal_operations.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:29:14+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"abf01aa1-e77f-4a65-b1ae-ae4fed1d0ae1","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Database Management","description":"database-management","prompt":"Develop detailed content for the Database Management system that serves as the core state persistence layer for the VIZ blockchain. Document the database.hpp/cpp implementation including the database class constructor, destructor, and lifecycle management. Explain the open(), reindex(), and close() methods for database initialization and cleanup. Detail the validation steps enumeration (skip_nothing, skip_witness_signature, skip_transaction_signatures, etc.) and their use cases during block processing. Cover the database session management, memory allocation strategies, and shared memory configuration. Document the checkpoint system for fast synchronization and the block log integration. Include examples of database operations, state queries, and performance optimization techniques. Explain the relationship with chainbase database and the observer pattern implementation for event-driven state changes.","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/fork_database.cpp,libraries/chain/include/graphene/chain/db_with.hpp,libraries/chain/include/graphene/chain/shared_db_merkle.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-21T16:31:00.328922+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"7a4009a5-1f30-4ff8-9a80-64f1287c06d5","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Node Management","description":"node-management","prompt":"Develop detailed content for the Node Management component that handles overall network node orchestration and peer coordination. Document the node.hpp class implementation including node lifecycle management, peer connection establishment, and network topology maintenance. Explain the node_delegate interface for blockchain integration, including block handling, transaction processing, and synchronization callbacks. Cover node configuration methods like load_configuration(), listen_to_p2p_network(), and connect_to_p2p_network(). Detail peer management functions including add_node(), connect_to_endpoint(), and get_connected_peers(). Document network broadcasting capabilities through broadcast() methods and inventory management. Include examples of node initialization, peer discovery workflows, and network synchronization processes. Address node state management, connection limits, and bandwidth throttling. Provide troubleshooting guidance for common node startup and connection issues.","parent_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","progress_status":"completed","dependent_files":"libraries/network/node.cpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-04-21T14:56:29.6496546+04:00","raw_data":"WikiEncrypted:84sa6bLhPDu+UNjxUZw5rBAx9KYoUICf6oS5DojEq7h6OODVm92LmG6NSFskdLu4/BlwSqG4Jzo94ijeZaGGCOMnja8I3tGAEbT+3q+n8m/dw+d6coAvelXNpimAGqE+UgFSwNQ+QleFS2KnlnP0Ei+AyYS+W93RhzWk27zbV8GPjpKgme0so6woQQiGN1PmaTl8u03kRB5fRh9sxqVA8qa8YqnyO843mBnm8gceC1VG3ZkElSRJiah67i4rB8mwgmdDzWJDST7UlTgRtRQ6kxvZezrE60FHupzXUoNpmUzeCjYMp4HkB0VGqrOY7Q7zRwtBoyE2zfnXaZuAc8wCdI0TDc8rUfDnRTs2NEQ2+JDZfNlxp+Z5uhT2mCkfhIl0i8ciNT3yXwkxKft6tBOl1KVNCygqrecBFFjE2BprTsr8xv0rYl9g4nMfF8Q55xZxtZ0nrmobnFWDDLiF+5h6wM/rDMGbj5E/+UASJZFSPt4j/cQEKAjp5qI5Axm1BIDHQNDHicG76LbRl3iucTkM4QxCdPYuxcfR3SmzTeFQs2fnkQZKiwMAdWH9ef+B2FDRSverFsTbZg+sKOOw1MpmhghN9EtU6vwfWNi3TzrRj/VRfEnXqE50oX//jSWPsHota4t66ggpqucNRGurBl6aZfFkRXCSFyaYCRmH1sFMinKNS0aijN8tv6oPCYRS2atr0kIBzAX4Ru6MibCtvg80eKvDYujvZZr0bTH6Uh0fmuZwOX7YaDUX1KwBMuja4CmFymM7SGjnkJp/EI44GraxO1o0cuX/hnt5+jmnRqxjqQF5wJ8Tngw/Q3amWUMURWQhBFLGm5Af5QL4Hw5QDvbIJOl/gul82CDG6CC+TP4yW2TFhreAeUNMT8V+n8elOHPgLu7D1EtrLPjg1R4eU1pk1dIRJzlubWIspbm+ymQmlZzwV3AuDT3Eyu4iaY1qta/ZACGBg/DAHUgPDJIExAN5WVclSnIgChTAuOQoEQVMKRVb8oBis85sOEllEH2leXd6p4/vGKuhtX7F70sXWD/OrVT0KA5r/NX/+XUPqKH9WhVgt+kDGu/JcRKm/4MHupYjESCvRTu6orYpKaPYUC18zemoAkkHISq4eaQ4oDoCeyD3T3whl9FqTx4+RoYOrkMAStdijoz2OhY+PRgGaOgiO7MdjnDpj8zlYqbG8A9M/1Wal68lu5FLaOE8slWUY7e29fDGlQUDuUmkkx4FGt1XFM4ID7WgsmA3aNs2miYR/6ROruJVnMBP40Jp64j+HTyBlmE3zphn5KoQK0vPTcWzlXefUYsqxmCjwJ3xGytBa3Tf5p+pNj6gFMNTY/vP9d2W3IRG9Fanzo0hv+MAC4R5VLyipO0vFhsxx5veCg9bh8ZWZW5yobkatfzV/X+gS/CqtWBHf03gDsoxYbdfeLYXcrM4KvREqgVxShOXEBwCdo/g+ukZJkzzc1QYYqEn/Hptz4r8ByAPMzclKREd66MZDBbCj1goZ+J5MWyfy47ZXPJ10iT7neBSO8ggoQGAEs7RXp/SmzdmpYPRG3ScDN7RYIX/K1KenyTNlLuSXQYU4dvS4LmzX9hm2TAL8KScg6z4NSvtYSUR91oZ3EQFL+anrRDjR7TyasN4TdhENpsO2LuGTCeCFqGfDEsPfm06cB42ecQAwzAdVsOaHwhnpibENAAy/M8qD+tDmEiYAkqRDN8FLaIYjC8rRxUHQlx0uamaSK49tqLLd0OqNnpbG9HcJaqr1J1FjhffzOh5q0p4R1KY4ekSD3081e+XuggoOMzQfaJrMWcu+qIA3LFPGuBrC8J1ABpqqdvmYcsiO3d2aE1g1C1get3PYOByvGFsRCDu","layer_level":3},{"id":"32a0c134-6f79-4a2e-acb0-056d42e1e7d9","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Core Build Options","description":"core-build-options","prompt":"Create detailed documentation for VIZ CPP Node core build options and flags. Document the primary build configuration options including BUILD_TESTNET (enables test network compilation with -DBUILD_TESTNET), LOW_MEMORY_NODE (optimizes for reduced memory usage with -DIS_LOW_MEM), CHAINBASE_CHECK_LOCKING (enables chainbase locking checks with -DCHAINBASE_CHECK_LOCKING), and ENABLE_MONGO_PLUGIN (compiles MongoDB integration with -DMONGODB_PLUGIN_BUILT). Explain how each option affects compilation flags, feature availability, and runtime behavior. Include practical examples of CMake invocations with different option combinations for development, testing, and production environments. Document the relationship between build options and resulting executables, shared libraries, and plugin availability.","parent_id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-03-03T08:11:41+04:00","raw_data":"WikiEncrypted:+hgVdflPLL0xmma3oFcNhzO50UdlcHF7zsXDx81IdubJW/ei3OO55+CdCQ8q5WiMdgjekSxvQIh/JW4dHdtvRsVOk97oJYxDnpMU2nARwm7MPVOE1fvGf21aemNsnNtFwaR6q/t3BG8xZS4vVWZKT5owJ77uYsNkUtyJqPayPXgZ6JPk8AgN3ErlK0xSf5sEg+aXImxZoamSb1RzUCLe/AJrMfwO/39F8fRnlooSObSAG9972AB8S3z8qkdT+/NvoP7Yu4c+O4xbkxSPRhVqqoDVzk2WqnvhZkuaibwIrH+emKKGGpww3D5gW5+moLgsLDC6m73VZEeZGSxbE7nms4iAyAJOciJRbc/48yTJ/q3q9oq0k/pV2FuB8A68A1zDWZAlutbh+29TzGfMBPNP1Wxrhno/VTrHMYsiQJOS6dZRxbbN0J/ByB5w5/JmntWDkKeEvOWRKrsw3CMHsKX66UataOYI1UWdk2eEDrSg4SRkNcr3T0prOUhOLk2WM73mmQYCcx/khTM2OtOAJoTBpshyseGs2nk+BdX6kCLmTglTkyiqV+OF0ycuk78gFPSyOQwkeOd6iPGQfzI3nr9VnuL8WYk7kBH9BCJcQTHkwRQjKZejrIH3O5WrLuzX+w5CTP/BrEW8dt29CEh/0s2L78fJo5pCvOsQslGF3j4tRYrDUGtDQ54GiDt0iYCnAIfzF27DbyQVNIkiMfPP9fmE0FoR6wYQKc7FT4NfQpMKTV1xjOzsPolWe2rzXbormwz9pfS0XN3kuarDHx1/UsspkBtInazzzduegUsyG5o1YBrMcnTKcmqphnb5eaQ3+QDWGjsouQfpiCUvowvf7Ajz9YMLtLvcPUK6fTnv47i5C0Ny5eNSnPexPKX+o2LEj1I46MTt2FZz9/UymAj0n5UlOpM297SrQ+WQoJBWKjh03W1x/aWrbpWhLOwmLQVUDz1lGMaKv68c9gNOWX3R8dtU+SuIfFQuMY1XgNpnzH+I1OsbcwOJNB1wtlirZ/XckeHB9fMocf8MICEkSMgPIS4PmRAfUJXh8Emr6GHkO/HIRdzEVykq2GTsMKcTIsnYzLwUsfmy1gH3nXTJRUvP3AdwxG5N4EG4ijcxXFKwenNLlvpzXvG/2uEgZjo728S+7Md1vhLZJ2dsepImJqn1TmEZv5WkEj3lbkemcfx37pZah1qkYgav2mrEVUBqbWdfZpYy6IwDPUCgE5TBzdESGu49HWgYaWW6oug4PTcbaul49Rbiv5LMbfwHEf4EKvuGqQiwjgcWsz+57SmE6omFem0XKE7PUiGMzl1vSMwIaUG3pfaRSMKE5UvrHPHaR1SrsVXt6OQ76yjj73HerLdyDRInKoUzQwkZ9jaHE1hft4Yste+Lej7O2OrUSKE4wzhhVBkwwh9AIUqntzEaaB9U4lFVk5uX6v6IJ9ssNwZMzl5j8bUVDfb+HDc2K26alme+A0EjEKlIL4ENYXCZk8zoRhhzibeDx1ZEZXPjSKdZz73dORKb78hvre4u88arxQuxwmwt","layer_level":3},{"id":"7a2cac78-c619-4c8a-b9f0-58bda0362094","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Production Dockerfile","description":"production-dockerfile","prompt":"Create detailed documentation for the production Dockerfile configuration used for VIZ CPP Node deployment. Explain the multi-stage build process, base image selection (phusion/baseimage:bionic-1.0.0), and build environment setup. Document the CMake configuration options including BUILD_SHARED_LIBRARIES, LOW_MEMORY_NODE, CHAINBASE_CHECK_LOCKING, and ENABLE_MONGO_PLUGIN settings. Cover the dependency installation process for Boost, OpenSSL, Python, and development tools. Explain the build optimization techniques including ccache usage and parallel compilation. Detail the runtime image construction, user creation, volume mounting configuration, and exposed ports (8090 for HTTP, 8091 for WebSocket, 2001 for P2P). Include practical examples of building and running the production container, volume management for persistent blockchain data, and network configuration for node connectivity.","parent_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:13:22+04:00","raw_data":"WikiEncrypted:1PcQ+NupkgQiLQ506NXlam2NaTESDp42+Zw7VpfY+CzCiLAg7GShqb8JCcPdfBZaP7WIo1Mgj6cRsriY4RimiUKdLamglD6mtocdtihAp1RQvMgjoGAVK79Z0f2cu7KECfA2Z+Ievqh+9tvt69UamhE1qHeFeJsTu0aWWWpl5rcj2YSIR5H0RebtCzB36Sv/CERib288ap2vqUEZU89BGsYKIWlHMuGgzeFzUMYrV+wk9eG5jVZjG906/zYCaDWTbh/TekpxoiIf6HSW4xXhrMD7AZJWn5k0n6jctguU6jEHQP9nzYFUiTMQ2lMvD/jnXKsLpwJqAZR71nU87TaUO8FVZul2iQ+vQFFwzyNXGE4ddtidjCMxKR2Ww73haXvYbAKHAAAdbw0OXyAcdKL7K2fcga/3WAuxnWWVMGg+E5msVSmXsJcIZSV5C5r4Va9hWjxCi27IEGMvBsLBQXwRNsAn8aSlu/fa/jYxeM297Dx450DFq32jM4NPOOXjC5XJaOBlCvsZa5P7zSnR6NJi/X+7fWOw9yjkvU8Py5K3PMH2RW0KfPHB4nSgLXhw7SBcxT1sdiFVcF6VrY01bksI3y6ZFQeU2Mr1vAWTAnZvhbpann/UGYuYmo9u7R6+OoRu7tP/uEmnBKM159+qF/2olZ7ZKbq0jX9b/9HGNcCEWiPovpxyKkfyNvPpJwaiKsoQKs7Z7VJXgM3qZUJI591RB+ZcnmWCqM8nEQcRvf71HmasT4O8Y3sTM2dBr8kEZhAlpbsQKQuv/tO4kgC39gsKvLSkt5o6PZ8rP/QWZKPdyO214qNoge+jhAzViysspNcJh6FXLe3DD6YtFK+txrue5yI9R1M3aoDc/bXI9A5j56VWBYXHbfPf23c5SX4VJL1tryaUnD7HopiWlFdRMMWK4Lkn/2+Q0acfSzOCJ0FwsfSAC8BpfNe60OO6hYvSrt4uhGDRMGa3SGJOJGLial88QaoDUKgcHRRq6xPKtHWGyD/spZpRXxFYPZcPv4y6RRPSrcytnWWxf2UWcR+HQRb1V4MNKxPXh0RW3gSVo9D7smSAIXNAwuZ5uJBZvg7CYavG0mjPm9+32YDh8vPLBHGXUa4i4T4KTfEvENMVQuZVw0amZ5S231HODaR8LmFhvy9QjC/c0hlkiAyQP5zq7Qh9tc8eQ4p8tuxKAPtrhzVy1xTTKXNmZrKKD55p/3sootgWp8RzFJapVolQ4JkSSNZVtNP7J04uG6jAGktkZw0eHLya0dr0D2IRcuFXNoDjTPzy0wVnv3PmAu8ao05iAinwPhwsx9RoTW58m44Z6rqM6uhOkoIi60y9hPWNK4tNtipS+4aX2ZgQanujtzdVUqDmmDQr/q6VdzTCSHieHN5LHp+5aCHW4oKBPABE9RL8gnzlgRxlPxgRzXW0rAj9TnTyuiD8c3HskKJARSiBAcF1oZKweAISYXvb6QGe1TG87AcdEsvUtzDqgcZuKJvULl/zRwIkJ2jDFaDAeUWeORgrzmYEFNQjYLKrqNZULFVqRxeouW732TCle3fBejZlmUVGxfeshmIRsezj254Gy3zs35hkwnB/9C/kBh4EfPu2rzOAqwbIKoHSfjewV2R4z74esD2maXgH255Nd22YvowdyqvJ7UyFouWyze17p/cTLztRvKY2xfFFQ/DFa8DuFRmLSA==","layer_level":3},{"id":"e9197c24-a007-4e00-a1df-9b7d70de3be3","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Code Assembly Tools","description":"code-assembly-tools","prompt":"Create comprehensive documentation for VIZ CPP Node code assembly tools. Document the cat-parts utility (cat-parts.cpp) for combining source code fragments from directory structures, including its command-line syntax, directory scanning logic, and file concatenation process. Explain the Python counterpart (cat_parts.py) for automated code assembly workflows. Detail the hardfork directory (.d) processing mechanism, file sorting algorithms, and change detection capabilities. Include practical examples of using these tools for code generation, schema assembly, and automated build processes. Address command-line options, input validation, error handling, and integration with the main build pipeline. Provide troubleshooting guidance for common file system issues and permission problems.","parent_id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","progress_status":"completed","dependent_files":"programs/build_helpers/cat-parts.cpp,programs/build_helpers/cat_parts.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:13:01+04:00","raw_data":"WikiEncrypted:Ux5Ub3OP0MtzohTlWbMlC5lEm19o2HQfwDVneLB1a1hTXHDwEhsig5jNN5z+LIXqsxmLUM25wY69aB6+bwuz6D/wkQEy8W5IUBq/kV+7tBHA+L6qCLLNXOlhHVGHuo6JbY9p5a9HNMXuJ5REPOH2cRjbMvOpX2JPYNiqO0206sp7CU+POZ9RIr3gREMK5LT9JmW1upbSPZzeGpNAVcWFEvpI7hlGDI0xytSGBevLkpSH0dT1FJ93u/i1N/YAwGNI7V110fcuiklNuAMYwCAM+sTshWG1AasofpIxFVC3HWLgQc3T6aGyEx/vw988/JCZ3dzRc68yQHQgLyzP+e7VTGUrkw42ZTu7b1d0sFkwjZb3Q8i+O5hhuWGjDAb22Pnufu7fRCCbKxLrbs2IFj0YB2urm0PopQh9GmAVCyiTaLtmt2/GkT96Z5vQDYVAkCAXtWP/eXVV7W7HlEZ+x8N/gBpkGiAzDeauGpvdlpZcFTEv2jhqXIdDe/EIWHBYJ18Nwed4Bv3UQDgYA5s5TUXeVEyRF9243AurwhVMW0Y9x7figiVO3AFR5yoHHxjPwzLkI0F8Q1PLK5zs62CmA03WCostwnKhqG1Tj2x/E80KstYRsF7pR1TwqOmeX5gvlNeEir+x0afFhDoXKKLmFUhmqq3mThWMoxONDYxZSSFUNyI3oPDBvVyXHFQglhuFu+ZxTHn7fz1Tsced3XnAHVq/pcbZlt4wi5umSVXi1mPrz9zBZN9irqYU5bU20vhfwqSuLI/s911aqeeJEPIIxb7paftniC2Ou7p3IraD3n026CfuxsgUGDWGLLsopvN36hlEnPXNWCZgU1dVRqd/Na5f5DjzjUc25GCoUeqOSqboRpjxki0D7e5OM232kS+KKeTKrXQX6QPba7xdzt9dPKEfs2ehTU8E9OnosImfPwc7FM7LIswSmEV0xvaXnJehqLwtNs7ABTiNyZ3tst92hHxxBU6YtNfSCFk6lqVzVRBci7stxUXbF9JkIVPnRtaSqJhTQfd9RP9hfTOvPrihnlkWRJzyOMH2jhuVnCAMTFgkUKe8gVqBGrBLoMY0fzXFrkfsNvj5Vq3Rd9SmCtCHH5CvDL3FvgPJmrmwzbaVrQIThX9c383OKjjYmC3PFTFOekX7IxgCvF9eihK/cCM4WWMozIXKkm8UYPEtKApNGLISn3KlPrI9yOretN0iKCHD0gjF14ZgrGlpZdhtp9mp+9YIqTZtjCDAW+T+rgC/rEPcHwcNFJfpWEXvS4Btct7MDBZUq/irXLxBFJe6Js58ALQtDOPVtXH3F8wzTnsBxNeqgRcFPJZhksU2iu1OGRL/60p5RYLKGJ34USY9z+LghuRBh72H2K6GQOtlGNPjOyF9PlQirmbNa2iTGZv6RSnOAXUgtYRVY6FR7hul7EZ0V4V/oaBEnF1RjxZJlenfKmY18X2+yn5pmAy0s6nKT2rkh9iNN1f/LajWKwoV5kQfiyIG7VI2+eIKJq+u6TUy+VmmF630T0evodIP7j1gmAiqx1IQnqY+scdhg1aDsmUymhwjg76gHZ+BnMqHxas940dtVvNZsJT+ZDMIPoI/VF/2x+Jj","layer_level":3},{"id":"d62c1a2e-7d1b-4cb3-96d6-5aee11e60ce2","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Getting Started","description":"getting-started","prompt":"Create comprehensive getting started content for VIZ CPP Node. Cover prerequisites including system requirements (Linux Ubuntu LTS, macOS, Windows), dependency installation (Boost 1.57+, OpenSSL, CMake), and environment setup. Document multiple installation approaches including Docker deployment, manual compilation from source, and package installation. Provide step-by-step instructions for first-time node setup, configuration file customization, and initial synchronization. Include practical examples of common setup scenarios such as running a full node, testnet node, and witness node. Document basic troubleshooting for common installation issues, network connectivity problems, and configuration errors. Address security considerations for initial setup and provide guidance on monitoring node health. Make content accessible to beginners while ensuring experienced developers can quickly get up and running.","order":1,"progress_status":"completed","dependent_files":"documentation/building.md,share/vizd/config/config.ini,CMakeLists.txt,README.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:31:32+04:00","raw_data":"WikiEncrypted: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"},{"id":"e263dbfc-2149-444f-82e9-1a2e835ed847","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Plugin Architecture","description":"plugin-architecture","prompt":"Develop detailed content for the plugin architecture section. Thoroughly explain the modular plugin-based design that allows for flexible feature addition and removal. Document the plugin registration process, lifecycle management, and inter-plugin communication mechanisms. Include concrete examples from the actual codebase showing how plugins are registered in main.cpp and how they interact with the appbase framework. Explain the plugin template system created by newplugin.py and how custom plugins can be developed. Document the plugin API design patterns, including how plugins access the chain database, handle operations, and communicate with other plugins. Address plugin loading/unloading mechanisms, runtime plugin management, and the observer pattern implementation using Boost.Signals2. Include practical examples of plugin development workflows and best practices for extending the node functionality.","parent_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","order":1,"progress_status":"completed","dependent_files":"plugins/snapshot/plugin.cpp,plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/chain/plugin.cpp,programs/util/newplugin.py,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-04-15T13:00:48+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"5cb1abde-464c-46e9-b4db-0d0e7871bd8c","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Testing Framework","description":"testing-framework","prompt":"Create detailed testing framework documentation for VIZ CPP Node. Document the complete testing infrastructure including unit tests, integration tests, and performance benchmarks. Explain the test categories including basic_tests, block_tests, live_tests, operation_tests, operation_time_tests, and serialization_tests. Cover the Boost.Test framework configuration, test execution commands, and reporting options. Document code coverage testing with lcov integration and HTML report generation. Include practical examples of writing new tests, running specific test suites, and interpreting test results. Address test data management, mock objects, and test environment setup. Explain continuous integration testing workflows and automated test execution. Document performance testing methodologies and benchmarking tools.","parent_id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","order":1,"progress_status":"completed","dependent_files":"documentation/testing.md,programs/util/schema_test.cpp,programs/util/test_block_log.cpp","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:41:49+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"fa9c29f9-4bfa-46c0-a081-d65c5710a6cc","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Build Configuration","description":"build-configuration","prompt":"Create detailed build configuration documentation for VIZ CPP Node. Document the CMake build system including available build options, compiler flags, and feature toggles. Explain cross-platform compilation requirements, dependency management, and third-party library integration. Cover build variants such as debug builds, release builds, and optimized production builds. Document environment variable requirements, toolchain configuration, and platform-specific considerations. Include practical examples of common build scenarios including development builds, production deployments, and cross-compilation setups. Address build troubleshooting, dependency resolution, and performance optimization during compilation. Provide guidance on build system customization and integration with continuous integration pipelines.","parent_id":"cdec8606-b623-47aa-8501-03011ba583a8","order":1,"progress_status":"completed","dependent_files":"CMakeLists.txt,.gitmodules,thirdparty/fc/CMakeLists.txt,thirdparty/chainbase/CMakeLists.txt,thirdparty/appbase/CMakeLists.txt,programs/build_helpers/configure_build.py,programs/build_helpers/CMakeLists.txt","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-17T17:32:02+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZLgEuwkLmCJioSHL+8ma+IsP4HWz+GN9H0U25AqQRHK3L59M10gr45pFReqaj4GOOQ3LgKgrH4yEr03XwbVLaftOAQpXi2WhVTtqc6qBpvQHz9iM2DpRUxtgm70qZMV2pJefuav/AKMC9iwmaY+gZwPDcDAA5Kan/t7DSlSXf3sKjghTOfb0UqsN4WQzvnJCmye/MQGEry7J31elS5UMfkbZiHlH15n1tDz1GCSMJTs3HVIfgKWq9C4fQeXZEIF1GpnRnDWGt0CqwnyNR3uV0hqVefvYAatwzF42TcjhHtOQPrLbVWl9xkgHKGVD48dTCPKg8FJBj08pTPIIZa2PHtJHhUBzkEInOjLsxjvL+dEwYRsZ60XkTI3Q5xfRsFi0jhdcWfPmIsmO7BPxphRvEz8w3T71DUrSmsbF6rdNQWZkwVDiXld+69upZ6PJB/xBCig/xw+pYqavCmsMiEwQw6CfWzjF6/s256GzXu9g0Kd/XwVSafdKTF6AnA0WZ4ewdlXgWmMZhl0JPHD5EeM10MTFL8vl02nYCI/UQugXRZ4YUym3+AGFR1JL8Dy6Z2y5uXZdDz+QvKgTzmbxoVszYfEUc6uRtSnvkFoVV9yR58v0ZkEdeukYNF7Iq0bMcw3X+TYMNQofzpsYH119I709Sa0qJG9MeB17+Q+HZBeafPYbjbAMLrX5qcKa8wmAgyZydHHG7xTYgeJlAoVCHiioGfcby/O1E5whXTUIOcEKKdGnDEG4B/i1tbVHYcqfMqsXB+1dgpoDQYtlF8uydYXfaZYIPETUkFQ3avmoX3T2//0Nh/gNHGG5gwmyN8F/PlA4Z4WwNGmf1MMcqbUrxQs0iKeBX2n9dhJCU7XRStEBTTdGnAMEjBkTBO98vYaQRW/cphm82j1m5GLnHEDpBlRaYMCMZzsz9pQIaUktlUqxT3wMO1YxF57pycrgFV3Z9qWJmPkdTv+SDpAJDbq21KlOWePj+FaOOb4rdJRwCL3k6WMR7kc0oAyEQFpPenWqwi2TfD/X0PyfGnHUBaJy+Ubu6ah0wCktBMhfg++GyBwk3n4uyhldKx89P16PQxFi4GDRw8qknKOoz71eInVt9TOs7yTZuUXME+KyKc6sfYVO51rV2Jf6thEIxvP6NCvpXt0aZhTK6yLmT2J3HCVbP56TG9d+54vKKgW7Ol961ruw2OWFq5RIdW1oQ3B+nYvWje8xt7tRpmEuB8IJNlxj7PqM9UaYjDWW+Dps6Z++eK0TaVH6VMqzYeVNYDdKQfyYSbjetueeMMh6VyRRjBgG+9Y1CqWhzqPvlcynIDePw3WmTWtplu47xTBiaqXnzXXeistX59r3KTIkWLddxS9cY0iakhfpNw+z3FW2lMTBHp2oeRn44ooPEM04d/O0h2HqPQEaeJMeZWgoGjSyyU4olOLU5z3rPBqdBJh4QfrHmYf6n3Vn+n2Gw2IVxSFlBsEXYzimLhzXUlDzCLRiTDry9oU4tgnF9/r3nd3nDdmU2RmzGSta4214pdq2l4QTtEWlKOxlNUF9Pa3XUa8XaXDLri2HaSUNDDSTEcGF65Hg1cN/727C4z8RAV8k4e+9Jatvk414OzwwGg7biwvhRza5vUw2RemlZgIA4fk+vXX4ZDTkWSLPRoNMqXA0cACc9ogOqU1WOXCtFnIGbANCiVJi7ZaMt2O0dPxhW7tef9cys/c+ayjy4A4MXE8InYhuZ1hlYcTwlo4Zg8yaAuMPluRl2YCGVhmbxJzsSI7fy34zUB/ba1Unig0xx4O/BbyHL2O9jOC9y24/f+1TuBS5sbGXwbNDliviKAqBDDBb3ZpHmAhsUrX7Fhg5/LWLt+Lz/DARPXri12rTuHxV5wE8E4JxMNrHGn2y2iGpnZYt7xsJnR2sa06wXLS6Q/WXloMTKu9Zp87KiLSNAQ9u3IAIvuhboqCB/edkBZZCP27ChBrl2/uUIcGb","layer_level":1},{"id":"e626908b-8d45-422f-b69d-ad8562c6e910","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Containerization and Docker","description":"containerization-docker","prompt":"Create detailed containerization and Docker deployment documentation for VIZ CPP Node. Document Docker image variants including production, testnet, low-memory, and MongoDB-enabled containers with their specific use cases and configuration options. Explain Dockerfile construction, multi-stage builds, and optimization techniques for reduced image sizes. Cover container orchestration with Docker Compose, Kubernetes deployment patterns, and service discovery mechanisms. Document volume management for persistent data, configuration mounting, and network configuration. Include container security best practices, resource limits, and monitoring integration. Provide examples of container deployment workflows, scaling strategies, and upgrade procedures. Address troubleshooting container-related issues, log management, and performance optimization within containerized environments.","parent_id":"af2002b4-a118-45ea-823c-1a85dd576b13","order":1,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:43:26+04:00","raw_data":"WikiEncrypted:OYVOcFWO8QG2KTNzD99v45mmcADjie5BCXerTg4Poq/lnuJ82FcenM2s9tWcBtgD7a9yCImLiX6/SO5PxULR8edQWXEW1ErW6iejY0N2Et/xLXcoB7nrGCgaF11U4E+z8Z3WU27h1LkDQj9QgKm2M2wDzXb+cFVaNBoxv3P9X0DQ/DBI3i1ZVZRL9rQcaYOdA66n2Bl/JMIPfv+3lVM969DpdFB9GMm9kXFoz3kVP7BUoR2Su0tLYRHza9l9SAZ07tIjox6Ib5jkJG23UtJ85gxqQUu1j/taPJkxK4l12IcUmtdoSd6B4o+ovkR5Emc5YayTsgqzimvXbbMEvrypYu4iwF8DaMPAd6nKIcCgEra/ttsEqEubJL3g2z13OwBTJdiYucFqgFk3JM8z5LHV3+LVBCOL5PIzcGLP1b7bV2NjSN/wlViQn4Rm5AI+YfOJBJCjH2IJ/eDq6jjpDgFfhojC/DlHYfDA2ZzsG5jUUeDSM0yQccOJ/FMcolbX/GPGGbyvc8vOIOgsWcjimJnH8KAmWdy8/gLA3nQ8FZdd+x7Uwob+Os7so2iUa84mVnA9BfGJKTNTal5zPakc/F5zSxRNsViBC43N767ptprN/GSD7eE5ZRZ9EpCW0gpXSaNapiO/PFQs6AmNd90e1MN3Bdnfki8VEQEgi4Vb/9jrn2vQYqqs8c6fTJpZanuz0dmeiuaEjJueA/eN+KidtxvD9BRvGqImJfjDaFv/q1ZUcrGaIU0gQJdTL6hpQVcENO2XiEJsreh3t+pCzi2TXf9rjQh9FkRaE4L+M2Uc9Afh8FlS+3O3kUOcJy2aUYRtyAgZ8BhUrENi3cQryb3hdj/WGG0BOEyqSBaMrOQ11VvMhNlyD4csDqUMByeYudt9TrN2B/q+M3dXZxxal6sS25SfZwt6ZyYGE36psFmsqCLNuLFeO1LNBMCIpeDoEZh6olkMWmWjT8Tg1rvDncdf+9+rYxe8dG/sFzSBJ4LobHfn1wMcCKitSeqS7uS1Et1VCce5si7HhMOUkxAbUOnC75GF9H5dSGhFHxtdmZyASDi1rzz4p8aW0bcpp0F9DphCb27lv4hwfmf0g6GzHftGL2pHjIb5b7L+6QTx109ukEudBenvkZCIT2juDFPo7bZG6DZ0/j2gzHT1TX6ugCaQWB2lVWjEbXUzYd+0MFIlD+8dPhPdoKsrXSWBufbFhaDwXRCt9/lY8QojTse9n13WpHiX7K48K5venbhRIH4v16rAoYsQfq/yWOJvr+dA/q0pZgUi+6A4fQgsS+MwLzmlZVcpZWtoQDMtldRhVOS8Vra3Ion+Y0pPGhp3z2HjE/bInEPkTdctiQGkpCPIVAdjRCBN9NhmvHdn0WLlHzdCUlkUldpsRmmknQzjlj27HL1KXlDUim9IXSf5DtxC5IfheWLq4BSUf2VJ6tadWlMk7btPuJ1cJg1ojG6k2zMC2c+P8RZidf24sVwmqilhxkNIv7J4BSCMHBs9hmc8aov3VD31pPGKY0EFbeBsAVuzBEHq+uMLKvz2mCHR+MxvweEWHPPVET01rKFZlJJZyN5b6YMz6giH212zj07ghTpTbIVECMIk6B32v2umTUZ2JniLixCAiQMaOsa4ShgxW0GOoLcftUJvBnphP7yHXa9Gb4kDGouE/Uq7r1PLkQPubJUa0VpzWJrm0/+zJflB28fPP0jZv+Mp6neIa96OPo7H2vfiB94VTqU8n7aP9xBUEGtURNiW2xffV5vPJK0rdJnchEpOS2y0zKvOOdCatBi0oGgj1VRTQcb40sOkopo7NrBUr4qAYTpxU2tf6cwimwxalz1K+2wWacwtUqFWRdLUF08lINWz3bffBkiqS8SyI4FepxotC554HvhNITiL0M8ODOUsvX2sIcDdprV0OMt3IYv4qjl5BYQm7N4yglftstS11Lxt7WNlkOV9DbVqfpIFjFC+l24AJgxOuqfwZsIU56LvLEtfJKs8w9RrjgHC1rGgPaYrR6PKMIbd3iCRipLrl2rlCPVHfXBrwgOqcmB7oDGDD+5tTRce8X/e14oZgNu0nAMUXyHZvga5xiOLU/UGm5lRl8whsMs0pmWuRfCE+hSB0Tt7+9wYesGahYVEpwwHxT0MbsjQLP0Dw5h9G/gulu5kX6zzlWcNne5VjmhiagxM1U27ygziHAcdj5B+OorZon8GnoGHhAUzKeuip+ZSOD5q8UITmNKXuzBVCLa1TAtVnbd3","layer_level":1},{"id":"5205466f-ac35-4be4-a137-94efec5a31f2","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Inter-Plugin Communication","description":"inter-plugin-communication","prompt":"Develop detailed content for inter-plugin communication patterns and mechanisms. Thoroughly explain how plugins communicate with each other using the appbase framework's dependency injection system. Document the observer pattern implementation using Boost.Signals2 signals and slots for event-driven communication. Include concrete examples of signal emission and subscription patterns used throughout the codebase. Explain how plugins can expose APIs to other plugins and establish communication channels. Detail the plugin dependency graph and how required plugins are automatically initialized and made available. Document best practices for loose coupling between plugins and avoiding circular dependencies. Address thread safety considerations in plugin communication and synchronization mechanisms. Include practical examples of plugin-to-plugin messaging and event propagation patterns.","parent_id":"e263dbfc-2149-444f-82e9-1a2e835ed847","order":1,"progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,libraries/network/include/graphene/network/node.hpp,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T11:26:31+04:00","raw_data":"WikiEncrypted:+VS3nPXgxjNRzComTBushLS5L02zjsVFvaKCFsqlKpfaDTTPhP96kOqBLeSiPQLmJfMOrOA/aPyYvvtobOnI+yTy5f4Y/9dCTolJoifXEZ5XGFZqDjDoX+djFBEuFlLpFGPST8HMi5z0Ch/1DOLnzXQnZlkaKIp93GltP3r4YI5EER18kAyvOB0UR1rZAxG8UmuZGRoOeXBu0QnM0v3Xce8hayEwp3K/c36ogR1Qn7rZRVjpgCnyg+JP2l6grJxEgapS9MM4uzsM+Ku2QJq3iBjKpNcAZ6WmWmyMNpd6LesnnwaUonLuQ4YvpjRnZtu2lxPpCCkb7x1aYhJNhyhJr7lZkv6hmSrH/NFcjzW50VwA6Em7zVksqvKRHnrksPvdmJB2yWPRJ6MP3Lh+1zBUke1tfZ7evrMKetz1YDTeUWWu+3agM6kRBztnYqRzt+Y3m0UZHdyGo4XFJxZ8qG37YiuKh8xqwnalsKBrw5H7/qRF/eFE5AsjH/YG7zcDUtzMRgM+ajOULwE1//efI2uZyQfmQBLdop1uIFPEMAx/NXkHp5XYHw7pMpqYjjQGCGrI0L44iup2Hpb3t2EGQk5rubDPVo1hYprbomzKYd+3Cn9x1PyMFfGgrIUGNlHUPaxRZU3GgOXGJZ5jZkp5NY54lmzHhkUsxFqg2pKZhTFPZdG2KZJVn3lPEwY9VgOTYSK1mBkHD70mY+1hbRVecnF5biyhKYdxF9EHBRQmdwajNqqPikD4ZQHJztBaN0+1XL1B3E0MJF5y3SwH4i5fqn0nlx3dv88Gff7qR+VqR10q44CaCKYB0Y6xH8rWXqhY615nAuXq/vxY266kyLPhPbI11pWeCUqS9lM7EbQBUlH0Nl2HWMEtF07m4WGB2cFFC0nl0ncXt+htNKg9FQwCluyVL57GanbdPVJAXZHb/Lf663Mvkmy73MHwlPsdOX9JlciDGL0hvKypGxgJx/YXIS9sRec1lx8quZc8pHsMEl8w6+hYdyViF1Wi8K5uNOW5B6dK0N8VxDbgLarfB0b2tX+9W157CYhERVOXIYc1wwhGpMgbzpfrrHixuoUZwQHK2Vu2pUtFiq1x8utSzkwTfO/utllIdTkjMcm/rCGus0j1Gxe0GNTxjpJY4mJjFYDOTpqF1uFBlFy3z3P+aDXUktOK1/GvaHAHKaT9S+4m4n5PSOzjMSnTs7tI3m6ed9yvWgyD5NXmg7WdzkWu+1bmGXD7FkAxqM1n4ftetysxyvLJfm6il0cF1wj/r/gsAR9rXYdeaR/4YT46kEbQCKJNJ5XuE26c7pc3u53eafEB73iKkZ5DgjEdZvjeZEnQMYKoAYgucfPlmF6PxJGpNSzGg7GUrUk8bgQoz56XfSi/UPVqHvBzirD+HOvO0BqMFBirpsqit8ryr1rcIsubw9x/qpnxm32RWo/QZ/J+KTY2WScmFdKTREIXfPFgt8L5UH5+ZiUEHT00xmtYq9T4uWDklpxy4dDFpwdgzRQC6kdKLgSopQ0YTkb0uTzHOGTIzKcj0Qu7MDmB3JZOfN4GIzaRugdUa8ia0oyZsYHKdq1xd9jg11jOya0autYoLgHkNYV5kzcMIYWAAx7AkW6QqbAvd0Q+ZkpTF1hgq+dt3fJ6KUHA9feV15PnROyq29KGCVOFMahYdN1R2Um2mkHNW2xlpNO7w2TSXzFhPuLJMLd5mAfIXWt/Nyq1qTOe5nEQ0HxtWCqz9MRP+JyTlBDOEXB6TH/VrA==","layer_level":2},{"id":"65c5f542-d657-45b1-8017-b8dd1c8cd6bf","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Database Schema Design","description":"database-schema-design","prompt":"Create detailed database schema design documentation for VIZ CPP Node. Document the object persistence system including chain object types, database schema definitions, and storage optimization strategies. Explain the fork database implementation including conflict resolution algorithms, branch management, and state synchronization. Cover index management and optimization techniques for query performance including primary keys, foreign keys, and composite indexes. Detail the object relationship patterns and how different entities interact within the database schema. Document the schema evolution process including versioning, migration strategies, and backward compatibility considerations. Include practical examples of extending the database schema with custom objects and optimizing query patterns. Address database maintenance procedures including compaction, cleanup, and performance monitoring. Provide guidance on designing efficient data models for custom plugins and extensions.","parent_id":"897392ae-54d8-437b-a160-4459c53e5848","order":1,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/chain_objects.cpp,libraries/chain/fork_database.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:45:31+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"a53daa07-a51e-423e-8d79-71bace98b73a","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Block Processing and Validation","description":"block-processing","prompt":"Develop detailed documentation for block processing and validation mechanisms. Explain the complete block validation pipeline including header validation, transaction extraction, and state application. Document the fork resolution algorithms and how the node handles conflicting chains. Detail the block logging system and how blocks are persisted to disk. Explain the role of the fork database in maintaining chain history and handling reorganizations. Include block production coordination for witness nodes and block acceptance criteria. Document performance considerations for block processing and optimization techniques used in high-throughput scenarios.","parent_id":"478424e1-4bbd-435f-ba13-944c9e421a4e","order":1,"progress_status":"completed","dependent_files":"plugins/witness/witness.cpp,libraries/chain/database.cpp,libraries/protocol/block.cpp,libraries/chain/block_log.cpp,libraries/chain/fork_database.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-05T10:59:59+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyKa0Xuqqfm5cq0GV9nRcndmrxsHsnYwJpAewisCUpG2ti9GxrCpxWosUOZaN9wIJ7/8/157xbaOnn2BOhyeyJDPEjOCeYSYjSjv1dxVt5lXdjoBxvlwsQJBLdQGEe+5WerFA204eHfHpA1L7TlPStdeTCWWLb4c1UyCkfl0qGROdTrG24Ugtwamly3cB72eJqa8Y0UT6zN/Xn67BJN2Mb9Jn1Fof43nVsq9zozwUIXYsn9u7l+nYX100oi6s3IgFFBCC02LsQ0tXoMIPxErRXI/7ZZfndbTC9aoFCHdbO7/GqNjEiOgdFx770bV7xxcXgT9vNQNintlXErFbB22ngxi60g2UVCIg9xnH+btIMjT6YHA4d8bufdYzjTrwToCdHX4D3WTjboZrCLyaKQibYUtU2ZzyIl0TiiPKoHOrtH7tl80lx+6XNbW+OY3CsJO8Y9X5GNVE8RwjvyKhSOhulRat1nlH2g7qkGMfXh5qk7wv+vNhORGTMvSVqKk9FzIuvjBf8bh1ZV+ivN3/cowso7sJt+PEJeItobpVl0kbkbIA1E//L8B/3wx6XtJBtEUwt06O/q0ixorcjVJ7ds/aomEvKF/ONR8BEJvlk3VzayStOTePDLNDJWK1kCq7Ez5JYOt7dTfHlriwbWabMlltC2joKiBEdTvv9mgcoNK08pmAIfJxH8zH+ElcAeqo7sVAFMwUJgxFmCjdCfn3odsIzLNx292ctSPapViCFR5xvmdp4uYNLktrNKhVmlWdjoO4UZ36rZzEvwuQPx3BHgHvfhDYvAZdH5IRythWMDWyaRO6/MuRaHXPao+2gAS2NQP50XIP5VjsUtg8bPjqmlOZVgCFmqUKW+Q00TKf5uVd3nI0h/+S5YumBLr5SEavmBHAyF3/fHHcYUOkYcIx4+2Z7Dqg8dmCQuC5DI0ax3rx0KTw54S4ffeyTl4a0/36ropKo2SF7tt64JObM+A9U9eK1mZFFE42Io+3CyO0TpZs67jqXzJMjfuNcgd6AZfDwSYIv24U2w9wqukaqhnfg9W/Zil3hq6GkJjVanCF2ykO41BJReeKRAAR7We+HZWOw0yGSd8dvQJby0syzrN88Wvu03tWJkM7u8DE9BNhfm5zwzdWD1qPOwaqK6WllmDKFQoAPG20KC4l2bw4Ozj+MooTbf7JFQr0y/PCEbjW/gkb1O0mK6kYc/54LI0hk5sdDDJhF4fC7tF8xVh7RFSbwAuUViI8A8neO5ziGWn+LR46kVGNCM387vvl4E4mZg6tAAC0Oufb/1yQOYtXUU2Cq73D/99M4YRAoW8JT6R7zk/pbvA2ICZcjgj4cz20acCebzhvPPqGUt41NseNy4dw3mfemsqZle4qoHSOzfxb6Q90LZpuizTwkU10JtqswqNi7DhmeBIh10MP1KNFLjXW/z6weL1oHlXgBNlzQkkkwhbNERz5pWFQHGoFEMORjpCPrf1ZwhrYzeqtae5GFUI6eqzTmi8A187/ekxmNMFBz2RLz47T2sVKwAk9rS/CUvOTq0Bd+A==","layer_level":2},{"id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Protocol Library","description":"protocol-library","prompt":"Create comprehensive content for the Protocol Library that defines the blockchain's operational framework. Document the operations.hpp implementation containing all transaction operation types including account operations, asset operations, content operations, and governance operations. Explain the transaction.hpp structure for transaction validation, signature verification, and operation serialization. Detail the authority.hpp implementation for authority requirement calculation, multi-signature validation, and permission checking. Cover the block.hpp and block_header.hpp structures for block validation and consensus mechanisms. Document the chain_operations.hpp for blockchain-specific operations and their evaluation logic. Include the types.hpp definitions for blockchain data types and their serialization formats. Provide examples of operation creation, transaction building, authority verification, and block validation processes. Address the relationship between protocol definitions and chain library implementations.","parent_id":"70d0f804-ac06-4c37-9779-b30d8f137419","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/operations.hpp,libraries/protocol/operations.cpp,libraries/protocol/include/graphene/protocol/transaction.hpp,libraries/protocol/transaction.cpp,libraries/protocol/include/graphene/protocol/authority.hpp,libraries/protocol/authority.cpp,libraries/protocol/include/graphene/protocol/types.hpp,libraries/protocol/include/graphene/protocol/block.hpp,libraries/protocol/include/graphene/protocol/block_header.hpp,libraries/protocol/include/graphene/protocol/chain_operations.hpp,libraries/protocol/chain_operations.cpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-03-03T07:57:42+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Build Helper Tools","description":"build-helpers","prompt":"Develop detailed documentation for VIZ CPP Node build helper tools. Document the cat-parts utility for combining source code fragments, cat_parts.py for automated code assembly, and check_reflect.py for reflection validation. Explain the newplugin.py template system for creating custom plugins with proper file structure and boilerplate code. Cover pretty_schema.py for generating formatted schema representations and schema_test.cpp for validating database schemas. Include practical examples of using each tool in the development workflow, command-line options, input/output formats, and integration with the main build process. Address common usage patterns, troubleshooting tool-specific issues, and best practices for maintaining code organization through these utilities.","parent_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","order":1,"progress_status":"completed","dependent_files":"install-deps-linux.sh,build-linux.sh,programs/build_helpers/cat-parts.cpp,programs/build_helpers/cat_parts.py,programs/build_helpers/check_reflect.py,programs/build_helpers/newplugin.py,programs/build_helpers/pretty_schema.py","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-04-21T16:26:14.4557847+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZAaP8JUBGCZQRchVoluTSwBG0F8TNTcA7NnVPcgD17bZ8tkkmKBmN15pV9qTETgIyoqoLH7M7WPfGtqxxySlrJyCUM6SfuR45v/C5WGemH+0hRlRLA0flEYfomMObFQbk5Yk+NHzIvo4JgCZLW5F0XN7DLQWn8LEfXvdWhYrpycEb2+gRUNqVLrMR4Lj9NZBJQro9Xc43t1OtdTxlnZzJErkb/KowYnn4nnYNDGxG9hIQyrHFcPMamMN8EZgZ0hCu2+dpSJriVuNhJjimoclo6Cw3pyOQAVdprPNkw2xEpbHhZQ+rmE3VZlXZ+MLkJTN/XZYKwiYTp2uKbNEPmGsQQ2LomqWACjNw8wv4WqiN7uh6Y3SVosPebV0G/ZcCESHnBvGtowAOOZYPRnPfpDmnecYGNdDURlmBbiLalrynqnRqKVeASYvVRhaPsQynz2xKpKXOOioDWeEmlzNcUP2D0WeKQdlTbEeVPO5aSdRnCUv+tX5viqMRFV/aZaStqyEbDFofDhf1JqBalT0wv/VNgNo8kTnAZFGDOZ7xz67uGXDGXqJn3n/4th3Mdab/0WAx8kakRGAUxfaS2vsxGHC+7QCunw2c0sltmNXkWX3iBbDI+DygDoA0gCMz/aHmapgS90n237xk3kir9qU9TcRxzWK40xmo7Sw6FKr9WMGDkhPOPoAQ1UyBvkEfiBD4MDJr2rlS6heSMFoZIx8/ywk7nCxEx+Q0GV5xO5lyoVZ7IcaG1qcjeCuXta5O4pp6D0sORk2+3lC3RyHKqAFvJLXJK4Rn0Qj8NxjSLxuPnrMMP/z4i53otH5KRVpmj7PDloLwxm7Se1nx7kDpNs35zcbLlEuIZtMbmAu66DwTp97t86Sb5wAJ/lIQ0mzUqFRHIcTAzQpuMVW8o9h0q6bHxq7EYSG4jTchqULmB+GCKY2k6PKr/7T3DauDBVkxIdONfkS9O9XGHXv2A5vsZxP7uwVDL3u08b+BhwDTNCzmwIX8o+rk/rdpGCvVgOqtfkcl6WaPW/IFKnAEIY8MylFSyU9s4XJ3iBGigwuXdomwt1cuBE7EUfi79p3HEL+wLR+AF4vVVMqJYqppha/U+KsYo4B6U+knbKdteYsN6s3vOK46UeNKZrWoIhf/ef7++6us2IsTJKuSlWUvT+AR/qvbLI8mYQWqGfA+Nb8+207lwvZfwI3+518nB+L/C0pagznPrYzjcKWpHAlmPmTmsqqLvjD4BjCKxbG2sCKnimWkVT0LB+hRvV7lMfAk7Gy5kdQSK26mxsceYr0fxKYmag8dKFwHkHvcghZVIR3IHq+9Ir+X7pUunTFXP9j1L31CRnGHLXOnqTcTVwVKYOpqRDDh+e1bBBdP0cL4At2JEOY/gLxBdDUSv45+taH1UJLnCwRwugCz4BpDWxszi1q2n5a6iwGwjrXT/hhAsY30aXJtxMwTMW0boSb16P/oT6iBHls+6cpem4KKYzDAMclvkD0PwTQVZ4jz1Mmkf/GzDs+VNNW7Kwsh5/pZ/6U0avqrOxjIwkpN6gsFPWWmd3ts2BukG8AQhcQyIbMqDtnfDPqrJoDT55qBSSxNiwZeT3Qd1vdF1BhC6WlQ0ypbxK+GA8206/RTjYD8gy0BauM0Subh2zzN2+NEXWDVhzLdt1B3E2JLbjSdF9G4rwdQk/c+yLBVhWZCKC1RV8Mjd8BCkDs5Codlql20owYs9eT2pD3qaecCu7DPM57z6cARZWlp9xRxrJdEeR6HyDqfUnwAI9CyvBUijzQaiJYOtmmYqFvKhFzcD+y41yyaKxk8e3R9kX6T35ElNuhNiIyEFCtrJZTVFRwpwAe","layer_level":2},{"id":"47bbb6c0-9ecd-42cd-a25d-8a0f95214190","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Code Coverage Analysis","description":"code-coverage-analysis","prompt":"Develop detailed code coverage analysis documentation for VIZ CPP Node testing framework. Document the complete lcov integration workflow including installation prerequisites (brew install lcov), debug build configuration with ENABLE_COVERAGE_TESTING flag, and the multi-step coverage capture process. Explain each stage of the coverage workflow: initial capture with base.info, test execution with chain_test, secondary capture with test.info, tracefile combination with total.info, filtering of test directories with interesting.info, and HTML report generation with genhtml. Cover the cmake configuration options for enabling coverage testing in Debug builds. Document the lcov command-line options including --capture, --initial, --directory traversal, --output-file specification, --no-external filtering, --add-tracefile combination, and --remove-pattern filtering. Include practical examples of generating coverage reports, interpreting coverage metrics, and integrating coverage analysis into CI/CD pipelines. Address common coverage analysis scenarios and troubleshooting coverage collection issues.","parent_id":"5cb1abde-464c-46e9-b4db-0d0e7871bd8c","order":1,"progress_status":"completed","dependent_files":"documentation/testing.md","gmt_create":"2026-03-03T07:29:31+04:00","gmt_modified":"2026-03-03T07:58:43+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"e074cccb-6de1-4b4f-9213-e4795a07176e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Transaction Debugging Tools","description":"transaction-debugging-tools","prompt":"Develop detailed documentation for transaction debugging utilities in VIZ CPP Node. Document the sign_transaction tool for debugging transaction signing issues, including command-line usage, input/output formats, and common error scenarios. Explain the sign_digest utility for debugging cryptographic operations and signature verification processes. Cover the JavaScript operation serializer for converting between JSON and binary operation formats. Include practical examples of debugging transaction validation failures, signature verification problems, and serialization issues. Document command-line options, input parameter formats, and output interpretation. Address common debugging scenarios such as transaction construction errors, authority verification failures, and network transmission issues. Provide troubleshooting guides for typical transaction-related problems and their solutions.","parent_id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","order":1,"progress_status":"completed","dependent_files":"programs/util/sign_transaction.cpp,programs/util/sign_digest.cpp,programs/util/js_operation_serializer/main.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T07:59:59+04:00","raw_data":"WikiEncrypted:pze/wTPA8hT9dADtWGlHVTV7nwJekHa60Jh1H6ECw97w6kdsHO/hSRvKiSLle4Pm7TgELTQK20leu2qfEppr1Pu6Fxp2VXbbGgGWdcyWJVV+HhYgzSzAAeKTgWTOxOna/s69efrHqlpAuVNqAV8xudydaLq3OG+eeZv5n7rqSr9QGY5a3RfMr5Y0Uoi+HFKLo7k+LE/s7e1O8yrh6W9yVsy5ABHI2d4Fs6jGtfZ9aoLw8GN2qWfGu8E3M+7zfByEOMHZwnqhAIYpkIs4Jz4UI77jxdC8p/LkoGkdQsyv2r1gqO9AadGNIJuMbWElqzz09eY36GNpsdR2vf7uIlB4cFLWINRryQoA80MpBvIPZfmE3Jo8nLNRvm5VOuweEOHWSqeaYXRL6IIXZ8r0zaTW6vDshYQ3kGfWOIMg/h5mzi08L+D7EGIP/YBEON3u1WfsVMlAYDoKXk9JracCkaOoRpKFbsFWr9oa7++2F3MtZSMLAMIJ/3ZRvg8Tp+TEs2cAcM2pISakTfXC55T6u+daBLX4jP+oU8QpjJDc3WyvRqkD2voKcEjhYGZC5lPhxjG8ISxvbuSN7zrA7AnCZU6quKiS4cHyj9GIFB5gWdqELSeHQOYZDDvJhxFTsbCOLlxeshJVNzBW8K5rDWzGdO7zZz4tlL6Rr8n4xR/Tzo3ZBVLJhKTvTtOKvS2+OKPDr+wXdDJsgsXfxcd8I190wCfeYrK/hSUEUwBMnLfazM28AsxoCqegg+SEripmZgk6eyL2jQhxW7+iuhuL+FPBPodWZINu7/nnAOBxfbm4ryUAzJ7RqwxRBQWxQOwNVo8rEZTKuDzfVmkzzR1LR0DAzPNjrty00MxghI76Blqy8jYphzPXv093gGNFkHZlT/2qOWdefBSzsMuxQR0m2VIoydme96RZHVijPtJp4uKAY9Vt4cG3y4MMESetvzn1TgTOX0CQhdLnX94jDT5D3JjVQoHRf8P+2HvxWAjWY3VVHYfNMfRYl1AMDo/cdWJheWqZ+5v/Y/476xjIF2tbvKBeNbSZhDJrrQAfiT+zhGnErR4qBjSnprq0R6tdEcmJf+bRTBUeT+V204yQor4gYjSV043+rJ5Y0n8hZ5Qkifs3R4XL7qbZ76tnnKT4ukJtyrnICDxcKaZ9e5VYXsrReYFoyTx+qfG6OxMComtaaBZ1gTD/8YDFhM/SUiKCpOiSBvXDykl121BiHqS6fGMzElLJPhrzEK/RZjCmUNm72/5o5yZcDB2cYM/B/F1+myR5nM76HLiR20EPdtwKyXv060YrtbfLsbpbrN9dgGtRh8muU5xwx4ivsXqlLL7c5hREh72SKCBfJ50zgz/UX0gKiY0uiWH62EvAlanWDalHeYd2KSQGDmIeZ8UI9NeKAYtxSR5EIj/GQ8I5/7JqJDBzht18nOqxbzbTDUFGVqhFzj1xOWNxNvD5yu8RQBmA2Dx+RLs4czQ2MDbAOqNVFYZuo2x3HQnJyBUgLmTEZLxdBp2pbN7JMezy+fekPAbFxTmPoeTgMnLvQlfyFLDYf61zlmg0kPgbo4vpcWEUvDmlKyvvhQiB4R0kuWKR7Dzp7iy0pPMJMRXmQfXREzWW/W1CvbU9kRpEqUip2+/z+HgULmJDrKR3NI7RzbMTA6I7Y6hrfy2YcSxXYeFChm9/vkmmHQ2cP5bKmA1WQpFWreyTahE6D3hkBT31sR7nDFcafqL20R5qcjB2w9ADVe+hlNU75zdqeg6+JXnOBEE908wXwexxESbcaQt5d53ZImpjimvjZ1pcWo6NlwRqekCXOOGh9CnFYK471BGwIld+bKUsovinWPnfBqVkIO+pto8ZJmAKrnyoixBgDZG/jdlDJ+hN0Q+DN2BFKd41C9CHzFZYbQMs9g7YQnkf217eQNXH6cPVllbdWkVF2Mg6u6GkFNIL6PlxMVcXBY1OMFhSIwLPzJ3cl+19drvc5KaBwtscCBw4xoMlngC2ALP1EW2x7lWOR+/m32kcr/6eHl770/3qF4si64jlx2JNHMJWCz7luUdT+2w1ClXCknM5tXAv7Xg/cgh1DRkaJV3TFGgjUBvofoI9oT9mAn3ubN2N0i+PYeWG1iW55nzd2aiwA7RQA9MP/AY8IFhn3Dvq2KxnbJQZAnXTN/L+WRQ=","layer_level":2},{"id":"e5701376-1a8b-4264-84fc-20e2e2c8ee3e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Node Types and Configurations","description":"node-types-configurations","prompt":"Create detailed documentation for different VIZ node types and their specific configurations. Document full node setup with complete blockchain synchronization and API exposure. Cover witness node configuration including block production setup, key management, and witness-specific parameters. Explain seed node configuration for network bootstrap and peer discovery. Document specialized configurations for testnet nodes, debug nodes, and MongoDB-integrated nodes. Include configuration file templates, parameter explanations, and operational differences between node types. Address performance tuning specific to each node type, resource allocation recommendations, and monitoring requirements. Provide comparison matrices showing feature availability and resource requirements across different node configurations.","parent_id":"86ce68ee-34b2-4018-b7f6-32813ce68949","order":1,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_witness.ini,share/vizd/vizd.sh,share/vizd/config/config_testnet.ini,share/vizd/config/config_mongo.ini,share/vizd/config/config_debug.ini","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-04-21T15:32:31.3446378+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"77ed6f71-8a3c-4372-bed3-8dc2a580926d","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Transaction Processing","description":"transaction-processing","prompt":"Create comprehensive content for Transaction Processing covering transaction structure, validation, and execution. Document the transaction.hpp implementation including transaction body structure, operation arrays, and metadata fields. Explain transaction validation rules including expiration checking, operation validation, and signature verification. Detail the sign_state.hpp functionality for multi-signature validation and authority checking. Cover transaction serialization formats and network transmission protocols. Include examples of transaction construction, signing workflows, and validation scenarios. Document the relationship between transactions and blocks, and transaction lifecycle management.","parent_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/transaction.hpp,libraries/protocol/transaction.cpp,libraries/protocol/include/graphene/protocol/sign_state.hpp,libraries/protocol/sign_state.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:14:41+04:00","raw_data":"WikiEncrypted:pze/wTPA8hT9dADtWGlHVecGIju168riPHUw4TY8/AOhja4aeOzUlmfgdY/KTiokGkE0pwevgTXyU4//H92NNz2DvJDyylHUIIAgFa19IOR1rIcwnR+M5gYnWP+MfMyP9rJdHksUzaXlv9bu0L+nSwyEwxvRjUsxXSJzFBEFHqMkwXP+kKSmf2P5ac7NUAQiXV93Cqe+SJpTYieODHUA2aXvlp8c9CzuexfREJPFweCojE4iuz2MpwhzLDyHYWZ0+Oo13SyBMRm8TSYEiJJ1qEryT0ka1GRDrBNabqCzOK6uY1kcgMVU1jjPuzIozI89v9TgBpUe3ZUX2D/okuey3ZXKbQsrqjCWtXu4h/QZb8rYGL0z4J0n4KskmV2PKYbFtn4srZQu7EbpGVbjsDnBXaaURzTiBAn/5bNsIYm+cIxhaOEE0GSJWPZKvt9h0knjB7xU0AMvSOozrAlPI8UzxVBsdecMiFyAtTBrLnr25+mj3ZwaWngPIkUmE4QfDwFvVBktD5TvLYHH5fYgQ6FQEOqADFR/zowPRsBSgtdJ9Eb/rsHcEzSds3O4vfJPa1xBvv0oREt4BtnPPo7h1GW3BkQTBPCsCLRrdxXj7pn96rupr/KX+UZx+3o2WnK2p8s5xzHrxoZ9FQTtLMrP1QfdpEFyryeihlhvZrCXbyJ0kHE91R4y1JciNNxtI/Bjrh6mVBYmrKujPXiV5CFrRwoI2mH19Wti9DQS6W7gklFuAeemFd4jTCHLmR/CDXLjhJDffCUzHS8513myK6oVS5EH7w6YPaLheZxNpurE5ol03A8c/WxlMAXjnBxaf2ZeHj8uxa1EEM6YHmC9P5jSRuEuUUzsS2GRlFgZVAOID0om/E0ENC/0hYqwiXqX6y9n0EmcAgNlDJkUnWeNYJ0oupFu7tnzV85Ilx3SxDP4ea05c5oMYIfzSWji/XEPnZgnS/O9MC1xoLO1yNnHi+fYQCTlLY1nkz1d4gX6E4KMS0BEe2hiCUeZYF3Ve1o8UByfeYpm2dpWLCmdhlT93SxA9Tc+6H2PULFfOIr+EUDlgTwFIjJeGJARDD7Wv2Eq+POFmLHPM1FVpRzVCzAKsxnI7OCf4iC/EthL2PFmXmYvtkCvAvxwMgEwm493vGA2ADLGhz9VzIRDanfMsMnv783wuN+hvDAanYwmAbdNF/scEaa6o7YYzUlSQaAvJ69tNU51UvQmyiiKCXW4ScC0hZ79uAf0ch71hOj4u/b+KFez1SbDRZpKZRxeU0pm+ZGWNs896vkM3THcbIvEb2jp1FDd9tRhuoP5Pu6q9Dpx/wNYMV3VRE0XMIMwliEXXF/ZEjvZQSw6MJVwTNQ/T7UFKiwYPiWR7zu22AG747F3nrt1QQ12XPYHxupLZYDmpv313bFI77gWmFvQm4wKDhyr+8uPpOKb56paTtid6wBDN9/JGgmMGR7/oSz5cLuCQMv2AuLrUnmh9WKD4cydsTT0W5KNDaGRrHfnZiT88kkOALg/Qn0w8oNN2idlbOac//Mwluk7C0esxezBf92dkmhrQsXZ4LjPCkTjDkSGBbvMeU0JhEyVDtolDVSe8XLlbQRNkp31hO/lC1QhlvCzGrrmSgI32+fgI10SmRUU+tqWWL+USh7BGB/ohXpQ+pQkPB8krp6c+tkn","layer_level":3},{"id":"de8567bd-db5e-4566-ba57-e4c3a0dd09f9","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Object Model and Persistence","description":"object-model","prompt":"Create comprehensive content for the Object Model and Persistence system that defines the complete blockchain data structure. Document all object types including account_object, transaction_object, content_object, witness_object, committee_object, and their relationships. Explain the object schema definitions, field types, and validation rules in chain_object_types.hpp. Detail the object lifecycle management including creation, modification, deletion, and indexing strategies. Cover the multi-index container patterns used for efficient object lookup and querying. Document the object serialization, deserialization, and persistence mechanisms. Include examples of object creation, querying, and manipulation operations. Explain the relationship between different object types and how they interact within the blockchain state. Address object versioning, schema evolution, and backward compatibility considerations.","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","order":1,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/chain_objects.hpp,libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/chain_objects.cpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-03-03T08:15:23+04:00","raw_data":"WikiEncrypted:WrtF4UhzC84au2vkp01Wd8VhZuevsmYW0MiRsMATJ1XvzQRUZVUONQBd74I+5hpz5lJT7q5FmmBA+o8DqqOXNjGpt0nJ0BAMDy5P46t2LJR/9eNbkssWxJy2QJkEwyAnWrDBJjJ0RtuHhzMS9XMXa1dC84o0NwHImEkViQDS7Rpsr2tEFtNFHgqhdd5Zjk+OTwvCho2N8LT8e9ja8cNKp9BMFrmvVAq8aF9GWvThumhCK2w2w5CyEP2RMR4PW+tBxGQJFYDPJFgz9pTEzIVaFbKSiCUnWq0ESj25uR6wVSNMSVgq7zRG7y8IIsgrqnhJu+KgNUrZxmwpxoAcsJ0hKFwNo2lam+HL6ml2/2LVFk8Mzco7PC0p/zgxbfQrRFhP110QNXkeT0bYlTVVlMypAQ1Kxj3NBZ1KLmyLLs12q1EsOjSWSgxN9YXmkrXz8yLbFNZYT7qGDIBSXHVviTp2McCAVwIKGOXKskF71GBPcjqo9pXktSpgKxx7qaaBMhX83pvC95fYpq2cJc75oPgeq9KZXR//fZQakWRETvbbLxccAwa57y57RdnEaBfd9daY++/BbkT3oRJ2hqnpXXUBr2uUme/yb0WIntz6DyjzY8xSE7izPZxRsPcc8RJUWILAy7ZprMZASzMlwRn6/Ky/j23YT5a1e4zoyyoHebXifIGG6ZAse1LtKwo9TNNOQpHCamPfYntDKJg50qHWmO6/bi3qavsAFO/yitivdZkArtHqC398p+u7EFZ37JVRbVzlp3qeNVvPsjEgx8fT+bkd3/qwS7xa/muLbLdVBoTsgfnvYr2G3Is+K4mnBYPu/aNEpG4sm7qoBWE7KLYezbuMRJ9+1Fv1NpvrivJxTSjDVwbC5IA+oCD6Pro5lFg5VkenktCY0G79VFuE35+CL+R7esWyfgnM7V8YjaQTsnBr4DmI49qImBb8qqVwyWze9Zyo0WzDrFg59V/8kW+9HBbrh+JqtG2KpXW0GziW4YZTFW4dxYKV2I/LPpCoOMIgeP2YWhpZIV2nrw9FY4247hiAvnJCk2Q1xqRedjgoTM7IuMBq6LdX6BJU6JkzxAw8gnYuryYKtVkenMBIKVCzTQhreo+0OAPufetVLpssW3EcZU1Nn3pPyvncV+MvelP9nELnHgIKy1t6WMpRIx+q/1FhnSFI7ADmVelU+ntYSPmrDe6HoziMx5djs3WbbfCK+IaYGU8lay02M8Q5NC/UpELQYtdKRC/j738pt5904KOmXsVvbw8wRYjN0hqZut9fMN5dgepehlMduVsqXgzmRRVvgbk+K+O3/mGV3qj1swdiR9lt4skvBPrmh+jR2ACCL+MNoszJHNrglzKIBSUS029Nx5J+0ERK2muv4h27pkx2WHp1C44wXmad8a/qI84yR6y1KOFmGn0SIQ+wsUuTxHA37pOzS1mAJiYqLVgGMS+GNG/ENsAWGLkUVSYZohLq5i645j24mmoIj+BLI4PdQaPAXvBvMR4LdiMovmjf73UFLlA8t2TZ+TLEdIqQpAYHoqDj9ZMNLKTFLNkg/CbbVyL4uZpnscLgQGk1kyWR+sMsjy3nG/rQSGm5+rxc+wfeb+xLIM/ekGSKxF6TTOyDLC+fgVMNyQYE+2MRVg/lTKABDNjCFctgYnFwu39sxnx7gLLilxXTx98QGOM/Jp4L4U6eZYSLwI1pK6arSKqy9ls8TCZmRPFZJb3/RO+YK0K1S6R/aNh5Bn40Y5/rp5kYCDptiseq1xWjbUyVaGjKF5jsAkKQuiMnsaSAdYUEJ92RtZw9ZGhHskCV+3pzqkjd2Bsr8NK3ocd6GiMEHrapMKB+oJpQLFVtXgeck1Xl7v9nSipIUd9sDgGZuJ2u8IOf8JYlKi/NzTcJMCgtBM12aT5PPaM=","layer_level":3},{"id":"5499e741-bb09-4688-9348-a88d5b9e090e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Peer Connection Management","description":"peer-connection","prompt":"Create comprehensive content for Peer Connection Management that handles individual peer communication and connection lifecycle. Document the peer_connection.hpp implementation for managing bidirectional peer communication channels, connection state tracking, and message routing. Explain peer connection establishment protocols, authentication mechanisms, and handshake procedures. Cover connection lifecycle management including connection initiation, maintenance, graceful disconnection, and error recovery. Detail peer state tracking, connection quality metrics, and peer reputation systems. Document message queuing, priority handling, and connection multiplexing. Include examples of peer connection setup, message exchange patterns, and connection monitoring. Address connection pooling strategies, timeout handling, and connection reuse optimization. Provide guidance on peer selection algorithms, connection balancing, and fault tolerance mechanisms.","parent_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","order":1,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/peer_connection.hpp,libraries/network/peer_connection.cpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:16:05+04:00","raw_data":"WikiEncrypted:tpW79Xttt2IDuJ9djVnufNRvG5N5NeVXmeeJQsE0x672PWeNy8g82qUE1cNBUuoTPi8/O6eyEQlOIJf3oUne3vrpfOLf71lbRB78Kk6iTmz3d4798gIz+u3WUotMl5XqZsv/1vr/8QzNDDyoaBzDYVgxBamWHf5+EYQEmD1rvggN2cRsKOQtYsgUIjV/DX7Gyr9OdG4Uuv+KohYhhRPwORi8zhqN55VYcJYkcUmU21S84WlAsZKYu+chtFOfsRLg/SpHzwlcapNJrI1ytjoa6ExkrWrsXq9gKNArNW1WdsopeTFKJTtlhHovHvRJnuKiSiM6zFlGT3kPoGVBdhA46qynTWZnd9xfzSPiPXgX1kQlaR7fVY+WBuO1SUtFSaTF8rPMMdMi7gj46sET2Ia9XQPQ6VZHDxQ0gwbUaSVQyi6QCyp+Ot97PdihHBdp+00y1OqlENNsVBeSwHPU7BX8Zezbx7hmq7a/teaosBBCJB6dEK1u5B9c4L1I5ycTmn4AgUhC3SdpYwu9o1k8dfelhuZlA9qgnyQnwxQryETaDttFJewYEU7T3cGor6i0Uo4joiOcVzSIQrsqLBXUVpNXrc42ZEBrvcVyvVP1GuzDLf1ZroDNDly+MGT1SogDZv6/9u9ZzgqwR3f89hY0FXmgSIMuqd0TwDNqMPrHHrGGgROSSxA9SxuGkP2PMnokz6r5FS7XR1uylx06F03zPfSYduz61Zke2XVgSh9vPHdDvi351pIt+8lM99VCgj8Vr6NBjP5QAVCM5TA0IT6T4750JR7xJNDj9EbCqCGIYg6wfX08yBqhX7/yiJzE1R9qSVC2PW82trtvXd+sQZjf52fCmnv84zu7/ew25tHSCMxF3U6pv/6nabDsdSTkpE09fm2TmGLk0Sx9qy+d0/mm04o2TEjDOeFCnR7GLJ/zFw9uIZmc5YDCoAEx+gYg3cW1DyQxFQwLqkyP9LxrFlkBHC1u6gBI8kI2zbX+jlZhI1SP/mfyEmza44xnUdjy7RQxfQoX5KgoW5dQ60VyaK0Tw9Ss8y2fglT1vsdha/k8b9had8i0SEmkl8bAF47qzUo/SkqDJB6V6v5GyDzxx9V8AeCYmCZtd+tlrLzED5AGmNLnYtCZuLW0nhbIUThDhrUhpLIV3t+mxrDaglaf4miaYEFRwPvYdlQEQ/bGMh65ge0t4jTkwjsZnEDywRw3Wf1G1m6NBFN7qUNyGSgJ0vE6eD0Ayo5cGKRbk5641NlDBJoN/kxVSzala/8Rd3vQhARtk3vlgq6SRZTjhb3U3uR5zrZ9eGlGSzGt5tojXpvW9P2HRA+iHXBNzPaAbFL0bV21HCAhwGu9V390GupRAcb811tmb5d3EO4AKvRh32OAzo6M9BonuEaydvMY2qU7PUJp3jjcfaeee6cgdDHOSwQEFzkyF4jdyhFdgVNPIA1uNydxvPUhTZtmbHTAwJ7nPrW2m0AkvHxqJfHfL0B0B462O3ClkpA8LSIn9nCprw9pD4QMVTeLEOPw5ct9JME6ChxtB0ME7JYZk6Kqgpi7AmGaGtFgDquHFFCRGCbMRlY95JVqqlKEF7bWjovQnnx+8x2LqAzxTEWNmLnzQgxEE9f1Uq37nWRW3qnRGPeIyqmE0VfmqEeVBHWdCS/BEi/M9TFvOlGCT6/IXnpr4hVbKHwUB0jN6aOpp0cv79HjGVtPWlFY5TvuLEm7S+ODIOr72sx2MyOm/YuDqtyppsZuJ4+OLhZNkKHtn8d+KvCKzyVCwTPgQi1fk5f93V7PTw9wpSeCSqvb","layer_level":3},{"id":"4e506e55-1dc1-4535-a31b-74823e2fec25","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Platform Configurations","description":"platform-configurations","prompt":"Create comprehensive platform-specific CMake configuration documentation for VIZ CPP Node. Document Windows configuration including MSVC and MinGW compiler settings, static linking requirements, Visual Studio project flags (/SAFESEH:NO), and TCL library integration. Detail macOS configuration with libc++ standard library, C++14 standard requirements, and Apple-specific compiler flags. Explain Linux configuration including GCC optimization flags (-O3/-O2), static linking options, pthread and rt library requirements, and OpenSSL detection. Include compiler version requirements (GCC 4.8+, Clang 3.3+) and platform-specific dependency resolution. Provide troubleshooting guidance for common platform-specific build issues, missing libraries, and compiler compatibility problems.","parent_id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","order":1,"progress_status":"completed","dependent_files":"CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-04-17T10:42:56+04:00","raw_data":"WikiEncrypted:Lagc5vDVDWJKf0nDI9TGSA5WFJDHl+XgRFW9Z8nrevG3TCAhYIcpEYU1rn2otzoK0HrEK0jMDM9tEMjTdqSFUT2s/zXxLUj1fG7NZ4iHEEDHSkF3MnlEpA0VfBICYmIEysUPG+skLqepPVWG1KHiaLKuhh5y8KMFGz8vf9czZdpBEri/pDAO0R5RG/XkYCd7kytb28lf7+fpAZojUubG1v/nxZl8JrpQybJss1uZ23nrdEWd86bqk3Cw9sbqiahAhqPJE6VBMtgpmRW7Twshw9gjmP2j80RvHuwzEq8HYraiFBGULt2nREETqCLUSJVay9QdNPFHSmcgv1nlO749K6IOf8jvyJEL5BAqr1Y/QKrIDm7hHZauFcS1WEVy7L6mrCOWY7KUpONwVu+vOaFxTTsdNku0ALldwRVrXmGgQ/wjDv0Bn/PGUcOxgW7n2pG//giNon6YErHA7GEiUYieQFI90ZJ+5oD95pxRWJcMumNRJE+uxkCuFyklJfLs2SAfZuqM2ULw0OH1mNLsaUNTcbBDlArHPV78IzpvWoUgk4tcfConWKCNRv838iec6Z8u2rUUNZR0CDOL7K6RFjybi8Ma6P+3RIGnRE7ZozR893j6kSU/yrhYWxR0m1IewVwhBVq6o95yWyHoMTZu3E3nJeehkNDWLnoi+MOrsYflA/1XiMBKZS60IVPM47jZJkvb9DM+ZoVRcD9lgI7md5J8qRvODiXZARh/hLuyNZCKBLfQkl5GiF7F9F9fOuYavuL/Ejp+R77uxMFnjDgyeFETjfVChxb397xHwJApBA0Rw1Ibcn9X3cWsbgXJgKQixvjfXq3MwLMPYtRFI+o/I8iIS0k8JB8dHihnT9FoOMd4P3CK0HT4KLuS10bC8OG5b78Gv+zA/MwZVOoPkiNyyMKpCJki/1BU+0AW5ZhlyH6W34eNJy+hDKPYFHqxIJNyaNXlKWfY8IA6hQcS4TibT3iohEZixNXcfay5LNd6PBf30w6/zIkVmo1aWX20WM/kmC8aYo8cEpVEfHgwe6sEB8P0J8oQiM/eSBlEyidmCkzEae9bpUkL5zWjdfpbwvOZ+aHxxF+bbjH8bbYCU+Kuef+HNviE0s25BLZqPyeXbJmQvoTAzMRslswCGNNw/yAp6FHylTiRUi59aLjibzqFd3lfEy7fchb+nfgdFtMNW1e8mfi1F4TmMYR5xG72yDllegJCfzjpSCtlXellUaG8LIOrjJ/g5J5s9C+u9Z7AZ14gyUMWwAfpnldXvgup46MMQzWFnkdgtoAXdgnyWIzZPze6reTtZt6vzuK/H0+2JUGiQubKLCmJJtHAOAtMPeERunxT5S0bPLAaGC+dVPQ3Bus9B7CXAUApDxXCj6bbBPOmIvu1mcQRQFSywDqN14NSSnxCb4QM997FzIH+KO0Q6DfXMU6Gt+UcZTyL4slDGwH0v7zW/O2uJW/StZhZZNyCtE3eaOvA4KSKrn5WtUgUDnFScw==","layer_level":3},{"id":"f106da4c-6ff8-41e9-96d5-255f4641895f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Testnet Dockerfile","description":"testnet-dockerfile","prompt":"Create comprehensive documentation for the testnet Dockerfile variant designed for VIZ test network deployment. Explain the differences from the production configuration, focusing on testnet-specific CMake options and configuration files. Document the testnet bootstrap process, seed node configuration, and testnet-specific volume mounts. Cover the automated testnet snapshot loading, genesis block configuration, and testnet RPC endpoint setup. Include practical examples of running testnet containers, connecting to testnet networks, and testing blockchain functionality. Address testnet-specific security considerations, resource allocation, and monitoring approaches. Provide troubleshooting guidance for common testnet connectivity and synchronization issues.","parent_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","order":1,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:17:07+04:00","raw_data":"WikiEncrypted:1I+g3iB8Klr7mBC/4DeKMdGxNIcsjOObmJBHKNrFsun7NjeRSkAIkIjgPvn0Ch7mDdGDRfXoAe1bUR41yzysNp6O11x/lcS8a3Ql+s83U89N3Kn9QIK305NUVjepHpGRwCLfuUs6r49/Rmv3IvLnxRoEHmOVl0wtpa/lG3+y1Ne14xPHgmgdT5ReiUN/nXcbHA14+lOVT3SEcda9cKCVHqeI43P0FUZpZcLbL0Hb/8Q3ae4Zsguwd12Hpw95G68CsyAwN1Rm2xgHH7yDcTt5DjjL3XZq/H+YzSdgfFP+TLMsJAx4pY6R4M+6buO8lD5l3FFIQ3FqW/m8g7uM0jnK/8tbFSNYlPMJC1obXfxp0pVqUiYPm85iShtC8nhm/34/TVMpQqFGygDjckU7XuEi07HaP3hTRatT76OMoEXTDLpY232KsbsQjVW68uRk1yj+GQiMyb7g2BDZpxuY+P8Iu3o6DBn3sBUhF43BBVAJwKVoj56yKvSppF2SZfpScCkboybaiHmGwNGUoslVe/CgR9j0pv+uIbjmL2k+XefbYPqCW/DAFQD9YaPMLUX0rkDAGbiawu/EaTAXnYzCzevAwaBvaMimlEHB1EfzGhFbYsFJmwBz9wbcxtE9pPvkbFrzA9Rpz/eIVq7Ufg4lohlimnyu8OW9bP3a5hJML5Ul5tqAr1HfMAC9M5HnAzXqCnYYahVRIMMLjxVechrrwwfEDMHOFNxJmyWQ80unmDR5Dq53k9DL5jP6H6CB5r0z7U4mIMLp3E9yNZGY/1b2/XvcZJ/BWlpLyvfp1XVv+gQcNq7hAsIpyAq4XzBR3Yqlmgdfk2I3qg9AblCrpWwv9mZpvEFcEj8uTq7viBsiX4JurXfPsV79aRzkw0TExgPJV3ZXzglvZ1a49zfz1EcSqU42n68/5+COjjdk6vDvU95/6EoxQBb9zl7eOqluTjQ1R3vDbRKM6OJhrdgMS/nJD3qPjJPcnfGJxGmu5HjqHZm1rk/pqOg6NTm4jag3v1S9HO59r1uPwJXYh3p7tbUOlMYw/chuuNkmcsy6Uah+OKS/uLF9mgqmEey4XnX9U3GJhKy6dHYCUmi8IE4zgP2tWRR1dOX+pgluqLxW7Ub9RyuZ0KgsBEOBmJh5oNrmF602sSudrZcDN22O6PWNwKzukWJrg20wj+ZlZ5j1Hi4AoXBe06kKqLIPY2C8J7Sbra0PDHw14W9H90rpWsI/zOkUKdbcmrAM8x3wt1dBbFIZo7d7SDSMHqPo+MILMlP/cLh4e5zuOQolQhEsJkYT7fnqc3jAoOVSPoMpONhu1RcYpjX5zrVMMd/oJU/H4EVO421T6VMr5aYLgp7gVk6SvcmFXd5Q9NAIi5xge4XsGY8op5iz0Tr4lRrAB+GdneB9fiIOYJEk3L28A/kaWibKkbNe6YOBKCW86vLNQw9kNl0+1NwgRmpuEzxCvt5l7u67gfqHymyp","layer_level":3},{"id":"d1240b5a-bd88-4819-a5a5-6fe5c4c1d0b3","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Reflection Validation Tools","description":"reflection-validation","prompt":"Develop detailed documentation for the VIZ CPP Node reflection validation tool (check_reflect.py). Explain how this tool validates reflection metadata for blockchain objects and operations, ensuring proper serialization and deserialization capabilities. Document the reflection checking algorithms, validation rules, and error reporting mechanisms. Include practical examples of running reflection checks during development, interpreting validation results, and fixing reflection-related issues. Cover integration with the build system, automated validation workflows, and continuous integration scenarios. Address common reflection errors, debugging techniques, and best practices for maintaining reflection consistency across the codebase.","parent_id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","order":1,"progress_status":"completed","dependent_files":"programs/build_helpers/check_reflect.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:17:31+04:00","raw_data":"WikiEncrypted:bzyetvPZRDtDTnozObvREtrhIrVNlzR9GjOxDARd8qaPKEK0AkNVEuyEWFfIrzjBn8DY6shjGjbqn7TVEpFIluO//1stc1a9TeIVJ9x9W8GnhxuSgajiCEqcxRq/kcWqzRcNq+G5PBS2Vke+Q50oFUmdFPFUbshtige+XHhAM+vr1VbcBaNCvAUnkMSy0cxMpdfxTVp6Lt2BW7voUFp5V5v4wm+eGDYDNJaR/hahDs2WNVGZLd5R0rgYfezTRSEExKq7Q6et6AXVy+pmVgjjZ8ZlGuiO0PQUrn8+34AQSx6pG1b2AZWeaLkhKX7nsekKrRfQhE8xHLo44PBWGtCeP3R+0FPsvW2qbTMUKtpZzwUnfEGZKLte10pyWg39bdvFi7yVl68CABfWhuGT1/bcj615AJhU1WyQObutow+jFnlBjYThqH3JssNmHv1sqy/vwX0aD+YYIftEC94eF7GLoiFluSmUz/f0jk77xwnNPi1B5b3Xp8OarYxWlENi1n//v1POhwuOiylv5EJC8A+vt+k3lyM/E/fLYsZsbN3dxZK5D3ysSEpx5bybq+EOSQCTsMFIqUpGc0keJMdoUq8tLhA8T0ihnlvY3IHyE0Ekojgbf42PCqR5UWjQ2UMuT4qse91Ss00aLjiozuB5ncWKd411zVc3w+V/RuIEOgA7CrShgVwyKQqJY79EvjliATv5Kh4krN0OFZSA5l2BSXKmie4wpSrsKPK0pmDxFlfeuKBCurgkt6vPrUYKtmLy4etO/X9W2BMiMkZQXJSTaIt0rCK7dCPCmeE975IT32alaUaDIlZnBEjvpBqkVFN/Pb046CjE33AdgDHbXQg+T8aNRvOpYZMal3BCnw7IzbMMlG3rawYhXmnXggCxRFexufLtLWKHkxRARivsT7EHcredBAeoSt26ETGMyGZ/Pop47RzOgk0kKCaT3BCAm/I7wZlU+XgnStRjYuMf0wJKf8P8SChYRpK/cUWIlepMtHy6/8E5fkFgrdv5SpyhUoF/wqEHskj5jLC0ZmIcw2l5LrYcd70U2s49AdI4uIuiH4ItRGiqN98cImdA2ryU2izjj9Xde5f1vqBBQpLowqdBNH35QXJsxqIb1RE4+bZ2ySAj7LtV4SPUMffW08rQSlhFImRB9BnWYdCK0Utm+7t/BahAZTEI7L+yFhkq+jj+fdCJzkhzturXGB+OWE6FomYdiD8MYo6LPDyGpfuE8zHe5JoKPFzvp3pWPwxYn5UpnvRVwoOVXviLY2CQOMVLCpxkjXC0BQlrZ7377iK5HtByix3XosgFTKsVppHbl0RdE5iWZVm5lrHwDWctVdM1iB/+tsRrwUpXMUGWYeLvUSVx9b7cJdT87st9oQ6rAlcRyjeTqam5QFb/B8Vukl73nWFLQf4UJTFQyjEGTfvF306mXzZLoRkaeMZN1irqzHCHuS7d9c0=","layer_level":3},{"id":"33eeeca4-c122-4e5e-8da2-0341983c4703","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Snapshot Plugin System","description":"snapshot-plugin","parent_id":"30365a88-1ac9-4976-bee6-0b742f50bbc0","order":1,"progress_status":"completed","dependent_files":"plugins/snapshot/plugin.cpp,share/vizd/config/config.ini,share/vizd/config/config_witness.ini,documentation/snapshot-plugin.md,libraries/chain/database.cpp,libraries/chain/fork_database.cpp,plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp,plugins/snapshot/CMakeLists.txt,plugins/snapshot/plugin.hpp,plugins/chain/plugin.cpp,libraries/chain/dlt_block_log.cpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-13T15:59:14+04:00","gmt_modified":"2026-04-21T15:30:11.1363991+04:00","raw_data":"WikiEncrypted:aMBX4tyQy9CspId6SOjUsPjDbWaE0XwjiYFfJC+6JmpoDChB3ZowO5dYf5bnEbW/owWEY1csO33LOVGSLpEpLAsElEIuL6651OxIlbI6Jx4VJMJygyPsMEb3u2618Hv1nZRF8bM+TfiU1NGhj29HyxHjl7DF9Pk3Wc5mTYafR6zMw0AeVfZjHmkT9AsG+wjcDo5czsCJCS8Rg3saVBjDo/1pCcuBhWssIBob2DX8UmJR30klyrlLMWk0rE8H/QR0seY2T9mFVV/uh+/dZSxeiZOtaZlvl9ObnwRY3GvS2v0tco/XIDTK+fWR+Lz0z7yxk7zxoAHpQ8Rg83fwYVqRmDtwJ/b0ZAp7ANGtdciQlsNkPg9usiY1oFFd76NmS9osd5UN/Pe2XLJhWcvusnYGd5KtxWMZNLNoLkG242JN2nP71smdcIEuzW5/MojYwwAGnDiOZhhly1LcJVhox0wNBb6cn/bxfQgFGvz0EmdRT+1POvSd8UQes6z20IQMUcSJD4EOSefNrA8rQUkLmgOsa2Ly2GSXTaf0fuAbToQOnL7jZSSiVtfqrJ0pAWe+emB/G34QWlfI04RjlQpYpv434OaaSvzc/kQuMU6AAy+22U3r4sii4JCxPyhxghokGWrx1LdIv+TB1mmItMfn3ex/BmgxIFaRbaHkct0RWy/RJfz0ZkXyVbocTaSl6FoDtxJ7MAhXuWRcpfFI+yjCyutSx7pCFbpOfk7w8x6Nka6/GjllPI+lGjdjpK62J/XBXt9HMhO3b7rUv20fxSVoQ0+EaA==","layer_level":1},{"id":"03bd970f-522d-45d6-a1f0-b62b8710b708","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"DLT Rolling Block Log","description":"dlt-block-log","parent_id":"abf01aa1-e77f-4a65-b1ae-ae4fed1d0ae1","order":1,"progress_status":"completed","dependent_files":"libraries/chain/dlt_block_log.cpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp,libraries/chain/database.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/fork_database.cpp,libraries/chain/dlt_block_log.hpp,plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-13T16:01:33+04:00","gmt_modified":"2026-04-20T10:26:23+04:00","raw_data":"WikiEncrypted:s2jjuqSQeKwD1hNHHJ9DR2MPb35AgwzTacHpcPL0OtJB0zaRNLYJ+orR6pmHUkGhks1yVrOPHhwOHdr0evYd0xEi282qASpCMeLKGxgeabO4wWJCefkdwW+00NAyLKPpF5TRyYZ+UwGTHAheIXwbFWqT9C+s+LA3IYd0iPIRaYDPXsWnOaxlFuByDTz2fGIFbzQbi2OBxoJs3dFF/ZA79XxaWyIxsn31Q00d4o2IBZ4Gal/zej4WgSrxFocEkfqYak6Gd82wv4w3Bt1lpmxaQGZBCli64gzqLG3v8RwIeE1xlaE7l7Xm8w+X7DvW6xbTpLre9hHx8RA/CZJSv5cCxsczw74XS5u7Y7TrwWgbgG8JL9Hzy7G4Q8cYCn7D20vgTK6jK/2BMyOJ5dd1NKC7otss80YqCsW8wtcpotteMqBujxThE3A8Wwl2EEWcUnjQ83BDUm+tv5h3vf0pG7rcDotJivTCSa7JvigtKWF5eqfpmOrCa9XoR+WHilZJG+mA9cWdpYZ0Csd8sAzDqyvvr5giVSaKFYQccNORBfPhc3M=","layer_level":4},{"id":"7dd528d6-fec9-43b6-9593-e3e904ca7334","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Emergency Consensus System","description":"emergency-consensus-system","parent_id":"3b1fd02f-a35f-4130-97fa-e4d81c8e10b3","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/config_testnet.hpp,libraries/chain/database.cpp,libraries/network/node.cpp","gmt_create":"2026-04-20T06:57:07+04:00","gmt_modified":"2026-04-21T14:58:41.9808638+04:00","raw_data":"WikiEncrypted:yCC4O4QQiwfuc1LsaLvGZSv7iyGIp30QuTXuQp4YbjBPkP2yi2DSamCQ0erkARNQdFUVyIGCSLZc9P70aEvXU2XDlPi9dn8dxZ/3E7hfD7l8VSySXrg3ONRMw5gixEiSYtQ4qgAlp1kaZpLECZqtVHhhBDsmmA1+uBVR7U0iZY6dUNL8LK2WMd65KfmNdbM4Gs9dejUyJgNkxT/xr1Tax/V+2IgVqVpyPB4a6a9DVSAKXWHOU+jJnn4dPNrlf/gNXL653EZ+A0q0bSTttif9xGbjQWG9GfftOYnmeK2d1GA9enmwE92RCdxuID0mPi4J0JraL3Sdkw3VXUpljXRzXSVBa5Mu25FQ6zYhiimMZ7A=","layer_level":1},{"id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Architecture Overview","description":"architecture","prompt":"Create architectural documentation for the VIZ CPP Node system. Describe the high-level design showing the relationship between the main vizd process, core libraries (chain, protocol, network, wallet), plugin system, and external dependencies. Document the modular plugin-based architecture that allows for flexible feature addition and removal. Explain component interactions including data flow from JSON-RPC requests through plugins to database operations, and the observer pattern used for event-driven architecture. Include system boundaries showing how the node communicates with peers, handles API requests, and manages persistent state. Document technical decisions like the choice of C++ for performance, Boost.Signals2 for event handling, and the separation of concerns between different library layers. Address cross-cutting concerns like security, monitoring, and performance optimization. Provide system context diagrams and component breakdowns showing how all parts work together to form a complete blockchain node.","order":2,"progress_status":"completed","dependent_files":"programs/vizd/main.cpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:32:30+04:00","raw_data":"WikiEncrypted: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"},{"id":"70d0f804-ac06-4c37-9779-b30d8f137419","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Core Libraries","description":"core-libraries","prompt":"Create comprehensive content for the core libraries section. Explain the four fundamental library layers: chain library for blockchain state management and validation, protocol library for operation definitions and transaction processing, network library for peer-to-peer communication, and wallet library for transaction signing and key management. Document the relationships between these libraries and how they work together to provide complete blockchain functionality. Include architectural patterns used in each library, such as the observer pattern for event handling and factory patterns for object creation. Explain the separation of concerns between libraries and how they maintain loose coupling while enabling tight integration. Address the design decisions behind choosing C++ for performance and the specific technologies used in each library layer.","parent_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","order":2,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp,libraries/network/include/graphene/network/node.hpp,libraries/wallet/include/graphene/wallet/wallet.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:46:01+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Debugging Tools","description":"debugging-tools","prompt":"Create comprehensive debugging tools documentation for VIZ CPP Node. Document the debug node plugin functionality including state inspection, transaction tracing, and blockchain state visualization. Cover transaction serialization utilities including sign_transaction and sign_digest tools for debugging transaction signing issues. Explain network debugging capabilities and peer connection monitoring. Document performance profiling tools and memory analysis utilities. Include practical examples of common debugging scenarios such as transaction validation failures, consensus issues, and network connectivity problems. Address log analysis techniques, error message interpretation, and systematic debugging approaches. Document integration with external debugging tools and IDE integration. Explain debugging workflows for different development phases from unit testing to production troubleshooting.","parent_id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","order":2,"progress_status":"completed","dependent_files":"plugins/debug_node/,programs/util/sign_transaction.cpp,programs/util/sign_digest.cpp,programs/util/inflation_plot.py","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:45:42+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"31f8752d-6fc1-4b58-b065-119942a6769e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Docker Configuration","description":"docker-configuration","prompt":"Create comprehensive Docker configuration documentation for VIZ CPP Node containerized deployment. Document all available Docker images including production, testnet, low-memory, and MongoDB variants. Explain container environment variables, volume mounting strategies for persistent data storage, and network configuration. Cover Docker Compose configurations, container orchestration patterns, and multi-container deployment scenarios. Document image customization options, base image selection, and security considerations for containerized deployments. Include practical examples of common Docker deployment patterns such as standalone containers, cluster deployments, and development environments. Address container monitoring, logging configuration, and troubleshooting containerized node operations. Provide guidance on Docker registry usage, image versioning, and update procedures.","parent_id":"cdec8606-b623-47aa-8501-03011ba583a8","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo,share/vizd/vizd.sh","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-17T17:31:31+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"e9af759b-1b20-4e33-9ee1-ae82f7649e11","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Cloud and Infrastructure","description":"cloud-infrastructure","prompt":"Create comprehensive cloud and infrastructure deployment documentation for VIZ CPP Node. Document cloud provider deployment strategies for AWS, Google Cloud, Azure, and other major platforms including instance selection, storage configuration, and networking setup. Cover infrastructure-as-code approaches using Terraform, CloudFormation, and other IaC tools. Explain load balancing configurations, auto-scaling policies, and high availability setups. Document CDN integration, SSL/TLS certificate management, and security group configurations. Include monitoring and alerting setup with cloud-native tools, log aggregation, and performance metrics collection. Address cost optimization strategies, reserved instances, and spot instance usage. Provide disaster recovery planning, backup strategies, and multi-region deployment patterns. Document migration procedures, blue-green deployments, and rolling upgrade strategies.","parent_id":"af2002b4-a118-45ea-823c-1a85dd576b13","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/,share/vizd/config/config.ini,documentation/building.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:46:55+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"f6daad16-0599-4587-9fa8-3ed53e00a90a","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Custom Plugin Development","description":"custom-plugin-development","prompt":"Create comprehensive content for developing custom plugins from scratch. Document the plugin template system created by newplugin.py and how to generate boilerplate code for new plugins. Explain the plugin class structure, required methods, and interface implementation patterns. Include step-by-step tutorials for creating different types of plugins: API plugins, database plugins, and network plugins. Detail the plugin development workflow from template generation to deployment and testing. Document plugin configuration options, command-line parameter handling, and integration with the main application. Address plugin testing strategies, unit testing patterns, and integration testing approaches. Include practical examples of common plugin patterns and anti-patterns. Provide guidelines for plugin packaging, distribution, and version management. Document debugging techniques and common development issues.","parent_id":"e263dbfc-2149-444f-82e9-1a2e835ed847","order":2,"progress_status":"completed","dependent_files":"programs/util/newplugin.py,plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/chain/plugin.cpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T08:00:21+04:00","raw_data":"WikiEncrypted:VrTOMK0P24YINQ3w81YokeSPoB5X9Zo/YG1ok/2a/9ryYLsqc1VARxnFCL4h0y80V3hdIQYc2nWoxIlKRpkvalc7lk5z+JlJ/h/qV4B6VpDkk+7D+iI3Z4iiJ+aP+fnnzj9U/9miQtCCYqlIsgWw+M9ctNXxnyPRWq6ZFHOXO8ReBDq830QA0iedXPe15iArFJ0CpRhfTLTTh9ALhUWxyPZRIZcV2qFU6q+pSX3xNlG5GtLnDcpg9SthmqU/6DxfF0a/GwjHlA0Qm5Xf+F+i4Bdbvby/N9F61bsAtP6CIYEEHZLpvZ7bUxWipx6BT4CGRgByiPmQ39OAPt4yyHIaljAbblr55afTAwZrUbm/zWPAE/pOToMuqYS73Q6aDy9pnGPyS7rCRF9EkKJFcUNHl5hDCnShN+8gSxwHBbKCQS/XR3jbcnxP31XcNG3EM+iT2BUM0KL5nyDV7vLfXXzCeX5cVikVB4Xvdd+GxWgmynOSqmhniOSVBSDu72nUH5kJrVNHoq4Xz1GhNe2cJFUTNkj4PTWcJssbQpwkn+9d9n7cvrMZO3AXrXCluG87yDMzBWORt2Ea0c8YkAiIjgVQlJJwhagve5TCBW7UzjSk6V41rVhKTEM7lCXWLy/yp7YpGIfakUS7Lo/hCeMT/WyMLWXmqKUvfEnAGQUp6mO3rRRUZBCbNkG48j5RTa3tfd0ak0RCGAgJNjiGRso9vwW3Jcy2MDZmKhQmBrhDQU+VTIrOkUnE6BBsC19VAj5nax9ACH+hFBfL7DVYoQIGZQWp1UCDJ8KlWyhVOtYYCq4P4NYjpZTqjd1Vm4RASVSfB0H+7fXJHEKaB9G/eXLp3jG1nbt1IKwDLbT9PpTNnIeF5JChqi049/67JCP4z0rbSq8QP5NrL75g2vXzybKuUtBIRlltbRFisNBnLGabdSJSFZ1IhgJOrOeLMYi2QlJho/MC0Wj47wyZwfdQDYqPaKXRBXQf8g0cukIk1nsIzfdnkDFylPauDWhPeJzDDoj+Xjur1CqrVQgeqxTZl7F5qLt9zHcYMBKkKTGe7HXcBOPiBNyiqDaBxvSLGres01tOjl9CLdct1U01YH4NADG9O0zSpORIsSwTPiucTKNwtQK3KhLpXkhbBHtNc45Yqx96Ok8aKTjwFe7xsSBzPFPdzKDgYzK2O0wbdd5cXeoKtUIn2wloznUviwRJIA9vBh7DtFIUZZgubozRwhs7h3AQ20bM/3F74UthcMhn3AWW3KvV6lwe2ZAUufnBvtPcNQJaJuIk2JPwxkm6TgWeb9GjBtMUaFWYRbw5a5qPyku889Fa6+eB0DrWaDsAPZC01H6k847c3XKGxo/2lCbVnGbNeQC4oAmm677HgDhYaI/Igx75b19V1tEOkUDrxbKeMW+zH+M2XVjD0XvnmpZXJORM9byRnixT9WBsPniMEfMc4Wz6cl/LWi+j1zTYfIB3EVLEJAkZwwtMmwaUvaE/3QeeOrNl6PeYpaFmom2Jduvh1TrvsgC7qp4ii/vL6o76+31OePjzmCIY6ELli+eSVt8H4nqRSlcT541ZYf8jchQUrKXuMk1mtV1oLUgZeW0RZkQx6UN/3aqbbeTypZmueX5+evi4WFejrIPWU7EN0NFHUkZlAql1SXbK3nQ+aFAFVOXeafevdvZpRjQaS0j1idhirFDc/N+POguzTwbVsiJ4x1WByRcs4EuuSUTgWZeIxZLyQ5xd","layer_level":2},{"id":"94f6edf7-59ce-43fe-8086-4b56ab7beeaf","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Security Implementation","description":"security-implementation","prompt":"Create comprehensive security implementation documentation for VIZ CPP Node. Document the cryptographic security implementation including digital signature verification, key management, and secure communication protocols. Explain the authority system including multi-signature requirements, threshold calculations, and permission validation. Cover API authentication and authorization mechanisms including token-based authentication, rate limiting, and access control. Detail network security measures including peer authentication, secure connections, and protection against various attack vectors. Document vulnerability assessment procedures including common security risks, penetration testing approaches, and security audit methodologies. Address security best practices for plugin development including input validation, secure coding patterns, and threat modeling. Include practical examples of implementing security features in custom plugins and extensions. Provide guidance on security monitoring, incident response, and security update procedures.","parent_id":"897392ae-54d8-437b-a160-4459c53e5848","order":2,"progress_status":"completed","dependent_files":"libraries/protocol/authority.cpp,libraries/protocol/sign_state.cpp,libraries/chain/database.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:47:20+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"b05dd222-6448-4160-a0f5-37aef26f89c7","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"API Request Processing","description":"api-request-handling","prompt":"Create detailed documentation for API request processing from receipt to response generation. Explain the JSON-RPC request parsing, method routing, and parameter validation. Document the database query execution and result formatting for different API endpoints. Detail the webserver plugin's role in HTTP/WS request handling and response serialization. Explain authentication mechanisms and rate limiting for API access. Include error handling strategies, exception propagation, and response formatting standards. Document performance monitoring and optimization techniques for API request processing under load.","parent_id":"478424e1-4bbd-435f-ba13-944c9e421a4e","order":2,"progress_status":"completed","dependent_files":"plugins/database_api/api.cpp,plugins/json_rpc/plugin.cpp,plugins/webserver/webserver_plugin.cpp,libraries/wallet/wallet.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T08:01:46+04:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg1JYzeCsCQE5DuJT41k9RTGrPgA2abBsNlRj9b4XM+jkw4/9NpaPKF6EJT5TeM3pEGtAXs6fmJFpD/ClSCokjO5iH688bbQoqGmQTvYhz6YFrqi2ZwZCgLZqxXjeQ+3tTxBnymCnZxB8FG4ZCYnO/aM7mVFF+wX7cs8cHpaPsXcOfr6Hd4fzmo068z3DM7cGFEXM5A9ls1NnArh155cTf2tueq9UMQkcnntwWzMc3neifSA8s7zCMMuRSbFSClMbY6V9dfVNk5WdOY7cmVE3DUCVinPejJUo5YqsnmY9dctLkvnCjD6r/kkmzQGUdQwKWL//akcURyfe4GYPSjtIZ44ZT/CLrBfKXTw7lan46TCZC7F6qfHQ9aadN3F4TnU5H1ujcRcpThzxdMPsuZ5BEQn14HqOBg4t1kbtlKTeiELTT55CEJBjW2rFbl+U9FB08CuygiPBZllXzpMe0RU4PDD9z79SDJBWHgOSd5WGX1YGQkYKq8L4nuJtoWQlrZ0BPAWIbvneiGiA3oNibLVvbq9BAn3NLuJI+AHJ3loWhzJGAZn6YE/6InN+lcFAd947H4Pe35OluAh6wFSB+XAcNyhKupdb5VKxOSe3opO5Qc8am/tofA8ZU9WYaCGGUEqT+/e6sSfhJsMLLmmY4CNJDdej/QfScNXvrkwcxc2LiYr0NgtIOrzGpsQCuhUVJMPO5LTXSgIqFPE6My9mOIRFinxm2t95cIsVXW4w9PLc3nX8s4sDtfXKxBJNNVzoPQqh4ovzWp8W0I3tY9AJTzVwJpyS3nRWg617dFDa4qGd2+4E1erMFsGEK8BgcY49CVHEMFf9sT45cISssrcMnGi02O6q0dnjHEEeAAY/0T9S4FTN7i80L4k4ZmYEqxKSZLyvrD0737gx9ST0tKa6JpoLG9tT9P1uZnS53sE9aD3HmZkiyLupKeDDv+qpXFpKQoFnkXRndxAB3otewfQhgjJBiHkvHJOUCcGwu7oUTksIx2X+p/HOUVm/a/YaOLOlZg30lXvoq/NBVfV6OXioS0MhhybUF1ZIFv7bCJjXmKAjJ8RzXFBIteGan7GbAqfpCj7QXfNKDIbLTzTS8Tcc3xAX5SftkaJP0F1zb/wPjohfgyOydr9/jfRh6sukEK9rzTfSOuFC2Fbbo/6WmxuoHaivcCwy0lnYP6CZSdGlum5moeyIrqTQBKfgud7vvmpVu7KYrWXaidCLR8KPdODZbPhMACrFawOh3JYjSLEpfTMgtfWikcDOVPjVG52gBOdZNLUQlkJi/ZOAXSmAlMebJ4m1bVS5tnVK9x2Xb3MMwNNJrrlh8aX4ugvzgu71ryH9sfQkOi0JNkbmRqzITStS4cC3qdTs9C75L7Vl5oaVmuz5yGSn","layer_level":2},{"id":"b75a11a3-390b-48e2-a30c-a1961338cb53","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Network Library","description":"network-library","prompt":"Create comprehensive content for the Network Library that handles peer-to-peer communication and network protocol implementation. Document the node.hpp implementation for network node management, peer discovery, and connection orchestration. Explain the peer_connection.hpp for individual peer communication, message handling, and connection lifecycle management. Detail the core_messages.hpp for standard network messages including block propagation, transaction broadcasting, and handshake protocols. Cover the stcp_socket.hpp implementation for secure TCP socket communication and network transport layer. Document the peer_database.hpp for peer address management, connection tracking, and network topology maintenance. Include the message.hpp structure for message serialization, deserialization, and protocol compliance. Provide examples of peer connection establishment, message exchange patterns, and network synchronization. Address network security considerations, connection pooling, and performance optimization techniques.","parent_id":"70d0f804-ac06-4c37-9779-b30d8f137419","order":2,"progress_status":"completed","dependent_files":"plugins/p2p/p2p_plugin.cpp,libraries/network/node.cpp,libraries/network/include/graphene/network/node.hpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/network/peer_connection.cpp,libraries/network/include/graphene/network/core_messages.hpp,libraries/network/core_messages.cpp,libraries/network/include/graphene/network/message.hpp,libraries/network/include/graphene/network/stcp_socket.hpp,libraries/network/stcp_socket.cpp,libraries/network/include/graphene/network/peer_database.hpp,libraries/network/peer_database.cpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-04-21T16:30:41.1996791+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Docker Integration","description":"docker-integration","prompt":"Create comprehensive Docker integration documentation for VIZ CPP Node development and production environments. Document the multi-stage Dockerfile variants including production, testnet, low-memory, and MongoDB-enabled builds. Explain the GitHub Actions CI/CD pipeline configuration for automated Docker builds and testing. Cover container orchestration patterns, volume mounting for persistent data, network configuration for node connectivity, and environment variable setup. Include practical examples of running development containers, connecting to test networks, and deploying production nodes. Address Docker-specific build optimization, image size reduction techniques, security considerations for blockchain node containers, and troubleshooting container-related issues. Document the relationship between Docker configurations and CMake build options.","parent_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","order":2,"progress_status":"completed","dependent_files":".github/workflows/docker-main.yml,.github/workflows/docker-pr-build.yml,share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-04-17T10:15:28+04:00","raw_data":"WikiEncrypted:CMPQKjsWj44q+b7DSXFoBXMIGf3GaM3SGkmd3tknFiEqzTeBe3V3x4Rl6LRWK8ucLbbUzS3JInyHtCKQF0ZtTRFsUM2pHuNQBR/McP7zrp8kqpYHwp5RGHgFScAIJwhQeXMWt06bLnmVd5jsAHbioGS3UmhZLSzkbyFrOFeAaGEXV1hChm+rrU6fiW6cWeDh/zmPZpRLLe9VMrpkoEeRdFbzZT3WClOHLOc21Q2QZIyRj/POcXUEOYFj7lriSL6UWS5n1a2f0990pasHQZrSROtt5Xmal47gweop/quaPDZwrVU6s1NnlXmCs6rEr4dJA5PRzeRuwA+IdaxWwk3Zb80SobupVgM5K8g0YWDexoK15CgzQujFwTMO2ERL8laZv5KLrIl5W8f5jaoBbQJ/lpn3NzJ7j8V5G2HV/Pxd0mQTNJQnaMEexQshyUq8A92SpD1Gs6HK1JIdhUlzhsRe1GRGoJuuPM8iA4tSta7F+VdgOw1OQR8qMP1qqr/fGPBLGlIv+hJiRrCjjNH7qpZbCcJ+PKj6aYiSpYSoEc9nvZtyH2+YnA2QhNmN4hBmJ6cg7dQo0aeXxovS/SXyorpTTYYDRllJmEvXUA5rZVLd9m4JHDlnClDCncfys3IV4iX9C+0Ah1xl89YcyJQl8XkY/g/I8pqvKkNxvEtpYL/TgSqROPQOwHOJpgfns8EsUoUrXC/j5oCa84HkdfonOoxNcSpP3tZ2DEj/grMQcCXy9p6atU/zKxVo34A94/vTRp+1ipz5l85OxMoNLshI/I3p4+dAn7iuK/aEe33cSFaI+8Inb5ihmdHlttjs5r/LOqmR+MT1od9da+q+eAkI2NU2wMeDjjQrohsBGZiCCc4fTm99YkcmaekEa1pKCELRIAb1HQKR8nJ6Lvcl3fXj/EddyME3X+v51draQWrzB84H0iqVHKBhvctVPQqp8F7UTzC9ZV97vjpmMpCKOUatXSiXCEA4U/zUEZkSXx+Om7XEhUGJjvZ6UOcd2JW17WKykU5RkzualU11W9DGXaQwMkZI2AY8ipfR1C0R7ZBmg1v3m5Ae8vCCzwjnIP1mkLI+YbifLz+WQNRyyx529VyDi+bndgCEnArzpZePLaLaIOTGwU+fupkPjyLtgO0Mkpjhg8Vjrr2boJhLj4YpFopCDcD23akpBgMUjtnkleOZIaM0c/CSz3r84qmWigf5JNU6vxgBsuosmE1RIbj3ql1+qtCEhfGozSOYcyiw9lR0rNCq2UzWi0fNGU8Yu36iNXw0nld+PFDTSNPLb4Ed+KkqeMzyIIMaPjx/FAGy7UnpG9ZlfLGR4lxxGVY2cOCPGYj65fMeBBL6AUWw4J+SxapwO/E+8gfdYpgThk25UybTF2EpYO4Gpn86aa93NSggOT18LsOWm74ys84v2mxBJ6ds1Fbizl3EJX4jLUG0bJBR6kpEMOwkYEgs5tIby0stgF8anPgJC/Npttwf4iGkZ9WrL9fDElVv70dYw61rXyzQV7NyplySti9UNFqHPqNYeW3PW1VdlXOAWcJx6ic4QFCQPHeX/42x3lcgwDmgUBFNuVBMzgHu+ErwRngOCG+eaBoN1RtIFoDrFTAuf17hiDRMN5yE5hIx9xbtb9LKoVnMnBRGHVt7zMpPE8bkGlFDyYfs/0j7xtso4DtUkFY7kOZcgB3HWnJfMXPQmCMahTDHo1bnk5cwa8WtJRLE7Ns87Wt4DgTeN8/JZnRxmY4uEOzAnehwmcb7I2OUEVk0ucosgNmJk56x2PxTuFbfLAgr7ZXznOt5zxJLOKhaRiqoY+T6fbdwdr5dDazRxSqhLEF5KYJbuFEoPvfILO04KeaXNdPZ0GzZXRHUJ+saTGDDDSJDjI/woJxYnpPrA/ejN0UIER/hnmJ4H2GlP6kgjCqt/X6f1ybak0FEPX+1HEModDzw/Cy3tw+ZyEROrOBk8q1iE1FyAoE=","layer_level":2},{"id":"e76fe27e-3a85-4ffb-99ee-948e327f7295","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Network Debugging Capabilities","description":"network-debugging-capabilities","prompt":"Create comprehensive documentation for network debugging capabilities in VIZ CPP Node. Document peer connection monitoring and debugging techniques including connection establishment issues, handshake failures, and network protocol problems. Explain message propagation debugging for understanding block and transaction distribution across the network. Cover network performance monitoring and latency analysis tools. Document peer database inspection for diagnosing network topology issues and connection quality problems. Include practical examples of common network debugging scenarios such as peer discovery failures, block propagation delays, and network partition detection. Address logging configuration for network debugging, connection state monitoring, and network traffic analysis. Provide troubleshooting guides for network connectivity issues and performance optimization techniques.","parent_id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","order":2,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/node.hpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/network/node.cpp,libraries/network/peer_connection.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T08:04:07+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"97cd8422-2f5e-4d81-b2bf-53711c6cd317","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Service Integration","description":"service-integration","prompt":"Create comprehensive service integration documentation for VIZ CPP Node deployment. Document systemd service configuration for Linux environments including service files, startup scripts, and process management. Cover Windows service installation and management procedures. Explain integration with reverse proxies, load balancers, and API gateways. Document monitoring integration including health checks, metrics collection, and alerting setup. Address log rotation, centralized logging, and log aggregation strategies. Include integration with cloud platforms, container orchestration systems, and automated deployment pipelines. Document backup and recovery procedures, disaster recovery planning, and high availability configurations. Provide integration examples with popular monitoring tools, logging systems, and infrastructure management platforms.","parent_id":"86ce68ee-34b2-4018-b7f6-32813ce68949","order":2,"progress_status":"completed","dependent_files":"share/vizd/vizd.sh,programs/vizd/main.cpp,share/vizd/config/config.ini,plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T08:03:49+04:00","raw_data":"WikiEncrypted:vMsgMax61wW2sTWhXd8DH8qAw9CtLog8cZ1tiD2BFP+U0bXW3hqFYf3RL9xyiBC/9b4sFP+QmOk2wmA/qm9hf0gT3h2Jws99nvB34YCyl5dFaIRl84rx/o3Zykg3tatTYFluDC7sbSvs1O0o8gMlPHhUonDd9S0Wby8VPQZNvmSEJ/WgHJJygKImU3JR6hCKaVPIJYXeKFOu2MMIoj0sshp9BQnlc1PmbUL9S4on4eMkB10USK/Ro+RgIaYSkS55t21sHWbLTo0AlxIYQ+u0KpIzryme9wNUHxNVv1/IR7MrAd/lUW5ytYLeeT+8Vl87eR7Z3oPoyjsZ3ZbIID+QIAzdNu2832ZZA7xUUgZJBC5mMJz9XR+Ufm671kMd/tgGWmWR36CAQ6tg5WVoTK7FLLOP7NJr8n8JYqcBpGXHRoFWOzLaYd/eBTgigAT2//TsubTjnTst0Xr5wCwHMEizXHcho4YT8rdM97WryHG0LqDXPXpKfJdorLOlz48JKDaCjVGeE0oO77OerszQWRaaHz6Otzq3+Suf167Tp6EQB6ErQpC3x79NVUEBJkgeltwq8BZzB7mT8WjiD8dzA0ouZxOkfye1tPTKgdN9llQJQM8YmsxV7dzAJ9Zk4fQR32f2I+8aMONsLHq8Ye0GRjHmVjSP/I59+8qzq9/vTKE1DLsRm4ATPJm6qpIKnbhA0L/QUgRkjpOOiUiBlYcKuzkNtxwYGT3Kl2H16TVZv92wuUs9Q0igRFhOuMXtMF9dOAD+8d1kAMc7s4bQJGqb03MNS52ZDa2NIjyeDjP0N/ZIVSlCLqlIXeF6nFzlI1+2RLWMSqlSXt6WiZXkhtgnbBXQJLp4ZBaKnDBezrJI1PXBohf13XZ2y6AXkuGKjJwe2fxE0A8vynkyIyTeAHBpfoXcdDVI4GhaTQMaGsASUAJuQjOCFcSj01Z9IjxjFv9fddpSlR6KvnOhqrbnZhltVnNCS1CwWaGGvp6fakDvnZR8lnmI1mukzzde0zZ2GwMrypQo4wuGW5bUH/XJpG/r2UwS31ArKbP6E5Mfq60OymRDINMWSJD016iwBtvaEo1S0F1Vjf4P+4v/qFKApG9mMaDKbbKoS/PxvkW7YxbBhXqSws/TlykHsuEDeoVK2qNyZnn16LP+XaIog+yFNJBrS2FuZVo7pO6c/qdLfuiO550zmM/y3Iq9vfDEywnwrMah00LPAPrIw/Dmqwzn+PZdfz/GeSJifvAvbHN6iqVbUV9Est6nDFcNVqxGylGlPui1mJ3eFg0/wFAKf61Q4yzylgEf9LWqzN8hl6GDzQvN2IY7J0GbIzEPoh3fayxchmU1Zeom4xwtv56vCZFnrdKwgAQ4b3HBzBT75pYKEeNtPfI0y8BJNbfYdA6jocqZP0rnE2GTTX/2LIi+d5ftnKdahlv0oDtGTzHUEnh+q+ymfrrslIS1YjUiWsYi6g2LlRAmZ8gzhK76DQ7/dM8k7Q3SoCRk5z/kcLrgy4Z+lSLqasmUGhewoVBLdudC/Eam77SJ15s/5T58WIE3NT1UOw8h5O5j7YSWM6ErjZC3uTvEVtmRhBi3To4FqO7dWQW2Da8QJewcor/ldmjaEGpFSBFc/6ROzdHI34DTjOHmfroIsfx4/UVKbxb3RgViP4DVjAQj5jnLvHM5mdVIuI6vaHF1UAJZTsyAfcqHB6ryb9xGYZ22mWk11OakmTv73w0PCQRHAR3mqVUfiFG79eu7OLe/5+f4VbaxwegE0DGd9+WbkQl2tWc6wwm700mXO+ZWAB7RbkXEujlUF7HZ6lFfvT6nDQxEnb6riuw/0+d8RHlIWR93YaCmx/7UV+HhspCPHD1G7vaG2lFLfLaEMR1FucZeJsNLzzYDyqTfS7YNjOWpfjCSmzjS7qzViO7leJGrPVv47n//","layer_level":2},{"id":"b834596a-d350-442a-80de-39c24cafbf59","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Authority Management","description":"authority-management","prompt":"Develop detailed content for Authority Management covering permission systems and access control. Document the authority.hpp implementation including authority structures, weight calculations, and threshold validation. Explain multi-signature authority requirements and permission hierarchies. Detail the sign_state.hpp functionality for signature validation and authority checking during transaction processing. Cover authority inheritance patterns, custom authority types, and permission delegation mechanisms. Include examples of authority configuration, signature verification workflows, and permission validation scenarios. Document the relationship between authorities and operations requiring specific permissions.","parent_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","order":2,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/authority.hpp,libraries/protocol/authority.cpp,libraries/protocol/include/graphene/protocol/sign_state.hpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:17:58+04:00","raw_data":"WikiEncrypted:Jgq9fCpm/NkqSNIWYhs+n4jiUARsKF/Jd4ydE+1m2zwQwWHJGmtOerLGG8TW7XbS4S/T35fVYB/yJZzgovCH718BLdmouX/kTxDmd8tNbBdrrta+doQxNGDkod8z/WaaQYLVb4IxX7U/EjoAr7/P+66vrhi6RqYj5fBPtrSgLJUW/RR9MCpaEUYd7pGcSU6JWeCOU2QyjuuYk1SyjFg+g1rcuLzhrRhHI9zKfjN872ae11+XxxBNxki1ElyJsf3BevyOBdOTFNxxS363QkNd/vpvy4NvNUs1OpK8DvQeMiVwEtO8/HAwIm2nwoQnxz0E3q+QPoaUTGSDd7BN9thcQWqlBd1D6lTayxEUnWl33CQOWEqRTocDEicRTnxYYEwujQCeNI8NVyTgieqInU4N2L/J58a02Wz8RQi6AJXBFQ6f1btOEF/VJS5xkGYxJDnigIiZctgWc5R/uQ+g2s9733TZBWZBG5jaZK8dp6ZIH1hX31+DnMRzJnO0xqnFq1JGcThh3FXCYiazMyDvVG4xlJVCLM9Jg61r4bStfBEfdQofNXQXURMWrAWgVRjgBpvKKSIsaJzo/m/mwupcs6A5ROCTsUktizLhzKbWqTUCOhya+jnqDYc966T4LKBkbRgz2G2viJ4xn0ApRwTxKB8eYeMeTPYlpmHdYAOGVqe3dAPJ9kXect7UPNO49edXXDW8c59l+VwSAGXSRIPWC1vBp/hFyYfOI2oO1qF0XiloGQrv69txOEG2PmXtvgz8Wj4UVm6zpeKhwcw/kdmqNBV6EAd4wu7ri2GlggsPU3vp85an6T0UVHXL/OxtJiLQWwrTpGOjaEAo7uCVA6F4KL8kKpsAIC/EPq3CBO2XJkylhWGGK+vbLH1QSzROeOoJQN/RmOUXveFYAkQxysQJi36XfXtBEcI0swK/nJPGsjje8+b8vZpoBlN98dW8t0Ns5PRfjyRuhRbCHYvN9Vvg6/5yuRQFHQPY0GArydv24Du0b4F4jYEfq1U/U0SqxKU2uOBEONQjr873NJVAjWVmM/TChAhjIgGPuIf1anSvWe/+3rCjs9E+YgrTU6fW9XKVinf/wF229mjENAXVsUPeekDSua6JWR3GoZ4n6L08jD57Z1GJDYvZpQC6OmiFbkwl0jZ1LVjqHPMMDtKd+gzj2TOLDHjEewcQLtTUws+fE0Z0A1j2oJOWR7ffPuRW86eGL7eT5croRguM1miNpTx3b7XjIY05QBx+cZfEW3dwauyynARfon3eYMJ1ywVqc+NeZ0uqVxtRhlXc+RD7Qt0rIu2irReEDQaz6Ruvi5GSWsNZSiAsJgNSMoBc6vIcU3vu0nUVZRIxQTZ2E6URcuRuWHR7xxtTZGl0FW7qPWYddIon/o93Y1kOj1tqKyGP3s1OghTd9vzmGKrbovd810tZXWyLrz4s1G3xf/GU9K7mYwUoXKtAOkbj26gosy2d7zXTU7ucfwn1XhZBThySCG6CjiRoCU7dPOBNwN3hcOcpagEr7UrxQQbiFwrVLSa5uy5t823DFb9iMAGkJ2H/IJZ05LeVDBC8cvgklwS7BEkMrU1nIcH0qUOhDN+PiCz74ePlbsdDCXpJ2XcfTk24dkzl05ZzDA==","layer_level":3},{"id":"71f41e91-6b9b-4a10-8ddf-b49a7b8d81d8","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Fork Resolution and Consensus","description":"fork-resolution","prompt":"Develop detailed content for the Fork Resolution and Consensus system that maintains blockchain integrity and handles network partitions. Document the fork_database.hpp implementation including fork chain management, branch selection algorithms, and irreversible block determination. Explain the fork traversal mechanisms, common ancestor detection, and chain reorganization processes. Detail the block ID tracking, fork chain construction, and conflict resolution strategies. Cover the witness scheduling integration and how fork resolution affects block production. Document the API methods for fork detection, chain validation, and state recovery. Include examples of fork scenarios, resolution processes, and consensus mechanisms. Explain the relationship with the blockchain log and how forks are persisted and recovered. Address performance considerations for large fork chains and optimization strategies.","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","order":2,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/fork_database.cpp,libraries/chain/hardfork.d/12.hf,libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-21T15:32:34.7040582+04:00","raw_data":"WikiEncrypted:LF5XH+WZjZXH77Oahqhu33D8kMc2V5EyZ5sCQJaB6AbkaftNweUtSuIUOV/O1ju0L84BXRl/rB6mkbN9lJNCBp8gKu1Js50cynDLXNwHl9v3CFjgeOELp0KEyNk7HrPoblpscxDGsnAxbjU6uksUs7PZyWJCAzr8jneUzUPrG6E7HCVuh5sWAwE285YtEcSXwBJAvdW996g3nJvnkJ/9OU37HNMopNQxA/EE4NsxPzCxS2Le0wp/zVtXA2Tv/h+CoXom8jR5is1HxswvqLMWlRL1ydiDaEMn4ZDiHPqSR9m0S1oRiui56e1aOuuBYInexLa7a1n+Kw+ysf3Y5ww2Cp49DyD/E08WH4E4opB81FKYbtoze1Mw/b7kqdxHUpJQ3nZajLOOfm/oU1KynvIs6V443J3na4/h4Q6cpBDkUF0etRaXgWHx70Ht/Ks1t5pmNe7fFgA9e4rGyLMoRV38CorEAqbRfnJWdqcqsA7OUMTv0sFGntYOZaN/OItauKvfdOOp+KPLVPja65BWdew5ejCI6/mq/cSr90S1XcvfEUh2v4Zyx5w0d7mSFK4GCcI9QzKXQ1wyOYpeOJ5AoVWob+PafZDPtkmCEfBsfOvMRTzscilccfvGwBiSFWfIpPj49UYFdF+dMmp1yNqewLPdmAyXALBYYwUIsNckeaNEMtwtF6cH1fC8KsMpWwA0Wp392B+BGq7Lay6SQVSdt0eyWgBdxHck4diRxxr0Oc5fu9D5DDwjp/ZlStApcNe/SL7ssRUl+AU+KQTAUBKGSuLXmxuySdg/G6kd54QDbGLkFItNbV7LAckpyEV7TkAAm7lQYr2JDW7cVU1aJC2cRyfD72BVGlXA+00JttJaU4eREWRjWT2BNNoUm8dk3uNBmC4UxaDGv0Iuhuz3fU5plGJghKgPIFgsl8KLSqJ+TKBm1ZrVu4nYBIgK4Sg8ufhvHInXw7dP+yOfojGX0O0/QmQIgkGOBSd4l0mo9wd5j5I+ffHrL0pSSW3sUY78eVAfXwcLMXLXsggz6QPmk86kihvU8nvuORQd39gPujX+gdlyieq1v+UFvj+PNih21VeC3knG9d5b2hTHH7uynom7CjxgqWhguJhyjpxNSIM1qJq152kTvTFksfiULzVA34IMP4DtXX9rkPkW3vLp6IJUxdwhkgIOTO38ZJhOyQ9Lbk4szcxFquA5XOthJ94QFgp7LMF5QqgMwtafmX64U17fJ0kSdGIRckAx30tVbrOI9EYC/yZLIs50s4Bw+odBKe3iCMaZtgquCFxZqttABZl0+5r/LnAy8ICpymy4JQ2b2lAZEDNqVtAvrtIHYkXalyiWR4CXZGju8NmDytFK5ufxGLdgrHYjNQ5T2yxPanMV86bhcnLrF0XJNvjAreSSLH8YOq/mgcq9f4vBf3gkIAf1hVYiub/2abkFCEi0/nVl06Hx+jTKWDmT1L8/ov0OULvi/v2K2l+XK+GxzvCZ0xrM/lCOoCgR8keZ+QiRdTSeANDObY7vf6p8qVmTmXnTaJRAy/1s8mlolKOadKO/Y0Szp5vGnHp1Hzts7VRfIYMDxOnJ8E+I8gURt1B+npguJyhh0owcNMI5xEwGusv7Ilo0vH0rdNHNzPAWIcL23/iIN1a5SzVeC22xRfkQ0hOXY8oNJyJMrcl4X+sxlBMR9smyHc/qUoobf0BYhuWp1SA1yLU0hICoeTqy2037fpkkRzpC5upHLJe62zpUtWojzlBzhrnN0kT2TZkoLGlQAI+n1WYEoXkVyLyetdnIz8UDGtykmPbJq2Skba0vyVjQNNl1TTwK4+6oTOMiOjdPe4FUdZsXI/WSmIeIf1/kLCQhJzeVSOqW7KdQNpuy2pIpkQ4sIc+UqEitPPkvsWrcnQWdakNtVd0=","layer_level":3},{"id":"535f1ebd-50f4-467e-a5c9-af25c5047500","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Message Handling and Protocol","description":"message-handling","prompt":"Develop detailed content for Message Handling and Protocol that defines network communication standards and message processing. Document the core_messages.hpp implementation covering standard network message types including block_message, trx_message, and item_id structures. Explain message serialization, deserialization, and protocol compliance validation. Cover message routing, delivery guarantees, and message ordering mechanisms. Detail the message.hpp structure for generic message handling, payload encoding, and protocol versioning. Document message propagation tracking, duplicate detection, and message validation workflows. Include examples of message creation, transmission, and processing patterns. Address message compression, fragmentation handling, and protocol upgrade mechanisms. Provide guidance on implementing custom message types, message validation rules, and protocol extension points.","parent_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","order":2,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/core_messages.hpp,libraries/network/core_messages.cpp,libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:20:04+04:00","raw_data":"WikiEncrypted:IaaHBhg4aKVK2Z27STIpf61hPTwuvjJw00wghNRz0dqXZFnsx3+KXuJLymQNNBhm+4HmlhfiPgft+nBCx8lK4ljvr9u1N7eyZnhnwrufcfJWtCJmJAYdT6I/MbNWHUQIKT842G2JFoDfikSnGXpefzkqbmJ9h4HkLavoFO8GveAAfrmDKT8BrkB45sEUfJuABljdMo1Z4Po59a0a4om8B5rJ8OUxvmIemXI2d5efoKGKw5+cKGNGgMwYtApsVIFedpjM4uFtQnlachraAR2ooVuqRRO80ib4jrTSv6yeZ7H51ge5rgRDeYcFxsrJCoVdwdGWygXe8okjzamm+iH8qIoCmIeWbmGhMXfFlxEK/xb+wwY52MBM4YD0HCpQKrh+FO+ELHik/d6lsYRY9gPA/rOwZAD/lHaoyAvRfwGwxZBnI9v1hKYnBr3jkgYNLd2b4C+SN6V0q1D/J5y5JrGIEDD0UDlw9LcEozUbvr8SxlE/c3ssjyO70AP9AkWHy0n/edPKa7I1P8a5PI/LkoGgkbZsgmU2eWdzzRHPD+SAnRdp/wbF747R4uXmCN4zeoRvcIx7OcXyzlai1574JHXrHUXVa2PHa0w8B8126wMxdEQWP7//PnhsaFyMCTJtgGzzl4Z9itYmtAjL63fZhJ4/ulTh6nSVcAaG5zFsedHUkFowgbseLtQe/VZ/cnva8HtoTWZN1mFJ+RqQ9jfwt6LYrzEd2q3MirnV2jaYHYkcstr51bztnhXvUgkhWL+e3AELp6mphweylQexxr7cElbJkAXJKfxSoGgi6yrwn8HZrCLHucOZYM2oPk5hxPtgYidAWjD39B7q9sD5fd5HTpIbtXghy+Y0n03NfM1FVHHCxxjzfqjT2zJHMmFpwEg7TMxgVKXNzsaoXhfOVluWDB6boDg9qics2SnUgCnPjCrCaUfOL/+/3CYa+UyWEEKgG7CyS5/Y82EKHbZzSus9o4j4gANndEAiosEL3j2nl89R6zEhtRLCWEcaj2rvM5aHgTjhKovqUJXkKsmixnyt5qMgzbo5nsmiBjpOUlvVKwEBSXsLxENv+jTt+kgzsIbzy1Jp5xtzSiQhvHOoLZ30UfUSrf3lMZ6XwJ/uVJbfRPnkQxayMicktwKeQtCn4FChxyYZEp76MNcO23bGr0HXdcFwVB+V+6sOw35crzsrOX0G3Y5zxdwwg9AKekR1gVUEilUZk9axa+YC+9LJy7dzNX1rkOd7bVXWcUs1ZrGXwQEKkB1BPYhOsWZG44+DyxwIxnRp+jOUXNaPqE5EejlZDlomg7S1cOn4gOqSktzaWJjoGTILesnSEh2cL6x8Wy3fBDjYFWKF3L+PuCNh+pD4ChQBrf7ypQp+hBk8SvwZS7dp1cjzmzJZxVoJMDfb/TM4Earm3H0uHtPgyNB9Vtphl05jPHAf0f8vYuQ+s7cTaTyab/jpEqRdDzl6/cALbcywQ1V2aRNc0kPxcV2Zaopfp2UHzxC77e6+R15VG0KlBuF3PObzKl8w+w5wkN8x/18+NiQGljAIYuoslW70VeMMwUwo4fuB0U7f0r1Q9yeYVdIdFTT9y2SoL7yQgFs0wpWrAT5vjflJ7nPeIj9yMdKSOh6orsFq+PRqcVGaZPd+qVoghULPAqhBhvKqEe+2fuMItfkb1t/1K1HkFcu0s9KC8xYkZFFbClqzym72hHLhRXCU+9mTwqhkMHujFNlXu11k6j8K1Ep2jNU5J2M9v5RO91IEa0hRaKxJLDF8/SuYNgZoWdOIjPZxsoZyg1dmtaVoVp53","layer_level":3},{"id":"5917cc52-4862-43d4-a6d9-72e4d0f55f9e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Dependency Management","description":"dependency-management","prompt":"Create detailed dependency management documentation for VIZ CPP Node CMake configuration. Document Boost library configuration including required components (thread, date_time, system, filesystem, program_options, signals, serialization, chrono, unit_test_framework, context, locale, coroutine), static vs dynamic linking options, and version requirements (1.57+). Explain third-party dependency integration through subdirectories (appbase, chainbase, fc), OpenSSL configuration, and optional dependencies like MongoDB. Detail dependency resolution strategies, version compatibility matrices, and troubleshooting missing or incompatible dependencies. Include guidance for customizing dependency locations, handling corporate firewalls, and managing dependency updates across different platforms.","parent_id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","order":2,"progress_status":"completed","dependent_files":"CMakeLists.txt,plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_types.hpp,plugins/witness_api/include/graphene/plugins/witness_api/plugin.hpp,thirdparty/CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-04-19T22:00:10+04:00","raw_data":"WikiEncrypted:Plae3AeD8kzvx5cS0SI01VxUgqb4buHXTzzTWj4gTygU7IDKBYr41L3/hTrS44leIMVa8ywMUh248ZyPirs+eIVofLm7+N0WlOX6fg0khoNhXtfGI1JGQ9weIgIVyjznsmVNtjh2fiQQu82cjIL5lPsNVUenQmG4sEvbSS9dpwJ3rEyNbj0zNlca/sosLrYifdoLBf6wi9rVRkw0R2HPbVqv1K62V8d2h1xVxhoD+mzciX08y+Y626vWX3TQ55XUKWPPezNHVOIkuhKKK/FvzNNEOWkkvBod7s12N1y5zsBJ7OnVtQ+te+Oraj1mZvD3yQNlf7OoLG+dWkEdXHOvf5CZFFffTB/IVrar9FXThN/I7Fc5spsivRhxmS2EtHqcjzaJttxdCdRQQ/BCFLgiPZjRjOfDJSF+XwX5s/wgAZIzXU8Fs+Q5CU2VClMl0ZBUMCFhbGkGobGoibrJW0gv+xCNWo9dvQy90S9DVkg2JHDWq6NQLU9/Ck03b6pCkb4oUVBlX+E2FjRHbbZRNMSRaaKp/+A0F3LfmijkIZtUidn2Ud5ssgcgnZ0xWqxULF0L7nK0uOpChFpQE37ofSZGu0ZYcgLBqoAqGM3z7FWLOT9QNFB2J2ghVFeM8ctDl15x5agpJ6c/n20KeYIQQ3YbyR1w7lEJ2DmAIJ115iDZOxh6T+la0Dxl1e6Z6gGg4R0x1BnYlD1RaeyHxnbcJpmmd25fYpjV0bwt8FMkic75TZmS6y1j4LbrrxRqsSAoq4YRuvS6ry5PgQBOPti5pLq1FtNs7nMTUGfERuRBF77QhfGS4zi95OM0MqSDSW1NNeL7hTmzhlbVNJzyRvgd/6gkuSoyWoccHQGp8IpMeJglYMcUS/1agV1WnMfkJO0IgyiMq03NBKaIDDyvY75Al1xdsUXFFSwS5PytKsQEt1WFbqNBe1dxZTAtRspq5I8JD5AAdK7DQWcjEZdeYgr305oWce1+VxuCkOHk7GIs2j/mFf2bY7c8pzqUhVQNYXfZFHuKet+VgRnEPP/FGnsPmbto4yg4y8H7RWaOD8tyi+e93Di9ifGP6c9XBzLRXZNceCcgqhEQP39gDKqBNFgCfEwmTexbqkDzoAB+uSkFe1g4ABb7klM7h/um1faCYTTD05mQgAcjQlUGu6Kig0OuvO20D/u2w+DkhZticFB7WdkEAMnzEA0J34GWtQjN08T/5j3K1NnlDCxAZQ7sS5MADnsU5FA5/ccz5ZPmHPTsUPPNcH+YLNVERxwyESTIBAfTgEhI0GVthOsevmZIAgvtZGLeT/vIFMhv5bywfq6/Ecu4Ns/AHG+gT0UXUg8r4Nqg8wgE94TVKAkBcthaCrkMgzh+dpgtkgf8dvur67TXqpUHdhuStZpvRlPhfA22RJm9XYNB7NZ+OLWCVxzmEwyncrvdieFuAP5kZs0IY6Fa7kvZ8E6kLTRwHvZU7BuMutV/73vTY4TiA15o0Z09KIRrbYRie/XkiK7Mo4Pe/2qhFQ/hqUvC0GpmyT3uQpk87+6XQO6TUzYuZvzO7fx8glSmEmJOBlIakoCXqY+heH5XcP4uAK0CrcjKNQt3n3/l3JDhZLXGtR4FSzfj7SswLAg5iSUJBG6KST3hab6DYHGqSrrJOHF7p6JnrWx6i2y6epIIluQQltuf6CtUp6ppPR+vZF+V2tnYisy6JXWohcO3wFw1jHbDq5UrBHWcXrEQaJCOA/OV","layer_level":3},{"id":"aea56f38-13ad-4502-b8ea-678baa7def94","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Low-Memory Dockerfile","description":"low-memory-dockerfile","prompt":"Create detailed documentation for the low-memory Dockerfile optimized for resource-constrained environments. Explain the LOW_MEMORY_NODE build option impact on memory usage, reduced functionality, and performance trade-offs. Document the minimal dependency requirements, optimized build process, and reduced feature set compared to production builds. Cover use cases for low-memory deployments including lightweight nodes, development environments, and edge computing scenarios. Include practical examples of building low-memory containers, resource monitoring, and performance optimization techniques. Address limitations of low-memory mode, supported operations, and migration paths to full-featured builds when resources allow.","parent_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:20:43+04:00","raw_data":"WikiEncrypted:fKjMku8Fpv/b9ZP4Ul2Tm7Zca1h5FLirNykTI/AA7d47CnKOVNgTfrsa18b5sEdeunts328aDl/rj1iuGdoZlRmNliSHTyno4JbtoRql9rKHpIYLsGWMX9G2LUkeMbg5FlADbz3moUepTMX3AczHxUqbYB4AFqFyRp9NfIt2CAJxj+V+xIYQZNJxkd++ojQvXSYZIG5JstNLMOPkzDOBBMSmIkHlovPB1lMrLLJwFhzUpC1xCa+ND63Q5gMlN0G3yfjAIqOGUgrdT+ScVEXVikgbsMs2FR+Yf21LW0JY5SWTiW9asZnrbARtm1I0PBi1SwOnynvG4O70EZX9LRN9utgNzEKbQ/qb7A8SfVmVJ/5d2HzbGUMSHrkrOIOfbq7x+m5zQ+xeVa3ivGOz0zfrx0YS8ylBBcoxuQpJaKppYNws9zDTzNPyPKF6F8R0f1xEekSn/JYo8L8cTTlwORrSEVBL7LFIRgEWWaDNsVi/1O8gCAip4DBDZBQ2LPfC6P1QsUKasNlSO1mVC86ULrnACvyOlzdu4LgiRoNEiae/X7YYeJ27qk6miFPwfkqI74vrZqcB1SJtN1oM7wrhwKFiRe9nBzycLbwqgkO0CcPCTjuD4ODtK8fSqy3BoOB3//ZSvhyZGyn0R8gSDuAPdm+kh0/VZkaih+mXej8gh4sIMDIrJ2wnLHPiSUo0fHeGe7xvqvxBGfsukAs4x/6YobQGQrAcK8lvIiqbuv/zcWei0mxwkL+vtvgCGdgWdZNzVGlKpi+l0uM4+PmlnnUtI6E2ft7hMLxSRFFE0JCZJZibOiVittplbnVeb/JCKsBfBqhKT5ffxVvmAWmmz4FggTt3s6WiYfzMLbT5gs0JbLKyZw2fyzMJinM86Lsg4JoVDV2tEjnC5K+hG0CYL+/Hmdc06IdnAhagszBwJdg6UcIJmPbvVOGO5/yXMYF/PHJb4YEX0bYPFjmlxEiX2VH9mauNLPpt1jyCPGWgnZhyUwTWiQRTInuPux3MmvCBFIdhvbSqewELe+RCUR4kKk9YJS5GXYeZdik3EX7M9JK4p5q0/MxMgt4QtVQ/rYH/5oOzinNpJ6a6qM5G1yQe+AJJiNnMmCPHHNOzcC312TKra6dD7p85Thyog4vHQujObntWLiTnTOyNOJ4xY0pNqOZCXC/Q5ZorjBo1XHSB1Lp0wSdJAtzg644h4eKUjh85lW+FjpNYTVSH3dYhbW8ZQbhBhB1LSTXLsLYMDwhUlV29PLoAS5L+j2tTI5azUAjxI33HBbuYkzHJcOVoz9ZwiNPX/8aOHvoacoHQ3sNu0ZTYwXCfQcn/qQWFY79o04+IJ6ojQPjfOL9PxdOR+3+FXk7ksofNnnVe5/+jF7ZkrgbI13Bg2V2aDwse9dsZ8pT2WIlIDimfa+o8woVUK9ZsEODSEH7BfQ==","layer_level":3},{"id":"c6cb793d-9d2b-4e1d-b06d-62207e7ad18d","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Plugin Development Tools","description":"plugin-development-tools","prompt":"Create comprehensive documentation for the VIZ CPP Node plugin development tool (newplugin.py). Document the template system for generating custom plugin boilerplate code, including directory structure generation, header file creation, and implementation skeleton templates. Explain the plugin naming conventions, file organization patterns, and integration requirements. Include step-by-step examples of creating new plugins using the template system, modifying generated code, and integrating plugins into the main application. Cover command-line options, customization parameters, and best practices for plugin development. Address common plugin development pitfalls, testing strategies, and deployment considerations.","parent_id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","order":2,"progress_status":"completed","dependent_files":"programs/build_helpers/newplugin.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:21:29+04:00","raw_data":"WikiEncrypted:ukPV2tcWPRGn89Upsee0BNh0I4BWUQUUZnzOP1DB+1vlRoA2DnNNT/bHeFbdtIQSXyk7bUmdFD+AFhUw6F/GhxiiRn+hzkKtze7IIl7cKG/KiTWWAdasY0S/sUREmQTHx6fByz16NvdAO9bhp/o5Zn/mUi/wb3p4250DKByWWZfNOfNXVv2JlV04ypM3wlrlGWlbJ7X8Fy6U0pHiMDV7TSm1MqZ7jRntlHQPGcOntBT/sCsvcMG+2Tz+AhYuUPl5S8hp4VL5aF0Bldz2wMa/U1pJc7TfQFlMxB86sCIBeKzByisy5hcvzrvj4EnFi6GPdH6XeSu/FRtSiNKuU/+BLK4e+xVb299e30vgCpN+yGzMnQSwF6Hl+jcihMZsXvgHDNEI/RrCXZvssPbZrT7sDQLng4yvFg/DbS5ctr/s3st4H4yLiUYjxEqDeeDZJmUsl/gOzg5Npf6VYtyLMLyH9njN3FYygMBEItIWHS/ZMH1W3KPMaE+jELwWFWfW6x3luX1FV+5NfTiGDUZFr5zbOv1nTesTTLLSp0JnpHFC0GvbajAQrZqALmujKNhlB5TCYT05Flf0GcmXhPEou3sfRmVyejF6URcCf/d5kBLMvqRSdfpnl/N03KHaPxYZINuPHBIAvP6NhDUCR/fUp24M1VUaRdEYxuTA0xVGT4B/mJFB1GcM4+9oL3v5BAIoblxDFG0ot39YIWDKAEZJP+FvRnZW7pXYJeHiWSk0qtIKgtaISPvLuJjnsI/dT0oSS3xkL0kd2kYI0vsYF4O+AsB9t2ee1KQCgIm5wS/fpF5ZD6AzqEaVt4Bz7TefBcReXAJpcG3vuPU+gLWvuzjT41eG5LOaY9P3Xn7wAvALCYsFE0vfSh8VR6967R/tPj5malqd3ZlHC0dxWpbxK5zylOGQO4uxR11qWEo2wh0pDE9wImO0X1phGa0q8u9QH0mjXEQ/tKnVJMfCy44Ur4SoVgKhfwCVtzuOaQWJzffT2DQN0zbuTBYBWTCrq9HAR6vNZmH2Z3sEpQgc/+ZJvLWTGHYGzSkGBjeIvPAFT7j3+lGMmHjVnT2E1QbymYUm4bNV6N4jm82YWThsJ9rkZtizBTQnTkbtEeW/TDXtJESiADfebLTnRZTZl7I7WM5mLPsPhlwYWa5D4Ll1vbKBq3TOCFjt7mBHIGiV3sS8VL+r86dHiM5y9zVYhoVkQ6dZnGqT8NcjOrRqF4ysAeIFLlMfihEvI3KCXAR61jbN/0bv2w9K/DcKSf6l2e7fFEfrdNx9kXLwfiDmsII0LnZpIxwKudn1vbk74LhTEW8Cuq4YGMH2AKTpMPt3FKdP/7CGNTpSK6QxHL6TtvmZv+gP7Z3wdC5jd0QjQlu4NnBFMWzpn/9HWmVn0GOavzxl77UxMoNg+Zc3VHivV1ARsjNAEidCVxhg4Mnb7xQ2/trOZlh0kCHFa/M=","layer_level":3},{"id":"02e46c13-d4a1-43b4-9b63-3d501a210dfd","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"NTP Synchronization System","description":"ntp-synchronization-system","parent_id":"3b1fd02f-a35f-4130-97fa-e4d81c8e10b3","order":2,"progress_status":"completed","dependent_files":"libraries/time/time.cpp,libraries/time/include/graphene/time/time.hpp,plugins/witness/witness.cpp","gmt_create":"2026-04-21T15:57:29.5612008+04:00","gmt_modified":"2026-04-21T16:27:59.8716977+04:00","raw_data":"WikiEncrypted:kk2p6A+hTfq/j31wt7MAgu7PjcLqcqeJIlT11ZAX6rG6RFTstxzezqPewwuq7KJcZnmxN+1kb78oCoyll71+CuHlqFqb2IInJOarRp3GUu1hTuhP5Ph9c12xZHHA3N9Y6gkfFTURztr6jAT6LxmiaTH7GJAiS5z7eF8RNHQWKef/m7HHGsZr01TaIMaqh33KDw6kzrqzxNeZDzLMbyh/x9737bQIhT5RB3tSN8g6hBmfRWfk8EkMtWVf4AcsDkhJOGA2ZXZbKc+Ey4I2k6wZGpgW1sM4jfqwCC5VX8Nk9VocnoDSGLfxgLh/xYV2SF27P7AOCsOaBBGjXqSvStzw1Q==","layer_level":1},{"id":"3b1fd02f-a35f-4130-97fa-e4d81c8e10b3","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Core Libraries","description":"core-libraries","prompt":"Create comprehensive documentation for the VIZ CPP Node core libraries section. Explain the purpose and relationships between the four main library categories: chain library for blockchain state management and validation, protocol library for transaction and operation definitions, network library for peer-to-peer communication, and wallet library for transaction signing and key management. Document how these libraries interact to form the foundation of the blockchain node. Include both conceptual overviews for beginners understanding blockchain architecture and technical implementation details for experienced developers working with the codebase. Use terminology consistent with the VIZ codebase. Provide practical examples demonstrating how different library components work together in typical blockchain operations like transaction processing and block validation. Document public interfaces, key classes, and their responsibilities within the overall system architecture.","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/network/node.cpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/chain/include/graphene/chain/db_with.hpp,libraries/wallet/include/graphene/wallet/wallet.hpp,libraries/wallet/wallet.cpp,libraries/chain/,libraries/protocol/,libraries/network/,libraries/wallet/,libraries/api/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-19T22:31:11+04:00","raw_data":"WikiEncrypted:OwfuchP/A55BRKOnq/sTqUUdhlQOKRVU+yBCaLhxPeKCzLxiQ5Sm5i6/NamrTB1GPtQ/42VsCJitqOb6j9+rRLbOn1+SqitbER3Tvci5cvFV/b+fzhya8ziqkwiuFYENR+wRGihTXbi72VgF75nhexj96mW47VL18GZs4M9hdzdYmcNkEtrmD8n8N1ndgIQu7/ingT9KzT6sHx6WBFXApoa4vgzjeNtwNYRCK8tScDECuTZFoKabVwAaWSEJnxWfMl0JZQ5YO0hM3UnskArlEs2TqJEZKoIHbVKCED/yuXL0rDJlExNNV/oWu4cI1l4fWr9Pji0x1C3YgIJ8AZTSgveRYwACHcSBzl2fvknv6/PDGrZjXckNBaSIOn3EUrLP7X0iD212KBlqTkGrsje/RAmDcQK1V1RI7aHdNwBnf3rqk3sD/NFo0AdpX2iukWsQcvesEFIHlGC/dut1pc28aPYmI59c4yDtPRD+EK+i+VLRYGwCIBS1MzQtcDLBk4YMQieqT91R3SgroO+ggTmo+4GWPfwoaDGywFO3IS2MbhJIk4c0YuNJr1HbQDzCE4tyBk0OB9Wcv+QBL/ZOzbnvqmjBJSJ99hnQqq8GZz3Swt8zKlLGWvsXhDR0velmhZymMEtR+TD2bMBRILHtTkNJwLLs6DpqPkQGAKHIyaIGd9F9Nuwx2fAu0JfzE5kwaTN0ku1Wny5AQSQMxGi2VBHBxhpwj8CPufwO/v0HcPk4sSRKGEGvyUsAAt3EvWdfE1WX6yIOue3OMMmYXyuoHkJWq0p2XCrni/ebLyy1Rp6LN+3YZ+QoGcvrLTPAAgvqz2IigdnCFoTFpcmdBp4mhk1Ebd/LeZG+suATuOLm/16O/NG+Qcr6Q7gSRpAuEiysNSXdOACX4eYp86egU0WkO4YFMO35HksekpEsemfJ+Zq9zgwI6pqfljOll+CEDs2bSW3FxPE4+yezuR46xuCq5gYVlLFcRfF7aMzCsSgWGaDSQTsqJX1dCtyDx73H3LtdxWn9EuUhVqA3E8kpXhZhrA8HsWFlzEpx8RwQSwFeM8Ry0Fq7beNrV+eVTElC6usy7S6t4Kj4yv4GllIf/DKTmIcQpzZeOhBEYfL7xpWOI4QXwsEnb2vls+wvMBN6sKmP/LKoY73vciHiHl62xkH581tuizSf7GI2gylGWUiVT5Vtgr2/0FbsppD8w9v20z9DKbBXHC463HLRIXjQeL1B7kK/anBbEWQ0FAdCT2nxohIj3/iGxJyHf0qqqvVNEG/qOY4Qk/k0YEbbDyb+a1HnMJ+f2uLJRO8RjGSPGqWkemK62SKZEpjY6XSd6HiU2rQpWMvaN6gevwlRIO/6kk1rDLNJvjqtPYIxaM/K+/RiIio13wjxbj+JHf20zlYLrWBBRcoab6+M86BZCZfqjEwBoxL6cl2bdDIvwh7ChADaHD+AZXLp39jJbu2R6UtFeFezMSoqKjJSrj3qRKwipluxJWEd4jb8q7Wiux8dhqOEA2cNcQ6pUZhxh2+AR0U4PnyOkSIhxnbh+uGslRGmU2PwivIp0gpYGFO0L63MYbYDXt2OXLMP7vZXAahEJjjW+25AiOJwJ94l1ZkT9I17qjw7WU1ZPD7kSbH+/wONgTv7lZsC9d4PBUkVg9HMzJXR2PDM3f69CYWE0my3V9h5ZwWbptD+i/N+G8KprC2eVALORM2wHoEmimq/ol9qgDlDyutlG0pi0x1iVwBGey1tWCAugnqzIqXdVWwAQVKPr+QLrSUiRzLsHJV8sVJA/yCKpFSwOdXNM7hq44boELFpjx/7tNlTtG87AR7+po8/u3/DjJQlzBkmbfSv1kZGuqYOwgubO1FtGNB4CAyngNeoB5nCQddvKrUKiPA+2pFjRltmwdmH8H8YWi9T/lXqmX1u7pE9PeZv1gRNHfsYNbxK+d76qnVDbmBbuOnc8tv291PF9zyl1TH5HWRoGBd7degtLlC+Gs0avEo7g791GJNKRbuwYne/aZ+BUCBKsZoQAGOPJbQ8hc2sYPHHlXyxxtQ7UNp8b55pmzlAaCwEQAvegUBTXhSbOx1AeOVpdvUed2LOEaI28CsWDDLyfo7dh0PA2VVdlZ5C3VowwKco3FGI5aWnJvzs9bh9FMERAWUJ504u01rBF2kG7jPpWMPQPnSBfSDqUWqYml8mmgzhEFd+KTXK81o97Jcc3Rq28ocyJyXRbuVOYG02GXkkSlrSYPowYu9DI/qImrZx8+ZSNfK69sBQvc6QCN2miyUtz98/NKXDAg21MKDyksptqSylFPIh/+y4+eS06b2cfOmo99s5F+yg7qE8RTOy5ldNI3/3/N8XhM9qV0it95aViB8D4M0bRLgn8UF2vIbBO0abN9W2ExZLniofhIQn31Wl06nZOGDe6L+hVTP26gHX4AWnwHy4HZ9/nFagEMYXct0z5Di+wKG8NbEN0Imiix9EYWZVnJiAXYlZbox1MsP+SCCNT6JutEoM8/mQXW0AfIqWIoN/z/zIHSmQKbFm0gkRliRzqhC0TR1HP9PKAD/UPdxTm3hFS51koG5uB3SkJhvHob3hLJhJBwhgalokCEB61wKqOuYYbZMugsOaw6icItng694wJH33ttuKu7IFZFi2xdLZSvym8xTQSW+OKKbFunfmFxoF5xpy0Iwr2xUHWAZVdNNvV2+J1g8r6vDH9IYlCJqxIW7zGu+f87YldXaG0a4xjbmdhCr+QYCHHE1rnV215pjNgYfxO9wCLSZ/UTg0+MwtY2eYOJ8ppdO7zV3EV/qa7msZILZKAhF7x7fYoyYrueHMtR1xj44ahyc5ZZkdRs0N0X/jr8evEL9lgrNjUJG8NmpTadCTsibhPTQM26umBwpwUlsVKPa4VeMk9Sq5+Jb1cPAAKxJssPvrDNLI/4po7dj64TRVn81v2KumtxWrr8KH8zK7rfPFwvtVVQu+BjM5Ql3bmN7JIA=="},{"id":"478424e1-4bbd-435f-ba13-944c9e421a4e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Data Flow and Processing","description":"data-flow","prompt":"Create detailed documentation for data flow and processing patterns throughout the VIZ node. Explain the complete data flow from incoming JSON-RPC requests through plugin validation, operation processing, state application, and response generation. Document the transaction processing pipeline including validation, authority checking, state application, and fork resolution. Include block processing flow showing how blocks are validated, processed, and integrated into the blockchain. Explain the observer pattern implementation for event-driven architecture and how signals/slots enable decoupled communication between components. Document the data persistence mechanisms, including how state changes are applied to the database and how fork resolution works. Address performance considerations, caching strategies, and optimization techniques used throughout the data processing pipeline.","parent_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/protocol/transaction.cpp,plugins/database_api/api.cpp,libraries/network/node.cpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:48:50+04:00","raw_data":"WikiEncrypted:PGdHQOrMWxh6s6galmzx60G4c66k6IPhWJyX8d8v0xn2Sl7SJvUGzCeuElhJ4SjnW1f5q1x3OM20oMAyLozbgKnw1geq3fLXvsMfIZaJytjp20ZVI2wKYo7M9ca6xvMqmvLCoFjV2Z0kELRuZLvDkmrlYmvgiiF44ET+JaQD3Tg6UnMB2AfY+GkjGaMezQa+OwIe8+/2009s6DSnQ122sSDAASlZ4rQAQgkeL7LK6gVM4lYmwTx7H0FRKgvN56jg92nJt8Q9ssKuyC3PnuMRtdmLRDD9GHl1UjneLNj58vnJAWszzHCQBtNk3VjHNP0deezRuhtgxwC+tewqd/JQSDdmqyXoyJE348rcbGaYl3xaUS1p7UrDoI32vDeIvbkTHgU7k5h+7g9gk3haKfN9RTzmsbqoL4b717U38BLqEOT3exi9WZkIorQW0NF5G6m0x9Q0Tj3SFO79eAxNuomk15MhXHBdLOea8nqT47FcO/+tqaorLLAUsGEH+NKXmbsnYD8mN6BS9AiVn3+3XJh5WvCSNOMqv2BkONJycxEao4fPiJe3Skv/lMqF2C5EGRNx5VUDJCHu5QSu7iNcehn6sFKJz7hJ1MvCwwEmlcnZTHZdCnSBWIGwj45ejQABCG69LOiZAmidK5KSRBFFqPcIEBWLz8Gjz8nSvvj/YOWHvnBGrJhJx7RWwwBisYRsAy8Z5cW61f+KRnOeiEN/pAz0CVwH/qCZ82Xoa3zbJhxDnVobI/YZxB38kzyIhZzD5f3TmRsWdYpru9hzJFPh4gEZUpsJG6MybcNpBh1TM2pH6c74FIjPfAU7ZiWVr0OrgabTZ7XlHJ7+uB2xNr3k8VzkQVf/V1AHJd8L5ZyI0pt4Dp9E0Op0q76xdp5vQHjmpfTZlnsM9Rjo/49Hsvs8G6a3fnlXts9G3Z+xo853HjLZVtYt2WD+9vjO7shN4ANJp6vwD1LpJWWEZMsRZT78kU0yIH7hAENi2GDclKPltKOA6xqDqNuz9cCyWGu/8JeX+SH00trq7Usn6zm+KCEs27c/T/YH/t93FMy7TOSXt3czenAk2eo5Y0Dwkfg76ikGVoLpj3QrHxmeFx/MCun8RXKjooErmweSQ0xhlAfNLUGdhsWcjsQQoA/g6jyIIfyVzl2FxuT86yu0Lyx13sc7HSif55cl1n3VweLstcitlhCQxCXHY1XnzOEuvylz+3+gqE81pk+e/EtYVpCOAnImJV56kOfkVIPHWVXQT/GazHgAtiW8XjD6WTHkeY/+kVBRMra0MvIz57qKdAw+zFgMJ3LXK+SybRY5ANWjt5RA4Un4tPdsOSE8XBkhZz1UFPkW8dtXySJd9Byr1XKqgUI1u/e7477TafcC/BWJNjeUIcIs4Kcjn+tzA1/wqJ4ImMm97/9cgv4QoDcxTPvZMEWmAKgYbjCsq5JuTsGWZeUd4gLTRYNdZMfeywZ1gARhSkt/BswMFAZFgL7DVbDgy7m3lvEz9l/U2i5ea7PWJv/KkYnXxer6DthsXvkHn+CEoQ7h1S9z3RNXMYEE8kZ+GOhOJib9twOdHelHqFefxCAoJQz7dJL8o9cmHq0Fr2WSTuKvcAvfX8iUnrtB1ur55PFh1Ub21t5HcA+Ofm44YsMlcT+G2k6lZsQpZP0Shrhe2kxei7508e065lBusZAeDpXsqIBC1BdRcJ3quwypSsS4SJyHeLaz4PHY9ubLEL+opj3D8JWdurRx8fFnB2+u1EiFth365AXKQR4baz4MaYaGxaJ4bBc/KzURVnTSI1Ysbh5eQQKGjFu4a7r/0sEw0E8tlDp5iw==","layer_level":1},{"id":"15341d11-b0eb-42f7-a985-897ddb399e2f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Development Workflow","description":"development-workflow","prompt":"Create detailed development workflow documentation for VIZ CPP Node contributors. Document the complete development lifecycle including code style guidelines, commit conventions, and pull request processes. Explain the plugin development workflow with step-by-step instructions for creating new plugins using newplugin.py template. Cover the continuous integration pipeline including GitHub Actions workflows for Docker builds and PR validation. Document code review processes, testing requirements, and merge criteria. Include practical examples of common development tasks such as implementing new features, fixing bugs, and contributing to existing plugins. Address collaboration workflows, issue tracking, and community contribution guidelines. Explain the relationship between development workflow and project quality assurance processes.","parent_id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","order":3,"progress_status":"completed","dependent_files":"documentation/git_guildelines.md,documentation/plugin.md,programs/util/newplugin.py,.github/workflows/","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:48:38+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"7985bd06-cba5-478a-be9b-c56213d2da99","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Network Configuration","description":"network-configuration","prompt":"Create detailed network configuration documentation for VIZ CPP Node peer-to-peer networking. Document peer connection settings, seed node configuration, and network discovery mechanisms. Explain listen address configuration, port settings, and firewall requirements for different deployment scenarios. Cover network security settings including TLS configuration, authentication requirements, and connection limits. Document network performance tuning parameters, bandwidth management, and connection quality metrics. Include practical examples of network setup for different environments including private networks, testnets, and public mainnet deployments. Address network troubleshooting including connection issues, latency problems, and peer discovery failures. Provide guidance on network monitoring, bandwidth optimization, and scaling considerations for high-traffic deployments.","parent_id":"cdec8606-b623-47aa-8501-03011ba583a8","order":3,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_witness.ini,share/vizd/vizd.sh,share/vizd/seednodes,share/vizd/seednodes_empty,libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-21T15:28:15.4747693+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"003a6294-cf0a-487d-b270-55500345952a","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Monitoring and Maintenance","description":"monitoring-maintenance","prompt":"Create comprehensive monitoring and maintenance documentation for VIZ CPP Node operations. Document health check endpoints, performance metrics collection, and system monitoring integration with tools like Prometheus, Grafana, and ELK stack. Cover log management strategies, log rotation, centralized logging, and log analysis procedures. Explain database maintenance tasks including compaction, optimization, and backup verification procedures. Document performance monitoring including CPU, memory, disk I/O, and network utilization tracking. Include proactive maintenance procedures such as regular updates, security patches, and configuration audits. Address incident response procedures, troubleshooting methodologies, and escalation workflows. Document capacity planning, growth forecasting, and resource optimization strategies. Provide automated maintenance scripts, monitoring dashboards, and alerting configurations for operational efficiency.","parent_id":"af2002b4-a118-45ea-823c-1a85dd576b13","order":3,"progress_status":"completed","dependent_files":"plugins/p2p/p2p_plugin.cpp,share/vizd/config/config.ini,plugins/debug_node/,documentation/debug_node_plugin.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-04-21T15:57:29.03336+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"2382be84-8fd0-44c7-ad93-8b5942362bba","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Plugin API Design Patterns","description":"plugin-api-patterns","prompt":"Develop detailed content for plugin API design patterns and best practices. Thoroughly explain how plugins access and interact with the blockchain database through the chainbase framework. Document the database access patterns including find, get, and index operations demonstrated in the chain plugin API. Include concrete examples of how plugins implement CRUD operations on blockchain objects. Explain the plugin API surface design principles and how to create clean, maintainable plugin interfaces. Detail the template-based database access patterns used throughout the codebase for type-safe object operations. Document error handling strategies, exception management, and data validation within plugin APIs. Address performance considerations in plugin database access and optimization techniques. Include practical examples of plugin API usage patterns and integration with other system components.","parent_id":"e263dbfc-2149-444f-82e9-1a2e835ed847","order":3,"progress_status":"completed","dependent_files":"plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/database_api/include/graphene/plugins/database_api/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T08:05:51+04:00","raw_data":"WikiEncrypted:ukPV2tcWPRGn89Upsee0BLgnn7JYGqI+7BDGQTVnjuRHRVrSL6tQDGezspM53gdtUsm79POkhFGbMKDAc/J73KOr8fv9yxwFP0VoRuKhzfwxYc3cuTurCXWgzU9qD33UyKcWZq5jbu8gui6I3BI09h3x8uoako0lZEJvMc987YbO8DFIAMI186UTX0GSkXJAiB+0tTnW0lK7Q7CyvzRlnJ4uvexA1xc+EZhQapFn0hFfn3BkqPvnFiPnhpszja3qVmCu0yxr5AX+OzkI9YrEHhMjnuc8KfaQdW9VHAia2WrQVVakOkiPAtBRLXw1SRpQtkxf6KrABOJaLawhkAo48bB2LOZHqAGu3tOxNEc72vQZfevNODQw/4xudcgAahRGx6P8V5QbfRG+7ZOzoOWphjKBaflPa3rNxq8WGsAT/7iITXZlKmwpq3pzl7blf9ohNDJ10/MGhxEznX6QxuFW4DthLR5kVo5FMpMbegc2qceJcr7rDsOVLLMyn4iJu3UaiybcuK+TNOvl/9FepZrihUrm7Rs1ztzDJ4QcscsNs+neY94/12m5K8AL6Mu2NzlcGwModzUdwsbItYtpPbN3vRWm+Nz4rmPUAYuKtui4c9vNm4avqaez3/tk9hTuof0mO/Pm7zStNDgQyzxVojbY3EL8rrMEPcI/D3OSAaUkUGRG2fLtZsmL+d/ZPTlIBTsNmlndMfEYTDrKr5E+W+3IRTPIKlzPWVBGmWGxi7haFJl2kgSpHJNyeh0Eo+8iETSeKxxu2TDgSHUkuYIg3HEGgdvgYIr1qGaupyRUtoY/q5EFKf5BRPbM5yv+gz+JC83OqEu+q80SULYKezoBiEdC5INZXHTv6NQVWGEl+8cCqdbUhMXEry7NmKGDeMJk5zVvI7BNCOTSguxS0P3q8tOjLfGnCxbOsLD8pxYvoN/z/twkUIVYuDYD322POm0xjzJ4AlPQArTp0rc4KlmH4w85aBBZ/nQ+fE49ONoyT3SW+Cp0lP0zVFHQPxLCqiO0CyKyNngE9HLAHdlN06IdGeLydDYg6DPV12HBIEV76AMcRaUL/CEr8dMWl2JhqmOYzIcZ54x/28IVV6uLzeZqSeBF86UMoiqp9mlO53qdRZ389i6a43ExR/fsho0biQmT1pYOg2z+Bs4JH/7havhY3tRk5/juh8+qSjyoYYJPDsqohP+9mGFBGc1L7BHbT6vyiZ9TjHmRwy+EnJSkDz/glriYfUpFIaSLN57bLnu+/sljxE/9WpEvw78No8/Rg/u5o0zhUxaSohbQRyrtjDWxh+2oFpvfLxStjsxVLZN+WS79BCIEnYef+pRZS/FzWgoaufxJaHm59yNZZYUdUB5rqxr8ex2ShwGoxeOaNmHsdrwGJ8/1m+Vg3BIlGtSTACH+Yt91iRdU2djDMu3OjKI7UKic90Ym6lDwCsnSjtgRZFxOa2+iYkqh87X0eA2XH4fcVs5dZv1zzPVTLYPu7ASfJWHRQQnPxabds2CqBynETnz4ROkyvaSshSNuqU3j0juF0GxFpyUNzVeHf5innJ7jt+muwMjOeff+m8cKbx//GFVgPhrp+2SM89QoZShNDkyyy9BlP71G4v5udRQgl7xC4qFX3ukbL1gg7nD9AT9bEcj4e4FwzePHvt633V7icBSGr0pCiDbBVwZEsmQvAuR8I+Pk8cIPh9trrznEmV1qLVkcEN/a1Rd3RANeS1yOnW2kVHHkpx+vQQWHnTzGpWTeMe7iVK02bsiYRcPro0nLDjwy+huJfeJA0v6pQciFTorypRWxbHa44CcnT9pJNzwdIwj6Qw==","layer_level":2},{"id":"53882345-7bdc-4e25-8b15-18138a99d965","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Advanced Plugin Development","description":"advanced-plugin-development","prompt":"Create advanced plugin development documentation for VIZ CPP Node. Document custom plugin creation workflows including plugin architecture patterns, lifecycle management, and integration with the core system. Explain advanced plugin development techniques including custom evaluators, database object extensions, and inter-plugin communication patterns. Cover the plugin testing framework including unit testing strategies, integration testing approaches, and automated testing procedures. Detail advanced plugin features including custom API endpoints, real-time event handling, and asynchronous processing. Document plugin performance optimization techniques including memory management, caching strategies, and resource utilization. Include practical examples of developing complex plugins such as custom validators, specialized APIs, and system integrations. Address plugin deployment and distribution including packaging, installation procedures, and dependency management. Provide guidance on plugin debugging, profiling, and troubleshooting advanced issues.","parent_id":"897392ae-54d8-437b-a160-4459c53e5848","order":3,"progress_status":"completed","dependent_files":"plugins/test_api/,documentation/plugin.md,plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:50:18+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"30df9f31-2320-41fc-bc2d-fbf09616f0a6","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Event-Driven Communication Patterns","description":"event-driven-architecture","prompt":"Document the event-driven architecture and observer pattern implementation throughout the VIZ node. Explain how signals/slots enable decoupled communication between plugins and components. Detail the operation notification system and how state changes trigger event propagation. Document the plugin communication mechanisms and inter-component messaging patterns. Explain the role of Boost.Signals2 in managing event subscriptions and callback registration. Include examples of common event patterns like account updates, transaction confirmations, and block notifications. Address performance implications of event-driven architecture and optimization strategies for high-frequency events.","parent_id":"478424e1-4bbd-435f-ba13-944c9e421a4e","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/operation_notification.cpp,libraries/network/node.cpp,plugins/database_api/state.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T08:05:24+04:00","raw_data":"WikiEncrypted:W27BoG2tWSBKbrlfVNVQ+n30XbiFQ0QQI5a6lxogiBPjTg0DvvbBFVxLISoEha9gga8YkbF6lz5DhmIKlkxVqSrOPfvwP98GUOj8LffovPN0x6FVjem0YCS83Npx+6Ibzq2LUJxesBU+qAtPQEe1+kgERFazI8jpVPIEA5SAQs6E+tVyMbrp+izzDgE1An3BkZcmd8WlOiKBTXmO+BX9+gxzlWar87g9CugYmsBzcZwUUzG+TnbkVV8m9VyiERgc7YdTtwBSORP6zbFpLpqimwCl1WGfM2iPx3fmKl9ID7Vqcg9sjWHFHETcAef3vIQcCHn5ZwelrdlGWmjuugEqhEclWt6FQ+85c+7FlrVA/SJEkPHl21tbyLcXRo59nelJ479auS1kaMRkIAbbLLJFA89pTxBHLTh6UpmQfi/PnJX0FHKAQG4cCXDLpbng3u9V4jiScS+kPZDrvwbi0pxVlN3BoDGiYiup5naQqix6syTGND3DBn7DrrN97NOWB6As3M2nXHR2NvXMUoEN1DnpOIMbilF3IRve9B+8ZJCp0RU5fbFQjy1qD+s++dLoQP21N1/cjEFHD1iF0WYvAaqrRk/uDYDHno+tqeQ/mx+ZPbJqVfsvxIMdcTs+jDXnczvtHH+oOzAEz+66ridRpqISPDgcfO2cbHbD8yChkTSvPCRZdWYhTuPGD9FMpDyd0jIjtOB3xxYvHoZkAxGV+nMX9hasGMIF7kwGkhH9rmrYSGjPP7cDfNwTwu/FBc32a47b3jkk6hpJjVqUgKaUQwVLAljvp0rQBygK/1ZzcxVW+BIMsTioFS1YT3txI6Yht/fkrclLUxfXo4emNwybErlc27SOgQsen8u8XVq6ec0ymghCmX2GNpzdyBcoGHndxCnjXNjuytqWC148K/gEYnD8uMDDFR/FDCpTamlo9TnjmLOonJ+/0ajAF3YrxiqACGbHvCrJ4G+yuWD0h8hICR+5PP8s+bFUs/yKn7d9kaDv15PD1TKsDYh9+8aUEFoagYbWqdVUqdoaRVqqeuMH776Y5FkUXnii32wBY7HhXZLhzZSyp1xuekmM7J84yOOK2tBopwNQRS686YPC8+JftwhlJCmWcc0+mYaWoDpSZu4qYzYc84zrabiZWOKq7wECSRjNq1So/eOnTsS8aflZfO3NPSmfrPeog/Q5TzrA9SAmy+fQSmJFuZG2EpQmwndvbB6e6NcyddF6eHMQSXFsIQmzRkclcjFw5DWeX1BZU8uYADfXYb9MLMIiQFqfi7uQoiSiLvJ1KCqNhvLB6OVclq+W/oceE/acm/1XZZ8ivi1Qou4VtLQe1CWJECh3sTOOdIZyP0UWlmqWmT9BUQBQ1G6l5wGdjTmUEhh/r1xHfJHHYuzX2Wgc+JRQIS8LKGWlyVGcRi8l44kHDiM9Clhn2uGn4nL7baAM0wRSOGz/zGx0WsDBvGqL0nVkDgCZJdy0t2Y8WCG0Dfft57uM5GvoSFZ6MOzhOe0koPbRUZA9gA8yNzup8ltl7rocXAO12CAW7XD3rCUxhffjjXddeBpSijY8cpDxEylvPQnGr4rJuIbCjuM=","layer_level":2},{"id":"c368292b-8f15-45f3-a521-c3b8ca969e02","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Wallet Library","description":"wallet-library","prompt":"Create comprehensive content for the Wallet Library that provides transaction signing capabilities and wallet management functionality. Document the wallet.hpp implementation for wallet state management, key storage, and transaction building. Explain the remote_node_api.hpp for connecting to remote blockchain nodes and delegating transaction signing. Detail the API documentation system for exposing wallet functionality through JSON-RPC interfaces. Cover the reflection utilities for dynamic API generation and type introspection. Include wallet encryption, key derivation, and security best practices. Document transaction construction, signature aggregation, and broadcast mechanisms. Provide examples of wallet creation, key import/export, transaction signing workflows, and remote node integration. Address wallet backup strategies, recovery procedures, and security considerations for key management.","parent_id":"70d0f804-ac06-4c37-9779-b30d8f137419","order":3,"progress_status":"completed","dependent_files":"libraries/wallet/include/graphene/wallet/wallet.hpp,libraries/wallet/wallet.cpp,libraries/wallet/include/graphene/wallet/remote_node_api.hpp,libraries/wallet/include/graphene/wallet/api_documentation.hpp,libraries/wallet/include/graphene/wallet/reflect_util.hpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-03-07T21:45:11+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"5e6047c6-0d7e-4034-8a5b-9abe4208fe17","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Cross-Platform Compilation","description":"cross-platform-compilation","prompt":"Develop detailed cross-platform compilation documentation for VIZ CPP Node. Document platform-specific build configurations for Windows (MSVC and MinGW), macOS (Xcode), and Linux distributions. Explain compiler requirements, dependency installation procedures, and platform-specific optimization flags. Cover static vs dynamic linking considerations, library path configurations, and platform-specific build artifacts. Include step-by-step compilation instructions for each supported platform, common compilation errors and their solutions, and performance optimization techniques. Address cross-compilation scenarios, continuous integration setup, and automated build pipelines. Document the relationship between platform choices and runtime performance characteristics.","parent_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","order":3,"progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py,share/vizd/config/config.ini","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-03-03T08:06:47+04:00","raw_data":"WikiEncrypted:2GoRefXUXXQ3Xwp7OyY9nlon887ydNfpOl/itiNfh/4iWIxC9TaxKDiFwjOVFwQTPZYi+aDZcmdacy3T3sTlNOPDniBKjwz+vMIh3cB1plVH4KYwPt2TZXc/+ujGFDRr35exKHL5nJjwwQ0ZMNpW/UibupcGN0tcn8JuX3NpL4WLBra3PxQ3XTSuZYZPVzLj82+fwHHCLPcEK+78OX8e1RcVEklR+N1UsgtET9kO0/b+T0OBqa5ERNN3IEYqcp0mY5DL4MgmhZ5ELHFmyDcLeXPGbENuTTr/wv73OYFptwxgOC7zfdnxEof+OJt7oFB1H14TF9NkYiMrMg21KMYZ7SpknlH2jxvpqfrAZCvqdyxgE59BG/VXVZPBrsUVrClVTeHDodIoKQCzDVpuGZCDEUcM4ywm7n0JaWJSvA5QqTFe6FlcGrO4kJP0nIgvoYFjCNa6wMEbFOKpK082OTtsHnoZAn7Ygz/SktuD3sxaFQutzYzGUpESMp+7KK6ArmF3MZD1kHYrkbx8S1r3t7TRMBIPvNVbc8GJDepR8ER6t3haV1sBwAGTuVTiBApkEg1+z2snamjx/DMbTOTZC0t9VeDuyQmejRJ2nfbysv6hUkQPWiiVsQjp/J+k69s9+Ux7cnj9DlnC7yP61FjH09kWx24MLREOQlg4aqdv02Yaf/0NhCugHWGlzPlZRo9Rcm7A/fYVCWIdyBicPqoNenizmIRw/+0ZUncKEzrvzurMeUV+p6by+Wl4x/LuusxxAJNHAjzKBMDLPygjAixvqHVGme7S3iJkX6GEWMaATXOA58szwt0/m65fztGuJ6QnWZOGheD2ELMTHbAgxv9IgkRcqpDmLp2VaP7YYU4hq0gze2HaeR6u4tAs0fHJZX1HORBQV6m/1mzw/VUtnolpwqE/TDgNPDjy6eYc/8e8OPu/PHoavvf4IzJOMbuw9Jab/F5w158jHfEt9txnl5+n9JhFtPecLcLLIKgnb8rnsbOKzT4D5ggU6rqH4FkXNb3bwpNtX3vMcfTGxzXmertP2Lb88uXGxhfMWPiAvWdUrJtNxnCQIUWII2pyHmrr1hLGTBSzE0qEj2a1Y4kVgfkKUkeDNwNCf97ufWnDMqThJcy6zqCMYqHJIq/hc32CjSkIzzDOQouvmIOPaVwL6fpE699lSOwB+RKRrfZy4TBjrmA++IxZO00dgzzHFOHnN2m7tOKpsMnGukeWgOno6BUIexnY0lI9oY3VNKLjBq1WOxOBwi2qClZoCoD+7QkbJHk9gFUvcuZdAG8QeMQcgeeReC8hK9BHD4hZPTReh0bkSF1wEfAbM6TrdmuRtEECtHx8ccNSDmA0dl9OIyKfqRhsIsVF8knLOjcFBsaRt57n5d82KEfGVC68CqLC53zlhwC0f+83i16CySJnkLCgNBbd15ULQvB0CplndMfsziHgwpuJqtovu8ylKTtPg/wamM1QLvqMB5t4DVEbc90jw7qwR8T2SBAu+WoLfmaD20wd01rLkYH4tYuEUmmUq0XbGQtgOi+rUF1mBwHDdrHFW/gr7FuEdUWCclH5mbo1cA7ExHaHxPYDAxlKWN7m2zuym9yZ+Gf5h3jBjwldO1bHH58e5oSV8DQciXvAjBNDP9wIfpcfNEKgnr17F/GNHOBuQBfTDOUGLSGiAqCT5hu+QpkcGRq4U52dOsMI7FjTQau2lMxTyaQ=","layer_level":2},{"id":"f7650541-74a3-47ab-a30d-ea4e5a018894","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Performance Profiling Utilities","description":"performance-profiling-utilities","prompt":"Document performance profiling and analysis utilities available in VIZ CPP Node. Explain the inflation_plot.py script for analyzing blockchain economic metrics and inflation patterns. Cover the size_checker utility for examining memory usage and object sizing within the blockchain database. Document test utilities including test_block_log and test_shared_mem for performance benchmarking and memory testing. Include practical examples of performance analysis workflows such as identifying memory bottlenecks, measuring transaction processing throughput, and analyzing database performance. Address profiling techniques for different system components including blockchain processing, network operations, and database performance. Provide guidance on interpreting performance metrics and identifying optimization opportunities. Document integration with external profiling tools and system monitoring approaches.","parent_id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","order":3,"progress_status":"completed","dependent_files":"programs/util/inflation_plot.py,programs/util/size_checker/main.cpp,programs/util/test_block_log.cpp,programs/util/test_shared_mem.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T08:08:06+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"c05e9f55-a9e1-4124-a2c1-714029d7698f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Security Hardening","description":"security-hardening","prompt":"Create comprehensive security hardening documentation for VIZ CPP Node deployments. Document network security configuration including firewall rules, port management, and network isolation procedures. Cover API security including authentication mechanisms, rate limiting, and access control implementation. Explain cryptographic security measures including key management, certificate handling, and secure communication protocols. Document system-level security including user permissions, file system security, and process isolation. Address security monitoring and threat detection including intrusion detection, anomaly monitoring, and security event logging. Include vulnerability assessment procedures, security update management, and incident response protocols. Document compliance considerations, audit logging, and security best practices for different deployment environments from development to production.","parent_id":"86ce68ee-34b2-4018-b7f6-32813ce68949","order":3,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_debug.ini,libraries/protocol/include/graphene/protocol/authority.hpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T08:08:09+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"4b09fa01-3e75-4835-a34b-10a59b7a2860","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Block Structures","description":"block-structures","prompt":"Create comprehensive content for Block Structures covering blockchain block format and consensus mechanisms. Document the block.hpp implementation including block header structure, transaction inclusion, and block metadata. Explain the block_header.hpp specification covering block hash computation, timestamp validation, and witness signatures. Detail block validation rules including Merkle root verification, witness validation, and fork resolution criteria. Cover block production workflows, block propagation mechanisms, and consensus participation. Include examples of block construction, validation scenarios, and network synchronization. Document the relationship between blocks and blockchain state progression.","parent_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","order":3,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/block.hpp,libraries/protocol/block.cpp,libraries/protocol/include/graphene/protocol/block_header.hpp,libraries/protocol/block_header.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:21:50+04:00","raw_data":"WikiEncrypted:boPmx5CcA0j/DyoZ7HyhKvDO0uY4WRRkzNPlVPFfuYd8x5dUCvXHd/9oi/DxEkfTxFYD6bAblx+fQQtuLzg3sNwWhDQfuhCUPU0fy858bISDVVeq0bZ9kOv+N1cQafYJexYNmmOXHAtODv6aTvln0mZMaSSdpskonjRSiVDR2JFQ1c3ihfXZ9aWKOJzr9HkollwT6o0GKJ8eorPz1iLxLjuuquHSqCI3XT9AEmwcOaNnQShyTG0htuDWIltom40CsZcu7Cy8U/5nQzjC0xDOrC250aMy5seipxo8FAkVVpMX1XNBS38rhNMjRx2OKCppowA7cIOi2FHW6V4Q5vbu+mU6FUxquGMY6lbq3yu8TbvoMAD/QHS8UL7YYUa+4otdwFZ9QSkbvu5GvmAg2jjbbBzHknhWswLPV2t16urDqHkTqrEYUcmJNobdpZwC6FMjh8IS60obeoHCmUMLWxbZKLs/at3r+7JaWiPt+7xh26AoOr2jvjva8YYv6aSKWGoTMW3H2qpeMDiwUqtqWS0L/REzV01evXpTy69qkgUnRQcWi+FkXRKAwQ4p5veRT8OF23DmlIPRBd9CX73BxgYX+wQmYU/ki8y2bDeb1P+++vOAPh+61ADmkl1O1DMHisuDnaDiCFOfYhQoUbJ8x19MSmRVDwe4AU6+EZrxp8RKz8/a9GwAtETrMQ+90BijOC54NEEGnoN4nI7onVLXrah4q7IPCn7ZsDwfiTROpju69VldR0fx5W3mcW5cR5QkvQ2GxhzLhsLECXMlAfQ8rmumlR3p2VeIdW8e/P/S/ozfNjWZzTfhrhDfu0Vh0Y7Vl6w8M+CVXnOs/tC7MadUAhjrh+JQyC+HMohGmdO7/z9++33J1xvTFJVyMw0GFOMSQFY6Ep07yumrY1mvZl7qZS05ItAmaINydqZu3p6K+KExgwoNhGWchPC4vfZ8xBQ0VJoT+F8Faidd+o4SynyU1Oa9a4nDGc4as1CSHvJdKS7A/xthytbfgo5QJNtZqwsgpqQiSBar6Jt5wb0v34osxOvwjhLvuvDRZ9fuSDvIlOiFT7/h1jeTg77hn49LMeK3SSge8uSY1mhYSX0wFFmSTZ09o0BBULQWJpqNi47MKUitiopByHGADdj6vHInz2cTcAegHNkmJElDw3ojdlDsbQibKm8vkNBNR/J43aDniBItv5XH9lShNCczTfl0ZYuawpqhiTDLOq8QJy8wCli16PSF3Wwq61hM7hq6qXdL1rZfvRsnYBW5GhCSL7weKEaqDTpsk+IxRFFdhwJ1ncnSZGEOLXXOeudTkfZHk8r+YxgLkt0NzpdB6t3M6r975QZs+Tj+4ReU8QJzH2lETRvs5l///xaT2cUdzYBloc/E60aX4zonk7ZyYs3KJwXniHXQefJRk+RsmN1DbuKpwaEFPVI1OiUgtuetyAT05BDA7lh2VSvtej7xZtkMI0FejtchcpCcvJFuH1BgjPfECJKdDQlWhRzLDP+YDKXAP8z5AFFA2tzEw7DXGyBxKo8/9vajdN/f2CiX1x1ryNzep77p2dM5fyk5ZvgmBvQlK5wEf4+BZgjSp+c9B8mojotd6/I5mRMJ6pUqqe92PePdrcW+I4qiFA==","layer_level":3},{"id":"36f46a77-5fc4-4cef-9138-4f056725001a","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Block Processing and Validation","description":"Block Processing and Validation","prompt":"Create comprehensive content for the Block Processing and Validation system that handles incoming blocks and maintains blockchain consistency. Document the block_log.hpp implementation for efficient block storage, retrieval, and replay functionality. Explain the block validation pipeline including header validation, transaction validation, and state application. Detail the push_block() and validate_block() methods, their validation steps, and error handling mechanisms. Cover the block summary object creation, witness participation tracking, and block production scheduling. Document the block replay mechanisms for node synchronization and state reconstruction. Include examples of block processing workflows, validation scenarios, and performance optimization techniques. Explain the integration with fork database, witness scheduling, and state persistence. Address block size limits, transaction ordering, and consensus enforcement mechanisms.","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/block_log.cpp,libraries/chain/include/graphene/chain/block_summary_object.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-20T08:23:26+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyKa0Xuqqfm5cq0GV9nRcndmrxsHsnYwJpAewisCUpG2ti9GxrCpxWosUOZaN9wIJ7/8/157xbaOnn2BOhyeyJDPEjOCeYSYjSjv1dxVt5lXdexGoI1KQL06BJsml/tJH8IGm3rSrWyMIJMVaaR4ggiX6+4EVB5GRcduKv4h7YPDYp3XIn5/mXxo9OTYPUOtsoVOv7rHyTlUbejkiXURwQve9fLOeUlvOIkZF4R06e8IAaiKcWGIvFXcY2VrH3QcxUFJsp4kJhDzGK2FUcgBnx3qjBwarMUwBpmjy4qxtg9mcgmICpt9DkXV/Qj7CgjGXDq0ch298hK9VXiT1gmCEUwmXar2PNH/y9g8c8RiIUMVAxrUCV6mO2cnruxbtn4bQRHyC6sk4Ob2Xl2kVvZuIDBbT66aj/kOiD69bs6LpzdWsztvVvmOAFqak3DVJANV/su1oWfc4dZHy1TVF86Ri31HD6HaOPhqNpMApI4ZuTGA6AuOth9U/yvJQNw9eJa2uqHSJLovcqephYqd/UVvPQUwwoQmeMyQpQGIgDu02ksU/4/umYthxfnKr9BCJZueLWKne0Ib/cxoDN+QlTPByFNxCIyaHLleav2nztHstwhM3KkUtSO48JMcEIF4KuBSW8rzzIVZSm8sfhQ+Z18r/cGnez0cCvKI8I6dIkLNeFeMz/WwUgYBbFFnw9LMJ0u7OulBWbJ6hXLwmS9uQEAywjdogAEWO7ff6hfllQ5ZJjUMBmDO4drvylBiNbQFRrwKjyqKxSoR2js37uA4O0CBA/JESRC6UsjfeRfGNWa1l/rXrdgoGwwBrE8hT7iNKOAgU2x/xiS81GBLWaUdxUtzTAK4j0jIgecLdmg9DWIxP35A4grHki8nATuqPuMzK/XD82HPaERxvdoyjYE/kyUsP/mUfCwD/JXekHhftIDxZUJSqV7l/fDYPQ5ipe2jBnJIy7Nh4rpvA2BW9RJhI41asIZjiphshvPGZWGOF2GAyVwTANhAoRWizBv+itY1p/2WOckumF9RlmFiXVuFJzkCrNMyvjdvkdCYcu003ud8rO4xtpyb+J6jN5TNAoQUSO5fOhVvcHght5e6GzQlmQqJsmhjwCIcHq0OfStaGzE49mWjAcY3UjQhLQluW7CXA6G0qGQ7XoDVDML/QxP22XB8y8Ag/eDa38ZbtVYhXNIhVy9pWH8EeWIPbbGJv1UMvE6KF89Ybpgi9DmWvsZz6grqkqVw7Kig7sPtS0YJOHjCaHQ7LJmHCCudaZuZ2MF2TuMAkYW5yaytTWIhz0H77S/dQmzQmMbytfA1mqlMnBDDXtlT22T3++L+II8JkaX+0jTi1DTG6QXHTBQ7GcRuJfIF8CXjnJPbDSyUgXNRdvY1/Mn9CbPL4uVjXu90DzGhoKrvUGDXTTIzcHERZKN2/WCYDuD2A/kt/ky+a4Ifw0xSaifi271XU3geXOUUbdpVlCcV9aORTRkhN252B0skqL0oEnWgTxGYxoqA7NSU0021Y5Bd8/1cnNsVTN2vGh0YqLujdAfT3t+xV4modisvpwYxQ50Aj0ZJpcYBstxuDpOaAhEkLR5hr5XLkyAkl1niPitqs2+wSSsmDR9AUBpEY9FszPwk0pJOauEP8Jfr1d5BLOVVyTx33OYPcaq7OSFBB+BVeb2PdBWIQ3rXPJh4/C4vFb2Dm7ANtijqKL05LFes9n4IA9RpbvGA4TKXkeuQ29BEmtOSBPphfzyG9SQXOvTw7hmw5S3Kynu9fQaK77qhLq8/bZnW5czbIhiCfmycKKVJJWKkhDVDc/QGJZkuISswBtvOZqyJEogCnVHh20eVcvsGuV4ki3KHOcPx4rUhjTjXNpaaFzlwE8XrbFLZ8u2B/jB+4toP9H8MuRsWry/rKhQmFlz+dl20Ow/ic6jWDvlTRVljvVsPFvB3bDy4T8IKvzVoVtpm8QJHxIkeEhA7FGrf3","layer_level":3},{"id":"eb8aa1da-4d08-41da-82aa-9d55d51a5ec0","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Transport Layer and Sockets","description":"transport-layer","prompt":"Create comprehensive content for Transport Layer and Sockets that implements secure TCP communication for network transport. Document the stcp_socket.hpp implementation for secure socket communication, including TLS/SSL encryption, certificate management, and secure connection establishment. Explain socket lifecycle management, connection pooling, and resource cleanup procedures. Cover transport security features including encryption negotiation, authentication verification, and secure channel establishment. Detail socket configuration options, buffer management, and performance optimization settings. Document error handling, connection recovery, and fault tolerance mechanisms. Include examples of secure socket setup, encrypted communication patterns, and transport layer debugging. Address network security considerations, vulnerability mitigation, and secure communication best practices. Provide guidance on socket monitoring, performance tuning, and troubleshooting transport layer issues.","parent_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","order":3,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/stcp_socket.hpp,libraries/network/stcp_socket.cpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:24:00+04:00","raw_data":"WikiEncrypted:dkYJ53aRvrNDaS+3NsNNs6w5If3uzOgs0Hbe29DiBx3mo/yRmSwkQRnMBRPnzoWGqPZ92OwU/caHUIgxDw3SIzF6G+l+ERyUQeM+5k8nlB13TwLGj0fVp686VLtYOr41/lerWMRI7r1nkNr74ZsTI//FSbi2G9SrvyKZ61XeHQG52M/cayN69rlGN09zTApYx4BVQSWb2i6BxxSytcKaDWb1J20q6BHyKneNmvNVZgCaF0rwcMeSSoByQylXwRDtVsY/0BwBP4rfWpBp67hPXAduIM1/AM21CdQgxh2c6knORVht0g0QmQsZw0NWcx4YL9Y1nzZyFpQ70i7h6ipwiSBFydgbOJPVkWTCSkMboLQVC+JReq+N76UfDkZcuNeooMsYPKVmR21KRI53d1ksrMsqJKpk8m/l2Gx1mYC8RPnt8hA5HK7RK35cQcnLx+tHRlGouJ37O/Ho3ZjGeYnuXO06taOqh4oHKNhC0CuTM7j5briN+qDNziKL3qrEagkw8MQ2Flhw2Ut609zD4HJIE4DiH/98snKwoFEIvo3HIZ3XOuQrGA8tqN7EGe7F3pG0++qZeOZ7cUJhnNWxqTeXGsLDH7yxQWtZyBLyvjGQX1xr/juOFCZx4bAzdWoycAfVlvjr2uxkBo6EYFbTo/IyJrXg5VPan51QhuxjTDEzVNWlSwt1lnBCnuOCKwHgBdzcSJgJH56iYdia5kRnlRiLeBRmHyIE169xvgvBxxlrH1JndEb33mw9trClKcuQpM2pPzVA56qCbcbiM2Z44kdqKDr4CSG8ooHl6voaTHVMpIhfDUSmE67NTSyHYiI1dd/85iVQ+9FfNfoASUtTAXELUUYQYvzHMPJiU3MEaD2YcNWgsKvzjxN3VN4FTcmw8L40grY9Y82P4hOZiWDDUlAMLciKeF6y2t266s4DZ8JCnab8osDj8QF+6KTb6kkeqFJ3cCCGI0txYTS54YjlXZcPpiqHCPE0t9FvIT5upocG+rYGTWehyi1JYLJWC274vsGtm5GxLvRg6mbSqE7tBd1v8Zer9fNpXLEm4Vbddd/Rl6Eh0qbzB1Tsoq6fYyLBGLyV2fbQav8S8id2khKvjPBzrSRYlKUt4MIeJoj1OPBsETpBlksb/sBe6zXuWQl1xdv1gj9XrQNqLeVVV6nMW0llZzTx7hDht3JryMwsQg1tnfcOHSIT8O7jb/KR3IsyPyzBwErQdZ401BUyu+fG/uzA7BXgy7/APjoVyikPtgFONSsd2LohWJ/+o/xmuwCFIM3eNoMIwhCsFA98lztBOiM9foR5bXUo85+w7OvJTct69ak8sO+4KO5AH5/Tz7uFF7T77SRhUeDI7YjpD+Ik9HLNsoGKRyr8cbNLyac/UxKH1U4TKLDk4AXTIImmwF5rK8DJ0f5l1TNZgMaUZ8DFXO5vQClOfyqFxZWCt6klaU44p54Zp3LCMzEJnexfBmjaSv0DcVFHG8qLi18z3+qLjoEnRpsnnMHegrThAgDc/30MLr7k4e6iUcffJUilYu4Pu1Sc42USdHD2FfKrNDoUSfokki3E/ZKIrFVGQvC8gnoSqAwuh0ioo3iHGiJW1O3Hth8vbhUnFatBI/jLrXyzAFrOTkVzWwxQemSuJIF6jvWcGkgiAogUGWvRS60wJBSFfLyUdAMPIXDDve4qPvZ3uNGSNHXFN5w5oxjkJr9zWEXTyWOpAcb+j7G2l3FtGxwEAfgiPCl3sCAHm/4tpKr2gTx99oBrasStExD6+BpcjkMiFvcLVuwDnAuknrACPbPJ8vXTbEJ3TxUxzy5/jBlGmaFsNKC9zcFZfTn5AJGPPUGUziylI2Tr54IzA7ULa2tuHRctvQB9pah5y+GJCs/E0wSrqA==","layer_level":3},{"id":"6423f325-5c5f-4db1-b69a-8cd2226bae54","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Build Targets","description":"build-targets","prompt":"Create comprehensive build targets documentation for VIZ CPP Node CMake configuration. Document the main build targets including vizd (full node executable), cli_wallet (command-line wallet), js_operation_serializer (operation serialization tool), and various utility programs. Explain library targets (libraries/*) and plugin targets (plugins/*) with their dependencies and interconnections. Detail static vs shared library compilation options, test target configuration, and installation targets. Include examples of building specific components, skipping unnecessary targets, and customizing build scope for development workflows. Document target-specific compiler flags, linking requirements, and platform-specific considerations for each build target.","parent_id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","order":3,"progress_status":"completed","dependent_files":"CMakeLists.txt,programs/CMakeLists.txt,libraries/CMakeLists.txt,plugins/CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-03-03T08:23:32+04:00","raw_data":"WikiEncrypted:ZHd6gDb1oAMJeik+Vv5fPmYm+3RvozY/gdL9KOhG1Gzli6r3m1Qs+ajLMwPD/vJq3bXqoW1huXFI4mNN8ySzLIQHLUimXSbYEWathKED4BP6kZB18cGiRNQidMb8cyrDV5Iuqrq7w4IXFOrP49KX1Fj+mOjkDg3HSykKn6cAceQlzfAz0DrSk7eNO5hzUQqSiElf3OV0v7+fK9Cm4IQq0058KWBtgI5xr1ykHT0HpoUy3JFULOqohFCF27f5ON1OWmLfAvFSCDxaw0Cl+BhogR6z4GT18ewS7uuTNy2PkJ1ia0uNOXkxMjsSSmmup5HxBMXdZkQpdPZNEoZL7fDXqwhfd98C+eejOh3Z4tyNJtppazTRl06TCmo9zBZKQAczNueGCUBgz5MmxlMxulgT+9hXgu1cWG4XA3eJ96P6ZBxnW25xp7PSSH9JRkMlDmOcuC46lfmCQWt0aTtIS2ozbWrcE0ww96p2VsQ45j2rNdqMIpi1ulIJUOotFpc/CddsAlKtEVpExeGMLcSkX76K3NIA90qoVwWSndANNc4MJ/8bh9ulFe2+uzoBBu3xinjVvUlbOCjyNGqFd1jnMZtnt3L7/t7PH0V9q2SOflN+SgM9jVRVitER45lZFxsqr/tav2KGrocQE/xxUOIjQIC5CMvx2HWPNHn7xRZU9XceW974jpXKFvL5kBh7vnmnsKJupnB9t42ya5cABJD3AQu6Z0j6CKGPS2/l4uzkYiQ89k5SPmbyPik64SWmpi1um5U9Kj7wI4cWS/oflhQlCNAmvw4uvDwwljAA6qj+M6gLAanR65d03Q9aDTAjBYMVwGmOo4abkQv3nf9TCwKxKDVFAs5ZcueELmtGXDiVHfj+aZxEo+t86mMMQ8g7u+kNm84EszGt09RKbBsjXslT7yQIutKSMsZJpE3XeEFYyhNtdvcx4MZ0/0C07WBxke/L+xeuddZajpKMJ3dJJCBkwNkDH9y1gQCS0cFOpuuviGp6SNKtCxcvsgaWS7wBAW+uPcsoMQE0llh0xjKnOnATbn9DIx0tfuUk7ESBuGr0VaKB9nfzTlBLkjl4PToRWCsnt84L3d+ueb44ND8vu7KMItz8QOKO4zuDAQv3ATK+TZjQcFqFxXPqpOu6tx2+SzU9U0Tm1N/U3VMkQgn+Uz1EBAQjxtp0HMRc8ziGnewPSGizlOykM6jUEZhJPFrMxDefENfoQxGLA+l6IrDKlL/lo86+eCXm4vFSHWEalAjeApSnERSF0wPuU6fm9QJcUdlhu7YfBgb2KoEhKQv99o5kzzGAwEO48dvnbGMlT5tg4Wy00FCskJlqYfDQBVxLTL24kNHfDTz7VM3JENKxyK0FPq8e+xgEtZrVx5vIEPzsppJ7Tm2JvwMNsgBNzTTVrWdB6GFc+ykwf9X+NihR8xU80Of6zgl/EQLw4MGr687/twMImC5bbwRa0EN4Pnpm+wfGnxag1dAxyCl7pFPa00FsMWfFsRJfEMTsBtYzA4fj+y8wFZji35gM1dsWtMer8ZNiTk+A","layer_level":3},{"id":"fd2a7880-3a37-4d3b-8b93-fff477521237","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"MongoDB Integration Dockerfile","description":"mongo-dockerfile","prompt":"Create comprehensive documentation for the MongoDB-enabled Dockerfile variant that integrates VIZ CPP Node with MongoDB for enhanced indexing and query capabilities. Explain the ENABLE_MONGO_PLUGIN CMake option and its impact on build configuration and dependencies. Document the MongoDB plugin architecture, data synchronization mechanisms, and performance benefits of secondary indexing. Cover the MongoDB container setup, connection configuration, and data persistence strategies. Include practical examples of enabling MongoDB integration, configuring replica sets, and optimizing query performance. Address the trade-offs between traditional SQLite-based storage and MongoDB integration, including storage requirements, backup strategies, and migration procedures.","parent_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","order":3,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:24:06+04:00","raw_data":"WikiEncrypted:1goLeoGXOcr+JMF7YkmJQ4CA5GfPsgr9AOqxshcHKh0QXHY1oeNCF9v12XmDZHZdXhCy259YG0ezOu7wCXExHWK8rq0XwOg0suG4Rru7URghgXoS9VEljbRd1sl6vaFJhSLystxSvjxxzzlFJvD2tYkg8LaFtAmMvb8rZV8Ez/vZCMyxbPhKJ/eYVSciU7pmsK5xcHztFCn50vpB2r+Tj7t3gDP8WGYotYg9Jf5I0fqC3CInBw+7+Fy7HWpLVUIBIaIjozAoDMsShFMBja8RpTufBS28/UhItMRKddABKXVEZXD7SGIpEsoJoSREJ6yiSO+EmTw7r4tt0ORzmnJhtT97Bxk6r9hcgLBH9wNaggWiZSGB0X7RZSbzLF4qGNJ8kk/Dku4q/6vMsh1tZlnNTz+xeJ9Qdd4d6UNqdaS1i0rQHV/TauwScbWmVjrmaU3qQS5CwPasVE25WCIbXplFghy90JNbFQvZqI1Et3VDOQTiGhrW4WEULb81StceIyHZHPYG0KEkZ7RSnXUbIn1DARL6HzgoHsunnU1r15BIcy9NKrxjvCIQVJHpNSkt3Gj2AKDIAd1VCYM7KU4prw0cF23fcCABWMrCPPFmkFxsp0G/1NATKnFi56Km0ARP9qM78401kh9C5AVW7pDJ3akRvievrgrCd8ffmyrxqPThxJ4FWDo85X5RFbaaRiNj9qln0BKGqrR9t2JF2OHebqvlzwoROLwdN5DaJazsk9B6QVquqRJZLV+jBuJ59vK9g1rpdU1oBluHRJLvB4PZypWLlTVg5Pf/v5jCH0gnPTpCMxPwfPJlxUc2m5hojJE32fkJeAkFXJ8Q2j9mbQAvuDxUCH1844Bhwc+O8q0ZzPHADKs8yp2RPbPIU9cDsrHP8I3rkRdRHQkSpzW1Ja7wDnR7rHFtaV81Ygr5h0DDQqEGeJRycLYDrvbgXJ++N8yk2pMI3NdVp82G4v97ldxc7pmOoyCtSxLmM2L0AVmLCiJfEIIelQtOfafD8S/dXBowqYXgsFsj7pHzEfLu685kww+S0Hi2Ma58ydkYzot32TR3SBK6Euo5mDirRCGoi66xck8Ao84maWlxOIZR4/27ZoQsTCnnRPuONwNxwf4IArp+RpIyq6y8pMDvJS6D9+NUNajJvmdC3ripFYOzzg6AoGuxRkUKXPGkJJeUxIU0YUv6UUx3/Ceh5rSpXlBoWnIrnMvY57waMMR24d54ElfvPd61lvpdCD6zkMGQFpKPL2fuhcyOZXVUzBhG0iHARrL5sDw/qpkjwUp6pMY8lWFvqInaAAfRcYJqSSxcTf5lSDQncMV16JPUH71IzFKM75zM6dxgi5dX1EbdZHeDSFX4sBwGdR6tMxyw7x2Tr59DU2XjpNklRUYK+t81jNTVBFghVIAHiZbZh0iA26/Pgy/WrWoID8+MBc/XNy4wtzJXPUzsy1notTsYCLr/sK9uptZZRYnp","layer_level":3},{"id":"f8cd291c-4fba-402a-9782-fe141744f39f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Schema Generation Tools","description":"schema-generation-tools","prompt":"Develop detailed documentation for VIZ CPP Node schema generation and validation tools. Document the pretty_schema.py utility for generating formatted schema representations and documentation from blockchain object definitions. Explain the schema_test.cpp utility for validating database schemas and object relationships. Cover the schema generation process, formatting options, and output customization. Include practical examples of using these tools for documentation generation, schema validation, and development workflow integration. Address schema evolution patterns, backward compatibility considerations, and automated schema testing approaches. Provide guidance on interpreting schema validation results and resolving schema conflicts.","parent_id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","order":3,"progress_status":"completed","dependent_files":"programs/build_helpers/pretty_schema.py,programs/util/schema_test.cpp","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:24:57+04:00","raw_data":"WikiEncrypted:7b0rATEHF8+R+XhpZF8awJS9ucITjIW8AZ92lNvy3q9A2A2uvYfv6YpvR0BnMFsd4Q0ovn849WEZySYF9U7MEsIS00oTyk5KL6C0n6FXddBjWTUR5PTJ3ztnl9XxWJzEUhzMMtIdmAd1KyvimpOCYwQ21QpwY5paukgVnjbsw/0pQ82INNTEiOIwF7BlzTf1HYfL7szXIL0WkJpLMdLxt2h9C2FHgQFy60+AKUZg1pt5Jd3K/aBQWV81VNnDXW/LnOx1FPSPwkGkzssRmbbAg0nFhMWsx5SMLXwbx+0OxsTzcsEom77ZZm1yybS/5zIQUFiRjQfIYwJuzu6N5Z2LWfsWSHYqLWmQF3c6umAOf3r1wW2ZNrCeX9orBn5VMOJZ7l8GTVOJXCDCFxdnr1WXweN5VGwCS0Odt+Ron1uBfAzu1GAw58ablMKRKv9VS4SXuxnr2wY/CQOMRjsWbRtvI71HuFhd2RJZIc3eVAsDc1GU1cmrTeTbUnOpZCUhW1oFgJZ7zk11j0lDuC7R2fp03fFJsHDnTeTn+KjHQ8dMIpWtQ8Nit6XrZb6D7tvpAC0SvTT6/p2f7HZgovIfTijfj1y1hPiIdc1d3NgzyEntYVppm5pepIF06TVVx7zfhhiuG9b6HE5hLuEvMq3DS/4XMm90Cnv4sZnjEyT3TEj5mX4J7N5cBAgYCSGgcNeI43T1C15pXX4uGLqfoOPXXnB/SCpxe9nWbiABMh2oto/9Xz2rUuQGDrsSrvRXL3iFGHAh+0c6m//cPkbqieTn8V+jGVQl6W0JlrLbKYhtiihZ2TDx24go8d7f8PL0ejj90ChkWSBVvmztGtG5cLsTAM5lB21FF4PXM72PfYtGrOCtfIOOHZfaXn/3vJKykmXqi9G01zdxiUzn5JV9g4bjIq2pAeYD9x8XC/bIO81rmTigEbB4nnLKa1ElZBsSM0/70h8jS+5z7IliXyuhB5FqyvZwwW0xVyIOUAzLtk33DyepAdhyg5fBwgApQ/HT48joEV2rTs8N48kN92Kxy2Ye79DVSUvQzIQPTLZoQkDnUqCOageMGKRgFzb6cqmHCuPViGnEMOQf0++miVciKXzhicWHaoLzp+sFjN3yGJMY6tZVI1oh/UiPejOTqvAQz8SMLfS229ZyyilSHYo4cKKzCuR9NlRx1X211iyYLzcNfOdkZwdM4CwTPQMSl3VtUnvqTSZHwYv1ZCeN76rrKV5GhJGX/NxT335dN0vycUHuJLIn/NlfOsFxQG5XodPVwtnxZp7S6TnnU1KVuZrm2ftDmexkuoC+050w+4hBvFdc/wjSpNOWgIx5HxbDS9wWBlmnw0TDrlXh3YEqotm+U3Crr7DxCF+D4IgTMGhdtmJ1R1jLTzSqu6SKtryd32ymbDmRgf1/8MZIIPbWljiJyYH5UNsPbK4WhW9WLV2g+eXlh+1UAwBgpyWvaeXm/t1ctPrjmfXsAnoJTYnhyJ6upeg8GnfHo7Z9UDfIJ3pyR/8d0SUQ7usL8Nb9HXxpWxddOk9Evqn5","layer_level":3},{"id":"30365a88-1ac9-4976-bee6-0b742f50bbc0","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Plugin System","description":"plugin-system","prompt":"Create comprehensive documentation for the VIZ CPP Node plugin system architecture. Explain the plugin framework's role in enabling modular functionality, the plugin lifecycle from registration to shutdown, and inter-plugin communication patterns. Document the 40+ built-in plugins covering everything from core blockchain functionality to specialized APIs and integrations. Include both conceptual overviews for beginners understanding the plugin concept and detailed technical implementation for experienced developers creating custom plugins. Use terminology consistent with the appbase framework and VIZ codebase. Provide practical examples demonstrating plugin registration, API endpoint creation, and plugin interaction patterns. Document the plugin development workflow including the template-based creation tool, testing strategies, and deployment considerations. Address plugin configuration, dependency management, and performance implications.","order":4,"progress_status":"completed","dependent_files":"plugins/p2p/p2p_plugin.cpp,documentation/plugin.md,plugins/,plugins/chain/,plugins/webserver/,plugins/database_api/,programs/util/newplugin.py","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-21T16:59:20.9162737+04:00","raw_data":"WikiEncrypted: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"},{"id":"9a2c8a0c-8c5a-44ed-b5df-eda72624cd3e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Design Patterns and Architectural Decisions","description":"design-patterns","prompt":"Develop comprehensive content for design patterns and architectural decisions section. Document the key architectural patterns used throughout the system including MVC-like separation between data (database), control (plugins), and view (APIs), event-driven architecture using Boost.Signals2, factory pattern for object creation, and strategy pattern for different evaluation strategies. Explain the technical decisions behind major architectural choices such as using C++ for performance, choosing appbase for application framework, and implementing a plugin-based architecture. Include trade-offs analysis for different design approaches and how they impact system performance, maintainability, and extensibility. Document cross-cutting concerns like security implementation, monitoring capabilities, and error handling strategies. Address scalability considerations and how the architecture supports horizontal and vertical scaling.","parent_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","order":4,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/database.hpp,libraries/chain/include/graphene/chain/index.hpp,libraries/chain/include/graphene/chain/evaluator.hpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:52:04+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"8588d4a8-3b90-4be7-8e6f-89f14d04b875","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Data Types and Serialization","description":"data-types-serialization","prompt":"Develop detailed content for Data Types and Serialization covering blockchain data structures and encoding formats. Document the types.hpp definitions including basic data types, smart contracts types, and specialized blockchain types. Explain serialization mechanisms for operations, transactions, and blockchain objects. Detail the operation_util.hpp functionality for operation utilities and helper functions. Cover variant serialization, enum handling, and custom type serialization patterns. Include examples of data type usage, serialization scenarios, and deserialization workflows. Document the relationship between data types and protocol versioning.","parent_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","order":4,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/types.hpp,libraries/protocol/types.cpp,libraries/protocol/include/graphene/protocol/operation_util.hpp,libraries/protocol/operation_util_impl.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:25:53+04:00","raw_data":"WikiEncrypted:4o0MsTZSJF8izk/4K4S0sgel0pL3GjUBgmfU2Jyx8LAEeqHSwBDIqrwqYaLa7vz0dZklAexiBrcyBPoGl0UL8BLUGv1A6Pm6qrXwLUFQaxQ3uw6aYd84Czg+l1rsyFCtZkGqcNdvR7IzXAukFAEoBdxczKyxinARYsusL7HRvAfVzJVoHceBpQQ3T8jYuUKHR7KxqUNsY1I1N4cKmpYRNuONQUbY3FaLt836Lwat+eczNxHuemF2h54DgyLIYFx7jGWD64tBO5H18dfTY45jnQWyvHaLi9b34BxaNrhm+fGKARUr4lS123jCX8Ogd6cROYLNUcfKWIV71Lza7SLjR3oy2fJHN2RTB7aek7eUs7BZ29A+DVGyDmeK8uCBtgTPDzclEAp6WftsK75zwen2vDxgiOSXFpRMVMEAOHAwj1IuDC7RNL+ffoS7VdEA68fjVq126qs32YF+sBGMUkEKyWEWX+gkggDLcEHsn/7+jSvzHtKBYqvBHDb4T0RhQ33cQm8MOsWmMxNa/cVQmnkVvOXkGhgMzkTo2aWzaU5vJ/1gxMrhMc+G6+zypIGtUI9UjmYZslWZiPNHcOTa2Fe+62p2Finm8c8m8ItRnKBSpvWLSmz+nIWazm7UWfByDY1S1v1wNfnY2PcdeEAjKCyxthZ5Cky9zotWIT+qrIOpc/qC26r4ZBiQR0j9E1GWg4iNMJxrVhTp02hdLeaTOL2pfLR0G4X7IcxRwvHRz0hH8trmEJpknID6V2HoDQ3xJPAyk7MoVzWBkP0ginPs2PFFCPTQKuJCx9YICn7OxOH8KNNGT8dqz2jLx+oipdS5PkG++aRBaQhBx/3XcXUJu1RLEc5ow1BZ5FfwwFI1SawDt2JI+TJwDy5UvAJg3NVZlw2VZNOWvlMSWjzRd1JXWKRnZ3ttaAdOh8Rnq8018rPe3hTKusOw0H7x6Qutwzuy861i00sXA1EpBOM+h4qwdylwOpck0nF6stCsQKPPthaeVkTF54qbg6oJiJisfp0I9QfmilymYVDuLFzflAylAFe8YSWyBHptb61CK4Ak5snS3b+69+zTp8vXayv56nEDuQ8gn7gtbYOmYf7PpkfCmWz5gUtos9IbU02Fw4OnqLWIyYUH6qOhbS87wfcuSqUp+1WKMYHFNxzTmXG7UQvt/7Ir6SJvZbS6l6YykQlv2yMFV7+LDWkQyA2o7PPDUcTjmV4IQVtY2pd2QEkdQlBFF7doTRILVr7moooL82uAYJK1aSAfGLpPLQ00ZG8qg6d0Wx3YVH00HTPF7xHCvt9YOJwKwPZ/uF5ycShlwxUNsN2qj6QIXK9CdnDV5a5JDGhP/JmICPhmAG/S7PUAL4d5+EE6xxFA4iwcsWyZm1i76v4W5l/+U3wz/4cREOAone0UPOTGBFFvTvrgLgt2iwBpoWCUJJs1T6w3dwWMyZRG1Sy4dJY6reScRpuOoPdBmKELw8zB4hBipR8Tlj5DA517ISX2rXS4QjE53Vk0mEbFdVha4CsZ33/5Ytms3zPrGhiUM2/KFGnEQMevHWbR+98FTktgxyxdpcmc3q9fByqAP2kYSvyRFDeX8oG+KsE+DdUEqk6u","layer_level":3},{"id":"f1ad37ff-b61c-41f5-b508-bc9bf58aa740","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Transaction Processing","description":"transaction-processing","prompt":"Develop detailed content for the Transaction Processing system that validates and executes blockchain operations. Document the transaction_object.hpp implementation including transaction metadata, status tracking, and fee calculation. Explain the evaluator system including the evaluator base class, evaluator_registry for operation dispatch, and custom operation interpreters. Detail the transaction validation pipeline including signature verification, authority checks, and operation validation. Cover the apply_transaction() and _apply_transaction() methods, their execution context, and rollback mechanisms. Document the pending transaction management, transaction pool operations, and broadcast mechanisms. Include examples of transaction processing workflows, operation evaluation, and error handling. Explain the relationship with the witness scheduling, fee markets, and state transitions. Address transaction size limits, priority handling, and performance optimization strategies.","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","order":4,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/transaction_object.hpp,libraries/chain/transaction_object.cpp,libraries/chain/include/graphene/chain/evaluator.hpp,libraries/chain/include/graphene/chain/evaluator_registry.hpp,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-03-03T08:26:05+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"e165c993-0e7f-4b5c-89e2-097596195950","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Peer Database and Discovery","description":"peer-database","prompt":"Develop detailed content for Peer Database and Discovery that manages peer address storage, discovery mechanisms, and network topology maintenance. Document the peer_database.hpp implementation for persistent peer address storage, connection history tracking, and peer reputation management. Explain peer discovery algorithms, bootstrap node configuration, and network seeding procedures. Cover peer address validation, geographic distribution optimization, and connection diversity strategies. Detail database schema for peer records, connection statistics, and peer scoring mechanisms. Document peer pruning policies, stale peer removal, and database maintenance procedures. Include examples of peer database initialization, peer lookup operations, and network discovery workflows. Address peer selection strategies, load balancing across peers, and network partition recovery. Provide guidance on peer database backup, migration procedures, and performance optimization techniques.","parent_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","order":4,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/peer_database.hpp,libraries/network/peer_database.cpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:27:29+04:00","raw_data":"WikiEncrypted:XiRbxJCvY27UULqlncgSjGeAt+SntVKp6XLlW8ZptMe3cQN5ElOvYsLW2S/yrn5Pm/gdCGXs1y2Piedj9v33wLVOwOus1E+E5H9jI71bXJ8uMEB/sz5NkYwU8/6WNzkQEHsACzMBDHuIu68ikPcAtR/8PnomAHUeME5ZfrZrVhoViH3TDu6y2YrDMdFxjmqinq0fSJUCDY+ReIEVe0DvsdamrkwIGLGY5bVT2dG4wA72SkOilgWxqZTHkxb6lHymUVytk9eYkF++9M1xy+eMmJxQD+TE2u5KZxVCvqgn2YADlbSX3hWCGnZjEjZFVlyDxQaAO1QnQ8yUy2iYYhwwWm7CeMqOc9byb+cFu+/OcEVm+e8BFvLtlLhxtP3eh+6O2Vs973N6W5ysyb0JygjHnJ8nudjMyaHNw8RyMvqSOSLT9U6UwXVTEaUotwIWIKzszrlF5uOiVOgjVs4Vuhd/uYnYqPY7yg1U9Gupcuxvia0BPTymFFSR0GDBDuozAVK3y45LRyXz9WHPutVVQWh88qMX+jfAGvGLPWgoIINUN7qxj7vx/kvAhe+zqVIba7395/OXZF6206+vXtoOr52yCARo1CLxoOxdGiOKHHIbYfGb5rQTXcMLT47TM1pJW77qF2ZR5g5GHIJIMydfYlnCTELuUPbwEQv+04i9jOdcmqTvtikO6WoduzLSRan9imvV39bTHESYJcjmUlckudSYPQtozz7k9e+CM8MImvuLr9XjkYGT1eUYbvc+w1RPzIdkX0510bTwxzf+aDCpoCvs8EQsEWVi7mp9dM2qBWQEdpkW8TIno+0mFwoo9mNRZDjG3uDxVroN5n9AgEtgWwXkrXHOFMpY2E1AIKhxOYjZ1Vy5KzxBMdh2cinDqfAb6ll0vpu9cElmA+zv7ttinHxgQjFyClOod38iDnt5ZR+0FGhcIcs4P74nKN67g708KKvGVd4lwx6dtmZrc24PynmKHwA2TBmrLBNM5ayRIe9uGx7fwf2GBSg2dPNCXEUtOTsDs7IGGa0B9w4wa5CKCIuoB9SoV70Lq1n/P6BwSKUmhNygSrebiD43uHUQ5cOIYPv9jDBgaTNBoQM4TnTC7fjNg5xBcDw0vlGHTq9FwedyYAG47EgYdNoSbNf8YT/GbFLjGaspoWg/aJJfrOiArUoo6Wg4ojQP3O0OGKlX4X0H/+9dL+4J9PwFjIvx/ESPb/xBDznza0ed4IZr+4fZ7TaSScM5euZl2jk16NwcujBriKnp6ABz12CC3fd5IXOG8S/P/iIbQseHgBo7JfDWjLYX20Cap8snp6zDAuJPznfy5geMKJ/JacoOzCglJsV+R03yLHv9QFHCjeSziCtcx+9azEC8MvUzgqr6CzcAI4nkh5GhDwnkmJ7JfJU22HTpajb16qZcHJBnGZWHiG3KZdD8jKV5qSo2fwd+92rHO4mrCEXisYVNImPxfi8jA1nSAp6Y2NXk6bFa02t0jO15651DfABmgqeJxXvGGgN5MrRLKGu6rb3deqKo+dcjh1F7OffKbsMAZH+mQOCdYVTsnEyCJupKzMvhxEqC/LIXyStFyD8xXNLXXMILU+BGDP5Ot99lNtc1tavX26Wadj+ngWdtm1fw3m6GQ9+HUEY2O8NQNTNdGyhn7l58zZA6wDYY3LgzZzzq3DBddqX0/Hlrr2wcjnqsfapDRrVhDfTM5Y5WjHfvmtO2n0v4Wv6ZgGL4pTCzDtXzl0is4FdsexfPlZVbHL2kFxVm7iXsRfmCY7F74GkQUrSNaKjisSho8S7eR3XxH26Kbkww49FudqO3YTCQO2q969KjbtwNxa2MS3UjOh4=","layer_level":3},{"id":"1727ae08-8dea-4930-b2a9-53140f7dbf2b","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"GitHub Actions CI/CD Pipeline","description":"github-actions-ci","prompt":"Create detailed documentation for the GitHub Actions CI/CD pipeline configuration that automates Docker image builds and testing for VIZ CPP Node. Explain the workflow triggers for main branch pushes and pull requests, including build matrix configurations for different Docker variants. Document the automated testing processes, code quality checks, and security scanning integrated into the pipeline. Cover the artifact management, Docker image publishing to registries, and deployment automation workflows. Include practical examples of modifying workflow configurations, adding new build stages, and troubleshooting pipeline failures. Address best practices for CI/CD in blockchain development, including reproducible builds, security considerations, and performance optimization of automated workflows.","parent_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","order":4,"progress_status":"completed","dependent_files":".github/workflows/docker-main.yml,.github/workflows/docker-pr-build.yml","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:27:16+04:00","raw_data":"WikiEncrypted:xtifkbs/d6wNgYxQA0eu1rJ2oLOxPwih+xivji5z+tk4TDdFMY/p/WvAfD0LFZfeJ+Eax8x67PbVPoq2NW8j2tIHrBfX9wrvkZxoA9QdrNVjiLVdVfe6Y1r0ibktm0Avg6vXYAS0SaYo67e5rpbS5THtPtI5Epz3s9cYAf9VR4Ht6UclEB5iAnTvfl+NiNqfwqwXiOspjLPQiRG8p3RfJBmILD7fF74upqMQMTZNR3dX1RyKYAlf52Fl8pvi8nswFcV11CJbcJFMlHuyqv8r1x7sF93nPiITCDAY4YEDZWPtv0HPZbO5ySbZHW9xbssULeAkFufQZ/thD6DxJCi7VRJYes9hYACZbo0sGXne5XDS5Yx/46CVqDbse/jkgCrx32z0z79xufyr+ot9vUQkNIk0/AR44Xp8Jcrmr/X8f1lhsB62/1x3o1O1KJjW9HRPHhR9E8qwNbu3fJzjGJ2T5YyRodDBh1WIsRecGD2oc/aHfbYTLleUIkaF4ywe9XotnNdXE+2AIDZUIu6n4c/5FEPwDpUueJ4Tp9k8+0OWRmWMKDI4nBMsQl78/UW5ztdVu/cLE9zt7D3HhyQEhqD9i5hVXxOIkTI0U//nf+BZWPBGkwxAujRCgHUo83KHF2/rtvvaHVaeLCtDI3KHBfgR3IYbBZfOSKN9t7Pt/SyFiuO+OXYDMzpDJxjLHxbBHQDtDt2r5p3Gm8nG3WssxSuRpEBus11wtbcjXlF2mXLsAl1wCMvARg12hIujsTyX93eiDPM9fBMzi/vFbFUOpWiA1wr9v/dDH7eMYbYiSIg4yl/RGFtCLvn6HbxwUkiYKS3TCv/o3gjbNRpr6fx9S+slOi3AgEtxdTTwarmmGxIW3MIC1ttWgDOIDKCR5UKIW49MPA9YXncu1oMKGb8O5oegsXc/GYpBkBlJQcoCzYKXZweonUUybw20/ubLULaB7u4MKBsN2b+StKx+79GvhVXFstIGp5avC1FRLQzt0TnQq9mYErtlpdZptJP8ICL6VD9ixgiWv9h7xNkCODRVkl3iMLjqfEW2qAZEvHHFMqRPP0ahgx7pp+hgFZPwKU0mjPKeUXl8krbNPXMeEIIKU4IHI0x3mpIfJqIYGm8frGZkdEgeHdiebGnPkRSMwQS5nPieC6CCoi0njCZkSNzttDzq606Hg+uAeO6k8sdlYJMnnVChv1lV5PjJPeHCPiWzQ5OjVeB2Eev+ZRsYt9H3ki7ze7YVwsVr0uI9Oq4T2F71RffnMEi85KedLxjLysvnZX2sUg1vhKCdBfIGsAD2WknQG+UifpDs+lBI4+lxP+BreYfl0r/B83QtGC43dNsT6U/tlrhi6AlVMRXn4PtnpTty596UHw/q7nIST+ypHUfADM1CFQJTqpQG5UbAOH9Nx+mz32w0nG+e/owYNzindwUlSLihC1265vOzGpP3xZFwPKHT15sdqcruYTTkrbWxzpsoOrjyZb4iobm6VNhIB2RPlTwGjUMtx1uUnum0VzuS7x7xpo8CjYM6HuyYfu/jacSvKPqPn1A2TrS2CmIxl4Nb59/V9OjhS75lWzk5rUXo7SLHSmTnwBMg77E4cxSlfVHeRvxSDXS4KdCgvq3owWlaIw==","layer_level":3},{"id":"39172425-5559-4b2d-a5a4-bfd4a2d994c7","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Build Helper Scripts","description":"build-helpers","parent_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","order":4,"progress_status":"completed","dependent_files":"build-linux.sh,build-mac.sh,build-mingw.bat,build-msvc.bat","gmt_create":"2026-04-19T22:01:25+04:00","gmt_modified":"2026-04-19T22:03:11+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZD/0WI/CTybfsgnvf0a+/fBPmrYtLd5NuaTqipWJR9I45kt0KlRWyKnQXBlUGFuKVXIWHd8zpK1bD/dws3Y+0y5bmVLWHKp6dzQZhaCQ8PqdbqH6Ef6BOExueeAKMrg3VG4nGQ4qnkwQuwN3IYhGJSf0t1yOpT1aqpbR+u9hEgg+mf/t+np2afE7VAT75QUC3xAJ/6WmRABeDId8fKJ8AJi2YCHWLM/x6M/vbZTtQNbB3k8sTMjZxrWdv7Jdh1CgCg==","layer_level":2},{"id":"6db9b0a0-13b6-4aa7-92cb-7873f7ac2b7d","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"API Reference","description":"api-reference","prompt":"Create comprehensive API documentation for the VIZ CPP Node JSON-RPC API system. Document all public API endpoints organized by functional categories including database API for blockchain state queries, social network APIs for content and user interactions, governance APIs for committee and proposal management, and custom protocol APIs for specialized business logic. For each API group, document HTTP methods, URL patterns, request/response schemas, authentication requirements, and error handling. Include practical examples showing common API usage patterns, parameter specifications, and response interpretations. Document WebSocket endpoints for real-time data streaming and subscription management. Address rate limiting, security considerations, and performance optimization. Provide client implementation guidelines and common integration patterns. Include migration guides for API changes and backwards compatibility notes where applicable.","order":5,"progress_status":"completed","dependent_files":"plugins/database_api/,plugins/social_network/,plugins/committee_api/,plugins/custom_protocol_api/,libraries/api/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T11:26:06+04:00","raw_data":"WikiEncrypted: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"},{"id":"fa79c1ab-cd8f-4312-8140-7baee813fed1","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Block Log Reader Module","description":"block-log-reader-module","parent_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","order":5,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp,libraries/chain/block_log.cpp,libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-14T14:39:36+04:00","gmt_modified":"2026-04-14T14:41:40+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyI1I0rpdsO9IumbhMrSZOSV7pWU+H3/REFsGh6aDTot4hNxJPS2VAN0rfbzcg4VekaBmG/Alt/nqGifIFlLhScM8FHHmLRuS2zB0uFzQkJdXUBV23GOZdcOPSusr1YBSe5C1pBy92GXe11lEhG++DJeD7uDwx/BwFgme27p7RN3ShHGpOKO6KZLVq4NtrBbRqXBgj+BPN896vHdpQsGPy1Z9xdzm3DDw7+wmkNL+5lwLXW+0miCGz0DCrZ8PWFoJJhE3W1JhA/46ieUfQOPY78J4877vX/mqkUnYqvTQFp7WP5nOGjPH/csixyLK1BUw6K2TEcBagf+in3k6twTXnVUyf1ZZPU/VpryPBLYtnWHcOZgglvMtupZVMfciEg1Ziasrbccx96hkUHVxE6c59taZWMVDyPuepIVEIVVoBJZJ","layer_level":3},{"id":"cdec8606-b623-47aa-8501-03011ba583a8","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Configuration Management","description":"configuration-management","prompt":"Create comprehensive configuration management documentation for VIZ CPP Node. Document the complete configuration system including configuration file structure, runtime parameters, and environment variable overrides. Explain different node types (full node, witness node, low-memory node) and their specific configuration requirements. Cover network configuration including seed nodes, listen addresses, and peer connectivity settings. Document plugin activation and configuration, performance tuning parameters, and logging configuration. Include practical examples of common configuration scenarios such as production deployments, testnet setups, and development environments. Address Docker-specific configuration, container environment variables, and volume mounting for persistent data. Document build-time configuration options, compiler flags, and feature toggles. Provide troubleshooting guidance for common configuration issues and validation techniques.","order":6,"progress_status":"completed","dependent_files":"plugins/witness/witness.cpp,share/vizd/config/,CMakeLists.txt,share/vizd/docker/,documentation/building.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-15T16:50:32+04:00","raw_data":"WikiEncrypted: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"},{"id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Development Tools","description":"development-tools","prompt":"Create comprehensive development tools documentation for VIZ CPP Node. Document the complete development toolkit including the CMake build system, cross-platform compilation instructions, and Docker-based development environments. Cover the testing framework with unit tests, integration tests, and performance benchmarks. Document debugging tools including the debug node plugin, transaction serialization utilities, and network debugging capabilities. Explain the development workflow including code style guidelines, pull request processes, and continuous integration. Include practical examples of common development tasks such as building custom plugins, running tests, and profiling performance. Address code generation tools, schema validation utilities, and development environment setup. Document the relationship between development tools and the overall project structure, making it accessible to contributors while providing sufficient technical depth for advanced development tasks.","order":7,"progress_status":"completed","dependent_files":"programs/,documentation/testing.md,programs/util/,.github/workflows/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:35:27+04:00","raw_data":"WikiEncrypted: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"},{"id":"af2002b4-a118-45ea-823c-1a85dd576b13","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Deployment and Operations","description":"deployment-operations","prompt":"Create comprehensive deployment and operations documentation for VIZ CPP Node. Document production deployment strategies including hardware requirements, security hardening, and performance optimization. Cover Docker containerization with different image types (production, testnet, low-memory) and orchestration options. Explain cloud deployment options, load balancing considerations, and high availability configurations. Document node types including full nodes, witness nodes, and seed nodes with their specific requirements and operational procedures. Include monitoring and maintenance procedures such as log management, health checks, database maintenance, and performance optimization. Address security considerations including firewall configuration, SSL/TLS setup, and access control. Provide troubleshooting guidance for common operational issues, performance bottlenecks, and recovery procedures. Document backup and disaster recovery strategies.","order":8,"progress_status":"completed","dependent_files":"share/vizd/docker/,share/vizd/vizd.sh,share/vizd/config/config.ini,documentation/testnet.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:36:27+04:00","raw_data":"WikiEncrypted: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"},{"id":"897392ae-54d8-437b-a160-4459c53e5848","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Advanced Topics","description":"advanced-topics","prompt":"Create comprehensive advanced topics documentation for VIZ CPP Node. Cover complex subjects including hardfork implementation and management, database schema design and optimization, security considerations and vulnerability assessment, and advanced plugin development patterns. Document the hardfork system including version management, migration procedures, and backward compatibility handling. Explain database design patterns including object persistence strategies, index optimization, and fork database implementation. Address security topics including cryptographic implementation, API authentication, network security, and vulnerability mitigation. Cover advanced plugin development including custom evaluators, database object extensions, and inter-plugin communication patterns. Include performance optimization techniques, memory management, and scalability considerations. Provide expert-level guidance on extending the core functionality and integrating with external systems.","order":9,"progress_status":"completed","dependent_files":"libraries/chain/hardfork.d/,libraries/chain/include/graphene/chain/chain_object_types.hpp,plugins/test_api/,documentation/plugin.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:26+04:00","raw_data":"WikiEncrypted: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"},{"id":"63901c61-cb63-4d76-8cd2-ddda2fc5d05f","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Troubleshooting and FAQ","description":"troubleshooting-faq","prompt":"Create comprehensive troubleshooting and FAQ documentation for VIZ CPP Node. Document common build issues and their solutions including dependency problems, compilation errors, and platform-specific issues. Cover network connectivity problems such as peer discovery failures, sync issues, and firewall configuration. Address performance optimization including memory usage, CPU utilization, and disk I/O optimization. Document error message interpretation and diagnostic procedures for various failure scenarios. Include frequently asked questions about node operation, API usage, plugin development, and integration challenges. Provide systematic debugging approaches using the debug node plugin, log analysis techniques, and diagnostic tools. Address recovery procedures for common failure scenarios including database corruption, sync desynchronization, and configuration errors. Include community resources, support channels, and escalation procedures for complex issues.","order":10,"progress_status":"completed","dependent_files":"documentation/building.md,documentation/debug_node_plugin.md,documentation/testnet.md,share/vizd/config/config.ini","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:39+04:00","raw_data":"WikiEncrypted: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"},{"id":"83bf1360-1658-4155-ac8b-30be66bb3c82","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Contributing and Development","description":"contributing-development","prompt":"Create comprehensive contributing and development documentation for VIZ CPP Node. Document the development workflow including code style guidelines, commit message conventions, and review processes. Explain the contribution process from issue identification through pull request submission and merge. Cover code quality standards including testing requirements, documentation expectations, and performance criteria. Document the plugin development contribution process including template usage, testing requirements, and integration guidelines. Address community contribution opportunities including bug reporting, feature requests, and documentation improvements. Include practical examples of common contribution scenarios such as fixing bugs, adding features, and improving documentation. Document the relationship between contributions and the overall project governance, licensing requirements, and intellectual property considerations. Provide guidance for new contributors on getting started with development and finding suitable projects to contribute to.","order":11,"progress_status":"completed","dependent_files":"documentation/git_guildelines.md,documentation/plugin.md,documentation/api_notes.md,programs/util/newplugin.py","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:44+04:00","raw_data":"WikiEncrypted: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"},{"id":"adcf734d-5af6-4940-a9dd-5d08d64be25d","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Witness","description":"witness","order":12,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,plugins/witness/witness.cpp,plugins/witness/include/graphene/plugins/witness/witness.hpp","gmt_create":"2026-04-13T21:23:28+04:00","gmt_modified":"2026-04-20T08:24:42+04:00","raw_data":"WikiEncrypted:JeTXIs+pfWQp8HpBYqSHUt9pgs+Z3ta6nCRipvtinj2ZibPEEeHHjj4s1YQflAL5g+pQu+9IkQ2YST7DB2y5HUc2yLNF1Rs8APiadNnvkHhWnqIgyXobp8z/zCnepAa0oTCXj0RBxWwasN4s/jf6ntXkDWH+aw4ObG0t7BOVPstyL1jv8je2uSzq4Xr60gnd8mioVbRB8IdzIaoLDYaXl6iuBrXj4y3nNAwMC2XCy6/vmSEqnVb+fX9/SH2ECJ6Vxl0OgAD1h6yzkx+QsHxIKPbHADAe15TThTZJiIbDAB/YrL/k3vnvVwAaaUrcuaTo"},{"id":"72805c45-c475-404f-82cf-3cc1d5b888c5","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Webserver Plugin","description":"webserver-plugin","order":13,"progress_status":"completed","dependent_files":"plugins/webserver/webserver_plugin.cpp,documentation/webserver-plugin.md,plugins/json_rpc/plugin.cpp","gmt_create":"2026-04-14T09:27:36+04:00","gmt_modified":"2026-04-17T10:16:56+04:00","raw_data":"WikiEncrypted:DVkoReQyyhdwnmC6pD+XJl1726hWlyrdb/kexi9P3mlDxrXesxG0TGa6cLaC0YXste3eGQsJLCuBJsmN7jS41YrtOzDmXjZ20dpluGZh7TH4+TtwylvlkpRi4B3wlSAZPlGlYu8KTZBEYhBs12qLfSftuV0YEDkOWUp4QNrC8iSstYDYlX2nawdvmtoOJ9is2SwGwm2mWyVShNp//OSbrtMOYq7ALXKPYx7yzqaZWeZqUNtSL59YEFv1Gj5f5NmLgl8d8+AZm8eDML8XD9QHA79I6O5aSwZ92DQfbjjt+KPMlOh+doek67SBNyuzP0o1"},{"id":"d28346c4-4d25-4e03-a423-0dcd8d2507e8","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"Chain Plugin","description":"chain-plugin","order":14,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/database.hpp,libraries/chain/database.cpp,share/vizd/config/config.ini,share/vizd/config/config_witness.ini,plugins/chain/plugin.cpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-20T08:54:36+04:00","gmt_modified":"2026-04-21T15:26:12.5229961+04:00","raw_data":"WikiEncrypted:2nxDQCjwbtJzhDuGjsVF7mHsV7DvjvnRRbUVGKq7sKBjc03f9mwX6sCrl1O98+zpUP3CrZGNY7+od97OqysKwoYEYAKN7+GAY216v8j0R1QfTl4ac8f7J+BSXpFyXUHhqXKHFHvbGX2Rk9gNRcW+l4+bx/Pa+hWyny1gmvcpA6eD/pkbgDyzfgdx6I2ZeJXA+A+v1qmmOHWJ5QryNdxBM3JqdYf13AfOpjxZTaqfUcobiUHI83HnYCim2edeTQvpcR9goNNjy0pqKte9b21GpO2MYUFk9MhUQ4Rd5ryQfUcvhuGwW84nJmQMRAFNlT5VAKmMVrcP6AKocrIeCyPy2gk96ackrwfWVrSc+R/iRBAB9K9CXhDq3EYF2HLm45MbdMJTHyyP+6J9wI+u4EI2+OVsGvxqD2WW7cJAQ3TQh6JC2M/f0YA7krFOmiqcC9+8K+BgePJKACHD7xm4FItz1x+Wc3D3Y53P0SAf3UFBmS0="}],"wiki_items":[{"catalog_id":"d62c1a2e-7d1b-4cb3-96d6-5aee11e60ce2","title":"Getting Started","description":"getting-started","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"bd483ac8-f3fe-4dcb-9222-986238a9a66d","gmt_create":"2026-03-03T07:31:32+04:00","gmt_modified":"2026-03-03T07:31:32+04:00"},{"catalog_id":"94ebe0be-e352-450d-90a1-28ca3b85f26e","title":"Project Overview","description":"overview","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"62eccef2-92e7-42a4-9f43-3a83656a7711","gmt_create":"2026-03-03T07:31:56+04:00","gmt_modified":"2026-03-03T07:31:56+04:00"},{"catalog_id":"dbb17b5b-a0a0-4f02-9771-6c509b00c54d","title":"Architecture Overview","description":"architecture","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"545e2c55-9759-4acc-9801-a0c592e13e63","gmt_create":"2026-03-03T07:32:30+04:00","gmt_modified":"2026-03-03T07:32:30+04:00"},{"catalog_id":"6db9b0a0-13b6-4aa7-92cb-7873f7ac2b7d","title":"API Reference","description":"api-reference","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"bc382d0c-3007-4939-923d-6a9ae10537b2","gmt_create":"2026-03-03T07:33:49+04:00","gmt_modified":"2026-03-03T11:26:06+04:00"},{"catalog_id":"30365a88-1ac9-4976-bee6-0b742f50bbc0","title":"Plugin System","description":"plugin-system","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"48f8c014-6fa2-47dd-a193-ee8f5612ea58","gmt_create":"2026-03-03T07:33:58+04:00","gmt_modified":"2026-04-21T16:59:20.9162737+04:00"},{"catalog_id":"3b1fd02f-a35f-4130-97fa-e4d81c8e10b3","title":"Core Libraries","description":"core-libraries","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"feb85dd7-e1b5-4da1-90c8-d62e4ab36a9b","gmt_create":"2026-03-03T07:34:30+04:00","gmt_modified":"2026-04-19T22:31:11+04:00"},{"catalog_id":"ae0ac04a-6d5b-41c6-af01-40b99c8a2021","title":"Development Tools","description":"development-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"ee136fe0-5a11-488d-b78f-b244c95ed999","gmt_create":"2026-03-03T07:35:27+04:00","gmt_modified":"2026-03-03T07:35:27+04:00"},{"catalog_id":"cdec8606-b623-47aa-8501-03011ba583a8","title":"Configuration Management","description":"configuration-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"40ecb6d8-c687-4775-90d9-27e6128f6633","gmt_create":"2026-03-03T07:35:41+04:00","gmt_modified":"2026-04-15T16:50:32+04:00"},{"catalog_id":"af2002b4-a118-45ea-823c-1a85dd576b13","title":"Deployment and Operations","description":"deployment-operations","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"98fcff34-cc61-4393-a258-6869d7866061","gmt_create":"2026-03-03T07:36:27+04:00","gmt_modified":"2026-03-03T07:36:27+04:00"},{"catalog_id":"897392ae-54d8-437b-a160-4459c53e5848","title":"Advanced Topics","description":"advanced-topics","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"6bf4f125-2c28-4ddf-80dc-190ab45ebf4e","gmt_create":"2026-03-03T07:37:26+04:00","gmt_modified":"2026-03-03T07:37:26+04:00"},{"catalog_id":"63901c61-cb63-4d76-8cd2-ddda2fc5d05f","title":"Troubleshooting and FAQ","description":"troubleshooting-faq","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"957d7713-85f3-4ae8-8d97-64cd3a829e12","gmt_create":"2026-03-03T07:37:39+04:00","gmt_modified":"2026-03-03T07:37:39+04:00"},{"catalog_id":"83bf1360-1658-4155-ac8b-30be66bb3c82","title":"Contributing and Development","description":"contributing-development","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"14b1ade1-cb59-4d6e-a8d3-7d34d95ab5d7","gmt_create":"2026-03-03T07:37:44+04:00","gmt_modified":"2026-03-03T07:37:44+04:00"},{"catalog_id":"cf445dfc-f221-4e60-b841-e00e7be231b0","title":"System Overview","description":"system-overview","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"64d53aaf-b586-4b5c-9e78-eda060df3fe0","gmt_create":"2026-03-03T07:39:03+04:00","gmt_modified":"2026-03-03T07:39:03+04:00"},{"catalog_id":"e087f12e-0b5d-410b-bbf9-c7656e414160","title":"Build System","description":"build-system","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"d101f64c-2b77-4e6a-a088-ccdf01ad43ab","gmt_create":"2026-03-03T07:39:35+04:00","gmt_modified":"2026-04-21T16:26:53.9619336+04:00"},{"catalog_id":"86ce68ee-34b2-4018-b7f6-32813ce68949","title":"Node Deployment","description":"node-deployment","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"08c142a7-2d4b-4194-8db1-c6edad4be1eb","gmt_create":"2026-03-03T07:40:48+04:00","gmt_modified":"2026-03-03T07:40:48+04:00"},{"catalog_id":"d7d4a113-9b50-436f-8c1f-052d397874d6","title":"Node Configuration","description":"node-configuration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"95105c1a-9358-41f7-91d2-9063912afd0a","gmt_create":"2026-03-03T07:40:51+04:00","gmt_modified":"2026-03-03T07:40:51+04:00"},{"catalog_id":"e53ef043-5934-4664-b2ab-61ca20b77abc","title":"Hardfork Management","description":"hardfork-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"869baa5c-fb26-485e-84c6-9e699609cbff","gmt_create":"2026-03-03T07:41:25+04:00","gmt_modified":"2026-04-20T11:24:22+04:00"},{"catalog_id":"5cb1abde-464c-46e9-b4db-0d0e7871bd8c","title":"Testing Framework","description":"testing-framework","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"044f1c89-8d37-4125-8c3a-648cec0d2c18","gmt_create":"2026-03-03T07:41:49+04:00","gmt_modified":"2026-03-03T07:41:49+04:00"},{"catalog_id":"fa9c29f9-4bfa-46c0-a081-d65c5710a6cc","title":"Build Configuration","description":"build-configuration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"f9f86072-b6db-4a3a-86a5-58e94c5807c0","gmt_create":"2026-03-03T07:42:49+04:00","gmt_modified":"2026-04-17T17:32:02+04:00"},{"catalog_id":"e626908b-8d45-422f-b69d-ad8562c6e910","title":"Containerization and Docker","description":"containerization-docker","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"3e9481ba-6ceb-42ae-9140-cc5d1f93253e","gmt_create":"2026-03-03T07:43:26+04:00","gmt_modified":"2026-03-03T07:43:26+04:00"},{"catalog_id":"e263dbfc-2149-444f-82e9-1a2e835ed847","title":"Plugin Architecture","description":"plugin-architecture","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"0a59acb5-40df-466d-91e3-ed6eccaff101","gmt_create":"2026-03-03T07:43:34+04:00","gmt_modified":"2026-04-15T13:00:48+04:00"},{"catalog_id":"65c5f542-d657-45b1-8017-b8dd1c8cd6bf","title":"Database Schema Design","description":"database-schema-design","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"f8ac1ceb-1318-4af3-8a98-5a1896b358e1","gmt_create":"2026-03-03T07:45:31+04:00","gmt_modified":"2026-03-03T07:45:31+04:00"},{"catalog_id":"4b435af7-83b7-4978-ba9d-904eb6c42a32","title":"Debugging Tools","description":"debugging-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"404f16df-b055-4b9e-854c-6e455a269473","gmt_create":"2026-03-03T07:45:42+04:00","gmt_modified":"2026-03-03T07:45:42+04:00"},{"catalog_id":"70d0f804-ac06-4c37-9779-b30d8f137419","title":"Core Libraries","description":"core-libraries","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"f87cd13c-94db-4641-8cab-5f0ef5598cd4","gmt_create":"2026-03-03T07:46:01+04:00","gmt_modified":"2026-03-03T07:46:01+04:00"},{"catalog_id":"e9af759b-1b20-4e33-9ee1-ae82f7649e11","title":"Cloud and Infrastructure","description":"cloud-infrastructure","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"9d564ecb-4d17-44c3-9caa-7737c64850f2","gmt_create":"2026-03-03T07:46:55+04:00","gmt_modified":"2026-03-03T07:46:55+04:00"},{"catalog_id":"94f6edf7-59ce-43fe-8086-4b56ab7beeaf","title":"Security Implementation","description":"security-implementation","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"917aff75-1b95-4c98-b566-a772c18c8fa0","gmt_create":"2026-03-03T07:47:20+04:00","gmt_modified":"2026-03-03T07:47:20+04:00"},{"catalog_id":"31f8752d-6fc1-4b58-b065-119942a6769e","title":"Docker Configuration","description":"docker-configuration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"f1f0a4e5-e57c-42c1-b8b6-a8927ad2ffd0","gmt_create":"2026-03-03T07:48:32+04:00","gmt_modified":"2026-04-17T17:31:31+04:00"},{"catalog_id":"15341d11-b0eb-42f7-a985-897ddb399e2f","title":"Development Workflow","description":"development-workflow","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"0c6850f6-bb8f-4377-88c5-c1da328b3af5","gmt_create":"2026-03-03T07:48:38+04:00","gmt_modified":"2026-03-03T07:48:38+04:00"},{"catalog_id":"478424e1-4bbd-435f-ba13-944c9e421a4e","title":"Data Flow and Processing","description":"data-flow","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"4331f8e8-c9fb-4633-96d5-dcefc7d9a949","gmt_create":"2026-03-03T07:48:50+04:00","gmt_modified":"2026-03-03T07:48:50+04:00"},{"catalog_id":"53882345-7bdc-4e25-8b15-18138a99d965","title":"Advanced Plugin Development","description":"advanced-plugin-development","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"91b325fe-eee8-4df7-8dfe-6f45f76d4ed3","gmt_create":"2026-03-03T07:50:18+04:00","gmt_modified":"2026-03-03T07:50:18+04:00"},{"catalog_id":"7985bd06-cba5-478a-be9b-c56213d2da99","title":"Network Configuration","description":"network-configuration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b9054c12-190c-4600-943b-ab87c8f42eb0","gmt_create":"2026-03-03T07:50:58+04:00","gmt_modified":"2026-04-21T15:28:15.4747693+04:00"},{"catalog_id":"9a2c8a0c-8c5a-44ed-b5df-eda72624cd3e","title":"Design Patterns and Architectural Decisions","description":"design-patterns","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"70e6b738-ffe5-40d7-a8e5-93611f63120e","gmt_create":"2026-03-03T07:52:04+04:00","gmt_modified":"2026-03-03T07:52:04+04:00"},{"catalog_id":"6cd019ee-bc8d-479b-8839-ab84595afae5","title":"Plugin Lifecycle and Registration","description":"plugin-lifecycle-registration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"c1b1b5a2-5e1f-4a1a-9e7b-da5832ea0668","gmt_create":"2026-03-03T07:52:10+04:00","gmt_modified":"2026-04-20T10:26:06+04:00"},{"catalog_id":"003a6294-cf0a-487d-b270-55500345952a","title":"Monitoring and Maintenance","description":"monitoring-maintenance","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"c0df5b9e-a613-4ddb-b72c-cf4a1b807aa4","gmt_create":"2026-03-03T07:52:29+04:00","gmt_modified":"2026-04-21T15:57:29.0338873+04:00"},{"catalog_id":"f9d301a4-5d12-4abe-b38e-5f8c2b3c23a9","title":"Transaction Processing Pipeline","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"facd2085-5062-4a81-a219-d07d66dc42db","gmt_create":"2026-03-03T07:53:30+04:00","gmt_modified":"2026-03-03T07:53:30+04:00"},{"catalog_id":"05e48b61-f7c5-49a3-8a70-86b550f37e13","title":"CMake Configuration","description":"cmake-configuration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"652f64b6-10ab-4d0f-a6bf-87a17c018ddd","gmt_create":"2026-03-03T07:53:46+04:00","gmt_modified":"2026-03-03T07:53:46+04:00"},{"catalog_id":"b73e76b2-16dc-4990-b2b5-cc63b10c4235","title":"Unit Testing Infrastructure","description":"unit-testing-infrastructure","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b47d3c4e-e279-480a-b154-f5776e2cd476","gmt_create":"2026-03-03T07:54:54+04:00","gmt_modified":"2026-03-03T07:54:54+04:00"},{"catalog_id":"54f83d2e-e538-44ff-bb7b-d59f5c658704","title":"Debug Node Plugin","description":"debug-node-plugin","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"60c25aa8-7c9f-4239-a8ca-d928fcaf1d5f","gmt_create":"2026-03-03T07:55:19+04:00","gmt_modified":"2026-03-03T07:55:19+04:00"},{"catalog_id":"58a57ea1-0141-46a7-ae24-21dbd2c45b46","title":"Chain Library","description":"chain-library","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"9341f099-7b24-4f13-83d6-530477010104","gmt_create":"2026-03-03T07:55:53+04:00","gmt_modified":"2026-04-18T10:36:01+04:00"},{"catalog_id":"52f686b2-cbe8-4c30-8b82-c88c1822aa0f","title":"Installation and Setup","description":"installation-setup","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"28db3066-b7c6-4bc7-9d70-b586242fb475","gmt_create":"2026-03-03T07:56:01+04:00","gmt_modified":"2026-03-03T07:56:01+04:00"},{"catalog_id":"5205466f-ac35-4be4-a137-94efec5a31f2","title":"Inter-Plugin Communication","description":"inter-plugin-communication","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"d4152d99-e52b-4580-a01b-a361d951188a","gmt_create":"2026-03-03T07:57:09+04:00","gmt_modified":"2026-03-03T11:26:31+04:00"},{"catalog_id":"649be5c4-2e9a-407e-a872-4e5edd60e5e2","title":"Protocol Library","description":"protocol-library","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"53e60cbd-820e-4c87-b71c-7f37e5209e76","gmt_create":"2026-03-03T07:57:42+04:00","gmt_modified":"2026-03-03T07:57:42+04:00"},{"catalog_id":"a53daa07-a51e-423e-8d79-71bace98b73a","title":"Block Processing and Validation","description":"block-processing","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"1f472b32-a687-468e-a795-121b23dca338","gmt_create":"2026-03-03T07:57:58+04:00","gmt_modified":"2026-03-05T10:59:59+04:00"},{"catalog_id":"47bbb6c0-9ecd-42cd-a25d-8a0f95214190","title":"Code Coverage Analysis","description":"code-coverage-analysis","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"65aeea2b-9f37-4773-a6ec-60e6015a94ed","gmt_create":"2026-03-03T07:58:43+04:00","gmt_modified":"2026-03-03T07:58:43+04:00"},{"catalog_id":"7a2a098b-edac-41e4-9a5a-162cc3ef1bda","title":"Build Helper Tools","description":"build-helpers","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"36550816-6059-44a8-9ec7-d2656f7a96cb","gmt_create":"2026-03-03T07:58:47+04:00","gmt_modified":"2026-04-21T16:26:14.4557847+04:00"},{"catalog_id":"e074cccb-6de1-4b4f-9213-e4795a07176e","title":"Transaction Debugging Tools","description":"transaction-debugging-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"a68973fc-abf9-40f7-b4e2-51834351ca15","gmt_create":"2026-03-03T07:59:59+04:00","gmt_modified":"2026-03-03T07:59:59+04:00"},{"catalog_id":"e5701376-1a8b-4264-84fc-20e2e2c8ee3e","title":"Node Types and Configurations","description":"node-types-configurations","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"8dd8c2f7-1214-46bc-8d91-dd8366b9f296","gmt_create":"2026-03-03T08:00:19+04:00","gmt_modified":"2026-04-21T15:32:31.3446378+04:00"},{"catalog_id":"f6daad16-0599-4587-9fa8-3ed53e00a90a","title":"Custom Plugin Development","description":"custom-plugin-development","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"495f2dc7-f519-46ca-a8d0-6081782596bd","gmt_create":"2026-03-03T08:00:20+04:00","gmt_modified":"2026-03-03T08:00:21+04:00"},{"catalog_id":"b05dd222-6448-4160-a0f5-37aef26f89c7","title":"API Request Processing","description":"api-request-handling","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"39a7ebb6-e871-4365-a8e6-76cdb7651290","gmt_create":"2026-03-03T08:01:46+04:00","gmt_modified":"2026-03-03T08:01:46+04:00"},{"catalog_id":"9a99062a-0b3e-4aa1-81c9-d200333d6fa3","title":"Docker Integration","description":"docker-integration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"500c516d-131c-4d97-a2e6-142ef59c4741","gmt_create":"2026-03-03T08:02:06+04:00","gmt_modified":"2026-04-17T10:15:28+04:00"},{"catalog_id":"97cd8422-2f5e-4d81-b2bf-53711c6cd317","title":"Service Integration","description":"service-integration","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b266130c-426c-4771-97c9-7fcbbbb1d6d7","gmt_create":"2026-03-03T08:03:49+04:00","gmt_modified":"2026-03-03T08:03:49+04:00"},{"catalog_id":"b75a11a3-390b-48e2-a30c-a1961338cb53","title":"Network Library","description":"network-library","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"3a04ef44-27c8-4d40-8994-e8cb320d3117","gmt_create":"2026-03-03T08:03:52+04:00","gmt_modified":"2026-04-21T16:30:41.1996791+04:00"},{"catalog_id":"e76fe27e-3a85-4ffb-99ee-948e327f7295","title":"Network Debugging Capabilities","description":"network-debugging-capabilities","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"5e4f73d4-9488-41eb-adde-5ca21c9ba61e","gmt_create":"2026-03-03T08:04:07+04:00","gmt_modified":"2026-03-03T08:04:07+04:00"},{"catalog_id":"30df9f31-2320-41fc-bc2d-fbf09616f0a6","title":"Event-Driven Communication Patterns","description":"event-driven-architecture","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"00b46de3-10d9-4f2d-b01e-abe830fab8bf","gmt_create":"2026-03-03T08:05:24+04:00","gmt_modified":"2026-03-03T08:05:24+04:00"},{"catalog_id":"2382be84-8fd0-44c7-ad93-8b5942362bba","title":"Plugin API Design Patterns","description":"plugin-api-patterns","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"545aae90-5c64-4034-84f4-e32d8790461e","gmt_create":"2026-03-03T08:05:51+04:00","gmt_modified":"2026-03-03T08:05:51+04:00"},{"catalog_id":"5e6047c6-0d7e-4034-8a5b-9abe4208fe17","title":"Cross-Platform Compilation","description":"cross-platform-compilation","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"20d6c21a-8790-4634-9ead-5d0c4c59c0ff","gmt_create":"2026-03-03T08:06:47+04:00","gmt_modified":"2026-03-03T08:06:47+04:00"},{"catalog_id":"c368292b-8f15-45f3-a521-c3b8ca969e02","title":"Wallet Library","description":"wallet-library","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"a35f29ed-8b7c-4051-b425-2cc9013c03e5","gmt_create":"2026-03-03T08:07:16+04:00","gmt_modified":"2026-03-07T21:45:11+04:00"},{"catalog_id":"f7650541-74a3-47ab-a30d-ea4e5a018894","title":"Performance Profiling Utilities","description":"performance-profiling-utilities","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b6ba3882-b400-4e98-94b5-633a2df52979","gmt_create":"2026-03-03T08:08:06+04:00","gmt_modified":"2026-03-03T08:08:06+04:00"},{"catalog_id":"c05e9f55-a9e1-4124-a2c1-714029d7698f","title":"Security Hardening","description":"security-hardening","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"121e8dbe-2bce-4c8e-82e2-cc7e6fb2e6ab","gmt_create":"2026-03-03T08:08:09+04:00","gmt_modified":"2026-03-03T08:08:09+04:00"},{"catalog_id":"32a0c134-6f79-4a2e-acb0-056d42e1e7d9","title":"Core Build Options","description":"core-build-options","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b2a1413a-6c97-49e8-8a45-dffb8d04ec31","gmt_create":"2026-03-03T08:11:41+04:00","gmt_modified":"2026-03-03T08:11:41+04:00"},{"catalog_id":"7a4009a5-1f30-4ff8-9a80-64f1287c06d5","title":"Node Management","description":"node-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"db3aee5f-6690-4f81-9b4f-7838199336e6","gmt_create":"2026-03-03T08:11:43+04:00","gmt_modified":"2026-04-21T14:56:29.6496546+04:00"},{"catalog_id":"abf01aa1-e77f-4a65-b1ae-ae4fed1d0ae1","title":"Database Management","description":"database-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"c2241faa-3b2a-4cd7-9f70-c498c7c8dd51","gmt_create":"2026-03-03T08:12:40+04:00","gmt_modified":"2026-04-21T16:31:00.3294246+04:00"},{"catalog_id":"e9197c24-a007-4e00-a1df-9b7d70de3be3","title":"Code Assembly Tools","description":"code-assembly-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"5162373d-0e70-4278-aa06-43b1a9d2b38a","gmt_create":"2026-03-03T08:13:01+04:00","gmt_modified":"2026-03-03T08:13:01+04:00"},{"catalog_id":"7a2cac78-c619-4c8a-b9f0-58bda0362094","title":"Production Dockerfile","description":"production-dockerfile","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"0da1ba8a-ae9c-417e-a45d-c1aed93a8acc","gmt_create":"2026-03-03T08:13:22+04:00","gmt_modified":"2026-03-03T08:13:22+04:00"},{"catalog_id":"77ed6f71-8a3c-4372-bed3-8dc2a580926d","title":"Transaction Processing","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"f52a9806-24c5-4240-add0-132a46428801","gmt_create":"2026-03-03T08:14:41+04:00","gmt_modified":"2026-03-03T08:14:41+04:00"},{"catalog_id":"de8567bd-db5e-4566-ba57-e4c3a0dd09f9","title":"Object Model and Persistence","description":"object-model","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"d018473a-d7ca-4ee5-9535-6e902bb16128","gmt_create":"2026-03-03T08:15:23+04:00","gmt_modified":"2026-03-03T08:15:23+04:00"},{"catalog_id":"5499e741-bb09-4688-9348-a88d5b9e090e","title":"Peer Connection Management","description":"peer-connection","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"87aa5cd2-0092-446c-a074-22a2e50ba26f","gmt_create":"2026-03-03T08:16:05+04:00","gmt_modified":"2026-03-03T08:16:05+04:00"},{"catalog_id":"4e506e55-1dc1-4535-a31b-74823e2fec25","title":"Platform Configurations","description":"platform-configurations","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"fa23f625-e0bb-4035-9098-f1b595766f03","gmt_create":"2026-03-03T08:16:10+04:00","gmt_modified":"2026-04-17T10:42:56+04:00"},{"catalog_id":"f106da4c-6ff8-41e9-96d5-255f4641895f","title":"Testnet Dockerfile","description":"testnet-dockerfile","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"51b19f1f-4899-46ff-a8a5-637803c21e03","gmt_create":"2026-03-03T08:17:07+04:00","gmt_modified":"2026-03-03T08:17:07+04:00"},{"catalog_id":"d1240b5a-bd88-4819-a5a5-6fe5c4c1d0b3","title":"Reflection Validation Tools","description":"reflection-validation","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"b791152f-c6f1-4885-a74b-eae0122e9c26","gmt_create":"2026-03-03T08:17:31+04:00","gmt_modified":"2026-03-03T08:17:31+04:00"},{"catalog_id":"b834596a-d350-442a-80de-39c24cafbf59","title":"Authority Management","description":"authority-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"0ce50c8e-b42b-4500-9b8a-5cc481b9daa3","gmt_create":"2026-03-03T08:17:58+04:00","gmt_modified":"2026-03-03T08:17:58+04:00"},{"catalog_id":"5917cc52-4862-43d4-a6d9-72e4d0f55f9e","title":"Dependency Management","description":"dependency-management","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"ad689a7c-7252-43ea-acb9-f94bc566a3f3","gmt_create":"2026-03-03T08:19:13+04:00","gmt_modified":"2026-04-19T22:00:10+04:00"},{"catalog_id":"71f41e91-6b9b-4a10-8ddf-b49a7b8d81d8","title":"Fork Resolution and Consensus","description":"fork-resolution","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"30b4fcb5-3155-40c2-8463-0733616f78ce","gmt_create":"2026-03-03T08:19:55+04:00","gmt_modified":"2026-04-21T15:32:34.7040582+04:00"},{"catalog_id":"535f1ebd-50f4-467e-a5c9-af25c5047500","title":"Message Handling and Protocol","description":"message-handling","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"ff4ff78c-dcdc-4b65-ada6-e4196ecf8786","gmt_create":"2026-03-03T08:20:04+04:00","gmt_modified":"2026-03-03T08:20:04+04:00"},{"catalog_id":"aea56f38-13ad-4502-b8ea-678baa7def94","title":"Low-Memory Dockerfile","description":"low-memory-dockerfile","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"6add847e-ec39-4344-8432-87a2daa11ccf","gmt_create":"2026-03-03T08:20:43+04:00","gmt_modified":"2026-03-03T08:20:43+04:00"},{"catalog_id":"c6cb793d-9d2b-4e1d-b06d-62207e7ad18d","title":"Plugin Development Tools","description":"plugin-development-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"42c1f41c-e646-4774-a6a1-d1d4562e1998","gmt_create":"2026-03-03T08:21:29+04:00","gmt_modified":"2026-03-03T08:21:29+04:00"},{"catalog_id":"4b09fa01-3e75-4835-a34b-10a59b7a2860","title":"Block Structures","description":"block-structures","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"babbad5d-c4d7-4d13-93e9-5281324f8aec","gmt_create":"2026-03-03T08:21:50+04:00","gmt_modified":"2026-03-03T08:21:50+04:00"},{"catalog_id":"36f46a77-5fc4-4cef-9138-4f056725001a","title":"Block Processing and Validation","description":"block-processing","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"00fca86c-1092-4f62-9718-328cd2538fd7","gmt_create":"2026-03-03T08:22:26+04:00","gmt_modified":"2026-04-20T08:23:26+04:00"},{"catalog_id":"6423f325-5c5f-4db1-b69a-8cd2226bae54","title":"Build Targets","description":"build-targets","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"ef9f708e-fa60-4526-92e5-9fcb81fc7c57","gmt_create":"2026-03-03T08:23:32+04:00","gmt_modified":"2026-03-03T08:23:32+04:00"},{"catalog_id":"eb8aa1da-4d08-41da-82aa-9d55d51a5ec0","title":"Transport Layer and Sockets","description":"transport-layer","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"4cc885a5-0e6b-4ce5-8ce3-4bd3a213a73d","gmt_create":"2026-03-03T08:24:00+04:00","gmt_modified":"2026-03-03T08:24:00+04:00"},{"catalog_id":"fd2a7880-3a37-4d3b-8b93-fff477521237","title":"MongoDB Integration Dockerfile","description":"mongo-dockerfile","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"3b07791c-0a8e-4b2e-9c73-fd6b2b257725","gmt_create":"2026-03-03T08:24:06+04:00","gmt_modified":"2026-03-03T08:24:06+04:00"},{"catalog_id":"f8cd291c-4fba-402a-9782-fe141744f39f","title":"Schema Generation Tools","description":"schema-generation-tools","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"bef90f2b-0676-44fd-a931-e3e664a4e6bd","gmt_create":"2026-03-03T08:24:57+04:00","gmt_modified":"2026-03-03T08:24:57+04:00"},{"catalog_id":"8588d4a8-3b90-4be7-8e6f-89f14d04b875","title":"Data Types and Serialization","description":"data-types-serialization","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"08b4f1e2-4378-4576-91a2-fee8d2b243b8","gmt_create":"2026-03-03T08:25:53+04:00","gmt_modified":"2026-03-03T08:25:53+04:00"},{"catalog_id":"f1ad37ff-b61c-41f5-b508-bc9bf58aa740","title":"Transaction Processing","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"bc7e8e9a-7d66-4ab4-86c8-2ddbbffc3677","gmt_create":"2026-03-03T08:26:05+04:00","gmt_modified":"2026-03-03T08:26:05+04:00"},{"catalog_id":"1727ae08-8dea-4930-b2a9-53140f7dbf2b","title":"GitHub Actions CI/CD Pipeline","description":"github-actions-ci","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"25e670c7-60ae-4ce4-a41b-fb834e5fe871","gmt_create":"2026-03-03T08:27:16+04:00","gmt_modified":"2026-03-03T08:27:16+04:00"},{"catalog_id":"e165c993-0e7f-4b5c-89e2-097596195950","title":"Peer Database and Discovery","description":"peer-database","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"1ae912c2-1b2c-4fb5-a707-5be763d38a8d","gmt_create":"2026-03-03T08:27:29+04:00","gmt_modified":"2026-03-03T08:27:29+04:00"},{"catalog_id":"5d0a9e23-70a7-4884-81c4-820d7ff7f354","title":"Operations Definition","description":"operations-definition","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"176d7d3a-5d1d-4a91-977c-40e482e05a72","gmt_create":"2026-03-03T08:29:14+04:00","gmt_modified":"2026-03-03T08:29:14+04:00"},{"catalog_id":"33eeeca4-c122-4e5e-8da2-0341983c4703","title":"Snapshot Plugin System","description":"snapshot-plugin","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"eda890c7-51dd-41e5-af5f-a0fecb9458d9","gmt_create":"2026-04-13T16:01:32+04:00","gmt_modified":"2026-04-21T15:30:11.1363991+04:00"},{"catalog_id":"03bd970f-522d-45d6-a1f0-b62b8710b708","title":"DLT Rolling Block Log","description":"dlt-block-log","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"4742e642-9e5e-45dd-81ad-e39325b506cd","gmt_create":"2026-04-13T16:03:19+04:00","gmt_modified":"2026-04-20T10:26:23+04:00"},{"catalog_id":"adcf734d-5af6-4940-a9dd-5d08d64be25d","title":"Witness","description":"witness","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"3882f131-9905-41e5-90ce-bb9bc9d949e8","gmt_create":"2026-04-13T21:25:30+04:00","gmt_modified":"2026-04-20T08:24:42+04:00"},{"catalog_id":"72805c45-c475-404f-82cf-3cc1d5b888c5","title":"Webserver Plugin","description":"webserver-plugin","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"76c8fafb-da37-4bfe-a808-d394ae73437c","gmt_create":"2026-04-14T09:29:12+04:00","gmt_modified":"2026-04-17T10:16:56+04:00"},{"catalog_id":"fa79c1ab-cd8f-4312-8140-7baee813fed1","title":"Block Log Reader Module","description":"block-log-reader-module","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"06963af0-f077-4656-92c0-7b789186b834","gmt_create":"2026-04-14T14:41:40+04:00","gmt_modified":"2026-04-14T14:41:40+04:00"},{"catalog_id":"33eeeca4-c122-4e5e-8da2-0341983c4703","title":"Snapshot Plugin System","description":"snapshot-plugin","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"e56b4c71-c537-41c1-ac54-f3696b69e89d","gmt_create":"2026-04-16T12:35:54+04:00","gmt_modified":"2026-04-21T15:30:11.1363991+04:00"},{"catalog_id":"39172425-5559-4b2d-a5a4-bfd4a2d994c7","title":"Build Helper Scripts","description":"build-helpers","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"a8a18a1a-a4f8-4ab6-b697-14aff82ffa34","gmt_create":"2026-04-19T22:03:11+04:00","gmt_modified":"2026-04-19T22:03:11+04:00"},{"catalog_id":"7dd528d6-fec9-43b6-9593-e3e904ca7334","title":"Emergency Consensus System","description":"emergency-consensus-system","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"35ae67dc-be32-4c17-a43b-361dfa56b2c2","gmt_create":"2026-04-20T06:59:08+04:00","gmt_modified":"2026-04-21T14:58:41.9808638+04:00"},{"catalog_id":"d28346c4-4d25-4e03-a423-0dcd8d2507e8","title":"Chain Plugin","description":"chain-plugin","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"aec91d3e-5a73-41d1-9bef-57dd4d24388b","gmt_create":"2026-04-20T08:56:19+04:00","gmt_modified":"2026-04-21T15:26:12.5229961+04:00"},{"catalog_id":"02e46c13-d4a1-43b4-9b63-3d501a210dfd","title":"NTP Synchronization System","description":"ntp-synchronization-system","extend":"{}","progress_status":"completed","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","id":"0c90d3d7-fb99-45ce-aef8-14be1f476d4c","gmt_create":"2026-04-21T15:59:39.7903181+04:00","gmt_modified":"2026-04-21T16:27:59.8716977+04:00"}],"wiki_overview":{"content":"\u003cblog\u003e\n\n# VIZ CPP Node - Comprehensive Project Analysis\n\n## 1. Project Introduction\n\n### Purpose Statement\nVIZ is a C++ implementation of a decentralized blockchain node designed for the VIZ World platform. It serves as a full consensus node that validates transactions, maintains the blockchain state, and provides APIs for interacting with the distributed ledger system.\n\n### Core Goals and Objectives\n- **Consensus Validation**: Maintain blockchain integrity through cryptographic verification and consensus mechanisms\n- **Network Participation**: Act as a peer-to-peer node in the VIZ network infrastructure\n- **API Provision**: Expose comprehensive JSON-RPC APIs for external applications and wallets\n- **Extensibility**: Support modular plugin architecture for specialized functionality\n- **Performance**: Optimize for both full node operations and lightweight consensus-only modes\n\n### Target Audience\n- Blockchain developers building applications on VIZ\n- Node operators running full nodes or witness nodes\n- Wallet developers integrating with VIZ blockchain\n- Researchers studying blockchain consensus mechanisms\n\n## 2. Technical Architecture\n\n### Component Breakdown\n\nThe VIZ project follows a modular architecture built on the appbase framework:\n\n```mermaid\ngraph TD\n A[VIZ Node] --\u003e B[Core Libraries]\n A --\u003e C[Plugins]\n A --\u003e D[Programs]\n \n B --\u003e E[Chain Library]\n B --\u003e F[Protocol Library]\n B --\u003e G[Network Library]\n B --\u003e H[Wallet Library]\n \n C --\u003e I[Chain Plugin]\n C --\u003e J[P2P Plugin]\n C --\u003e K[Webserver Plugin]\n C --\u003e L[Database API Plugin]\n C --\u003e M[JSON-RPC Plugin]\n \n D --\u003e N[vizd - Full Node]\n D --\u003e O[cli_wallet - CLI Wallet]\n D --\u003e P[js_operation_serializer - Tools]\n```\n\n### Design Patterns\n\n**Plugin Architecture**: The project extensively uses the appbase plugin system, allowing modular functionality through independent plugins that can be enabled/disabled at runtime.\n\n**Database Pattern**: Chainbase provides an object-oriented database abstraction layer, enabling efficient blockchain state management.\n\n**Observer Pattern**: Event-driven architecture through Boost.Signals2 for handling blockchain events and state changes.\n\n### System Relationships\n\n```mermaid\nsequenceDiagram\n participant Client\n participant Webserver\n participant JSON_RPC\n participant Chain\n participant Database\n \n Client-\u003e\u003e+Webserver: HTTP Request\n Webserver-\u003e\u003e+JSON_RPC: Parse JSON-RPC\n JSON_RPC-\u003e\u003e+Chain: Validate Operation\n Chain-\u003e\u003e+Database: Query State\n Database--\u003e\u003e-Chain: Return Data\n Chain--\u003e\u003e-JSON_RPC: Process Result\n JSON_RPC--\u003e\u003e-Webserver: JSON Response\n Webserver--\u003e\u003e-Client: HTTP Response\n```\n\n### Data Flow Diagrams\n\n```mermaid\nflowchart TD\n A[Transaction Input] --\u003e B[JSON-RPC Parser]\n B --\u003e C[Operation Validation]\n C --\u003e D[Authority Verification]\n D --\u003e E[State Application]\n E --\u003e F[Block Production]\n F --\u003e G[P2P Broadcasting]\n \n H[Block Input] --\u003e I[Block Validation]\n I --\u003e J[Fork Resolution]\n J --\u003e K[State Commit]\n K --\u003e L[Peer Sync]\n```\n\n## 3. Key Implementation\n\n### Main Entry Points\n\n**Primary Node Entry Point**: `programs/vizd/main.cpp`\n- Initializes the application with core plugins\n- Configures logging and command-line options\n- Manages plugin lifecycle and startup sequence\n\n**Configuration Management**: `share/vizd/config/config.ini`\n- Network settings (P2P endpoints, webserver ports)\n- Plugin activation and configuration\n- Performance tuning parameters\n- Logging configuration sections\n\n### Core Modules\n\n**Database Layer**: `libraries/chain/include/graphene/chain/database.hpp`\n- Blockchain state management\n- Object persistence and retrieval\n- Fork database handling\n- Transaction validation pipeline\n\n**Protocol Definitions**: `libraries/protocol/include/graphene/protocol/operations.hpp`\n- Complete operation type definitions\n- Transaction structure validation\n- Authority requirement calculation\n- Virtual operation handling\n\n**Plugin System**: `plugins/chain/include/graphene/plugins/chain/plugin.hpp`\n- Core blockchain functionality\n- Block acceptance and validation\n- Transaction processing\n- Index management\n\n### Configuration Approach\n\n**Build Configuration**: `CMakeLists.txt`\n- Cross-platform compilation support\n- Compiler-specific optimizations\n- Feature toggles (testnet, low-memory)\n- Dependency management\n\n**Runtime Configuration**: `share/vizd/config/config.ini`\n- Plugin enable/disable directives\n- Network connectivity settings\n- Performance tuning parameters\n- Logging configuration sections\n\n### External Dependencies\n\n**Third-party Libraries**: `thirdparty/CMakeLists.txt`\n- appbase: Application framework foundation\n- fc: Fast Crypto library for networking and cryptography\n- chainbase: High-performance object database\n\n**Build Dependencies**:\n- Boost 1.57+: Core C++ utilities\n- OpenSSL: Cryptographic operations\n- CMake: Build system\n- Platform-specific toolchains\n\n### Integration Points\n\n**P2P Network**: `plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp`\n- Peer discovery and connection management\n- Block and transaction propagation\n- Network protocol compliance\n\n**Web API**: `plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp`\n- HTTP/HTTPS server implementation\n- WebSocket support for real-time updates\n- JSON-RPC 2.0 compliance\n\n**Database API**: `plugins/database_api/include/graphene/plugins/database_api/plugin.hpp`\n- Comprehensive blockchain state queries\n- Account and transaction history\n- Market data and governance information\n\n### Component Relationship Diagrams\n\n```mermaid\ngraph LR\n A[Chain Plugin] --\u003e B[Database Layer]\n A --\u003e C[P2P Plugin]\n D[Webserver Plugin] --\u003e E[JSON-RPC Plugin]\n E --\u003e A\n F[Database API Plugin] --\u003e A\n G[Account History Plugin] --\u003e A\n H[Tags Plugin] --\u003e A\n I[Follow Plugin] --\u003e A\n```\n\n## 4. Key Features\n\n### Functionality Overview\n\n**Blockchain Consensus**: Full validation of blocks and transactions according to VIZ protocol rules\n**Network Participation**: Active participation in the peer-to-peer network with configurable connectivity\n**API Exposure**: Comprehensive JSON-RPC APIs covering all blockchain functionality\n**Plugin Extensibility**: Modular architecture supporting specialized functionality through plugins\n**Performance Optimization**: Configurable memory usage and processing modes for different node types\n\n### Implementation Highlights\n\n**Modular Plugin System**: `plugins/*/include/graphene/plugins/*/plugin.hpp`\n- Independent plugin development and deployment\n- Runtime plugin loading/unloading\n- Inter-plugin communication through appbase framework\n\n**High-performance Database**: `libraries/chain/database.cpp`\n- Optimized object storage and retrieval\n- Efficient fork resolution algorithms\n- Memory-mapped file support for large datasets\n\n**Comprehensive API Coverage**: `plugins/database_api/api.cpp`\n- Complete blockchain state queries\n- Historical data access\n- Real-time event streaming\n\n### Feature Architecture Diagrams\n\n```mermaid\nstateDiagram-v2\n [*] --\u003e Initializing\n Initializing --\u003e Syncing: Start Node\n Syncing --\u003e Live: Catch Up Complete\n Live --\u003e Producing: Witness Enabled\n Live --\u003e Listening: Normal Mode\n Producing --\u003e Live: Block Production\n Listening --\u003e Live: New Blocks\n Live --\u003e [*]: Shutdown\n \n Syncing --\u003e [*]: Error\n Live --\u003e [*]: Error\n```\n\n**Development Workflow**: `documentation/building.md`\n- Cross-platform build system\n- Docker containerization support\n- Automated testing and CI/CD integration\n- Release packaging and distribution\n\n**Testing Infrastructure**: `documentation/testing.md`\n- Unit test framework integration\n- Integration testing capabilities\n- Performance benchmarking tools\n- Continuous integration workflows\n\n## 5. Conclusion and Recommendations\n\n### Project Architecture Summary\n\nThe VIZ CPP Node demonstrates a well-architected blockchain implementation with several key strengths:\n\n- **Modular Design**: Clean separation of concerns through the plugin architecture enables easy maintenance and feature development\n- **Performance Focus**: Multiple optimization modes (full node vs. low-memory) accommodate diverse deployment scenarios\n- **Comprehensive API**: Broad coverage of blockchain functionality through standardized JSON-RPC interfaces\n- **Cross-platform Compatibility**: Robust build system supporting multiple operating systems and compilers\n\n### Architectural Strengths\n\n1. **Scalability**: Plugin-based architecture allows selective feature activation based on node requirements\n2. **Maintainability**: Clear module boundaries facilitate independent development and testing\n3. **Interoperability**: Standardized JSON-RPC interface enables seamless integration with external applications\n4. **Reliability**: Comprehensive error handling and logging throughout the system\n\n### Potential Improvement Areas\n\n1. **Documentation**: Enhanced inline documentation would improve code maintainability\n2. **Testing Coverage**: Expanded unit and integration test suites would increase confidence in changes\n3. **Monitoring**: Additional metrics and health check endpoints would improve operational visibility\n4. **Security**: Regular security audits and vulnerability assessments should be integrated into the development process\n\n### Actionable Recommendations\n\n1. **Implement Comprehensive Logging**: Add structured logging with correlation IDs for better debugging\n2. **Enhance Test Coverage**: Target 80%+ code coverage across all modules\n3. **Performance Monitoring**: Integrate metrics collection for key performance indicators\n4. **Security Hardening**: Implement regular security assessments and dependency updates\n5. **Developer Experience**: Create comprehensive developer guides and example applications\n\n### Next Steps for Project Evolution\n\n1. **Microservices Migration**: Consider breaking down monolithic components into microservices for better scalability\n2. **Cloud-native Deployment**: Enhance Kubernetes support and cloud-native features\n3. **Advanced Analytics**: Implement real-time analytics and reporting capabilities\n4. **Mobile Integration**: Develop mobile SDKs for broader ecosystem adoption\n5. **Community Development**: Establish contributor guidelines and development workflows\n\n---\n\n**Sources:**\n- [CMakeLists.txt](CMakeLists.txt)\n- [main.cpp](programs/vizd/main.cpp)\n- [database.hpp](libraries/chain/include/graphene/chain/database.hpp)\n- [operations.hpp](libraries/protocol/include/graphene/protocol/operations.hpp)\n- [plugin.hpp](plugins/chain/include/graphene/plugins/chain/plugin.hpp)\n- [config.ini](share/vizd/config/config.ini)\n- [building.md](documentation/building.md)\n- [plugin.hpp](plugins/database_api/include/graphene/plugins/database_api/plugin.hpp)\n- [p2p_plugin.hpp](plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp)\n- [webserver_plugin.hpp](plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp)\n- [CMakeLists.txt](thirdparty/CMakeLists.txt)\n\n\u003c/blog\u003e","gmt_create":"2026-03-03T07:24:05+04:00","gmt_modified":"2026-03-03T07:24:05+04:00","id":"26450418-8dab-48a3-b058-08414599319e","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3"},"wiki_readme":{"content":"No readme file","gmt_create":"2026-03-03T07:22:14+04:00","gmt_modified":"2026-03-03T07:22:14+04:00","id":"dd5a5fcc-200f-4040-918a-a876a568f71c","repo_id":"e050139e-2cf4-4603-becf-7b07fc97c4d3"},"wiki_repo":{"id":"e050139e-2cf4-4603-becf-7b07fc97c4d3","name":"viz-cpp-node","progress_status":"completed","wiki_present_status":"COMPLETED","optimized_catalog":"\".\\n├── .github\\\\workflows\\\\\\n│ ├── docker-main.yml\\n│ └── docker-pr-build.yml\\n├── .qoder\\\\\\n│ ├── agents\\\\\\n│ └── skills\\\\\\n├── documentation\\\\\\n│ ├── doxygen\\\\\\n│ │ ├── images\\\\\\n│ │ │ └── viz.png\\n│ │ ├── DoxygenLayout.xml\\n│ │ ├── customdoxygen.css\\n│ │ ├── footer.html\\n│ │ └── header.html\\n│ ├── api_notes.md\\n│ ├── building.md\\n│ ├── debug_node_plugin.md\\n│ ├── git_guildelines.md\\n│ ├── plugin.md\\n│ ├── testing.md\\n│ └── testnet.md\\n├── libraries\\\\\\n│ ├── api\\\\\\n│ │ ├── include\\\\graphene\\\\api\\\\\\n│ │ │ ├── account_api_object.hpp\\n│ │ │ ├── account_vote.hpp\\n│ │ │ ├── chain_api_properties.hpp\\n│ │ │ ├── committee_api_object.hpp\\n│ │ │ ├── content_api_object.hpp\\n│ │ │ ├── discussion.hpp\\n│ │ │ ├── discussion_helper.hpp\\n│ │ │ ├── invite_api_object.hpp\\n│ │ │ ├── paid_subscription_api_object.hpp\\n│ │ │ ├── vote_state.hpp\\n│ │ │ └── witness_api_object.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── account_api_object.cpp\\n│ │ ├── chain_api_properties.cpp\\n│ │ ├── committee_api_object.cpp\\n│ │ ├── content_api_object.cpp\\n│ │ ├── discussion_helper.cpp\\n│ │ ├── invite_api_object.cpp\\n│ │ ├── paid_subscription_api_object.cpp\\n│ │ └── witness_api_object.cpp\\n│ ├── chain\\\\\\n│ │ ├── hardfork.d\\\\\\n│ │ │ ├── 0-preamble.hf\\n│ │ │ ├── 1.hf\\n│ │ │ ├── 10.hf\\n│ │ │ ├── 11.hf\\n│ │ │ ├── 2.hf\\n│ │ │ ├── 3.hf\\n│ │ │ ├── 4.hf\\n│ │ │ ├── 5.hf\\n│ │ │ ├── 6.hf\\n│ │ │ ├── 7.hf\\n│ │ │ ├── 8.hf\\n│ │ │ └── 9.hf\\n│ │ ├── include\\\\graphene\\\\chain\\\\\\n│ │ │ ├── account_object.hpp\\n│ │ │ ├── block_log.hpp\\n│ │ │ ├── block_summary_object.hpp\\n│ │ │ ├── chain_evaluator.hpp\\n│ │ │ ├── chain_object_types.hpp\\n│ │ │ ├── chain_objects.hpp\\n│ │ │ ├── committee_objects.hpp\\n│ │ │ ├── compound.hpp\\n│ │ │ ├── content_object.hpp\\n│ │ │ ├── custom_operation_interpreter.hpp\\n│ │ │ ├── database.hpp\\n│ │ │ ├── database_exceptions.hpp\\n│ │ │ ├── db_with.hpp\\n│ │ │ ├── evaluator.hpp\\n│ │ │ ├── evaluator_registry.hpp\\n│ │ │ ├── fork_database.hpp\\n│ │ │ ├── generic_custom_operation_interpreter.hpp\\n│ │ │ ├── global_property_object.hpp\\n│ │ │ ├── immutable_chain_parameters.hpp\\n│ │ │ ├── index.hpp\\n│ │ │ ├── invite_objects.hpp\\n│ │ │ ├── node_property_object.hpp\\n│ │ │ ├── operation_notification.hpp\\n│ │ │ ├── paid_subscription_objects.hpp\\n│ │ │ ├── proposal_object.hpp\\n│ │ │ ├── shared_authority.hpp\\n│ │ │ ├── shared_db_merkle.hpp\\n│ │ │ ├── transaction_object.hpp\\n│ │ │ └── witness_objects.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── block_log.cpp\\n│ │ ├── chain_evaluator.cpp\\n│ │ ├── chain_objects.cpp\\n│ │ ├── chain_properties_evaluators.cpp\\n│ │ ├── committee_evaluator.cpp\\n│ │ ├── database.cpp\\n│ │ ├── database_proposal_object.cpp\\n│ │ ├── fork_database.cpp\\n│ │ ├── invite_evaluator.cpp\\n│ │ ├── paid_subscription_evaluator.cpp\\n│ │ ├── proposal_evaluator.cpp\\n│ │ ├── proposal_object.cpp\\n│ │ ├── shared_authority.cpp\\n│ │ └── transaction_object.cpp\\n│ ├── network\\\\\\n│ │ ├── include\\\\graphene\\\\network\\\\\\n│ │ │ ├── config.hpp\\n│ │ │ ├── core_messages.hpp\\n│ │ │ ├── exceptions.hpp\\n│ │ │ ├── message.hpp\\n│ │ │ ├── message_oriented_connection.hpp\\n│ │ │ ├── node.hpp\\n│ │ │ ├── peer_connection.hpp\\n│ │ │ ├── peer_database.hpp\\n│ │ │ └── stcp_socket.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── core_messages.cpp\\n│ │ ├── message_oriented_connection.cpp\\n│ │ ├── node.cpp\\n│ │ ├── peer_connection.cpp\\n│ │ ├── peer_database.cpp\\n│ │ └── stcp_socket.cpp\\n│ ├── protocol\\\\\\n│ │ ├── include\\\\graphene\\\\protocol\\\\\\n│ │ │ ├── README.md\\n│ │ │ ├── asset.hpp\\n│ │ │ ├── authority.hpp\\n│ │ │ ├── base.hpp\\n│ │ │ ├── block.hpp\\n│ │ │ ├── block_header.hpp\\n│ │ │ ├── chain_operations.hpp\\n│ │ │ ├── chain_virtual_operations.hpp\\n│ │ │ ├── config.hpp\\n│ │ │ ├── config_testnet.hpp\\n│ │ │ ├── exceptions.hpp\\n│ │ │ ├── get_config.hpp\\n│ │ │ ├── operation_util.hpp\\n│ │ │ ├── operation_util_impl.hpp\\n│ │ │ ├── operations.hpp\\n│ │ │ ├── proposal_operations.hpp\\n│ │ │ ├── protocol.hpp\\n│ │ │ ├── sign_state.hpp\\n│ │ │ ├── transaction.hpp\\n│ │ │ ├── types.hpp\\n│ │ │ └── version.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── asset.cpp\\n│ │ ├── authority.cpp\\n│ │ ├── block.cpp\\n│ │ ├── chain_operations.cpp\\n│ │ ├── get_config.cpp\\n│ │ ├── operation_util_impl.cpp\\n│ │ ├── operations.cpp\\n│ │ ├── proposal_operations.cpp\\n│ │ ├── sign_state.cpp\\n│ │ ├── transaction.cpp\\n│ │ ├── types.cpp\\n│ │ └── version.cpp\\n│ ├── time\\\\\\n│ │ ├── include\\\\graphene\\\\time\\\\\\n│ │ │ └── time.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── time.cpp\\n│ ├── utilities\\\\\\n│ │ ├── include\\\\graphene\\\\utilities\\\\\\n│ │ │ ├── git_revision.hpp\\n│ │ │ ├── key_conversion.hpp\\n│ │ │ ├── padding_ostream.hpp\\n│ │ │ ├── string_escape.hpp\\n│ │ │ ├── tempdir.hpp\\n│ │ │ └── words.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── git_revision.cpp.in\\n│ │ ├── key_conversion.cpp\\n│ │ ├── string_escape.cpp\\n│ │ ├── tempdir.cpp\\n│ │ └── words.cpp\\n│ ├── wallet\\\\\\n│ │ ├── include\\\\graphene\\\\wallet\\\\\\n│ │ │ ├── api_documentation.hpp\\n│ │ │ ├── reflect_util.hpp\\n│ │ │ ├── remote_node_api.hpp\\n│ │ │ └── wallet.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── Doxyfile.in\\n│ │ ├── api_documentation_standin.cpp\\n│ │ ├── generate_api_documentation.pl\\n│ │ └── wallet.cpp\\n│ └── CMakeLists.txt\\n├── plugins\\\\\\n│ ├── account_by_key\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\account_by_key\\\\\\n│ │ │ ├── account_by_key_objects.hpp\\n│ │ │ └── account_by_key_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── account_by_key_plugin.cpp\\n│ ├── account_history\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\account_history\\\\\\n│ │ │ ├── history_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── auth_util\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\auth_util\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── block_info\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\block_info\\\\\\n│ │ │ ├── block_info.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── chain\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\chain\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── committee_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\committee_api\\\\\\n│ │ │ └── committee_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── committee_api.cpp\\n│ ├── custom_protocol_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\custom_protocol_api\\\\\\n│ │ │ ├── custom_protocol_api.hpp\\n│ │ │ ├── custom_protocol_api_object.hpp\\n│ │ │ └── custom_protocol_api_visitor.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── custom_protocol_api.cpp\\n│ │ └── custom_protocol_api_visitor.cpp\\n│ ├── database_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\database_api\\\\\\n│ │ │ ├── api_objects\\\\\\n│ │ │ │ ├── account_recovery_request_api_object.hpp\\n│ │ │ │ ├── master_authority_history_api_object.hpp\\n│ │ │ │ └── proposal_api_object.hpp\\n│ │ │ ├── forward.hpp\\n│ │ │ ├── plugin.hpp\\n│ │ │ └── state.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── api.cpp\\n│ │ └── proposal_api_object.cpp\\n│ ├── debug_node\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\debug_node\\\\\\n│ │ │ ├── api_helper.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── follow\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\follow\\\\\\n│ │ │ ├── follow_api_object.hpp\\n│ │ │ ├── follow_evaluators.hpp\\n│ │ │ ├── follow_forward.hpp\\n│ │ │ ├── follow_objects.hpp\\n│ │ │ ├── follow_operations.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── follow_evaluators.cpp\\n│ │ ├── follow_operations.cpp\\n│ │ └── plugin.cpp\\n│ ├── invite_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\invite_api\\\\\\n│ │ │ └── invite_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── invite_api.cpp\\n│ ├── json_rpc\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\json_rpc\\\\\\n│ │ │ ├── plugin.hpp\\n│ │ │ └── utility.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── mongo_db\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\mongo_db\\\\\\n│ │ │ ├── mongo_db_operations.hpp\\n│ │ │ ├── mongo_db_plugin.hpp\\n│ │ │ ├── mongo_db_state.hpp\\n│ │ │ ├── mongo_db_types.hpp\\n│ │ │ └── mongo_db_writer.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── mongo_db_operations.cpp\\n│ │ ├── mongo_db_plugin.cpp\\n│ │ ├── mongo_db_state.cpp\\n│ │ ├── mongo_db_types.cpp\\n│ │ └── mongo_db_writer.cpp\\n│ ├── network_broadcast_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\network_broadcast_api\\\\\\n│ │ │ └── network_broadcast_api_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── network_broadcast_api.cpp\\n│ ├── operation_history\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\operation_history\\\\\\n│ │ │ ├── applied_operation.hpp\\n│ │ │ ├── history_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── applied_operation.cpp\\n│ │ └── plugin.cpp\\n│ ├── p2p\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\p2p\\\\\\n│ │ │ └── p2p_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── p2p_plugin.cpp\\n│ ├── paid_subscription_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\paid_subscription_api\\\\\\n│ │ │ └── paid_subscription_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── paid_subscription_api.cpp\\n│ ├── private_message\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\private_message\\\\\\n│ │ │ ├── private_message_evaluators.hpp\\n│ │ │ ├── private_message_objects.hpp\\n│ │ │ └── private_message_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── private_message_objects.cpp\\n│ │ └── private_message_plugin.cpp\\n│ ├── raw_block\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\raw_block\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── social_network\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\social_network\\\\\\n│ │ │ └── social_network.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── social_network.cpp\\n│ ├── tags\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\tags\\\\\\n│ │ │ ├── discussion_query.hpp\\n│ │ │ ├── plugin.hpp\\n│ │ │ ├── tag_api_object.hpp\\n│ │ │ ├── tag_visitor.hpp\\n│ │ │ ├── tags_object.hpp\\n│ │ │ └── tags_sort.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── discussion_query.cpp\\n│ │ ├── plugin.cpp\\n│ │ └── tag_visitor.cpp\\n│ ├── test_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\test_api\\\\\\n│ │ │ └── test_api_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── test_api_plugin.cpp\\n│ ├── webserver\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\webserver\\\\\\n│ │ │ └── webserver_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── webserver_plugin.cpp\\n│ ├── witness\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\witness\\\\\\n│ │ │ └── witness.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── witness.cpp\\n│ ├── witness_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\witness_api\\\\\\n│ │ │ ├── api_objects\\\\\\n│ │ │ │ ├── feed_history_api_object.hpp\\n│ │ │ │ └── witness_api_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ └── CMakeLists.txt\\n├── programs\\\\\\n│ ├── build_helpers\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ ├── cat-parts.cpp\\n│ │ ├── cat_parts.py\\n│ │ ├── check_reflect.py\\n│ │ └── configure_build.py\\n│ ├── cli_wallet\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── js_operation_serializer\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── size_checker\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── util\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ ├── get_dev_key.cpp\\n│ │ ├── inflation_plot.py\\n│ │ ├── newplugin.py\\n│ │ ├── pretty_schema.py\\n│ │ ├── saltpass.py\\n│ │ ├── schema_test.cpp\\n│ │ ├── sign_digest.cpp\\n│ │ ├── sign_transaction.cpp\\n│ │ ├── test_block_log.cpp\\n│ │ └── test_shared_mem.cpp\\n│ ├── vizd\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ └── CMakeLists.txt\\n├── share\\\\vizd\\\\\\n│ ├── config\\\\\\n│ │ ├── config.ini\\n│ │ ├── config_debug.ini\\n│ │ ├── config_debug_mongo.ini\\n│ │ ├── config_mongo.ini\\n│ │ ├── config_stock_exchange.ini\\n│ │ ├── config_testnet.ini\\n│ │ └── config_witness.ini\\n│ ├── docker\\\\\\n│ │ ├── Dockerfile-lowmem\\n│ │ ├── Dockerfile-mongo\\n│ │ ├── Dockerfile-production\\n│ │ └── Dockerfile-testnet\\n│ ├── seednodes\\n│ ├── seednodes_empty\\n│ ├── snapshot-testnet.json\\n│ ├── snapshot.json\\n│ └── vizd.sh\\n├── thirdparty\\\\\\n│ ├── appbase\\\\\\n│ ├── chainbase\\\\\\n│ ├── fc\\\\\\n│ └── CMakeLists.txt\\n├── .gitignore\\n├── .gitmodules\\n├── .travis.yml\\n├── CMakeLists.txt\\n├── Doxyfile\\n├── LICENSE.md\\n└── README.md\\n\"","current_document_structure":"WikiEncrypted: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","catalogue_think_content":"WikiEncrypted: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","recovery_checkpoint":"incremental_processing","last_commit_id":"bb7981ab1617fa53703d69cae73cfcf0c9f052d4","last_commit_update":"2026-04-21T16:59:21.5614844+04:00","gmt_create":"2026-03-03T06:42:09+04:00","gmt_modified":"2026-04-21T16:59:21.5614844+04:00","extend_info":"{\"language\":\"en\",\"active\":true,\"branch\":\"fix-snapshot\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"0.8.2\"}"}} \ No newline at end of file +{"code_snippets":[{"id":"a6554c3e99a338d898b0507a3a66ff28","path":"CMakeLists.txt","line_range":"210-213","gmt_create":"2026-04-23T06:46:47.4165582+04:00","gmt_modified":"2026-04-23T06:46:47.4165582+04:00"},{"id":"b4276d0c8cc31d088a1ff447673b57a3","path":"thirdparty/CMakeLists.txt","line_range":"1-3","gmt_create":"2026-04-23T06:46:47.4165582+04:00","gmt_modified":"2026-04-23T06:46:47.4165582+04:00"},{"id":"95a23068f3cf8efeb2f469b3762d202c","path":"libraries/CMakeLists.txt","line_range":"1-8","gmt_create":"2026-04-23T06:46:47.4165582+04:00","gmt_modified":"2026-04-23T06:46:47.4165582+04:00"},{"id":"eb47238d4d9c0bc7677c0adbb5315621","path":"plugins/CMakeLists.txt","line_range":"1-12","gmt_create":"2026-04-23T06:46:47.4165582+04:00","gmt_modified":"2026-04-23T06:46:47.4165582+04:00"},{"id":"f82191fd008239ba9828aa2407463469","path":"programs/CMakeLists.txt","line_range":"1-8","gmt_create":"2026-04-23T06:46:47.4165582+04:00","gmt_modified":"2026-04-23T06:46:47.4165582+04:00"},{"id":"0b638cb0339fd1defe7fb60a33538909","path":".gitmodules","line_range":"1-13","gmt_create":"2026-04-23T06:46:47.4170999+04:00","gmt_modified":"2026-04-23T06:46:47.4170999+04:00"},{"id":"1b6a9427d3c622d5192d3935a64543bd","path":"CMakeLists.txt","line_range":"1-271","gmt_create":"2026-04-23T06:46:47.4176164+04:00","gmt_modified":"2026-04-23T06:46:47.4176164+04:00"},{"id":"d302333235c57587186737aa4dca15e8","path":"documentation/building.md","line_range":"3-212","gmt_create":"2026-04-23T06:46:47.4176164+04:00","gmt_modified":"2026-04-23T06:46:47.4176164+04:00"},{"id":"cb84fa9cda98d6d0c8dae3b261ed7a70","path":"programs/vizd/CMakeLists.txt","line_range":"16-49","gmt_create":"2026-04-23T06:46:47.4176164+04:00","gmt_modified":"2026-04-23T06:46:47.4176164+04:00"},{"id":"b8c001209973c30395b37fb2da7d01da","path":"CMakeLists.txt","line_range":"56-89","gmt_create":"2026-04-23T06:46:47.4191602+04:00","gmt_modified":"2026-04-23T06:46:47.4191602+04:00"},{"id":"3dc9c9dd6a7323c7679ba87de581b271","path":"CMakeLists.txt","line_range":"196-208","gmt_create":"2026-04-23T06:46:47.4191602+04:00","gmt_modified":"2026-04-23T06:46:47.4191602+04:00"},{"id":"6bfcc19ec644ada767dba2b4cd16b384","path":"CMakeLists.txt","line_range":"91-202","gmt_create":"2026-04-23T06:46:47.4191602+04:00","gmt_modified":"2026-04-23T06:46:47.4191602+04:00"},{"id":"daf69b54ca31d1461ddc9b5b7229eb44","path":"documentation/building.md","line_range":"25-212","gmt_create":"2026-04-23T06:46:47.4191602+04:00","gmt_modified":"2026-04-23T06:46:47.4191602+04:00"},{"id":"52e6ffd6a8494783d8744074cebd0336","path":"thirdparty/fc/CMakeLists.txt","line_range":"115-130","gmt_create":"2026-04-23T06:46:47.4196765+04:00","gmt_modified":"2026-04-23T06:46:47.4196765+04:00"},{"id":"c8c2228bb696aed9de796ce6fc2d85a7","path":"thirdparty/chainbase/CMakeLists.txt","line_range":"28","gmt_create":"2026-04-23T06:46:47.420195+04:00","gmt_modified":"2026-04-23T06:46:47.420195+04:00"},{"id":"7535e2fd9b45a698e5e59716482d28bf","path":"thirdparty/appbase/CMakeLists.txt","line_range":"21","gmt_create":"2026-04-23T06:46:47.420195+04:00","gmt_modified":"2026-04-23T06:46:47.420195+04:00"},{"id":"ca9eea091b8db2ef86264e42e38ca6ee","path":"thirdparty/fc/.gitmodules","line_range":"1-10","gmt_create":"2026-04-23T06:46:47.420195+04:00","gmt_modified":"2026-04-23T06:46:47.420195+04:00"},{"id":"3dc1dfd57ce8f8f0ddb0903ecc4757e0","path":"thirdparty/fc/CMakeLists.txt","line_range":"51-101","gmt_create":"2026-04-23T06:46:47.420718+04:00","gmt_modified":"2026-04-23T06:46:47.420718+04:00"},{"id":"4be9aed880930cc1db12f5577deb6b36","path":"CMakeLists.txt","line_range":"97-104","gmt_create":"2026-04-23T06:46:47.4212357+04:00","gmt_modified":"2026-04-23T06:46:47.4212357+04:00"},{"id":"c7aa1ccb058236d7733e705cdb185dd8","path":"CMakeLists.txt","line_range":"160-183","gmt_create":"2026-04-23T06:46:47.4212357+04:00","gmt_modified":"2026-04-23T06:46:47.4212357+04:00"},{"id":"9c24cd1c93b483ba1aede76c89f958b2","path":"CMakeLists.txt","line_range":"106-110","gmt_create":"2026-04-23T06:46:47.4212357+04:00","gmt_modified":"2026-04-23T06:46:47.4212357+04:00"},{"id":"f565e4a16509997a202ecb545fdd1d94","path":"programs/vizd/CMakeLists.txt","line_range":"10-14","gmt_create":"2026-04-23T06:46:47.4212357+04:00","gmt_modified":"2026-04-23T06:46:47.4212357+04:00"},{"id":"73b1b23eeea50d8b237bb80c8dc5bdc3","path":"programs/vizd/CMakeLists.txt","line_range":"1-58","gmt_create":"2026-04-23T06:46:47.4217501+04:00","gmt_modified":"2026-04-23T06:46:47.4217501+04:00"},{"id":"a151de1bba876645d0074033f71f3cd0","path":".travis.yml","line_range":"1-46","gmt_create":"2026-04-23T06:46:47.4217501+04:00","gmt_modified":"2026-04-23T06:46:47.4217501+04:00"},{"id":"b93b1b04a108f6289a1e7bad2a4ed2fb","path":".github/workflows/docker-main.yml","line_range":"1-41","gmt_create":"2026-04-23T06:46:47.4222848+04:00","gmt_modified":"2026-04-23T06:46:47.4222848+04:00"},{"id":"ee015920fc0fc039247a7d3b4eac89ed","path":"share/vizd/docker/Dockerfile-testnet","line_range":"46-54","gmt_create":"2026-04-23T06:46:47.4222848+04:00","gmt_modified":"2026-04-23T06:46:47.4222848+04:00"},{"id":"19f7d5497751e6e4be7ea65ce7019aa9","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"45-53","gmt_create":"2026-04-23T06:46:47.4228034+04:00","gmt_modified":"2026-04-23T06:46:47.4228034+04:00"},{"id":"3d840e85c97e5b7fc8d3d7945d087608","path":"share/vizd/docker/Dockerfile-mongo","line_range":"74-82","gmt_create":"2026-04-23T06:46:47.4228034+04:00","gmt_modified":"2026-04-23T06:46:47.4228034+04:00"},{"id":"032cb0f8e6385f71f41d9c37e66b560c","path":"CMakeLists.txt","line_range":"147-156","gmt_create":"2026-04-23T06:46:47.4238267+04:00","gmt_modified":"2026-04-23T06:46:47.4238267+04:00"},{"id":"6223bbabeb98e81094bb095976dbb9b3","path":"CMakeLists.txt","line_range":"186-188","gmt_create":"2026-04-23T06:46:47.424344+04:00","gmt_modified":"2026-04-23T06:46:47.424344+04:00"},{"id":"e368f0f4b37dd155690ceb490ab0fb6e","path":"CMakeLists.txt","line_range":"190-194","gmt_create":"2026-04-23T06:46:47.424344+04:00","gmt_modified":"2026-04-23T06:46:47.424344+04:00"},{"id":"1500dc5624650580e36408796d490a11","path":"CMakeLists.txt","line_range":"204-208","gmt_create":"2026-04-23T06:46:47.424344+04:00","gmt_modified":"2026-04-23T06:46:47.424344+04:00"},{"id":"004f0f1e04b64571284e92edb13fe927","path":"CMakeLists.txt","line_range":"29-31","gmt_create":"2026-04-23T06:46:47.4248547+04:00","gmt_modified":"2026-04-23T06:46:47.4248547+04:00"},{"id":"54ee4168accbfb06f382297e1e5e2aeb","path":"documentation/building.md","line_range":"76-137","gmt_create":"2026-04-23T06:46:47.4248547+04:00","gmt_modified":"2026-04-23T06:46:47.4248547+04:00"},{"id":"c1d41ed0c7651f63b7c09975c8ec7843","path":"documentation/building.md","line_range":"138-199","gmt_create":"2026-04-23T06:46:47.4248547+04:00","gmt_modified":"2026-04-23T06:46:47.4248547+04:00"},{"id":"c0806cc4754e0262902e1cf12737a7c6","path":"CMakeLists.txt","line_range":"91-156","gmt_create":"2026-04-23T06:46:47.4248547+04:00","gmt_modified":"2026-04-23T06:46:47.4248547+04:00"},{"id":"4cb7433e56905f7ac811f55f67a492e8","path":".travis.yml","line_range":"12-42","gmt_create":"2026-04-23T06:46:47.4258845+04:00","gmt_modified":"2026-04-23T06:46:47.4258845+04:00"},{"id":"c2187e808fdcad1036f49417495dc402","path":".github/workflows/docker-main.yml","line_range":"11-41","gmt_create":"2026-04-23T06:46:47.426449+04:00","gmt_modified":"2026-04-23T06:46:47.426449+04:00"},{"id":"34606a0a129754acaca66ba1513465d9","path":"build-linux.sh","line_range":"39","gmt_create":"2026-04-23T06:46:47.426449+04:00","gmt_modified":"2026-04-23T06:46:47.426449+04:00"},{"id":"2400ee9418e6ca496e1b25b5c0444248","path":"build-mac.sh","line_range":"35","gmt_create":"2026-04-23T06:46:47.4269522+04:00","gmt_modified":"2026-04-23T06:46:47.4269522+04:00"},{"id":"457ef8b5c7cbf6167a609a1d56e8062d","path":"build-mingw.bat","line_range":"99","gmt_create":"2026-04-23T06:46:47.4275769+04:00","gmt_modified":"2026-04-23T06:46:47.4275769+04:00"},{"id":"33a4e4430e70d59ac8350609498374cb","path":"build-msvc.bat","line_range":"91","gmt_create":"2026-04-23T06:46:47.4275769+04:00","gmt_modified":"2026-04-23T06:46:47.4275769+04:00"},{"id":"a7e56ec55d2393204c9701d977a9400c","path":"plugins/snapshot/plugin.cpp","line_range":"1-50","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"4a06a01de185f2302afb08f24f3c2b84","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"1-88","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"afdbaea77133cc08160f2954aae9d02c","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","line_range":"1-52","gmt_create":"2026-04-23T06:48:46.2326432+04:00","gmt_modified":"2026-04-23T06:48:46.2326432+04:00"},{"id":"86be1cb2396b0667cd9b2676e146da4f","path":"plugins/snapshot/CMakeLists.txt","line_range":"1-52","gmt_create":"2026-04-23T06:48:46.2326432+04:00","gmt_modified":"2026-04-23T06:48:46.2326432+04:00"},{"id":"03671e2406d9aa4281ec8988ebd11ea3","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"42-76","gmt_create":"2026-04-23T06:48:46.2331581+04:00","gmt_modified":"2026-04-23T06:48:46.2331581+04:00"},{"id":"4d53110f843225004c76883ddaf8a3db","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","line_range":"16-52","gmt_create":"2026-04-23T06:48:46.2331581+04:00","gmt_modified":"2026-04-23T06:48:46.2331581+04:00"},{"id":"6b4ecd2cef1f64d73ebb15271ad63dec","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","line_range":"30-158","gmt_create":"2026-04-23T06:48:46.2331581+04:00","gmt_modified":"2026-04-23T06:48:46.2331581+04:00"},{"id":"846c3fae1de48cd9c46b1ffde792c266","path":"plugins/snapshot/plugin.cpp","line_range":"675-780","gmt_create":"2026-04-23T06:48:46.2331581+04:00","gmt_modified":"2026-04-23T06:48:46.2331581+04:00"},{"id":"42fe843c72050e328e7b8c97676e68ee","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","line_range":"37-107","gmt_create":"2026-04-23T06:48:46.2336716+04:00","gmt_modified":"2026-04-23T06:48:46.2336716+04:00"},{"id":"9824dc418fd477d361e2cb113d2d8a6d","path":"plugins/snapshot/plugin.cpp","line_range":"885-987","gmt_create":"2026-04-23T06:48:46.2336716+04:00","gmt_modified":"2026-04-23T06:48:46.2336716+04:00"},{"id":"c70d834a6c61afda086e00d45a34530e","path":"plugins/snapshot/plugin.cpp","line_range":"789-883","gmt_create":"2026-04-23T06:48:46.2336716+04:00","gmt_modified":"2026-04-23T06:48:46.2336716+04:00"},{"id":"38ba886c685a78655cd83f13bc1ee1de","path":"plugins/snapshot/plugin.cpp","line_range":"1400-1484","gmt_create":"2026-04-23T06:48:46.2336716+04:00","gmt_modified":"2026-04-23T06:48:46.2336716+04:00"},{"id":"3f30e9195428c3c0d628347672216881","path":"plugins/snapshot/plugin.cpp","line_range":"1046-1288","gmt_create":"2026-04-23T06:48:46.2341844+04:00","gmt_modified":"2026-04-23T06:48:46.2341844+04:00"},{"id":"385e16c713d33cee472d76fd9309c8a7","path":"plugins/snapshot/plugin.cpp","line_range":"1902-2038","gmt_create":"2026-04-23T06:48:46.2341844+04:00","gmt_modified":"2026-04-23T06:48:46.2341844+04:00"},{"id":"a656f741ca3a98ea4e39650246c13e31","path":"plugins/snapshot/plugin.cpp","line_range":"1470-1599","gmt_create":"2026-04-23T06:48:46.2341844+04:00","gmt_modified":"2026-04-23T06:48:46.2341844+04:00"},{"id":"210282284c4a151d5bb31f5c22acb0e2","path":"plugins/snapshot/plugin.cpp","line_range":"2473-2510","gmt_create":"2026-04-23T06:48:46.2341844+04:00","gmt_modified":"2026-04-23T06:48:46.2341844+04:00"},{"id":"fce82559c856b77e5143284446449214","path":"documentation/snapshot-plugin.md","line_range":"247-273","gmt_create":"2026-04-23T06:48:46.2341844+04:00","gmt_modified":"2026-04-23T06:48:46.2341844+04:00"},{"id":"f9743c7d2ad207b1a79a0e95d75247cc","path":"plugins/snapshot/plugin.cpp","line_range":"1418-1436","gmt_create":"2026-04-23T06:48:46.2347002+04:00","gmt_modified":"2026-04-23T06:48:46.2347002+04:00"},{"id":"d73dcca02dff8f3073d543232ea8d398","path":"plugins/snapshot/plugin.cpp","line_range":"737-743","gmt_create":"2026-04-23T06:48:46.2347002+04:00","gmt_modified":"2026-04-23T06:48:46.2347002+04:00"},{"id":"71b4159a5d3213112920bd296d8e89bb","path":"plugins/snapshot/plugin.cpp","line_range":"1390-1484","gmt_create":"2026-04-23T06:48:46.2347002+04:00","gmt_modified":"2026-04-23T06:48:46.2347002+04:00"},{"id":"ec58f910f97a726df18f75c0c17baada","path":"plugins/snapshot/plugin.cpp","line_range":"1440-1449","gmt_create":"2026-04-23T06:48:46.2347002+04:00","gmt_modified":"2026-04-23T06:48:46.2347002+04:00"},{"id":"75b03c62708ffd28a4f9d687421e1c28","path":"plugins/witness/witness.cpp","line_range":"335-551","gmt_create":"2026-04-23T06:48:46.2352131+04:00","gmt_modified":"2026-04-23T06:48:46.2352131+04:00"},{"id":"a4baae31b894b18b4796bc14910ee131","path":"plugins/snapshot/plugin.cpp","line_range":"1326-1376","gmt_create":"2026-04-23T06:48:46.2352131+04:00","gmt_modified":"2026-04-23T06:48:46.2352131+04:00"},{"id":"0ae3da57453e773fb07f47dbd5886c6a","path":"plugins/snapshot/plugin.cpp","line_range":"1426-1435","gmt_create":"2026-04-23T06:48:46.2352131+04:00","gmt_modified":"2026-04-23T06:48:46.2352131+04:00"},{"id":"492bfc10ec7008ed8d3c0fcb9eb2986e","path":"plugins/snapshot/plugin.cpp","line_range":"745-750","gmt_create":"2026-04-23T06:48:46.2352131+04:00","gmt_modified":"2026-04-23T06:48:46.2352131+04:00"},{"id":"c6fe65da69747dabf7418f6ebfbc16a6","path":"plugins/snapshot/plugin.cpp","line_range":"697-700","gmt_create":"2026-04-23T06:48:46.2357279+04:00","gmt_modified":"2026-04-23T06:48:46.2357279+04:00"},{"id":"2e53433527d0fe2c5b8af01e4c75ab33","path":"plugins/snapshot/plugin.cpp","line_range":"2831-2845","gmt_create":"2026-04-23T06:48:46.2357279+04:00","gmt_modified":"2026-04-23T06:48:46.2357279+04:00"},{"id":"3d5e7d45a447644705a300e602712ab4","path":"plugins/snapshot/plugin.cpp","line_range":"1719-1748","gmt_create":"2026-04-23T06:48:46.2357279+04:00","gmt_modified":"2026-04-23T06:48:46.2357279+04:00"},{"id":"311030227d7a27b006fece17d9efd018","path":"plugins/snapshot/plugin.cpp","line_range":"1706-1748","gmt_create":"2026-04-23T06:48:46.2357279+04:00","gmt_modified":"2026-04-23T06:48:46.2357279+04:00"},{"id":"0fdcd022e550104e434876fa650f53c4","path":"plugins/chain/plugin.cpp","line_range":"490-560","gmt_create":"2026-04-23T06:48:46.2357279+04:00","gmt_modified":"2026-04-23T06:48:46.2357279+04:00"},{"id":"f0e049888c51f9cd8f614dd4d55fe05b","path":"plugins/snapshot/plugin.cpp","line_range":"2945-2959","gmt_create":"2026-04-23T06:48:46.2362415+04:00","gmt_modified":"2026-04-23T06:48:46.2362415+04:00"},{"id":"29998ee4937bbfcaafdb8749dfb3fdf3","path":"libraries/chain/database.cpp","line_range":"441-5201","gmt_create":"2026-04-23T06:48:46.2363271+04:00","gmt_modified":"2026-04-23T06:48:46.2363271+04:00"},{"id":"30f19521c0c40fc613bf93a90c654dc9","path":"plugins/chain/plugin.cpp","line_range":"542-559","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"6e3b8e0770e0fd14881374dd8b3c658e","path":"plugins/snapshot/plugin.cpp","line_range":"2976-3009","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"28efe21ebfbcc6e72bb32ca3977b1939","path":"plugins/snapshot/plugin.cpp","line_range":"2468-2570","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"12dbcde9e60b1141f215fb60b089b7c8","path":"plugins/snapshot/plugin.cpp","line_range":"735-740","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"b8f460ca6d8e0942ab1f7226cd2a1b21","path":"plugins/snapshot/plugin.cpp","line_range":"1814-1862","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"739243787c097dbb8797bb297c748868","path":"plugins/snapshot/plugin.cpp","line_range":"772-785","gmt_create":"2026-04-23T06:48:46.2368322+04:00","gmt_modified":"2026-04-23T06:48:46.2368322+04:00"},{"id":"8ae8252af5d5c484e0710b855ad18866","path":"plugins/snapshot/plugin.cpp","line_range":"165-176","gmt_create":"2026-04-23T06:48:46.2373778+04:00","gmt_modified":"2026-04-23T06:48:46.2373778+04:00"},{"id":"444b9950972fec08b3139f4d50cf0a6e","path":"plugins/snapshot/plugin.cpp","line_range":"1587-1596","gmt_create":"2026-04-23T06:48:46.2374417+04:00","gmt_modified":"2026-04-23T06:48:46.2374417+04:00"},{"id":"5abd9dec8f7100b36c876b18e58d4bb7","path":"plugins/snapshot/plugin.cpp","line_range":"1610-1620","gmt_create":"2026-04-23T06:48:46.2374417+04:00","gmt_modified":"2026-04-23T06:48:46.2374417+04:00"},{"id":"2d8f8aa2a2e0d2b778c984550ade3061","path":"plugins/snapshot/plugin.cpp","line_range":"1812-1877","gmt_create":"2026-04-23T06:48:46.2379457+04:00","gmt_modified":"2026-04-23T06:48:46.2379457+04:00"},{"id":"8a1470c12fc58346550796f023996d4f","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"24-34","gmt_create":"2026-04-23T06:48:46.2379457+04:00","gmt_modified":"2026-04-23T06:48:46.2379457+04:00"},{"id":"4ca7141219ec0e9f25ffdbdb9cda2fa1","path":"plugins/snapshot/plugin.cpp","line_range":"2598-2680","gmt_create":"2026-04-23T06:48:46.2384734+04:00","gmt_modified":"2026-04-23T06:48:46.2384734+04:00"},{"id":"9c4238b8e0cf99b348e22120eac41904","path":"plugins/chain/plugin.cpp","line_range":"364-432","gmt_create":"2026-04-23T06:48:46.2384734+04:00","gmt_modified":"2026-04-23T06:48:46.2384734+04:00"},{"id":"215a79715153cc7dbc2d358d6a91799d","path":"plugins/snapshot/CMakeLists.txt","line_range":"27-38","gmt_create":"2026-04-23T06:48:46.2384734+04:00","gmt_modified":"2026-04-23T06:48:46.2384734+04:00"},{"id":"bddad6a413d83352718b613e27b97469","path":"plugins/snapshot/plugin.cpp","line_range":"2294-2464","gmt_create":"2026-04-23T06:48:46.238993+04:00","gmt_modified":"2026-04-23T06:48:46.238993+04:00"},{"id":"cb7f8a8d2075a597d0647057d4371101","path":"plugins/snapshot/plugin.cpp","line_range":"1378-1464","gmt_create":"2026-04-23T06:48:46.238993+04:00","gmt_modified":"2026-04-23T06:48:46.238993+04:00"},{"id":"b790ddd3e717ed748c2e061559e92124","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"79-351","gmt_create":"2026-04-23T06:50:36.8463427+04:00","gmt_modified":"2026-04-23T06:50:36.8463427+04:00"},{"id":"a07ab3c4bae64fb9fbd9587bd3eaae39","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"45-79","gmt_create":"2026-04-23T06:50:36.8463427+04:00","gmt_modified":"2026-04-23T06:50:36.8463427+04:00"},{"id":"bd9136208fce359f28cad48005c18445","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"37-93","gmt_create":"2026-04-23T06:50:36.8463427+04:00","gmt_modified":"2026-04-23T06:50:36.8463427+04:00"},{"id":"8b8b5804e7fa05a13d3a7cf1869a318d","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"72-95","gmt_create":"2026-04-23T06:50:36.8463427+04:00","gmt_modified":"2026-04-23T06:50:36.8463427+04:00"},{"id":"ae1ad3620183690f60eeda5a30543601","path":"libraries/network/include/graphene/network/message.hpp","line_range":"42-106","gmt_create":"2026-04-23T06:50:36.8468465+04:00","gmt_modified":"2026-04-23T06:50:36.8468465+04:00"},{"id":"5f576e16df1d59d294a1af2f2658b7ba","path":"libraries/network/include/graphene/network/node.hpp","line_range":"190-304","gmt_create":"2026-04-23T06:50:36.8468465+04:00","gmt_modified":"2026-04-23T06:50:36.8468465+04:00"},{"id":"31c07b5a29db4c1cbb24f79829d347aa","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"104-134","gmt_create":"2026-04-23T06:50:36.847893+04:00","gmt_modified":"2026-04-23T06:50:36.847893+04:00"},{"id":"3654987deb8e6274eefab9ca908412c0","path":"libraries/chain/database.cpp","line_range":"1215-1246","gmt_create":"2026-04-23T06:50:36.847893+04:00","gmt_modified":"2026-04-23T06:50:36.847893+04:00"},{"id":"017fafdbdc8bb6416146dfb712f04d60","path":"libraries/chain/fork_database.cpp","line_range":"34-46","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"7a699ba65a3b0ef1eb697c14a0dbead6","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"33-45","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"52af1c2eebb2a6ca81e46aa9efc36007","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"1-383","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"31a472d3c3593f1079fe3844dbf8e5ea","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"1-85","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"e37ad396926e491f9e2cb7e97ebb983b","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"1-99","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"41c428afa5cdf049e5722a8af0a07120","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"1-573","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"ca47b4e2578878f62204de1202dfcee9","path":"libraries/network/include/graphene/network/node.hpp","line_range":"1-355","gmt_create":"2026-04-23T06:50:36.8484055+04:00","gmt_modified":"2026-04-23T06:50:36.8484055+04:00"},{"id":"65f079a0a8c1ddc294e55e30a905620b","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"1-141","gmt_create":"2026-04-23T06:50:36.8489256+04:00","gmt_modified":"2026-04-23T06:50:36.8489256+04:00"},{"id":"f64ddae8befa97072e025e25b465e7b9","path":"libraries/network/include/graphene/network/message.hpp","line_range":"1-114","gmt_create":"2026-04-23T06:50:36.8489256+04:00","gmt_modified":"2026-04-23T06:50:36.8489256+04:00"},{"id":"ae7c55f38aae0b3478e12cbcf2b51454","path":"libraries/chain/database.cpp","line_range":"1-6389","gmt_create":"2026-04-23T06:50:36.8489256+04:00","gmt_modified":"2026-04-23T06:50:36.8489256+04:00"},{"id":"654515d81715576dcb9f859a9aada0e9","path":"libraries/chain/fork_database.cpp","line_range":"1-271","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"48a79d6fc809620cef020aebdc89228c","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"1-49","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"5e80305e7a0dd4e813302d520287970c","path":"libraries/network/peer_connection.cpp","line_range":"68-162","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"a29acb8824d619aed98f1d17496cc735","path":"libraries/network/message_oriented_connection.cpp","line_range":"128-140","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"55b70b2d7f669af727f94be4a67ab19f","path":"libraries/network/stcp_socket.cpp","line_range":"49-72","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"cd7fa56036ec7bfc753fb109e2481434","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"233-306","gmt_create":"2026-04-23T06:50:36.8494484+04:00","gmt_modified":"2026-04-23T06:50:36.8494484+04:00"},{"id":"4398c3ae2cfabc0607c0ef43245e9ed0","path":"libraries/network/node.cpp","line_range":"424-799","gmt_create":"2026-04-23T06:50:36.8499738+04:00","gmt_modified":"2026-04-23T06:50:36.8499738+04:00"},{"id":"e485b1e17d34c5b6a8a52a62ed1e66f1","path":"libraries/network/peer_database.cpp","line_range":"100-174","gmt_create":"2026-04-23T06:50:36.8499738+04:00","gmt_modified":"2026-04-23T06:50:36.8499738+04:00"},{"id":"5361decb4da66a8be18f3e2460c4744a","path":"libraries/network/peer_connection.cpp","line_range":"208-242","gmt_create":"2026-04-23T06:50:36.8499738+04:00","gmt_modified":"2026-04-23T06:50:36.8499738+04:00"},{"id":"c25323732949b90908639a501eb595d3","path":"libraries/network/message_oriented_connection.cpp","line_range":"135-140","gmt_create":"2026-04-23T06:50:36.8499738+04:00","gmt_modified":"2026-04-23T06:50:36.8499738+04:00"},{"id":"83977126829486b69fd3680d1a18d5b8","path":"libraries/network/stcp_socket.cpp","line_range":"69-72","gmt_create":"2026-04-23T06:50:36.8504901+04:00","gmt_modified":"2026-04-23T06:50:36.8504901+04:00"},{"id":"cd558ad15f0e6727fba1add71cac3e6f","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"233-272","gmt_create":"2026-04-23T06:50:36.8504901+04:00","gmt_modified":"2026-04-23T06:50:36.8504901+04:00"},{"id":"17725c0e4268344a57e37a4181003dcd","path":"libraries/network/node.cpp","line_range":"662-718","gmt_create":"2026-04-23T06:50:36.8504901+04:00","gmt_modified":"2026-04-23T06:50:36.8504901+04:00"},{"id":"19888e3e680c4c22af512bc7fece3cb4","path":"libraries/network/peer_connection.cpp","line_range":"41-66","gmt_create":"2026-04-23T06:50:36.8504901+04:00","gmt_modified":"2026-04-23T06:50:36.8504901+04:00"},{"id":"f7cab905bd76aaebc62185660e82dae8","path":"libraries/network/peer_connection.cpp","line_range":"244-338","gmt_create":"2026-04-23T06:50:36.8510268+04:00","gmt_modified":"2026-04-23T06:50:36.8510268+04:00"},{"id":"3c8030f286489dad4c619d038a966638","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"240-278","gmt_create":"2026-04-23T06:50:36.8510268+04:00","gmt_modified":"2026-04-23T06:50:36.8510268+04:00"},{"id":"73ca44009706d11b1210c93a5ded6f30","path":"libraries/network/message_oriented_connection.cpp","line_range":"237-283","gmt_create":"2026-04-23T06:50:36.8510268+04:00","gmt_modified":"2026-04-23T06:50:36.8510268+04:00"},{"id":"66a467bd88b7277e2c4bb4cb7312f48f","path":"libraries/network/message_oriented_connection.cpp","line_range":"148-235","gmt_create":"2026-04-23T06:50:36.8510268+04:00","gmt_modified":"2026-04-23T06:50:36.8510268+04:00"},{"id":"a2d760acb3b4737ac29dd99261de2de6","path":"libraries/network/stcp_socket.cpp","line_range":"132-177","gmt_create":"2026-04-23T06:50:36.8515397+04:00","gmt_modified":"2026-04-23T06:50:36.8515397+04:00"},{"id":"bf188abd0edd7c343537c5327855ecbe","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"82-106","gmt_create":"2026-04-23T06:50:36.8525696+04:00","gmt_modified":"2026-04-23T06:50:36.8525696+04:00"},{"id":"fc0674b52c4710c99699f8d656856fd3","path":"libraries/network/peer_connection.cpp","line_range":"356-369","gmt_create":"2026-04-23T06:50:36.8525696+04:00","gmt_modified":"2026-04-23T06:50:36.8525696+04:00"},{"id":"d4955755779cc40ec116df2dc5af08d4","path":"libraries/network/node.cpp","line_range":"718-740","gmt_create":"2026-04-23T06:50:36.8530988+04:00","gmt_modified":"2026-04-23T06:50:36.8530988+04:00"},{"id":"4e5740097a51781620c6fa978577b87b","path":"libraries/network/peer_connection.cpp","line_range":"169-242","gmt_create":"2026-04-23T06:50:36.8530988+04:00","gmt_modified":"2026-04-23T06:50:36.8530988+04:00"},{"id":"599a70fa63a5743f5c1137d5797ef215","path":"libraries/network/peer_connection.cpp","line_range":"310-338","gmt_create":"2026-04-23T06:50:36.8530988+04:00","gmt_modified":"2026-04-23T06:50:36.8530988+04:00"},{"id":"af26a48b00e9adab94afc7842437fe4a","path":"libraries/network/peer_connection.cpp","line_range":"255-308","gmt_create":"2026-04-23T06:50:36.8530988+04:00","gmt_modified":"2026-04-23T06:50:36.8530988+04:00"},{"id":"c65e54c2253e6aa01f651ce5d20e30fe","path":"libraries/network/include/graphene/network/config.hpp","line_range":"58-58","gmt_create":"2026-04-23T06:50:36.8530988+04:00","gmt_modified":"2026-04-23T06:50:36.8530988+04:00"},{"id":"db6b74db4fa6d71a4f6cda8314e0a9c8","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"175-279","gmt_create":"2026-04-23T06:50:36.8536074+04:00","gmt_modified":"2026-04-23T06:50:36.8536074+04:00"},{"id":"b10f496bac85711da4cffcd4b18cd456","path":"libraries/network/peer_connection.cpp","line_range":"428-480","gmt_create":"2026-04-23T06:50:36.8536074+04:00","gmt_modified":"2026-04-23T06:50:36.8536074+04:00"},{"id":"abb7010b1a4127c6eb74e70b8b8c1c8a","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"47-71","gmt_create":"2026-04-23T06:50:36.8541198+04:00","gmt_modified":"2026-04-23T06:50:36.8541198+04:00"},{"id":"afac2a42df17577ba720e7f9a78558b0","path":"libraries/network/node.cpp","line_range":"518-526","gmt_create":"2026-04-23T06:50:36.8541983+04:00","gmt_modified":"2026-04-23T06:50:36.8541983+04:00"},{"id":"8c6950a2fa040ec2bdb48c5c535e6290","path":"libraries/network/node.cpp","line_range":"3598-3626","gmt_create":"2026-04-23T06:50:36.8541983+04:00","gmt_modified":"2026-04-23T06:50:36.8541983+04:00"},{"id":"9e28d240675906ef2e41016843e7e078","path":"plugins/p2p/p2p_plugin.cpp","line_range":"172-182","gmt_create":"2026-04-23T06:50:36.8547575+04:00","gmt_modified":"2026-04-23T06:50:36.8547575+04:00"},{"id":"b8131417d535236b70881242c8493825","path":"libraries/network/peer_connection.cpp","line_range":"340-354","gmt_create":"2026-04-23T06:50:36.85535+04:00","gmt_modified":"2026-04-23T06:50:36.85535+04:00"},{"id":"d8b3e996bfeacf634c11f3ef9c14b517","path":"libraries/network/peer_connection.cpp","line_range":"371-399","gmt_create":"2026-04-23T06:50:36.85535+04:00","gmt_modified":"2026-04-23T06:50:36.85535+04:00"},{"id":"924b5999e72f1f50661885d27aa679bf","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"26-45","gmt_create":"2026-04-23T06:50:36.8572234+04:00","gmt_modified":"2026-04-23T06:50:36.8572234+04:00"},{"id":"9061b648f5c7a6fa04e5cdad74ea8e0c","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"26-28","gmt_create":"2026-04-23T06:50:36.8572234+04:00","gmt_modified":"2026-04-23T06:50:36.8572234+04:00"},{"id":"d047c2a99e186afd4cbe5d3b58a081ce","path":"libraries/network/include/graphene/network/stcp_socket.hpp","line_range":"26-28","gmt_create":"2026-04-23T06:50:36.8572234+04:00","gmt_modified":"2026-04-23T06:50:36.8572234+04:00"},{"id":"cd3f7620124771b158733177b69ca004","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"26-35","gmt_create":"2026-04-23T06:50:36.8572234+04:00","gmt_modified":"2026-04-23T06:50:36.8572234+04:00"},{"id":"641e478753e03d4995662e0f71726f6e","path":"libraries/network/include/graphene/network/node.hpp","line_range":"26-31","gmt_create":"2026-04-23T06:50:36.8572234+04:00","gmt_modified":"2026-04-23T06:50:36.8572234+04:00"},{"id":"0f02b5feb29747f31bd81ec24757a03c","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"26-35","gmt_create":"2026-04-23T06:50:36.8578236+04:00","gmt_modified":"2026-04-23T06:50:36.8578236+04:00"},{"id":"2bd5a533bf647831fd92ff4a1e0cbb9a","path":"libraries/network/include/graphene/network/message.hpp","line_range":"26-31","gmt_create":"2026-04-23T06:50:36.8578236+04:00","gmt_modified":"2026-04-23T06:50:36.8578236+04:00"},{"id":"563df4f6b989068ffaf64cd348c73303","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"285-306","gmt_create":"2026-04-23T06:50:36.8584389+04:00","gmt_modified":"2026-04-23T06:50:36.8584389+04:00"},{"id":"1627c08f8d77e6bd16ff55f3c31a7214","path":"libraries/network/include/graphene/network/config.hpp","line_range":"48-50","gmt_create":"2026-04-23T06:50:36.8584389+04:00","gmt_modified":"2026-04-23T06:50:36.8584389+04:00"},{"id":"97c58147fee277e29c7fcfd2e1fad3d7","path":"libraries/network/peer_connection.cpp","line_range":"314-325","gmt_create":"2026-04-23T06:50:36.8584389+04:00","gmt_modified":"2026-04-23T06:50:36.8584389+04:00"},{"id":"912dd19fed244fc2d5d8717d9d71351d","path":"libraries/network/node.cpp","line_range":"3448-3470","gmt_create":"2026-04-23T06:50:36.8589424+04:00","gmt_modified":"2026-04-23T06:50:36.8589424+04:00"},{"id":"8ca4e34ad148a456f53073ddc65d0d0b","path":"libraries/network/include/graphene/network/config.hpp","line_range":"26-106","gmt_create":"2026-04-23T06:50:36.8590842+04:00","gmt_modified":"2026-04-23T06:50:36.8590842+04:00"},{"id":"2dccc9888fbe3d606e3c653137d8edbc","path":"libraries/chain/database.cpp","line_range":"1239-1241","gmt_create":"2026-04-23T06:50:36.8590842+04:00","gmt_modified":"2026-04-23T06:50:36.8590842+04:00"},{"id":"9db09bc4b81abc778a2506dc78451a5f","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-642","gmt_create":"2026-04-23T06:51:53.1085644+04:00","gmt_modified":"2026-04-23T06:51:53.1085644+04:00"},{"id":"38a56d06a16ce1ef149caadef5339e6c","path":"libraries/chain/include/graphene/chain/block_log.hpp","line_range":"1-75","gmt_create":"2026-04-23T06:51:53.1090901+04:00","gmt_modified":"2026-04-23T06:51:53.1090901+04:00"},{"id":"3bdd5ce714e20d28cf824ab11101de66","path":"libraries/chain/block_log.cpp","line_range":"1-302","gmt_create":"2026-04-23T06:51:53.1090901+04:00","gmt_modified":"2026-04-23T06:51:53.1090901+04:00"},{"id":"4d593097c4ba86d8ca3e25a81f16c555","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"1-76","gmt_create":"2026-04-23T06:51:53.1090901+04:00","gmt_modified":"2026-04-23T06:51:53.1090901+04:00"},{"id":"4ed327655b6918bf25321f12456ca6fe","path":"libraries/chain/dlt_block_log.cpp","line_range":"1-414","gmt_create":"2026-04-23T06:51:53.1090901+04:00","gmt_modified":"2026-04-23T06:51:53.1090901+04:00"},{"id":"d28dbbaa28da9765e4f285b5920dbcfd","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"1-138","gmt_create":"2026-04-23T06:51:53.1090901+04:00","gmt_modified":"2026-04-23T06:51:53.1090901+04:00"},{"id":"00037cec4c56edf1610ced428572bb7b","path":"libraries/chain/include/graphene/chain/db_with.hpp","line_range":"1-154","gmt_create":"2026-04-23T06:51:53.1096159+04:00","gmt_modified":"2026-04-23T06:51:53.1096159+04:00"},{"id":"8466f547c850a3f78b548ec3dfdfdf69","path":"plugins/witness/witness.cpp","line_range":"449-467","gmt_create":"2026-04-23T06:51:53.1096159+04:00","gmt_modified":"2026-04-23T06:51:53.1096159+04:00"},{"id":"3c62831aa433234fc0f7306c1cf418d6","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"111-118","gmt_create":"2026-04-23T06:51:53.1096159+04:00","gmt_modified":"2026-04-23T06:51:53.1096159+04:00"},{"id":"bb1e3f10774a7b833f7750a99ab49904","path":"thirdparty/chainbase/src/chainbase.cpp","line_range":"225-279","gmt_create":"2026-04-23T06:51:53.1096159+04:00","gmt_modified":"2026-04-23T06:51:53.1096159+04:00"},{"id":"46ade8bd6f06d3d9a2c5022fd4ec7aaf","path":"thirdparty/chainbase/include/chainbase/chainbase.hpp","line_range":"1200-1260","gmt_create":"2026-04-23T06:51:53.1096159+04:00","gmt_modified":"2026-04-23T06:51:53.1096159+04:00"},{"id":"aaa79e38ddfcec40e12ba298218d83a8","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"27-48","gmt_create":"2026-04-23T06:51:53.1101347+04:00","gmt_modified":"2026-04-23T06:51:53.1101347+04:00"},{"id":"5079f2c8e0fd2e2d3f902aa4eeb20eff","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"61-115","gmt_create":"2026-04-23T06:51:53.1116891+04:00","gmt_modified":"2026-04-23T06:51:53.1116891+04:00"},{"id":"a3f311781ebc595d7e91829970674d05","path":"libraries/chain/database.cpp","line_range":"281-324","gmt_create":"2026-04-23T06:51:53.1122032+04:00","gmt_modified":"2026-04-23T06:51:53.1122032+04:00"},{"id":"554e05f2069045609b95ba69f9e954bb","path":"libraries/chain/include/graphene/chain/block_log.hpp","line_range":"38-75","gmt_create":"2026-04-23T06:51:53.1122032+04:00","gmt_modified":"2026-04-23T06:51:53.1122032+04:00"},{"id":"56047023f5259cd1b3b53cc9276548f4","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"35-72","gmt_create":"2026-04-23T06:51:53.1122032+04:00","gmt_modified":"2026-04-23T06:51:53.1122032+04:00"},{"id":"7d5a6b649ef8d177496d2e0b4f7d2ad2","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"53-138","gmt_create":"2026-04-23T06:51:53.1122032+04:00","gmt_modified":"2026-04-23T06:51:53.1122032+04:00"},{"id":"efc19a66e9ef85b6ecd6479947124d6e","path":"libraries/chain/database.cpp","line_range":"929-984","gmt_create":"2026-04-23T06:51:53.1132523+04:00","gmt_modified":"2026-04-23T06:51:53.1132523+04:00"},{"id":"90da84eb4c2939b17a99888253d3cfda","path":"libraries/chain/include/graphene/chain/db_with.hpp","line_range":"33-100","gmt_create":"2026-04-23T06:51:53.1137662+04:00","gmt_modified":"2026-04-23T06:51:53.1137662+04:00"},{"id":"2239009b61286c4b8bcb051f54239d4c","path":"libraries/chain/database.cpp","line_range":"94-184","gmt_create":"2026-04-23T06:51:53.1142768+04:00","gmt_modified":"2026-04-23T06:51:53.1142768+04:00"},{"id":"e21f5adaef81169224a1ff756245f3b9","path":"libraries/chain/include/graphene/chain/database_exceptions.hpp","line_range":"83","gmt_create":"2026-04-23T06:51:53.1148907+04:00","gmt_modified":"2026-04-23T06:51:53.1148907+04:00"},{"id":"f61b06482f8c2019209eb97059fbdc05","path":"libraries/chain/database.cpp","line_range":"330-410","gmt_create":"2026-04-23T06:51:53.1148907+04:00","gmt_modified":"2026-04-23T06:51:53.1148907+04:00"},{"id":"5eec20a2909cd9b68584bd0a13860691","path":"libraries/chain/database.cpp","line_range":"134-184","gmt_create":"2026-04-23T06:51:53.1148907+04:00","gmt_modified":"2026-04-23T06:51:53.1148907+04:00"},{"id":"989129dd2c2f1d2c3d7097f01a59b580","path":"libraries/chain/database.cpp","line_range":"503-519","gmt_create":"2026-04-23T06:51:53.1153964+04:00","gmt_modified":"2026-04-23T06:51:53.1153964+04:00"},{"id":"19ede27e5e317fb0f0663e332bff8e41","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"61-68","gmt_create":"2026-04-23T06:51:53.1159235+04:00","gmt_modified":"2026-04-23T06:51:53.1159235+04:00"},{"id":"93890fe947bd608f34f438e179d3571b","path":"libraries/chain/database.cpp","line_range":"704-752","gmt_create":"2026-04-23T06:51:53.1159235+04:00","gmt_modified":"2026-04-23T06:51:53.1159235+04:00"},{"id":"c4d9e3bfee733cd59a96b18715e26fb7","path":"libraries/chain/database.cpp","line_range":"3986-4039","gmt_create":"2026-04-23T06:51:53.1164465+04:00","gmt_modified":"2026-04-23T06:51:53.1164465+04:00"},{"id":"16943251fc40e2fea0bdc7df21d26d6c","path":"libraries/chain/database.cpp","line_range":"4144-4175","gmt_create":"2026-04-23T06:51:53.1169674+04:00","gmt_modified":"2026-04-23T06:51:53.1169674+04:00"},{"id":"88b837eddc75e3df4a5dfb9d74a73902","path":"libraries/chain/database.cpp","line_range":"4384-4424","gmt_create":"2026-04-23T06:51:53.1169674+04:00","gmt_modified":"2026-04-23T06:51:53.1169674+04:00"},{"id":"635ae3a3b6d0c742a9aa8911ac0931a6","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"70-73","gmt_create":"2026-04-23T06:51:53.1169674+04:00","gmt_modified":"2026-04-23T06:51:53.1169674+04:00"},{"id":"82c3275180f9bd52205d6daf10f0cec5","path":"libraries/chain/database.cpp","line_range":"292-292","gmt_create":"2026-04-23T06:51:53.1169674+04:00","gmt_modified":"2026-04-23T06:51:53.1169674+04:00"},{"id":"476e8657e2d378c04e3da9611464e3d9","path":"libraries/chain/database.cpp","line_range":"4460-4490","gmt_create":"2026-04-23T06:51:53.1174806+04:00","gmt_modified":"2026-04-23T06:51:53.1174806+04:00"},{"id":"73c75f43d010444cfbe1881aea68ac48","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"75-77","gmt_create":"2026-04-23T06:51:53.1174806+04:00","gmt_modified":"2026-04-23T06:51:53.1174806+04:00"},{"id":"777103f978c926dcb38467a4c4ef2784","path":"libraries/chain/database.cpp","line_range":"1147-1202","gmt_create":"2026-04-23T06:51:53.1174806+04:00","gmt_modified":"2026-04-23T06:51:53.1174806+04:00"},{"id":"d8d8a06f04792c8b0df2d56e01dc6a30","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"79-96","gmt_create":"2026-04-23T06:51:53.1180076+04:00","gmt_modified":"2026-04-23T06:51:53.1180076+04:00"},{"id":"a2fca797b3404d0b8784acaa98037b1c","path":"libraries/chain/database.cpp","line_range":"340-350","gmt_create":"2026-04-23T06:51:53.1180076+04:00","gmt_modified":"2026-04-23T06:51:53.1180076+04:00"},{"id":"8e44126f8dd872a81f8f38af9407591a","path":"libraries/chain/database.cpp","line_range":"4346-4366","gmt_create":"2026-04-23T06:51:53.1180076+04:00","gmt_modified":"2026-04-23T06:51:53.1180076+04:00"},{"id":"3fe5a707dc8f738fe4cdf90e202a1c00","path":"libraries/chain/database.cpp","line_range":"948-970","gmt_create":"2026-04-23T06:51:53.1180076+04:00","gmt_modified":"2026-04-23T06:51:53.1180076+04:00"},{"id":"17c5a479c1681b9fa8a9c5b8710b3871","path":"libraries/chain/database.cpp","line_range":"3652-3711","gmt_create":"2026-04-23T06:51:53.1180076+04:00","gmt_modified":"2026-04-23T06:51:53.1180076+04:00"},{"id":"8df33f74931e748bdb279fb2a7413adc","path":"libraries/chain/database.cpp","line_range":"639-673","gmt_create":"2026-04-23T06:51:53.1185295+04:00","gmt_modified":"2026-04-23T06:51:53.1185295+04:00"},{"id":"b24701f580d2bf25220eb3d99d592d19","path":"libraries/chain/database.cpp","line_range":"562-605","gmt_create":"2026-04-23T06:51:53.1185295+04:00","gmt_modified":"2026-04-23T06:51:53.1185295+04:00"},{"id":"5c7525643ec954836de9eb71b2ce4822","path":"libraries/chain/database.cpp","line_range":"412-422","gmt_create":"2026-04-23T06:51:53.1185295+04:00","gmt_modified":"2026-04-23T06:51:53.1185295+04:00"},{"id":"ae8706017fbc3b8f0e9a7419f707fe07","path":"libraries/chain/database.cpp","line_range":"454-482","gmt_create":"2026-04-23T06:51:53.1185295+04:00","gmt_modified":"2026-04-23T06:51:53.1185295+04:00"},{"id":"29a0badf88afa6e203d71a2431de6c46","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"148-164","gmt_create":"2026-04-23T06:51:53.1185295+04:00","gmt_modified":"2026-04-23T06:51:53.1185295+04:00"},{"id":"1eb3056b5625ce57c7d16199bad4ca50","path":"libraries/chain/database.cpp","line_range":"546-556","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"318c7e8695c6742e40f80ad9a0082f49","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"631-632","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"e8c218094b7d5fe11a9456033ee18e06","path":"libraries/chain/database.cpp","line_range":"1106-1145","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"d44399d7c886bd0af53610c96af0c6d3","path":"libraries/chain/database.cpp","line_range":"1460-1470","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"09be458eb6253d2844adf22b7dcb84ba","path":"libraries/chain/database.cpp","line_range":"1295-1377","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"3ffb1aa7b6196bfe3957274bb7011011","path":"libraries/chain/database.cpp","line_range":"3444-3499","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"43938d9f7207a68c93047be50bd9214d","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"218-224","gmt_create":"2026-04-23T06:51:53.1195335+04:00","gmt_modified":"2026-04-23T06:51:53.1195335+04:00"},{"id":"19489c95f9be1c0698eb501b69b25848","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"284-307","gmt_create":"2026-04-23T06:51:53.1211735+04:00","gmt_modified":"2026-04-23T06:51:53.1211735+04:00"},{"id":"4dcf2a8108140e2a4f9394a44a2f7ffa","path":"libraries/chain/database.cpp","line_range":"1158-1198","gmt_create":"2026-04-23T06:51:53.1211735+04:00","gmt_modified":"2026-04-23T06:51:53.1211735+04:00"},{"id":"15e142a5cb99c56ae0b43217664f73ee","path":"libraries/chain/database.cpp","line_range":"3652-3655","gmt_create":"2026-04-23T06:51:53.1211735+04:00","gmt_modified":"2026-04-23T06:51:53.1211735+04:00"},{"id":"4f85c4df0bd388bf50a20515ab2a2c2e","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"93-141","gmt_create":"2026-04-23T06:51:53.1211735+04:00","gmt_modified":"2026-04-23T06:51:53.1211735+04:00"},{"id":"ce696f64e8f5dae1824847fbd5dd7337","path":"libraries/chain/database.cpp","line_range":"458-584","gmt_create":"2026-04-23T06:51:53.122178+04:00","gmt_modified":"2026-04-23T06:51:53.122178+04:00"},{"id":"6deaa37979bf1b81c17e15e58b84a2f9","path":"libraries/chain/database.cpp","line_range":"4334-4463","gmt_create":"2026-04-23T06:51:53.122178+04:00","gmt_modified":"2026-04-23T06:51:53.122178+04:00"},{"id":"f5a835a21e81cc09d6d98cf5622e74cc","path":"libraries/chain/database.cpp","line_range":"2047-2144","gmt_create":"2026-04-23T06:51:53.122178+04:00","gmt_modified":"2026-04-23T06:51:53.122178+04:00"},{"id":"3a840e98c5fcf50c855208adc97b9f2e","path":"libraries/chain/database.cpp","line_range":"4378-4416","gmt_create":"2026-04-23T06:51:53.122178+04:00","gmt_modified":"2026-04-23T06:51:53.122178+04:00"},{"id":"b3a7b4a8b89b5bad3984c5e327e81b02","path":"libraries/chain/database.cpp","line_range":"2125-2142","gmt_create":"2026-04-23T06:51:53.1231795+04:00","gmt_modified":"2026-04-23T06:51:53.1231795+04:00"},{"id":"6ff6a282d68d9e062ff275589155562f","path":"libraries/chain/database.cpp","line_range":"4220-4230","gmt_create":"2026-04-23T06:51:53.1231795+04:00","gmt_modified":"2026-04-23T06:51:53.1231795+04:00"},{"id":"83a8eeb5dc84001310e511c73a0ba062","path":"libraries/chain/database.cpp","line_range":"4517-4620","gmt_create":"2026-04-23T06:51:53.1231795+04:00","gmt_modified":"2026-04-23T06:51:53.1231795+04:00"},{"id":"7a58e14fb571d992c6c872fd9006c534","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-10","gmt_create":"2026-04-23T06:51:53.1241775+04:00","gmt_modified":"2026-04-23T06:51:53.1241775+04:00"},{"id":"2aeed6e39aa3215de09f9294df95620f","path":"libraries/chain/database.cpp","line_range":"1-30","gmt_create":"2026-04-23T06:51:53.1241775+04:00","gmt_modified":"2026-04-23T06:51:53.1241775+04:00"},{"id":"b981ea0333bb902d1127f5b1e1911503","path":"libraries/chain/database.cpp","line_range":"800-830","gmt_create":"2026-04-23T06:51:53.1252134+04:00","gmt_modified":"2026-04-23T06:51:53.1252134+04:00"},{"id":"8e13b7edb80b9f2e0685d26dea7bb043","path":"libraries/chain/database.cpp","line_range":"270-279","gmt_create":"2026-04-23T06:51:53.1252134+04:00","gmt_modified":"2026-04-23T06:51:53.1252134+04:00"},{"id":"58f395968bb8027af7c74e913908a12d","path":"libraries/chain/database.cpp","line_range":"492-501","gmt_create":"2026-04-23T06:51:53.1252134+04:00","gmt_modified":"2026-04-23T06:51:53.1252134+04:00"},{"id":"4b8c8943a4768ebf03f79c2d2c3e4cb8","path":"libraries/chain/include/graphene/chain/database_exceptions.hpp","line_range":"86-86","gmt_create":"2026-04-23T07:16:50.6477517+04:00","gmt_modified":"2026-04-23T07:16:50.6477517+04:00"},{"id":"e462a61bcb0546ac7e51d4d77b5e78d7","path":"libraries/chain/database.cpp","line_range":"560-665","gmt_create":"2026-04-23T07:16:50.6529664+04:00","gmt_modified":"2026-04-23T07:16:50.6529664+04:00"},{"id":"e8266f9aae45a25637eeae664143da3a","path":"plugins/p2p/p2p_plugin.cpp","line_range":"170-181","gmt_create":"2026-04-23T07:16:50.6529664+04:00","gmt_modified":"2026-04-23T07:16:50.6529664+04:00"},{"id":"10527b3f085bc23cb5a2ced3d43e605e","path":"libraries/network/node.cpp","line_range":"3616-3622","gmt_create":"2026-04-23T07:16:50.6529664+04:00","gmt_modified":"2026-04-23T07:16:50.6529664+04:00"},{"id":"a5a691e7d10617d28a320dc54d620ac0","path":"libraries/network/node.cpp","line_range":"79-81","gmt_create":"2026-04-23T07:16:50.6566544+04:00","gmt_modified":"2026-04-23T07:16:50.6566544+04:00"},{"id":"131eb608030b3a04b016429fdb3d416a","path":"libraries/network/node.cpp","line_range":"3278-3281","gmt_create":"2026-04-23T07:16:50.6566544+04:00","gmt_modified":"2026-04-23T07:16:50.6566544+04:00"},{"id":"5244d6587cbf807d34a2848110b1b8ff","path":"libraries/network/node.cpp","line_range":"3633-3636","gmt_create":"2026-04-23T07:16:50.6566544+04:00","gmt_modified":"2026-04-23T07:16:50.6566544+04:00"},{"id":"c8da7c90dc7ff2af502eb264eb4da4f8","path":"libraries/network/node.cpp","line_range":"3653-3656","gmt_create":"2026-04-23T07:16:50.6566544+04:00","gmt_modified":"2026-04-23T07:16:50.6566544+04:00"},{"id":"f2b6431fb26cd401e272c27017c72bf3","path":"libraries/network/node.cpp","line_range":"3671-3674","gmt_create":"2026-04-23T07:16:50.6571713+04:00","gmt_modified":"2026-04-23T07:16:50.6571713+04:00"},{"id":"2d7840ca18eae0c0962912ac837b7c1a","path":"libraries/chain/fork_database.cpp","line_range":"81-88","gmt_create":"2026-04-23T07:21:32.2328039+04:00","gmt_modified":"2026-04-23T07:21:32.2328039+04:00"},{"id":"1386bfdeb86a81676e71a6f5e130486d","path":"libraries/network/include/graphene/network/node.hpp","line_range":"180-355","gmt_create":"2026-04-23T08:46:18.3270354+04:00","gmt_modified":"2026-04-23T08:46:18.3270354+04:00"},{"id":"47828ff62fb0611c687e0ec3929a803f","path":"libraries/network/node.cpp","line_range":"869-905","gmt_create":"2026-04-23T08:46:18.3275382+04:00","gmt_modified":"2026-04-23T08:46:18.3275382+04:00"},{"id":"eca8efe2e83df0e4e7f0bb8711e2d3d4","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"79-354","gmt_create":"2026-04-23T08:46:18.3275958+04:00","gmt_modified":"2026-04-23T08:46:18.3275958+04:00"},{"id":"2b2ad90d8dded590d660844927f1808a","path":"libraries/network/include/graphene/network/message.hpp","line_range":"42-114","gmt_create":"2026-04-23T08:46:18.3275958+04:00","gmt_modified":"2026-04-23T08:46:18.3275958+04:00"},{"id":"5fd327370da6f7d0909df81ca8173374","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"111-120","gmt_create":"2026-04-23T08:46:18.3280989+04:00","gmt_modified":"2026-04-23T08:46:18.3280989+04:00"},{"id":"db7f0e20d20c729cfc5585f1e0485172","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"110-123","gmt_create":"2026-04-23T08:46:18.3280989+04:00","gmt_modified":"2026-04-23T08:46:18.3280989+04:00"},{"id":"5505ad3214e042feeb98d8ca38cc0e5b","path":"libraries/network/node.cpp","line_range":"952-1047","gmt_create":"2026-04-23T08:46:18.3302827+04:00","gmt_modified":"2026-04-23T08:46:18.3302827+04:00"},{"id":"1d3b2e6e4eb9c11a9e00355cc006c61e","path":"libraries/network/node.cpp","line_range":"1623-1654","gmt_create":"2026-04-23T08:46:18.3302827+04:00","gmt_modified":"2026-04-23T08:46:18.3302827+04:00"},{"id":"0cece6494088e7b65bd0e3a0aff77e9e","path":"libraries/network/node.cpp","line_range":"2282-2350","gmt_create":"2026-04-23T08:46:18.3302827+04:00","gmt_modified":"2026-04-23T08:46:18.3302827+04:00"},{"id":"79e77d6e9212485bc9d0fdf1d6410ed4","path":"libraries/network/node.cpp","line_range":"869-931","gmt_create":"2026-04-23T08:46:18.3302827+04:00","gmt_modified":"2026-04-23T08:46:18.3302827+04:00"},{"id":"3d1618efce493d2298f79ed0f0166418","path":"libraries/network/node.cpp","line_range":"2029-2230","gmt_create":"2026-04-23T08:46:18.3312857+04:00","gmt_modified":"2026-04-23T08:46:18.3312857+04:00"},{"id":"3ef7242e306c1972f455c516ad037647","path":"libraries/network/node.cpp","line_range":"2232-2250","gmt_create":"2026-04-23T08:46:18.3312857+04:00","gmt_modified":"2026-04-23T08:46:18.3312857+04:00"},{"id":"406f9521c4ead23ecb46eb387ea2ca80","path":"libraries/network/node.cpp","line_range":"1400-1621","gmt_create":"2026-04-23T08:46:18.3322856+04:00","gmt_modified":"2026-04-23T08:46:18.3322856+04:00"},{"id":"dccb2f0ecc63153863ecafe8af55b7dd","path":"libraries/network/include/graphene/network/node.hpp","line_range":"79-80","gmt_create":"2026-04-23T08:46:18.3322856+04:00","gmt_modified":"2026-04-23T08:46:18.3322856+04:00"},{"id":"c104a047d2e0286a416a50707ff31f75","path":"libraries/network/node.cpp","line_range":"3117-3199","gmt_create":"2026-04-23T08:46:18.3332856+04:00","gmt_modified":"2026-04-23T08:46:18.3332856+04:00"},{"id":"f66169296c7e57bb31eb8bfbb97ec9c8","path":"libraries/network/include/graphene/network/node.hpp","line_range":"200-294","gmt_create":"2026-04-23T08:46:18.3335046+04:00","gmt_modified":"2026-04-23T08:46:18.3335046+04:00"},{"id":"1970e34fadef96485269e5b4459078b1","path":"libraries/network/node.cpp","line_range":"933-950","gmt_create":"2026-04-23T08:46:18.3335046+04:00","gmt_modified":"2026-04-23T08:46:18.3335046+04:00"},{"id":"cfe6e43bf4714c16729e4589b894929a","path":"libraries/network/node.cpp","line_range":"1686-1713","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"ebf5643943fb83f7f0577c5391cdc29f","path":"libraries/network/include/graphene/network/node.hpp","line_range":"211-296","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"abb42aa5deba88d8499bfa05522d04b8","path":"libraries/network/node.cpp","line_range":"1788-1841","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"8910992f07461b10d88807a2dc107e31","path":"libraries/network/node.cpp","line_range":"1326-1398","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"fd51f4f0db3db3df7716cbbb1debe572","path":"libraries/network/node.cpp","line_range":"2830-2892","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"b9e952a855bb6a183f302fe56963d21c","path":"libraries/network/node.cpp","line_range":"111-217","gmt_create":"2026-04-23T08:46:18.3340074+04:00","gmt_modified":"2026-04-23T08:46:18.3340074+04:00"},{"id":"48c21c33524e92ceea06033be614b235","path":"libraries/network/node.cpp","line_range":"3574-3629","gmt_create":"2026-04-23T08:46:18.3350107+04:00","gmt_modified":"2026-04-23T08:46:18.3350107+04:00"},{"id":"7e0b537a82d1f588c679300874997b9d","path":"libraries/network/node.cpp","line_range":"3436-3458","gmt_create":"2026-04-23T08:46:18.3350107+04:00","gmt_modified":"2026-04-23T08:46:18.3350107+04:00"},{"id":"750e5499f686ed5cf00da793ffff700d","path":"libraries/network/include/graphene/network/exceptions.hpp","line_range":"45","gmt_create":"2026-04-23T08:46:18.3360104+04:00","gmt_modified":"2026-04-23T08:46:18.3360104+04:00"},{"id":"0455ab6d2af86bb4904447c2872c0c53","path":"libraries/network/node.cpp","line_range":"3444-3458","gmt_create":"2026-04-23T08:46:18.3360104+04:00","gmt_modified":"2026-04-23T08:46:18.3360104+04:00"},{"id":"6e81216a32202b37bf1e51becbd96ee5","path":"libraries/network/node.cpp","line_range":"3574-3595","gmt_create":"2026-04-23T08:46:18.3360104+04:00","gmt_modified":"2026-04-23T08:46:18.3360104+04:00"},{"id":"9aab1633519dd82fa80f9dae679c6e67","path":"libraries/network/node.cpp","line_range":"3436-3449","gmt_create":"2026-04-23T08:46:18.3370109+04:00","gmt_modified":"2026-04-23T08:46:18.3370109+04:00"},{"id":"09f1af7d59dbdb0fbf48bb43ee73810a","path":"libraries/network/node.cpp","line_range":"3428-3449","gmt_create":"2026-04-23T08:46:18.3370109+04:00","gmt_modified":"2026-04-23T08:46:18.3370109+04:00"},{"id":"5308ccfa8580b1876716b44b1f28861a","path":"libraries/chain/fork_database.cpp","line_range":"260-262","gmt_create":"2026-04-23T08:46:18.3370109+04:00","gmt_modified":"2026-04-23T08:46:18.3370109+04:00"},{"id":"99bf9466ee39733484e42b24dcac4661","path":"libraries/chain/fork_database.cpp","line_range":"80-87","gmt_create":"2026-04-23T08:46:18.3380104+04:00","gmt_modified":"2026-04-23T08:46:18.3380104+04:00"},{"id":"e806bda1a9e889983105fe61c6d9db2d","path":"libraries/network/node.cpp","line_range":"2251-2280","gmt_create":"2026-04-23T08:46:18.3401044+04:00","gmt_modified":"2026-04-23T08:46:18.3401044+04:00"},{"id":"5ce89ecce18bb64f98f6719d9ec00e43","path":"libraries/network/node.cpp","line_range":"2137-2168","gmt_create":"2026-04-23T08:46:18.3406078+04:00","gmt_modified":"2026-04-23T08:46:18.3406078+04:00"},{"id":"f1396eb83cd882dc7f1cf702aace14ed","path":"libraries/chain/database.cpp","line_range":"4455-4460","gmt_create":"2026-04-23T08:46:18.3406078+04:00","gmt_modified":"2026-04-23T08:46:18.3406078+04:00"},{"id":"8114d7a38e6d9b53917762786e49ecc5","path":"libraries/chain/database.cpp","line_range":"1-6424","gmt_create":"2026-04-23T08:48:15.4236619+04:00","gmt_modified":"2026-04-23T08:48:15.4236619+04:00"},{"id":"209f7b117b7f7bb00470bddded3c2398","path":"libraries/chain/include/graphene/chain/database_exceptions.hpp","line_range":"1-136","gmt_create":"2026-04-23T08:48:15.4246671+04:00","gmt_modified":"2026-04-23T08:48:15.4246671+04:00"},{"id":"7cc5b740b5c5c8e957b1ac116c71feeb","path":"plugins/snapshot/plugin.cpp","line_range":"1420-1430","gmt_create":"2026-04-23T08:48:15.4246671+04:00","gmt_modified":"2026-04-23T08:48:15.4246671+04:00"},{"id":"dd263a594e39d8c84ce42b6efb76acd5","path":"libraries/network/node.cpp","line_range":"3185-3384","gmt_create":"2026-04-23T08:48:15.425666+04:00","gmt_modified":"2026-04-23T08:48:15.425666+04:00"},{"id":"944bb65381e9048751328749ccfb5732","path":"plugins/p2p/p2p_plugin.cpp","line_range":"181-196","gmt_create":"2026-04-23T08:48:15.425666+04:00","gmt_modified":"2026-04-23T08:48:15.425666+04:00"},{"id":"a7c9e78b9bf59b6a3989c0339f9f5991","path":"plugins/snapshot/plugin.cpp","line_range":"1424-1426","gmt_create":"2026-04-23T08:48:15.4339323+04:00","gmt_modified":"2026-04-23T08:48:15.4339323+04:00"},{"id":"ea1944a89359ddbccd657fb47a341ead","path":"libraries/chain/database.cpp","line_range":"1216-1286","gmt_create":"2026-04-23T08:48:15.4427913+04:00","gmt_modified":"2026-04-23T08:48:15.4427913+04:00"},{"id":"9924fc699c3105d1f92a1d1add05b6bc","path":"libraries/network/node.cpp","line_range":"593-601","gmt_create":"2026-04-23T09:39:39.4201972+04:00","gmt_modified":"2026-04-23T09:39:39.4201972+04:00"},{"id":"8d21063080bca8794d81c136ded83883","path":"libraries/network/node.cpp","line_range":"5240-5274","gmt_create":"2026-04-23T09:39:39.4201972+04:00","gmt_modified":"2026-04-23T09:39:39.4201972+04:00"},{"id":"d63a843046b69fbb600d08397a3d24b2","path":"plugins/p2p/p2p_plugin.cpp","line_range":"689-697","gmt_create":"2026-04-23T09:39:39.4211972+04:00","gmt_modified":"2026-04-23T09:39:39.4211972+04:00"},{"id":"60563e45be74bbac873efa1574b0b44b","path":"plugins/snapshot/plugin.cpp","line_range":"3039-3045","gmt_create":"2026-04-23T09:39:39.4211972+04:00","gmt_modified":"2026-04-23T09:39:39.4211972+04:00"},{"id":"f7a932b6ffbae4962c88c344b881fab7","path":"libraries/network/node.cpp","line_range":"5272-5274","gmt_create":"2026-04-23T09:39:39.4340899+04:00","gmt_modified":"2026-04-23T09:39:39.4340899+04:00"},{"id":"a286ff3cf9e0c77d710f0468ff80ab71","path":"libraries/network/node.cpp","line_range":"5265-5274","gmt_create":"2026-04-23T09:39:39.4375953+04:00","gmt_modified":"2026-04-23T09:39:39.4375953+04:00"},{"id":"13386e3e76ae725d30c4b4dca682ae19","path":"libraries/network/node.cpp","line_range":"599-600","gmt_create":"2026-04-23T09:39:39.4385952+04:00","gmt_modified":"2026-04-23T09:39:39.4385952+04:00"},{"id":"8c7fe145e6668a0589833613de05ef8e","path":"share/vizd/config/config.ini","line_range":"96-101","gmt_create":"2026-04-23T09:39:39.4415953+04:00","gmt_modified":"2026-04-23T09:39:39.4415953+04:00"},{"id":"16a19aa5bcebe9921d90618856c818f2","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"36-561","gmt_create":"2026-04-23T09:40:27.9969605+04:00","gmt_modified":"2026-04-23T09:40:27.9969605+04:00"},{"id":"beb7270033f72ea030a658ed50661db0","path":"libraries/chain/database.cpp","line_range":"206-456","gmt_create":"2026-04-23T09:40:27.9969605+04:00","gmt_modified":"2026-04-23T09:40:27.9969605+04:00"},{"id":"3b2b487096be43e59f5232729909dca6","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"53-125","gmt_create":"2026-04-23T09:40:27.9969605+04:00","gmt_modified":"2026-04-23T09:40:27.9969605+04:00"},{"id":"8f12f59f3a806a27f415ac33df1ff302","path":"libraries/chain/fork_database.cpp","line_range":"1-245","gmt_create":"2026-04-23T09:40:27.9974634+04:00","gmt_modified":"2026-04-23T09:40:27.9974634+04:00"},{"id":"1a28848df3aef58b055a3cbae076ffb5","path":"libraries/chain/include/graphene/chain/block_log.hpp","line_range":"1-200","gmt_create":"2026-04-23T09:40:27.9974634+04:00","gmt_modified":"2026-04-23T09:40:27.9974634+04:00"},{"id":"50e79df334a3bb7b66eda6917902a0d5","path":"libraries/chain/block_log.cpp","line_range":"230-302","gmt_create":"2026-04-23T09:40:27.9974634+04:00","gmt_modified":"2026-04-23T09:40:27.9974634+04:00"},{"id":"f95834333ba4c5190b2391b54acf946f","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"35-75","gmt_create":"2026-04-23T09:40:27.9980702+04:00","gmt_modified":"2026-04-23T09:40:27.9980702+04:00"},{"id":"a29442fd9e1534478ed2c7ff68c012e3","path":"libraries/chain/dlt_block_log.cpp","line_range":"161-382","gmt_create":"2026-04-23T09:40:27.9980702+04:00","gmt_modified":"2026-04-23T09:40:27.9980702+04:00"},{"id":"87d3f7f5e4b3b275a1f5c62a722a0c7b","path":"libraries/chain/include/graphene/chain/chain_object_types.hpp","line_range":"44-146","gmt_create":"2026-04-23T09:40:27.9985732+04:00","gmt_modified":"2026-04-23T09:40:27.9985732+04:00"},{"id":"027e3be7967b0260b348fb2f05d14abd","path":"libraries/chain/include/graphene/chain/chain_objects.hpp","line_range":"20-226","gmt_create":"2026-04-23T09:40:27.9985732+04:00","gmt_modified":"2026-04-23T09:40:27.9985732+04:00"},{"id":"9532c9bc52ca2d2988bed522e150643c","path":"libraries/chain/include/graphene/chain/account_object.hpp","line_range":"20-143","gmt_create":"2026-04-23T09:40:27.9985732+04:00","gmt_modified":"2026-04-23T09:40:27.9985732+04:00"},{"id":"fe18bd4856c81bb8a8a870b01bcb9097","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","line_range":"27-132","gmt_create":"2026-04-23T09:40:27.9991619+04:00","gmt_modified":"2026-04-23T09:40:27.9991619+04:00"},{"id":"1e6ec0f9484d9bd2c1919f9c52c43a1a","path":"libraries/chain/include/graphene/chain/committee_objects.hpp","line_range":"15-47","gmt_create":"2026-04-23T09:40:27.9991619+04:00","gmt_modified":"2026-04-23T09:40:27.9991619+04:00"},{"id":"66c076e1ffb51e2df0f99d765a976edf","path":"libraries/chain/include/graphene/chain/transaction_object.hpp","line_range":"19-56","gmt_create":"2026-04-23T09:40:27.9991619+04:00","gmt_modified":"2026-04-23T09:40:27.9991619+04:00"},{"id":"50f895a6649a0d8198a41a111d1d585a","path":"libraries/chain/include/graphene/chain/evaluator.hpp","line_range":"11-45","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"fc3df8af7443986c214f3999cd7ce457","path":"libraries/chain/include/graphene/chain/chain_evaluator.hpp","line_range":"14-79","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"67fbfc5e36027ec77b25d6c86003a38f","path":"libraries/chain/include/graphene/chain/operation_notification.hpp","line_range":"11-26","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"462e2bcbab867587a9b198b4f6fb8299","path":"plugins/chain/plugin.cpp","line_range":"360-432","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"ef245c2d66c3fb194a0aa1c9dd0f9df4","path":"plugins/snapshot/plugin.cpp","line_range":"980-1200","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"6eecf475e7edebd6f7012094ec32f048","path":"thirdparty/fc/src/log/console_appender.cpp","line_range":"132-154","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"e57df16c7fa45b4bb9cbc87c046ef61f","path":"programs/vizd/main.cpp","line_range":"234-253","gmt_create":"2026-04-23T09:40:27.9996649+04:00","gmt_modified":"2026-04-23T09:40:27.9996649+04:00"},{"id":"4d11d9a124ba78c619ab8972eb02200d","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"56-110","gmt_create":"2026-04-23T09:40:28.0006681+04:00","gmt_modified":"2026-04-23T09:40:28.0006681+04:00"},{"id":"a8155a4afab33387a822f670e6673f99","path":"libraries/chain/database.cpp","line_range":"206-350","gmt_create":"2026-04-23T09:40:28.0006681+04:00","gmt_modified":"2026-04-23T09:40:28.0006681+04:00"},{"id":"3424ea448861e3b0a7e659d0fa397328","path":"libraries/chain/database.cpp","line_range":"800-925","gmt_create":"2026-04-23T09:40:28.001668+04:00","gmt_modified":"2026-04-23T09:40:28.001668+04:00"},{"id":"304c7132f9cc0ceeaedaf20752d64d3e","path":"libraries/chain/fork_database.cpp","line_range":"33-90","gmt_create":"2026-04-23T09:40:28.001668+04:00","gmt_modified":"2026-04-23T09:40:28.001668+04:00"},{"id":"2440453ed344e775de034d6fceab96fa","path":"libraries/chain/block_log.cpp","line_range":"253-257","gmt_create":"2026-04-23T09:40:28.001668+04:00","gmt_modified":"2026-04-23T09:40:28.001668+04:00"},{"id":"506b638fbd5c12dacae95b6b6d5e81d3","path":"libraries/chain/dlt_block_log.cpp","line_range":"211-230","gmt_create":"2026-04-23T09:40:28.0027596+04:00","gmt_modified":"2026-04-23T09:40:28.0027596+04:00"},{"id":"7d502c275227ff6a0dad8a6b2cbb0ea2","path":"libraries/chain/fork_database.cpp","line_range":"168-210","gmt_create":"2026-04-23T09:40:28.0033598+04:00","gmt_modified":"2026-04-23T09:40:28.0033598+04:00"},{"id":"066f963089585bde1998d3a7cf600f90","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"111-558","gmt_create":"2026-04-23T09:40:28.0038627+04:00","gmt_modified":"2026-04-23T09:40:28.0038627+04:00"},{"id":"099a7ddd20bd6626a898e0cf7ddbcf93","path":"libraries/chain/fork_database.cpp","line_range":"47-90","gmt_create":"2026-04-23T09:40:28.005866+04:00","gmt_modified":"2026-04-23T09:40:28.005866+04:00"},{"id":"7caa4d3b24ca280339e15eea6b2ea386","path":"libraries/chain/block_log.cpp","line_range":"134-194","gmt_create":"2026-04-23T09:40:28.005866+04:00","gmt_modified":"2026-04-23T09:40:28.005866+04:00"},{"id":"0d6c107155ed183ee5ba1d947aa60b6f","path":"libraries/chain/block_log.cpp","line_range":"195-227","gmt_create":"2026-04-23T09:40:28.005866+04:00","gmt_modified":"2026-04-23T09:40:28.005866+04:00"},{"id":"07077c35993e2bcc1e6ad243210658c5","path":"libraries/chain/block_log.cpp","line_range":"270-285","gmt_create":"2026-04-23T09:40:28.005866+04:00","gmt_modified":"2026-04-23T09:40:28.005866+04:00"},{"id":"85aba7789e2ca1fe6fcb650fb9a272e5","path":"libraries/chain/dlt_block_log.cpp","line_range":"161-230","gmt_create":"2026-04-23T09:40:28.0068661+04:00","gmt_modified":"2026-04-23T09:40:28.0068661+04:00"},{"id":"9071f8d009e4bdc3aabd93156adf0ae5","path":"libraries/chain/dlt_block_log.cpp","line_range":"356-411","gmt_create":"2026-04-23T09:40:28.0068661+04:00","gmt_modified":"2026-04-23T09:40:28.0068661+04:00"},{"id":"4a3b4526826da2c57a82aebb48c143a1","path":"libraries/chain/include/graphene/chain/chain_objects.hpp","line_range":"20-141","gmt_create":"2026-04-23T09:40:28.0091371+04:00","gmt_modified":"2026-04-23T09:40:28.0091371+04:00"},{"id":"202fe515b0495ce4d9e3461872b5a7a5","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"252-286","gmt_create":"2026-04-23T09:40:28.010643+04:00","gmt_modified":"2026-04-23T09:40:28.010643+04:00"},{"id":"0f8940d10bd3fa25101b8055831b577b","path":"plugins/chain/plugin.cpp","line_range":"434-491","gmt_create":"2026-04-23T09:40:28.0126429+04:00","gmt_modified":"2026-04-23T09:40:28.0126429+04:00"},{"id":"1512721e67f0287c71ea498a2bbd1d29","path":"plugins/snapshot/plugin.cpp","line_range":"1000-1200","gmt_create":"2026-04-23T09:40:28.013288+04:00","gmt_modified":"2026-04-23T09:40:28.013288+04:00"},{"id":"ba755b39604252e4cb43e1706e777543","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"57-64","gmt_create":"2026-04-23T09:40:28.013288+04:00","gmt_modified":"2026-04-23T09:40:28.013288+04:00"},{"id":"7d02365c3f2f3efaf9155d970698aec7","path":"libraries/chain/database.cpp","line_range":"3985-4051","gmt_create":"2026-04-23T09:40:28.0137909+04:00","gmt_modified":"2026-04-23T09:40:28.0137909+04:00"},{"id":"c77aaa56525d9c318664af3ff4ce6135","path":"plugins/chain/plugin.cpp","line_range":"391-417","gmt_create":"2026-04-23T09:40:28.0137909+04:00","gmt_modified":"2026-04-23T09:40:28.0137909+04:00"},{"id":"615af9a2f6b8b4df327446e4e8bcc1ae","path":"plugins/snapshot/plugin.cpp","line_range":"1014-1032","gmt_create":"2026-04-23T09:40:28.0137909+04:00","gmt_modified":"2026-04-23T09:40:28.0137909+04:00"},{"id":"a3a37e841fb1ecbb2442040ac90e3198","path":"plugins/chain/plugin.cpp","line_range":"100-113","gmt_create":"2026-04-23T09:40:28.0137909+04:00","gmt_modified":"2026-04-23T09:40:28.0137909+04:00"},{"id":"d3151694a1313762475ee616a2a3cfe0","path":"plugins/chain/plugin.cpp","line_range":"58-113","gmt_create":"2026-04-23T09:40:28.0147943+04:00","gmt_modified":"2026-04-23T09:40:28.0147943+04:00"},{"id":"821eb1ee66481f4569602f236fd2444b","path":"plugins/snapshot/plugin.cpp","line_range":"1018-1032","gmt_create":"2026-04-23T09:40:28.0147943+04:00","gmt_modified":"2026-04-23T09:40:28.0147943+04:00"},{"id":"32d5e27edefa46b873fef98c512612b4","path":"plugins/witness/witness.cpp","line_range":"286","gmt_create":"2026-04-23T09:40:28.0147943+04:00","gmt_modified":"2026-04-23T09:40:28.0147943+04:00"},{"id":"43d8be46f85d6fc08ba611213afd35db","path":"libraries/network/node.cpp","line_range":"3446-3456","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"f9e256558b0a310a3aebb8b9ebb0a744","path":"plugins/snapshot/plugin.cpp","line_range":"1770-1771","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"93dcb94717b1b034e4d9565c437aad1b","path":"libraries/network/node.cpp","line_range":"2428-2444","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"af05147b54f6ad328cd4b288e3985511","path":"libraries/network/node.cpp","line_range":"3276-3280","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"22e052dd8ab0fdf27afc32b483a37ff7","path":"libraries/chain/database.cpp","line_range":"5295-5303","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"a655f35ca12d3877c0294e186b5a5f5d","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"1-561","gmt_create":"2026-04-23T09:40:28.0157942+04:00","gmt_modified":"2026-04-23T09:40:28.0157942+04:00"},{"id":"0fd95d3fb8e19f476ee368c9acadc148","path":"libraries/chain/database.cpp","line_range":"1-200","gmt_create":"2026-04-23T09:40:28.0167942+04:00","gmt_modified":"2026-04-23T09:40:28.0167942+04:00"},{"id":"33b697d7ffcdd3aa1d3e2c8f8e5fca15","path":"libraries/chain/include/graphene/chain/fork_database.hpp","line_range":"1-125","gmt_create":"2026-04-23T09:40:28.0167942+04:00","gmt_modified":"2026-04-23T09:40:28.0167942+04:00"},{"id":"3736c5a5a1ddf339e5556de0656bfcdf","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"1-75","gmt_create":"2026-04-23T09:40:28.0167942+04:00","gmt_modified":"2026-04-23T09:40:28.0167942+04:00"},{"id":"00eee107c9ba823018067fbd4827abdc","path":"libraries/chain/include/graphene/chain/chain_object_types.hpp","line_range":"1-246","gmt_create":"2026-04-23T09:40:28.0167942+04:00","gmt_modified":"2026-04-23T09:40:28.0167942+04:00"},{"id":"7032d2c44cd05c33be8de43f6514c7d6","path":"libraries/chain/include/graphene/chain/chain_objects.hpp","line_range":"1-226","gmt_create":"2026-04-23T09:40:28.0167942+04:00","gmt_modified":"2026-04-23T09:40:28.0167942+04:00"},{"id":"39c686d025e553f6bad7d2fec4a739ae","path":"libraries/chain/include/graphene/chain/account_object.hpp","line_range":"1-565","gmt_create":"2026-04-23T09:40:28.0179231+04:00","gmt_modified":"2026-04-23T09:40:28.0179231+04:00"},{"id":"03ff87c3dad6c3f5807e0006d9b49e7b","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","line_range":"1-313","gmt_create":"2026-04-23T09:40:28.0179231+04:00","gmt_modified":"2026-04-23T09:40:28.0179231+04:00"},{"id":"3147d19a66720276e968aa6544a4292b","path":"libraries/chain/include/graphene/chain/committee_objects.hpp","line_range":"1-137","gmt_create":"2026-04-23T09:40:28.0179231+04:00","gmt_modified":"2026-04-23T09:40:28.0179231+04:00"},{"id":"0bf9b2bbe6504edfbc3f8394b947929b","path":"libraries/chain/include/graphene/chain/transaction_object.hpp","line_range":"1-56","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"3efe898414dcae3fffd2e9c1c0679311","path":"libraries/chain/include/graphene/chain/evaluator.hpp","line_range":"1-62","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"48ad93138afd2c83193d808d04cb5573","path":"libraries/chain/include/graphene/chain/chain_evaluator.hpp","line_range":"1-80","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"b9b4e1e0a88a6640c5e8a94801dbff57","path":"libraries/chain/include/graphene/chain/operation_notification.hpp","line_range":"1-27","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"ed272eaaa4bd0adbed874f87308f6c81","path":"plugins/chain/plugin.cpp","line_range":"1-526","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"973b0384238fe7370822559425a96f5b","path":"plugins/snapshot/plugin.cpp","line_range":"1-1976","gmt_create":"2026-04-23T09:40:28.0184262+04:00","gmt_modified":"2026-04-23T09:40:28.0184262+04:00"},{"id":"3fd5da634ff647b8e47fa2d9f2b10947","path":"libraries/chain/database.cpp","line_range":"232-248","gmt_create":"2026-04-23T09:40:28.0194298+04:00","gmt_modified":"2026-04-23T09:40:28.0194298+04:00"},{"id":"abf26b07298df44b8ad0f82418a28240","path":"libraries/chain/database.cpp","line_range":"270-350","gmt_create":"2026-04-23T09:40:28.0204295+04:00","gmt_modified":"2026-04-23T09:40:28.0204295+04:00"},{"id":"ff2523d2df1db0e5eacb85bdae3f2688","path":"libraries/chain/database.cpp","line_range":"368-430","gmt_create":"2026-04-23T09:40:28.0204295+04:00","gmt_modified":"2026-04-23T09:40:28.0204295+04:00"},{"id":"68b6c0503834784566bd470237e6fbbb","path":"libraries/chain/database.cpp","line_range":"832-844","gmt_create":"2026-04-23T09:40:28.0204295+04:00","gmt_modified":"2026-04-23T09:40:28.0204295+04:00"},{"id":"b15e11d3471309dbff74358ab3b597bb","path":"plugins/chain/plugin.cpp","line_range":"371-380","gmt_create":"2026-04-23T09:40:28.0204295+04:00","gmt_modified":"2026-04-23T09:40:28.0204295+04:00"},{"id":"532edf497ce380a6eff5d3fe76792a3c","path":"plugins/snapshot/plugin.cpp","line_range":"1018-1020","gmt_create":"2026-04-23T09:40:28.0204295+04:00","gmt_modified":"2026-04-23T09:40:28.0204295+04:00"},{"id":"57dca27aac4631b2a09561ab190bd578","path":"libraries/chain/database.cpp","line_range":"936-970","gmt_create":"2026-04-23T09:40:28.0214295+04:00","gmt_modified":"2026-04-23T09:40:28.0214295+04:00"},{"id":"98a4db8754b7f187508af46bdd8019c2","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"136-169","gmt_create":"2026-04-23T09:40:28.0214295+04:00","gmt_modified":"2026-04-23T09:40:28.0214295+04:00"},{"id":"4227ba2bea4520b3ea3ac8c104d6634e","path":"libraries/chain/fork_database.cpp","line_range":"92-124","gmt_create":"2026-04-23T09:40:28.0224297+04:00","gmt_modified":"2026-04-23T09:40:28.0224297+04:00"},{"id":"5e74ba9791165e9a27dc768aced92cb8","path":"libraries/chain/include/graphene/chain/database.hpp","line_range":"62-64","gmt_create":"2026-04-23T09:40:28.0224297+04:00","gmt_modified":"2026-04-23T09:40:28.0224297+04:00"},{"id":"03795feb7ae28b007d7a6e71efd6e49b","path":"plugins/chain/plugin.cpp","line_range":"234-236","gmt_create":"2026-04-23T09:40:28.0224297+04:00","gmt_modified":"2026-04-23T09:40:28.0224297+04:00"},{"id":"a62449c820dada6775c37fa7b8a9450b","path":"plugins/snapshot/plugin.cpp","line_range":"50-53","gmt_create":"2026-04-23T09:40:28.0234298+04:00","gmt_modified":"2026-04-23T09:40:28.0234298+04:00"},{"id":"caf41318a9685f0d4a55bc4793962169","path":"plugins/p2p/p2p_plugin.cpp","line_range":"175-192","gmt_create":"2026-04-23T09:42:13.839779+04:00","gmt_modified":"2026-04-23T09:42:13.839779+04:00"},{"id":"341122c5fe576375c3baabbb0ec15efd","path":"libraries/network/node.cpp","line_range":"3192-3211","gmt_create":"2026-04-23T09:42:13.8403801+04:00","gmt_modified":"2026-04-23T09:42:13.8403801+04:00"},{"id":"e8fc4f78dc6c018fb182ce7216a577c7","path":"libraries/network/node.cpp","line_range":"5241-5274","gmt_create":"2026-04-23T09:45:28.2582696+04:00","gmt_modified":"2026-04-23T09:45:28.2582696+04:00"},{"id":"af2c19f2568561b67f019a505b8c1e2a","path":"libraries/network/include/graphene/network/node.hpp","line_range":"284-290","gmt_create":"2026-04-23T09:45:28.2582696+04:00","gmt_modified":"2026-04-23T09:45:28.2582696+04:00"},{"id":"80a6cf4c3a34c0380cfa7e2bbce50695","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"86-88","gmt_create":"2026-04-23T09:45:28.2582696+04:00","gmt_modified":"2026-04-23T09:45:28.2582696+04:00"},{"id":"d0c48b21ac92d8d2ce3620cecd2dcc6b","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"84-118","gmt_create":"2026-04-23T09:46:06.4722958+04:00","gmt_modified":"2026-04-23T09:46:06.4722958+04:00"},{"id":"e2a70c9ef153c8f80372be8adbf3b8ce","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-96","gmt_create":"2026-04-23T09:46:06.4722958+04:00","gmt_modified":"2026-04-23T09:46:06.4722958+04:00"},{"id":"fc8bf356e433ceaaeeefdfbb09cc2a19","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-57","gmt_create":"2026-04-23T09:46:06.4727986+04:00","gmt_modified":"2026-04-23T09:46:06.4727986+04:00"},{"id":"cf291e1486819970446472cc11d8ddc8","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"179-403","gmt_create":"2026-04-23T09:46:06.4727986+04:00","gmt_modified":"2026-04-23T09:46:06.4727986+04:00"},{"id":"9bbb84eee1aef90348c72e75495dcaef","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"59-97","gmt_create":"2026-04-23T09:46:06.4727986+04:00","gmt_modified":"2026-04-23T09:46:06.4727986+04:00"},{"id":"e6df5f4cb7c0988a61c77ddbef242064","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"18-52","gmt_create":"2026-04-23T09:46:06.4727986+04:00","gmt_modified":"2026-04-23T09:46:06.4727986+04:00"},{"id":"aedc52070cb049a70230d94dbec9127d","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"14-47","gmt_create":"2026-04-23T09:46:06.4727986+04:00","gmt_modified":"2026-04-23T09:46:06.4727986+04:00"},{"id":"72db60f93c1fd9e588e73681846094ac","path":"plugins/p2p/p2p_plugin.cpp","line_range":"203-257","gmt_create":"2026-04-23T09:46:06.4738019+04:00","gmt_modified":"2026-04-23T09:46:06.4738019+04:00"},{"id":"bc58f817a47b66576115a959ef4e8de1","path":"plugins/p2p/p2p_plugin.cpp","line_range":"688-697","gmt_create":"2026-04-23T09:46:06.4738019+04:00","gmt_modified":"2026-04-23T09:46:06.4738019+04:00"},{"id":"85674b47bf8d255b25d55436d1c99ffc","path":"documentation/plugin.md","line_range":"1-28","gmt_create":"2026-04-23T09:46:06.4748018+04:00","gmt_modified":"2026-04-23T09:46:06.4748018+04:00"},{"id":"8cd5d1f215bde6f6ccb9eb381d24bd40","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"109-113","gmt_create":"2026-04-23T09:46:06.4775319+04:00","gmt_modified":"2026-04-23T09:46:06.4775319+04:00"},{"id":"af8f81a3a4d58504e328d1f8a62b88a3","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"88-91","gmt_create":"2026-04-23T09:46:06.4775319+04:00","gmt_modified":"2026-04-23T09:46:06.4775319+04:00"},{"id":"1e1cfcc720247454cb277d6e96e30ebc","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"60-76","gmt_create":"2026-04-23T09:46:06.4775319+04:00","gmt_modified":"2026-04-23T09:46:06.4775319+04:00"},{"id":"102e2a7219b22a82d3b64b983854fc33","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"38-55","gmt_create":"2026-04-23T09:46:06.4785381+04:00","gmt_modified":"2026-04-23T09:46:06.4785381+04:00"},{"id":"cb378cc1cd10872797bc4b4e065102e0","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"36-42","gmt_create":"2026-04-23T09:46:06.4795371+04:00","gmt_modified":"2026-04-23T09:46:06.4795371+04:00"},{"id":"9bd9537dad06007198cf14e878c23c41","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"19-31","gmt_create":"2026-04-23T09:46:06.4795371+04:00","gmt_modified":"2026-04-23T09:46:06.4795371+04:00"},{"id":"787937c04d31ae8f6b77aa3debcbf6d3","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"188-191","gmt_create":"2026-04-23T09:46:06.4805369+04:00","gmt_modified":"2026-04-23T09:46:06.4805369+04:00"},{"id":"b034b054ce403f3ec2fd88efb89a0a16","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"227-398","gmt_create":"2026-04-23T09:46:06.4805369+04:00","gmt_modified":"2026-04-23T09:46:06.4805369+04:00"},{"id":"3fb330c8287106665726a28567c92a5c","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"61-65","gmt_create":"2026-04-23T09:46:06.4805369+04:00","gmt_modified":"2026-04-23T09:46:06.4805369+04:00"},{"id":"3429b78850d8fa62c3600571b75d52ed","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"83-92","gmt_create":"2026-04-23T09:46:06.4805369+04:00","gmt_modified":"2026-04-23T09:46:06.4805369+04:00"},{"id":"42b40fe3d2456078c7b0ed92b1492ec0","path":"plugins/p2p/p2p_plugin.cpp","line_range":"259-277","gmt_create":"2026-04-23T09:46:06.4818296+04:00","gmt_modified":"2026-04-23T09:46:06.4818296+04:00"},{"id":"2ef0c3b5ceddd702ed88edc8b9e4fdff","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"20-20","gmt_create":"2026-04-23T09:46:06.4823327+04:00","gmt_modified":"2026-04-23T09:46:06.4823327+04:00"},{"id":"3db7c2b0d8dc0e8758f4c15214e61313","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"40-49","gmt_create":"2026-04-23T09:46:06.4823327+04:00","gmt_modified":"2026-04-23T09:46:06.4823327+04:00"},{"id":"de6fb7cc69ccd55320fdfeb942f0bb25","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"17-19","gmt_create":"2026-04-23T09:46:06.4833356+04:00","gmt_modified":"2026-04-23T09:46:06.4833356+04:00"},{"id":"10062bf67720c6d65bf29b7e05e53fac","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"46-87","gmt_create":"2026-04-23T09:46:06.4833356+04:00","gmt_modified":"2026-04-23T09:46:06.4833356+04:00"},{"id":"adbd3b90842a67e229e9a1dcedaf1a32","path":"documentation/plugin.md","line_range":"11-20","gmt_create":"2026-04-23T09:46:06.4855097+04:00","gmt_modified":"2026-04-23T09:46:06.4855097+04:00"},{"id":"dc48b7238cc66df599dae38b1c050814","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"77-77","gmt_create":"2026-04-23T09:46:06.4855097+04:00","gmt_modified":"2026-04-23T09:46:06.4855097+04:00"},{"id":"9332a2a76a3443a79be6fa8dc4048438","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-42","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"b4316318a9574951ff8938c6d99004a5","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-43","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"70f14f1ee65c0139809ace82cf50998f","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","line_range":"179-186","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"56db7e7959757db95bf454286870321f","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","line_range":"59-70","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"60c1f99ef18eeb91f1374893134e9dee","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","line_range":"18-32","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"45dba84487f57c51ee08aecf5d9363b5","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","line_range":"14-41","gmt_create":"2026-04-23T09:46:06.4875128+04:00","gmt_modified":"2026-04-23T09:46:06.4875128+04:00"},{"id":"be3f355927902abbacc66fc8ef8d725e","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"42-54","gmt_create":"2026-04-23T09:46:06.4885137+04:00","gmt_modified":"2026-04-23T09:46:06.4885137+04:00"},{"id":"b66594f96f1242e29c2ab2acf84ecd32","path":"programs/util/newplugin.py","line_range":"225-246","gmt_create":"2026-04-23T09:46:06.4887947+04:00","gmt_modified":"2026-04-23T09:46:06.4887947+04:00"},{"id":"c62e1397b94795e465fbc14ea472574b","path":"programs/util/newplugin.py","line_range":"168-173","gmt_create":"2026-04-23T09:46:06.4887947+04:00","gmt_modified":"2026-04-23T09:46:06.4887947+04:00"},{"id":"aa6229d2d48c7826205ea87375adc9fe","path":"documentation/plugin.md","line_range":"21-28","gmt_create":"2026-04-23T09:46:06.4892972+04:00","gmt_modified":"2026-04-23T09:46:06.4892972+04:00"},{"id":"35d24cfc3a718f73aa7c90cbb070354a","path":"libraries/chain/database.cpp","line_range":"313-317","gmt_create":"2026-04-23T09:46:06.4898333+04:00","gmt_modified":"2026-04-23T09:46:06.4898333+04:00"},{"id":"c3c45afd2ec0895d4db392cbb92a0eff","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"13-33","gmt_create":"2026-04-23T09:46:06.4908372+04:00","gmt_modified":"2026-04-23T09:46:06.4908372+04:00"},{"id":"612f94b42fe205b777c3de4c66a78590","path":"libraries/chain/dlt_block_log.cpp","line_range":"1-200","gmt_create":"2026-04-23T09:46:06.4908372+04:00","gmt_modified":"2026-04-23T09:46:06.4908372+04:00"},{"id":"889576d5248af3e761d8b8f11edbdc3c","path":"libraries/chain/dlt_block_log.cpp","line_range":"356-382","gmt_create":"2026-04-23T09:46:06.4908372+04:00","gmt_modified":"2026-04-23T09:46:06.4908372+04:00"},{"id":"84c8c2c812e14b7b135e30884b54750b","path":"libraries/chain/database.cpp","line_range":"558-567","gmt_create":"2026-04-23T09:46:06.4920542+04:00","gmt_modified":"2026-04-23T09:46:06.4920542+04:00"},{"id":"a4cd9ca5a718782864b0a097cf977152","path":"libraries/chain/database.cpp","line_range":"596-600","gmt_create":"2026-04-23T09:46:06.4920542+04:00","gmt_modified":"2026-04-23T09:46:06.4920542+04:00"},{"id":"223f9c99ce62468c734d65e2870a2d24","path":"libraries/chain/database.cpp","line_range":"618-622","gmt_create":"2026-04-23T09:46:06.4932664+04:00","gmt_modified":"2026-04-23T09:46:06.4932664+04:00"},{"id":"be23399b5f0fe8ce230c4fd71dc41290","path":"documentation/snapshot-plugin.md","line_range":"104-164","gmt_create":"2026-04-23T09:46:06.4932664+04:00","gmt_modified":"2026-04-23T09:46:06.4932664+04:00"},{"id":"6475fdf01f4a4784fc1ea9af9ec30f40","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"15-41","gmt_create":"2026-04-23T09:46:06.4932664+04:00","gmt_modified":"2026-04-23T09:46:06.4932664+04:00"},{"id":"6661694400eeda9076974f6ffb08ad9e","path":"plugins/p2p/p2p_plugin.cpp","line_range":"265-276","gmt_create":"2026-04-23T09:46:06.4938352+04:00","gmt_modified":"2026-04-23T09:46:06.4938352+04:00"},{"id":"caa0a3bdbedddb20962f5622f4cb96de","path":"plugins/p2p/p2p_plugin.cpp","line_range":"118-165","gmt_create":"2026-04-23T09:46:06.4938352+04:00","gmt_modified":"2026-04-23T09:46:06.4938352+04:00"},{"id":"2f48af123d7c717d87efa86a897072cf","path":"libraries/chain/database.cpp","line_range":"558-580","gmt_create":"2026-04-23T09:46:06.4943381+04:00","gmt_modified":"2026-04-23T09:46:06.4943381+04:00"},{"id":"d39d62435004686304b872d1aa167517","path":"libraries/chain/database.cpp","line_range":"599-620","gmt_create":"2026-04-23T09:46:06.4943381+04:00","gmt_modified":"2026-04-23T09:46:06.4943381+04:00"},{"id":"d966b10c5f40e64a1511a7ee158e788f","path":"libraries/chain/database.cpp","line_range":"623-640","gmt_create":"2026-04-23T09:46:06.4943381+04:00","gmt_modified":"2026-04-23T09:46:06.4943381+04:00"},{"id":"bfb352c37c5651f8e364f9838b375902","path":"libraries/network/node.cpp","line_range":"5254-5274","gmt_create":"2026-04-23T09:46:06.4956738+04:00","gmt_modified":"2026-04-23T09:46:06.4956738+04:00"},{"id":"160368e3339d4e55ddfe248fd538d1e3","path":"plugins/p2p/CMakeLists.txt","line_range":"27-34","gmt_create":"2026-04-23T09:46:06.4961765+04:00","gmt_modified":"2026-04-23T09:46:06.4961765+04:00"},{"id":"232a0b4952b0a88c2a0f43241176fca6","path":"plugins/p2p/p2p_plugin.cpp","line_range":"500-508","gmt_create":"2026-04-23T09:46:06.4972403+04:00","gmt_modified":"2026-04-23T09:46:06.4972403+04:00"},{"id":"9c2392ab068c0dda02cdfe33eceff8e4","path":"thirdparty/fc/include/fc/network/ip.hpp","line_range":"69-71","gmt_create":"2026-04-23T09:46:06.4978162+04:00","gmt_modified":"2026-04-23T09:46:06.4978162+04:00"},{"id":"f1e088088369adcf3d462fe0e2d53dbf","path":"thirdparty/fc/src/network/ip.cpp","line_range":"35-39","gmt_create":"2026-04-23T09:46:06.4978162+04:00","gmt_modified":"2026-04-23T09:46:06.4978162+04:00"},{"id":"ec0a7e38def2d8b0f21be32808de7860","path":"thirdparty/fc/include/fc/network/ip.hpp","line_range":"12-87","gmt_create":"2026-04-23T09:46:06.4984778+04:00","gmt_modified":"2026-04-23T09:46:06.4984778+04:00"},{"id":"d43daaa87560a3c4b045281357a6a2b3","path":"thirdparty/fc/src/network/ip.cpp","line_range":"14-87","gmt_create":"2026-04-23T09:46:06.4984778+04:00","gmt_modified":"2026-04-23T09:46:06.4984778+04:00"},{"id":"e50a77e5ebfe7749756f98da252dca65","path":"libraries/network/peer_connection.hpp","line_range":"109-110","gmt_create":"2026-04-23T09:46:06.4984778+04:00","gmt_modified":"2026-04-23T09:46:06.4984778+04:00"},{"id":"ead7dae43935af711da9e9fb0ee57e55","path":"libraries/network/node.cpp","line_range":"4900-4903","gmt_create":"2026-04-23T09:46:06.4989808+04:00","gmt_modified":"2026-04-23T09:46:06.4989808+04:00"},{"id":"bb8a03040c7dd5ef23842135f12c7ada","path":"libraries/network/core_messages.hpp","line_range":"333-345","gmt_create":"2026-04-23T09:46:06.4989808+04:00","gmt_modified":"2026-04-23T09:46:06.4989808+04:00"},{"id":"4d389798bfd10ffa507b4eff702ce895","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","line_range":"21-24","gmt_create":"2026-04-23T09:46:06.4989808+04:00","gmt_modified":"2026-04-23T09:46:06.4989808+04:00"},{"id":"b299205c99b9ae5248e438a5b8bc28f2","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","line_range":"32-38","gmt_create":"2026-04-23T09:46:06.4989808+04:00","gmt_modified":"2026-04-23T09:46:06.4989808+04:00"},{"id":"a23a1085e2cc69dadf154e51b819127d","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","line_range":"44-44","gmt_create":"2026-04-23T09:46:06.4999838+04:00","gmt_modified":"2026-04-23T09:46:06.4999838+04:00"},{"id":"f5ba325b3d9da76e3ebc5613f9cd98a2","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","line_range":"35-35","gmt_create":"2026-04-23T09:46:06.4999838+04:00","gmt_modified":"2026-04-23T09:46:06.4999838+04:00"},{"id":"eb78713649c3eafb6435d5b0e39b4508","path":"libraries/protocol/include/graphene/protocol/operations.hpp","line_range":"14-27","gmt_create":"2026-04-23T09:46:06.5031673+04:00","gmt_modified":"2026-04-23T09:46:06.5031673+04:00"},{"id":"7e1cfebaa5e9eeb729552133622ecb43","path":"libraries/chain/chain_evaluator.cpp","line_range":"216-216","gmt_create":"2026-04-23T09:46:06.5031673+04:00","gmt_modified":"2026-04-23T09:46:06.5031673+04:00"},{"id":"fbee98959255e2b7f556fd6d47d1b069","path":"libraries/chain/chain_evaluator.cpp","line_range":"551-551","gmt_create":"2026-04-23T09:46:06.5031673+04:00","gmt_modified":"2026-04-23T09:46:06.5031673+04:00"},{"id":"2a9174de7944c932a866d3cbce97a49b","path":"libraries/chain/chain_evaluator.cpp","line_range":"1296-1296","gmt_create":"2026-04-23T09:46:06.5031673+04:00","gmt_modified":"2026-04-23T09:46:06.5031673+04:00"},{"id":"ff2d25a7450347c4a58d6558b6ef2187","path":"plugins/p2p/p2p_plugin.cpp","line_range":"499-528","gmt_create":"2026-04-23T09:46:06.5031673+04:00","gmt_modified":"2026-04-23T09:46:06.5031673+04:00"},{"id":"428c4550bf78909ea1be0331756cac88","path":"plugins/debug_node/plugin.cpp","line_range":"124-128","gmt_create":"2026-04-23T09:46:06.5042323+04:00","gmt_modified":"2026-04-23T09:46:06.5042323+04:00"},{"id":"bd1c1b5f3a896d421fb3435f617724c1","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","line_range":"103-107","gmt_create":"2026-04-23T09:46:06.505738+04:00","gmt_modified":"2026-04-23T09:46:06.505738+04:00"},{"id":"1bc773b8020617c00ac7460f95d1a182","path":"documentation/snapshot-plugin.md","line_range":"142-164","gmt_create":"2026-04-23T09:46:06.5067382+04:00","gmt_modified":"2026-04-23T09:46:06.5067382+04:00"},{"id":"8ed917d817d567a488d62920baedadcc","path":"plugins/p2p/p2p_plugin.cpp","line_range":"689-698","gmt_create":"2026-04-23T11:16:32.2835144+04:00","gmt_modified":"2026-04-23T11:16:32.2835144+04:00"},{"id":"7925b0a796bd493a01da486c70d0ab64","path":"plugins/snapshot/plugin.cpp","line_range":"714-715","gmt_create":"2026-04-23T11:16:32.2835144+04:00","gmt_modified":"2026-04-23T11:16:32.2835144+04:00"},{"id":"1ae9e34ac2be4ef2ed3da08a43b3ca1c","path":"libraries/network/node.cpp","line_range":"592-600","gmt_create":"2026-04-23T11:16:32.2841471+04:00","gmt_modified":"2026-04-23T11:16:32.2841471+04:00"},{"id":"ef3997991d9cf249bb80090feb23abdc","path":"plugins/p2p/p2p_plugin.cpp","line_range":"689-706","gmt_create":"2026-04-23T11:16:32.285845+04:00","gmt_modified":"2026-04-23T11:16:32.285845+04:00"},{"id":"b136009499eb952960a997500371c413","path":"libraries/network/stcp_socket.cpp","line_range":"37-92","gmt_create":"2026-04-23T11:16:32.2863871+04:00","gmt_modified":"2026-04-23T11:16:32.2863871+04:00"},{"id":"9f67fdb767ce515af96c465dbbb1fe8f","path":"plugins/p2p/p2p_plugin.cpp","line_range":"497-521","gmt_create":"2026-04-23T11:16:32.2874285+04:00","gmt_modified":"2026-04-23T11:16:32.2874285+04:00"},{"id":"acad8673bff956aca1d53443f4ba5739","path":"libraries/network/node.cpp","line_range":"780-785","gmt_create":"2026-04-23T11:16:32.2879424+04:00","gmt_modified":"2026-04-23T11:16:32.2879424+04:00"},{"id":"ffcabaf2fce1313ba726f943d26bdf4a","path":"plugins/p2p/p2p_plugin.cpp","line_range":"537-540","gmt_create":"2026-04-23T11:16:32.2879424+04:00","gmt_modified":"2026-04-23T11:16:32.2879424+04:00"},{"id":"2ed9aa8440a7a4d0e1b58d003e493158","path":"libraries/network/node.cpp","line_range":"786-792","gmt_create":"2026-04-23T11:16:32.2884558+04:00","gmt_modified":"2026-04-23T11:16:32.2884558+04:00"},{"id":"d1be4370926b5262daf2447b9745d905","path":"plugins/p2p/p2p_plugin.cpp","line_range":"487-495","gmt_create":"2026-04-23T11:16:32.2884558+04:00","gmt_modified":"2026-04-23T11:16:32.2884558+04:00"},{"id":"5fdf8584baa2beb83725ffd40a065ff4","path":"libraries/network/include/graphene/network/config.hpp","line_range":"52-56","gmt_create":"2026-04-23T11:16:32.2884558+04:00","gmt_modified":"2026-04-23T11:16:32.2884558+04:00"},{"id":"034d2639f50a8ac9d67ffbf0594a6afa","path":"libraries/network/node.cpp","line_range":"441-445","gmt_create":"2026-04-23T11:16:32.2884558+04:00","gmt_modified":"2026-04-23T11:16:32.2884558+04:00"},{"id":"65d8ec4282c90ca603928ff3ca7a8c1c","path":"libraries/network/peer_connection.cpp","line_range":"169-206","gmt_create":"2026-04-23T11:16:32.2889737+04:00","gmt_modified":"2026-04-23T11:16:32.2889737+04:00"},{"id":"9483fd3d971ce258539c764b97277642","path":"libraries/network/stcp_socket.cpp","line_range":"49-66","gmt_create":"2026-04-23T11:16:32.2889737+04:00","gmt_modified":"2026-04-23T11:16:32.2889737+04:00"},{"id":"b798a371453386ed55f39515a7f187ce","path":"libraries/network/node.cpp","line_range":"223-239","gmt_create":"2026-04-23T11:16:32.2889737+04:00","gmt_modified":"2026-04-23T11:16:32.2889737+04:00"},{"id":"9adff7a947c035e71543339de4f875ec","path":"libraries/network/node.cpp","line_range":"638-640","gmt_create":"2026-04-23T11:16:32.2889737+04:00","gmt_modified":"2026-04-23T11:16:32.2889737+04:00"},{"id":"6b49cb375a448fd15559d24da7d7e23c","path":"libraries/network/node.cpp","line_range":"548-567","gmt_create":"2026-04-23T11:16:32.2894853+04:00","gmt_modified":"2026-04-23T11:16:32.2894853+04:00"},{"id":"3edc836b9f3a1df5c933c63ecc8ce954","path":"libraries/network/include/graphene/network/config.hpp","line_range":"55-106","gmt_create":"2026-04-23T11:16:32.2894853+04:00","gmt_modified":"2026-04-23T11:16:32.2894853+04:00"},{"id":"7b44d15de5faea5ec5d9aa45843a4779","path":"share/vizd/config/config.ini","line_range":"1-136","gmt_create":"2026-04-23T11:16:32.2899969+04:00","gmt_modified":"2026-04-23T11:16:32.2899969+04:00"},{"id":"5d3ecf8dbda10c5dac6bfd961791d02b","path":"share/vizd/config/config_testnet.ini","line_range":"1-132","gmt_create":"2026-04-23T11:16:32.2899969+04:00","gmt_modified":"2026-04-23T11:16:32.2899969+04:00"},{"id":"e5968eacd23776d0e60478ea5cc7d523","path":"plugins/p2p/p2p_plugin.cpp","line_range":"403-405","gmt_create":"2026-04-23T11:16:32.2910229+04:00","gmt_modified":"2026-04-23T11:16:32.2910229+04:00"},{"id":"3942d16870ce25abce21196a1bb5866b","path":"share/vizd/config/config.ini","line_range":"112-136","gmt_create":"2026-04-23T11:16:32.2915433+04:00","gmt_modified":"2026-04-23T11:16:32.2915433+04:00"},{"id":"2c8c910dec8b5db99994a8643fd780e8","path":"libraries/network/node.cpp","line_range":"5259-5262","gmt_create":"2026-04-23T11:16:32.2915433+04:00","gmt_modified":"2026-04-23T11:16:32.2915433+04:00"},{"id":"d48e61b6c0afbe8b0a4d20deff593854","path":"plugins/p2p/p2p_plugin.cpp","line_range":"467-482","gmt_create":"2026-04-23T11:16:32.2915433+04:00","gmt_modified":"2026-04-23T11:16:32.2915433+04:00"},{"id":"b07b9e450af40c43c796bcc7ecf03443","path":"share/vizd/config/config_witness.ini","line_range":"1-107","gmt_create":"2026-04-23T11:16:32.2920736+04:00","gmt_modified":"2026-04-23T11:16:32.2920736+04:00"},{"id":"f5e62fc26a62060b28ed790b81427d7c","path":"share/vizd/config/config_witness.ini","line_range":"1-138","gmt_create":"2026-04-23T11:18:10.15288+04:00","gmt_modified":"2026-04-23T11:18:10.15288+04:00"},{"id":"1259b9b4603fb7654c05f55dda13086b","path":"share/vizd/config/config_mongo.ini","line_range":"1-135","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"f879c180ea600db69334ce6c60ebfc67","path":"share/vizd/config/config_debug.ini","line_range":"1-126","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"89065e1727f834ef21b27213c44f73d8","path":"share/vizd/config/config_debug_mongo.ini","line_range":"1-135","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"a508dd7eb64847424ab271643cd9888c","path":"share/vizd/docker/Dockerfile-production","line_range":"1-88","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"cfae55af59e33580d0ead5c9858873b9","path":"share/vizd/docker/Dockerfile-testnet","line_range":"1-88","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"e50af0202c9d2df3c95dcd52b22a7875","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"1-82","gmt_create":"2026-04-23T11:18:10.1533955+04:00","gmt_modified":"2026-04-23T11:18:10.1533955+04:00"},{"id":"02d97913f7b4b7815c62c96757406f05","path":"share/vizd/vizd.sh","line_range":"1-82","gmt_create":"2026-04-23T11:18:10.1539142+04:00","gmt_modified":"2026-04-23T11:18:10.1539142+04:00"},{"id":"3ecc8f59e40237d675df5dc5f2ab9e3f","path":"programs/vizd/main.cpp","line_range":"106-158","gmt_create":"2026-04-23T11:18:10.1539142+04:00","gmt_modified":"2026-04-23T11:18:10.1539142+04:00"},{"id":"8ea516cf0275c865b6616ac02038e975","path":"programs/vizd/main.cpp","line_range":"167-191","gmt_create":"2026-04-23T11:18:10.1554693+04:00","gmt_modified":"2026-04-23T11:18:10.1554693+04:00"},{"id":"9e64b3a2336887764e7763504ce8f71e","path":"programs/vizd/main.cpp","line_range":"194-289","gmt_create":"2026-04-23T11:18:10.1554693+04:00","gmt_modified":"2026-04-23T11:18:10.1554693+04:00"},{"id":"c0e776269c77e718b0080a3324a03252","path":"share/vizd/vizd.sh","line_range":"13-81","gmt_create":"2026-04-23T11:18:10.1554693+04:00","gmt_modified":"2026-04-23T11:18:10.1554693+04:00"},{"id":"723df9738dcc68a8f36385eac9a23b58","path":"programs/vizd/main.cpp","line_range":"112-139","gmt_create":"2026-04-23T11:18:10.1554693+04:00","gmt_modified":"2026-04-23T11:18:10.1554693+04:00"},{"id":"66d4da5ca8d98cc1daac8e113015bc44","path":"programs/vizd/main.cpp","line_range":"211-289","gmt_create":"2026-04-23T11:18:10.1559866+04:00","gmt_modified":"2026-04-23T11:18:10.1559866+04:00"},{"id":"02a59ce905e8fa73dd8ca7f928ca2193","path":"share/vizd/config/config.ini","line_range":"118-136","gmt_create":"2026-04-23T11:18:10.1559866+04:00","gmt_modified":"2026-04-23T11:18:10.1559866+04:00"},{"id":"11a4a0b249c7d67d935d0f973bbfbf9e","path":"share/vizd/vizd.sh","line_range":"17-37","gmt_create":"2026-04-23T11:18:10.1565009+04:00","gmt_modified":"2026-04-23T11:18:10.1565009+04:00"},{"id":"8d40a619d37d62a4174c9e4f961de6bc","path":"share/vizd/vizd.sh","line_range":"62-72","gmt_create":"2026-04-23T11:18:10.1565009+04:00","gmt_modified":"2026-04-23T11:18:10.1565009+04:00"},{"id":"f61e616c21dc286dc1ae08fad69742ae","path":"share/vizd/vizd.sh","line_range":"74-81","gmt_create":"2026-04-23T11:18:10.1565009+04:00","gmt_modified":"2026-04-23T11:18:10.1565009+04:00"},{"id":"b577652662571d1a6efff44b8a3bedac","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"45-51","gmt_create":"2026-04-23T11:18:10.1570174+04:00","gmt_modified":"2026-04-23T11:18:10.1570174+04:00"},{"id":"27e17a8b16a2046c86431c4efb55c490","path":"documentation/building.md","line_range":"11-15","gmt_create":"2026-04-23T11:18:10.1570174+04:00","gmt_modified":"2026-04-23T11:18:10.1570174+04:00"},{"id":"f95c6fd9bbadfc95b3e751af0eedc850","path":"share/vizd/config/config.ini","line_range":"73-85","gmt_create":"2026-04-23T11:18:10.1570174+04:00","gmt_modified":"2026-04-23T11:18:10.1570174+04:00"},{"id":"d7563de88c1c2455fbab29fc8bf59151","path":"share/vizd/config/config_testnet.ini","line_range":"69-73","gmt_create":"2026-04-23T11:18:10.1575321+04:00","gmt_modified":"2026-04-23T11:18:10.1575321+04:00"},{"id":"66a1852e5ddbbf1c1e3623904184dd7f","path":"share/vizd/config/config_witness.ini","line_range":"72-84","gmt_create":"2026-04-23T11:18:10.1575321+04:00","gmt_modified":"2026-04-23T11:18:10.1575321+04:00"},{"id":"fac32e0593f6022cefafd878acb27805","path":"share/vizd/config/config.ini","line_range":"1-16","gmt_create":"2026-04-23T11:18:10.1580572+04:00","gmt_modified":"2026-04-23T11:18:10.1580572+04:00"},{"id":"f230a2eda062b0bb4b25752269697907","path":"share/vizd/config/config_testnet.ini","line_range":"1-11","gmt_create":"2026-04-23T11:18:10.1580572+04:00","gmt_modified":"2026-04-23T11:18:10.1580572+04:00"},{"id":"5b0c578c897b0e81a8472eb992c1948c","path":"share/vizd/config/config_witness.ini","line_range":"1-15","gmt_create":"2026-04-23T11:18:10.1580572+04:00","gmt_modified":"2026-04-23T11:18:10.1580572+04:00"},{"id":"6ee3005060680b6efd42fd067cd1b6fa","path":"libraries/network/include/graphene/network/config.hpp","line_range":"54-56","gmt_create":"2026-04-23T11:18:10.1580572+04:00","gmt_modified":"2026-04-23T11:18:10.1580572+04:00"},{"id":"2a51e3bcda512928b2c175f069b49da1","path":"libraries/network/include/graphene/network/config.hpp","line_range":"105-106","gmt_create":"2026-04-23T11:18:10.158578+04:00","gmt_modified":"2026-04-23T11:18:10.158578+04:00"},{"id":"e0fb8983bc6bcc17a8c8c5ad398307ba","path":"documentation/plugin.md","line_range":"14-18","gmt_create":"2026-04-23T11:18:10.1596229+04:00","gmt_modified":"2026-04-23T11:18:10.1596229+04:00"},{"id":"dc45b878fea55940e84795c898d534e2","path":"share/vizd/config/config.ini","line_range":"17-72","gmt_create":"2026-04-23T11:18:10.1596229+04:00","gmt_modified":"2026-04-23T11:18:10.1596229+04:00"},{"id":"9b21fb63c2c0f7d75fdcc009d4ec9797","path":"share/vizd/config/config.ini","line_range":"49-67","gmt_create":"2026-04-23T11:18:10.1596229+04:00","gmt_modified":"2026-04-23T11:18:10.1596229+04:00"},{"id":"0c2dc00bd927808ce5deb1882d22281e","path":"plugins/snapshot/plugin.cpp","line_range":"2974-2983","gmt_create":"2026-04-23T11:18:10.1601402+04:00","gmt_modified":"2026-04-23T11:18:10.1601402+04:00"},{"id":"b605e7c4ef39a7dcf4decc6078a67230","path":"plugins/snapshot/plugin.cpp","line_range":"3044-3050","gmt_create":"2026-04-23T11:18:10.1601402+04:00","gmt_modified":"2026-04-23T11:18:10.1601402+04:00"},{"id":"585169926520ae8df39c3a059f57c8d0","path":"plugins/snapshot/plugin.cpp","line_range":"3070-3090","gmt_create":"2026-04-23T11:18:10.1601402+04:00","gmt_modified":"2026-04-23T11:18:10.1601402+04:00"},{"id":"e6f25269916d6af7894cc98681fba58a","path":"plugins/chain/plugin.cpp","line_range":"352-355","gmt_create":"2026-04-23T11:18:10.1606828+04:00","gmt_modified":"2026-04-23T11:18:10.1606828+04:00"},{"id":"8cef3542a1f8beb59e711d1019148801","path":"thirdparty/appbase/application.cpp","line_range":"298-300","gmt_create":"2026-04-23T11:18:10.1607553+04:00","gmt_modified":"2026-04-23T11:18:10.1607553+04:00"},{"id":"9e7faefdb8e8ae15d81ef925ba52ede7","path":"documentation/snapshot-plugin.md","line_range":"1-365","gmt_create":"2026-04-23T11:18:10.1607553+04:00","gmt_modified":"2026-04-23T11:18:10.1607553+04:00"},{"id":"b3d3f4e10ccf640de58c527e09a7f0ea","path":"share/vizd/docker/Dockerfile-production","line_range":"74-87","gmt_create":"2026-04-23T11:18:10.1607553+04:00","gmt_modified":"2026-04-23T11:18:10.1607553+04:00"},{"id":"ff12cf82125b232102ae8ec380b68997","path":"share/vizd/docker/Dockerfile-testnet","line_range":"75-87","gmt_create":"2026-04-23T11:18:10.1607553+04:00","gmt_modified":"2026-04-23T11:18:10.1607553+04:00"},{"id":"3f3c0b55c7eafaf833e73e62b702d574","path":"share/vizd/docker/Dockerfile-lowmem","line_range":"68-81","gmt_create":"2026-04-23T11:18:10.1607553+04:00","gmt_modified":"2026-04-23T11:18:10.1607553+04:00"},{"id":"8e0b63e0554f6ef9ba9046c1e9e43a45","path":"share/vizd/docker/Dockerfile-production","line_range":"46-52","gmt_create":"2026-04-23T11:18:10.1612574+04:00","gmt_modified":"2026-04-23T11:18:10.1612574+04:00"},{"id":"3cff82760ed755da0f3b8ef754b949b7","path":"share/vizd/docker/Dockerfile-testnet","line_range":"46-52","gmt_create":"2026-04-23T11:18:10.1612574+04:00","gmt_modified":"2026-04-23T11:18:10.1612574+04:00"},{"id":"7d4fe637b747b179eb9a0fed7f670bf8","path":"documentation/testnet.md","line_range":"21-37","gmt_create":"2026-04-23T11:18:10.1623667+04:00","gmt_modified":"2026-04-23T11:18:10.1623667+04:00"},{"id":"ddbee7a909c340a5ede92adff06a411b","path":"share/vizd/vizd.sh","line_range":"44-53","gmt_create":"2026-04-23T11:18:10.1639061+04:00","gmt_modified":"2026-04-23T11:18:10.1639061+04:00"},{"id":"b33b3396bd5cb46ada1e5bf1c2e4bae9","path":"plugins/witness/witness.cpp","line_range":"125-130","gmt_create":"2026-04-23T11:18:10.1639061+04:00","gmt_modified":"2026-04-23T11:18:10.1639061+04:00"},{"id":"ad929e01065409fab84d7e5e33b73eb3","path":"libraries/protocol/include/graphene/protocol/config_testnet.hpp","line_range":"57-59","gmt_create":"2026-04-23T11:18:10.1644172+04:00","gmt_modified":"2026-04-23T11:18:10.1644172+04:00"},{"id":"4c4362032489436035a502ce6ad07ea6","path":"libraries/protocol/include/graphene/protocol/config.hpp","line_range":"57-59","gmt_create":"2026-04-23T11:18:10.1644172+04:00","gmt_modified":"2026-04-23T11:18:10.1644172+04:00"},{"id":"79d9f0965fb73ee6e499532bdd2c72c3","path":"plugins/chain/plugin.cpp","line_range":"58-121","gmt_create":"2026-04-23T11:18:36.4196893+04:00","gmt_modified":"2026-04-23T11:18:36.4196893+04:00"},{"id":"79ab2542b5c96058f09208f1cd2cd6fd","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"72-573","gmt_create":"2026-04-23T11:46:31.22747+04:00","gmt_modified":"2026-04-23T11:46:31.22747+04:00"},{"id":"05b62d2805cb3a311c10475a638f22d4","path":"plugins/p2p/p2p_plugin.cpp","line_range":"500-560","gmt_create":"2026-04-23T11:46:31.2290433+04:00","gmt_modified":"2026-04-23T11:46:31.2290433+04:00"},{"id":"cf043d8e90537efdf39b7880e8959da4","path":"libraries/network/node.cpp","line_range":"5281-5286","gmt_create":"2026-04-23T11:46:31.2290433+04:00","gmt_modified":"2026-04-23T11:46:31.2290433+04:00"},{"id":"fed4d7f6216f50b46ffc2f059db54915","path":"libraries/network/include/graphene/network/config.hpp","line_range":"1-106","gmt_create":"2026-04-23T11:46:31.2327184+04:00","gmt_modified":"2026-04-23T11:46:31.2327184+04:00"},{"id":"df5f1767872da5ad020edc60475ab9b9","path":"plugins/p2p/p2p_plugin.cpp","line_range":"1-742","gmt_create":"2026-04-23T11:46:31.2332901+04:00","gmt_modified":"2026-04-23T11:46:31.2332901+04:00"},{"id":"b32ad9e7a8c85cae6d0a130d7399ace9","path":"libraries/network/include/graphene/network/node.hpp","line_range":"182-304","gmt_create":"2026-04-23T11:46:31.2332901+04:00","gmt_modified":"2026-04-23T11:46:31.2332901+04:00"},{"id":"be6d9b8a21e11f9cb8bac726d2b15873","path":"libraries/network/node.cpp","line_range":"780-790","gmt_create":"2026-04-23T11:46:31.2343673+04:00","gmt_modified":"2026-04-23T11:46:31.2343673+04:00"},{"id":"395304bf3b17e833fe3418a2227e8d20","path":"libraries/network/peer_connection.cpp","line_range":"310-354","gmt_create":"2026-04-23T11:46:31.2386944+04:00","gmt_modified":"2026-04-23T11:46:31.2386944+04:00"},{"id":"bd2df0ef0f3a3569038ff93abf7f049a","path":"libraries/network/core_messages.cpp","line_range":"30-49","gmt_create":"2026-04-23T11:46:31.2399204+04:00","gmt_modified":"2026-04-23T11:46:31.2399204+04:00"},{"id":"d0629cc7855cceaf537ab39cb2b4e1cf","path":"libraries/network/stcp_socket.cpp","line_range":"49-177","gmt_create":"2026-04-23T11:46:31.2420828+04:00","gmt_modified":"2026-04-23T11:46:31.2420828+04:00"},{"id":"3865aa6bd2579d32e36d7fa59c617b84","path":"libraries/network/peer_database.cpp","line_range":"41-82","gmt_create":"2026-04-23T11:46:31.2426586+04:00","gmt_modified":"2026-04-23T11:46:31.2426586+04:00"},{"id":"ea4c7e04621ef7790eb86a4d944b26e4","path":"libraries/network/include/graphene/network/message.hpp","line_range":"70-105","gmt_create":"2026-04-23T11:46:31.2435114+04:00","gmt_modified":"2026-04-23T11:46:31.2435114+04:00"},{"id":"5263aa5e9c9cc4ee3589a4347ba00d1a","path":"libraries/network/node.cpp","line_range":"3710-3723","gmt_create":"2026-04-23T11:46:31.2441196+04:00","gmt_modified":"2026-04-23T11:46:31.2441196+04:00"},{"id":"a3e7a4bb9a35beeeca37a93cc44b85f2","path":"libraries/network/node.cpp","line_range":"312-381","gmt_create":"2026-04-23T11:46:31.2441196+04:00","gmt_modified":"2026-04-23T11:46:31.2441196+04:00"},{"id":"c07e1357b4c5c16aa56461f40df51f3f","path":"libraries/network/node.cpp","line_range":"383-420","gmt_create":"2026-04-23T11:46:31.2446952+04:00","gmt_modified":"2026-04-23T11:46:31.2446952+04:00"},{"id":"ab29edddf2ddea94dfa66818525a4f69","path":"libraries/network/include/graphene/network/node.hpp","line_range":"173-179","gmt_create":"2026-04-23T11:46:31.2446952+04:00","gmt_modified":"2026-04-23T11:46:31.2446952+04:00"},{"id":"a047fc28da4096adb5975768b23d6568","path":"libraries/network/node.cpp","line_range":"4920-4970","gmt_create":"2026-04-23T11:46:31.2446952+04:00","gmt_modified":"2026-04-23T11:46:31.2446952+04:00"},{"id":"87ef8faa755216d0d684261ca4cf1296","path":"libraries/network/node.cpp","line_range":"5128-5131","gmt_create":"2026-04-23T11:46:31.2451978+04:00","gmt_modified":"2026-04-23T11:46:31.2451978+04:00"},{"id":"36c1fcbd66f9c3ed0ccd021257219b26","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"322-346","gmt_create":"2026-04-23T11:46:31.2462017+04:00","gmt_modified":"2026-04-23T11:46:31.2462017+04:00"},{"id":"8bc218238f6ca1f8614c8573c3d99ddb","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"428-448","gmt_create":"2026-04-23T11:46:31.2467274+04:00","gmt_modified":"2026-04-23T11:46:31.2467274+04:00"},{"id":"edb1f25b3c55f03a9497c43c9ed563d9","path":"libraries/network/node.cpp","line_range":"4900-4970","gmt_create":"2026-04-23T11:46:31.2475391+04:00","gmt_modified":"2026-04-23T11:46:31.2475391+04:00"},{"id":"f865c1de13ecfad0ba10d76be6f51e79","path":"libraries/network/node.cpp","line_range":"4164-4168","gmt_create":"2026-04-23T11:46:31.2486185+04:00","gmt_modified":"2026-04-23T11:46:31.2486185+04:00"},{"id":"46360683264d8d799f49154a37e77c95","path":"libraries/network/include/graphene/network/node.hpp","line_range":"298-304","gmt_create":"2026-04-23T11:46:31.2486185+04:00","gmt_modified":"2026-04-23T11:46:31.2486185+04:00"},{"id":"92a7248b320d281221528fd4b3586fae","path":"plugins/p2p/p2p_plugin.cpp","line_range":"616-618","gmt_create":"2026-04-23T11:46:31.2486185+04:00","gmt_modified":"2026-04-23T11:46:31.2486185+04:00"},{"id":"d3c1206d30a580d9a1f8e5f0a0e37caa","path":"libraries/network/include/graphene/network/node.hpp","line_range":"26-28","gmt_create":"2026-04-23T11:46:31.2496263+04:00","gmt_modified":"2026-04-23T11:46:31.2496263+04:00"},{"id":"47a7ec224c52b37cda36330051d8989e","path":"libraries/network/include/graphene/network/peer_connection.hpp","line_range":"26-29","gmt_create":"2026-04-23T11:46:31.2496263+04:00","gmt_modified":"2026-04-23T11:46:31.2496263+04:00"},{"id":"46f63b299b6fb267a4f639c2d0d892de","path":"libraries/network/include/graphene/network/core_messages.hpp","line_range":"26-28","gmt_create":"2026-04-23T11:46:31.2496263+04:00","gmt_modified":"2026-04-23T11:46:31.2496263+04:00"},{"id":"094de29302ce2b97582033a6a5e5f81d","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","line_range":"26-27","gmt_create":"2026-04-23T11:46:31.2506316+04:00","gmt_modified":"2026-04-23T11:46:31.2506316+04:00"},{"id":"c57df28bcfcd9ae39dd00ccdbfab27c0","path":"libraries/network/include/graphene/network/peer_database.hpp","line_range":"39-45","gmt_create":"2026-04-23T11:46:31.2540973+04:00","gmt_modified":"2026-04-23T11:46:31.2540973+04:00"},{"id":"cda16bb7e30e75cab0c3ba93c74374ac","path":"libraries/network/include/graphene/network/node.hpp","line_range":"288-298","gmt_create":"2026-04-23T11:46:31.2542433+04:00","gmt_modified":"2026-04-23T11:46:31.2542433+04:00"},{"id":"8ee1a4f18a4402289535e116f51b9516","path":"libraries/network/include/graphene/network/message.hpp","line_range":"85-105","gmt_create":"2026-04-23T11:46:31.2548401+04:00","gmt_modified":"2026-04-23T11:46:31.2548401+04:00"},{"id":"302a2b97d7155d06fda21dbeb2f1b54a","path":"plugins/p2p/p2p_plugin.cpp","line_range":"585-649","gmt_create":"2026-04-23T12:16:49.7747829+04:00","gmt_modified":"2026-04-23T12:16:49.7747829+04:00"},{"id":"6af8eb79e9f65f7ea2c694223695d9a3","path":"plugins/p2p/p2p_plugin.cpp","line_range":"812-820","gmt_create":"2026-04-23T12:16:49.7747829+04:00","gmt_modified":"2026-04-23T12:16:49.7747829+04:00"},{"id":"93d54ced192f760547e10eb155a75d8e","path":"libraries/network/node.cpp","line_range":"346-347","gmt_create":"2026-04-23T12:16:50.9632338+04:00","gmt_modified":"2026-04-23T12:16:50.9632338+04:00"},{"id":"db7e02e69db0e8586e85ce97afc5cb39","path":"documentation/snapshot-plugin.md","line_range":"339-374","gmt_create":"2026-04-23T12:18:55.5891703+04:00","gmt_modified":"2026-04-23T12:18:55.5891703+04:00"},{"id":"41cf0afd5318bbd8764352fab2436ad5","path":"plugins/p2p/p2p_plugin.cpp","line_range":"673-677","gmt_create":"2026-04-23T12:18:55.5896884+04:00","gmt_modified":"2026-04-23T12:18:55.5896884+04:00"},{"id":"5d91b76995b1b78e1207caddc6168d8b","path":"plugins/p2p/p2p_plugin.cpp","line_range":"744-755","gmt_create":"2026-04-23T12:18:55.5896884+04:00","gmt_modified":"2026-04-23T12:18:55.5896884+04:00"}],"knowledge_relations":[{"id":30124,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"5b1863c24f95c4307bc9d6bd13495e98","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: .gitmodules","gmt_create":"2026-04-23T06:46:47.4280795+04:00","gmt_modified":"2026-04-23T06:46:47.4280795+04:00"},{"id":30125,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"e1da3cd2e6e4f1c39a468f27c18fed86","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/.gitmodules","gmt_create":"2026-04-23T06:46:47.429631+04:00","gmt_modified":"2026-04-23T06:46:47.429631+04:00"},{"id":30126,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"59aed13dec3dec090ca4238d87a33a3e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4301476+04:00","gmt_modified":"2026-04-23T06:46:47.4301476+04:00"},{"id":30127,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"9ef0f7dd92ad42844d61d049ea2e91f7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4301476+04:00","gmt_modified":"2026-04-23T06:46:47.4301476+04:00"},{"id":30128,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"ea84849af043a9e7eabccf5474037fdf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/appbase/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4306651+04:00","gmt_modified":"2026-04-23T06:46:47.4306651+04:00"},{"id":30129,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"bbbcb34fa600f3efb29ca006ef2eff66","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4306651+04:00","gmt_modified":"2026-04-23T06:46:47.4306651+04:00"},{"id":30130,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"33769e7ecefb7ac442a88bcc6e7fe7db","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/building.md","gmt_create":"2026-04-23T06:46:47.4311779+04:00","gmt_modified":"2026-04-23T06:46:47.4311779+04:00"},{"id":30131,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"e15d33f14b3a5dc9ebc5e50072c39aa1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: .travis.yml","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30132,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"48369ee5882470d563a4a3760712465a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-production","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30133,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"5c83db7209d29d47467923bf09fbb420","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30134,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30135,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"70883dd54389a65e0c6792812c73a8e2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30136,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"8119d11d74306341a650d0a8c0c5605b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: .github/workflows/docker-main.yml","gmt_create":"2026-04-23T06:46:47.4316969+04:00","gmt_modified":"2026-04-23T06:46:47.4316969+04:00"},{"id":30137,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"fe40dc0bce746a9c7f466b6eb7abb86b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4327004+04:00","gmt_modified":"2026-04-23T06:46:47.4327004+04:00"},{"id":30138,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"de0fafbf85e2109ebd021f91113f4c4e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30139,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3c826f15ca54d3363e6a7af0b5686211","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30140,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"586d0a978dde912618689cf19874dd4b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30141,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"922b8fed67a0bf6bcc7f3f4a2eb38ddd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/vizd/CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30142,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"48a318f357a885ebfef27b84ef5565ee","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-linux.sh","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30143,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3e55b84725e9a2931cb48b11d42ef75c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-mac.sh","gmt_create":"2026-04-23T06:46:47.433208+04:00","gmt_modified":"2026-04-23T06:46:47.433208+04:00"},{"id":30144,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3fbe84fabfaa10d8da23f6d4dad03692","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-mingw.bat","gmt_create":"2026-04-23T06:46:47.4342116+04:00","gmt_modified":"2026-04-23T06:46:47.4342116+04:00"},{"id":30145,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"1582cef3977fa0f573c3bdb3fe4a0045","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: build-msvc.bat","gmt_create":"2026-04-23T06:46:47.4342116+04:00","gmt_modified":"2026-04-23T06:46:47.4342116+04:00"},{"id":30146,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"a6554c3e99a338d898b0507a3a66ff28","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#210-213","gmt_create":"2026-04-23T06:46:47.4342116+04:00","gmt_modified":"2026-04-23T06:46:47.4342116+04:00"},{"id":30147,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"a6554c3e99a338d898b0507a3a66ff28","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 210-213","gmt_create":"2026-04-23T06:46:47.4342116+04:00","gmt_modified":"2026-04-23T06:46:47.4342116+04:00"},{"id":30148,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"b4276d0c8cc31d088a1ff447673b57a3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/CMakeLists.txt#1-3","gmt_create":"2026-04-23T06:46:47.4352158+04:00","gmt_modified":"2026-04-23T06:46:47.4352158+04:00"},{"id":30149,"source_id":"586d0a978dde912618689cf19874dd4b","target_id":"b4276d0c8cc31d088a1ff447673b57a3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-3","gmt_create":"2026-04-23T06:46:47.4352158+04:00","gmt_modified":"2026-04-23T06:46:47.4352158+04:00"},{"id":30150,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"95a23068f3cf8efeb2f469b3762d202c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/CMakeLists.txt#1-8","gmt_create":"2026-04-23T06:46:47.4362154+04:00","gmt_modified":"2026-04-23T06:46:47.4362154+04:00"},{"id":30151,"source_id":"fe40dc0bce746a9c7f466b6eb7abb86b","target_id":"95a23068f3cf8efeb2f469b3762d202c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-23T06:46:47.4362154+04:00","gmt_modified":"2026-04-23T06:46:47.4362154+04:00"},{"id":30152,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"eb47238d4d9c0bc7677c0adbb5315621","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/CMakeLists.txt#1-12","gmt_create":"2026-04-23T06:46:47.4362154+04:00","gmt_modified":"2026-04-23T06:46:47.4362154+04:00"},{"id":30153,"source_id":"de0fafbf85e2109ebd021f91113f4c4e","target_id":"eb47238d4d9c0bc7677c0adbb5315621","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-12","gmt_create":"2026-04-23T06:46:47.4372156+04:00","gmt_modified":"2026-04-23T06:46:47.4372156+04:00"},{"id":30154,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"f82191fd008239ba9828aa2407463469","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/CMakeLists.txt#1-8","gmt_create":"2026-04-23T06:46:47.4372156+04:00","gmt_modified":"2026-04-23T06:46:47.4372156+04:00"},{"id":30155,"source_id":"3c826f15ca54d3363e6a7af0b5686211","target_id":"f82191fd008239ba9828aa2407463469","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-8","gmt_create":"2026-04-23T06:46:47.4372156+04:00","gmt_modified":"2026-04-23T06:46:47.4372156+04:00"},{"id":30156,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"0b638cb0339fd1defe7fb60a33538909","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .gitmodules#1-13","gmt_create":"2026-04-23T06:46:47.4372156+04:00","gmt_modified":"2026-04-23T06:46:47.4372156+04:00"},{"id":30157,"source_id":"5b1863c24f95c4307bc9d6bd13495e98","target_id":"0b638cb0339fd1defe7fb60a33538909","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-13","gmt_create":"2026-04-23T06:46:47.4372156+04:00","gmt_modified":"2026-04-23T06:46:47.4372156+04:00"},{"id":30158,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"1b6a9427d3c622d5192d3935a64543bd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#1-271","gmt_create":"2026-04-23T06:46:47.4383382+04:00","gmt_modified":"2026-04-23T06:46:47.4383382+04:00"},{"id":30159,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"1b6a9427d3c622d5192d3935a64543bd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-271","gmt_create":"2026-04-23T06:46:47.4383382+04:00","gmt_modified":"2026-04-23T06:46:47.4383382+04:00"},{"id":30160,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"d302333235c57587186737aa4dca15e8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#3-212","gmt_create":"2026-04-23T06:46:47.4383382+04:00","gmt_modified":"2026-04-23T06:46:47.4383382+04:00"},{"id":30161,"source_id":"33769e7ecefb7ac442a88bcc6e7fe7db","target_id":"d302333235c57587186737aa4dca15e8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3-212","gmt_create":"2026-04-23T06:46:47.4393379+04:00","gmt_modified":"2026-04-23T06:46:47.4393379+04:00"},{"id":30162,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"cb84fa9cda98d6d0c8dae3b261ed7a70","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/CMakeLists.txt#16-49","gmt_create":"2026-04-23T06:46:47.4393379+04:00","gmt_modified":"2026-04-23T06:46:47.4393379+04:00"},{"id":30163,"source_id":"922b8fed67a0bf6bcc7f3f4a2eb38ddd","target_id":"cb84fa9cda98d6d0c8dae3b261ed7a70","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 16-49","gmt_create":"2026-04-23T06:46:47.440339+04:00","gmt_modified":"2026-04-23T06:46:47.440339+04:00"},{"id":30164,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"b8c001209973c30395b37fb2da7d01da","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#56-89","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30165,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"b8c001209973c30395b37fb2da7d01da","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 56-89","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30166,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3dc9c9dd6a7323c7679ba87de581b271","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#196-208","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30167,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"3dc9c9dd6a7323c7679ba87de581b271","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 196-208","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30168,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"6bfcc19ec644ada767dba2b4cd16b384","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#91-202","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30169,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"6bfcc19ec644ada767dba2b4cd16b384","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 91-202","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30170,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"daf69b54ca31d1461ddc9b5b7229eb44","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#25-212","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30171,"source_id":"33769e7ecefb7ac442a88bcc6e7fe7db","target_id":"daf69b54ca31d1461ddc9b5b7229eb44","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 25-212","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30172,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"52e6ffd6a8494783d8744074cebd0336","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/CMakeLists.txt#115-130","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30173,"source_id":"59aed13dec3dec090ca4238d87a33a3e","target_id":"52e6ffd6a8494783d8744074cebd0336","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 115-130","gmt_create":"2026-04-23T06:46:47.441339+04:00","gmt_modified":"2026-04-23T06:46:47.441339+04:00"},{"id":30174,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"c8c2228bb696aed9de796ce6fc2d85a7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/CMakeLists.txt#28","gmt_create":"2026-04-23T06:46:47.4429298+04:00","gmt_modified":"2026-04-23T06:46:47.4429298+04:00"},{"id":30175,"source_id":"9ef0f7dd92ad42844d61d049ea2e91f7","target_id":"c8c2228bb696aed9de796ce6fc2d85a7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 28","gmt_create":"2026-04-23T06:46:47.4429298+04:00","gmt_modified":"2026-04-23T06:46:47.4429298+04:00"},{"id":30176,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"7535e2fd9b45a698e5e59716482d28bf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/appbase/CMakeLists.txt#21","gmt_create":"2026-04-23T06:46:47.4438479+04:00","gmt_modified":"2026-04-23T06:46:47.4438479+04:00"},{"id":30177,"source_id":"ea84849af043a9e7eabccf5474037fdf","target_id":"7535e2fd9b45a698e5e59716482d28bf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21","gmt_create":"2026-04-23T06:46:47.4438479+04:00","gmt_modified":"2026-04-23T06:46:47.4438479+04:00"},{"id":30178,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"ca9eea091b8db2ef86264e42e38ca6ee","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/.gitmodules#1-10","gmt_create":"2026-04-23T06:46:47.4438479+04:00","gmt_modified":"2026-04-23T06:46:47.4438479+04:00"},{"id":30179,"source_id":"e1da3cd2e6e4f1c39a468f27c18fed86","target_id":"ca9eea091b8db2ef86264e42e38ca6ee","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-10","gmt_create":"2026-04-23T06:46:47.4448472+04:00","gmt_modified":"2026-04-23T06:46:47.4448472+04:00"},{"id":30180,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3dc1dfd57ce8f8f0ddb0903ecc4757e0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/CMakeLists.txt#51-101","gmt_create":"2026-04-23T06:46:47.4448472+04:00","gmt_modified":"2026-04-23T06:46:47.4448472+04:00"},{"id":30181,"source_id":"59aed13dec3dec090ca4238d87a33a3e","target_id":"3dc1dfd57ce8f8f0ddb0903ecc4757e0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 51-101","gmt_create":"2026-04-23T06:46:47.4448472+04:00","gmt_modified":"2026-04-23T06:46:47.4448472+04:00"},{"id":30182,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"4be9aed880930cc1db12f5577deb6b36","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#97-104","gmt_create":"2026-04-23T06:46:47.4448472+04:00","gmt_modified":"2026-04-23T06:46:47.4448472+04:00"},{"id":30183,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"4be9aed880930cc1db12f5577deb6b36","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 97-104","gmt_create":"2026-04-23T06:46:47.4458491+04:00","gmt_modified":"2026-04-23T06:46:47.4458491+04:00"},{"id":30184,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"c7aa1ccb058236d7733e705cdb185dd8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#160-183","gmt_create":"2026-04-23T06:46:47.4458491+04:00","gmt_modified":"2026-04-23T06:46:47.4458491+04:00"},{"id":30185,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"c7aa1ccb058236d7733e705cdb185dd8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 160-183","gmt_create":"2026-04-23T06:46:47.4458491+04:00","gmt_modified":"2026-04-23T06:46:47.4458491+04:00"},{"id":30186,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"9c24cd1c93b483ba1aede76c89f958b2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#106-110","gmt_create":"2026-04-23T06:46:47.4458491+04:00","gmt_modified":"2026-04-23T06:46:47.4458491+04:00"},{"id":30187,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"9c24cd1c93b483ba1aede76c89f958b2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 106-110","gmt_create":"2026-04-23T06:46:47.4468479+04:00","gmt_modified":"2026-04-23T06:46:47.4468479+04:00"},{"id":30188,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"f565e4a16509997a202ecb545fdd1d94","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/CMakeLists.txt#10-14","gmt_create":"2026-04-23T06:46:47.4468479+04:00","gmt_modified":"2026-04-23T06:46:47.4468479+04:00"},{"id":30189,"source_id":"922b8fed67a0bf6bcc7f3f4a2eb38ddd","target_id":"f565e4a16509997a202ecb545fdd1d94","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 10-14","gmt_create":"2026-04-23T06:46:47.4468479+04:00","gmt_modified":"2026-04-23T06:46:47.4468479+04:00"},{"id":30190,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"73b1b23eeea50d8b237bb80c8dc5bdc3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/CMakeLists.txt#1-58","gmt_create":"2026-04-23T06:46:47.4478478+04:00","gmt_modified":"2026-04-23T06:46:47.4478478+04:00"},{"id":30191,"source_id":"922b8fed67a0bf6bcc7f3f4a2eb38ddd","target_id":"73b1b23eeea50d8b237bb80c8dc5bdc3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-58","gmt_create":"2026-04-23T06:46:47.4478478+04:00","gmt_modified":"2026-04-23T06:46:47.4478478+04:00"},{"id":30192,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"a151de1bba876645d0074033f71f3cd0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .travis.yml#1-46","gmt_create":"2026-04-23T06:46:47.4478478+04:00","gmt_modified":"2026-04-23T06:46:47.4478478+04:00"},{"id":30193,"source_id":"e15d33f14b3a5dc9ebc5e50072c39aa1","target_id":"a151de1bba876645d0074033f71f3cd0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-46","gmt_create":"2026-04-23T06:46:47.4478478+04:00","gmt_modified":"2026-04-23T06:46:47.4478478+04:00"},{"id":30194,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"b93b1b04a108f6289a1e7bad2a4ed2fb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .github/workflows/docker-main.yml#1-41","gmt_create":"2026-04-23T06:46:47.4478478+04:00","gmt_modified":"2026-04-23T06:46:47.4478478+04:00"},{"id":30195,"source_id":"8119d11d74306341a650d0a8c0c5605b","target_id":"b93b1b04a108f6289a1e7bad2a4ed2fb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-41","gmt_create":"2026-04-23T06:46:47.4488476+04:00","gmt_modified":"2026-04-23T06:46:47.4488476+04:00"},{"id":30196,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"ee015920fc0fc039247a7d3b4eac89ed","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#46-54","gmt_create":"2026-04-23T06:46:47.4488476+04:00","gmt_modified":"2026-04-23T06:46:47.4488476+04:00"},{"id":30197,"source_id":"5c83db7209d29d47467923bf09fbb420","target_id":"ee015920fc0fc039247a7d3b4eac89ed","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-54","gmt_create":"2026-04-23T06:46:47.4498474+04:00","gmt_modified":"2026-04-23T06:46:47.4498474+04:00"},{"id":30198,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"19f7d5497751e6e4be7ea65ce7019aa9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#45-53","gmt_create":"2026-04-23T06:46:47.4498474+04:00","gmt_modified":"2026-04-23T06:46:47.4498474+04:00"},{"id":30199,"source_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","target_id":"19f7d5497751e6e4be7ea65ce7019aa9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45-53","gmt_create":"2026-04-23T06:46:47.4498474+04:00","gmt_modified":"2026-04-23T06:46:47.4498474+04:00"},{"id":30200,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"3d840e85c97e5b7fc8d3d7945d087608","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-mongo#74-82","gmt_create":"2026-04-23T06:46:47.4508475+04:00","gmt_modified":"2026-04-23T06:46:47.4508475+04:00"},{"id":30201,"source_id":"70883dd54389a65e0c6792812c73a8e2","target_id":"3d840e85c97e5b7fc8d3d7945d087608","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 74-82","gmt_create":"2026-04-23T06:46:47.4508475+04:00","gmt_modified":"2026-04-23T06:46:47.4508475+04:00"},{"id":30202,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"032cb0f8e6385f71f41d9c37e66b560c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#147-156","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30203,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"032cb0f8e6385f71f41d9c37e66b560c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 147-156","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30204,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"6223bbabeb98e81094bb095976dbb9b3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#186-188","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30205,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"6223bbabeb98e81094bb095976dbb9b3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 186-188","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30206,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"e368f0f4b37dd155690ceb490ab0fb6e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#190-194","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30207,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"e368f0f4b37dd155690ceb490ab0fb6e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 190-194","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30208,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"1500dc5624650580e36408796d490a11","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#204-208","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30209,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"1500dc5624650580e36408796d490a11","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 204-208","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30210,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"004f0f1e04b64571284e92edb13fe927","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#29-31","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30211,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"004f0f1e04b64571284e92edb13fe927","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 29-31","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30212,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"54ee4168accbfb06f382297e1e5e2aeb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#76-137","gmt_create":"2026-04-23T06:46:47.4518468+04:00","gmt_modified":"2026-04-23T06:46:47.4518468+04:00"},{"id":30213,"source_id":"33769e7ecefb7ac442a88bcc6e7fe7db","target_id":"54ee4168accbfb06f382297e1e5e2aeb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 76-137","gmt_create":"2026-04-23T06:46:47.4535048+04:00","gmt_modified":"2026-04-23T06:46:47.4535048+04:00"},{"id":30214,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"c1d41ed0c7651f63b7c09975c8ec7843","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#138-199","gmt_create":"2026-04-23T06:46:47.4535048+04:00","gmt_modified":"2026-04-23T06:46:47.4535048+04:00"},{"id":30215,"source_id":"33769e7ecefb7ac442a88bcc6e7fe7db","target_id":"c1d41ed0c7651f63b7c09975c8ec7843","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 138-199","gmt_create":"2026-04-23T06:46:47.4535048+04:00","gmt_modified":"2026-04-23T06:46:47.4535048+04:00"},{"id":30216,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"c0806cc4754e0262902e1cf12737a7c6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: CMakeLists.txt#91-156","gmt_create":"2026-04-23T06:46:47.4535048+04:00","gmt_modified":"2026-04-23T06:46:47.4535048+04:00"},{"id":30217,"source_id":"bbbcb34fa600f3efb29ca006ef2eff66","target_id":"c0806cc4754e0262902e1cf12737a7c6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 91-156","gmt_create":"2026-04-23T06:46:47.4543572+04:00","gmt_modified":"2026-04-23T06:46:47.4543572+04:00"},{"id":30218,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"4cb7433e56905f7ac811f55f67a492e8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .travis.yml#12-42","gmt_create":"2026-04-23T06:46:47.4543572+04:00","gmt_modified":"2026-04-23T06:46:47.4543572+04:00"},{"id":30219,"source_id":"e15d33f14b3a5dc9ebc5e50072c39aa1","target_id":"4cb7433e56905f7ac811f55f67a492e8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-42","gmt_create":"2026-04-23T06:46:47.4543572+04:00","gmt_modified":"2026-04-23T06:46:47.4543572+04:00"},{"id":30220,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"c2187e808fdcad1036f49417495dc402","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .github/workflows/docker-main.yml#11-41","gmt_create":"2026-04-23T06:46:47.4553561+04:00","gmt_modified":"2026-04-23T06:46:47.4553561+04:00"},{"id":30221,"source_id":"8119d11d74306341a650d0a8c0c5605b","target_id":"c2187e808fdcad1036f49417495dc402","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-41","gmt_create":"2026-04-23T06:46:47.4553561+04:00","gmt_modified":"2026-04-23T06:46:47.4553561+04:00"},{"id":30222,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"34606a0a129754acaca66ba1513465d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-linux.sh#39","gmt_create":"2026-04-23T06:46:47.4553561+04:00","gmt_modified":"2026-04-23T06:46:47.4553561+04:00"},{"id":30223,"source_id":"48a318f357a885ebfef27b84ef5565ee","target_id":"34606a0a129754acaca66ba1513465d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 39","gmt_create":"2026-04-23T06:46:47.4563572+04:00","gmt_modified":"2026-04-23T06:46:47.4563572+04:00"},{"id":30224,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"2400ee9418e6ca496e1b25b5c0444248","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mac.sh#35","gmt_create":"2026-04-23T06:46:47.4563572+04:00","gmt_modified":"2026-04-23T06:46:47.4563572+04:00"},{"id":30225,"source_id":"3e55b84725e9a2931cb48b11d42ef75c","target_id":"2400ee9418e6ca496e1b25b5c0444248","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35","gmt_create":"2026-04-23T06:46:47.4573573+04:00","gmt_modified":"2026-04-23T06:46:47.4573573+04:00"},{"id":30226,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"457ef8b5c7cbf6167a609a1d56e8062d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-mingw.bat#99","gmt_create":"2026-04-23T06:46:47.4678693+04:00","gmt_modified":"2026-04-23T06:46:47.4678693+04:00"},{"id":30227,"source_id":"3fbe84fabfaa10d8da23f6d4dad03692","target_id":"457ef8b5c7cbf6167a609a1d56e8062d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 99","gmt_create":"2026-04-23T06:46:47.4688679+04:00","gmt_modified":"2026-04-23T06:46:47.4688679+04:00"},{"id":30228,"source_id":"418196e8-0815-496e-b69d-8458e1f3cfef","target_id":"33a4e4430e70d59ac8350609498374cb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: build-msvc.bat#91","gmt_create":"2026-04-23T06:46:47.4688679+04:00","gmt_modified":"2026-04-23T06:46:47.4688679+04:00"},{"id":30229,"source_id":"1582cef3977fa0f573c3bdb3fe4a0045","target_id":"33a4e4430e70d59ac8350609498374cb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 91","gmt_create":"2026-04-23T06:46:47.4688679+04:00","gmt_modified":"2026-04-23T06:46:47.4688679+04:00"},{"id":30246,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"a7e56ec55d2393204c9701d977a9400c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2026-04-23T06:48:46.2426466+04:00","gmt_modified":"2026-04-23T06:48:46.2426466+04:00"},{"id":30248,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"4a06a01de185f2302afb08f24f3c2b84","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-88","gmt_create":"2026-04-23T06:48:46.2432729+04:00","gmt_modified":"2026-04-23T06:48:46.2432729+04:00"},{"id":30250,"source_id":"87c4f90564e8fbfb6348ad688ef97318","target_id":"afdbaea77133cc08160f2954aae9d02c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-52","gmt_create":"2026-04-23T06:48:46.2437761+04:00","gmt_modified":"2026-04-23T06:48:46.2437761+04:00"},{"id":30252,"source_id":"9560988721d95f90724da96e6a4ac318","target_id":"86be1cb2396b0667cd9b2676e146da4f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-52","gmt_create":"2026-04-23T06:48:46.2454239+04:00","gmt_modified":"2026-04-23T06:48:46.2454239+04:00"},{"id":30254,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"03671e2406d9aa4281ec8988ebd11ea3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-76","gmt_create":"2026-04-23T06:48:46.2459283+04:00","gmt_modified":"2026-04-23T06:48:46.2459283+04:00"},{"id":30256,"source_id":"87c4f90564e8fbfb6348ad688ef97318","target_id":"4d53110f843225004c76883ddaf8a3db","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 16-52","gmt_create":"2026-04-23T06:48:46.2464466+04:00","gmt_modified":"2026-04-23T06:48:46.2464466+04:00"},{"id":30258,"source_id":"104cf6b015d8e526f86f8f74b8d4d146","target_id":"6b4ecd2cef1f64d73ebb15271ad63dec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 30-158","gmt_create":"2026-04-23T06:48:46.2469786+04:00","gmt_modified":"2026-04-23T06:48:46.2469786+04:00"},{"id":30260,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"846c3fae1de48cd9c46b1ffde792c266","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 675-780","gmt_create":"2026-04-23T06:48:46.2469786+04:00","gmt_modified":"2026-04-23T06:48:46.2469786+04:00"},{"id":30262,"source_id":"104cf6b015d8e526f86f8f74b8d4d146","target_id":"42fe843c72050e328e7b8c97676e68ee","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-107","gmt_create":"2026-04-23T06:48:46.2474933+04:00","gmt_modified":"2026-04-23T06:48:46.2474933+04:00"},{"id":30264,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"9824dc418fd477d361e2cb113d2d8a6d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 885-987","gmt_create":"2026-04-23T06:48:46.2480112+04:00","gmt_modified":"2026-04-23T06:48:46.2480112+04:00"},{"id":30266,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"c70d834a6c61afda086e00d45a34530e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 789-883","gmt_create":"2026-04-23T06:48:46.2480112+04:00","gmt_modified":"2026-04-23T06:48:46.2480112+04:00"},{"id":30268,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"38ba886c685a78655cd83f13bc1ee1de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1400-1484","gmt_create":"2026-04-23T06:48:46.2480112+04:00","gmt_modified":"2026-04-23T06:48:46.2480112+04:00"},{"id":30270,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"3f30e9195428c3c0d628347672216881","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1046-1288","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30272,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"385e16c713d33cee472d76fd9309c8a7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1902-2038","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30274,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"a656f741ca3a98ea4e39650246c13e31","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1470-1599","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30276,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"210282284c4a151d5bb31f5c22acb0e2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2473-2510","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30278,"source_id":"37fb39091ee4b69fe1e682497ff46b55","target_id":"fce82559c856b77e5143284446449214","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 247-273","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30280,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"f9743c7d2ad207b1a79a0e95d75247cc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1418-1436","gmt_create":"2026-04-23T06:48:46.2490142+04:00","gmt_modified":"2026-04-23T06:48:46.2490142+04:00"},{"id":30282,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"d73dcca02dff8f3073d543232ea8d398","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 737-743","gmt_create":"2026-04-23T06:48:46.2506532+04:00","gmt_modified":"2026-04-23T06:48:46.2506532+04:00"},{"id":30284,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"71b4159a5d3213112920bd296d8e89bb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1390-1484","gmt_create":"2026-04-23T06:48:46.2506532+04:00","gmt_modified":"2026-04-23T06:48:46.2506532+04:00"},{"id":30286,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"ec58f910f97a726df18f75c0c17baada","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1440-1449","gmt_create":"2026-04-23T06:48:46.2515778+04:00","gmt_modified":"2026-04-23T06:48:46.2515778+04:00"},{"id":30288,"source_id":"571d673b1b49568d584e159036820875","target_id":"75b03c62708ffd28a4f9d687421e1c28","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 335-551","gmt_create":"2026-04-23T06:48:46.2515778+04:00","gmt_modified":"2026-04-23T06:48:46.2515778+04:00"},{"id":30290,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"a4baae31b894b18b4796bc14910ee131","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1326-1376","gmt_create":"2026-04-23T06:48:46.2525778+04:00","gmt_modified":"2026-04-23T06:48:46.2525778+04:00"},{"id":30292,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"0ae3da57453e773fb07f47dbd5886c6a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1426-1435","gmt_create":"2026-04-23T06:48:46.2525778+04:00","gmt_modified":"2026-04-23T06:48:46.2525778+04:00"},{"id":30294,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"492bfc10ec7008ed8d3c0fcb9eb2986e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 745-750","gmt_create":"2026-04-23T06:48:46.2535778+04:00","gmt_modified":"2026-04-23T06:48:46.2535778+04:00"},{"id":30296,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"c6fe65da69747dabf7418f6ebfbc16a6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 697-700","gmt_create":"2026-04-23T06:48:46.2535778+04:00","gmt_modified":"2026-04-23T06:48:46.2535778+04:00"},{"id":30298,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"2e53433527d0fe2c5b8af01e4c75ab33","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2831-2845","gmt_create":"2026-04-23T06:48:46.2535778+04:00","gmt_modified":"2026-04-23T06:48:46.2535778+04:00"},{"id":30300,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"3d5e7d45a447644705a300e602712ab4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1719-1748","gmt_create":"2026-04-23T06:48:46.2535778+04:00","gmt_modified":"2026-04-23T06:48:46.2535778+04:00"},{"id":30302,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"311030227d7a27b006fece17d9efd018","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1706-1748","gmt_create":"2026-04-23T06:48:46.2546702+04:00","gmt_modified":"2026-04-23T06:48:46.2546702+04:00"},{"id":30304,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"0fdcd022e550104e434876fa650f53c4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 490-560","gmt_create":"2026-04-23T06:48:46.2546702+04:00","gmt_modified":"2026-04-23T06:48:46.2546702+04:00"},{"id":30306,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"f0e049888c51f9cd8f614dd4d55fe05b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2945-2959","gmt_create":"2026-04-23T06:48:46.2546702+04:00","gmt_modified":"2026-04-23T06:48:46.2546702+04:00"},{"id":30308,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"29998ee4937bbfcaafdb8749dfb3fdf3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 441-5201","gmt_create":"2026-04-23T06:48:46.2556696+04:00","gmt_modified":"2026-04-23T06:48:46.2556696+04:00"},{"id":30310,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"30f19521c0c40fc613bf93a90c654dc9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 542-559","gmt_create":"2026-04-23T06:48:46.2650322+04:00","gmt_modified":"2026-04-23T06:48:46.2650322+04:00"},{"id":30312,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"6e3b8e0770e0fd14881374dd8b3c658e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2976-3009","gmt_create":"2026-04-23T06:48:46.2655384+04:00","gmt_modified":"2026-04-23T06:48:46.2655384+04:00"},{"id":30314,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"28efe21ebfbcc6e72bb32ca3977b1939","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2468-2570","gmt_create":"2026-04-23T06:48:46.2660616+04:00","gmt_modified":"2026-04-23T06:48:46.2660616+04:00"},{"id":30316,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"12dbcde9e60b1141f215fb60b089b7c8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 735-740","gmt_create":"2026-04-23T06:48:46.2666028+04:00","gmt_modified":"2026-04-23T06:48:46.2666028+04:00"},{"id":30318,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"b8f460ca6d8e0942ab1f7226cd2a1b21","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1814-1862","gmt_create":"2026-04-23T06:48:46.2666028+04:00","gmt_modified":"2026-04-23T06:48:46.2666028+04:00"},{"id":30320,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"739243787c097dbb8797bb297c748868","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 772-785","gmt_create":"2026-04-23T06:48:46.2666028+04:00","gmt_modified":"2026-04-23T06:48:46.2666028+04:00"},{"id":30322,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"8ae8252af5d5c484e0710b855ad18866","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 165-176","gmt_create":"2026-04-23T06:48:46.2671263+04:00","gmt_modified":"2026-04-23T06:48:46.2671263+04:00"},{"id":30324,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"444b9950972fec08b3139f4d50cf0a6e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1587-1596","gmt_create":"2026-04-23T06:48:46.2676452+04:00","gmt_modified":"2026-04-23T06:48:46.2676452+04:00"},{"id":30326,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"5abd9dec8f7100b36c876b18e58d4bb7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1610-1620","gmt_create":"2026-04-23T06:48:46.2676452+04:00","gmt_modified":"2026-04-23T06:48:46.2676452+04:00"},{"id":30328,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"2d8f8aa2a2e0d2b778c984550ade3061","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1812-1877","gmt_create":"2026-04-23T06:48:46.2681667+04:00","gmt_modified":"2026-04-23T06:48:46.2681667+04:00"},{"id":30330,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"8a1470c12fc58346550796f023996d4f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 24-34","gmt_create":"2026-04-23T06:48:46.2681667+04:00","gmt_modified":"2026-04-23T06:48:46.2681667+04:00"},{"id":30332,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"4ca7141219ec0e9f25ffdbdb9cda2fa1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2598-2680","gmt_create":"2026-04-23T06:48:46.2692203+04:00","gmt_modified":"2026-04-23T06:48:46.2692203+04:00"},{"id":30334,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"9c4238b8e0cf99b348e22120eac41904","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 364-432","gmt_create":"2026-04-23T06:48:46.2692203+04:00","gmt_modified":"2026-04-23T06:48:46.2692203+04:00"},{"id":30336,"source_id":"9560988721d95f90724da96e6a4ac318","target_id":"215a79715153cc7dbc2d358d6a91799d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-38","gmt_create":"2026-04-23T06:48:46.2697373+04:00","gmt_modified":"2026-04-23T06:48:46.2697373+04:00"},{"id":30338,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"bddad6a413d83352718b613e27b97469","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2294-2464","gmt_create":"2026-04-23T06:48:46.2702565+04:00","gmt_modified":"2026-04-23T06:48:46.2702565+04:00"},{"id":30340,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"cb7f8a8d2075a597d0647057d4371101","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1378-1464","gmt_create":"2026-04-23T06:48:46.2702565+04:00","gmt_modified":"2026-04-23T06:48:46.2702565+04:00"},{"id":30360,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"b790ddd3e717ed748c2e061559e92124","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-351","gmt_create":"2026-04-23T06:50:36.8628705+04:00","gmt_modified":"2026-04-23T06:50:36.8628705+04:00"},{"id":30362,"source_id":"e12a1d568ad99d9c23753af3b983d420","target_id":"a07ab3c4bae64fb9fbd9587bd3eaae39","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45-79","gmt_create":"2026-04-23T06:50:36.8633937+04:00","gmt_modified":"2026-04-23T06:50:36.8633937+04:00"},{"id":30364,"source_id":"a090337969d7a39c7cbc9737c926d289","target_id":"bd9136208fce359f28cad48005c18445","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-93","gmt_create":"2026-04-23T06:50:36.8633937+04:00","gmt_modified":"2026-04-23T06:50:36.8633937+04:00"},{"id":30366,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"8b8b5804e7fa05a13d3a7cf1869a318d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 72-95","gmt_create":"2026-04-23T06:50:36.8639228+04:00","gmt_modified":"2026-04-23T06:50:36.8639228+04:00"},{"id":30368,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"ae1ad3620183690f60eeda5a30543601","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-106","gmt_create":"2026-04-23T06:50:36.8649523+04:00","gmt_modified":"2026-04-23T06:50:36.8649523+04:00"},{"id":30370,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"5f576e16df1d59d294a1af2f2658b7ba","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 190-304","gmt_create":"2026-04-23T06:50:36.8649523+04:00","gmt_modified":"2026-04-23T06:50:36.8649523+04:00"},{"id":30372,"source_id":"f6da664295247a02e1a87e6157ade267","target_id":"31c07b5a29db4c1cbb24f79829d347aa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 104-134","gmt_create":"2026-04-23T06:50:36.8659555+04:00","gmt_modified":"2026-04-23T06:50:36.8659555+04:00"},{"id":30374,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3654987deb8e6274eefab9ca908412c0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1215-1246","gmt_create":"2026-04-23T06:50:36.8664592+04:00","gmt_modified":"2026-04-23T06:50:36.8664592+04:00"},{"id":30376,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"017fafdbdc8bb6416146dfb712f04d60","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 34-46","gmt_create":"2026-04-23T06:50:36.8664592+04:00","gmt_modified":"2026-04-23T06:50:36.8664592+04:00"},{"id":30378,"source_id":"abf923bd059721b5a0c6f9abfff538be","target_id":"7a699ba65a3b0ef1eb697c14a0dbead6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-45","gmt_create":"2026-04-23T06:50:36.8674632+04:00","gmt_modified":"2026-04-23T06:50:36.8674632+04:00"},{"id":30380,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"52af1c2eebb2a6ca81e46aa9efc36007","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-383","gmt_create":"2026-04-23T06:50:36.8674632+04:00","gmt_modified":"2026-04-23T06:50:36.8674632+04:00"},{"id":30382,"source_id":"e12a1d568ad99d9c23753af3b983d420","target_id":"31a472d3c3593f1079fe3844dbf8e5ea","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-85","gmt_create":"2026-04-23T06:50:36.8674632+04:00","gmt_modified":"2026-04-23T06:50:36.8674632+04:00"},{"id":30384,"source_id":"a090337969d7a39c7cbc9737c926d289","target_id":"e37ad396926e491f9e2cb7e97ebb983b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-99","gmt_create":"2026-04-23T06:50:36.8674632+04:00","gmt_modified":"2026-04-23T06:50:36.8674632+04:00"},{"id":30386,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"41c428afa5cdf049e5722a8af0a07120","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-573","gmt_create":"2026-04-23T06:50:36.8684663+04:00","gmt_modified":"2026-04-23T06:50:36.8684663+04:00"},{"id":30388,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"ca47b4e2578878f62204de1202dfcee9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-355","gmt_create":"2026-04-23T06:50:36.8684663+04:00","gmt_modified":"2026-04-23T06:50:36.8684663+04:00"},{"id":30390,"source_id":"f6da664295247a02e1a87e6157ade267","target_id":"65f079a0a8c1ddc294e55e30a905620b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-141","gmt_create":"2026-04-23T06:50:36.8684663+04:00","gmt_modified":"2026-04-23T06:50:36.8684663+04:00"},{"id":30392,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"f64ddae8befa97072e025e25b465e7b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-114","gmt_create":"2026-04-23T06:50:36.8694678+04:00","gmt_modified":"2026-04-23T06:50:36.8694678+04:00"},{"id":30394,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"ae7c55f38aae0b3478e12cbcf2b51454","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6389","gmt_create":"2026-04-23T06:50:36.8694678+04:00","gmt_modified":"2026-04-23T06:50:36.8694678+04:00"},{"id":30396,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"654515d81715576dcb9f859a9aada0e9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-271","gmt_create":"2026-04-23T06:50:36.8694678+04:00","gmt_modified":"2026-04-23T06:50:36.8694678+04:00"},{"id":30398,"source_id":"abf923bd059721b5a0c6f9abfff538be","target_id":"48a79d6fc809620cef020aebdc89228c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-49","gmt_create":"2026-04-23T06:50:36.8704686+04:00","gmt_modified":"2026-04-23T06:50:36.8704686+04:00"},{"id":30400,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"5e80305e7a0dd4e813302d520287970c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 68-162","gmt_create":"2026-04-23T06:50:36.8704686+04:00","gmt_modified":"2026-04-23T06:50:36.8704686+04:00"},{"id":30402,"source_id":"44259eceb7b489d55fb322edef4c325f","target_id":"a29acb8824d619aed98f1d17496cc735","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 128-140","gmt_create":"2026-04-23T06:50:36.8704686+04:00","gmt_modified":"2026-04-23T06:50:36.8704686+04:00"},{"id":30404,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"55b70b2d7f669af727f94be4a67ab19f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-72","gmt_create":"2026-04-23T06:50:36.880076+04:00","gmt_modified":"2026-04-23T06:50:36.880076+04:00"},{"id":30406,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"cd7fa56036ec7bfc753fb109e2481434","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 233-306","gmt_create":"2026-04-23T06:50:36.8810768+04:00","gmt_modified":"2026-04-23T06:50:36.8810768+04:00"},{"id":30408,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"4398c3ae2cfabc0607c0ef43245e9ed0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 424-799","gmt_create":"2026-04-23T06:50:36.8810768+04:00","gmt_modified":"2026-04-23T06:50:36.8810768+04:00"},{"id":30410,"source_id":"8fb5fbed1f7009b8445ba1ca2bb36e9e","target_id":"e485b1e17d34c5b6a8a52a62ed1e66f1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 100-174","gmt_create":"2026-04-23T06:50:36.8825809+04:00","gmt_modified":"2026-04-23T06:50:36.8825809+04:00"},{"id":30412,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"5361decb4da66a8be18f3e2460c4744a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 208-242","gmt_create":"2026-04-23T06:50:36.8825809+04:00","gmt_modified":"2026-04-23T06:50:36.8825809+04:00"},{"id":30414,"source_id":"44259eceb7b489d55fb322edef4c325f","target_id":"c25323732949b90908639a501eb595d3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 135-140","gmt_create":"2026-04-23T06:50:36.8825809+04:00","gmt_modified":"2026-04-23T06:50:36.8825809+04:00"},{"id":30416,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"83977126829486b69fd3680d1a18d5b8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-72","gmt_create":"2026-04-23T06:50:36.8835864+04:00","gmt_modified":"2026-04-23T06:50:36.8835864+04:00"},{"id":30418,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"cd558ad15f0e6727fba1add71cac3e6f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 233-272","gmt_create":"2026-04-23T06:50:36.8835864+04:00","gmt_modified":"2026-04-23T06:50:36.8835864+04:00"},{"id":30420,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"17725c0e4268344a57e37a4181003dcd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 662-718","gmt_create":"2026-04-23T06:50:36.8835864+04:00","gmt_modified":"2026-04-23T06:50:36.8835864+04:00"},{"id":30422,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"19888e3e680c4c22af512bc7fece3cb4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 41-66","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30424,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"f7cab905bd76aaebc62185660e82dae8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 244-338","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30426,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"3c8030f286489dad4c619d038a966638","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 240-278","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30428,"source_id":"44259eceb7b489d55fb322edef4c325f","target_id":"73ca44009706d11b1210c93a5ded6f30","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 237-283","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30430,"source_id":"44259eceb7b489d55fb322edef4c325f","target_id":"66a467bd88b7277e2c4bb4cb7312f48f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 148-235","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30432,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"a2d760acb3b4737ac29dd99261de2de6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 132-177","gmt_create":"2026-04-23T06:50:36.8845865+04:00","gmt_modified":"2026-04-23T06:50:36.8845865+04:00"},{"id":30434,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"bf188abd0edd7c343537c5327855ecbe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 82-106","gmt_create":"2026-04-23T06:50:36.8871003+04:00","gmt_modified":"2026-04-23T06:50:36.8871003+04:00"},{"id":30436,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"fc0674b52c4710c99699f8d656856fd3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 356-369","gmt_create":"2026-04-23T06:50:36.8881066+04:00","gmt_modified":"2026-04-23T06:50:36.8881066+04:00"},{"id":30438,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"d4955755779cc40ec116df2dc5af08d4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 718-740","gmt_create":"2026-04-23T06:50:36.8881066+04:00","gmt_modified":"2026-04-23T06:50:36.8881066+04:00"},{"id":30440,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"4e5740097a51781620c6fa978577b87b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 169-242","gmt_create":"2026-04-23T06:50:36.8890992+04:00","gmt_modified":"2026-04-23T06:50:36.8890992+04:00"},{"id":30442,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"599a70fa63a5743f5c1137d5797ef215","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 310-338","gmt_create":"2026-04-23T06:50:36.8900991+04:00","gmt_modified":"2026-04-23T06:50:36.8900991+04:00"},{"id":30444,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"af26a48b00e9adab94afc7842437fe4a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 255-308","gmt_create":"2026-04-23T06:50:36.8900991+04:00","gmt_modified":"2026-04-23T06:50:36.8900991+04:00"},{"id":30446,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"c65e54c2253e6aa01f651ce5d20e30fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 58-58","gmt_create":"2026-04-23T06:50:36.8910979+04:00","gmt_modified":"2026-04-23T06:50:36.8910979+04:00"},{"id":30448,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"db6b74db4fa6d71a4f6cda8314e0a9c8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 175-279","gmt_create":"2026-04-23T06:50:36.8920985+04:00","gmt_modified":"2026-04-23T06:50:36.8920985+04:00"},{"id":30450,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"b10f496bac85711da4cffcd4b18cd456","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 428-480","gmt_create":"2026-04-23T06:50:36.8930999+04:00","gmt_modified":"2026-04-23T06:50:36.8930999+04:00"},{"id":30452,"source_id":"f6da664295247a02e1a87e6157ade267","target_id":"abb7010b1a4127c6eb74e70b8b8c1c8a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-71","gmt_create":"2026-04-23T06:50:36.8930999+04:00","gmt_modified":"2026-04-23T06:50:36.8930999+04:00"},{"id":30454,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"afac2a42df17577ba720e7f9a78558b0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 518-526","gmt_create":"2026-04-23T06:50:36.8940976+04:00","gmt_modified":"2026-04-23T06:50:36.8940976+04:00"},{"id":30456,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"8c6950a2fa040ec2bdb48c5c535e6290","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3598-3626","gmt_create":"2026-04-23T06:50:36.8940976+04:00","gmt_modified":"2026-04-23T06:50:36.8940976+04:00"},{"id":30458,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"9e28d240675906ef2e41016843e7e078","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 172-182","gmt_create":"2026-04-23T06:50:36.8940976+04:00","gmt_modified":"2026-04-23T06:50:36.8940976+04:00"},{"id":30460,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"b8131417d535236b70881242c8493825","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 340-354","gmt_create":"2026-04-23T06:50:36.8950983+04:00","gmt_modified":"2026-04-23T06:50:36.8950983+04:00"},{"id":30462,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"d8b3e996bfeacf634c11f3ef9c14b517","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 371-399","gmt_create":"2026-04-23T06:50:36.8950983+04:00","gmt_modified":"2026-04-23T06:50:36.8950983+04:00"},{"id":30464,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"924b5999e72f1f50661885d27aa679bf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-45","gmt_create":"2026-04-23T06:50:36.8966049+04:00","gmt_modified":"2026-04-23T06:50:36.8966049+04:00"},{"id":30466,"source_id":"e12a1d568ad99d9c23753af3b983d420","target_id":"9061b648f5c7a6fa04e5cdad74ea8e0c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-23T06:50:36.8966049+04:00","gmt_modified":"2026-04-23T06:50:36.8966049+04:00"},{"id":30468,"source_id":"a090337969d7a39c7cbc9737c926d289","target_id":"d047c2a99e186afd4cbe5d3b58a081ce","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-23T06:50:36.8976109+04:00","gmt_modified":"2026-04-23T06:50:36.8976109+04:00"},{"id":30470,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"cd3f7620124771b158733177b69ca004","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-35","gmt_create":"2026-04-23T06:50:36.8976109+04:00","gmt_modified":"2026-04-23T06:50:36.8976109+04:00"},{"id":30472,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"641e478753e03d4995662e0f71726f6e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-31","gmt_create":"2026-04-23T06:50:36.8986118+04:00","gmt_modified":"2026-04-23T06:50:36.8986118+04:00"},{"id":30474,"source_id":"f6da664295247a02e1a87e6157ade267","target_id":"0f02b5feb29747f31bd81ec24757a03c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-35","gmt_create":"2026-04-23T06:50:36.8986118+04:00","gmt_modified":"2026-04-23T06:50:36.8986118+04:00"},{"id":30476,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"2bd5a533bf647831fd92ff4a1e0cbb9a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-31","gmt_create":"2026-04-23T06:50:36.8996121+04:00","gmt_modified":"2026-04-23T06:50:36.8996121+04:00"},{"id":30478,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"563df4f6b989068ffaf64cd348c73303","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 285-306","gmt_create":"2026-04-23T06:50:36.8996121+04:00","gmt_modified":"2026-04-23T06:50:36.8996121+04:00"},{"id":30480,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"1627c08f8d77e6bd16ff55f3c31a7214","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 48-50","gmt_create":"2026-04-23T06:50:36.8996121+04:00","gmt_modified":"2026-04-23T06:50:36.8996121+04:00"},{"id":30482,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"97c58147fee277e29c7fcfd2e1fad3d7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 314-325","gmt_create":"2026-04-23T06:50:36.8996121+04:00","gmt_modified":"2026-04-23T06:50:36.8996121+04:00"},{"id":30484,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"912dd19fed244fc2d5d8717d9d71351d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3448-3470","gmt_create":"2026-04-23T06:50:36.9006106+04:00","gmt_modified":"2026-04-23T06:50:36.9006106+04:00"},{"id":30486,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"8ca4e34ad148a456f53073ddc65d0d0b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-106","gmt_create":"2026-04-23T06:50:36.9006106+04:00","gmt_modified":"2026-04-23T06:50:36.9006106+04:00"},{"id":30488,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"2dccc9888fbe3d606e3c653137d8edbc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1239-1241","gmt_create":"2026-04-23T06:50:36.9006106+04:00","gmt_modified":"2026-04-23T06:50:36.9006106+04:00"},{"id":30507,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"9db09bc4b81abc778a2506dc78451a5f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-642","gmt_create":"2026-04-23T06:51:53.1377244+04:00","gmt_modified":"2026-04-23T06:51:53.1377244+04:00"},{"id":30510,"source_id":"a636cebf0fd48c268641a5544c551752","target_id":"38a56d06a16ce1ef149caadef5339e6c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-75","gmt_create":"2026-04-23T06:51:53.1387243+04:00","gmt_modified":"2026-04-23T06:51:53.1387243+04:00"},{"id":30512,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"3bdd5ce714e20d28cf824ab11101de66","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-302","gmt_create":"2026-04-23T06:51:53.1387243+04:00","gmt_modified":"2026-04-23T06:51:53.1387243+04:00"},{"id":30514,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"4d593097c4ba86d8ca3e25a81f16c555","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-76","gmt_create":"2026-04-23T06:51:53.1387243+04:00","gmt_modified":"2026-04-23T06:51:53.1387243+04:00"},{"id":30516,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"4ed327655b6918bf25321f12456ca6fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-414","gmt_create":"2026-04-23T06:51:53.1397241+04:00","gmt_modified":"2026-04-23T06:51:53.1397241+04:00"},{"id":30518,"source_id":"1e6f9e0c4241a3a53748ca848749cd9c","target_id":"d28dbbaa28da9765e4f285b5920dbcfd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-138","gmt_create":"2026-04-23T06:51:53.1409894+04:00","gmt_modified":"2026-04-23T06:51:53.1409894+04:00"},{"id":30521,"source_id":"5d124c256c0fcd736094cfbd39e807a2","target_id":"60acb53fc4c1cc7a5762164bdec8669a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-134","gmt_create":"2026-04-23T06:51:53.1414929+04:00","gmt_modified":"2026-04-23T06:51:53.1414929+04:00"},{"id":30523,"source_id":"5cdea1b55d11dd83076d2fe00b9305f3","target_id":"00037cec4c56edf1610ced428572bb7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-154","gmt_create":"2026-04-23T06:51:53.1420143+04:00","gmt_modified":"2026-04-23T06:51:53.1420143+04:00"},{"id":30525,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"436bd6a2314e4b7f8ecf939765fd0b0b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2130-2140","gmt_create":"2026-04-23T06:51:53.1420143+04:00","gmt_modified":"2026-04-23T06:51:53.1420143+04:00"},{"id":30527,"source_id":"571d673b1b49568d584e159036820875","target_id":"8466f547c850a3f78b548ec3dfdfdf69","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 449-467","gmt_create":"2026-04-23T06:51:53.1420143+04:00","gmt_modified":"2026-04-23T06:51:53.1420143+04:00"},{"id":30529,"source_id":"f5e2709c934c90bed9814ff547a6da8e","target_id":"3c62831aa433234fc0f7306c1cf418d6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-118","gmt_create":"2026-04-23T06:51:53.1425283+04:00","gmt_modified":"2026-04-23T06:51:53.1425283+04:00"},{"id":30531,"source_id":"38e584d2e1cd119a9140300797cecf16","target_id":"bb1e3f10774a7b833f7750a99ab49904","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 225-279","gmt_create":"2026-04-23T06:51:53.143054+04:00","gmt_modified":"2026-04-23T06:51:53.143054+04:00"},{"id":30533,"source_id":"2e9e3cf1864f83b0b302ff86e7423752","target_id":"46ade8bd6f06d3d9a2c5022fd4ec7aaf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1200-1260","gmt_create":"2026-04-23T06:51:53.1435724+04:00","gmt_modified":"2026-04-23T06:51:53.1435724+04:00"},{"id":30535,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"3e1e44df30b6a111d9b185e887ed75e4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1428-4828","gmt_create":"2026-04-23T06:51:53.1440973+04:00","gmt_modified":"2026-04-23T06:51:53.1440973+04:00"},{"id":30537,"source_id":"abf923bd059721b5a0c6f9abfff538be","target_id":"aaa79e38ddfcec40e12ba298218d83a8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-48","gmt_create":"2026-04-23T06:51:53.1446133+04:00","gmt_modified":"2026-04-23T06:51:53.1446133+04:00"},{"id":30539,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"5079f2c8e0fd2e2d3f902aa4eeb20eff","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-115","gmt_create":"2026-04-23T06:51:53.1456429+04:00","gmt_modified":"2026-04-23T06:51:53.1456429+04:00"},{"id":30541,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"a3f311781ebc595d7e91829970674d05","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 281-324","gmt_create":"2026-04-23T06:51:53.1461709+04:00","gmt_modified":"2026-04-23T06:51:53.1461709+04:00"},{"id":30543,"source_id":"a636cebf0fd48c268641a5544c551752","target_id":"554e05f2069045609b95ba69f9e954bb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-75","gmt_create":"2026-04-23T06:51:53.1461709+04:00","gmt_modified":"2026-04-23T06:51:53.1461709+04:00"},{"id":30545,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"56047023f5259cd1b3b53cc9276548f4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-72","gmt_create":"2026-04-23T06:51:53.1461709+04:00","gmt_modified":"2026-04-23T06:51:53.1461709+04:00"},{"id":30547,"source_id":"1e6f9e0c4241a3a53748ca848749cd9c","target_id":"7d5a6b649ef8d177496d2e0b4f7d2ad2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-138","gmt_create":"2026-04-23T06:51:53.1466822+04:00","gmt_modified":"2026-04-23T06:51:53.1466822+04:00"},{"id":30549,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"efc19a66e9ef85b6ecd6479947124d6e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 929-984","gmt_create":"2026-04-23T06:51:53.1472003+04:00","gmt_modified":"2026-04-23T06:51:53.1472003+04:00"},{"id":30551,"source_id":"5cdea1b55d11dd83076d2fe00b9305f3","target_id":"90da84eb4c2939b17a99888253d3cfda","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-100","gmt_create":"2026-04-23T06:51:53.1472003+04:00","gmt_modified":"2026-04-23T06:51:53.1472003+04:00"},{"id":30553,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"2239009b61286c4b8bcb051f54239d4c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 94-184","gmt_create":"2026-04-23T06:51:53.1482372+04:00","gmt_modified":"2026-04-23T06:51:53.1482372+04:00"},{"id":30555,"source_id":"5d124c256c0fcd736094cfbd39e807a2","target_id":"e21f5adaef81169224a1ff756245f3b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 83","gmt_create":"2026-04-23T06:51:53.1487514+04:00","gmt_modified":"2026-04-23T06:51:53.1487514+04:00"},{"id":30557,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"f61b06482f8c2019209eb97059fbdc05","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 330-410","gmt_create":"2026-04-23T06:51:53.1487514+04:00","gmt_modified":"2026-04-23T06:51:53.1487514+04:00"},{"id":30559,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"5eec20a2909cd9b68584bd0a13860691","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 134-184","gmt_create":"2026-04-23T06:51:53.1487514+04:00","gmt_modified":"2026-04-23T06:51:53.1487514+04:00"},{"id":30561,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"989129dd2c2f1d2c3d7097f01a59b580","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 503-519","gmt_create":"2026-04-23T06:51:53.1493283+04:00","gmt_modified":"2026-04-23T06:51:53.1493283+04:00"},{"id":30563,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"19ede27e5e317fb0f0663e332bff8e41","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-68","gmt_create":"2026-04-23T06:51:53.1498322+04:00","gmt_modified":"2026-04-23T06:51:53.1498322+04:00"},{"id":30565,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"d9d3ff89ba41e33306eec8a358564595","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2135-2136","gmt_create":"2026-04-23T06:51:53.1498322+04:00","gmt_modified":"2026-04-23T06:51:53.1498322+04:00"},{"id":30567,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"93890fe947bd608f34f438e179d3571b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 704-752","gmt_create":"2026-04-23T06:51:53.1509961+04:00","gmt_modified":"2026-04-23T06:51:53.1509961+04:00"},{"id":30569,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"c4d9e3bfee733cd59a96b18715e26fb7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3986-4039","gmt_create":"2026-04-23T06:51:53.1515119+04:00","gmt_modified":"2026-04-23T06:51:53.1515119+04:00"},{"id":30571,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"16943251fc40e2fea0bdc7df21d26d6c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4144-4175","gmt_create":"2026-04-23T06:51:53.1520274+04:00","gmt_modified":"2026-04-23T06:51:53.1520274+04:00"},{"id":30573,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"88b837eddc75e3df4a5dfb9d74a73902","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4384-4424","gmt_create":"2026-04-23T06:51:53.1520274+04:00","gmt_modified":"2026-04-23T06:51:53.1520274+04:00"},{"id":30575,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"635ae3a3b6d0c742a9aa8911ac0931a6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 70-73","gmt_create":"2026-04-23T06:51:53.1525455+04:00","gmt_modified":"2026-04-23T06:51:53.1525455+04:00"},{"id":30577,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"82c3275180f9bd52205d6daf10f0cec5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 292-292","gmt_create":"2026-04-23T06:51:53.1525455+04:00","gmt_modified":"2026-04-23T06:51:53.1525455+04:00"},{"id":30579,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"476e8657e2d378c04e3da9611464e3d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4460-4490","gmt_create":"2026-04-23T06:51:53.1530723+04:00","gmt_modified":"2026-04-23T06:51:53.1530723+04:00"},{"id":30581,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"73c75f43d010444cfbe1881aea68ac48","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 75-77","gmt_create":"2026-04-23T06:51:53.1530723+04:00","gmt_modified":"2026-04-23T06:51:53.1530723+04:00"},{"id":30583,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"777103f978c926dcb38467a4c4ef2784","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1147-1202","gmt_create":"2026-04-23T06:51:53.1541085+04:00","gmt_modified":"2026-04-23T06:51:53.1541085+04:00"},{"id":30585,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"d8d8a06f04792c8b0df2d56e01dc6a30","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-96","gmt_create":"2026-04-23T06:51:53.1546297+04:00","gmt_modified":"2026-04-23T06:51:53.1546297+04:00"},{"id":30587,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"a2fca797b3404d0b8784acaa98037b1c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 340-350","gmt_create":"2026-04-23T06:51:53.1551465+04:00","gmt_modified":"2026-04-23T06:51:53.1551465+04:00"},{"id":30589,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"8e44126f8dd872a81f8f38af9407591a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4346-4366","gmt_create":"2026-04-23T06:51:53.1551465+04:00","gmt_modified":"2026-04-23T06:51:53.1551465+04:00"},{"id":30591,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3fe5a707dc8f738fe4cdf90e202a1c00","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 948-970","gmt_create":"2026-04-23T06:51:53.1551465+04:00","gmt_modified":"2026-04-23T06:51:53.1551465+04:00"},{"id":30593,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"17c5a479c1681b9fa8a9c5b8710b3871","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3652-3711","gmt_create":"2026-04-23T06:51:53.1556648+04:00","gmt_modified":"2026-04-23T06:51:53.1556648+04:00"},{"id":30595,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"8df33f74931e748bdb279fb2a7413adc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 639-673","gmt_create":"2026-04-23T06:51:53.1561871+04:00","gmt_modified":"2026-04-23T06:51:53.1561871+04:00"},{"id":30597,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"b24701f580d2bf25220eb3d99d592d19","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 562-605","gmt_create":"2026-04-23T06:51:53.1561871+04:00","gmt_modified":"2026-04-23T06:51:53.1561871+04:00"},{"id":30599,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"5c7525643ec954836de9eb71b2ce4822","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 412-422","gmt_create":"2026-04-23T06:51:53.1573075+04:00","gmt_modified":"2026-04-23T06:51:53.1573075+04:00"},{"id":30601,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"ae8706017fbc3b8f0e9a7419f707fe07","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 454-482","gmt_create":"2026-04-23T06:51:53.1573075+04:00","gmt_modified":"2026-04-23T06:51:53.1573075+04:00"},{"id":30603,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"29a0badf88afa6e203d71a2431de6c46","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 148-164","gmt_create":"2026-04-23T06:51:53.1578293+04:00","gmt_modified":"2026-04-23T06:51:53.1578293+04:00"},{"id":30605,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"1eb3056b5625ce57c7d16199bad4ca50","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 546-556","gmt_create":"2026-04-23T06:51:53.1578293+04:00","gmt_modified":"2026-04-23T06:51:53.1578293+04:00"},{"id":30607,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"318c7e8695c6742e40f80ad9a0082f49","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 631-632","gmt_create":"2026-04-23T06:51:53.1578293+04:00","gmt_modified":"2026-04-23T06:51:53.1578293+04:00"},{"id":30609,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"e8c218094b7d5fe11a9456033ee18e06","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1106-1145","gmt_create":"2026-04-23T06:51:53.1583416+04:00","gmt_modified":"2026-04-23T06:51:53.1583416+04:00"},{"id":30611,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"d44399d7c886bd0af53610c96af0c6d3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1460-1470","gmt_create":"2026-04-23T06:51:53.1583416+04:00","gmt_modified":"2026-04-23T06:51:53.1583416+04:00"},{"id":30614,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"09be458eb6253d2844adf22b7dcb84ba","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1295-1377","gmt_create":"2026-04-23T06:51:53.1667205+04:00","gmt_modified":"2026-04-23T06:51:53.1667205+04:00"},{"id":30616,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3ffb1aa7b6196bfe3957274bb7011011","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3444-3499","gmt_create":"2026-04-23T06:51:53.1667205+04:00","gmt_modified":"2026-04-23T06:51:53.1667205+04:00"},{"id":30618,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"43938d9f7207a68c93047be50bd9214d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 218-224","gmt_create":"2026-04-23T06:51:53.1672368+04:00","gmt_modified":"2026-04-23T06:51:53.1672368+04:00"},{"id":30620,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"19489c95f9be1c0698eb501b69b25848","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 284-307","gmt_create":"2026-04-23T06:51:53.1678006+04:00","gmt_modified":"2026-04-23T06:51:53.1678006+04:00"},{"id":30622,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"4dcf2a8108140e2a4f9394a44a2f7ffa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1158-1198","gmt_create":"2026-04-23T06:51:53.1678006+04:00","gmt_modified":"2026-04-23T06:51:53.1678006+04:00"},{"id":30624,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"15e142a5cb99c56ae0b43217664f73ee","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3652-3655","gmt_create":"2026-04-23T06:51:53.1683036+04:00","gmt_modified":"2026-04-23T06:51:53.1683036+04:00"},{"id":30626,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"4f85c4df0bd388bf50a20515ab2a2c2e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 93-141","gmt_create":"2026-04-23T06:51:53.1683036+04:00","gmt_modified":"2026-04-23T06:51:53.1683036+04:00"},{"id":30628,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"ce696f64e8f5dae1824847fbd5dd7337","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 458-584","gmt_create":"2026-04-23T06:51:53.1688173+04:00","gmt_modified":"2026-04-23T06:51:53.1688173+04:00"},{"id":30630,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"6deaa37979bf1b81c17e15e58b84a2f9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4334-4463","gmt_create":"2026-04-23T06:51:53.1688173+04:00","gmt_modified":"2026-04-23T06:51:53.1688173+04:00"},{"id":30632,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"f5a835a21e81cc09d6d98cf5622e74cc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2047-2144","gmt_create":"2026-04-23T06:51:53.1693339+04:00","gmt_modified":"2026-04-23T06:51:53.1693339+04:00"},{"id":30634,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3a840e98c5fcf50c855208adc97b9f2e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4378-4416","gmt_create":"2026-04-23T06:51:53.1693339+04:00","gmt_modified":"2026-04-23T06:51:53.1693339+04:00"},{"id":30636,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"b3a7b4a8b89b5bad3984c5e327e81b02","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2125-2142","gmt_create":"2026-04-23T06:51:53.1693339+04:00","gmt_modified":"2026-04-23T06:51:53.1693339+04:00"},{"id":30638,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"6ff6a282d68d9e062ff275589155562f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4220-4230","gmt_create":"2026-04-23T06:51:53.1693339+04:00","gmt_modified":"2026-04-23T06:51:53.1693339+04:00"},{"id":30640,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"83a8eeb5dc84001310e511c73a0ba062","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4517-4620","gmt_create":"2026-04-23T06:51:53.1703376+04:00","gmt_modified":"2026-04-23T06:51:53.1703376+04:00"},{"id":30642,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"7a58e14fb571d992c6c872fd9006c534","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-10","gmt_create":"2026-04-23T06:51:53.1703376+04:00","gmt_modified":"2026-04-23T06:51:53.1703376+04:00"},{"id":30644,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"2aeed6e39aa3215de09f9294df95620f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-30","gmt_create":"2026-04-23T06:51:53.1703376+04:00","gmt_modified":"2026-04-23T06:51:53.1703376+04:00"},{"id":30646,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"b981ea0333bb902d1127f5b1e1911503","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 800-830","gmt_create":"2026-04-23T06:51:53.171955+04:00","gmt_modified":"2026-04-23T06:51:53.171955+04:00"},{"id":30648,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"8e13b7edb80b9f2e0685d26dea7bb043","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 270-279","gmt_create":"2026-04-23T06:51:53.171955+04:00","gmt_modified":"2026-04-23T06:51:53.171955+04:00"},{"id":30650,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"58f395968bb8027af7c74e913908a12d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 492-501","gmt_create":"2026-04-23T06:51:53.171955+04:00","gmt_modified":"2026-04-23T06:51:53.171955+04:00"},{"id":30651,"source_id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","target_id":"aab844a1-51ae-4696-96ed-2d4903c8e95c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b3ef69c4-9a18-48ea-8119-3457fab8a7a2 -\u003e aab844a1-51ae-4696-96ed-2d4903c8e95c","gmt_create":"2026-04-23T06:51:53.7864102+04:00","gmt_modified":"2026-04-23T06:51:53.7864102+04:00"},{"id":30652,"source_id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","target_id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b3ef69c4-9a18-48ea-8119-3457fab8a7a2 -\u003e ebc6e2d6-0b85-4e39-a4f3-1481ed578543","gmt_create":"2026-04-23T06:51:53.7869524+04:00","gmt_modified":"2026-04-23T06:51:53.7869524+04:00"},{"id":30653,"source_id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","target_id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b3ef69c4-9a18-48ea-8119-3457fab8a7a2 -\u003e 11a3f0cc-0550-4d22-84d7-48826fa26abe","gmt_create":"2026-04-23T06:51:53.7869524+04:00","gmt_modified":"2026-04-23T06:51:53.7869524+04:00"},{"id":30654,"source_id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","target_id":"5a194080-41c5-4f5f-aca3-22afce98407e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b3ef69c4-9a18-48ea-8119-3457fab8a7a2 -\u003e 5a194080-41c5-4f5f-aca3-22afce98407e","gmt_create":"2026-04-23T06:51:53.7874612+04:00","gmt_modified":"2026-04-23T06:51:53.7874612+04:00"},{"id":30655,"source_id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","target_id":"cea6507f-ab8a-40e1-9f5d-043a1ef1478a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b3ef69c4-9a18-48ea-8119-3457fab8a7a2 -\u003e cea6507f-ab8a-40e1-9f5d-043a1ef1478a","gmt_create":"2026-04-23T06:51:53.7874612+04:00","gmt_modified":"2026-04-23T06:51:53.7874612+04:00"},{"id":30658,"source_id":"fb12fa88-1b7f-4e42-978a-50f1c7f6a91b","target_id":"9efd1632-3b7e-478a-8ec9-b8f6901bc80a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: fb12fa88-1b7f-4e42-978a-50f1c7f6a91b -\u003e 9efd1632-3b7e-478a-8ec9-b8f6901bc80a","gmt_create":"2026-04-23T06:51:53.7879795+04:00","gmt_modified":"2026-04-23T06:51:53.7879795+04:00"},{"id":30659,"source_id":"fb12fa88-1b7f-4e42-978a-50f1c7f6a91b","target_id":"581fc583-ffba-4ea2-9db6-f6ef47a37749","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: fb12fa88-1b7f-4e42-978a-50f1c7f6a91b -\u003e 581fc583-ffba-4ea2-9db6-f6ef47a37749","gmt_create":"2026-04-23T06:51:53.7884907+04:00","gmt_modified":"2026-04-23T06:51:53.7884907+04:00"},{"id":30660,"source_id":"c6417b92-8eeb-47a2-adb9-b3f20f58b67c","target_id":"c6932108-aec0-4bf5-9c51-221f37cba865","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6417b92-8eeb-47a2-adb9-b3f20f58b67c -\u003e c6932108-aec0-4bf5-9c51-221f37cba865","gmt_create":"2026-04-23T06:51:53.7884907+04:00","gmt_modified":"2026-04-23T06:51:53.7884907+04:00"},{"id":30661,"source_id":"c6417b92-8eeb-47a2-adb9-b3f20f58b67c","target_id":"10a114a5-9a01-48ee-af7f-b8d3858a5a9c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6417b92-8eeb-47a2-adb9-b3f20f58b67c -\u003e 10a114a5-9a01-48ee-af7f-b8d3858a5a9c","gmt_create":"2026-04-23T06:51:53.7890186+04:00","gmt_modified":"2026-04-23T06:51:53.7890186+04:00"},{"id":30662,"source_id":"c6417b92-8eeb-47a2-adb9-b3f20f58b67c","target_id":"a551b73c-4e9a-4860-81c2-173ec92097d4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6417b92-8eeb-47a2-adb9-b3f20f58b67c -\u003e a551b73c-4e9a-4860-81c2-173ec92097d4","gmt_create":"2026-04-23T06:51:53.7890186+04:00","gmt_modified":"2026-04-23T06:51:53.7890186+04:00"},{"id":30663,"source_id":"c6417b92-8eeb-47a2-adb9-b3f20f58b67c","target_id":"2cd6fcf9-82f4-4042-855e-fd40ec6a825c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6417b92-8eeb-47a2-adb9-b3f20f58b67c -\u003e 2cd6fcf9-82f4-4042-855e-fd40ec6a825c","gmt_create":"2026-04-23T06:51:53.7890186+04:00","gmt_modified":"2026-04-23T06:51:53.7890186+04:00"},{"id":30668,"source_id":"e00a4c9f-f2bd-4a3b-8a23-5c6b15243264","target_id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e00a4c9f-f2bd-4a3b-8a23-5c6b15243264 -\u003e 78b647b3-e3a3-44fe-b2f2-3df8132000fa","gmt_create":"2026-04-23T06:51:53.7900651+04:00","gmt_modified":"2026-04-23T06:51:53.7900651+04:00"},{"id":30669,"source_id":"e00a4c9f-f2bd-4a3b-8a23-5c6b15243264","target_id":"29c60e4b-bedd-49da-ad65-0bb2bf389352","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e00a4c9f-f2bd-4a3b-8a23-5c6b15243264 -\u003e 29c60e4b-bedd-49da-ad65-0bb2bf389352","gmt_create":"2026-04-23T06:51:53.7905743+04:00","gmt_modified":"2026-04-23T06:51:53.7905743+04:00"},{"id":30670,"source_id":"e00a4c9f-f2bd-4a3b-8a23-5c6b15243264","target_id":"f6ccaa92-08d3-4c74-ab62-ca912f5f4307","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e00a4c9f-f2bd-4a3b-8a23-5c6b15243264 -\u003e f6ccaa92-08d3-4c74-ab62-ca912f5f4307","gmt_create":"2026-04-23T06:51:53.7905743+04:00","gmt_modified":"2026-04-23T06:51:53.7905743+04:00"},{"id":30671,"source_id":"e00a4c9f-f2bd-4a3b-8a23-5c6b15243264","target_id":"af8dc25b-51f9-43a0-91a2-a0c293d102fe","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e00a4c9f-f2bd-4a3b-8a23-5c6b15243264 -\u003e af8dc25b-51f9-43a0-91a2-a0c293d102fe","gmt_create":"2026-04-23T06:51:53.7905743+04:00","gmt_modified":"2026-04-23T06:51:53.7905743+04:00"},{"id":30672,"source_id":"6e4a5dd8-da58-4bbb-99c7-2e0276ecf320","target_id":"2b610f75-570f-4afb-8cc7-1acc5cb266f9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e4a5dd8-da58-4bbb-99c7-2e0276ecf320 -\u003e 2b610f75-570f-4afb-8cc7-1acc5cb266f9","gmt_create":"2026-04-23T06:51:53.7910849+04:00","gmt_modified":"2026-04-23T06:51:53.7910849+04:00"},{"id":30673,"source_id":"6e4a5dd8-da58-4bbb-99c7-2e0276ecf320","target_id":"8c6bf6e5-b514-4f1d-9928-ca8fada91268","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e4a5dd8-da58-4bbb-99c7-2e0276ecf320 -\u003e 8c6bf6e5-b514-4f1d-9928-ca8fada91268","gmt_create":"2026-04-23T06:51:53.7910849+04:00","gmt_modified":"2026-04-23T06:51:53.7910849+04:00"},{"id":30674,"source_id":"6e4a5dd8-da58-4bbb-99c7-2e0276ecf320","target_id":"11f48434-b4e3-4a44-8398-8bc28594453a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e4a5dd8-da58-4bbb-99c7-2e0276ecf320 -\u003e 11f48434-b4e3-4a44-8398-8bc28594453a","gmt_create":"2026-04-23T06:51:53.7910849+04:00","gmt_modified":"2026-04-23T06:51:53.7910849+04:00"},{"id":30675,"source_id":"6e4a5dd8-da58-4bbb-99c7-2e0276ecf320","target_id":"46e8c3bf-bd6f-4c78-af50-5dbc5a514905","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e4a5dd8-da58-4bbb-99c7-2e0276ecf320 -\u003e 46e8c3bf-bd6f-4c78-af50-5dbc5a514905","gmt_create":"2026-04-23T06:51:53.7910849+04:00","gmt_modified":"2026-04-23T06:51:53.7910849+04:00"},{"id":30676,"source_id":"c6932108-aec0-4bf5-9c51-221f37cba865","target_id":"94a82512-369f-4529-8fa2-eddf8af042ba","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6932108-aec0-4bf5-9c51-221f37cba865 -\u003e 94a82512-369f-4529-8fa2-eddf8af042ba","gmt_create":"2026-04-23T06:51:53.7916049+04:00","gmt_modified":"2026-04-23T06:51:53.7916049+04:00"},{"id":30677,"source_id":"c6932108-aec0-4bf5-9c51-221f37cba865","target_id":"be2e8184-d028-4124-9ff1-fb18116037f4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6932108-aec0-4bf5-9c51-221f37cba865 -\u003e be2e8184-d028-4124-9ff1-fb18116037f4","gmt_create":"2026-04-23T06:51:53.7916049+04:00","gmt_modified":"2026-04-23T06:51:53.7916049+04:00"},{"id":30678,"source_id":"c6932108-aec0-4bf5-9c51-221f37cba865","target_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6932108-aec0-4bf5-9c51-221f37cba865 -\u003e 49dd986a-a01e-4faf-9e42-2278b298e7d2","gmt_create":"2026-04-23T06:51:53.7921317+04:00","gmt_modified":"2026-04-23T06:51:53.7921317+04:00"},{"id":30679,"source_id":"c6932108-aec0-4bf5-9c51-221f37cba865","target_id":"06e7bdba-7c63-40f1-a827-186765fa6634","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6932108-aec0-4bf5-9c51-221f37cba865 -\u003e 06e7bdba-7c63-40f1-a827-186765fa6634","gmt_create":"2026-04-23T06:51:53.7921317+04:00","gmt_modified":"2026-04-23T06:51:53.7921317+04:00"},{"id":30680,"source_id":"c6932108-aec0-4bf5-9c51-221f37cba865","target_id":"1bd79ab7-a87d-4140-baf9-d7dced2080cf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c6932108-aec0-4bf5-9c51-221f37cba865 -\u003e 1bd79ab7-a87d-4140-baf9-d7dced2080cf","gmt_create":"2026-04-23T06:51:53.7926455+04:00","gmt_modified":"2026-04-23T06:51:53.7926455+04:00"},{"id":30681,"source_id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","target_id":"68d45923-3806-4691-a79b-6960515cba32","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 78b647b3-e3a3-44fe-b2f2-3df8132000fa -\u003e 68d45923-3806-4691-a79b-6960515cba32","gmt_create":"2026-04-23T06:51:53.7931554+04:00","gmt_modified":"2026-04-23T06:51:53.7931554+04:00"},{"id":30682,"source_id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","target_id":"4cae5d6e-a5e4-4917-b754-94b739f7810b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 78b647b3-e3a3-44fe-b2f2-3df8132000fa -\u003e 4cae5d6e-a5e4-4917-b754-94b739f7810b","gmt_create":"2026-04-23T06:51:53.7931554+04:00","gmt_modified":"2026-04-23T06:51:53.7931554+04:00"},{"id":30683,"source_id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","target_id":"e3283c06-b90c-4e16-ace9-dfe813416c46","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 78b647b3-e3a3-44fe-b2f2-3df8132000fa -\u003e e3283c06-b90c-4e16-ace9-dfe813416c46","gmt_create":"2026-04-23T06:51:53.7936644+04:00","gmt_modified":"2026-04-23T06:51:53.7936644+04:00"},{"id":30684,"source_id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","target_id":"0fe3bef0-ce62-4c69-9e42-2c4279692ce5","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 78b647b3-e3a3-44fe-b2f2-3df8132000fa -\u003e 0fe3bef0-ce62-4c69-9e42-2c4279692ce5","gmt_create":"2026-04-23T06:51:53.7936644+04:00","gmt_modified":"2026-04-23T06:51:53.7936644+04:00"},{"id":30685,"source_id":"10a114a5-9a01-48ee-af7f-b8d3858a5a9c","target_id":"3d6d5564-da18-4dd3-9c56-bfdf8b7c569d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 10a114a5-9a01-48ee-af7f-b8d3858a5a9c -\u003e 3d6d5564-da18-4dd3-9c56-bfdf8b7c569d","gmt_create":"2026-04-23T06:51:53.7936644+04:00","gmt_modified":"2026-04-23T06:51:53.7936644+04:00"},{"id":30686,"source_id":"10a114a5-9a01-48ee-af7f-b8d3858a5a9c","target_id":"cb59c51f-940a-480e-bdcc-b9d709e0628b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 10a114a5-9a01-48ee-af7f-b8d3858a5a9c -\u003e cb59c51f-940a-480e-bdcc-b9d709e0628b","gmt_create":"2026-04-23T06:51:53.7941774+04:00","gmt_modified":"2026-04-23T06:51:53.7941774+04:00"},{"id":30687,"source_id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","target_id":"e6d961b0-63ae-4b7d-89df-3b29ba669b8d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ebc6e2d6-0b85-4e39-a4f3-1481ed578543 -\u003e e6d961b0-63ae-4b7d-89df-3b29ba669b8d","gmt_create":"2026-04-23T06:51:53.7946864+04:00","gmt_modified":"2026-04-23T06:51:53.7946864+04:00"},{"id":30688,"source_id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","target_id":"49c97151-b7f5-47d6-beaf-7b55fdb8fa40","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ebc6e2d6-0b85-4e39-a4f3-1481ed578543 -\u003e 49c97151-b7f5-47d6-beaf-7b55fdb8fa40","gmt_create":"2026-04-23T06:51:53.795196+04:00","gmt_modified":"2026-04-23T06:51:53.795196+04:00"},{"id":30689,"source_id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","target_id":"722769d8-4964-4378-8c18-75ab09381d8b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ebc6e2d6-0b85-4e39-a4f3-1481ed578543 -\u003e 722769d8-4964-4378-8c18-75ab09381d8b","gmt_create":"2026-04-23T06:51:53.795196+04:00","gmt_modified":"2026-04-23T06:51:53.795196+04:00"},{"id":30690,"source_id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","target_id":"4a9be427-bea8-4544-b878-a7bd4d6fe135","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ebc6e2d6-0b85-4e39-a4f3-1481ed578543 -\u003e 4a9be427-bea8-4544-b878-a7bd4d6fe135","gmt_create":"2026-04-23T06:51:53.795196+04:00","gmt_modified":"2026-04-23T06:51:53.795196+04:00"},{"id":30691,"source_id":"a551b73c-4e9a-4860-81c2-173ec92097d4","target_id":"3cf7d295-dc75-43bb-88bd-43f9414fdd0b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a551b73c-4e9a-4860-81c2-173ec92097d4 -\u003e 3cf7d295-dc75-43bb-88bd-43f9414fdd0b","gmt_create":"2026-04-23T06:51:53.7957726+04:00","gmt_modified":"2026-04-23T06:51:53.7957726+04:00"},{"id":30692,"source_id":"a551b73c-4e9a-4860-81c2-173ec92097d4","target_id":"cf9a052e-4ced-484d-9869-1efdf69938cc","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a551b73c-4e9a-4860-81c2-173ec92097d4 -\u003e cf9a052e-4ced-484d-9869-1efdf69938cc","gmt_create":"2026-04-23T06:51:53.7962772+04:00","gmt_modified":"2026-04-23T06:51:53.7962772+04:00"},{"id":30693,"source_id":"a551b73c-4e9a-4860-81c2-173ec92097d4","target_id":"0afed60c-5a1d-4eca-8198-c13c66fa3a87","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a551b73c-4e9a-4860-81c2-173ec92097d4 -\u003e 0afed60c-5a1d-4eca-8198-c13c66fa3a87","gmt_create":"2026-04-23T06:51:53.7968011+04:00","gmt_modified":"2026-04-23T06:51:53.7968011+04:00"},{"id":30694,"source_id":"a551b73c-4e9a-4860-81c2-173ec92097d4","target_id":"115908bf-b23e-425a-a465-14deca30a28b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a551b73c-4e9a-4860-81c2-173ec92097d4 -\u003e 115908bf-b23e-425a-a465-14deca30a28b","gmt_create":"2026-04-23T06:51:53.7968011+04:00","gmt_modified":"2026-04-23T06:51:53.7968011+04:00"},{"id":30696,"source_id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","target_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 11a3f0cc-0550-4d22-84d7-48826fa26abe -\u003e 6b3de1c4-0bed-4a2d-8d01-764f3e44da73","gmt_create":"2026-04-23T06:51:53.7968011+04:00","gmt_modified":"2026-04-23T06:51:53.7968011+04:00"},{"id":30698,"source_id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","target_id":"f10d3fa8-832c-4f96-9ebf-3c06f2b35f4f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 11a3f0cc-0550-4d22-84d7-48826fa26abe -\u003e f10d3fa8-832c-4f96-9ebf-3c06f2b35f4f","gmt_create":"2026-04-23T06:51:53.7978402+04:00","gmt_modified":"2026-04-23T06:51:53.7978402+04:00"},{"id":30699,"source_id":"5a194080-41c5-4f5f-aca3-22afce98407e","target_id":"8140185f-741a-4828-b727-52977e4fadca","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5a194080-41c5-4f5f-aca3-22afce98407e -\u003e 8140185f-741a-4828-b727-52977e4fadca","gmt_create":"2026-04-23T06:51:53.7978402+04:00","gmt_modified":"2026-04-23T06:51:53.7978402+04:00"},{"id":30700,"source_id":"5a194080-41c5-4f5f-aca3-22afce98407e","target_id":"d41ddaa7-6738-4106-a9f2-4b3bd859bed7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5a194080-41c5-4f5f-aca3-22afce98407e -\u003e d41ddaa7-6738-4106-a9f2-4b3bd859bed7","gmt_create":"2026-04-23T06:51:53.7978402+04:00","gmt_modified":"2026-04-23T06:51:53.7978402+04:00"},{"id":30701,"source_id":"5a194080-41c5-4f5f-aca3-22afce98407e","target_id":"bda7f43f-72e8-4bad-8b62-29e516c0f71e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5a194080-41c5-4f5f-aca3-22afce98407e -\u003e bda7f43f-72e8-4bad-8b62-29e516c0f71e","gmt_create":"2026-04-23T06:51:53.7978402+04:00","gmt_modified":"2026-04-23T06:51:53.7978402+04:00"},{"id":30702,"source_id":"5a194080-41c5-4f5f-aca3-22afce98407e","target_id":"7e2fa0ba-5607-4eaa-89f6-28498cf7f9cf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5a194080-41c5-4f5f-aca3-22afce98407e -\u003e 7e2fa0ba-5607-4eaa-89f6-28498cf7f9cf","gmt_create":"2026-04-23T06:51:53.7983518+04:00","gmt_modified":"2026-04-23T06:51:53.7983518+04:00"},{"id":30703,"source_id":"94a82512-369f-4529-8fa2-eddf8af042ba","target_id":"1253118c-3895-484a-8833-f8a75ad484cc","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 94a82512-369f-4529-8fa2-eddf8af042ba -\u003e 1253118c-3895-484a-8833-f8a75ad484cc","gmt_create":"2026-04-23T06:51:53.7983518+04:00","gmt_modified":"2026-04-23T06:51:53.7983518+04:00"},{"id":30704,"source_id":"94a82512-369f-4529-8fa2-eddf8af042ba","target_id":"d29576a1-94e5-4cc8-b6db-a26233208c1b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 94a82512-369f-4529-8fa2-eddf8af042ba -\u003e d29576a1-94e5-4cc8-b6db-a26233208c1b","gmt_create":"2026-04-23T06:51:53.798876+04:00","gmt_modified":"2026-04-23T06:51:53.798876+04:00"},{"id":30705,"source_id":"94a82512-369f-4529-8fa2-eddf8af042ba","target_id":"2c40d2b3-38f4-4d9b-8c7f-04e238f0f5c0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 94a82512-369f-4529-8fa2-eddf8af042ba -\u003e 2c40d2b3-38f4-4d9b-8c7f-04e238f0f5c0","gmt_create":"2026-04-23T06:51:53.798876+04:00","gmt_modified":"2026-04-23T06:51:53.798876+04:00"},{"id":30706,"source_id":"94a82512-369f-4529-8fa2-eddf8af042ba","target_id":"dbb85b90-521b-4020-9481-157cbbf219f3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 94a82512-369f-4529-8fa2-eddf8af042ba -\u003e dbb85b90-521b-4020-9481-157cbbf219f3","gmt_create":"2026-04-23T06:51:53.7993891+04:00","gmt_modified":"2026-04-23T06:51:53.7993891+04:00"},{"id":30713,"source_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","target_id":"c965ea0e-3788-4399-b1ad-a28b56e711c8","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6b3de1c4-0bed-4a2d-8d01-764f3e44da73 -\u003e c965ea0e-3788-4399-b1ad-a28b56e711c8","gmt_create":"2026-04-23T06:51:53.8004118+04:00","gmt_modified":"2026-04-23T06:51:53.8004118+04:00"},{"id":30714,"source_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","target_id":"96d18f3b-75bc-4b99-b280-3f74888d4d89","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6b3de1c4-0bed-4a2d-8d01-764f3e44da73 -\u003e 96d18f3b-75bc-4b99-b280-3f74888d4d89","gmt_create":"2026-04-23T06:51:53.8009241+04:00","gmt_modified":"2026-04-23T06:51:53.8009241+04:00"},{"id":30715,"source_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","target_id":"3fd0ef61-a22e-47a1-a06e-fd6321efc9cd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6b3de1c4-0bed-4a2d-8d01-764f3e44da73 -\u003e 3fd0ef61-a22e-47a1-a06e-fd6321efc9cd","gmt_create":"2026-04-23T06:51:53.8009241+04:00","gmt_modified":"2026-04-23T06:51:53.8009241+04:00"},{"id":30716,"source_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","target_id":"872e2ac3-5c14-42c9-a3bb-38a8c46709fa","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6b3de1c4-0bed-4a2d-8d01-764f3e44da73 -\u003e 872e2ac3-5c14-42c9-a3bb-38a8c46709fa","gmt_create":"2026-04-23T06:51:53.8009241+04:00","gmt_modified":"2026-04-23T06:51:53.8009241+04:00"},{"id":30717,"source_id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","target_id":"3db17a7d-046c-4234-a9c3-2a0c3829f9e1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6b3de1c4-0bed-4a2d-8d01-764f3e44da73 -\u003e 3db17a7d-046c-4234-a9c3-2a0c3829f9e1","gmt_create":"2026-04-23T06:51:53.801434+04:00","gmt_modified":"2026-04-23T06:51:53.801434+04:00"},{"id":30718,"source_id":"be2e8184-d028-4124-9ff1-fb18116037f4","target_id":"19eb036e-1e87-426d-a5f0-911d5e1b48d6","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: be2e8184-d028-4124-9ff1-fb18116037f4 -\u003e 19eb036e-1e87-426d-a5f0-911d5e1b48d6","gmt_create":"2026-04-23T06:51:53.801434+04:00","gmt_modified":"2026-04-23T06:51:53.801434+04:00"},{"id":30719,"source_id":"be2e8184-d028-4124-9ff1-fb18116037f4","target_id":"8ab5afd9-a2c3-4a4b-bebc-8a4c9c6b3c83","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: be2e8184-d028-4124-9ff1-fb18116037f4 -\u003e 8ab5afd9-a2c3-4a4b-bebc-8a4c9c6b3c83","gmt_create":"2026-04-23T06:51:53.8019455+04:00","gmt_modified":"2026-04-23T06:51:53.8019455+04:00"},{"id":30720,"source_id":"be2e8184-d028-4124-9ff1-fb18116037f4","target_id":"e9e4bec3-52c1-48e0-a514-51709f4313f3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: be2e8184-d028-4124-9ff1-fb18116037f4 -\u003e e9e4bec3-52c1-48e0-a514-51709f4313f3","gmt_create":"2026-04-23T06:51:53.8019455+04:00","gmt_modified":"2026-04-23T06:51:53.8019455+04:00"},{"id":30721,"source_id":"be2e8184-d028-4124-9ff1-fb18116037f4","target_id":"297b7a79-d227-41a0-bb25-238963d7cc1f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: be2e8184-d028-4124-9ff1-fb18116037f4 -\u003e 297b7a79-d227-41a0-bb25-238963d7cc1f","gmt_create":"2026-04-23T06:51:53.8019455+04:00","gmt_modified":"2026-04-23T06:51:53.8019455+04:00"},{"id":30722,"source_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","target_id":"0cfd47e1-c711-4b9e-88f1-3f1d0f6fd470","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 49dd986a-a01e-4faf-9e42-2278b298e7d2 -\u003e 0cfd47e1-c711-4b9e-88f1-3f1d0f6fd470","gmt_create":"2026-04-23T06:51:53.8024824+04:00","gmt_modified":"2026-04-23T06:51:53.8024824+04:00"},{"id":30723,"source_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","target_id":"48472fb0-8fb1-4c18-beaa-d528e772ad06","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 49dd986a-a01e-4faf-9e42-2278b298e7d2 -\u003e 48472fb0-8fb1-4c18-beaa-d528e772ad06","gmt_create":"2026-04-23T06:51:53.8024824+04:00","gmt_modified":"2026-04-23T06:51:53.8024824+04:00"},{"id":30724,"source_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","target_id":"ff07e431-2871-4c03-9a48-df11b1c2d509","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 49dd986a-a01e-4faf-9e42-2278b298e7d2 -\u003e ff07e431-2871-4c03-9a48-df11b1c2d509","gmt_create":"2026-04-23T06:51:53.8024824+04:00","gmt_modified":"2026-04-23T06:51:53.8024824+04:00"},{"id":30725,"source_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","target_id":"30d5a5ec-65f1-4bb4-9d03-adf9cee17919","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 49dd986a-a01e-4faf-9e42-2278b298e7d2 -\u003e 30d5a5ec-65f1-4bb4-9d03-adf9cee17919","gmt_create":"2026-04-23T06:51:53.8030117+04:00","gmt_modified":"2026-04-23T06:51:53.8030117+04:00"},{"id":30726,"source_id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","target_id":"bf906e37-8997-4f06-a99f-26dba3f43293","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 49dd986a-a01e-4faf-9e42-2278b298e7d2 -\u003e bf906e37-8997-4f06-a99f-26dba3f43293","gmt_create":"2026-04-23T06:51:53.8036053+04:00","gmt_modified":"2026-04-23T06:51:53.8036053+04:00"},{"id":30779,"source_id":"5d124c256c0fcd736094cfbd39e807a2","target_id":"4b8c8943a4768ebf03f79c2d2c3e4cb8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 86-86","gmt_create":"2026-04-23T07:16:50.6622922+04:00","gmt_modified":"2026-04-23T07:16:50.6622922+04:00"},{"id":30805,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"e462a61bcb0546ac7e51d4d77b5e78d7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 560-665","gmt_create":"2026-04-23T07:16:50.6663698+04:00","gmt_modified":"2026-04-23T07:16:50.6663698+04:00"},{"id":30807,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"e8266f9aae45a25637eeae664143da3a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 170-181","gmt_create":"2026-04-23T07:16:50.6673695+04:00","gmt_modified":"2026-04-23T07:16:50.6673695+04:00"},{"id":30809,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"10527b3f085bc23cb5a2ced3d43e605e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3616-3622","gmt_create":"2026-04-23T07:16:50.6683693+04:00","gmt_modified":"2026-04-23T07:16:50.6683693+04:00"},{"id":30826,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"a5a691e7d10617d28a320dc54d620ac0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-81","gmt_create":"2026-04-23T07:16:50.6708733+04:00","gmt_modified":"2026-04-23T07:16:50.6708733+04:00"},{"id":30828,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"131eb608030b3a04b016429fdb3d416a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3278-3281","gmt_create":"2026-04-23T07:16:50.6708733+04:00","gmt_modified":"2026-04-23T07:16:50.6708733+04:00"},{"id":30830,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"5244d6587cbf807d34a2848110b1b8ff","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3633-3636","gmt_create":"2026-04-23T07:16:50.6708733+04:00","gmt_modified":"2026-04-23T07:16:50.6708733+04:00"},{"id":30832,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"c8da7c90dc7ff2af502eb264eb4da4f8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3653-3656","gmt_create":"2026-04-23T07:16:50.6718782+04:00","gmt_modified":"2026-04-23T07:16:50.6718782+04:00"},{"id":30834,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"f2b6431fb26cd401e272c27017c72bf3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3671-3674","gmt_create":"2026-04-23T07:16:50.6718782+04:00","gmt_modified":"2026-04-23T07:16:50.6718782+04:00"},{"id":30908,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"2d7840ca18eae0c0962912ac837b7c1a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 81-88","gmt_create":"2026-04-23T07:21:32.2494949+04:00","gmt_modified":"2026-04-23T07:21:32.2494949+04:00"},{"id":30932,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"c07484f955228ae2a641c6a9ecc218e1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-23T08:46:18.3406078+04:00","gmt_modified":"2026-04-23T08:46:18.3406078+04:00"},{"id":30933,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T08:46:18.3406078+04:00","gmt_modified":"2026-04-23T08:46:18.3406078+04:00"},{"id":30934,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"4036f8e38f752e8da82deeed190ddc06","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30935,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"f6da664295247a02e1a87e6157ade267","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30936,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"4810c013b14141360d4bcf40a8c63444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30937,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"32cf30b2e9094b9693ab53917b0a2eb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30938,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"aa7de2818f0eacb01058838d2b81a9e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/core_messages.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30939,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"abf923bd059721b5a0c6f9abfff538be","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30940,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"a090337969d7a39c7cbc9737c926d289","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/stcp_socket.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30941,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"e12a1d568ad99d9c23753af3b983d420","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message_oriented_connection.hpp","gmt_create":"2026-04-23T08:46:18.3416112+04:00","gmt_modified":"2026-04-23T08:46:18.3416112+04:00"},{"id":30942,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"1e6f9e0c4241a3a53748ca848749cd9c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-23T08:46:18.3440584+04:00","gmt_modified":"2026-04-23T08:46:18.3440584+04:00"},{"id":30943,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"4ec5dd7f21bde7651b20873b01f868c9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-23T08:46:18.3440584+04:00","gmt_modified":"2026-04-23T08:46:18.3440584+04:00"},{"id":30944,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T08:46:18.3440584+04:00","gmt_modified":"2026-04-23T08:46:18.3440584+04:00"},{"id":30945,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"f5e2709c934c90bed9814ff547a6da8e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-23T08:46:18.3440584+04:00","gmt_modified":"2026-04-23T08:46:18.3440584+04:00"},{"id":30946,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"1386bfdeb86a81676e71a6f5e130486d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#180-355","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30947,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"1386bfdeb86a81676e71a6f5e130486d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 180-355","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30948,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"47828ff62fb0611c687e0ec3929a803f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#869-905","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30949,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"47828ff62fb0611c687e0ec3929a803f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 869-905","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30950,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"eca8efe2e83df0e4e7f0bb8711e2d3d4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#79-354","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30951,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"eca8efe2e83df0e4e7f0bb8711e2d3d4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-354","gmt_create":"2026-04-23T08:46:18.3445785+04:00","gmt_modified":"2026-04-23T08:46:18.3445785+04:00"},{"id":30952,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"31c07b5a29db4c1cbb24f79829d347aa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#104-134","gmt_create":"2026-04-23T08:46:18.3451042+04:00","gmt_modified":"2026-04-23T08:46:18.3451042+04:00"},{"id":30953,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"2b2ad90d8dded590d660844927f1808a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-114","gmt_create":"2026-04-23T08:46:18.3451042+04:00","gmt_modified":"2026-04-23T08:46:18.3451042+04:00"},{"id":30954,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"2b2ad90d8dded590d660844927f1808a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-114","gmt_create":"2026-04-23T08:46:18.3451042+04:00","gmt_modified":"2026-04-23T08:46:18.3451042+04:00"},{"id":30955,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"5fd327370da6f7d0909df81ca8173374","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#111-120","gmt_create":"2026-04-23T08:46:18.3451042+04:00","gmt_modified":"2026-04-23T08:46:18.3451042+04:00"},{"id":30956,"source_id":"1e6f9e0c4241a3a53748ca848749cd9c","target_id":"5fd327370da6f7d0909df81ca8173374","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-120","gmt_create":"2026-04-23T08:46:18.3456218+04:00","gmt_modified":"2026-04-23T08:46:18.3456218+04:00"},{"id":30957,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"6deaa37979bf1b81c17e15e58b84a2f9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4334-4463","gmt_create":"2026-04-23T08:46:18.3456218+04:00","gmt_modified":"2026-04-23T08:46:18.3456218+04:00"},{"id":30958,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"db7f0e20d20c729cfc5585f1e0485172","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#110-123","gmt_create":"2026-04-23T08:46:18.3456218+04:00","gmt_modified":"2026-04-23T08:46:18.3456218+04:00"},{"id":30959,"source_id":"f5e2709c934c90bed9814ff547a6da8e","target_id":"db7f0e20d20c729cfc5585f1e0485172","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 110-123","gmt_create":"2026-04-23T08:46:18.3461363+04:00","gmt_modified":"2026-04-23T08:46:18.3461363+04:00"},{"id":30960,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"5505ad3214e042feeb98d8ca38cc0e5b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#952-1047","gmt_create":"2026-04-23T08:46:18.3466537+04:00","gmt_modified":"2026-04-23T08:46:18.3466537+04:00"},{"id":30961,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"5505ad3214e042feeb98d8ca38cc0e5b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 952-1047","gmt_create":"2026-04-23T08:46:18.3466537+04:00","gmt_modified":"2026-04-23T08:46:18.3466537+04:00"},{"id":30962,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"1d3b2e6e4eb9c11a9e00355cc006c61e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1623-1654","gmt_create":"2026-04-23T08:46:18.3466537+04:00","gmt_modified":"2026-04-23T08:46:18.3466537+04:00"},{"id":30963,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"1d3b2e6e4eb9c11a9e00355cc006c61e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1623-1654","gmt_create":"2026-04-23T08:46:18.3466537+04:00","gmt_modified":"2026-04-23T08:46:18.3466537+04:00"},{"id":30964,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"0cece6494088e7b65bd0e3a0aff77e9e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2282-2350","gmt_create":"2026-04-23T08:46:18.3466537+04:00","gmt_modified":"2026-04-23T08:46:18.3466537+04:00"},{"id":30965,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"0cece6494088e7b65bd0e3a0aff77e9e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2282-2350","gmt_create":"2026-04-23T08:46:18.3471815+04:00","gmt_modified":"2026-04-23T08:46:18.3471815+04:00"},{"id":30966,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"79e77d6e9212485bc9d0fdf1d6410ed4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#869-931","gmt_create":"2026-04-23T08:46:18.3471815+04:00","gmt_modified":"2026-04-23T08:46:18.3471815+04:00"},{"id":30967,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"79e77d6e9212485bc9d0fdf1d6410ed4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 869-931","gmt_create":"2026-04-23T08:46:18.3471815+04:00","gmt_modified":"2026-04-23T08:46:18.3471815+04:00"},{"id":30968,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"3d1618efce493d2298f79ed0f0166418","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2029-2230","gmt_create":"2026-04-23T08:46:18.3476959+04:00","gmt_modified":"2026-04-23T08:46:18.3476959+04:00"},{"id":30969,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"3d1618efce493d2298f79ed0f0166418","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2029-2230","gmt_create":"2026-04-23T08:46:18.3476959+04:00","gmt_modified":"2026-04-23T08:46:18.3476959+04:00"},{"id":30970,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"3ef7242e306c1972f455c516ad037647","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2232-2250","gmt_create":"2026-04-23T08:46:18.3476959+04:00","gmt_modified":"2026-04-23T08:46:18.3476959+04:00"},{"id":30971,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"3ef7242e306c1972f455c516ad037647","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2232-2250","gmt_create":"2026-04-23T08:46:18.3476959+04:00","gmt_modified":"2026-04-23T08:46:18.3476959+04:00"},{"id":30972,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"406f9521c4ead23ecb46eb387ea2ca80","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1400-1621","gmt_create":"2026-04-23T08:46:18.3482105+04:00","gmt_modified":"2026-04-23T08:46:18.3482105+04:00"},{"id":30973,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"406f9521c4ead23ecb46eb387ea2ca80","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1400-1621","gmt_create":"2026-04-23T08:46:18.3482105+04:00","gmt_modified":"2026-04-23T08:46:18.3482105+04:00"},{"id":30974,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"dccb2f0ecc63153863ecafe8af55b7dd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#79-80","gmt_create":"2026-04-23T08:46:18.3482105+04:00","gmt_modified":"2026-04-23T08:46:18.3482105+04:00"},{"id":30975,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"dccb2f0ecc63153863ecafe8af55b7dd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 79-80","gmt_create":"2026-04-23T08:46:18.3482105+04:00","gmt_modified":"2026-04-23T08:46:18.3482105+04:00"},{"id":30976,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"c104a047d2e0286a416a50707ff31f75","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3117-3199","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30977,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"c104a047d2e0286a416a50707ff31f75","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3117-3199","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30978,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"f66169296c7e57bb31eb8bfbb97ec9c8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#200-294","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30979,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"f66169296c7e57bb31eb8bfbb97ec9c8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 200-294","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30980,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"1970e34fadef96485269e5b4459078b1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#933-950","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30981,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"1970e34fadef96485269e5b4459078b1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 933-950","gmt_create":"2026-04-23T08:46:18.3487219+04:00","gmt_modified":"2026-04-23T08:46:18.3487219+04:00"},{"id":30982,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"cfe6e43bf4714c16729e4589b894929a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1686-1713","gmt_create":"2026-04-23T08:46:18.3492384+04:00","gmt_modified":"2026-04-23T08:46:18.3492384+04:00"},{"id":30983,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"cfe6e43bf4714c16729e4589b894929a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1686-1713","gmt_create":"2026-04-23T08:46:18.3492384+04:00","gmt_modified":"2026-04-23T08:46:18.3492384+04:00"},{"id":30984,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"ebf5643943fb83f7f0577c5391cdc29f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#211-296","gmt_create":"2026-04-23T08:46:18.3492384+04:00","gmt_modified":"2026-04-23T08:46:18.3492384+04:00"},{"id":30985,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"ebf5643943fb83f7f0577c5391cdc29f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 211-296","gmt_create":"2026-04-23T08:46:18.3492384+04:00","gmt_modified":"2026-04-23T08:46:18.3492384+04:00"},{"id":30986,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"abb42aa5deba88d8499bfa05522d04b8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1788-1841","gmt_create":"2026-04-23T08:46:18.3492384+04:00","gmt_modified":"2026-04-23T08:46:18.3492384+04:00"},{"id":30987,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"abb42aa5deba88d8499bfa05522d04b8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1788-1841","gmt_create":"2026-04-23T08:46:18.358636+04:00","gmt_modified":"2026-04-23T08:46:18.358636+04:00"},{"id":30988,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"8910992f07461b10d88807a2dc107e31","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#1326-1398","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30989,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"8910992f07461b10d88807a2dc107e31","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1326-1398","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30990,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"fd51f4f0db3db3df7716cbbb1debe572","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2830-2892","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30991,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"fd51f4f0db3db3df7716cbbb1debe572","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2830-2892","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30992,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"b9e952a855bb6a183f302fe56963d21c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#111-217","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30993,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"b9e952a855bb6a183f302fe56963d21c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-217","gmt_create":"2026-04-23T08:46:18.359152+04:00","gmt_modified":"2026-04-23T08:46:18.359152+04:00"},{"id":30994,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"48c21c33524e92ceea06033be614b235","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3574-3629","gmt_create":"2026-04-23T08:46:18.3597763+04:00","gmt_modified":"2026-04-23T08:46:18.3597763+04:00"},{"id":30995,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"48c21c33524e92ceea06033be614b235","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3574-3629","gmt_create":"2026-04-23T08:46:18.3597763+04:00","gmt_modified":"2026-04-23T08:46:18.3597763+04:00"},{"id":30996,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"7e0b537a82d1f588c679300874997b9d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3436-3458","gmt_create":"2026-04-23T08:46:18.3597763+04:00","gmt_modified":"2026-04-23T08:46:18.3597763+04:00"},{"id":30997,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"7e0b537a82d1f588c679300874997b9d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3436-3458","gmt_create":"2026-04-23T08:46:18.3597763+04:00","gmt_modified":"2026-04-23T08:46:18.3597763+04:00"},{"id":30998,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"750e5499f686ed5cf00da793ffff700d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#45","gmt_create":"2026-04-23T08:46:18.3602792+04:00","gmt_modified":"2026-04-23T08:46:18.3602792+04:00"},{"id":30999,"source_id":"abf923bd059721b5a0c6f9abfff538be","target_id":"750e5499f686ed5cf00da793ffff700d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45","gmt_create":"2026-04-23T08:46:18.3602792+04:00","gmt_modified":"2026-04-23T08:46:18.3602792+04:00"},{"id":31000,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"0455ab6d2af86bb4904447c2872c0c53","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3444-3458","gmt_create":"2026-04-23T08:46:18.3602792+04:00","gmt_modified":"2026-04-23T08:46:18.3602792+04:00"},{"id":31001,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"0455ab6d2af86bb4904447c2872c0c53","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3444-3458","gmt_create":"2026-04-23T08:46:18.3608115+04:00","gmt_modified":"2026-04-23T08:46:18.3608115+04:00"},{"id":31002,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"6e81216a32202b37bf1e51becbd96ee5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3574-3595","gmt_create":"2026-04-23T08:46:18.3608115+04:00","gmt_modified":"2026-04-23T08:46:18.3608115+04:00"},{"id":31003,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"6e81216a32202b37bf1e51becbd96ee5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3574-3595","gmt_create":"2026-04-23T08:46:18.3608115+04:00","gmt_modified":"2026-04-23T08:46:18.3608115+04:00"},{"id":31004,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"9aab1633519dd82fa80f9dae679c6e67","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3436-3449","gmt_create":"2026-04-23T08:46:18.3608115+04:00","gmt_modified":"2026-04-23T08:46:18.3608115+04:00"},{"id":31005,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"9aab1633519dd82fa80f9dae679c6e67","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3436-3449","gmt_create":"2026-04-23T08:46:18.3613279+04:00","gmt_modified":"2026-04-23T08:46:18.3613279+04:00"},{"id":31006,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"09f1af7d59dbdb0fbf48bb43ee73810a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3428-3449","gmt_create":"2026-04-23T08:46:18.3613279+04:00","gmt_modified":"2026-04-23T08:46:18.3613279+04:00"},{"id":31007,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"09f1af7d59dbdb0fbf48bb43ee73810a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3428-3449","gmt_create":"2026-04-23T08:46:18.3613279+04:00","gmt_modified":"2026-04-23T08:46:18.3613279+04:00"},{"id":31008,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"5308ccfa8580b1876716b44b1f28861a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#260-262","gmt_create":"2026-04-23T08:46:18.3613279+04:00","gmt_modified":"2026-04-23T08:46:18.3613279+04:00"},{"id":31009,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"5308ccfa8580b1876716b44b1f28861a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 260-262","gmt_create":"2026-04-23T08:46:18.3613279+04:00","gmt_modified":"2026-04-23T08:46:18.3613279+04:00"},{"id":31010,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"99bf9466ee39733484e42b24dcac4661","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#80-87","gmt_create":"2026-04-23T08:46:18.3618533+04:00","gmt_modified":"2026-04-23T08:46:18.3618533+04:00"},{"id":31011,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"99bf9466ee39733484e42b24dcac4661","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 80-87","gmt_create":"2026-04-23T08:46:18.3618533+04:00","gmt_modified":"2026-04-23T08:46:18.3618533+04:00"},{"id":31012,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"e806bda1a9e889983105fe61c6d9db2d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2251-2280","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31013,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"e806bda1a9e889983105fe61c6d9db2d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2251-2280","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31014,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"5ce89ecce18bb64f98f6719d9ec00e43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2137-2168","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31015,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"5ce89ecce18bb64f98f6719d9ec00e43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2137-2168","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31016,"source_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","target_id":"f1396eb83cd882dc7f1cf702aace14ed","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4455-4460","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31017,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"f1396eb83cd882dc7f1cf702aace14ed","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4455-4460","gmt_create":"2026-04-23T08:46:18.362368+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"id":31102,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"8114d7a38e6d9b53917762786e49ecc5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-6424","gmt_create":"2026-04-23T08:48:15.4563297+04:00","gmt_modified":"2026-04-23T08:48:15.4563297+04:00"},{"id":31110,"source_id":"5d124c256c0fcd736094cfbd39e807a2","target_id":"209f7b117b7f7bb00470bddded3c2398","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-136","gmt_create":"2026-04-23T08:48:15.4642292+04:00","gmt_modified":"2026-04-23T08:48:15.4642292+04:00"},{"id":31113,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"7cc5b740b5c5c8e957b1ac116c71feeb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1420-1430","gmt_create":"2026-04-23T08:48:15.4648283+04:00","gmt_modified":"2026-04-23T08:48:15.4648283+04:00"},{"id":31119,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"dd263a594e39d8c84ce42b6efb76acd5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3185-3384","gmt_create":"2026-04-23T08:48:15.4654177+04:00","gmt_modified":"2026-04-23T08:48:15.4654177+04:00"},{"id":31122,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"944bb65381e9048751328749ccfb5732","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 181-196","gmt_create":"2026-04-23T08:48:15.4654177+04:00","gmt_modified":"2026-04-23T08:48:15.4654177+04:00"},{"id":31137,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"a7c9e78b9bf59b6a3989c0339f9f5991","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1424-1426","gmt_create":"2026-04-23T08:48:15.4689421+04:00","gmt_modified":"2026-04-23T08:48:15.4689421+04:00"},{"id":31165,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"ea1944a89359ddbccd657fb47a341ead","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1216-1286","gmt_create":"2026-04-23T08:48:15.4729776+04:00","gmt_modified":"2026-04-23T08:48:15.4729776+04:00"},{"id":31188,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4036f8e38f752e8da82deeed190ddc06","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-23T09:39:39.4672709+04:00","gmt_modified":"2026-04-23T09:39:39.4672709+04:00"},{"id":31189,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"03ba9497d2e4b912db997e43e1b9c653","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.cpp","gmt_create":"2026-04-23T09:39:39.4672709+04:00","gmt_modified":"2026-04-23T09:39:39.4672709+04:00"},{"id":31190,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"c07484f955228ae2a641c6a9ecc218e1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-23T09:39:39.4677708+04:00","gmt_modified":"2026-04-23T09:39:39.4677708+04:00"},{"id":31191,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T09:39:39.4677708+04:00","gmt_modified":"2026-04-23T09:39:39.4677708+04:00"},{"id":31192,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"e12a1d568ad99d9c23753af3b983d420","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message_oriented_connection.hpp","gmt_create":"2026-04-23T09:39:39.4682736+04:00","gmt_modified":"2026-04-23T09:39:39.4682736+04:00"},{"id":31193,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"44259eceb7b489d55fb322edef4c325f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/message_oriented_connection.cpp","gmt_create":"2026-04-23T09:39:39.4682736+04:00","gmt_modified":"2026-04-23T09:39:39.4682736+04:00"},{"id":31194,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a090337969d7a39c7cbc9737c926d289","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/stcp_socket.hpp","gmt_create":"2026-04-23T09:39:39.4682736+04:00","gmt_modified":"2026-04-23T09:39:39.4682736+04:00"},{"id":31195,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"7f5ebd18d8224ccabbd73a26fba17a38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/stcp_socket.cpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31196,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"aa7de2818f0eacb01058838d2b81a9e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/core_messages.hpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31197,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f5ad8f25a7e1c10d29fdcfd7b3eadb75","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/core_messages.cpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31198,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"32cf30b2e9094b9693ab53917b0a2eb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31199,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f6da664295247a02e1a87e6157ade267","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31200,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8fb5fbed1f7009b8445ba1ca2bb36e9e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_database.cpp","gmt_create":"2026-04-23T09:39:39.4688088+04:00","gmt_modified":"2026-04-23T09:39:39.4688088+04:00"},{"id":31201,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4810c013b14141360d4bcf40a8c63444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-23T09:39:39.4698144+04:00","gmt_modified":"2026-04-23T09:39:39.4698144+04:00"},{"id":31202,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"abf923bd059721b5a0c6f9abfff538be","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-23T09:39:39.4698144+04:00","gmt_modified":"2026-04-23T09:39:39.4698144+04:00"},{"id":31203,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T09:39:39.4698144+04:00","gmt_modified":"2026-04-23T09:39:39.4698144+04:00"},{"id":31204,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T09:39:39.4698144+04:00","gmt_modified":"2026-04-23T09:39:39.4698144+04:00"},{"id":31205,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4ec5dd7f21bde7651b20873b01f868c9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-23T09:39:39.4703568+04:00","gmt_modified":"2026-04-23T09:39:39.4703568+04:00"},{"id":31206,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5d124c256c0fcd736094cfbd39e807a2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database_exceptions.hpp","gmt_create":"2026-04-23T09:39:39.4703568+04:00","gmt_modified":"2026-04-23T09:39:39.4703568+04:00"},{"id":31207,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"21bfc0180b7699a6df5d595a956c92ec","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.hpp","gmt_create":"2026-04-23T09:39:39.4703568+04:00","gmt_modified":"2026-04-23T09:39:39.4703568+04:00"},{"id":31208,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T09:39:39.4703568+04:00","gmt_modified":"2026-04-23T09:39:39.4703568+04:00"},{"id":31209,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"37fb39091ee4b69fe1e682497ff46b55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-23T09:39:39.4703568+04:00","gmt_modified":"2026-04-23T09:39:39.4703568+04:00"},{"id":31210,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"16a4e2bff0288ec68e9817239c754aed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-23T09:39:39.471294+04:00","gmt_modified":"2026-04-23T09:39:39.471294+04:00"},{"id":31211,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"b790ddd3e717ed748c2e061559e92124","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#79-351","gmt_create":"2026-04-23T09:39:39.471294+04:00","gmt_modified":"2026-04-23T09:39:39.471294+04:00"},{"id":31212,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a07ab3c4bae64fb9fbd9587bd3eaae39","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#45-79","gmt_create":"2026-04-23T09:39:39.4717975+04:00","gmt_modified":"2026-04-23T09:39:39.4717975+04:00"},{"id":31213,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"bd9136208fce359f28cad48005c18445","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#37-93","gmt_create":"2026-04-23T09:39:39.4717975+04:00","gmt_modified":"2026-04-23T09:39:39.4717975+04:00"},{"id":31214,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8b8b5804e7fa05a13d3a7cf1869a318d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#72-95","gmt_create":"2026-04-23T09:39:39.4724097+04:00","gmt_modified":"2026-04-23T09:39:39.4724097+04:00"},{"id":31215,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"ae1ad3620183690f60eeda5a30543601","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-106","gmt_create":"2026-04-23T09:39:39.4724097+04:00","gmt_modified":"2026-04-23T09:39:39.4724097+04:00"},{"id":31216,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5f576e16df1d59d294a1af2f2658b7ba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#190-304","gmt_create":"2026-04-23T09:39:39.4729143+04:00","gmt_modified":"2026-04-23T09:39:39.4729143+04:00"},{"id":31217,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"31c07b5a29db4c1cbb24f79829d347aa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#104-134","gmt_create":"2026-04-23T09:39:39.4729143+04:00","gmt_modified":"2026-04-23T09:39:39.4729143+04:00"},{"id":31218,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"9924fc699c3105d1f92a1d1add05b6bc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#593-601","gmt_create":"2026-04-23T09:39:39.4729143+04:00","gmt_modified":"2026-04-23T09:39:39.4729143+04:00"},{"id":31219,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"9924fc699c3105d1f92a1d1add05b6bc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 593-601","gmt_create":"2026-04-23T09:39:39.4729143+04:00","gmt_modified":"2026-04-23T09:39:39.4729143+04:00"},{"id":31220,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8d21063080bca8794d81c136ded83883","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5240-5274","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31221,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"8d21063080bca8794d81c136ded83883","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5240-5274","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31222,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"d63a843046b69fbb600d08397a3d24b2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#689-697","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31223,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"d63a843046b69fbb600d08397a3d24b2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 689-697","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31224,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"60563e45be74bbac873efa1574b0b44b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3039-3045","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31225,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"60563e45be74bbac873efa1574b0b44b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3039-3045","gmt_create":"2026-04-23T09:39:39.4739204+04:00","gmt_modified":"2026-04-23T09:39:39.4739204+04:00"},{"id":31226,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"3654987deb8e6274eefab9ca908412c0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1215-1246","gmt_create":"2026-04-23T09:39:39.4749198+04:00","gmt_modified":"2026-04-23T09:39:39.4749198+04:00"},{"id":31227,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"017fafdbdc8bb6416146dfb712f04d60","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#34-46","gmt_create":"2026-04-23T09:39:39.4749198+04:00","gmt_modified":"2026-04-23T09:39:39.4749198+04:00"},{"id":31228,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"7a699ba65a3b0ef1eb697c14a0dbead6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#33-45","gmt_create":"2026-04-23T09:39:39.4749198+04:00","gmt_modified":"2026-04-23T09:39:39.4749198+04:00"},{"id":31229,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"52af1c2eebb2a6ca81e46aa9efc36007","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#1-383","gmt_create":"2026-04-23T09:39:39.4749198+04:00","gmt_modified":"2026-04-23T09:39:39.4749198+04:00"},{"id":31230,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"31a472d3c3593f1079fe3844dbf8e5ea","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#1-85","gmt_create":"2026-04-23T09:39:39.4761368+04:00","gmt_modified":"2026-04-23T09:39:39.4761368+04:00"},{"id":31231,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"e37ad396926e491f9e2cb7e97ebb983b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#1-99","gmt_create":"2026-04-23T09:39:39.4761368+04:00","gmt_modified":"2026-04-23T09:39:39.4761368+04:00"},{"id":31232,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"41c428afa5cdf049e5722a8af0a07120","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#1-573","gmt_create":"2026-04-23T09:39:39.4766405+04:00","gmt_modified":"2026-04-23T09:39:39.4766405+04:00"},{"id":31233,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"ca47b4e2578878f62204de1202dfcee9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#1-355","gmt_create":"2026-04-23T09:39:39.4766405+04:00","gmt_modified":"2026-04-23T09:39:39.4766405+04:00"},{"id":31234,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"65f079a0a8c1ddc294e55e30a905620b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#1-141","gmt_create":"2026-04-23T09:39:39.4771576+04:00","gmt_modified":"2026-04-23T09:39:39.4771576+04:00"},{"id":31235,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f64ddae8befa97072e025e25b465e7b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#1-114","gmt_create":"2026-04-23T09:39:39.4771576+04:00","gmt_modified":"2026-04-23T09:39:39.4771576+04:00"},{"id":31236,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"ae7c55f38aae0b3478e12cbcf2b51454","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-6389","gmt_create":"2026-04-23T09:39:39.4776688+04:00","gmt_modified":"2026-04-23T09:39:39.4776688+04:00"},{"id":31237,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"654515d81715576dcb9f859a9aada0e9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#1-271","gmt_create":"2026-04-23T09:39:39.4781886+04:00","gmt_modified":"2026-04-23T09:39:39.4781886+04:00"},{"id":31238,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"48a79d6fc809620cef020aebdc89228c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#1-49","gmt_create":"2026-04-23T09:39:39.4781886+04:00","gmt_modified":"2026-04-23T09:39:39.4781886+04:00"},{"id":31239,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5e80305e7a0dd4e813302d520287970c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#68-162","gmt_create":"2026-04-23T09:39:39.4792207+04:00","gmt_modified":"2026-04-23T09:39:39.4792207+04:00"},{"id":31240,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a29acb8824d619aed98f1d17496cc735","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/message_oriented_connection.cpp#128-140","gmt_create":"2026-04-23T09:39:39.4792207+04:00","gmt_modified":"2026-04-23T09:39:39.4792207+04:00"},{"id":31241,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"55b70b2d7f669af727f94be4a67ab19f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-72","gmt_create":"2026-04-23T09:39:39.479728+04:00","gmt_modified":"2026-04-23T09:39:39.479728+04:00"},{"id":31242,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"cd7fa56036ec7bfc753fb109e2481434","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#233-306","gmt_create":"2026-04-23T09:39:39.4802463+04:00","gmt_modified":"2026-04-23T09:39:39.4802463+04:00"},{"id":31243,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4398c3ae2cfabc0607c0ef43245e9ed0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#424-799","gmt_create":"2026-04-23T09:39:39.4802463+04:00","gmt_modified":"2026-04-23T09:39:39.4802463+04:00"},{"id":31244,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"e485b1e17d34c5b6a8a52a62ed1e66f1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_database.cpp#100-174","gmt_create":"2026-04-23T09:39:39.4802463+04:00","gmt_modified":"2026-04-23T09:39:39.4802463+04:00"},{"id":31245,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4b8c8943a4768ebf03f79c2d2c3e4cb8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database_exceptions.hpp#86-86","gmt_create":"2026-04-23T09:39:39.4817905+04:00","gmt_modified":"2026-04-23T09:39:39.4817905+04:00"},{"id":31246,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5361decb4da66a8be18f3e2460c4744a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#208-242","gmt_create":"2026-04-23T09:39:39.4823132+04:00","gmt_modified":"2026-04-23T09:39:39.4823132+04:00"},{"id":31247,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"c25323732949b90908639a501eb595d3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/message_oriented_connection.cpp#135-140","gmt_create":"2026-04-23T09:39:39.4823132+04:00","gmt_modified":"2026-04-23T09:39:39.4823132+04:00"},{"id":31248,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"83977126829486b69fd3680d1a18d5b8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#69-72","gmt_create":"2026-04-23T09:39:39.4823132+04:00","gmt_modified":"2026-04-23T09:39:39.4823132+04:00"},{"id":31249,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"cd558ad15f0e6727fba1add71cac3e6f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#233-272","gmt_create":"2026-04-23T09:39:39.4823132+04:00","gmt_modified":"2026-04-23T09:39:39.4823132+04:00"},{"id":31250,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"17725c0e4268344a57e37a4181003dcd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#662-718","gmt_create":"2026-04-23T09:39:39.4831665+04:00","gmt_modified":"2026-04-23T09:39:39.4831665+04:00"},{"id":31251,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"19888e3e680c4c22af512bc7fece3cb4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#41-66","gmt_create":"2026-04-23T09:39:39.4836895+04:00","gmt_modified":"2026-04-23T09:39:39.4836895+04:00"},{"id":31252,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f7cab905bd76aaebc62185660e82dae8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#244-338","gmt_create":"2026-04-23T09:39:39.4842099+04:00","gmt_modified":"2026-04-23T09:39:39.4842099+04:00"},{"id":31253,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"3c8030f286489dad4c619d038a966638","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#240-278","gmt_create":"2026-04-23T09:39:39.4842099+04:00","gmt_modified":"2026-04-23T09:39:39.4842099+04:00"},{"id":31254,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"73ca44009706d11b1210c93a5ded6f30","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/message_oriented_connection.cpp#237-283","gmt_create":"2026-04-23T09:39:39.4847252+04:00","gmt_modified":"2026-04-23T09:39:39.4847252+04:00"},{"id":31255,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"66a467bd88b7277e2c4bb4cb7312f48f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/message_oriented_connection.cpp#148-235","gmt_create":"2026-04-23T09:39:39.4847252+04:00","gmt_modified":"2026-04-23T09:39:39.4847252+04:00"},{"id":31256,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a2d760acb3b4737ac29dd99261de2de6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#132-177","gmt_create":"2026-04-23T09:39:39.485761+04:00","gmt_modified":"2026-04-23T09:39:39.485761+04:00"},{"id":31257,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"bf188abd0edd7c343537c5327855ecbe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#82-106","gmt_create":"2026-04-23T09:39:39.4878578+04:00","gmt_modified":"2026-04-23T09:39:39.4878578+04:00"},{"id":31258,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"fc0674b52c4710c99699f8d656856fd3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#356-369","gmt_create":"2026-04-23T09:39:39.4878578+04:00","gmt_modified":"2026-04-23T09:39:39.4878578+04:00"},{"id":31259,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"d4955755779cc40ec116df2dc5af08d4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#718-740","gmt_create":"2026-04-23T09:39:39.4883728+04:00","gmt_modified":"2026-04-23T09:39:39.4883728+04:00"},{"id":31260,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f7a932b6ffbae4962c88c344b881fab7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5272-5274","gmt_create":"2026-04-23T09:39:39.4883728+04:00","gmt_modified":"2026-04-23T09:39:39.4883728+04:00"},{"id":31261,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"f7a932b6ffbae4962c88c344b881fab7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5272-5274","gmt_create":"2026-04-23T09:39:39.4888906+04:00","gmt_modified":"2026-04-23T09:39:39.4888906+04:00"},{"id":31262,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"4e5740097a51781620c6fa978577b87b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#169-242","gmt_create":"2026-04-23T09:39:39.4888906+04:00","gmt_modified":"2026-04-23T09:39:39.4888906+04:00"},{"id":31263,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"599a70fa63a5743f5c1137d5797ef215","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#310-338","gmt_create":"2026-04-23T09:39:39.4899317+04:00","gmt_modified":"2026-04-23T09:39:39.4899317+04:00"},{"id":31264,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"af26a48b00e9adab94afc7842437fe4a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#255-308","gmt_create":"2026-04-23T09:39:39.4904627+04:00","gmt_modified":"2026-04-23T09:39:39.4904627+04:00"},{"id":31265,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"c65e54c2253e6aa01f651ce5d20e30fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#58-58","gmt_create":"2026-04-23T09:39:39.4904627+04:00","gmt_modified":"2026-04-23T09:39:39.4904627+04:00"},{"id":31266,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"db6b74db4fa6d71a4f6cda8314e0a9c8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#175-279","gmt_create":"2026-04-23T09:39:39.4909819+04:00","gmt_modified":"2026-04-23T09:39:39.4909819+04:00"},{"id":31267,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"b10f496bac85711da4cffcd4b18cd456","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#428-480","gmt_create":"2026-04-23T09:39:39.4909819+04:00","gmt_modified":"2026-04-23T09:39:39.4909819+04:00"},{"id":31268,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"abb7010b1a4127c6eb74e70b8b8c1c8a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#47-71","gmt_create":"2026-04-23T09:39:39.4909819+04:00","gmt_modified":"2026-04-23T09:39:39.4909819+04:00"},{"id":31269,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"afac2a42df17577ba720e7f9a78558b0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#518-526","gmt_create":"2026-04-23T09:39:39.4909819+04:00","gmt_modified":"2026-04-23T09:39:39.4909819+04:00"},{"id":31270,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a286ff3cf9e0c77d710f0468ff80ab71","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5265-5274","gmt_create":"2026-04-23T09:39:39.4925906+04:00","gmt_modified":"2026-04-23T09:39:39.4925906+04:00"},{"id":31271,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"a286ff3cf9e0c77d710f0468ff80ab71","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5265-5274","gmt_create":"2026-04-23T09:39:39.4925906+04:00","gmt_modified":"2026-04-23T09:39:39.4925906+04:00"},{"id":31272,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8c6950a2fa040ec2bdb48c5c535e6290","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3598-3626","gmt_create":"2026-04-23T09:39:39.4934934+04:00","gmt_modified":"2026-04-23T09:39:39.4934934+04:00"},{"id":31273,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"9e28d240675906ef2e41016843e7e078","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#172-182","gmt_create":"2026-04-23T09:39:39.4934934+04:00","gmt_modified":"2026-04-23T09:39:39.4934934+04:00"},{"id":31274,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"13386e3e76ae725d30c4b4dca682ae19","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#599-600","gmt_create":"2026-04-23T09:39:39.4934934+04:00","gmt_modified":"2026-04-23T09:39:39.4934934+04:00"},{"id":31275,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"13386e3e76ae725d30c4b4dca682ae19","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 599-600","gmt_create":"2026-04-23T09:39:39.4934934+04:00","gmt_modified":"2026-04-23T09:39:39.4934934+04:00"},{"id":31276,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8c7fe145e6668a0589833613de05ef8e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#96-101","gmt_create":"2026-04-23T09:39:39.4964928+04:00","gmt_modified":"2026-04-23T09:39:39.4964928+04:00"},{"id":31277,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"8c7fe145e6668a0589833613de05ef8e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 96-101","gmt_create":"2026-04-23T09:39:39.4964928+04:00","gmt_modified":"2026-04-23T09:39:39.4964928+04:00"},{"id":31278,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"e462a61bcb0546ac7e51d4d77b5e78d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#560-665","gmt_create":"2026-04-23T09:39:39.4964928+04:00","gmt_modified":"2026-04-23T09:39:39.4964928+04:00"},{"id":31279,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"e8266f9aae45a25637eeae664143da3a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#170-181","gmt_create":"2026-04-23T09:39:39.4964928+04:00","gmt_modified":"2026-04-23T09:39:39.4964928+04:00"},{"id":31280,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"10527b3f085bc23cb5a2ced3d43e605e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3616-3622","gmt_create":"2026-04-23T09:39:39.4964928+04:00","gmt_modified":"2026-04-23T09:39:39.4964928+04:00"},{"id":31281,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"b8131417d535236b70881242c8493825","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#340-354","gmt_create":"2026-04-23T09:39:39.4981079+04:00","gmt_modified":"2026-04-23T09:39:39.4981079+04:00"},{"id":31282,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"d8b3e996bfeacf634c11f3ef9c14b517","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#371-399","gmt_create":"2026-04-23T09:39:39.4981079+04:00","gmt_modified":"2026-04-23T09:39:39.4981079+04:00"},{"id":31283,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"924b5999e72f1f50661885d27aa679bf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#26-45","gmt_create":"2026-04-23T09:39:39.5009988+04:00","gmt_modified":"2026-04-23T09:39:39.5009988+04:00"},{"id":31284,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"9061b648f5c7a6fa04e5cdad74ea8e0c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#26-28","gmt_create":"2026-04-23T09:39:39.5019992+04:00","gmt_modified":"2026-04-23T09:39:39.5019992+04:00"},{"id":31285,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"d047c2a99e186afd4cbe5d3b58a081ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#26-28","gmt_create":"2026-04-23T09:39:39.5019992+04:00","gmt_modified":"2026-04-23T09:39:39.5019992+04:00"},{"id":31286,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"cd3f7620124771b158733177b69ca004","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#26-35","gmt_create":"2026-04-23T09:39:39.5019992+04:00","gmt_modified":"2026-04-23T09:39:39.5019992+04:00"},{"id":31287,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"641e478753e03d4995662e0f71726f6e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#26-31","gmt_create":"2026-04-23T09:39:39.5019992+04:00","gmt_modified":"2026-04-23T09:39:39.5019992+04:00"},{"id":31288,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"0f02b5feb29747f31bd81ec24757a03c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#26-35","gmt_create":"2026-04-23T09:39:39.5029989+04:00","gmt_modified":"2026-04-23T09:39:39.5029989+04:00"},{"id":31289,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"2bd5a533bf647831fd92ff4a1e0cbb9a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#26-31","gmt_create":"2026-04-23T09:39:39.5029989+04:00","gmt_modified":"2026-04-23T09:39:39.5029989+04:00"},{"id":31290,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"563df4f6b989068ffaf64cd348c73303","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#285-306","gmt_create":"2026-04-23T09:39:39.5039987+04:00","gmt_modified":"2026-04-23T09:39:39.5039987+04:00"},{"id":31291,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"1627c08f8d77e6bd16ff55f3c31a7214","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#48-50","gmt_create":"2026-04-23T09:39:39.5039987+04:00","gmt_modified":"2026-04-23T09:39:39.5039987+04:00"},{"id":31292,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"97c58147fee277e29c7fcfd2e1fad3d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#314-325","gmt_create":"2026-04-23T09:39:39.5049987+04:00","gmt_modified":"2026-04-23T09:39:39.5049987+04:00"},{"id":31293,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"912dd19fed244fc2d5d8717d9d71351d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3448-3470","gmt_create":"2026-04-23T09:39:39.5049987+04:00","gmt_modified":"2026-04-23T09:39:39.5049987+04:00"},{"id":31294,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"8ca4e34ad148a456f53073ddc65d0d0b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#26-106","gmt_create":"2026-04-23T09:39:39.5059989+04:00","gmt_modified":"2026-04-23T09:39:39.5059989+04:00"},{"id":31295,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"2dccc9888fbe3d606e3c653137d8edbc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1239-1241","gmt_create":"2026-04-23T09:39:39.5059989+04:00","gmt_modified":"2026-04-23T09:39:39.5059989+04:00"},{"id":31296,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"a5a691e7d10617d28a320dc54d620ac0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#79-81","gmt_create":"2026-04-23T09:39:39.5069987+04:00","gmt_modified":"2026-04-23T09:39:39.5069987+04:00"},{"id":31297,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"131eb608030b3a04b016429fdb3d416a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3278-3281","gmt_create":"2026-04-23T09:39:39.5069987+04:00","gmt_modified":"2026-04-23T09:39:39.5069987+04:00"},{"id":31298,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"5244d6587cbf807d34a2848110b1b8ff","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3633-3636","gmt_create":"2026-04-23T09:39:39.5069987+04:00","gmt_modified":"2026-04-23T09:39:39.5069987+04:00"},{"id":31299,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"c8da7c90dc7ff2af502eb264eb4da4f8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3653-3656","gmt_create":"2026-04-23T09:39:39.5069987+04:00","gmt_modified":"2026-04-23T09:39:39.5069987+04:00"},{"id":31300,"source_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","target_id":"f2b6431fb26cd401e272c27017c72bf3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3671-3674","gmt_create":"2026-04-23T09:39:39.5069987+04:00","gmt_modified":"2026-04-23T09:39:39.5069987+04:00"},{"id":31325,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"16a19aa5bcebe9921d90618856c818f2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 36-561","gmt_create":"2026-04-23T09:40:28.0285681+04:00","gmt_modified":"2026-04-23T09:40:28.0285681+04:00"},{"id":31327,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"beb7270033f72ea030a658ed50661db0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 206-456","gmt_create":"2026-04-23T09:40:28.0291509+04:00","gmt_modified":"2026-04-23T09:40:28.0291509+04:00"},{"id":31329,"source_id":"1e6f9e0c4241a3a53748ca848749cd9c","target_id":"3b2b487096be43e59f5232729909dca6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-125","gmt_create":"2026-04-23T09:40:28.0296537+04:00","gmt_modified":"2026-04-23T09:40:28.0296537+04:00"},{"id":31331,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"8f12f59f3a806a27f415ac33df1ff302","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-245","gmt_create":"2026-04-23T09:40:28.0296537+04:00","gmt_modified":"2026-04-23T09:40:28.0296537+04:00"},{"id":31333,"source_id":"a636cebf0fd48c268641a5544c551752","target_id":"1a28848df3aef58b055a3cbae076ffb5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-23T09:40:28.0296537+04:00","gmt_modified":"2026-04-23T09:40:28.0296537+04:00"},{"id":31335,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"50e79df334a3bb7b66eda6917902a0d5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 230-302","gmt_create":"2026-04-23T09:40:28.030657+04:00","gmt_modified":"2026-04-23T09:40:28.030657+04:00"},{"id":31337,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"f95834333ba4c5190b2391b54acf946f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-75","gmt_create":"2026-04-23T09:40:28.030657+04:00","gmt_modified":"2026-04-23T09:40:28.030657+04:00"},{"id":31339,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"a29442fd9e1534478ed2c7ff68c012e3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 161-382","gmt_create":"2026-04-23T09:40:28.032751+04:00","gmt_modified":"2026-04-23T09:40:28.032751+04:00"},{"id":31341,"source_id":"de06c0b429208d005ec4e2b38a7b6678","target_id":"87d3f7f5e4b3b275a1f5c62a722a0c7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-146","gmt_create":"2026-04-23T09:40:28.032751+04:00","gmt_modified":"2026-04-23T09:40:28.032751+04:00"},{"id":31343,"source_id":"d1302454310309381c9368910649870f","target_id":"027e3be7967b0260b348fb2f05d14abd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-226","gmt_create":"2026-04-23T09:40:28.0333912+04:00","gmt_modified":"2026-04-23T09:40:28.0333912+04:00"},{"id":31345,"source_id":"58dab1fa0c82c6d488c1c385549bf65f","target_id":"9532c9bc52ca2d2988bed522e150643c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-143","gmt_create":"2026-04-23T09:40:28.0333912+04:00","gmt_modified":"2026-04-23T09:40:28.0333912+04:00"},{"id":31347,"source_id":"f2e0ab4a21a05fb2b13f0fa0f497f4ae","target_id":"fe18bd4856c81bb8a8a870b01bcb9097","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-132","gmt_create":"2026-04-23T09:40:28.0338944+04:00","gmt_modified":"2026-04-23T09:40:28.0338944+04:00"},{"id":31349,"source_id":"705e8221610923620972eca797fa6db6","target_id":"1e6ec0f9484d9bd2c1919f9c52c43a1a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-47","gmt_create":"2026-04-23T09:40:28.0338944+04:00","gmt_modified":"2026-04-23T09:40:28.0338944+04:00"},{"id":31351,"source_id":"6448b32a9d85a70c1c5dece30706f077","target_id":"66c076e1ffb51e2df0f99d765a976edf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 19-56","gmt_create":"2026-04-23T09:40:28.0344058+04:00","gmt_modified":"2026-04-23T09:40:28.0344058+04:00"},{"id":31353,"source_id":"c70e20aa89698498e7c8e639e9dda898","target_id":"50f895a6649a0d8198a41a111d1d585a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-45","gmt_create":"2026-04-23T09:40:28.0344058+04:00","gmt_modified":"2026-04-23T09:40:28.0344058+04:00"},{"id":31355,"source_id":"c7f289a817d1cf2f2edb643d7c388364","target_id":"fc3df8af7443986c214f3999cd7ce457","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-79","gmt_create":"2026-04-23T09:40:28.0349163+04:00","gmt_modified":"2026-04-23T09:40:28.0349163+04:00"},{"id":31357,"source_id":"f46b9fad5bc65772c0ace22913bdad84","target_id":"67fbfc5e36027ec77b25d6c86003a38f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-26","gmt_create":"2026-04-23T09:40:28.0349163+04:00","gmt_modified":"2026-04-23T09:40:28.0349163+04:00"},{"id":31359,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"462e2bcbab867587a9b198b4f6fb8299","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 360-432","gmt_create":"2026-04-23T09:40:28.0354253+04:00","gmt_modified":"2026-04-23T09:40:28.0354253+04:00"},{"id":31361,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"ef245c2d66c3fb194a0aa1c9dd0f9df4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 980-1200","gmt_create":"2026-04-23T09:40:28.0354253+04:00","gmt_modified":"2026-04-23T09:40:28.0354253+04:00"},{"id":31363,"source_id":"2a488975038d8060fc2bec6672254f8e","target_id":"6eecf475e7edebd6f7012094ec32f048","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 132-154","gmt_create":"2026-04-23T09:40:28.0359355+04:00","gmt_modified":"2026-04-23T09:40:28.0359355+04:00"},{"id":31365,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"e57df16c7fa45b4bb9cbc87c046ef61f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 234-253","gmt_create":"2026-04-23T09:40:28.0364444+04:00","gmt_modified":"2026-04-23T09:40:28.0364444+04:00"},{"id":31367,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"4d11d9a124ba78c619ab8972eb02200d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 56-110","gmt_create":"2026-04-23T09:40:28.036961+04:00","gmt_modified":"2026-04-23T09:40:28.036961+04:00"},{"id":31369,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"a8155a4afab33387a822f670e6673f99","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 206-350","gmt_create":"2026-04-23T09:40:28.036961+04:00","gmt_modified":"2026-04-23T09:40:28.036961+04:00"},{"id":31371,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3424ea448861e3b0a7e659d0fa397328","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 800-925","gmt_create":"2026-04-23T09:40:28.0374702+04:00","gmt_modified":"2026-04-23T09:40:28.0374702+04:00"},{"id":31373,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"304c7132f9cc0ceeaedaf20752d64d3e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-90","gmt_create":"2026-04-23T09:40:28.0374702+04:00","gmt_modified":"2026-04-23T09:40:28.0374702+04:00"},{"id":31375,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"2440453ed344e775de034d6fceab96fa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 253-257","gmt_create":"2026-04-23T09:40:28.037983+04:00","gmt_modified":"2026-04-23T09:40:28.037983+04:00"},{"id":31377,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"506b638fbd5c12dacae95b6b6d5e81d3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 211-230","gmt_create":"2026-04-23T09:40:28.0384939+04:00","gmt_modified":"2026-04-23T09:40:28.0384939+04:00"},{"id":31379,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"7d502c275227ff6a0dad8a6b2cbb0ea2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 168-210","gmt_create":"2026-04-23T09:40:28.0384939+04:00","gmt_modified":"2026-04-23T09:40:28.0384939+04:00"},{"id":31381,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"066f963089585bde1998d3a7cf600f90","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 111-558","gmt_create":"2026-04-23T09:40:28.0390067+04:00","gmt_modified":"2026-04-23T09:40:28.0390067+04:00"},{"id":31383,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"099a7ddd20bd6626a898e0cf7ddbcf93","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-90","gmt_create":"2026-04-23T09:40:28.04001+04:00","gmt_modified":"2026-04-23T09:40:28.04001+04:00"},{"id":31385,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"7caa4d3b24ca280339e15eea6b2ea386","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 134-194","gmt_create":"2026-04-23T09:40:28.04001+04:00","gmt_modified":"2026-04-23T09:40:28.04001+04:00"},{"id":31387,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"0d6c107155ed183ee5ba1d947aa60b6f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 195-227","gmt_create":"2026-04-23T09:40:28.04001+04:00","gmt_modified":"2026-04-23T09:40:28.04001+04:00"},{"id":31389,"source_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","target_id":"07077c35993e2bcc1e6ad243210658c5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 270-285","gmt_create":"2026-04-23T09:40:28.04001+04:00","gmt_modified":"2026-04-23T09:40:28.04001+04:00"},{"id":31391,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"85aba7789e2ca1fe6fcb650fb9a272e5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 161-230","gmt_create":"2026-04-23T09:40:28.0415287+04:00","gmt_modified":"2026-04-23T09:40:28.0415287+04:00"},{"id":31393,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"9071f8d009e4bdc3aabd93156adf0ae5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 356-411","gmt_create":"2026-04-23T09:40:28.0415287+04:00","gmt_modified":"2026-04-23T09:40:28.0415287+04:00"},{"id":31395,"source_id":"d1302454310309381c9368910649870f","target_id":"4a3b4526826da2c57a82aebb48c143a1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-141","gmt_create":"2026-04-23T09:40:28.0425326+04:00","gmt_modified":"2026-04-23T09:40:28.0425326+04:00"},{"id":31397,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"202fe515b0495ce4d9e3461872b5a7a5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 252-286","gmt_create":"2026-04-23T09:40:28.0435324+04:00","gmt_modified":"2026-04-23T09:40:28.0435324+04:00"},{"id":31401,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"0f8940d10bd3fa25101b8055831b577b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 434-491","gmt_create":"2026-04-23T09:40:28.0530711+04:00","gmt_modified":"2026-04-23T09:40:28.0530711+04:00"},{"id":31404,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"1512721e67f0287c71ea498a2bbd1d29","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1000-1200","gmt_create":"2026-04-23T09:40:28.054071+04:00","gmt_modified":"2026-04-23T09:40:28.054071+04:00"},{"id":31406,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"ba755b39604252e4cb43e1706e777543","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 57-64","gmt_create":"2026-04-23T09:40:28.054071+04:00","gmt_modified":"2026-04-23T09:40:28.054071+04:00"},{"id":31408,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"7d02365c3f2f3efaf9155d970698aec7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3985-4051","gmt_create":"2026-04-23T09:40:28.054071+04:00","gmt_modified":"2026-04-23T09:40:28.054071+04:00"},{"id":31410,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"c77aaa56525d9c318664af3ff4ce6135","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 391-417","gmt_create":"2026-04-23T09:40:28.054071+04:00","gmt_modified":"2026-04-23T09:40:28.054071+04:00"},{"id":31412,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"615af9a2f6b8b4df327446e4e8bcc1ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1014-1032","gmt_create":"2026-04-23T09:40:28.0550709+04:00","gmt_modified":"2026-04-23T09:40:28.0550709+04:00"},{"id":31414,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"a3a37e841fb1ecbb2442040ac90e3198","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 100-113","gmt_create":"2026-04-23T09:40:28.0550709+04:00","gmt_modified":"2026-04-23T09:40:28.0550709+04:00"},{"id":31416,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"d3151694a1313762475ee616a2a3cfe0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 58-113","gmt_create":"2026-04-23T09:40:28.0550709+04:00","gmt_modified":"2026-04-23T09:40:28.0550709+04:00"},{"id":31418,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"821eb1ee66481f4569602f236fd2444b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1018-1032","gmt_create":"2026-04-23T09:40:28.056071+04:00","gmt_modified":"2026-04-23T09:40:28.056071+04:00"},{"id":31420,"source_id":"571d673b1b49568d584e159036820875","target_id":"32d5e27edefa46b873fef98c512612b4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 286","gmt_create":"2026-04-23T09:40:28.056071+04:00","gmt_modified":"2026-04-23T09:40:28.056071+04:00"},{"id":31422,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"43d8be46f85d6fc08ba611213afd35db","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3446-3456","gmt_create":"2026-04-23T09:40:28.056071+04:00","gmt_modified":"2026-04-23T09:40:28.056071+04:00"},{"id":31424,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"f9e256558b0a310a3aebb8b9ebb0a744","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1770-1771","gmt_create":"2026-04-23T09:40:28.056071+04:00","gmt_modified":"2026-04-23T09:40:28.056071+04:00"},{"id":31426,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"93dcb94717b1b034e4d9565c437aad1b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2428-2444","gmt_create":"2026-04-23T09:40:28.0570707+04:00","gmt_modified":"2026-04-23T09:40:28.0570707+04:00"},{"id":31428,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"af05147b54f6ad328cd4b288e3985511","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3276-3280","gmt_create":"2026-04-23T09:40:28.0570707+04:00","gmt_modified":"2026-04-23T09:40:28.0570707+04:00"},{"id":31430,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"22e052dd8ab0fdf27afc32b483a37ff7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5295-5303","gmt_create":"2026-04-23T09:40:28.0570707+04:00","gmt_modified":"2026-04-23T09:40:28.0570707+04:00"},{"id":31432,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"a655f35ca12d3877c0294e186b5a5f5d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-561","gmt_create":"2026-04-23T09:40:28.0570707+04:00","gmt_modified":"2026-04-23T09:40:28.0570707+04:00"},{"id":31434,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"0fd95d3fb8e19f476ee368c9acadc148","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-23T09:40:28.0580719+04:00","gmt_modified":"2026-04-23T09:40:28.0580719+04:00"},{"id":31436,"source_id":"1e6f9e0c4241a3a53748ca848749cd9c","target_id":"33b697d7ffcdd3aa1d3e2c8f8e5fca15","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-125","gmt_create":"2026-04-23T09:40:28.0580719+04:00","gmt_modified":"2026-04-23T09:40:28.0580719+04:00"},{"id":31438,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"3736c5a5a1ddf339e5556de0656bfcdf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-75","gmt_create":"2026-04-23T09:40:28.0580719+04:00","gmt_modified":"2026-04-23T09:40:28.0580719+04:00"},{"id":31440,"source_id":"de06c0b429208d005ec4e2b38a7b6678","target_id":"00eee107c9ba823018067fbd4827abdc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-246","gmt_create":"2026-04-23T09:40:28.0580719+04:00","gmt_modified":"2026-04-23T09:40:28.0580719+04:00"},{"id":31442,"source_id":"d1302454310309381c9368910649870f","target_id":"7032d2c44cd05c33be8de43f6514c7d6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-226","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31444,"source_id":"58dab1fa0c82c6d488c1c385549bf65f","target_id":"39c686d025e553f6bad7d2fec4a739ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-565","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31446,"source_id":"f2e0ab4a21a05fb2b13f0fa0f497f4ae","target_id":"03ff87c3dad6c3f5807e0006d9b49e7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-313","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31448,"source_id":"705e8221610923620972eca797fa6db6","target_id":"3147d19a66720276e968aa6544a4292b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-137","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31450,"source_id":"6448b32a9d85a70c1c5dece30706f077","target_id":"0bf9b2bbe6504edfbc3f8394b947929b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-56","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31452,"source_id":"c70e20aa89698498e7c8e639e9dda898","target_id":"3efe898414dcae3fffd2e9c1c0679311","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-62","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31454,"source_id":"c7f289a817d1cf2f2edb643d7c388364","target_id":"48ad93138afd2c83193d808d04cb5573","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-80","gmt_create":"2026-04-23T09:40:28.059071+04:00","gmt_modified":"2026-04-23T09:40:28.059071+04:00"},{"id":31456,"source_id":"f46b9fad5bc65772c0ace22913bdad84","target_id":"b9b4e1e0a88a6640c5e8a94801dbff57","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-27","gmt_create":"2026-04-23T09:40:28.0605744+04:00","gmt_modified":"2026-04-23T09:40:28.0605744+04:00"},{"id":31458,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"ed272eaaa4bd0adbed874f87308f6c81","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-526","gmt_create":"2026-04-23T09:40:28.0605744+04:00","gmt_modified":"2026-04-23T09:40:28.0605744+04:00"},{"id":31460,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"973b0384238fe7370822559425a96f5b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-1976","gmt_create":"2026-04-23T09:40:28.0605744+04:00","gmt_modified":"2026-04-23T09:40:28.0605744+04:00"},{"id":31462,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"3fd5da634ff647b8e47fa2d9f2b10947","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 232-248","gmt_create":"2026-04-23T09:40:28.0605744+04:00","gmt_modified":"2026-04-23T09:40:28.0605744+04:00"},{"id":31464,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"abf26b07298df44b8ad0f82418a28240","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 270-350","gmt_create":"2026-04-23T09:40:28.0615779+04:00","gmt_modified":"2026-04-23T09:40:28.0615779+04:00"},{"id":31466,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"ff2523d2df1db0e5eacb85bdae3f2688","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 368-430","gmt_create":"2026-04-23T09:40:28.0615779+04:00","gmt_modified":"2026-04-23T09:40:28.0615779+04:00"},{"id":31468,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"68b6c0503834784566bd470237e6fbbb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 832-844","gmt_create":"2026-04-23T09:40:28.0615779+04:00","gmt_modified":"2026-04-23T09:40:28.0615779+04:00"},{"id":31470,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"b15e11d3471309dbff74358ab3b597bb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 371-380","gmt_create":"2026-04-23T09:40:28.0615779+04:00","gmt_modified":"2026-04-23T09:40:28.0615779+04:00"},{"id":31472,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"532edf497ce380a6eff5d3fe76792a3c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1018-1020","gmt_create":"2026-04-23T09:40:28.0625776+04:00","gmt_modified":"2026-04-23T09:40:28.0625776+04:00"},{"id":31474,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"57dca27aac4631b2a09561ab190bd578","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 936-970","gmt_create":"2026-04-23T09:40:28.0625776+04:00","gmt_modified":"2026-04-23T09:40:28.0625776+04:00"},{"id":31476,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"98a4db8754b7f187508af46bdd8019c2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 136-169","gmt_create":"2026-04-23T09:40:28.0635789+04:00","gmt_modified":"2026-04-23T09:40:28.0635789+04:00"},{"id":31478,"source_id":"4ec5dd7f21bde7651b20873b01f868c9","target_id":"4227ba2bea4520b3ea3ac8c104d6634e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 92-124","gmt_create":"2026-04-23T09:40:28.0635789+04:00","gmt_modified":"2026-04-23T09:40:28.0635789+04:00"},{"id":31480,"source_id":"9a05c42951266743e782ce0775e5bd42","target_id":"5e74ba9791165e9a27dc768aced92cb8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-64","gmt_create":"2026-04-23T09:40:28.0645785+04:00","gmt_modified":"2026-04-23T09:40:28.0645785+04:00"},{"id":31482,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"03795feb7ae28b007d7a6e71efd6e49b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 234-236","gmt_create":"2026-04-23T09:40:28.0645785+04:00","gmt_modified":"2026-04-23T09:40:28.0645785+04:00"},{"id":31484,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"a62449c820dada6775c37fa7b8a9450b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-53","gmt_create":"2026-04-23T09:40:28.0645785+04:00","gmt_modified":"2026-04-23T09:40:28.0645785+04:00"},{"id":31485,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"9a05c42951266743e782ce0775e5bd42","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-04-23T09:42:13.8543347+04:00","gmt_modified":"2026-04-23T09:42:13.8543347+04:00"},{"id":31486,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T09:42:13.8543347+04:00","gmt_modified":"2026-04-23T09:42:13.8543347+04:00"},{"id":31487,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"a636cebf0fd48c268641a5544c551752","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/block_log.hpp","gmt_create":"2026-04-23T09:42:13.8543347+04:00","gmt_modified":"2026-04-23T09:42:13.8543347+04:00"},{"id":31488,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/block_log.cpp","gmt_create":"2026-04-23T09:42:13.8548528+04:00","gmt_modified":"2026-04-23T09:42:13.8548528+04:00"},{"id":31489,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"d136a3c86c240fca63a64546b4891416","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-23T09:42:13.8548528+04:00","gmt_modified":"2026-04-23T09:42:13.8548528+04:00"},{"id":31490,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"71cbf21e4bf2a2b603ad1183369ec65f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-23T09:42:13.8548528+04:00","gmt_modified":"2026-04-23T09:42:13.8548528+04:00"},{"id":31491,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"1e6f9e0c4241a3a53748ca848749cd9c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-23T09:42:13.8548528+04:00","gmt_modified":"2026-04-23T09:42:13.8548528+04:00"},{"id":31492,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"4ec5dd7f21bde7651b20873b01f868c9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-23T09:42:13.8548528+04:00","gmt_modified":"2026-04-23T09:42:13.8548528+04:00"},{"id":31493,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5d124c256c0fcd736094cfbd39e807a2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database_exceptions.hpp","gmt_create":"2026-04-23T09:42:13.8553709+04:00","gmt_modified":"2026-04-23T09:42:13.8553709+04:00"},{"id":31494,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T09:42:13.8557407+04:00","gmt_modified":"2026-04-23T09:42:13.8557407+04:00"},{"id":31495,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5cdea1b55d11dd83076d2fe00b9305f3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/db_with.hpp","gmt_create":"2026-04-23T09:42:13.8557407+04:00","gmt_modified":"2026-04-23T09:42:13.8557407+04:00"},{"id":31496,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"571d673b1b49568d584e159036820875","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-23T09:42:13.8557407+04:00","gmt_modified":"2026-04-23T09:42:13.8557407+04:00"},{"id":31497,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"f5e2709c934c90bed9814ff547a6da8e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-23T09:42:13.8562433+04:00","gmt_modified":"2026-04-23T09:42:13.8562433+04:00"},{"id":31498,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"38e584d2e1cd119a9140300797cecf16","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/src/chainbase.cpp","gmt_create":"2026-04-23T09:42:13.8563176+04:00","gmt_modified":"2026-04-23T09:42:13.8563176+04:00"},{"id":31499,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"2e9e3cf1864f83b0b302ff86e7423752","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/chainbase/include/chainbase/chainbase.hpp","gmt_create":"2026-04-23T09:42:13.8563176+04:00","gmt_modified":"2026-04-23T09:42:13.8563176+04:00"},{"id":31500,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T09:42:13.8563176+04:00","gmt_modified":"2026-04-23T09:42:13.8563176+04:00"},{"id":31501,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"abf923bd059721b5a0c6f9abfff538be","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-23T09:42:13.8568201+04:00","gmt_modified":"2026-04-23T09:42:13.8568201+04:00"},{"id":31502,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T09:42:13.8568975+04:00","gmt_modified":"2026-04-23T09:42:13.8568975+04:00"},{"id":31503,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"9db09bc4b81abc778a2506dc78451a5f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-642","gmt_create":"2026-04-23T09:42:13.8568975+04:00","gmt_modified":"2026-04-23T09:42:13.8568975+04:00"},{"id":31504,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8114d7a38e6d9b53917762786e49ecc5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-6424","gmt_create":"2026-04-23T09:42:13.8568975+04:00","gmt_modified":"2026-04-23T09:42:13.8568975+04:00"},{"id":31505,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"38a56d06a16ce1ef149caadef5339e6c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/block_log.hpp#1-75","gmt_create":"2026-04-23T09:42:13.8568975+04:00","gmt_modified":"2026-04-23T09:42:13.8568975+04:00"},{"id":31506,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"3bdd5ce714e20d28cf824ab11101de66","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#1-302","gmt_create":"2026-04-23T09:42:13.8578231+04:00","gmt_modified":"2026-04-23T09:42:13.8578231+04:00"},{"id":31507,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"4d593097c4ba86d8ca3e25a81f16c555","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#1-76","gmt_create":"2026-04-23T09:42:13.8578231+04:00","gmt_modified":"2026-04-23T09:42:13.8578231+04:00"},{"id":31508,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"4ed327655b6918bf25321f12456ca6fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#1-414","gmt_create":"2026-04-23T09:42:13.8583266+04:00","gmt_modified":"2026-04-23T09:42:13.8583266+04:00"},{"id":31509,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"d28dbbaa28da9765e4f285b5920dbcfd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#1-138","gmt_create":"2026-04-23T09:42:13.8583266+04:00","gmt_modified":"2026-04-23T09:42:13.8583266+04:00"},{"id":31510,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"654515d81715576dcb9f859a9aada0e9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#1-271","gmt_create":"2026-04-23T09:42:13.8583266+04:00","gmt_modified":"2026-04-23T09:42:13.8583266+04:00"},{"id":31511,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"209f7b117b7f7bb00470bddded3c2398","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database_exceptions.hpp#1-136","gmt_create":"2026-04-23T09:42:13.8583266+04:00","gmt_modified":"2026-04-23T09:42:13.8583266+04:00"},{"id":31512,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"00037cec4c56edf1610ced428572bb7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/db_with.hpp#1-154","gmt_create":"2026-04-23T09:42:13.8593295+04:00","gmt_modified":"2026-04-23T09:42:13.8593295+04:00"},{"id":31513,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"7cc5b740b5c5c8e957b1ac116c71feeb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1420-1430","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31514,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8466f547c850a3f78b548ec3dfdfdf69","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#449-467","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31515,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"3c62831aa433234fc0f7306c1cf418d6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#111-118","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31516,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"bb1e3f10774a7b833f7750a99ab49904","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/src/chainbase.cpp#225-279","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31517,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"46ade8bd6f06d3d9a2c5022fd4ec7aaf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/chainbase/include/chainbase/chainbase.hpp#1200-1260","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31518,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"dd263a594e39d8c84ce42b6efb76acd5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3185-3384","gmt_create":"2026-04-23T09:42:13.8594175+04:00","gmt_modified":"2026-04-23T09:42:13.8594175+04:00"},{"id":31519,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"aaa79e38ddfcec40e12ba298218d83a8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/exceptions.hpp#27-48","gmt_create":"2026-04-23T09:42:13.8609968+04:00","gmt_modified":"2026-04-23T09:42:13.8609968+04:00"},{"id":31520,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"944bb65381e9048751328749ccfb5732","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#181-196","gmt_create":"2026-04-23T09:42:13.8609968+04:00","gmt_modified":"2026-04-23T09:42:13.8609968+04:00"},{"id":31521,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5079f2c8e0fd2e2d3f902aa4eeb20eff","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#61-115","gmt_create":"2026-04-23T09:42:13.8639228+04:00","gmt_modified":"2026-04-23T09:42:13.8639228+04:00"},{"id":31522,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"a3f311781ebc595d7e91829970674d05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#281-324","gmt_create":"2026-04-23T09:42:13.8644261+04:00","gmt_modified":"2026-04-23T09:42:13.8644261+04:00"},{"id":31523,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"554e05f2069045609b95ba69f9e954bb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/block_log.hpp#38-75","gmt_create":"2026-04-23T09:42:13.8704949+04:00","gmt_modified":"2026-04-23T09:42:13.8704949+04:00"},{"id":31524,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"56047023f5259cd1b3b53cc9276548f4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-72","gmt_create":"2026-04-23T09:42:13.8704949+04:00","gmt_modified":"2026-04-23T09:42:13.8704949+04:00"},{"id":31525,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"7d5a6b649ef8d177496d2e0b4f7d2ad2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#53-138","gmt_create":"2026-04-23T09:42:13.8704949+04:00","gmt_modified":"2026-04-23T09:42:13.8704949+04:00"},{"id":31526,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"efc19a66e9ef85b6ecd6479947124d6e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#929-984","gmt_create":"2026-04-23T09:42:13.8714948+04:00","gmt_modified":"2026-04-23T09:42:13.8714948+04:00"},{"id":31527,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"90da84eb4c2939b17a99888253d3cfda","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/db_with.hpp#33-100","gmt_create":"2026-04-23T09:42:13.8714948+04:00","gmt_modified":"2026-04-23T09:42:13.8714948+04:00"},{"id":31528,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"2239009b61286c4b8bcb051f54239d4c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#94-184","gmt_create":"2026-04-23T09:42:13.873495+04:00","gmt_modified":"2026-04-23T09:42:13.873495+04:00"},{"id":31529,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"e21f5adaef81169224a1ff756245f3b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database_exceptions.hpp#83","gmt_create":"2026-04-23T09:42:13.873495+04:00","gmt_modified":"2026-04-23T09:42:13.873495+04:00"},{"id":31530,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"f61b06482f8c2019209eb97059fbdc05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#330-410","gmt_create":"2026-04-23T09:42:13.873495+04:00","gmt_modified":"2026-04-23T09:42:13.873495+04:00"},{"id":31531,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5eec20a2909cd9b68584bd0a13860691","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#134-184","gmt_create":"2026-04-23T09:42:13.8744948+04:00","gmt_modified":"2026-04-23T09:42:13.8744948+04:00"},{"id":31532,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"989129dd2c2f1d2c3d7097f01a59b580","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#503-519","gmt_create":"2026-04-23T09:42:13.8744948+04:00","gmt_modified":"2026-04-23T09:42:13.8744948+04:00"},{"id":31533,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"19ede27e5e317fb0f0663e332bff8e41","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#61-68","gmt_create":"2026-04-23T09:42:13.8754948+04:00","gmt_modified":"2026-04-23T09:42:13.8754948+04:00"},{"id":31534,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"a7c9e78b9bf59b6a3989c0339f9f5991","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1424-1426","gmt_create":"2026-04-23T09:42:13.8754948+04:00","gmt_modified":"2026-04-23T09:42:13.8754948+04:00"},{"id":31535,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"93890fe947bd608f34f438e179d3571b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#704-752","gmt_create":"2026-04-23T09:42:13.8764948+04:00","gmt_modified":"2026-04-23T09:42:13.8764948+04:00"},{"id":31536,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"c4d9e3bfee733cd59a96b18715e26fb7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3986-4039","gmt_create":"2026-04-23T09:42:13.8774949+04:00","gmt_modified":"2026-04-23T09:42:13.8774949+04:00"},{"id":31537,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"16943251fc40e2fea0bdc7df21d26d6c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4144-4175","gmt_create":"2026-04-23T09:42:13.8774949+04:00","gmt_modified":"2026-04-23T09:42:13.8774949+04:00"},{"id":31538,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"88b837eddc75e3df4a5dfb9d74a73902","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4384-4424","gmt_create":"2026-04-23T09:42:13.8774949+04:00","gmt_modified":"2026-04-23T09:42:13.8774949+04:00"},{"id":31539,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"635ae3a3b6d0c742a9aa8911ac0931a6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#70-73","gmt_create":"2026-04-23T09:42:13.8774949+04:00","gmt_modified":"2026-04-23T09:42:13.8774949+04:00"},{"id":31540,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"82c3275180f9bd52205d6daf10f0cec5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#292-292","gmt_create":"2026-04-23T09:42:13.8784947+04:00","gmt_modified":"2026-04-23T09:42:13.8784947+04:00"},{"id":31541,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"476e8657e2d378c04e3da9611464e3d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4460-4490","gmt_create":"2026-04-23T09:42:13.8784947+04:00","gmt_modified":"2026-04-23T09:42:13.8784947+04:00"},{"id":31542,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"73c75f43d010444cfbe1881aea68ac48","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#75-77","gmt_create":"2026-04-23T09:42:13.8784947+04:00","gmt_modified":"2026-04-23T09:42:13.8784947+04:00"},{"id":31543,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"777103f978c926dcb38467a4c4ef2784","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1147-1202","gmt_create":"2026-04-23T09:42:13.8784947+04:00","gmt_modified":"2026-04-23T09:42:13.8784947+04:00"},{"id":31544,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"d8d8a06f04792c8b0df2d56e01dc6a30","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#79-96","gmt_create":"2026-04-23T09:42:13.8800617+04:00","gmt_modified":"2026-04-23T09:42:13.8800617+04:00"},{"id":31545,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"a2fca797b3404d0b8784acaa98037b1c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#340-350","gmt_create":"2026-04-23T09:42:13.8800617+04:00","gmt_modified":"2026-04-23T09:42:13.8800617+04:00"},{"id":31546,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8e44126f8dd872a81f8f38af9407591a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4346-4366","gmt_create":"2026-04-23T09:42:13.8810008+04:00","gmt_modified":"2026-04-23T09:42:13.8810008+04:00"},{"id":31547,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"3fe5a707dc8f738fe4cdf90e202a1c00","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#948-970","gmt_create":"2026-04-23T09:42:13.8810008+04:00","gmt_modified":"2026-04-23T09:42:13.8810008+04:00"},{"id":31548,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"17c5a479c1681b9fa8a9c5b8710b3871","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3652-3711","gmt_create":"2026-04-23T09:42:13.8810008+04:00","gmt_modified":"2026-04-23T09:42:13.8810008+04:00"},{"id":31549,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8df33f74931e748bdb279fb2a7413adc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#639-673","gmt_create":"2026-04-23T09:42:13.8820007+04:00","gmt_modified":"2026-04-23T09:42:13.8820007+04:00"},{"id":31550,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"b24701f580d2bf25220eb3d99d592d19","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#562-605","gmt_create":"2026-04-23T09:42:13.8820007+04:00","gmt_modified":"2026-04-23T09:42:13.8820007+04:00"},{"id":31551,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"5c7525643ec954836de9eb71b2ce4822","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#412-422","gmt_create":"2026-04-23T09:42:13.8820007+04:00","gmt_modified":"2026-04-23T09:42:13.8820007+04:00"},{"id":31552,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"ae8706017fbc3b8f0e9a7419f707fe07","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#454-482","gmt_create":"2026-04-23T09:42:13.8830007+04:00","gmt_modified":"2026-04-23T09:42:13.8830007+04:00"},{"id":31553,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"29a0badf88afa6e203d71a2431de6c46","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#148-164","gmt_create":"2026-04-23T09:42:13.8830007+04:00","gmt_modified":"2026-04-23T09:42:13.8830007+04:00"},{"id":31554,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"1eb3056b5625ce57c7d16199bad4ca50","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#546-556","gmt_create":"2026-04-23T09:42:13.8840008+04:00","gmt_modified":"2026-04-23T09:42:13.8840008+04:00"},{"id":31555,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"318c7e8695c6742e40f80ad9a0082f49","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#631-632","gmt_create":"2026-04-23T09:42:13.8840008+04:00","gmt_modified":"2026-04-23T09:42:13.8840008+04:00"},{"id":31556,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"e8c218094b7d5fe11a9456033ee18e06","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1106-1145","gmt_create":"2026-04-23T09:42:13.8840008+04:00","gmt_modified":"2026-04-23T09:42:13.8840008+04:00"},{"id":31557,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"d44399d7c886bd0af53610c96af0c6d3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1460-1470","gmt_create":"2026-04-23T09:42:13.8840008+04:00","gmt_modified":"2026-04-23T09:42:13.8840008+04:00"},{"id":31558,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"017fafdbdc8bb6416146dfb712f04d60","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#34-46","gmt_create":"2026-04-23T09:42:13.8850007+04:00","gmt_modified":"2026-04-23T09:42:13.8850007+04:00"},{"id":31559,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"2d7840ca18eae0c0962912ac837b7c1a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#81-88","gmt_create":"2026-04-23T09:42:13.8850007+04:00","gmt_modified":"2026-04-23T09:42:13.8850007+04:00"},{"id":31560,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"09be458eb6253d2844adf22b7dcb84ba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1295-1377","gmt_create":"2026-04-23T09:42:13.8860008+04:00","gmt_modified":"2026-04-23T09:42:13.8860008+04:00"},{"id":31561,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"ea1944a89359ddbccd657fb47a341ead","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1216-1286","gmt_create":"2026-04-23T09:42:13.8860008+04:00","gmt_modified":"2026-04-23T09:42:13.8860008+04:00"},{"id":31562,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"caf41318a9685f0d4a55bc4793962169","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#175-192","gmt_create":"2026-04-23T09:42:13.8870007+04:00","gmt_modified":"2026-04-23T09:42:13.8870007+04:00"},{"id":31563,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"caf41318a9685f0d4a55bc4793962169","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 175-192","gmt_create":"2026-04-23T09:42:13.8870007+04:00","gmt_modified":"2026-04-23T09:42:13.8870007+04:00"},{"id":31564,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"341122c5fe576375c3baabbb0ec15efd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3192-3211","gmt_create":"2026-04-23T09:42:13.8870007+04:00","gmt_modified":"2026-04-23T09:42:13.8870007+04:00"},{"id":31565,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"341122c5fe576375c3baabbb0ec15efd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3192-3211","gmt_create":"2026-04-23T09:42:13.8870007+04:00","gmt_modified":"2026-04-23T09:42:13.8870007+04:00"},{"id":31566,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"3ffb1aa7b6196bfe3957274bb7011011","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3444-3499","gmt_create":"2026-04-23T09:42:13.8890007+04:00","gmt_modified":"2026-04-23T09:42:13.8890007+04:00"},{"id":31567,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"43938d9f7207a68c93047be50bd9214d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#218-224","gmt_create":"2026-04-23T09:42:13.8890007+04:00","gmt_modified":"2026-04-23T09:42:13.8890007+04:00"},{"id":31568,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"19489c95f9be1c0698eb501b69b25848","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#284-307","gmt_create":"2026-04-23T09:42:13.890639+04:00","gmt_modified":"2026-04-23T09:42:13.890639+04:00"},{"id":31569,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"4dcf2a8108140e2a4f9394a44a2f7ffa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1158-1198","gmt_create":"2026-04-23T09:42:13.8911418+04:00","gmt_modified":"2026-04-23T09:42:13.8911418+04:00"},{"id":31570,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"15e142a5cb99c56ae0b43217664f73ee","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3652-3655","gmt_create":"2026-04-23T09:42:13.8912129+04:00","gmt_modified":"2026-04-23T09:42:13.8912129+04:00"},{"id":31571,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"4f85c4df0bd388bf50a20515ab2a2c2e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#93-141","gmt_create":"2026-04-23T09:42:13.8912129+04:00","gmt_modified":"2026-04-23T09:42:13.8912129+04:00"},{"id":31572,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"ce696f64e8f5dae1824847fbd5dd7337","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#458-584","gmt_create":"2026-04-23T09:42:13.8917155+04:00","gmt_modified":"2026-04-23T09:42:13.8917155+04:00"},{"id":31573,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"6deaa37979bf1b81c17e15e58b84a2f9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4334-4463","gmt_create":"2026-04-23T09:42:13.8917155+04:00","gmt_modified":"2026-04-23T09:42:13.8917155+04:00"},{"id":31574,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"f5a835a21e81cc09d6d98cf5622e74cc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2047-2144","gmt_create":"2026-04-23T09:42:13.8927184+04:00","gmt_modified":"2026-04-23T09:42:13.8927184+04:00"},{"id":31575,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"3a840e98c5fcf50c855208adc97b9f2e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4378-4416","gmt_create":"2026-04-23T09:42:13.8927184+04:00","gmt_modified":"2026-04-23T09:42:13.8927184+04:00"},{"id":31576,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"b3a7b4a8b89b5bad3984c5e327e81b02","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#2125-2142","gmt_create":"2026-04-23T09:42:13.8927184+04:00","gmt_modified":"2026-04-23T09:42:13.8927184+04:00"},{"id":31577,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"6ff6a282d68d9e062ff275589155562f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4220-4230","gmt_create":"2026-04-23T09:42:13.8937184+04:00","gmt_modified":"2026-04-23T09:42:13.8937184+04:00"},{"id":31578,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"83a8eeb5dc84001310e511c73a0ba062","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#4517-4620","gmt_create":"2026-04-23T09:42:13.8937184+04:00","gmt_modified":"2026-04-23T09:42:13.8937184+04:00"},{"id":31579,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"7a58e14fb571d992c6c872fd9006c534","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-10","gmt_create":"2026-04-23T09:42:13.8947186+04:00","gmt_modified":"2026-04-23T09:42:13.8947186+04:00"},{"id":31580,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"2aeed6e39aa3215de09f9294df95620f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-30","gmt_create":"2026-04-23T09:42:13.8947186+04:00","gmt_modified":"2026-04-23T09:42:13.8947186+04:00"},{"id":31581,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"b981ea0333bb902d1127f5b1e1911503","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#800-830","gmt_create":"2026-04-23T09:42:13.8967184+04:00","gmt_modified":"2026-04-23T09:42:13.8967184+04:00"},{"id":31582,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"8e13b7edb80b9f2e0685d26dea7bb043","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#270-279","gmt_create":"2026-04-23T09:42:13.8967184+04:00","gmt_modified":"2026-04-23T09:42:13.8967184+04:00"},{"id":31583,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"58f395968bb8027af7c74e913908a12d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#492-501","gmt_create":"2026-04-23T09:42:13.8967184+04:00","gmt_modified":"2026-04-23T09:42:13.8967184+04:00"},{"id":31639,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"e8fc4f78dc6c018fb182ce7216a577c7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5241-5274","gmt_create":"2026-04-23T09:45:28.276178+04:00","gmt_modified":"2026-04-23T09:45:28.276178+04:00"},{"id":31641,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"af2c19f2568561b67f019a505b8c1e2a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 284-290","gmt_create":"2026-04-23T09:45:28.2766836+04:00","gmt_modified":"2026-04-23T09:45:28.2766836+04:00"},{"id":31643,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"80a6cf4c3a34c0380cfa7e2bbce50695","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 86-88","gmt_create":"2026-04-23T09:45:28.2766836+04:00","gmt_modified":"2026-04-23T09:45:28.2766836+04:00"},{"id":31657,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"7005600676a1aac078451cab6f714a9c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: README.md","gmt_create":"2026-04-23T09:46:06.508913+04:00","gmt_modified":"2026-04-23T09:46:06.508913+04:00"},{"id":31658,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"3d04b0b0f0eb354aa6f47833f6b3b993","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/plugin.md","gmt_create":"2026-04-23T09:46:06.5095525+04:00","gmt_modified":"2026-04-23T09:46:06.5095525+04:00"},{"id":31659,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"37fb39091ee4b69fe1e682497ff46b55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-23T09:46:06.5100555+04:00","gmt_modified":"2026-04-23T09:46:06.5100555+04:00"},{"id":31660,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"de0fafbf85e2109ebd021f91113f4c4e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/CMakeLists.txt","gmt_create":"2026-04-23T09:46:06.5100555+04:00","gmt_modified":"2026-04-23T09:46:06.5100555+04:00"},{"id":31661,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"8236bb0464725a19a16e9e7bd0d10b5a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-23T09:46:06.5100555+04:00","gmt_modified":"2026-04-23T09:46:06.5100555+04:00"},{"id":31662,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"fdee35c26d891fe544cc27cdb3ead3bf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","gmt_create":"2026-04-23T09:46:06.5100555+04:00","gmt_modified":"2026-04-23T09:46:06.5100555+04:00"},{"id":31663,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"4a4ce940f1e4d0377b80944b807f7236","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","gmt_create":"2026-04-23T09:46:06.5100555+04:00","gmt_modified":"2026-04-23T09:46:06.5100555+04:00"},{"id":31664,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d0fb72b813916ea9f35db2f6cd39bd1e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31665,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"cfd0645ffe0098ddfeb689dc6608a9e9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31666,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31667,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"eda094f6c7f30e5af92cd6361249ffed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/CMakeLists.txt","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31668,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31669,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"84f302d721cd2a423f647f2b50183558","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","gmt_create":"2026-04-23T09:46:06.5110591+04:00","gmt_modified":"2026-04-23T09:46:06.5110591+04:00"},{"id":31670,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"10461f81e6789cf5385cca1e62af9d4d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","gmt_create":"2026-04-23T09:46:06.512059+04:00","gmt_modified":"2026-04-23T09:46:06.512059+04:00"},{"id":31671,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9560988721d95f90724da96e6a4ac318","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/CMakeLists.txt","gmt_create":"2026-04-23T09:46:06.5122838+04:00","gmt_modified":"2026-04-23T09:46:06.5122838+04:00"},{"id":31672,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T09:46:06.5122838+04:00","gmt_modified":"2026-04-23T09:46:06.5122838+04:00"},{"id":31673,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"ae112bbcc58229a7363c2eb7dfc2d58d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/debug_node/plugin.cpp","gmt_create":"2026-04-23T09:46:06.5122838+04:00","gmt_modified":"2026-04-23T09:46:06.5122838+04:00"},{"id":31674,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"049b280127deb064471c9f9f3eba5a5b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-04-23T09:46:06.5127885+04:00","gmt_modified":"2026-04-23T09:46:06.5127885+04:00"},{"id":31675,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"beabef111a7a2136152008b444da9246","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/chain_evaluator.cpp","gmt_create":"2026-04-23T09:46:06.5127885+04:00","gmt_modified":"2026-04-23T09:46:06.5127885+04:00"},{"id":31676,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T09:46:06.5127885+04:00","gmt_modified":"2026-04-23T09:46:06.5127885+04:00"},{"id":31677,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"71cbf21e4bf2a2b603ad1183369ec65f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-23T09:46:06.5127885+04:00","gmt_modified":"2026-04-23T09:46:06.5127885+04:00"},{"id":31678,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d136a3c86c240fca63a64546b4891416","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-23T09:46:06.5143946+04:00","gmt_modified":"2026-04-23T09:46:06.5143946+04:00"},{"id":31679,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31680,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"2c29b33616609cdb7494a96cdf0810bc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.hpp","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31681,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"e6e4173796f1dde64bec92ed8c9462c3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/core_messages.hpp","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31682,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"64b5113e7dbca1ab08e087f095423e81","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/include/fc/network/ip.hpp","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31683,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"0181fe0bb863b7fe871e3af8ad113ddf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/network/ip.cpp","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31684,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"95ce48240aa09e3af69ee56050284497","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/util/newplugin.py","gmt_create":"2026-04-23T09:46:06.5148974+04:00","gmt_modified":"2026-04-23T09:46:06.5148974+04:00"},{"id":31685,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"16a4e2bff0288ec68e9817239c754aed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-23T09:46:06.5154161+04:00","gmt_modified":"2026-04-23T09:46:06.5154161+04:00"},{"id":31686,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d0c48b21ac92d8d2ce3620cecd2dcc6b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#84-118","gmt_create":"2026-04-23T09:46:06.5154161+04:00","gmt_modified":"2026-04-23T09:46:06.5154161+04:00"},{"id":31687,"source_id":"d0fb72b813916ea9f35db2f6cd39bd1e","target_id":"d0c48b21ac92d8d2ce3620cecd2dcc6b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 84-118","gmt_create":"2026-04-23T09:46:06.5154161+04:00","gmt_modified":"2026-04-23T09:46:06.5154161+04:00"},{"id":31688,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"e2a70c9ef153c8f80372be8adbf3b8ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-96","gmt_create":"2026-04-23T09:46:06.5154161+04:00","gmt_modified":"2026-04-23T09:46:06.5154161+04:00"},{"id":31689,"source_id":"8236bb0464725a19a16e9e7bd0d10b5a","target_id":"e2a70c9ef153c8f80372be8adbf3b8ce","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-96","gmt_create":"2026-04-23T09:46:06.5154161+04:00","gmt_modified":"2026-04-23T09:46:06.5154161+04:00"},{"id":31690,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"fc8bf356e433ceaaeeefdfbb09cc2a19","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-57","gmt_create":"2026-04-23T09:46:06.5159297+04:00","gmt_modified":"2026-04-23T09:46:06.5159297+04:00"},{"id":31691,"source_id":"fdee35c26d891fe544cc27cdb3ead3bf","target_id":"fc8bf356e433ceaaeeefdfbb09cc2a19","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-57","gmt_create":"2026-04-23T09:46:06.5159297+04:00","gmt_modified":"2026-04-23T09:46:06.5159297+04:00"},{"id":31692,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"cf291e1486819970446472cc11d8ddc8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#179-403","gmt_create":"2026-04-23T09:46:06.5159297+04:00","gmt_modified":"2026-04-23T09:46:06.5159297+04:00"},{"id":31693,"source_id":"4a4ce940f1e4d0377b80944b807f7236","target_id":"cf291e1486819970446472cc11d8ddc8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 179-403","gmt_create":"2026-04-23T09:46:06.5159297+04:00","gmt_modified":"2026-04-23T09:46:06.5159297+04:00"},{"id":31694,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9bbb84eee1aef90348c72e75495dcaef","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#59-97","gmt_create":"2026-04-23T09:46:06.516443+04:00","gmt_modified":"2026-04-23T09:46:06.516443+04:00"},{"id":31695,"source_id":"cfd0645ffe0098ddfeb689dc6608a9e9","target_id":"9bbb84eee1aef90348c72e75495dcaef","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 59-97","gmt_create":"2026-04-23T09:46:06.516443+04:00","gmt_modified":"2026-04-23T09:46:06.516443+04:00"},{"id":31696,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"e6df5f4cb7c0988a61c77ddbef242064","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#18-52","gmt_create":"2026-04-23T09:46:06.516443+04:00","gmt_modified":"2026-04-23T09:46:06.516443+04:00"},{"id":31697,"source_id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","target_id":"e6df5f4cb7c0988a61c77ddbef242064","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 18-52","gmt_create":"2026-04-23T09:46:06.516443+04:00","gmt_modified":"2026-04-23T09:46:06.516443+04:00"},{"id":31698,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"aedc52070cb049a70230d94dbec9127d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#14-47","gmt_create":"2026-04-23T09:46:06.516443+04:00","gmt_modified":"2026-04-23T09:46:06.516443+04:00"},{"id":31699,"source_id":"84f302d721cd2a423f647f2b50183558","target_id":"aedc52070cb049a70230d94dbec9127d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-47","gmt_create":"2026-04-23T09:46:06.5169659+04:00","gmt_modified":"2026-04-23T09:46:06.5169659+04:00"},{"id":31700,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"03671e2406d9aa4281ec8988ebd11ea3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-76","gmt_create":"2026-04-23T09:46:06.5169659+04:00","gmt_modified":"2026-04-23T09:46:06.5169659+04:00"},{"id":31701,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"56047023f5259cd1b3b53cc9276548f4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-72","gmt_create":"2026-04-23T09:46:06.5169659+04:00","gmt_modified":"2026-04-23T09:46:06.5169659+04:00"},{"id":31702,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"72db60f93c1fd9e588e73681846094ac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#203-257","gmt_create":"2026-04-23T09:46:06.5169659+04:00","gmt_modified":"2026-04-23T09:46:06.5169659+04:00"},{"id":31703,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"72db60f93c1fd9e588e73681846094ac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 203-257","gmt_create":"2026-04-23T09:46:06.517489+04:00","gmt_modified":"2026-04-23T09:46:06.517489+04:00"},{"id":31704,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"bc58f817a47b66576115a959ef4e8de1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#688-697","gmt_create":"2026-04-23T09:46:06.517489+04:00","gmt_modified":"2026-04-23T09:46:06.517489+04:00"},{"id":31705,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"bc58f817a47b66576115a959ef4e8de1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 688-697","gmt_create":"2026-04-23T09:46:06.5180014+04:00","gmt_modified":"2026-04-23T09:46:06.5180014+04:00"},{"id":31706,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"60563e45be74bbac873efa1574b0b44b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3039-3045","gmt_create":"2026-04-23T09:46:06.5180014+04:00","gmt_modified":"2026-04-23T09:46:06.5180014+04:00"},{"id":31707,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"eb47238d4d9c0bc7677c0adbb5315621","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/CMakeLists.txt#1-12","gmt_create":"2026-04-23T09:46:06.5180014+04:00","gmt_modified":"2026-04-23T09:46:06.5180014+04:00"},{"id":31708,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"85674b47bf8d255b25d55436d1c99ffc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#1-28","gmt_create":"2026-04-23T09:46:06.5180014+04:00","gmt_modified":"2026-04-23T09:46:06.5180014+04:00"},{"id":31709,"source_id":"3d04b0b0f0eb354aa6f47833f6b3b993","target_id":"85674b47bf8d255b25d55436d1c99ffc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-28","gmt_create":"2026-04-23T09:46:06.5180014+04:00","gmt_modified":"2026-04-23T09:46:06.5180014+04:00"},{"id":31710,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"8cd5d1f215bde6f6ccb9eb381d24bd40","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#109-113","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31711,"source_id":"d0fb72b813916ea9f35db2f6cd39bd1e","target_id":"8cd5d1f215bde6f6ccb9eb381d24bd40","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 109-113","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31712,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"af8f81a3a4d58504e328d1f8a62b88a3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#88-91","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31713,"source_id":"8236bb0464725a19a16e9e7bd0d10b5a","target_id":"af8f81a3a4d58504e328d1f8a62b88a3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 88-91","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31714,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"1e1cfcc720247454cb277d6e96e30ebc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#60-76","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31715,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"1e1cfcc720247454cb277d6e96e30ebc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 60-76","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31716,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"102e2a7219b22a82d3b64b983854fc33","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#38-55","gmt_create":"2026-04-23T09:46:06.5190041+04:00","gmt_modified":"2026-04-23T09:46:06.5190041+04:00"},{"id":31717,"source_id":"d0fb72b813916ea9f35db2f6cd39bd1e","target_id":"102e2a7219b22a82d3b64b983854fc33","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 38-55","gmt_create":"2026-04-23T09:46:06.5206016+04:00","gmt_modified":"2026-04-23T09:46:06.5206016+04:00"},{"id":31718,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"cb378cc1cd10872797bc4b4e065102e0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#36-42","gmt_create":"2026-04-23T09:46:06.5206573+04:00","gmt_modified":"2026-04-23T09:46:06.5206573+04:00"},{"id":31719,"source_id":"8236bb0464725a19a16e9e7bd0d10b5a","target_id":"cb378cc1cd10872797bc4b4e065102e0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 36-42","gmt_create":"2026-04-23T09:46:06.5206573+04:00","gmt_modified":"2026-04-23T09:46:06.5206573+04:00"},{"id":31720,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9bd9537dad06007198cf14e878c23c41","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#19-31","gmt_create":"2026-04-23T09:46:06.5206573+04:00","gmt_modified":"2026-04-23T09:46:06.5206573+04:00"},{"id":31721,"source_id":"fdee35c26d891fe544cc27cdb3ead3bf","target_id":"9bd9537dad06007198cf14e878c23c41","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 19-31","gmt_create":"2026-04-23T09:46:06.5206573+04:00","gmt_modified":"2026-04-23T09:46:06.5206573+04:00"},{"id":31722,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"787937c04d31ae8f6b77aa3debcbf6d3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#188-191","gmt_create":"2026-04-23T09:46:06.5206573+04:00","gmt_modified":"2026-04-23T09:46:06.5206573+04:00"},{"id":31723,"source_id":"4a4ce940f1e4d0377b80944b807f7236","target_id":"787937c04d31ae8f6b77aa3debcbf6d3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 188-191","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31724,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"b034b054ce403f3ec2fd88efb89a0a16","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#227-398","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31725,"source_id":"4a4ce940f1e4d0377b80944b807f7236","target_id":"b034b054ce403f3ec2fd88efb89a0a16","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 227-398","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31726,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"3fb330c8287106665726a28567c92a5c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#61-65","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31727,"source_id":"cfd0645ffe0098ddfeb689dc6608a9e9","target_id":"3fb330c8287106665726a28567c92a5c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 61-65","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31728,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"3429b78850d8fa62c3600571b75d52ed","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#83-92","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31729,"source_id":"cfd0645ffe0098ddfeb689dc6608a9e9","target_id":"3429b78850d8fa62c3600571b75d52ed","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 83-92","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31730,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"42b40fe3d2456078c7b0ed92b1492ec0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#259-277","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31731,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"42b40fe3d2456078c7b0ed92b1492ec0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 259-277","gmt_create":"2026-04-23T09:46:06.5216049+04:00","gmt_modified":"2026-04-23T09:46:06.5216049+04:00"},{"id":31732,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"2ef0c3b5ceddd702ed88edc8b9e4fdff","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#20-20","gmt_create":"2026-04-23T09:46:06.5226056+04:00","gmt_modified":"2026-04-23T09:46:06.5226056+04:00"},{"id":31733,"source_id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","target_id":"2ef0c3b5ceddd702ed88edc8b9e4fdff","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 20-20","gmt_create":"2026-04-23T09:46:06.5226056+04:00","gmt_modified":"2026-04-23T09:46:06.5226056+04:00"},{"id":31734,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"3db7c2b0d8dc0e8758f4c15214e61313","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#40-49","gmt_create":"2026-04-23T09:46:06.5226056+04:00","gmt_modified":"2026-04-23T09:46:06.5226056+04:00"},{"id":31735,"source_id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","target_id":"3db7c2b0d8dc0e8758f4c15214e61313","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 40-49","gmt_create":"2026-04-23T09:46:06.5226056+04:00","gmt_modified":"2026-04-23T09:46:06.5226056+04:00"},{"id":31736,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"de6fb7cc69ccd55320fdfeb942f0bb25","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#17-19","gmt_create":"2026-04-23T09:46:06.5301535+04:00","gmt_modified":"2026-04-23T09:46:06.5301535+04:00"},{"id":31737,"source_id":"84f302d721cd2a423f647f2b50183558","target_id":"de6fb7cc69ccd55320fdfeb942f0bb25","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-19","gmt_create":"2026-04-23T09:46:06.5301535+04:00","gmt_modified":"2026-04-23T09:46:06.5301535+04:00"},{"id":31738,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"10062bf67720c6d65bf29b7e05e53fac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#46-87","gmt_create":"2026-04-23T09:46:06.5316566+04:00","gmt_modified":"2026-04-23T09:46:06.5316566+04:00"},{"id":31739,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"10062bf67720c6d65bf29b7e05e53fac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-87","gmt_create":"2026-04-23T09:46:06.5316566+04:00","gmt_modified":"2026-04-23T09:46:06.5316566+04:00"},{"id":31740,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"adbd3b90842a67e229e9a1dcedaf1a32","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#11-20","gmt_create":"2026-04-23T09:46:06.5316566+04:00","gmt_modified":"2026-04-23T09:46:06.5316566+04:00"},{"id":31741,"source_id":"3d04b0b0f0eb354aa6f47833f6b3b993","target_id":"adbd3b90842a67e229e9a1dcedaf1a32","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-20","gmt_create":"2026-04-23T09:46:06.5326603+04:00","gmt_modified":"2026-04-23T09:46:06.5326603+04:00"},{"id":31742,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"dc48b7238cc66df599dae38b1c050814","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#77-77","gmt_create":"2026-04-23T09:46:06.5326603+04:00","gmt_modified":"2026-04-23T09:46:06.5326603+04:00"},{"id":31743,"source_id":"cfd0645ffe0098ddfeb689dc6608a9e9","target_id":"dc48b7238cc66df599dae38b1c050814","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 77-77","gmt_create":"2026-04-23T09:46:06.5326603+04:00","gmt_modified":"2026-04-23T09:46:06.5326603+04:00"},{"id":31744,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9332a2a76a3443a79be6fa8dc4048438","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-42","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31745,"source_id":"8236bb0464725a19a16e9e7bd0d10b5a","target_id":"9332a2a76a3443a79be6fa8dc4048438","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-42","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31746,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"b4316318a9574951ff8938c6d99004a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-43","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31747,"source_id":"fdee35c26d891fe544cc27cdb3ead3bf","target_id":"b4316318a9574951ff8938c6d99004a5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-43","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31748,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"70f14f1ee65c0139809ace82cf50998f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/database_api/include/graphene/plugins/database_api/plugin.hpp#179-186","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31749,"source_id":"4a4ce940f1e4d0377b80944b807f7236","target_id":"70f14f1ee65c0139809ace82cf50998f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 179-186","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31750,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"56db7e7959757db95bf454286870321f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/account_history/include/graphene/plugins/account_history/plugin.hpp#59-70","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31751,"source_id":"cfd0645ffe0098ddfeb689dc6608a9e9","target_id":"56db7e7959757db95bf454286870321f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 59-70","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31752,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"60c1f99ef18eeb91f1374893134e9dee","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp#18-32","gmt_create":"2026-04-23T09:46:06.5336603+04:00","gmt_modified":"2026-04-23T09:46:06.5336603+04:00"},{"id":31753,"source_id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","target_id":"60c1f99ef18eeb91f1374893134e9dee","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 18-32","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31754,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"45dba84487f57c51ee08aecf5d9363b5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp#14-41","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31755,"source_id":"84f302d721cd2a423f647f2b50183558","target_id":"45dba84487f57c51ee08aecf5d9363b5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-41","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31756,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"be3f355927902abbacc66fc8ef8d725e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-54","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31757,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"be3f355927902abbacc66fc8ef8d725e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 42-54","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31758,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"b66594f96f1242e29c2ab2acf84ecd32","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#225-246","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31759,"source_id":"95ce48240aa09e3af69ee56050284497","target_id":"b66594f96f1242e29c2ab2acf84ecd32","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 225-246","gmt_create":"2026-04-23T09:46:06.5346611+04:00","gmt_modified":"2026-04-23T09:46:06.5346611+04:00"},{"id":31760,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"c62e1397b94795e465fbc14ea472574b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/util/newplugin.py#168-173","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31761,"source_id":"95ce48240aa09e3af69ee56050284497","target_id":"c62e1397b94795e465fbc14ea472574b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 168-173","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31762,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"aa6229d2d48c7826205ea87375adc9fe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#21-28","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31763,"source_id":"3d04b0b0f0eb354aa6f47833f6b3b993","target_id":"aa6229d2d48c7826205ea87375adc9fe","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-28","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31764,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"a3f311781ebc595d7e91829970674d05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#281-324","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31765,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"82c3275180f9bd52205d6daf10f0cec5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#292-292","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31766,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"35d24cfc3a718f73aa7c90cbb070354a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#313-317","gmt_create":"2026-04-23T09:46:06.5356603+04:00","gmt_modified":"2026-04-23T09:46:06.5356603+04:00"},{"id":31767,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"35d24cfc3a718f73aa7c90cbb070354a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 313-317","gmt_create":"2026-04-23T09:46:06.5366601+04:00","gmt_modified":"2026-04-23T09:46:06.5366601+04:00"},{"id":31768,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"c3c45afd2ec0895d4db392cbb92a0eff","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#13-33","gmt_create":"2026-04-23T09:46:06.5366601+04:00","gmt_modified":"2026-04-23T09:46:06.5366601+04:00"},{"id":31769,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"c3c45afd2ec0895d4db392cbb92a0eff","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-33","gmt_create":"2026-04-23T09:46:06.5366601+04:00","gmt_modified":"2026-04-23T09:46:06.5366601+04:00"},{"id":31770,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"612f94b42fe205b777c3de4c66a78590","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#1-200","gmt_create":"2026-04-23T09:46:06.5366601+04:00","gmt_modified":"2026-04-23T09:46:06.5366601+04:00"},{"id":31771,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"612f94b42fe205b777c3de4c66a78590","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-200","gmt_create":"2026-04-23T09:46:06.5366601+04:00","gmt_modified":"2026-04-23T09:46:06.5366601+04:00"},{"id":31772,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"889576d5248af3e761d8b8f11edbdc3c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#356-382","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31773,"source_id":"71cbf21e4bf2a2b603ad1183369ec65f","target_id":"889576d5248af3e761d8b8f11edbdc3c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 356-382","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31774,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"84c8c2c812e14b7b135e30884b54750b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#558-567","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31775,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"84c8c2c812e14b7b135e30884b54750b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 558-567","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31776,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"a4cd9ca5a718782864b0a097cf977152","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#596-600","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31777,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"a4cd9ca5a718782864b0a097cf977152","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 596-600","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31778,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"223f9c99ce62468c734d65e2870a2d24","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#618-622","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31779,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"223f9c99ce62468c734d65e2870a2d24","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 618-622","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31780,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"be23399b5f0fe8ce230c4fd71dc41290","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#104-164","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31781,"source_id":"37fb39091ee4b69fe1e682497ff46b55","target_id":"be23399b5f0fe8ce230c4fd71dc41290","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 104-164","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31782,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"6475fdf01f4a4784fc1ea9af9ec30f40","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#15-41","gmt_create":"2026-04-23T09:46:06.5376605+04:00","gmt_modified":"2026-04-23T09:46:06.5376605+04:00"},{"id":31783,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"6475fdf01f4a4784fc1ea9af9ec30f40","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-41","gmt_create":"2026-04-23T09:46:06.5386604+04:00","gmt_modified":"2026-04-23T09:46:06.5386604+04:00"},{"id":31784,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"6661694400eeda9076974f6ffb08ad9e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#265-276","gmt_create":"2026-04-23T09:46:06.5386604+04:00","gmt_modified":"2026-04-23T09:46:06.5386604+04:00"},{"id":31785,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"6661694400eeda9076974f6ffb08ad9e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 265-276","gmt_create":"2026-04-23T09:46:06.5386604+04:00","gmt_modified":"2026-04-23T09:46:06.5386604+04:00"},{"id":31786,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"caa0a3bdbedddb20962f5622f4cb96de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#118-165","gmt_create":"2026-04-23T09:46:06.5397449+04:00","gmt_modified":"2026-04-23T09:46:06.5397449+04:00"},{"id":31787,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"caa0a3bdbedddb20962f5622f4cb96de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 118-165","gmt_create":"2026-04-23T09:46:06.5397449+04:00","gmt_modified":"2026-04-23T09:46:06.5397449+04:00"},{"id":31788,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"2f48af123d7c717d87efa86a897072cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#558-580","gmt_create":"2026-04-23T09:46:06.5397449+04:00","gmt_modified":"2026-04-23T09:46:06.5397449+04:00"},{"id":31789,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"2f48af123d7c717d87efa86a897072cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 558-580","gmt_create":"2026-04-23T09:46:06.5397449+04:00","gmt_modified":"2026-04-23T09:46:06.5397449+04:00"},{"id":31790,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d39d62435004686304b872d1aa167517","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#599-620","gmt_create":"2026-04-23T09:46:06.5397449+04:00","gmt_modified":"2026-04-23T09:46:06.5397449+04:00"},{"id":31791,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"d39d62435004686304b872d1aa167517","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 599-620","gmt_create":"2026-04-23T09:46:06.5407289+04:00","gmt_modified":"2026-04-23T09:46:06.5407289+04:00"},{"id":31792,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d966b10c5f40e64a1511a7ee158e788f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#623-640","gmt_create":"2026-04-23T09:46:06.5407289+04:00","gmt_modified":"2026-04-23T09:46:06.5407289+04:00"},{"id":31793,"source_id":"5a775a89bb87e70f60760941848117e7","target_id":"d966b10c5f40e64a1511a7ee158e788f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 623-640","gmt_create":"2026-04-23T09:46:06.5407289+04:00","gmt_modified":"2026-04-23T09:46:06.5407289+04:00"},{"id":31794,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"bfb352c37c5651f8e364f9838b375902","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5254-5274","gmt_create":"2026-04-23T09:46:06.5407289+04:00","gmt_modified":"2026-04-23T09:46:06.5407289+04:00"},{"id":31795,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"bfb352c37c5651f8e364f9838b375902","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5254-5274","gmt_create":"2026-04-23T09:46:06.5417261+04:00","gmt_modified":"2026-04-23T09:46:06.5417261+04:00"},{"id":31796,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"160368e3339d4e55ddfe248fd538d1e3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/CMakeLists.txt#27-34","gmt_create":"2026-04-23T09:46:06.5417261+04:00","gmt_modified":"2026-04-23T09:46:06.5417261+04:00"},{"id":31797,"source_id":"eda094f6c7f30e5af92cd6361249ffed","target_id":"160368e3339d4e55ddfe248fd538d1e3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-34","gmt_create":"2026-04-23T09:46:06.5417261+04:00","gmt_modified":"2026-04-23T09:46:06.5417261+04:00"},{"id":31798,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"215a79715153cc7dbc2d358d6a91799d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/CMakeLists.txt#27-38","gmt_create":"2026-04-23T09:46:06.543726+04:00","gmt_modified":"2026-04-23T09:46:06.543726+04:00"},{"id":31799,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"232a0b4952b0a88c2a0f43241176fca6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#500-508","gmt_create":"2026-04-23T09:46:06.5447262+04:00","gmt_modified":"2026-04-23T09:46:06.5447262+04:00"},{"id":31800,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"232a0b4952b0a88c2a0f43241176fca6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 500-508","gmt_create":"2026-04-23T09:46:06.5447262+04:00","gmt_modified":"2026-04-23T09:46:06.5447262+04:00"},{"id":31801,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9c2392ab068c0dda02cdfe33eceff8e4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/include/fc/network/ip.hpp#69-71","gmt_create":"2026-04-23T09:46:06.5447262+04:00","gmt_modified":"2026-04-23T09:46:06.5447262+04:00"},{"id":31802,"source_id":"64b5113e7dbca1ab08e087f095423e81","target_id":"9c2392ab068c0dda02cdfe33eceff8e4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-71","gmt_create":"2026-04-23T09:46:06.5447262+04:00","gmt_modified":"2026-04-23T09:46:06.5447262+04:00"},{"id":31803,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"f1e088088369adcf3d462fe0e2d53dbf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ip.cpp#35-39","gmt_create":"2026-04-23T09:46:06.545726+04:00","gmt_modified":"2026-04-23T09:46:06.545726+04:00"},{"id":31804,"source_id":"0181fe0bb863b7fe871e3af8ad113ddf","target_id":"f1e088088369adcf3d462fe0e2d53dbf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-39","gmt_create":"2026-04-23T09:46:06.545726+04:00","gmt_modified":"2026-04-23T09:46:06.545726+04:00"},{"id":31805,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"ec0a7e38def2d8b0f21be32808de7860","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/include/fc/network/ip.hpp#12-87","gmt_create":"2026-04-23T09:46:06.5467265+04:00","gmt_modified":"2026-04-23T09:46:06.5467265+04:00"},{"id":31806,"source_id":"64b5113e7dbca1ab08e087f095423e81","target_id":"ec0a7e38def2d8b0f21be32808de7860","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-87","gmt_create":"2026-04-23T09:46:06.5467265+04:00","gmt_modified":"2026-04-23T09:46:06.5467265+04:00"},{"id":31807,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"d43daaa87560a3c4b045281357a6a2b3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/network/ip.cpp#14-87","gmt_create":"2026-04-23T09:46:06.5467265+04:00","gmt_modified":"2026-04-23T09:46:06.5467265+04:00"},{"id":31808,"source_id":"0181fe0bb863b7fe871e3af8ad113ddf","target_id":"d43daaa87560a3c4b045281357a6a2b3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-87","gmt_create":"2026-04-23T09:46:06.5467265+04:00","gmt_modified":"2026-04-23T09:46:06.5467265+04:00"},{"id":31809,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"e50a77e5ebfe7749756f98da252dca65","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.hpp#109-110","gmt_create":"2026-04-23T09:46:06.5467265+04:00","gmt_modified":"2026-04-23T09:46:06.5467265+04:00"},{"id":31810,"source_id":"2c29b33616609cdb7494a96cdf0810bc","target_id":"e50a77e5ebfe7749756f98da252dca65","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 109-110","gmt_create":"2026-04-23T09:46:06.547727+04:00","gmt_modified":"2026-04-23T09:46:06.547727+04:00"},{"id":31811,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"ead7dae43935af711da9e9fb0ee57e55","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4900-4903","gmt_create":"2026-04-23T09:46:06.547727+04:00","gmt_modified":"2026-04-23T09:46:06.547727+04:00"},{"id":31812,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"ead7dae43935af711da9e9fb0ee57e55","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4900-4903","gmt_create":"2026-04-23T09:46:06.547727+04:00","gmt_modified":"2026-04-23T09:46:06.547727+04:00"},{"id":31813,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"bb8a03040c7dd5ef23842135f12c7ada","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/core_messages.hpp#333-345","gmt_create":"2026-04-23T09:46:06.547727+04:00","gmt_modified":"2026-04-23T09:46:06.547727+04:00"},{"id":31814,"source_id":"e6e4173796f1dde64bec92ed8c9462c3","target_id":"bb8a03040c7dd5ef23842135f12c7ada","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 333-345","gmt_create":"2026-04-23T09:46:06.547727+04:00","gmt_modified":"2026-04-23T09:46:06.547727+04:00"},{"id":31815,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"4d389798bfd10ffa507b4eff702ce895","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/include/graphene/plugins/chain/plugin.hpp#21-24","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31816,"source_id":"8236bb0464725a19a16e9e7bd0d10b5a","target_id":"4d389798bfd10ffa507b4eff702ce895","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-24","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31817,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"b299205c99b9ae5248e438a5b8bc28f2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp#32-38","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31818,"source_id":"fdee35c26d891fe544cc27cdb3ead3bf","target_id":"b299205c99b9ae5248e438a5b8bc28f2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 32-38","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31819,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"a23a1085e2cc69dadf154e51b819127d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#44-44","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31820,"source_id":"10461f81e6789cf5385cca1e62af9d4d","target_id":"a23a1085e2cc69dadf154e51b819127d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-44","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31821,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"f5ba325b3d9da76e3ebc5613f9cd98a2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-35","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31822,"source_id":"d136a3c86c240fca63a64546b4891416","target_id":"f5ba325b3d9da76e3ebc5613f9cd98a2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-35","gmt_create":"2026-04-23T09:46:06.5487264+04:00","gmt_modified":"2026-04-23T09:46:06.5487264+04:00"},{"id":31823,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"eb78713649c3eafb6435d5b0e39b4508","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/operations.hpp#14-27","gmt_create":"2026-04-23T09:46:06.5502296+04:00","gmt_modified":"2026-04-23T09:46:06.5502296+04:00"},{"id":31824,"source_id":"049b280127deb064471c9f9f3eba5a5b","target_id":"eb78713649c3eafb6435d5b0e39b4508","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-27","gmt_create":"2026-04-23T09:46:06.5502296+04:00","gmt_modified":"2026-04-23T09:46:06.5502296+04:00"},{"id":31825,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"7e1cfebaa5e9eeb729552133622ecb43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#216-216","gmt_create":"2026-04-23T09:46:06.5502296+04:00","gmt_modified":"2026-04-23T09:46:06.5502296+04:00"},{"id":31826,"source_id":"beabef111a7a2136152008b444da9246","target_id":"7e1cfebaa5e9eeb729552133622ecb43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 216-216","gmt_create":"2026-04-23T09:46:06.5502296+04:00","gmt_modified":"2026-04-23T09:46:06.5502296+04:00"},{"id":31827,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"fbee98959255e2b7f556fd6d47d1b069","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#551-551","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31828,"source_id":"beabef111a7a2136152008b444da9246","target_id":"fbee98959255e2b7f556fd6d47d1b069","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 551-551","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31829,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"2a9174de7944c932a866d3cbce97a49b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/chain_evaluator.cpp#1296-1296","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31830,"source_id":"beabef111a7a2136152008b444da9246","target_id":"2a9174de7944c932a866d3cbce97a49b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1296-1296","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31831,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"ff2d25a7450347c4a58d6558b6ef2187","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#499-528","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31832,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"ff2d25a7450347c4a58d6558b6ef2187","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 499-528","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31833,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"428c4550bf78909ea1be0331756cac88","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/debug_node/plugin.cpp#124-128","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31834,"source_id":"ae112bbcc58229a7363c2eb7dfc2d58d","target_id":"428c4550bf78909ea1be0331756cac88","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 124-128","gmt_create":"2026-04-23T09:46:06.5512339+04:00","gmt_modified":"2026-04-23T09:46:06.5512339+04:00"},{"id":31835,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"bd1c1b5f3a896d421fb3435f617724c1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp#103-107","gmt_create":"2026-04-23T09:46:06.5522362+04:00","gmt_modified":"2026-04-23T09:46:06.5522362+04:00"},{"id":31836,"source_id":"d0fb72b813916ea9f35db2f6cd39bd1e","target_id":"bd1c1b5f3a896d421fb3435f617724c1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 103-107","gmt_create":"2026-04-23T09:46:06.5522362+04:00","gmt_modified":"2026-04-23T09:46:06.5522362+04:00"},{"id":31837,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"1bc773b8020617c00ac7460f95d1a182","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#142-164","gmt_create":"2026-04-23T09:46:06.5532345+04:00","gmt_modified":"2026-04-23T09:46:06.5532345+04:00"},{"id":31838,"source_id":"37fb39091ee4b69fe1e682497ff46b55","target_id":"1bc773b8020617c00ac7460f95d1a182","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 142-164","gmt_create":"2026-04-23T09:46:06.5532345+04:00","gmt_modified":"2026-04-23T09:46:06.5532345+04:00"},{"id":31839,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"fcb075ef-b146-4755-ab58-212aed8a9478","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: dccbfa78-83ae-4fee-9212-5ac10c7424f6 -\u003e fcb075ef-b146-4755-ab58-212aed8a9478","gmt_create":"2026-04-23T09:46:07.1965762+04:00","gmt_modified":"2026-04-23T09:46:07.1965762+04:00"},{"id":31850,"source_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","target_id":"f6b39e62-2b94-459e-8a9c-d731c54bcde6","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 67bce420-e9f6-4b70-b83a-d19411a2f09e -\u003e f6b39e62-2b94-459e-8a9c-d731c54bcde6","gmt_create":"2026-04-23T09:46:07.2089507+04:00","gmt_modified":"2026-04-23T09:46:07.2089507+04:00"},{"id":31866,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"8ed917d817d567a488d62920baedadcc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 689-698","gmt_create":"2026-04-23T11:16:32.2952029+04:00","gmt_modified":"2026-04-23T11:16:32.2952029+04:00"},{"id":31869,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"7925b0a796bd493a01da486c70d0ab64","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 714-715","gmt_create":"2026-04-23T11:16:32.2962084+04:00","gmt_modified":"2026-04-23T11:16:32.2962084+04:00"},{"id":31872,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"1ae9e34ac2be4ef2ed3da08a43b3ca1c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 592-600","gmt_create":"2026-04-23T11:16:32.2980412+04:00","gmt_modified":"2026-04-23T11:16:32.2980412+04:00"},{"id":31874,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"ef3997991d9cf249bb80090feb23abdc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 689-706","gmt_create":"2026-04-23T11:16:32.303035+04:00","gmt_modified":"2026-04-23T11:16:32.303035+04:00"},{"id":31877,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"b136009499eb952960a997500371c413","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-92","gmt_create":"2026-04-23T11:16:32.3036563+04:00","gmt_modified":"2026-04-23T11:16:32.3036563+04:00"},{"id":31879,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"9f67fdb767ce515af96c465dbbb1fe8f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 497-521","gmt_create":"2026-04-23T11:16:32.3046838+04:00","gmt_modified":"2026-04-23T11:16:32.3046838+04:00"},{"id":31881,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"acad8673bff956aca1d53443f4ba5739","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 780-785","gmt_create":"2026-04-23T11:16:32.3046838+04:00","gmt_modified":"2026-04-23T11:16:32.3046838+04:00"},{"id":31884,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"ffcabaf2fce1313ba726f943d26bdf4a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 537-540","gmt_create":"2026-04-23T11:16:32.3056929+04:00","gmt_modified":"2026-04-23T11:16:32.3056929+04:00"},{"id":31886,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"2ed9aa8440a7a4d0e1b58d003e493158","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 786-792","gmt_create":"2026-04-23T11:16:32.3056929+04:00","gmt_modified":"2026-04-23T11:16:32.3056929+04:00"},{"id":31888,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"d1be4370926b5262daf2447b9745d905","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 487-495","gmt_create":"2026-04-23T11:16:32.3056929+04:00","gmt_modified":"2026-04-23T11:16:32.3056929+04:00"},{"id":31890,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"5fdf8584baa2beb83725ffd40a065ff4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 52-56","gmt_create":"2026-04-23T11:16:32.3056929+04:00","gmt_modified":"2026-04-23T11:16:32.3056929+04:00"},{"id":31892,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"034d2639f50a8ac9d67ffbf0594a6afa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 441-445","gmt_create":"2026-04-23T11:16:32.3071675+04:00","gmt_modified":"2026-04-23T11:16:32.3071675+04:00"},{"id":31894,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"65d8ec4282c90ca603928ff3ca7a8c1c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 169-206","gmt_create":"2026-04-23T11:16:32.3071675+04:00","gmt_modified":"2026-04-23T11:16:32.3071675+04:00"},{"id":31896,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"9483fd3d971ce258539c764b97277642","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-66","gmt_create":"2026-04-23T11:16:32.3071675+04:00","gmt_modified":"2026-04-23T11:16:32.3071675+04:00"},{"id":31898,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"b798a371453386ed55f39515a7f187ce","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 223-239","gmt_create":"2026-04-23T11:16:32.3071675+04:00","gmt_modified":"2026-04-23T11:16:32.3071675+04:00"},{"id":31901,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"9adff7a947c035e71543339de4f875ec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 638-640","gmt_create":"2026-04-23T11:16:32.3071675+04:00","gmt_modified":"2026-04-23T11:16:32.3071675+04:00"},{"id":31904,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"6b49cb375a448fd15559d24da7d7e23c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 548-567","gmt_create":"2026-04-23T11:16:32.3086705+04:00","gmt_modified":"2026-04-23T11:16:32.3086705+04:00"},{"id":31907,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"3edc836b9f3a1df5c933c63ecc8ce954","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 55-106","gmt_create":"2026-04-23T11:16:32.3086705+04:00","gmt_modified":"2026-04-23T11:16:32.3086705+04:00"},{"id":31909,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"7b44d15de5faea5ec5d9aa45843a4779","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-136","gmt_create":"2026-04-23T11:16:32.3096745+04:00","gmt_modified":"2026-04-23T11:16:32.3096745+04:00"},{"id":31911,"source_id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","target_id":"5d3ecf8dbda10c5dac6bfd961791d02b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-132","gmt_create":"2026-04-23T11:16:32.3102676+04:00","gmt_modified":"2026-04-23T11:16:32.3102676+04:00"},{"id":31913,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"e5968eacd23776d0e60478ea5cc7d523","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 403-405","gmt_create":"2026-04-23T11:16:32.3102676+04:00","gmt_modified":"2026-04-23T11:16:32.3102676+04:00"},{"id":31915,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"3942d16870ce25abce21196a1bb5866b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 112-136","gmt_create":"2026-04-23T11:16:32.3118754+04:00","gmt_modified":"2026-04-23T11:16:32.3118754+04:00"},{"id":31917,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"2c8c910dec8b5db99994a8643fd780e8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5259-5262","gmt_create":"2026-04-23T11:16:32.3118754+04:00","gmt_modified":"2026-04-23T11:16:32.3118754+04:00"},{"id":31919,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"d48e61b6c0afbe8b0a4d20deff593854","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 467-482","gmt_create":"2026-04-23T11:16:32.3254446+04:00","gmt_modified":"2026-04-23T11:16:32.3254446+04:00"},{"id":31921,"source_id":"475c2f17a00cd4de82dd54bf0a8126ac","target_id":"b07b9e450af40c43c796bcc7ecf03443","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-107","gmt_create":"2026-04-23T11:16:32.326568+04:00","gmt_modified":"2026-04-23T11:16:32.326568+04:00"},{"id":31922,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"16a4e2bff0288ec68e9817239c754aed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-23T11:18:10.1718157+04:00","gmt_modified":"2026-04-23T11:18:10.1718157+04:00"},{"id":31923,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_testnet.ini","gmt_create":"2026-04-23T11:18:10.1718157+04:00","gmt_modified":"2026-04-23T11:18:10.1718157+04:00"},{"id":31924,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"475c2f17a00cd4de82dd54bf0a8126ac","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_witness.ini","gmt_create":"2026-04-23T11:18:10.1718157+04:00","gmt_modified":"2026-04-23T11:18:10.1718157+04:00"},{"id":31925,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"56e73581fcc11e3d5d304c4453d84a9f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_mongo.ini","gmt_create":"2026-04-23T11:18:10.1733476+04:00","gmt_modified":"2026-04-23T11:18:10.1733476+04:00"},{"id":31926,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"1703516eef21eec01e919079e221dabb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_debug.ini","gmt_create":"2026-04-23T11:18:10.1733476+04:00","gmt_modified":"2026-04-23T11:18:10.1733476+04:00"},{"id":31927,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"77d7d5cae5b2ba02b7b3e0116c821669","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_debug_mongo.ini","gmt_create":"2026-04-23T11:18:10.1733476+04:00","gmt_modified":"2026-04-23T11:18:10.1733476+04:00"},{"id":31928,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"48369ee5882470d563a4a3760712465a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-production","gmt_create":"2026-04-23T11:18:10.1749628+04:00","gmt_modified":"2026-04-23T11:18:10.1749628+04:00"},{"id":31929,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"5c83db7209d29d47467923bf09fbb420","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-04-23T11:18:10.1758853+04:00","gmt_modified":"2026-04-23T11:18:10.1758853+04:00"},{"id":31930,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-04-23T11:18:10.1758853+04:00","gmt_modified":"2026-04-23T11:18:10.1758853+04:00"},{"id":31931,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"295d36eeed1ab98565250d89d54cc36a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/vizd.sh","gmt_create":"2026-04-23T11:18:10.1758853+04:00","gmt_modified":"2026-04-23T11:18:10.1758853+04:00"},{"id":31932,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"988bb985afa7b7add75e4415b239b6a6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/vizd/main.cpp","gmt_create":"2026-04-23T11:18:10.1768854+04:00","gmt_modified":"2026-04-23T11:18:10.1768854+04:00"},{"id":31933,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"32cf30b2e9094b9693ab53917b0a2eb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-23T11:18:10.1768854+04:00","gmt_modified":"2026-04-23T11:18:10.1768854+04:00"},{"id":31934,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"33769e7ecefb7ac442a88bcc6e7fe7db","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/building.md","gmt_create":"2026-04-23T11:18:10.1768854+04:00","gmt_modified":"2026-04-23T11:18:10.1768854+04:00"},{"id":31935,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"2422c587506c0b05e97687067ae1d1cf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/testnet.md","gmt_create":"2026-04-23T11:18:10.1768854+04:00","gmt_modified":"2026-04-23T11:18:10.1768854+04:00"},{"id":31936,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3d04b0b0f0eb354aa6f47833f6b3b993","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/plugin.md","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31937,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"571d673b1b49568d584e159036820875","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31938,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3a1c05308902dc684e85898a790b0e07","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config_testnet.hpp","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31939,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f5e2709c934c90bed9814ff547a6da8e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/protocol/include/graphene/protocol/config.hpp","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31940,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"37fb39091ee4b69fe1e682497ff46b55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31941,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T11:18:10.1778826+04:00","gmt_modified":"2026-04-23T11:18:10.1778826+04:00"},{"id":31942,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"d478cca230f790bc8f1573f56a55a987","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-23T11:18:10.1788825+04:00","gmt_modified":"2026-04-23T11:18:10.1788825+04:00"},{"id":31943,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"1c1b4b5872b3e0fa0bef4de9fb558675","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/appbase/application.cpp","gmt_create":"2026-04-23T11:18:10.1788825+04:00","gmt_modified":"2026-04-23T11:18:10.1788825+04:00"},{"id":31944,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"7b44d15de5faea5ec5d9aa45843a4779","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-136","gmt_create":"2026-04-23T11:18:10.1788825+04:00","gmt_modified":"2026-04-23T11:18:10.1788825+04:00"},{"id":31945,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"5d3ecf8dbda10c5dac6bfd961791d02b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#1-132","gmt_create":"2026-04-23T11:18:10.1788825+04:00","gmt_modified":"2026-04-23T11:18:10.1788825+04:00"},{"id":31946,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f5e62fc26a62060b28ed790b81427d7c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#1-138","gmt_create":"2026-04-23T11:18:10.1788825+04:00","gmt_modified":"2026-04-23T11:18:10.1788825+04:00"},{"id":31947,"source_id":"475c2f17a00cd4de82dd54bf0a8126ac","target_id":"f5e62fc26a62060b28ed790b81427d7c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-138","gmt_create":"2026-04-23T11:18:10.1803889+04:00","gmt_modified":"2026-04-23T11:18:10.1803889+04:00"},{"id":31948,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"1259b9b4603fb7654c05f55dda13086b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_mongo.ini#1-135","gmt_create":"2026-04-23T11:18:10.1804428+04:00","gmt_modified":"2026-04-23T11:18:10.1804428+04:00"},{"id":31949,"source_id":"56e73581fcc11e3d5d304c4453d84a9f","target_id":"1259b9b4603fb7654c05f55dda13086b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-135","gmt_create":"2026-04-23T11:18:10.1804428+04:00","gmt_modified":"2026-04-23T11:18:10.1804428+04:00"},{"id":31950,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f879c180ea600db69334ce6c60ebfc67","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug.ini#1-126","gmt_create":"2026-04-23T11:18:10.1804428+04:00","gmt_modified":"2026-04-23T11:18:10.1804428+04:00"},{"id":31951,"source_id":"1703516eef21eec01e919079e221dabb","target_id":"f879c180ea600db69334ce6c60ebfc67","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-126","gmt_create":"2026-04-23T11:18:10.1813957+04:00","gmt_modified":"2026-04-23T11:18:10.1813957+04:00"},{"id":31952,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"89065e1727f834ef21b27213c44f73d8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_debug_mongo.ini#1-135","gmt_create":"2026-04-23T11:18:10.1813957+04:00","gmt_modified":"2026-04-23T11:18:10.1813957+04:00"},{"id":31953,"source_id":"77d7d5cae5b2ba02b7b3e0116c821669","target_id":"89065e1727f834ef21b27213c44f73d8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-135","gmt_create":"2026-04-23T11:18:10.1813957+04:00","gmt_modified":"2026-04-23T11:18:10.1813957+04:00"},{"id":31954,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"a508dd7eb64847424ab271643cd9888c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#1-88","gmt_create":"2026-04-23T11:18:10.1823954+04:00","gmt_modified":"2026-04-23T11:18:10.1823954+04:00"},{"id":31955,"source_id":"48369ee5882470d563a4a3760712465a","target_id":"a508dd7eb64847424ab271643cd9888c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-88","gmt_create":"2026-04-23T11:18:10.1823954+04:00","gmt_modified":"2026-04-23T11:18:10.1823954+04:00"},{"id":31956,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"cfae55af59e33580d0ead5c9858873b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#1-88","gmt_create":"2026-04-23T11:18:10.1823954+04:00","gmt_modified":"2026-04-23T11:18:10.1823954+04:00"},{"id":31957,"source_id":"5c83db7209d29d47467923bf09fbb420","target_id":"cfae55af59e33580d0ead5c9858873b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-88","gmt_create":"2026-04-23T11:18:10.1823954+04:00","gmt_modified":"2026-04-23T11:18:10.1823954+04:00"},{"id":31958,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"e50af0202c9d2df3c95dcd52b22a7875","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#1-82","gmt_create":"2026-04-23T11:18:10.1833948+04:00","gmt_modified":"2026-04-23T11:18:10.1833948+04:00"},{"id":31959,"source_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","target_id":"e50af0202c9d2df3c95dcd52b22a7875","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-82","gmt_create":"2026-04-23T11:18:10.1833948+04:00","gmt_modified":"2026-04-23T11:18:10.1833948+04:00"},{"id":31960,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"02d97913f7b4b7815c62c96757406f05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#1-82","gmt_create":"2026-04-23T11:18:10.1833948+04:00","gmt_modified":"2026-04-23T11:18:10.1833948+04:00"},{"id":31961,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"02d97913f7b4b7815c62c96757406f05","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-82","gmt_create":"2026-04-23T11:18:10.1833948+04:00","gmt_modified":"2026-04-23T11:18:10.1833948+04:00"},{"id":31962,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3ecc8f59e40237d675df5dc5f2ab9e3f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#106-158","gmt_create":"2026-04-23T11:18:10.1833948+04:00","gmt_modified":"2026-04-23T11:18:10.1833948+04:00"},{"id":31963,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"3ecc8f59e40237d675df5dc5f2ab9e3f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 106-158","gmt_create":"2026-04-23T11:18:10.1843971+04:00","gmt_modified":"2026-04-23T11:18:10.1843971+04:00"},{"id":31964,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"8ea516cf0275c865b6616ac02038e975","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#167-191","gmt_create":"2026-04-23T11:18:10.1863975+04:00","gmt_modified":"2026-04-23T11:18:10.1863975+04:00"},{"id":31965,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"8ea516cf0275c865b6616ac02038e975","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 167-191","gmt_create":"2026-04-23T11:18:10.1873973+04:00","gmt_modified":"2026-04-23T11:18:10.1873973+04:00"},{"id":31966,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"9e64b3a2336887764e7763504ce8f71e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#194-289","gmt_create":"2026-04-23T11:18:10.1873973+04:00","gmt_modified":"2026-04-23T11:18:10.1873973+04:00"},{"id":31967,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"9e64b3a2336887764e7763504ce8f71e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 194-289","gmt_create":"2026-04-23T11:18:10.1873973+04:00","gmt_modified":"2026-04-23T11:18:10.1873973+04:00"},{"id":31968,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"c0e776269c77e718b0080a3324a03252","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#13-81","gmt_create":"2026-04-23T11:18:10.1883963+04:00","gmt_modified":"2026-04-23T11:18:10.1883963+04:00"},{"id":31969,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"c0e776269c77e718b0080a3324a03252","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 13-81","gmt_create":"2026-04-23T11:18:10.1883963+04:00","gmt_modified":"2026-04-23T11:18:10.1883963+04:00"},{"id":31970,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"723df9738dcc68a8f36385eac9a23b58","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#112-139","gmt_create":"2026-04-23T11:18:10.1883963+04:00","gmt_modified":"2026-04-23T11:18:10.1883963+04:00"},{"id":31971,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"723df9738dcc68a8f36385eac9a23b58","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 112-139","gmt_create":"2026-04-23T11:18:10.1883963+04:00","gmt_modified":"2026-04-23T11:18:10.1883963+04:00"},{"id":31972,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"66d4da5ca8d98cc1daac8e113015bc44","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#211-289","gmt_create":"2026-04-23T11:18:10.1893961+04:00","gmt_modified":"2026-04-23T11:18:10.1893961+04:00"},{"id":31973,"source_id":"988bb985afa7b7add75e4415b239b6a6","target_id":"66d4da5ca8d98cc1daac8e113015bc44","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 211-289","gmt_create":"2026-04-23T11:18:10.1893961+04:00","gmt_modified":"2026-04-23T11:18:10.1893961+04:00"},{"id":31974,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"02a59ce905e8fa73dd8ca7f928ca2193","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#118-136","gmt_create":"2026-04-23T11:18:10.1893961+04:00","gmt_modified":"2026-04-23T11:18:10.1893961+04:00"},{"id":31975,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"02a59ce905e8fa73dd8ca7f928ca2193","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 118-136","gmt_create":"2026-04-23T11:18:10.1909049+04:00","gmt_modified":"2026-04-23T11:18:10.1909049+04:00"},{"id":31976,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"11a4a0b249c7d67d935d0f973bbfbf9e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#17-37","gmt_create":"2026-04-23T11:18:10.1911374+04:00","gmt_modified":"2026-04-23T11:18:10.1911374+04:00"},{"id":31977,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"11a4a0b249c7d67d935d0f973bbfbf9e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-37","gmt_create":"2026-04-23T11:18:10.1911374+04:00","gmt_modified":"2026-04-23T11:18:10.1911374+04:00"},{"id":31978,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"8d40a619d37d62a4174c9e4f961de6bc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#62-72","gmt_create":"2026-04-23T11:18:10.1919151+04:00","gmt_modified":"2026-04-23T11:18:10.1919151+04:00"},{"id":31979,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"8d40a619d37d62a4174c9e4f961de6bc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 62-72","gmt_create":"2026-04-23T11:18:10.1919151+04:00","gmt_modified":"2026-04-23T11:18:10.1919151+04:00"},{"id":31980,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f61e616c21dc286dc1ae08fad69742ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#74-81","gmt_create":"2026-04-23T11:18:10.1919151+04:00","gmt_modified":"2026-04-23T11:18:10.1919151+04:00"},{"id":31981,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"f61e616c21dc286dc1ae08fad69742ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 74-81","gmt_create":"2026-04-23T11:18:10.1919151+04:00","gmt_modified":"2026-04-23T11:18:10.1919151+04:00"},{"id":31982,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"b577652662571d1a6efff44b8a3bedac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#45-51","gmt_create":"2026-04-23T11:18:10.192918+04:00","gmt_modified":"2026-04-23T11:18:10.192918+04:00"},{"id":31983,"source_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","target_id":"b577652662571d1a6efff44b8a3bedac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45-51","gmt_create":"2026-04-23T11:18:10.192918+04:00","gmt_modified":"2026-04-23T11:18:10.192918+04:00"},{"id":31984,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"27e17a8b16a2046c86431c4efb55c490","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/building.md#11-15","gmt_create":"2026-04-23T11:18:10.1939152+04:00","gmt_modified":"2026-04-23T11:18:10.1939152+04:00"},{"id":31985,"source_id":"33769e7ecefb7ac442a88bcc6e7fe7db","target_id":"27e17a8b16a2046c86431c4efb55c490","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-15","gmt_create":"2026-04-23T11:18:10.1939152+04:00","gmt_modified":"2026-04-23T11:18:10.1939152+04:00"},{"id":31986,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f95c6fd9bbadfc95b3e751af0eedc850","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#73-85","gmt_create":"2026-04-23T11:18:10.1949131+04:00","gmt_modified":"2026-04-23T11:18:10.1949131+04:00"},{"id":31987,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"f95c6fd9bbadfc95b3e751af0eedc850","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 73-85","gmt_create":"2026-04-23T11:18:10.1949131+04:00","gmt_modified":"2026-04-23T11:18:10.1949131+04:00"},{"id":31988,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"d7563de88c1c2455fbab29fc8bf59151","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#69-73","gmt_create":"2026-04-23T11:18:10.1949131+04:00","gmt_modified":"2026-04-23T11:18:10.1949131+04:00"},{"id":31989,"source_id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","target_id":"d7563de88c1c2455fbab29fc8bf59151","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 69-73","gmt_create":"2026-04-23T11:18:10.1949131+04:00","gmt_modified":"2026-04-23T11:18:10.1949131+04:00"},{"id":31990,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"66a1852e5ddbbf1c1e3623904184dd7f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#72-84","gmt_create":"2026-04-23T11:18:10.1959128+04:00","gmt_modified":"2026-04-23T11:18:10.1959128+04:00"},{"id":31991,"source_id":"475c2f17a00cd4de82dd54bf0a8126ac","target_id":"66a1852e5ddbbf1c1e3623904184dd7f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 72-84","gmt_create":"2026-04-23T11:18:10.1959128+04:00","gmt_modified":"2026-04-23T11:18:10.1959128+04:00"},{"id":31992,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"fac32e0593f6022cefafd878acb27805","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-16","gmt_create":"2026-04-23T11:18:10.1959128+04:00","gmt_modified":"2026-04-23T11:18:10.1959128+04:00"},{"id":31993,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"fac32e0593f6022cefafd878acb27805","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-16","gmt_create":"2026-04-23T11:18:10.1959128+04:00","gmt_modified":"2026-04-23T11:18:10.1959128+04:00"},{"id":31994,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"f230a2eda062b0bb4b25752269697907","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#1-11","gmt_create":"2026-04-23T11:18:10.1959128+04:00","gmt_modified":"2026-04-23T11:18:10.1959128+04:00"},{"id":31995,"source_id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","target_id":"f230a2eda062b0bb4b25752269697907","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-11","gmt_create":"2026-04-23T11:18:10.196919+04:00","gmt_modified":"2026-04-23T11:18:10.196919+04:00"},{"id":31996,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"5b0c578c897b0e81a8472eb992c1948c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#1-15","gmt_create":"2026-04-23T11:18:10.196919+04:00","gmt_modified":"2026-04-23T11:18:10.196919+04:00"},{"id":31997,"source_id":"475c2f17a00cd4de82dd54bf0a8126ac","target_id":"5b0c578c897b0e81a8472eb992c1948c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-15","gmt_create":"2026-04-23T11:18:10.196919+04:00","gmt_modified":"2026-04-23T11:18:10.196919+04:00"},{"id":31998,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"6ee3005060680b6efd42fd067cd1b6fa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#54-56","gmt_create":"2026-04-23T11:18:10.196919+04:00","gmt_modified":"2026-04-23T11:18:10.196919+04:00"},{"id":31999,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"6ee3005060680b6efd42fd067cd1b6fa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 54-56","gmt_create":"2026-04-23T11:18:10.196919+04:00","gmt_modified":"2026-04-23T11:18:10.196919+04:00"},{"id":32000,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"2a51e3bcda512928b2c175f069b49da1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#105-106","gmt_create":"2026-04-23T11:18:10.1979134+04:00","gmt_modified":"2026-04-23T11:18:10.1979134+04:00"},{"id":32001,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"2a51e3bcda512928b2c175f069b49da1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 105-106","gmt_create":"2026-04-23T11:18:10.1979134+04:00","gmt_modified":"2026-04-23T11:18:10.1979134+04:00"},{"id":32002,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"e0fb8983bc6bcc17a8c8c5ad398307ba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/plugin.md#14-18","gmt_create":"2026-04-23T11:18:10.1989135+04:00","gmt_modified":"2026-04-23T11:18:10.1989135+04:00"},{"id":32003,"source_id":"3d04b0b0f0eb354aa6f47833f6b3b993","target_id":"e0fb8983bc6bcc17a8c8c5ad398307ba","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 14-18","gmt_create":"2026-04-23T11:18:10.1999146+04:00","gmt_modified":"2026-04-23T11:18:10.1999146+04:00"},{"id":32004,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"dc45b878fea55940e84795c898d534e2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#17-72","gmt_create":"2026-04-23T11:18:10.1999146+04:00","gmt_modified":"2026-04-23T11:18:10.1999146+04:00"},{"id":32005,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"dc45b878fea55940e84795c898d534e2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 17-72","gmt_create":"2026-04-23T11:18:10.1999146+04:00","gmt_modified":"2026-04-23T11:18:10.1999146+04:00"},{"id":32006,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"9b21fb63c2c0f7d75fdcc009d4ec9797","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#49-67","gmt_create":"2026-04-23T11:18:10.1999146+04:00","gmt_modified":"2026-04-23T11:18:10.1999146+04:00"},{"id":32007,"source_id":"16a4e2bff0288ec68e9817239c754aed","target_id":"9b21fb63c2c0f7d75fdcc009d4ec9797","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-67","gmt_create":"2026-04-23T11:18:10.1999146+04:00","gmt_modified":"2026-04-23T11:18:10.1999146+04:00"},{"id":32008,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"0c2dc00bd927808ce5deb1882d22281e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2974-2983","gmt_create":"2026-04-23T11:18:10.2014205+04:00","gmt_modified":"2026-04-23T11:18:10.2014205+04:00"},{"id":32009,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"0c2dc00bd927808ce5deb1882d22281e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 2974-2983","gmt_create":"2026-04-23T11:18:10.2169904+04:00","gmt_modified":"2026-04-23T11:18:10.2169904+04:00"},{"id":32010,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"b605e7c4ef39a7dcf4decc6078a67230","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3044-3050","gmt_create":"2026-04-23T11:18:10.2179489+04:00","gmt_modified":"2026-04-23T11:18:10.2179489+04:00"},{"id":32011,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"b605e7c4ef39a7dcf4decc6078a67230","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3044-3050","gmt_create":"2026-04-23T11:18:10.2179489+04:00","gmt_modified":"2026-04-23T11:18:10.2179489+04:00"},{"id":32012,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"585169926520ae8df39c3a059f57c8d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#3070-3090","gmt_create":"2026-04-23T11:18:10.2179489+04:00","gmt_modified":"2026-04-23T11:18:10.2179489+04:00"},{"id":32013,"source_id":"418562d4716f53d3060f183ffa64036c","target_id":"585169926520ae8df39c3a059f57c8d0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3070-3090","gmt_create":"2026-04-23T11:18:10.2179489+04:00","gmt_modified":"2026-04-23T11:18:10.2179489+04:00"},{"id":32014,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"e6f25269916d6af7894cc98681fba58a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#352-355","gmt_create":"2026-04-23T11:18:10.2189476+04:00","gmt_modified":"2026-04-23T11:18:10.2189476+04:00"},{"id":32015,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"e6f25269916d6af7894cc98681fba58a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 352-355","gmt_create":"2026-04-23T11:18:10.2189476+04:00","gmt_modified":"2026-04-23T11:18:10.2189476+04:00"},{"id":32016,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"8cef3542a1f8beb59e711d1019148801","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/appbase/application.cpp#298-300","gmt_create":"2026-04-23T11:18:10.2189476+04:00","gmt_modified":"2026-04-23T11:18:10.2189476+04:00"},{"id":32017,"source_id":"1c1b4b5872b3e0fa0bef4de9fb558675","target_id":"8cef3542a1f8beb59e711d1019148801","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 298-300","gmt_create":"2026-04-23T11:18:10.2189476+04:00","gmt_modified":"2026-04-23T11:18:10.2189476+04:00"},{"id":32018,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"9e7faefdb8e8ae15d81ef925ba52ede7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#1-365","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32019,"source_id":"37fb39091ee4b69fe1e682497ff46b55","target_id":"9e7faefdb8e8ae15d81ef925ba52ede7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-365","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32020,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"b3d3f4e10ccf640de58c527e09a7f0ea","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#74-87","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32021,"source_id":"48369ee5882470d563a4a3760712465a","target_id":"b3d3f4e10ccf640de58c527e09a7f0ea","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 74-87","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32022,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"ff12cf82125b232102ae8ec380b68997","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#75-87","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32023,"source_id":"5c83db7209d29d47467923bf09fbb420","target_id":"ff12cf82125b232102ae8ec380b68997","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 75-87","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32024,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3f3c0b55c7eafaf833e73e62b702d574","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-lowmem#68-81","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32025,"source_id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","target_id":"3f3c0b55c7eafaf833e73e62b702d574","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 68-81","gmt_create":"2026-04-23T11:18:10.2199492+04:00","gmt_modified":"2026-04-23T11:18:10.2199492+04:00"},{"id":32026,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"8e0b63e0554f6ef9ba9046c1e9e43a45","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-production#46-52","gmt_create":"2026-04-23T11:18:10.2209495+04:00","gmt_modified":"2026-04-23T11:18:10.2209495+04:00"},{"id":32027,"source_id":"48369ee5882470d563a4a3760712465a","target_id":"8e0b63e0554f6ef9ba9046c1e9e43a45","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-52","gmt_create":"2026-04-23T11:18:10.2209495+04:00","gmt_modified":"2026-04-23T11:18:10.2209495+04:00"},{"id":32028,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3cff82760ed755da0f3b8ef754b949b7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/docker/Dockerfile-testnet#46-52","gmt_create":"2026-04-23T11:18:10.2209495+04:00","gmt_modified":"2026-04-23T11:18:10.2209495+04:00"},{"id":32029,"source_id":"5c83db7209d29d47467923bf09fbb420","target_id":"3cff82760ed755da0f3b8ef754b949b7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 46-52","gmt_create":"2026-04-23T11:18:10.2209495+04:00","gmt_modified":"2026-04-23T11:18:10.2209495+04:00"},{"id":32030,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"7d4fe637b747b179eb9a0fed7f670bf8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/testnet.md#21-37","gmt_create":"2026-04-23T11:18:10.2225603+04:00","gmt_modified":"2026-04-23T11:18:10.2225603+04:00"},{"id":32031,"source_id":"2422c587506c0b05e97687067ae1d1cf","target_id":"7d4fe637b747b179eb9a0fed7f670bf8","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-37","gmt_create":"2026-04-23T11:18:10.2225603+04:00","gmt_modified":"2026-04-23T11:18:10.2225603+04:00"},{"id":32032,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"ddbee7a909c340a5ede92adff06a411b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/vizd.sh#44-53","gmt_create":"2026-04-23T11:18:10.2234598+04:00","gmt_modified":"2026-04-23T11:18:10.2234598+04:00"},{"id":32033,"source_id":"295d36eeed1ab98565250d89d54cc36a","target_id":"ddbee7a909c340a5ede92adff06a411b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 44-53","gmt_create":"2026-04-23T11:18:10.2234598+04:00","gmt_modified":"2026-04-23T11:18:10.2234598+04:00"},{"id":32034,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"b33b3396bd5cb46ada1e5bf1c2e4bae9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#125-130","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32035,"source_id":"571d673b1b49568d584e159036820875","target_id":"b33b3396bd5cb46ada1e5bf1c2e4bae9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 125-130","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32036,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"ad929e01065409fab84d7e5e33b73eb3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config_testnet.hpp#57-59","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32037,"source_id":"3a1c05308902dc684e85898a790b0e07","target_id":"ad929e01065409fab84d7e5e33b73eb3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 57-59","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32038,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"4c4362032489436035a502ce6ad07ea6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/protocol/include/graphene/protocol/config.hpp#57-59","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32039,"source_id":"f5e2709c934c90bed9814ff547a6da8e","target_id":"4c4362032489436035a502ce6ad07ea6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 57-59","gmt_create":"2026-04-23T11:18:10.2244611+04:00","gmt_modified":"2026-04-23T11:18:10.2244611+04:00"},{"id":32040,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"9a05c42951266743e782ce0775e5bd42","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-04-23T11:18:36.4265185+04:00","gmt_modified":"2026-04-23T11:18:36.4265185+04:00"},{"id":32041,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T11:18:36.4265185+04:00","gmt_modified":"2026-04-23T11:18:36.4265185+04:00"},{"id":32042,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"de06c0b429208d005ec4e2b38a7b6678","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/chain_object_types.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32043,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"d1302454310309381c9368910649870f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/chain_objects.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32044,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"1e6f9e0c4241a3a53748ca848749cd9c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32045,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"4ec5dd7f21bde7651b20873b01f868c9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/fork_database.cpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32046,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a636cebf0fd48c268641a5544c551752","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/block_log.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32047,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"aa1ac1734ffa0ca1fb1ec42168f601e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/block_log.cpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32048,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"d136a3c86c240fca63a64546b4891416","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32049,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"71cbf21e4bf2a2b603ad1183369ec65f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32050,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"58dab1fa0c82c6d488c1c385549bf65f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/account_object.hpp","gmt_create":"2026-04-23T11:18:36.427523+04:00","gmt_modified":"2026-04-23T11:18:36.427523+04:00"},{"id":32051,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"f2e0ab4a21a05fb2b13f0fa0f497f4ae","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/witness_objects.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32052,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"705e8221610923620972eca797fa6db6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/committee_objects.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32053,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"6448b32a9d85a70c1c5dece30706f077","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/transaction_object.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32054,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"c70e20aa89698498e7c8e639e9dda898","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/evaluator.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32055,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"c7f289a817d1cf2f2edb643d7c388364","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/chain_evaluator.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32056,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"f46b9fad5bc65772c0ace22913bdad84","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/include/graphene/chain/operation_notification.hpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32057,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"d478cca230f790bc8f1573f56a55a987","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32058,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32059,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32060,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"571d673b1b49568d584e159036820875","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-23T11:18:36.4285236+04:00","gmt_modified":"2026-04-23T11:18:36.4285236+04:00"},{"id":32061,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"2a488975038d8060fc2bec6672254f8e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/log/console_appender.cpp","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32062,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"988bb985afa7b7add75e4415b239b6a6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: programs/vizd/main.cpp","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32063,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"16a19aa5bcebe9921d90618856c818f2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#36-561","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32064,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"beb7270033f72ea030a658ed50661db0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#206-456","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32065,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3b2b487096be43e59f5232729909dca6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#53-125","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32066,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"8f12f59f3a806a27f415ac33df1ff302","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#1-245","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32067,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"1a28848df3aef58b055a3cbae076ffb5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/block_log.hpp#1-200","gmt_create":"2026-04-23T11:18:36.4295224+04:00","gmt_modified":"2026-04-23T11:18:36.4295224+04:00"},{"id":32068,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"50e79df334a3bb7b66eda6917902a0d5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#230-302","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32069,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"f95834333ba4c5190b2391b54acf946f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#35-75","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32070,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a29442fd9e1534478ed2c7ff68c012e3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#161-382","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32071,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"87d3f7f5e4b3b275a1f5c62a722a0c7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_object_types.hpp#44-146","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32072,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"027e3be7967b0260b348fb2f05d14abd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_objects.hpp#20-226","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32073,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"9532c9bc52ca2d2988bed522e150643c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/account_object.hpp#20-143","gmt_create":"2026-04-23T11:18:36.4305228+04:00","gmt_modified":"2026-04-23T11:18:36.4305228+04:00"},{"id":32074,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"fe18bd4856c81bb8a8a870b01bcb9097","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/witness_objects.hpp#27-132","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32075,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"1e6ec0f9484d9bd2c1919f9c52c43a1a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/committee_objects.hpp#15-47","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32076,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"66c076e1ffb51e2df0f99d765a976edf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/transaction_object.hpp#19-56","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32077,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"50f895a6649a0d8198a41a111d1d585a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/evaluator.hpp#11-45","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32078,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"fc3df8af7443986c214f3999cd7ce457","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_evaluator.hpp#14-79","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32079,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"67fbfc5e36027ec77b25d6c86003a38f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/operation_notification.hpp#11-26","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32080,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"462e2bcbab867587a9b198b4f6fb8299","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#360-432","gmt_create":"2026-04-23T11:18:36.4315218+04:00","gmt_modified":"2026-04-23T11:18:36.4315218+04:00"},{"id":32081,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"ef245c2d66c3fb194a0aa1c9dd0f9df4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#980-1200","gmt_create":"2026-04-23T11:18:36.432523+04:00","gmt_modified":"2026-04-23T11:18:36.432523+04:00"},{"id":32082,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"6eecf475e7edebd6f7012094ec32f048","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: thirdparty/fc/src/log/console_appender.cpp#132-154","gmt_create":"2026-04-23T11:18:36.432523+04:00","gmt_modified":"2026-04-23T11:18:36.432523+04:00"},{"id":32083,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"e57df16c7fa45b4bb9cbc87c046ef61f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: programs/vizd/main.cpp#234-253","gmt_create":"2026-04-23T11:18:36.432523+04:00","gmt_modified":"2026-04-23T11:18:36.432523+04:00"},{"id":32084,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"4d11d9a124ba78c619ab8972eb02200d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#56-110","gmt_create":"2026-04-23T11:18:36.432523+04:00","gmt_modified":"2026-04-23T11:18:36.432523+04:00"},{"id":32085,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a8155a4afab33387a822f670e6673f99","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#206-350","gmt_create":"2026-04-23T11:18:36.432523+04:00","gmt_modified":"2026-04-23T11:18:36.432523+04:00"},{"id":32086,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3424ea448861e3b0a7e659d0fa397328","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#800-925","gmt_create":"2026-04-23T11:18:36.4335224+04:00","gmt_modified":"2026-04-23T11:18:36.4335224+04:00"},{"id":32087,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"304c7132f9cc0ceeaedaf20752d64d3e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#33-90","gmt_create":"2026-04-23T11:18:36.4335224+04:00","gmt_modified":"2026-04-23T11:18:36.4335224+04:00"},{"id":32088,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"2440453ed344e775de034d6fceab96fa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#253-257","gmt_create":"2026-04-23T11:18:36.4335224+04:00","gmt_modified":"2026-04-23T11:18:36.4335224+04:00"},{"id":32089,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"506b638fbd5c12dacae95b6b6d5e81d3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#211-230","gmt_create":"2026-04-23T11:18:36.4335224+04:00","gmt_modified":"2026-04-23T11:18:36.4335224+04:00"},{"id":32090,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"7d502c275227ff6a0dad8a6b2cbb0ea2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#168-210","gmt_create":"2026-04-23T11:18:36.4335224+04:00","gmt_modified":"2026-04-23T11:18:36.4335224+04:00"},{"id":32091,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"066f963089585bde1998d3a7cf600f90","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#111-558","gmt_create":"2026-04-23T11:18:36.4345222+04:00","gmt_modified":"2026-04-23T11:18:36.4345222+04:00"},{"id":32092,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"099a7ddd20bd6626a898e0cf7ddbcf93","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#47-90","gmt_create":"2026-04-23T11:18:36.4355232+04:00","gmt_modified":"2026-04-23T11:18:36.4355232+04:00"},{"id":32093,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"7caa4d3b24ca280339e15eea6b2ea386","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#134-194","gmt_create":"2026-04-23T11:18:36.4355232+04:00","gmt_modified":"2026-04-23T11:18:36.4355232+04:00"},{"id":32094,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"0d6c107155ed183ee5ba1d947aa60b6f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#195-227","gmt_create":"2026-04-23T11:18:36.4355232+04:00","gmt_modified":"2026-04-23T11:18:36.4355232+04:00"},{"id":32095,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"07077c35993e2bcc1e6ad243210658c5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/block_log.cpp#270-285","gmt_create":"2026-04-23T11:18:36.4355232+04:00","gmt_modified":"2026-04-23T11:18:36.4355232+04:00"},{"id":32096,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"85aba7789e2ca1fe6fcb650fb9a272e5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#161-230","gmt_create":"2026-04-23T11:18:36.4365237+04:00","gmt_modified":"2026-04-23T11:18:36.4365237+04:00"},{"id":32097,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"9071f8d009e4bdc3aabd93156adf0ae5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/dlt_block_log.cpp#356-411","gmt_create":"2026-04-23T11:18:36.4365237+04:00","gmt_modified":"2026-04-23T11:18:36.4365237+04:00"},{"id":32098,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"4a3b4526826da2c57a82aebb48c143a1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_objects.hpp#20-141","gmt_create":"2026-04-23T11:18:36.4365237+04:00","gmt_modified":"2026-04-23T11:18:36.4365237+04:00"},{"id":32099,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"202fe515b0495ce4d9e3461872b5a7a5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#252-286","gmt_create":"2026-04-23T11:18:36.4375809+04:00","gmt_modified":"2026-04-23T11:18:36.4375809+04:00"},{"id":32100,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"4dcf2a8108140e2a4f9394a44a2f7ffa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1158-1198","gmt_create":"2026-04-23T11:18:36.4385815+04:00","gmt_modified":"2026-04-23T11:18:36.4385815+04:00"},{"id":32101,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"9c4238b8e0cf99b348e22120eac41904","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#364-432","gmt_create":"2026-04-23T11:18:36.4385815+04:00","gmt_modified":"2026-04-23T11:18:36.4385815+04:00"},{"id":32102,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"0f8940d10bd3fa25101b8055831b577b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#434-491","gmt_create":"2026-04-23T11:18:36.4395812+04:00","gmt_modified":"2026-04-23T11:18:36.4395812+04:00"},{"id":32103,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a3f311781ebc595d7e91829970674d05","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#281-324","gmt_create":"2026-04-23T11:18:36.4395812+04:00","gmt_modified":"2026-04-23T11:18:36.4395812+04:00"},{"id":32104,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"1512721e67f0287c71ea498a2bbd1d29","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1000-1200","gmt_create":"2026-04-23T11:18:36.4395812+04:00","gmt_modified":"2026-04-23T11:18:36.4395812+04:00"},{"id":32105,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"ba755b39604252e4cb43e1706e777543","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#57-64","gmt_create":"2026-04-23T11:18:36.4395812+04:00","gmt_modified":"2026-04-23T11:18:36.4395812+04:00"},{"id":32106,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"7d02365c3f2f3efaf9155d970698aec7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#3985-4051","gmt_create":"2026-04-23T11:18:36.4395812+04:00","gmt_modified":"2026-04-23T11:18:36.4395812+04:00"},{"id":32107,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"c77aaa56525d9c318664af3ff4ce6135","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#391-417","gmt_create":"2026-04-23T11:18:36.4405807+04:00","gmt_modified":"2026-04-23T11:18:36.4405807+04:00"},{"id":32108,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"615af9a2f6b8b4df327446e4e8bcc1ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1014-1032","gmt_create":"2026-04-23T11:18:36.4405807+04:00","gmt_modified":"2026-04-23T11:18:36.4405807+04:00"},{"id":32109,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a3a37e841fb1ecbb2442040ac90e3198","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#100-113","gmt_create":"2026-04-23T11:18:36.4405807+04:00","gmt_modified":"2026-04-23T11:18:36.4405807+04:00"},{"id":32110,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"d3151694a1313762475ee616a2a3cfe0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#58-113","gmt_create":"2026-04-23T11:18:36.4405807+04:00","gmt_modified":"2026-04-23T11:18:36.4405807+04:00"},{"id":32111,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"821eb1ee66481f4569602f236fd2444b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1018-1032","gmt_create":"2026-04-23T11:18:36.4415808+04:00","gmt_modified":"2026-04-23T11:18:36.4415808+04:00"},{"id":32112,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"32d5e27edefa46b873fef98c512612b4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#286","gmt_create":"2026-04-23T11:18:36.4415808+04:00","gmt_modified":"2026-04-23T11:18:36.4415808+04:00"},{"id":32113,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"43d8be46f85d6fc08ba611213afd35db","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3446-3456","gmt_create":"2026-04-23T11:18:36.4415808+04:00","gmt_modified":"2026-04-23T11:18:36.4415808+04:00"},{"id":32114,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"f9e256558b0a310a3aebb8b9ebb0a744","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1770-1771","gmt_create":"2026-04-23T11:18:36.4415808+04:00","gmt_modified":"2026-04-23T11:18:36.4415808+04:00"},{"id":32115,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"93dcb94717b1b034e4d9565c437aad1b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#2428-2444","gmt_create":"2026-04-23T11:18:36.4425809+04:00","gmt_modified":"2026-04-23T11:18:36.4425809+04:00"},{"id":32116,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"af05147b54f6ad328cd4b288e3985511","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3276-3280","gmt_create":"2026-04-23T11:18:36.4425809+04:00","gmt_modified":"2026-04-23T11:18:36.4425809+04:00"},{"id":32117,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"22e052dd8ab0fdf27afc32b483a37ff7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#5295-5303","gmt_create":"2026-04-23T11:18:36.4425809+04:00","gmt_modified":"2026-04-23T11:18:36.4425809+04:00"},{"id":32118,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"79d9f0965fb73ee6e499532bdd2c72c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#58-121","gmt_create":"2026-04-23T11:18:36.4425809+04:00","gmt_modified":"2026-04-23T11:18:36.4425809+04:00"},{"id":32119,"source_id":"d478cca230f790bc8f1573f56a55a987","target_id":"79d9f0965fb73ee6e499532bdd2c72c3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 58-121","gmt_create":"2026-04-23T11:18:36.4425809+04:00","gmt_modified":"2026-04-23T11:18:36.4425809+04:00"},{"id":32120,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a655f35ca12d3877c0294e186b5a5f5d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#1-561","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32121,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"0fd95d3fb8e19f476ee368c9acadc148","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#1-200","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32122,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"33b697d7ffcdd3aa1d3e2c8f8e5fca15","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/fork_database.hpp#1-125","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32123,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3736c5a5a1ddf339e5556de0656bfcdf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/dlt_block_log.hpp#1-75","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32124,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"00eee107c9ba823018067fbd4827abdc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_object_types.hpp#1-246","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32125,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"7032d2c44cd05c33be8de43f6514c7d6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_objects.hpp#1-226","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32126,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"39c686d025e553f6bad7d2fec4a739ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/account_object.hpp#1-565","gmt_create":"2026-04-23T11:18:36.4435817+04:00","gmt_modified":"2026-04-23T11:18:36.4435817+04:00"},{"id":32127,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"03ff87c3dad6c3f5807e0006d9b49e7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/witness_objects.hpp#1-313","gmt_create":"2026-04-23T11:18:36.4445815+04:00","gmt_modified":"2026-04-23T11:18:36.4445815+04:00"},{"id":32128,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3147d19a66720276e968aa6544a4292b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/committee_objects.hpp#1-137","gmt_create":"2026-04-23T11:18:36.4445815+04:00","gmt_modified":"2026-04-23T11:18:36.4445815+04:00"},{"id":32129,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"0bf9b2bbe6504edfbc3f8394b947929b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/transaction_object.hpp#1-56","gmt_create":"2026-04-23T11:18:36.4445815+04:00","gmt_modified":"2026-04-23T11:18:36.4445815+04:00"},{"id":32130,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3efe898414dcae3fffd2e9c1c0679311","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/evaluator.hpp#1-62","gmt_create":"2026-04-23T11:18:36.4445815+04:00","gmt_modified":"2026-04-23T11:18:36.4445815+04:00"},{"id":32131,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"48ad93138afd2c83193d808d04cb5573","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/chain_evaluator.hpp#1-80","gmt_create":"2026-04-23T11:18:36.454601+04:00","gmt_modified":"2026-04-23T11:18:36.454601+04:00"},{"id":32132,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"b9b4e1e0a88a6640c5e8a94801dbff57","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/operation_notification.hpp#1-27","gmt_create":"2026-04-23T11:18:36.4556033+04:00","gmt_modified":"2026-04-23T11:18:36.4556033+04:00"},{"id":32133,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"ed272eaaa4bd0adbed874f87308f6c81","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#1-526","gmt_create":"2026-04-23T11:18:36.4556033+04:00","gmt_modified":"2026-04-23T11:18:36.4556033+04:00"},{"id":32134,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"973b0384238fe7370822559425a96f5b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1-1976","gmt_create":"2026-04-23T11:18:36.4556033+04:00","gmt_modified":"2026-04-23T11:18:36.4556033+04:00"},{"id":32135,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"3fd5da634ff647b8e47fa2d9f2b10947","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#232-248","gmt_create":"2026-04-23T11:18:36.4556033+04:00","gmt_modified":"2026-04-23T11:18:36.4556033+04:00"},{"id":32136,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"abf26b07298df44b8ad0f82418a28240","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#270-350","gmt_create":"2026-04-23T11:18:36.4566004+04:00","gmt_modified":"2026-04-23T11:18:36.4566004+04:00"},{"id":32137,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"ff2523d2df1db0e5eacb85bdae3f2688","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#368-430","gmt_create":"2026-04-23T11:18:36.4566004+04:00","gmt_modified":"2026-04-23T11:18:36.4566004+04:00"},{"id":32138,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"68b6c0503834784566bd470237e6fbbb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#832-844","gmt_create":"2026-04-23T11:18:36.4566004+04:00","gmt_modified":"2026-04-23T11:18:36.4566004+04:00"},{"id":32139,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"b15e11d3471309dbff74358ab3b597bb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#371-380","gmt_create":"2026-04-23T11:18:36.4566004+04:00","gmt_modified":"2026-04-23T11:18:36.4566004+04:00"},{"id":32140,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"532edf497ce380a6eff5d3fe76792a3c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1018-1020","gmt_create":"2026-04-23T11:18:36.4566004+04:00","gmt_modified":"2026-04-23T11:18:36.4566004+04:00"},{"id":32141,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"57dca27aac4631b2a09561ab190bd578","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#936-970","gmt_create":"2026-04-23T11:18:36.4576731+04:00","gmt_modified":"2026-04-23T11:18:36.4576731+04:00"},{"id":32142,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"98a4db8754b7f187508af46bdd8019c2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#136-169","gmt_create":"2026-04-23T11:18:36.4576731+04:00","gmt_modified":"2026-04-23T11:18:36.4576731+04:00"},{"id":32143,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"4227ba2bea4520b3ea3ac8c104d6634e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/fork_database.cpp#92-124","gmt_create":"2026-04-23T11:18:36.4576731+04:00","gmt_modified":"2026-04-23T11:18:36.4576731+04:00"},{"id":32144,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"5e74ba9791165e9a27dc768aced92cb8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/include/graphene/chain/database.hpp#62-64","gmt_create":"2026-04-23T11:18:36.4586728+04:00","gmt_modified":"2026-04-23T11:18:36.4586728+04:00"},{"id":32145,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"03795feb7ae28b007d7a6e71efd6e49b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#234-236","gmt_create":"2026-04-23T11:18:36.4586728+04:00","gmt_modified":"2026-04-23T11:18:36.4586728+04:00"},{"id":32146,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a62449c820dada6775c37fa7b8a9450b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#50-53","gmt_create":"2026-04-23T11:18:36.4586728+04:00","gmt_modified":"2026-04-23T11:18:36.4586728+04:00"},{"id":32220,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"9a735450-ec59-49ef-9d42-609483ce0279","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9032efbf-122b-4ac0-9b47-6531642636d2 -\u003e 9a735450-ec59-49ef-9d42-609483ce0279","gmt_create":"2026-04-23T11:21:41.6274385+04:00","gmt_modified":"2026-04-23T11:21:41.6274385+04:00"},{"id":32221,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"418196e8-0815-496e-b69d-8458e1f3cfef","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9032efbf-122b-4ac0-9b47-6531642636d2 -\u003e 418196e8-0815-496e-b69d-8458e1f3cfef","gmt_create":"2026-04-23T11:21:41.6290145+04:00","gmt_modified":"2026-04-23T11:21:41.6290145+04:00"},{"id":32222,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"898244dc-5466-4c8c-abac-5a7f753e3b91","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9032efbf-122b-4ac0-9b47-6531642636d2 -\u003e 898244dc-5466-4c8c-abac-5a7f753e3b91","gmt_create":"2026-04-23T11:21:41.6290145+04:00","gmt_modified":"2026-04-23T11:21:41.6290145+04:00"},{"id":32224,"source_id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","target_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 11a3f0cc-0550-4d22-84d7-48826fa26abe -\u003e 813fff1c-5fce-4cd6-83ae-53e339f99daf","gmt_create":"2026-04-23T11:21:41.6309482+04:00","gmt_modified":"2026-04-23T11:21:41.6309482+04:00"},{"id":32225,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e 67bce420-e9f6-4b70-b83a-d19411a2f09e","gmt_create":"2026-04-23T11:21:41.6319482+04:00","gmt_modified":"2026-04-23T11:21:41.6319482+04:00"},{"id":32226,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"c7648a28-5402-4b7e-8491-fb811d7b2518","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e c7648a28-5402-4b7e-8491-fb811d7b2518","gmt_create":"2026-04-23T11:21:41.6329559+04:00","gmt_modified":"2026-04-23T11:21:41.6329559+04:00"},{"id":32227,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"995e608b-33c4-4619-ad28-cdb33c1fee75","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e 995e608b-33c4-4619-ad28-cdb33c1fee75","gmt_create":"2026-04-23T11:21:41.6329559+04:00","gmt_modified":"2026-04-23T11:21:41.6329559+04:00"},{"id":32228,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"656aa75c-bf21-48c1-b44c-4dcab2afee14","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e 656aa75c-bf21-48c1-b44c-4dcab2afee14","gmt_create":"2026-04-23T11:21:41.6329559+04:00","gmt_modified":"2026-04-23T11:21:41.6329559+04:00"},{"id":32229,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"6852cf61-cd7b-42c3-95c0-829c87723676","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e 6852cf61-cd7b-42c3-95c0-829c87723676","gmt_create":"2026-04-23T11:21:41.6329559+04:00","gmt_modified":"2026-04-23T11:21:41.6329559+04:00"},{"id":32230,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"a8c70538-5565-4aff-b524-86870480084b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e a8c70538-5565-4aff-b524-86870480084b","gmt_create":"2026-04-23T11:21:41.6329559+04:00","gmt_modified":"2026-04-23T11:21:41.6329559+04:00"},{"id":32231,"source_id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","target_id":"297ae328-3c35-473b-b605-27f95b1a62f3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 813fff1c-5fce-4cd6-83ae-53e339f99daf -\u003e 297ae328-3c35-473b-b605-27f95b1a62f3","gmt_create":"2026-04-23T11:21:41.6339501+04:00","gmt_modified":"2026-04-23T11:21:41.6339501+04:00"},{"id":32250,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"79ab2542b5c96058f09208f1cd2cd6fd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 72-573","gmt_create":"2026-04-23T11:46:31.2627681+04:00","gmt_modified":"2026-04-23T11:46:31.2627681+04:00"},{"id":32256,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"05b62d2805cb3a311c10475a638f22d4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 500-560","gmt_create":"2026-04-23T11:46:31.2662711+04:00","gmt_modified":"2026-04-23T11:46:31.2662711+04:00"},{"id":32258,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"cf043d8e90537efdf39b7880e8959da4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5281-5286","gmt_create":"2026-04-23T11:46:31.2672413+04:00","gmt_modified":"2026-04-23T11:46:31.2672413+04:00"},{"id":32267,"source_id":"32cf30b2e9094b9693ab53917b0a2eb3","target_id":"fed4d7f6216f50b46ffc2f059db54915","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-106","gmt_create":"2026-04-23T11:46:31.2713523+04:00","gmt_modified":"2026-04-23T11:46:31.2713523+04:00"},{"id":32269,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"df5f1767872da5ad020edc60475ab9b9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-742","gmt_create":"2026-04-23T11:46:31.2719619+04:00","gmt_modified":"2026-04-23T11:46:31.2719619+04:00"},{"id":32271,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"b32ad9e7a8c85cae6d0a130d7399ace9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 182-304","gmt_create":"2026-04-23T11:46:31.2724671+04:00","gmt_modified":"2026-04-23T11:46:31.2724671+04:00"},{"id":32273,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"be6d9b8a21e11f9cb8bac726d2b15873","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 780-790","gmt_create":"2026-04-23T11:46:31.274874+04:00","gmt_modified":"2026-04-23T11:46:31.274874+04:00"},{"id":32281,"source_id":"03ba9497d2e4b912db997e43e1b9c653","target_id":"395304bf3b17e833fe3418a2227e8d20","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 310-354","gmt_create":"2026-04-23T11:46:31.2825525+04:00","gmt_modified":"2026-04-23T11:46:31.2825525+04:00"},{"id":32283,"source_id":"f5ad8f25a7e1c10d29fdcfd7b3eadb75","target_id":"bd2df0ef0f3a3569038ff93abf7f049a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 30-49","gmt_create":"2026-04-23T11:46:31.2836686+04:00","gmt_modified":"2026-04-23T11:46:31.2836686+04:00"},{"id":32287,"source_id":"7f5ebd18d8224ccabbd73a26fba17a38","target_id":"d0629cc7855cceaf537ab39cb2b4e1cf","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 49-177","gmt_create":"2026-04-23T11:46:31.2859917+04:00","gmt_modified":"2026-04-23T11:46:31.2859917+04:00"},{"id":32289,"source_id":"8fb5fbed1f7009b8445ba1ca2bb36e9e","target_id":"3865aa6bd2579d32e36d7fa59c617b84","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 41-82","gmt_create":"2026-04-23T11:46:31.2879953+04:00","gmt_modified":"2026-04-23T11:46:31.2879953+04:00"},{"id":32292,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"ea4c7e04621ef7790eb86a4d944b26e4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 70-105","gmt_create":"2026-04-23T11:46:31.2894511+04:00","gmt_modified":"2026-04-23T11:46:31.2894511+04:00"},{"id":32294,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"5263aa5e9c9cc4ee3589a4347ba00d1a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 3710-3723","gmt_create":"2026-04-23T11:46:31.290027+04:00","gmt_modified":"2026-04-23T11:46:31.290027+04:00"},{"id":32296,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"a3e7a4bb9a35beeeca37a93cc44b85f2","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 312-381","gmt_create":"2026-04-23T11:46:31.2906092+04:00","gmt_modified":"2026-04-23T11:46:31.2906092+04:00"},{"id":32298,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"c07e1357b4c5c16aa56461f40df51f3f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 383-420","gmt_create":"2026-04-23T11:46:31.2911848+04:00","gmt_modified":"2026-04-23T11:46:31.2911848+04:00"},{"id":32300,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"ab29edddf2ddea94dfa66818525a4f69","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 173-179","gmt_create":"2026-04-23T11:46:31.2916873+04:00","gmt_modified":"2026-04-23T11:46:31.2916873+04:00"},{"id":32302,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"a047fc28da4096adb5975768b23d6568","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4920-4970","gmt_create":"2026-04-23T11:46:31.2917882+04:00","gmt_modified":"2026-04-23T11:46:31.2917882+04:00"},{"id":32304,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"87ef8faa755216d0d684261ca4cf1296","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5128-5131","gmt_create":"2026-04-23T11:46:31.2929421+04:00","gmt_modified":"2026-04-23T11:46:31.2929421+04:00"},{"id":32306,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"36c1fcbd66f9c3ed0ccd021257219b26","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 322-346","gmt_create":"2026-04-23T11:46:31.2934449+04:00","gmt_modified":"2026-04-23T11:46:31.2934449+04:00"},{"id":32308,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"8bc218238f6ca1f8614c8573c3d99ddb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 428-448","gmt_create":"2026-04-23T11:46:31.2934449+04:00","gmt_modified":"2026-04-23T11:46:31.2934449+04:00"},{"id":32310,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"edb1f25b3c55f03a9497c43c9ed563d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4900-4970","gmt_create":"2026-04-23T11:46:31.2944509+04:00","gmt_modified":"2026-04-23T11:46:31.2944509+04:00"},{"id":32312,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"f865c1de13ecfad0ba10d76be6f51e79","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4164-4168","gmt_create":"2026-04-23T11:46:31.297516+04:00","gmt_modified":"2026-04-23T11:46:31.297516+04:00"},{"id":32314,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"46360683264d8d799f49154a37e77c95","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 298-304","gmt_create":"2026-04-23T11:46:31.2980977+04:00","gmt_modified":"2026-04-23T11:46:31.2980977+04:00"},{"id":32316,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"92a7248b320d281221528fd4b3586fae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 616-618","gmt_create":"2026-04-23T11:46:31.298679+04:00","gmt_modified":"2026-04-23T11:46:31.298679+04:00"},{"id":32318,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"d3c1206d30a580d9a1f8e5f0a0e37caa","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-23T11:46:31.2992586+04:00","gmt_modified":"2026-04-23T11:46:31.2992586+04:00"},{"id":32320,"source_id":"4036f8e38f752e8da82deeed190ddc06","target_id":"47a7ec224c52b37cda36330051d8989e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-29","gmt_create":"2026-04-23T11:46:31.2992586+04:00","gmt_modified":"2026-04-23T11:46:31.2992586+04:00"},{"id":32322,"source_id":"aa7de2818f0eacb01058838d2b81a9e7","target_id":"46f63b299b6fb267a4f639c2d0d892de","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-28","gmt_create":"2026-04-23T11:46:31.2998389+04:00","gmt_modified":"2026-04-23T11:46:31.2998389+04:00"},{"id":32325,"source_id":"e12a1d568ad99d9c23753af3b983d420","target_id":"094de29302ce2b97582033a6a5e5f81d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 26-27","gmt_create":"2026-04-23T11:46:31.3004545+04:00","gmt_modified":"2026-04-23T11:46:31.3004545+04:00"},{"id":32327,"source_id":"f6da664295247a02e1a87e6157ade267","target_id":"c57df28bcfcd9ae39dd00ccdbfab27c0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 39-45","gmt_create":"2026-04-23T11:46:31.3039408+04:00","gmt_modified":"2026-04-23T11:46:31.3039408+04:00"},{"id":32329,"source_id":"c07484f955228ae2a641c6a9ecc218e1","target_id":"cda16bb7e30e75cab0c3ba93c74374ac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 288-298","gmt_create":"2026-04-23T11:46:31.3054239+04:00","gmt_modified":"2026-04-23T11:46:31.3054239+04:00"},{"id":32331,"source_id":"4810c013b14141360d4bcf40a8c63444","target_id":"8ee1a4f18a4402289535e116f51b9516","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 85-105","gmt_create":"2026-04-23T11:46:31.3060537+04:00","gmt_modified":"2026-04-23T11:46:31.3060537+04:00"},{"id":32411,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"32cf30b2e9094b9693ab53917b0a2eb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-23T12:16:49.7816966+04:00","gmt_modified":"2026-04-23T12:16:49.7816966+04:00"},{"id":32412,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T12:16:49.7816966+04:00","gmt_modified":"2026-04-23T12:16:49.7816966+04:00"},{"id":32413,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"03ba9497d2e4b912db997e43e1b9c653","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.cpp","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32414,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"7f5ebd18d8224ccabbd73a26fba17a38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/stcp_socket.cpp","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32415,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32416,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"16a4e2bff0288ec68e9817239c754aed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32417,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_testnet.ini","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32418,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"475c2f17a00cd4de82dd54bf0a8126ac","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_witness.ini","gmt_create":"2026-04-23T12:16:49.7822096+04:00","gmt_modified":"2026-04-23T12:16:49.7822096+04:00"},{"id":32419,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"1703516eef21eec01e919079e221dabb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_debug.ini","gmt_create":"2026-04-23T12:16:49.7827198+04:00","gmt_modified":"2026-04-23T12:16:49.7827198+04:00"},{"id":32420,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"56e73581fcc11e3d5d304c4453d84a9f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_mongo.ini","gmt_create":"2026-04-23T12:16:49.7827198+04:00","gmt_modified":"2026-04-23T12:16:49.7827198+04:00"},{"id":32421,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"fb22ad271c25ac4291c3d91edf5eb0b9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config_stock_exchange.ini","gmt_create":"2026-04-23T12:16:49.7827198+04:00","gmt_modified":"2026-04-23T12:16:49.7827198+04:00"},{"id":32422,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"c07484f955228ae2a641c6a9ecc218e1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-23T12:16:49.7827198+04:00","gmt_modified":"2026-04-23T12:16:49.7827198+04:00"},{"id":32423,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"f6da664295247a02e1a87e6157ade267","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32424,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"4810c013b14141360d4bcf40a8c63444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32425,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"10461f81e6789cf5385cca1e62af9d4d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32426,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32427,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"37fb39091ee4b69fe1e682497ff46b55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32428,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"8ed917d817d567a488d62920baedadcc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#689-698","gmt_create":"2026-04-23T12:16:49.7832373+04:00","gmt_modified":"2026-04-23T12:16:49.7832373+04:00"},{"id":32429,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"bfb352c37c5651f8e364f9838b375902","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5254-5274","gmt_create":"2026-04-23T12:16:49.7837541+04:00","gmt_modified":"2026-04-23T12:16:49.7837541+04:00"},{"id":32430,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"7925b0a796bd493a01da486c70d0ab64","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#714-715","gmt_create":"2026-04-23T12:16:49.7837541+04:00","gmt_modified":"2026-04-23T12:16:49.7837541+04:00"},{"id":32431,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"8c7fe145e6668a0589833613de05ef8e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#96-101","gmt_create":"2026-04-23T12:16:49.7837541+04:00","gmt_modified":"2026-04-23T12:16:49.7837541+04:00"},{"id":32432,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"1ae9e34ac2be4ef2ed3da08a43b3ca1c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#592-600","gmt_create":"2026-04-23T12:16:49.7842785+04:00","gmt_modified":"2026-04-23T12:16:49.7842785+04:00"},{"id":32433,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"ef3997991d9cf249bb80090feb23abdc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#689-706","gmt_create":"2026-04-23T12:16:49.7853971+04:00","gmt_modified":"2026-04-23T12:16:49.7853971+04:00"},{"id":32434,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"5e80305e7a0dd4e813302d520287970c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#68-162","gmt_create":"2026-04-23T12:16:49.7853971+04:00","gmt_modified":"2026-04-23T12:16:49.7853971+04:00"},{"id":32435,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"b136009499eb952960a997500371c413","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#37-92","gmt_create":"2026-04-23T12:16:49.7859252+04:00","gmt_modified":"2026-04-23T12:16:49.7859252+04:00"},{"id":32436,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"302a2b97d7155d06fda21dbeb2f1b54a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#585-649","gmt_create":"2026-04-23T12:16:49.7864439+04:00","gmt_modified":"2026-04-23T12:16:49.7864439+04:00"},{"id":32437,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"302a2b97d7155d06fda21dbeb2f1b54a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 585-649","gmt_create":"2026-04-23T12:16:49.7869713+04:00","gmt_modified":"2026-04-23T12:16:49.7869713+04:00"},{"id":32438,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"6af8eb79e9f65f7ea2c694223695d9a3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#812-820","gmt_create":"2026-04-23T12:16:49.7869713+04:00","gmt_modified":"2026-04-23T12:16:49.7869713+04:00"},{"id":32439,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"6af8eb79e9f65f7ea2c694223695d9a3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 812-820","gmt_create":"2026-04-23T12:16:49.7869713+04:00","gmt_modified":"2026-04-23T12:16:49.7869713+04:00"},{"id":32440,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"9f67fdb767ce515af96c465dbbb1fe8f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#497-521","gmt_create":"2026-04-23T12:16:49.7880162+04:00","gmt_modified":"2026-04-23T12:16:49.7880162+04:00"},{"id":32441,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"acad8673bff956aca1d53443f4ba5739","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#780-785","gmt_create":"2026-04-23T12:16:49.7880162+04:00","gmt_modified":"2026-04-23T12:16:49.7880162+04:00"},{"id":32442,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"abb7010b1a4127c6eb74e70b8b8c1c8a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#47-71","gmt_create":"2026-04-23T12:16:49.7880162+04:00","gmt_modified":"2026-04-23T12:16:49.7880162+04:00"},{"id":32443,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"ffcabaf2fce1313ba726f943d26bdf4a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#537-540","gmt_create":"2026-04-23T12:16:49.7885316+04:00","gmt_modified":"2026-04-23T12:16:49.7885316+04:00"},{"id":32444,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"2ed9aa8440a7a4d0e1b58d003e493158","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#786-792","gmt_create":"2026-04-23T12:16:49.7885316+04:00","gmt_modified":"2026-04-23T12:16:49.7885316+04:00"},{"id":32445,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"d1be4370926b5262daf2447b9745d905","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#487-495","gmt_create":"2026-04-23T12:16:49.7885316+04:00","gmt_modified":"2026-04-23T12:16:49.7885316+04:00"},{"id":32446,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"5fdf8584baa2beb83725ffd40a065ff4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#52-56","gmt_create":"2026-04-23T12:16:49.7890494+04:00","gmt_modified":"2026-04-23T12:16:49.7890494+04:00"},{"id":32447,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"034d2639f50a8ac9d67ffbf0594a6afa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#441-445","gmt_create":"2026-04-23T12:16:49.7890494+04:00","gmt_modified":"2026-04-23T12:16:49.7890494+04:00"},{"id":32448,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"65d8ec4282c90ca603928ff3ca7a8c1c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#169-206","gmt_create":"2026-04-23T12:16:49.7890494+04:00","gmt_modified":"2026-04-23T12:16:49.7890494+04:00"},{"id":32449,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"9483fd3d971ce258539c764b97277642","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-66","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32450,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"b798a371453386ed55f39515a7f187ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#223-239","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32451,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"1627c08f8d77e6bd16ff55f3c31a7214","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#48-50","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32452,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"9adff7a947c035e71543339de4f875ec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#638-640","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32453,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"afac2a42df17577ba720e7f9a78558b0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#518-526","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32454,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"6b49cb375a448fd15559d24da7d7e23c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#548-567","gmt_create":"2026-04-23T12:16:49.7895652+04:00","gmt_modified":"2026-04-23T12:16:49.7895652+04:00"},{"id":32455,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"97c58147fee277e29c7fcfd2e1fad3d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#314-325","gmt_create":"2026-04-23T12:16:49.7905694+04:00","gmt_modified":"2026-04-23T12:16:49.7905694+04:00"},{"id":32456,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"3edc836b9f3a1df5c933c63ecc8ce954","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#55-106","gmt_create":"2026-04-23T12:16:49.7905694+04:00","gmt_modified":"2026-04-23T12:16:49.7905694+04:00"},{"id":32457,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"7b44d15de5faea5ec5d9aa45843a4779","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#1-136","gmt_create":"2026-04-23T12:16:49.7905694+04:00","gmt_modified":"2026-04-23T12:16:49.7905694+04:00"},{"id":32458,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"5d3ecf8dbda10c5dac6bfd961791d02b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_testnet.ini#1-132","gmt_create":"2026-04-23T12:16:49.7905694+04:00","gmt_modified":"2026-04-23T12:16:49.7905694+04:00"},{"id":32459,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"e5968eacd23776d0e60478ea5cc7d523","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#403-405","gmt_create":"2026-04-23T12:16:49.7931475+04:00","gmt_modified":"2026-04-23T12:16:49.7931475+04:00"},{"id":32460,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"3942d16870ce25abce21196a1bb5866b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config.ini#112-136","gmt_create":"2026-04-23T12:16:49.7931475+04:00","gmt_modified":"2026-04-23T12:16:49.7931475+04:00"},{"id":32461,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"2c8c910dec8b5db99994a8643fd780e8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5259-5262","gmt_create":"2026-04-23T12:16:49.7931475+04:00","gmt_modified":"2026-04-23T12:16:49.7931475+04:00"},{"id":32462,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"d48e61b6c0afbe8b0a4d20deff593854","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#467-482","gmt_create":"2026-04-23T12:16:49.7931475+04:00","gmt_modified":"2026-04-23T12:16:49.7931475+04:00"},{"id":32463,"source_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","target_id":"b07b9e450af40c43c796bcc7ecf03443","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: share/vizd/config/config_witness.ini#1-107","gmt_create":"2026-04-23T12:16:49.7931475+04:00","gmt_modified":"2026-04-23T12:16:49.7931475+04:00"},{"id":32464,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"c07484f955228ae2a641c6a9ecc218e1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-23T12:16:50.9750027+04:00","gmt_modified":"2026-04-23T12:16:50.9750027+04:00"},{"id":32465,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T12:16:50.9755195+04:00","gmt_modified":"2026-04-23T12:16:50.9755195+04:00"},{"id":32466,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"4036f8e38f752e8da82deeed190ddc06","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-04-23T12:16:50.9755195+04:00","gmt_modified":"2026-04-23T12:16:50.9755195+04:00"},{"id":32467,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"03ba9497d2e4b912db997e43e1b9c653","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_connection.cpp","gmt_create":"2026-04-23T12:16:50.9755195+04:00","gmt_modified":"2026-04-23T12:16:50.9755195+04:00"},{"id":32468,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"aa7de2818f0eacb01058838d2b81a9e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/core_messages.hpp","gmt_create":"2026-04-23T12:16:50.9755195+04:00","gmt_modified":"2026-04-23T12:16:50.9755195+04:00"},{"id":32469,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"f5ad8f25a7e1c10d29fdcfd7b3eadb75","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/core_messages.cpp","gmt_create":"2026-04-23T12:16:50.9755195+04:00","gmt_modified":"2026-04-23T12:16:50.9755195+04:00"},{"id":32470,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"a090337969d7a39c7cbc9737c926d289","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/stcp_socket.hpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32471,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"7f5ebd18d8224ccabbd73a26fba17a38","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/stcp_socket.cpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32472,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"f6da664295247a02e1a87e6157ade267","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/peer_database.hpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32473,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8fb5fbed1f7009b8445ba1ca2bb36e9e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/peer_database.cpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32474,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"4810c013b14141360d4bcf40a8c63444","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32475,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"e12a1d568ad99d9c23753af3b983d420","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/message_oriented_connection.hpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32476,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"32cf30b2e9094b9693ab53917b0a2eb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-04-23T12:16:50.9760485+04:00","gmt_modified":"2026-04-23T12:16:50.9760485+04:00"},{"id":32477,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T12:16:50.9765651+04:00","gmt_modified":"2026-04-23T12:16:50.9765651+04:00"},{"id":32478,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"5f576e16df1d59d294a1af2f2658b7ba","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#190-304","gmt_create":"2026-04-23T12:16:50.9841599+04:00","gmt_modified":"2026-04-23T12:16:50.9841599+04:00"},{"id":32479,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"b790ddd3e717ed748c2e061559e92124","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#79-351","gmt_create":"2026-04-23T12:16:50.9851835+04:00","gmt_modified":"2026-04-23T12:16:50.9851835+04:00"},{"id":32480,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"ae1ad3620183690f60eeda5a30543601","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#42-106","gmt_create":"2026-04-23T12:16:50.9851835+04:00","gmt_modified":"2026-04-23T12:16:50.9851835+04:00"},{"id":32481,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"79ab2542b5c96058f09208f1cd2cd6fd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#72-573","gmt_create":"2026-04-23T12:16:50.9861842+04:00","gmt_modified":"2026-04-23T12:16:50.9861842+04:00"},{"id":32482,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"bd9136208fce359f28cad48005c18445","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#37-93","gmt_create":"2026-04-23T12:16:50.9861842+04:00","gmt_modified":"2026-04-23T12:16:50.9861842+04:00"},{"id":32483,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"31c07b5a29db4c1cbb24f79829d347aa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#104-134","gmt_create":"2026-04-23T12:16:50.9861842+04:00","gmt_modified":"2026-04-23T12:16:50.9861842+04:00"},{"id":32484,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"a07ab3c4bae64fb9fbd9587bd3eaae39","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#45-79","gmt_create":"2026-04-23T12:16:50.9861842+04:00","gmt_modified":"2026-04-23T12:16:50.9861842+04:00"},{"id":32485,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8ca4e34ad148a456f53073ddc65d0d0b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#26-106","gmt_create":"2026-04-23T12:16:50.9871852+04:00","gmt_modified":"2026-04-23T12:16:50.9871852+04:00"},{"id":32486,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"05b62d2805cb3a311c10475a638f22d4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#500-560","gmt_create":"2026-04-23T12:16:50.9871852+04:00","gmt_modified":"2026-04-23T12:16:50.9871852+04:00"},{"id":32487,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"cf043d8e90537efdf39b7880e8959da4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5281-5286","gmt_create":"2026-04-23T12:16:50.9871852+04:00","gmt_modified":"2026-04-23T12:16:50.9871852+04:00"},{"id":32488,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"93d54ced192f760547e10eb155a75d8e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#346-347","gmt_create":"2026-04-23T12:16:50.9871852+04:00","gmt_modified":"2026-04-23T12:16:50.9871852+04:00"},{"id":32489,"source_id":"8c1f057e068af3d7a13214f05a59ed6d","target_id":"93d54ced192f760547e10eb155a75d8e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 346-347","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32490,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"ca47b4e2578878f62204de1202dfcee9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#1-355","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32491,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"52af1c2eebb2a6ca81e46aa9efc36007","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#1-383","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32492,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"41c428afa5cdf049e5722a8af0a07120","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#1-573","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32493,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"e37ad396926e491f9e2cb7e97ebb983b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#1-99","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32494,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"65f079a0a8c1ddc294e55e30a905620b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#1-141","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32495,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"f64ddae8befa97072e025e25b465e7b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#1-114","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32496,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"31a472d3c3593f1079fe3844dbf8e5ea","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#1-85","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32497,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"fed4d7f6216f50b46ffc2f059db54915","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/config.hpp#1-106","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32498,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"df5f1767872da5ad020edc60475ab9b9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#1-742","gmt_create":"2026-04-23T12:16:50.9881852+04:00","gmt_modified":"2026-04-23T12:16:50.9881852+04:00"},{"id":32499,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"b32ad9e7a8c85cae6d0a130d7399ace9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#182-304","gmt_create":"2026-04-23T12:16:50.9896888+04:00","gmt_modified":"2026-04-23T12:16:50.9896888+04:00"},{"id":32500,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"be6d9b8a21e11f9cb8bac726d2b15873","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#780-790","gmt_create":"2026-04-23T12:16:50.9896888+04:00","gmt_modified":"2026-04-23T12:16:50.9896888+04:00"},{"id":32501,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"5361decb4da66a8be18f3e2460c4744a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#208-242","gmt_create":"2026-04-23T12:16:50.9906927+04:00","gmt_modified":"2026-04-23T12:16:50.9906927+04:00"},{"id":32502,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"83977126829486b69fd3680d1a18d5b8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#69-72","gmt_create":"2026-04-23T12:16:50.9906927+04:00","gmt_modified":"2026-04-23T12:16:50.9906927+04:00"},{"id":32503,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"4398c3ae2cfabc0607c0ef43245e9ed0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#424-799","gmt_create":"2026-04-23T12:16:50.9906927+04:00","gmt_modified":"2026-04-23T12:16:50.9906927+04:00"},{"id":32504,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"bf188abd0edd7c343537c5327855ecbe","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#82-106","gmt_create":"2026-04-23T12:16:50.9906927+04:00","gmt_modified":"2026-04-23T12:16:50.9906927+04:00"},{"id":32505,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"65d8ec4282c90ca603928ff3ca7a8c1c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#169-206","gmt_create":"2026-04-23T12:16:50.9916934+04:00","gmt_modified":"2026-04-23T12:16:50.9916934+04:00"},{"id":32506,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"19888e3e680c4c22af512bc7fece3cb4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#41-66","gmt_create":"2026-04-23T12:16:50.9916934+04:00","gmt_modified":"2026-04-23T12:16:50.9916934+04:00"},{"id":32507,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"395304bf3b17e833fe3418a2227e8d20","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_connection.cpp#310-354","gmt_create":"2026-04-23T12:16:50.9916934+04:00","gmt_modified":"2026-04-23T12:16:50.9916934+04:00"},{"id":32508,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"bd2df0ef0f3a3569038ff93abf7f049a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/core_messages.cpp#30-49","gmt_create":"2026-04-23T12:16:50.9916934+04:00","gmt_modified":"2026-04-23T12:16:50.9916934+04:00"},{"id":32509,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"55b70b2d7f669af727f94be4a67ab19f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-72","gmt_create":"2026-04-23T12:16:50.9926928+04:00","gmt_modified":"2026-04-23T12:16:50.9926928+04:00"},{"id":32510,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"a2d760acb3b4737ac29dd99261de2de6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#132-177","gmt_create":"2026-04-23T12:16:50.9926928+04:00","gmt_modified":"2026-04-23T12:16:50.9926928+04:00"},{"id":32511,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"d0629cc7855cceaf537ab39cb2b4e1cf","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/stcp_socket.cpp#49-177","gmt_create":"2026-04-23T12:16:50.9926928+04:00","gmt_modified":"2026-04-23T12:16:50.9926928+04:00"},{"id":32512,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"3865aa6bd2579d32e36d7fa59c617b84","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_database.cpp#41-82","gmt_create":"2026-04-23T12:16:50.9936941+04:00","gmt_modified":"2026-04-23T12:16:50.9936941+04:00"},{"id":32513,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"e485b1e17d34c5b6a8a52a62ed1e66f1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/peer_database.cpp#100-174","gmt_create":"2026-04-23T12:16:50.9936941+04:00","gmt_modified":"2026-04-23T12:16:50.9936941+04:00"},{"id":32514,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"ea4c7e04621ef7790eb86a4d944b26e4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#70-105","gmt_create":"2026-04-23T12:16:50.9936941+04:00","gmt_modified":"2026-04-23T12:16:50.9936941+04:00"},{"id":32515,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"5263aa5e9c9cc4ee3589a4347ba00d1a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#3710-3723","gmt_create":"2026-04-23T12:16:50.9936941+04:00","gmt_modified":"2026-04-23T12:16:50.9936941+04:00"},{"id":32516,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"a3e7a4bb9a35beeeca37a93cc44b85f2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#312-381","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32517,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"c07e1357b4c5c16aa56461f40df51f3f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#383-420","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32518,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"ab29edddf2ddea94dfa66818525a4f69","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#173-179","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32519,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"a047fc28da4096adb5975768b23d6568","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4920-4970","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32520,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"87ef8faa755216d0d684261ca4cf1296","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5128-5131","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32521,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"36c1fcbd66f9c3ed0ccd021257219b26","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#322-346","gmt_create":"2026-04-23T12:16:50.994694+04:00","gmt_modified":"2026-04-23T12:16:50.994694+04:00"},{"id":32522,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8bc218238f6ca1f8614c8573c3d99ddb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#428-448","gmt_create":"2026-04-23T12:16:50.9956936+04:00","gmt_modified":"2026-04-23T12:16:50.9956936+04:00"},{"id":32523,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"edb1f25b3c55f03a9497c43c9ed563d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4900-4970","gmt_create":"2026-04-23T12:16:50.9956936+04:00","gmt_modified":"2026-04-23T12:16:50.9956936+04:00"},{"id":32524,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"f865c1de13ecfad0ba10d76be6f51e79","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#4164-4168","gmt_create":"2026-04-23T12:16:50.9956936+04:00","gmt_modified":"2026-04-23T12:16:50.9956936+04:00"},{"id":32525,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"46360683264d8d799f49154a37e77c95","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#298-304","gmt_create":"2026-04-23T12:16:50.9956936+04:00","gmt_modified":"2026-04-23T12:16:50.9956936+04:00"},{"id":32526,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"92a7248b320d281221528fd4b3586fae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#616-618","gmt_create":"2026-04-23T12:16:50.9966925+04:00","gmt_modified":"2026-04-23T12:16:50.9966925+04:00"},{"id":32527,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"d3c1206d30a580d9a1f8e5f0a0e37caa","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#26-28","gmt_create":"2026-04-23T12:16:50.9966925+04:00","gmt_modified":"2026-04-23T12:16:50.9966925+04:00"},{"id":32528,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"47a7ec224c52b37cda36330051d8989e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_connection.hpp#26-29","gmt_create":"2026-04-23T12:16:50.9966925+04:00","gmt_modified":"2026-04-23T12:16:50.9966925+04:00"},{"id":32529,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"46f63b299b6fb267a4f639c2d0d892de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/core_messages.hpp#26-28","gmt_create":"2026-04-23T12:16:50.9966925+04:00","gmt_modified":"2026-04-23T12:16:50.9966925+04:00"},{"id":32530,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"d047c2a99e186afd4cbe5d3b58a081ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/stcp_socket.hpp#26-28","gmt_create":"2026-04-23T12:16:50.9966925+04:00","gmt_modified":"2026-04-23T12:16:50.9966925+04:00"},{"id":32531,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"094de29302ce2b97582033a6a5e5f81d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message_oriented_connection.hpp#26-27","gmt_create":"2026-04-23T12:16:50.9976929+04:00","gmt_modified":"2026-04-23T12:16:50.9976929+04:00"},{"id":32532,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"c57df28bcfcd9ae39dd00ccdbfab27c0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/peer_database.hpp#39-45","gmt_create":"2026-04-23T12:16:50.9986922+04:00","gmt_modified":"2026-04-23T12:16:50.9986922+04:00"},{"id":32533,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"cda16bb7e30e75cab0c3ba93c74374ac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#288-298","gmt_create":"2026-04-23T12:16:50.9986922+04:00","gmt_modified":"2026-04-23T12:16:50.9986922+04:00"},{"id":32534,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"8ee1a4f18a4402289535e116f51b9516","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/message.hpp#85-105","gmt_create":"2026-04-23T12:16:50.9986922+04:00","gmt_modified":"2026-04-23T12:16:50.9986922+04:00"},{"id":32535,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"418562d4716f53d3060f183ffa64036c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/plugin.cpp","gmt_create":"2026-04-23T12:18:55.5917463+04:00","gmt_modified":"2026-04-23T12:18:55.5917463+04:00"},{"id":32536,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"10461f81e6789cf5385cca1e62af9d4d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","gmt_create":"2026-04-23T12:18:55.5917463+04:00","gmt_modified":"2026-04-23T12:18:55.5917463+04:00"},{"id":32537,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"87c4f90564e8fbfb6348ad688ef97318","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","gmt_create":"2026-04-23T12:18:55.5917463+04:00","gmt_modified":"2026-04-23T12:18:55.5917463+04:00"},{"id":32538,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"104cf6b015d8e526f86f8f74b8d4d146","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","gmt_create":"2026-04-23T12:18:55.5917463+04:00","gmt_modified":"2026-04-23T12:18:55.5917463+04:00"},{"id":32539,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"9560988721d95f90724da96e6a4ac318","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/snapshot/CMakeLists.txt","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32540,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"a5860d2a0d6204ef8d91570a638adcb3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/snapshot.json","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32541,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"1fef1de4422f2252e104a5abd7e7c5cb","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/snapshot-testnet.json","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32542,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"37fb39091ee4b69fe1e682497ff46b55","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: documentation/snapshot-plugin.md","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32543,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"d478cca230f790bc8f1573f56a55a987","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/plugin.cpp","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32544,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"8236bb0464725a19a16e9e7bd0d10b5a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-23T12:18:55.5922614+04:00","gmt_modified":"2026-04-23T12:18:55.5922614+04:00"},{"id":32545,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"5a775a89bb87e70f60760941848117e7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/database.cpp","gmt_create":"2026-04-23T12:18:55.5927766+04:00","gmt_modified":"2026-04-23T12:18:55.5927766+04:00"},{"id":32546,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"571d673b1b49568d584e159036820875","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/witness/witness.cpp","gmt_create":"2026-04-23T12:18:55.5927766+04:00","gmt_modified":"2026-04-23T12:18:55.5927766+04:00"},{"id":32547,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"71cbf21e4bf2a2b603ad1183369ec65f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-23T12:18:55.5927766+04:00","gmt_modified":"2026-04-23T12:18:55.5927766+04:00"},{"id":32548,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"08a8508b82e7873a40cd73c18c5113d0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/interprocess/file_mutex.cpp","gmt_create":"2026-04-23T12:18:55.5927766+04:00","gmt_modified":"2026-04-23T12:18:55.5927766+04:00"},{"id":32549,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"16a4e2bff0288ec68e9817239c754aed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: share/vizd/config/config.ini","gmt_create":"2026-04-23T12:18:55.5927766+04:00","gmt_modified":"2026-04-23T12:18:55.5927766+04:00"},{"id":32550,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"8c1f057e068af3d7a13214f05a59ed6d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/node.cpp","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32551,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"c07484f955228ae2a641c6a9ecc218e1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32552,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"8ed00ab8494d32c90e1ebf81d2421989","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32553,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"f49eb1acdefd29c4b322dfa68d449774","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/log/logger_config.cpp","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32554,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"2a488975038d8060fc2bec6672254f8e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: thirdparty/fc/src/log/console_appender.cpp","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32555,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"a7e56ec55d2393204c9701d977a9400c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1-50","gmt_create":"2026-04-23T12:18:55.5932898+04:00","gmt_modified":"2026-04-23T12:18:55.5932898+04:00"},{"id":32556,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"4a06a01de185f2302afb08f24f3c2b84","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#1-88","gmt_create":"2026-04-23T12:18:55.5938061+04:00","gmt_modified":"2026-04-23T12:18:55.5938061+04:00"},{"id":32557,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"afdbaea77133cc08160f2954aae9d02c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp#1-52","gmt_create":"2026-04-23T12:18:55.5938061+04:00","gmt_modified":"2026-04-23T12:18:55.5938061+04:00"},{"id":32558,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"86be1cb2396b0667cd9b2676e146da4f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/CMakeLists.txt#1-52","gmt_create":"2026-04-23T12:18:55.5938061+04:00","gmt_modified":"2026-04-23T12:18:55.5938061+04:00"},{"id":32559,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"03671e2406d9aa4281ec8988ebd11ea3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#42-76","gmt_create":"2026-04-23T12:18:55.5943204+04:00","gmt_modified":"2026-04-23T12:18:55.5943204+04:00"},{"id":32560,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"4d53110f843225004c76883ddaf8a3db","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp#16-52","gmt_create":"2026-04-23T12:18:55.5943204+04:00","gmt_modified":"2026-04-23T12:18:55.5943204+04:00"},{"id":32561,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"6b4ecd2cef1f64d73ebb15271ad63dec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp#30-158","gmt_create":"2026-04-23T12:18:55.5943204+04:00","gmt_modified":"2026-04-23T12:18:55.5943204+04:00"},{"id":32562,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"846c3fae1de48cd9c46b1ffde792c266","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#675-780","gmt_create":"2026-04-23T12:18:55.5943204+04:00","gmt_modified":"2026-04-23T12:18:55.5943204+04:00"},{"id":32563,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"42fe843c72050e328e7b8c97676e68ee","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp#37-107","gmt_create":"2026-04-23T12:18:55.5953258+04:00","gmt_modified":"2026-04-23T12:18:55.5953258+04:00"},{"id":32564,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"9824dc418fd477d361e2cb113d2d8a6d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#885-987","gmt_create":"2026-04-23T12:18:55.5958305+04:00","gmt_modified":"2026-04-23T12:18:55.5958305+04:00"},{"id":32565,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"c70d834a6c61afda086e00d45a34530e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#789-883","gmt_create":"2026-04-23T12:18:55.5958305+04:00","gmt_modified":"2026-04-23T12:18:55.5958305+04:00"},{"id":32566,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"38ba886c685a78655cd83f13bc1ee1de","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1400-1484","gmt_create":"2026-04-23T12:18:55.5958305+04:00","gmt_modified":"2026-04-23T12:18:55.5958305+04:00"},{"id":32567,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"3f30e9195428c3c0d628347672216881","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1046-1288","gmt_create":"2026-04-23T12:18:55.5958305+04:00","gmt_modified":"2026-04-23T12:18:55.5958305+04:00"},{"id":32568,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"385e16c713d33cee472d76fd9309c8a7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1902-2038","gmt_create":"2026-04-23T12:18:55.5958305+04:00","gmt_modified":"2026-04-23T12:18:55.5958305+04:00"},{"id":32569,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"a656f741ca3a98ea4e39650246c13e31","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1470-1599","gmt_create":"2026-04-23T12:18:55.5968364+04:00","gmt_modified":"2026-04-23T12:18:55.5968364+04:00"},{"id":32570,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"210282284c4a151d5bb31f5c22acb0e2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2473-2510","gmt_create":"2026-04-23T12:18:55.5968364+04:00","gmt_modified":"2026-04-23T12:18:55.5968364+04:00"},{"id":32571,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"fce82559c856b77e5143284446449214","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#247-273","gmt_create":"2026-04-23T12:18:55.5968364+04:00","gmt_modified":"2026-04-23T12:18:55.5968364+04:00"},{"id":32572,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"f9743c7d2ad207b1a79a0e95d75247cc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1418-1436","gmt_create":"2026-04-23T12:18:55.5968364+04:00","gmt_modified":"2026-04-23T12:18:55.5968364+04:00"},{"id":32573,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"d73dcca02dff8f3073d543232ea8d398","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#737-743","gmt_create":"2026-04-23T12:18:55.5968364+04:00","gmt_modified":"2026-04-23T12:18:55.5968364+04:00"},{"id":32574,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"71b4159a5d3213112920bd296d8e89bb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1390-1484","gmt_create":"2026-04-23T12:18:55.597844+04:00","gmt_modified":"2026-04-23T12:18:55.597844+04:00"},{"id":32575,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"ec58f910f97a726df18f75c0c17baada","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1440-1449","gmt_create":"2026-04-23T12:18:55.597844+04:00","gmt_modified":"2026-04-23T12:18:55.597844+04:00"},{"id":32576,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"75b03c62708ffd28a4f9d687421e1c28","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/witness/witness.cpp#335-551","gmt_create":"2026-04-23T12:18:55.597844+04:00","gmt_modified":"2026-04-23T12:18:55.597844+04:00"},{"id":32577,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"a4baae31b894b18b4796bc14910ee131","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1326-1376","gmt_create":"2026-04-23T12:18:55.597844+04:00","gmt_modified":"2026-04-23T12:18:55.597844+04:00"},{"id":32578,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"0ae3da57453e773fb07f47dbd5886c6a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1426-1435","gmt_create":"2026-04-23T12:18:55.597844+04:00","gmt_modified":"2026-04-23T12:18:55.597844+04:00"},{"id":32579,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"492bfc10ec7008ed8d3c0fcb9eb2986e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#745-750","gmt_create":"2026-04-23T12:18:55.6064466+04:00","gmt_modified":"2026-04-23T12:18:55.6064466+04:00"},{"id":32580,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"c6fe65da69747dabf7418f6ebfbc16a6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#697-700","gmt_create":"2026-04-23T12:18:55.6074454+04:00","gmt_modified":"2026-04-23T12:18:55.6074454+04:00"},{"id":32581,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"2e53433527d0fe2c5b8af01e4c75ab33","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2831-2845","gmt_create":"2026-04-23T12:18:55.6074454+04:00","gmt_modified":"2026-04-23T12:18:55.6074454+04:00"},{"id":32582,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"3d5e7d45a447644705a300e602712ab4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1719-1748","gmt_create":"2026-04-23T12:18:55.6074454+04:00","gmt_modified":"2026-04-23T12:18:55.6074454+04:00"},{"id":32583,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"311030227d7a27b006fece17d9efd018","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1706-1748","gmt_create":"2026-04-23T12:18:55.6074454+04:00","gmt_modified":"2026-04-23T12:18:55.6074454+04:00"},{"id":32584,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"0fdcd022e550104e434876fa650f53c4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#490-560","gmt_create":"2026-04-23T12:18:55.6074454+04:00","gmt_modified":"2026-04-23T12:18:55.6074454+04:00"},{"id":32585,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"f0e049888c51f9cd8f614dd4d55fe05b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2945-2959","gmt_create":"2026-04-23T12:18:55.6084457+04:00","gmt_modified":"2026-04-23T12:18:55.6084457+04:00"},{"id":32586,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"29998ee4937bbfcaafdb8749dfb3fdf3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/chain/database.cpp#441-5201","gmt_create":"2026-04-23T12:18:55.6084457+04:00","gmt_modified":"2026-04-23T12:18:55.6084457+04:00"},{"id":32587,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"30f19521c0c40fc613bf93a90c654dc9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#542-559","gmt_create":"2026-04-23T12:18:55.6084457+04:00","gmt_modified":"2026-04-23T12:18:55.6084457+04:00"},{"id":32588,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"6e3b8e0770e0fd14881374dd8b3c658e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2976-3009","gmt_create":"2026-04-23T12:18:55.6084457+04:00","gmt_modified":"2026-04-23T12:18:55.6084457+04:00"},{"id":32589,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"28efe21ebfbcc6e72bb32ca3977b1939","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2468-2570","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32590,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"d63a843046b69fbb600d08397a3d24b2","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#689-697","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32591,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"e8fc4f78dc6c018fb182ce7216a577c7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/node.cpp#5241-5274","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32592,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"af2c19f2568561b67f019a505b8c1e2a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: libraries/network/include/graphene/network/node.hpp#284-290","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32593,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"80a6cf4c3a34c0380cfa7e2bbce50695","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#86-88","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32594,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"12dbcde9e60b1141f215fb60b089b7c8","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#735-740","gmt_create":"2026-04-23T12:18:55.6094482+04:00","gmt_modified":"2026-04-23T12:18:55.6094482+04:00"},{"id":32595,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"b8f460ca6d8e0942ab1f7226cd2a1b21","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1814-1862","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32596,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"739243787c097dbb8797bb297c748868","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#772-785","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32597,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"db7e02e69db0e8586e85ce97afc5cb39","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: documentation/snapshot-plugin.md#339-374","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32598,"source_id":"37fb39091ee4b69fe1e682497ff46b55","target_id":"db7e02e69db0e8586e85ce97afc5cb39","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 339-374","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32599,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"302a2b97d7155d06fda21dbeb2f1b54a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#585-649","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32600,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"41cf0afd5318bbd8764352fab2436ad5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#673-677","gmt_create":"2026-04-23T12:18:55.6104484+04:00","gmt_modified":"2026-04-23T12:18:55.6104484+04:00"},{"id":32601,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"41cf0afd5318bbd8764352fab2436ad5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 673-677","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32602,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"5d91b76995b1b78e1207caddc6168d8b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/p2p/p2p_plugin.cpp#744-755","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32603,"source_id":"8ed00ab8494d32c90e1ebf81d2421989","target_id":"5d91b76995b1b78e1207caddc6168d8b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 744-755","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32604,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"8ae8252af5d5c484e0710b855ad18866","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#165-176","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32605,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"444b9950972fec08b3139f4d50cf0a6e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1587-1596","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32606,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"5abd9dec8f7100b36c876b18e58d4bb7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1610-1620","gmt_create":"2026-04-23T12:18:55.6114487+04:00","gmt_modified":"2026-04-23T12:18:55.6114487+04:00"},{"id":32607,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"2d8f8aa2a2e0d2b778c984550ade3061","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1812-1877","gmt_create":"2026-04-23T12:18:55.6124457+04:00","gmt_modified":"2026-04-23T12:18:55.6124457+04:00"},{"id":32608,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"8a1470c12fc58346550796f023996d4f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp#24-34","gmt_create":"2026-04-23T12:18:55.6124457+04:00","gmt_modified":"2026-04-23T12:18:55.6124457+04:00"},{"id":32609,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"4ca7141219ec0e9f25ffdbdb9cda2fa1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2598-2680","gmt_create":"2026-04-23T12:18:55.6124457+04:00","gmt_modified":"2026-04-23T12:18:55.6124457+04:00"},{"id":32610,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"9c4238b8e0cf99b348e22120eac41904","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/chain/plugin.cpp#364-432","gmt_create":"2026-04-23T12:18:55.6124457+04:00","gmt_modified":"2026-04-23T12:18:55.6124457+04:00"},{"id":32611,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"215a79715153cc7dbc2d358d6a91799d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/CMakeLists.txt#27-38","gmt_create":"2026-04-23T12:18:55.6124457+04:00","gmt_modified":"2026-04-23T12:18:55.6124457+04:00"},{"id":32612,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"bddad6a413d83352718b613e27b97469","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#2294-2464","gmt_create":"2026-04-23T12:18:55.6134455+04:00","gmt_modified":"2026-04-23T12:18:55.6134455+04:00"},{"id":32613,"source_id":"9d3780f6-5f89-404f-acb7-3406999412cc","target_id":"cb7f8a8d2075a597d0647057d4371101","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: plugins/snapshot/plugin.cpp#1378-1464","gmt_create":"2026-04-23T12:18:55.6134455+04:00","gmt_modified":"2026-04-23T12:18:55.6134455+04:00"},{"id":32614,"source_id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","target_id":"9d3780f6-5f89-404f-acb7-3406999412cc","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: dccbfa78-83ae-4fee-9212-5ac10c7424f6 -\u003e 9d3780f6-5f89-404f-acb7-3406999412cc","gmt_create":"2026-04-23T12:18:56.216174+04:00","gmt_modified":"2026-04-23T12:18:56.216174+04:00"},{"id":32615,"source_id":"9032efbf-122b-4ac0-9b47-6531642636d2","target_id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 9032efbf-122b-4ac0-9b47-6531642636d2 -\u003e 3d9ef584-1d54-4c52-bdce-636c5bde9f59","gmt_create":"2026-04-23T12:18:56.2171774+04:00","gmt_modified":"2026-04-23T12:18:56.2171774+04:00"},{"id":32616,"source_id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","target_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 11a3f0cc-0550-4d22-84d7-48826fa26abe -\u003e b37927e4-88c1-4fe1-afa6-b1368bf27344","gmt_create":"2026-04-23T12:18:56.2186844+04:00","gmt_modified":"2026-04-23T12:18:56.2186844+04:00"},{"id":32617,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b37927e4-88c1-4fe1-afa6-b1368bf27344 -\u003e f28ee86a-fca4-470c-8556-7a946ee49c7d","gmt_create":"2026-04-23T12:18:56.2221956+04:00","gmt_modified":"2026-04-23T12:18:56.2221956+04:00"},{"id":32618,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b37927e4-88c1-4fe1-afa6-b1368bf27344 -\u003e 3d4850df-edca-433b-93aa-7b4e8b2ca3da","gmt_create":"2026-04-23T12:18:56.2221956+04:00","gmt_modified":"2026-04-23T12:18:56.2221956+04:00"},{"id":32619,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"fe73f758-2211-4ca5-91c7-8e3ca561726f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b37927e4-88c1-4fe1-afa6-b1368bf27344 -\u003e fe73f758-2211-4ca5-91c7-8e3ca561726f","gmt_create":"2026-04-23T12:18:56.2221956+04:00","gmt_modified":"2026-04-23T12:18:56.2221956+04:00"},{"id":32620,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"75b86f21-0ff1-48aa-91f6-8385cce6206d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b37927e4-88c1-4fe1-afa6-b1368bf27344 -\u003e 75b86f21-0ff1-48aa-91f6-8385cce6206d","gmt_create":"2026-04-23T12:18:56.2221956+04:00","gmt_modified":"2026-04-23T12:18:56.2221956+04:00"},{"id":32621,"source_id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","target_id":"40533d38-e516-4c32-be8b-d1775c29cffd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b37927e4-88c1-4fe1-afa6-b1368bf27344 -\u003e 40533d38-e516-4c32-be8b-d1775c29cffd","gmt_create":"2026-04-23T12:18:56.2221956+04:00","gmt_modified":"2026-04-23T12:18:56.2221956+04:00"}],"source_files":[{"id":"5b1863c24f95c4307bc9d6bd13495e98","path":".gitmodules","filename":".gitmodules","gmt_create":"2026-04-23T06:46:47.4139817+04:00","gmt_modified":"2026-04-23T06:46:47.4139817+04:00"},{"id":"e1da3cd2e6e4f1c39a468f27c18fed86","path":"thirdparty/fc/.gitmodules","filename":".gitmodules","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"59aed13dec3dec090ca4238d87a33a3e","path":"thirdparty/fc/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"9ef0f7dd92ad42844d61d049ea2e91f7","path":"thirdparty/chainbase/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"ea84849af043a9e7eabccf5474037fdf","path":"thirdparty/appbase/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"bbbcb34fa600f3efb29ca006ef2eff66","path":"CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"33769e7ecefb7ac442a88bcc6e7fe7db","path":"documentation/building.md","filename":"building.md","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"e15d33f14b3a5dc9ebc5e50072c39aa1","path":".travis.yml","filename":".travis.yml","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"48369ee5882470d563a4a3760712465a","path":"share/vizd/docker/Dockerfile-production","filename":"Dockerfile-production","gmt_create":"2026-04-23T06:46:47.4144987+04:00","gmt_modified":"2026-04-23T06:46:47.4144987+04:00"},{"id":"5c83db7209d29d47467923bf09fbb420","path":"share/vizd/docker/Dockerfile-testnet","filename":"Dockerfile-testnet","gmt_create":"2026-04-23T06:46:47.4150128+04:00","gmt_modified":"2026-04-23T06:46:47.4150128+04:00"},{"id":"a4c9b2fe8fbb390d04b65fe4b8fd4170","path":"share/vizd/docker/Dockerfile-lowmem","filename":"Dockerfile-lowmem","gmt_create":"2026-04-23T06:46:47.4150128+04:00","gmt_modified":"2026-04-23T06:46:47.4150128+04:00"},{"id":"70883dd54389a65e0c6792812c73a8e2","path":"share/vizd/docker/Dockerfile-mongo","filename":"Dockerfile-mongo","gmt_create":"2026-04-23T06:46:47.4150128+04:00","gmt_modified":"2026-04-23T06:46:47.4150128+04:00"},{"id":"8119d11d74306341a650d0a8c0c5605b","path":".github/workflows/docker-main.yml","filename":"docker-main.yml","gmt_create":"2026-04-23T06:46:47.4150128+04:00","gmt_modified":"2026-04-23T06:46:47.4150128+04:00"},{"id":"fe40dc0bce746a9c7f466b6eb7abb86b","path":"libraries/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"de0fafbf85e2109ebd021f91113f4c4e","path":"plugins/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"3c826f15ca54d3363e6a7af0b5686211","path":"programs/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"586d0a978dde912618689cf19874dd4b","path":"thirdparty/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"922b8fed67a0bf6bcc7f3f4a2eb38ddd","path":"programs/vizd/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"48a318f357a885ebfef27b84ef5565ee","path":"build-linux.sh","filename":"build-linux.sh","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"3e55b84725e9a2931cb48b11d42ef75c","path":"build-mac.sh","filename":"build-mac.sh","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"3fbe84fabfaa10d8da23f6d4dad03692","path":"build-mingw.bat","filename":"build-mingw.bat","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"1582cef3977fa0f573c3bdb3fe4a0045","path":"build-msvc.bat","filename":"build-msvc.bat","gmt_create":"2026-04-23T06:46:47.4155294+04:00","gmt_modified":"2026-04-23T06:46:47.4155294+04:00"},{"id":"418562d4716f53d3060f183ffa64036c","path":"plugins/snapshot/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-23T06:48:46.2316277+04:00","gmt_modified":"2026-04-23T06:48:46.2316277+04:00"},{"id":"10461f81e6789cf5385cca1e62af9d4d","path":"plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T06:48:46.2316277+04:00","gmt_modified":"2026-04-23T06:48:46.2316277+04:00"},{"id":"87c4f90564e8fbfb6348ad688ef97318","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_types.hpp","filename":"snapshot_types.hpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"104cf6b015d8e526f86f8f74b8d4d146","path":"plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp","filename":"snapshot_serializer.hpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"9560988721d95f90724da96e6a4ac318","path":"plugins/snapshot/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"a5860d2a0d6204ef8d91570a638adcb3","path":"share/vizd/snapshot.json","filename":"snapshot.json","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"1fef1de4422f2252e104a5abd7e7c5cb","path":"share/vizd/snapshot-testnet.json","filename":"snapshot-testnet.json","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"37fb39091ee4b69fe1e682497ff46b55","path":"documentation/snapshot-plugin.md","filename":"snapshot-plugin.md","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"d478cca230f790bc8f1573f56a55a987","path":"plugins/chain/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"8236bb0464725a19a16e9e7bd0d10b5a","path":"plugins/chain/include/graphene/plugins/chain/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"5a775a89bb87e70f60760941848117e7","path":"libraries/chain/database.cpp","filename":"database.cpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"571d673b1b49568d584e159036820875","path":"plugins/witness/witness.cpp","filename":"witness.cpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"71cbf21e4bf2a2b603ad1183369ec65f","path":"libraries/chain/dlt_block_log.cpp","filename":"dlt_block_log.cpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"08a8508b82e7873a40cd73c18c5113d0","path":"thirdparty/fc/src/interprocess/file_mutex.cpp","filename":"file_mutex.cpp","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"16a4e2bff0288ec68e9817239c754aed","path":"share/vizd/config/config.ini","filename":"config.ini","gmt_create":"2026-04-23T06:48:46.2321307+04:00","gmt_modified":"2026-04-23T06:48:46.2321307+04:00"},{"id":"4036f8e38f752e8da82deeed190ddc06","path":"libraries/network/include/graphene/network/peer_connection.hpp","filename":"peer_connection.hpp","gmt_create":"2026-04-23T06:50:36.8452139+04:00","gmt_modified":"2026-04-23T06:50:36.8452139+04:00"},{"id":"03ba9497d2e4b912db997e43e1b9c653","path":"libraries/network/peer_connection.cpp","filename":"peer_connection.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"c07484f955228ae2a641c6a9ecc218e1","path":"libraries/network/include/graphene/network/node.hpp","filename":"node.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"8c1f057e068af3d7a13214f05a59ed6d","path":"libraries/network/node.cpp","filename":"node.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"e12a1d568ad99d9c23753af3b983d420","path":"libraries/network/include/graphene/network/message_oriented_connection.hpp","filename":"message_oriented_connection.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"44259eceb7b489d55fb322edef4c325f","path":"libraries/network/message_oriented_connection.cpp","filename":"message_oriented_connection.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"a090337969d7a39c7cbc9737c926d289","path":"libraries/network/include/graphene/network/stcp_socket.hpp","filename":"stcp_socket.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"7f5ebd18d8224ccabbd73a26fba17a38","path":"libraries/network/stcp_socket.cpp","filename":"stcp_socket.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"aa7de2818f0eacb01058838d2b81a9e7","path":"libraries/network/include/graphene/network/core_messages.hpp","filename":"core_messages.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"f5ad8f25a7e1c10d29fdcfd7b3eadb75","path":"libraries/network/core_messages.cpp","filename":"core_messages.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"32cf30b2e9094b9693ab53917b0a2eb3","path":"libraries/network/include/graphene/network/config.hpp","filename":"config.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"f6da664295247a02e1a87e6157ade267","path":"libraries/network/include/graphene/network/peer_database.hpp","filename":"peer_database.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"8fb5fbed1f7009b8445ba1ca2bb36e9e","path":"libraries/network/peer_database.cpp","filename":"peer_database.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"4810c013b14141360d4bcf40a8c63444","path":"libraries/network/include/graphene/network/message.hpp","filename":"message.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"abf923bd059721b5a0c6f9abfff538be","path":"libraries/network/include/graphene/network/exceptions.hpp","filename":"exceptions.hpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"8ed00ab8494d32c90e1ebf81d2421989","path":"plugins/p2p/p2p_plugin.cpp","filename":"p2p_plugin.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"4ec5dd7f21bde7651b20873b01f868c9","path":"libraries/chain/fork_database.cpp","filename":"fork_database.cpp","gmt_create":"2026-04-23T06:50:36.8457194+04:00","gmt_modified":"2026-04-23T06:50:36.8457194+04:00"},{"id":"9a05c42951266743e782ce0775e5bd42","path":"libraries/chain/include/graphene/chain/database.hpp","filename":"database.hpp","gmt_create":"2026-04-23T06:51:53.107459+04:00","gmt_modified":"2026-04-23T06:51:53.107459+04:00"},{"id":"a636cebf0fd48c268641a5544c551752","path":"libraries/chain/include/graphene/chain/block_log.hpp","filename":"block_log.hpp","gmt_create":"2026-04-23T06:51:53.107459+04:00","gmt_modified":"2026-04-23T06:51:53.107459+04:00"},{"id":"aa1ac1734ffa0ca1fb1ec42168f601e7","path":"libraries/chain/block_log.cpp","filename":"block_log.cpp","gmt_create":"2026-04-23T06:51:53.1080602+04:00","gmt_modified":"2026-04-23T06:51:53.1080602+04:00"},{"id":"d136a3c86c240fca63a64546b4891416","path":"libraries/chain/include/graphene/chain/dlt_block_log.hpp","filename":"dlt_block_log.hpp","gmt_create":"2026-04-23T06:51:53.1080602+04:00","gmt_modified":"2026-04-23T06:51:53.1080602+04:00"},{"id":"1e6f9e0c4241a3a53748ca848749cd9c","path":"libraries/chain/include/graphene/chain/fork_database.hpp","filename":"fork_database.hpp","gmt_create":"2026-04-23T06:51:53.1080602+04:00","gmt_modified":"2026-04-23T06:51:53.1080602+04:00"},{"id":"5d124c256c0fcd736094cfbd39e807a2","path":"libraries/chain/include/graphene/chain/database_exceptions.hpp","filename":"database_exceptions.hpp","gmt_create":"2026-04-23T06:51:53.1080602+04:00","gmt_modified":"2026-04-23T06:51:53.1080602+04:00"},{"id":"5cdea1b55d11dd83076d2fe00b9305f3","path":"libraries/chain/include/graphene/chain/db_with.hpp","filename":"db_with.hpp","gmt_create":"2026-04-23T06:51:53.1080602+04:00","gmt_modified":"2026-04-23T06:51:53.1080602+04:00"},{"id":"f5e2709c934c90bed9814ff547a6da8e","path":"libraries/protocol/include/graphene/protocol/config.hpp","filename":"config.hpp","gmt_create":"2026-04-23T06:51:53.1085644+04:00","gmt_modified":"2026-04-23T06:51:53.1085644+04:00"},{"id":"38e584d2e1cd119a9140300797cecf16","path":"thirdparty/chainbase/src/chainbase.cpp","filename":"chainbase.cpp","gmt_create":"2026-04-23T06:51:53.1085644+04:00","gmt_modified":"2026-04-23T06:51:53.1085644+04:00"},{"id":"2e9e3cf1864f83b0b302ff86e7423752","path":"thirdparty/chainbase/include/chainbase/chainbase.hpp","filename":"chainbase.hpp","gmt_create":"2026-04-23T06:51:53.1085644+04:00","gmt_modified":"2026-04-23T06:51:53.1085644+04:00"},{"id":"21bfc0180b7699a6df5d595a956c92ec","path":"plugins/snapshot/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T09:39:39.4181973+04:00","gmt_modified":"2026-04-23T09:39:39.4181973+04:00"},{"id":"de06c0b429208d005ec4e2b38a7b6678","path":"libraries/chain/include/graphene/chain/chain_object_types.hpp","filename":"chain_object_types.hpp","gmt_create":"2026-04-23T09:40:27.9949788+04:00","gmt_modified":"2026-04-23T09:40:27.9949788+04:00"},{"id":"d1302454310309381c9368910649870f","path":"libraries/chain/include/graphene/chain/chain_objects.hpp","filename":"chain_objects.hpp","gmt_create":"2026-04-23T09:40:27.9949788+04:00","gmt_modified":"2026-04-23T09:40:27.9949788+04:00"},{"id":"58dab1fa0c82c6d488c1c385549bf65f","path":"libraries/chain/include/graphene/chain/account_object.hpp","filename":"account_object.hpp","gmt_create":"2026-04-23T09:40:27.995815+04:00","gmt_modified":"2026-04-23T09:40:27.995815+04:00"},{"id":"f2e0ab4a21a05fb2b13f0fa0f497f4ae","path":"libraries/chain/include/graphene/chain/witness_objects.hpp","filename":"witness_objects.hpp","gmt_create":"2026-04-23T09:40:27.995815+04:00","gmt_modified":"2026-04-23T09:40:27.995815+04:00"},{"id":"705e8221610923620972eca797fa6db6","path":"libraries/chain/include/graphene/chain/committee_objects.hpp","filename":"committee_objects.hpp","gmt_create":"2026-04-23T09:40:27.995815+04:00","gmt_modified":"2026-04-23T09:40:27.995815+04:00"},{"id":"6448b32a9d85a70c1c5dece30706f077","path":"libraries/chain/include/graphene/chain/transaction_object.hpp","filename":"transaction_object.hpp","gmt_create":"2026-04-23T09:40:27.995815+04:00","gmt_modified":"2026-04-23T09:40:27.995815+04:00"},{"id":"c70e20aa89698498e7c8e639e9dda898","path":"libraries/chain/include/graphene/chain/evaluator.hpp","filename":"evaluator.hpp","gmt_create":"2026-04-23T09:40:27.995815+04:00","gmt_modified":"2026-04-23T09:40:27.995815+04:00"},{"id":"c7f289a817d1cf2f2edb643d7c388364","path":"libraries/chain/include/graphene/chain/chain_evaluator.hpp","filename":"chain_evaluator.hpp","gmt_create":"2026-04-23T09:40:27.996318+04:00","gmt_modified":"2026-04-23T09:40:27.996318+04:00"},{"id":"f46b9fad5bc65772c0ace22913bdad84","path":"libraries/chain/include/graphene/chain/operation_notification.hpp","filename":"operation_notification.hpp","gmt_create":"2026-04-23T09:40:27.9963916+04:00","gmt_modified":"2026-04-23T09:40:27.9963916+04:00"},{"id":"2a488975038d8060fc2bec6672254f8e","path":"thirdparty/fc/src/log/console_appender.cpp","filename":"console_appender.cpp","gmt_create":"2026-04-23T09:40:27.9963916+04:00","gmt_modified":"2026-04-23T09:40:27.9963916+04:00"},{"id":"988bb985afa7b7add75e4415b239b6a6","path":"programs/vizd/main.cpp","filename":"main.cpp","gmt_create":"2026-04-23T09:40:27.9968944+04:00","gmt_modified":"2026-04-23T09:40:27.9968944+04:00"},{"id":"7005600676a1aac078451cab6f714a9c","path":"README.md","filename":"README.md","gmt_create":"2026-04-23T09:46:06.4694888+04:00","gmt_modified":"2026-04-23T09:46:06.4694888+04:00"},{"id":"3d04b0b0f0eb354aa6f47833f6b3b993","path":"documentation/plugin.md","filename":"plugin.md","gmt_create":"2026-04-23T09:46:06.4694888+04:00","gmt_modified":"2026-04-23T09:46:06.4694888+04:00"},{"id":"fdee35c26d891fe544cc27cdb3ead3bf","path":"plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","filename":"webserver_plugin.hpp","gmt_create":"2026-04-23T09:46:06.4700645+04:00","gmt_modified":"2026-04-23T09:46:06.4700645+04:00"},{"id":"4a4ce940f1e4d0377b80944b807f7236","path":"plugins/database_api/include/graphene/plugins/database_api/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T09:46:06.4700645+04:00","gmt_modified":"2026-04-23T09:46:06.4700645+04:00"},{"id":"d0fb72b813916ea9f35db2f6cd39bd1e","path":"plugins/json_rpc/include/graphene/plugins/json_rpc/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T09:46:06.4700645+04:00","gmt_modified":"2026-04-23T09:46:06.4700645+04:00"},{"id":"cfd0645ffe0098ddfeb689dc6608a9e9","path":"plugins/account_history/include/graphene/plugins/account_history/plugin.hpp","filename":"plugin.hpp","gmt_create":"2026-04-23T09:46:06.4706447+04:00","gmt_modified":"2026-04-23T09:46:06.4706447+04:00"},{"id":"fb1da1d76a9c97ea5b78a1aa200c3ec1","path":"plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp","filename":"p2p_plugin.hpp","gmt_create":"2026-04-23T09:46:06.4706447+04:00","gmt_modified":"2026-04-23T09:46:06.4706447+04:00"},{"id":"eda094f6c7f30e5af92cd6361249ffed","path":"plugins/p2p/CMakeLists.txt","filename":"CMakeLists.txt","gmt_create":"2026-04-23T09:46:06.4706447+04:00","gmt_modified":"2026-04-23T09:46:06.4706447+04:00"},{"id":"84f302d721cd2a423f647f2b50183558","path":"plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_plugin.hpp","filename":"mongo_db_plugin.hpp","gmt_create":"2026-04-23T09:46:06.4706447+04:00","gmt_modified":"2026-04-23T09:46:06.4706447+04:00"},{"id":"ae112bbcc58229a7363c2eb7dfc2d58d","path":"plugins/debug_node/plugin.cpp","filename":"plugin.cpp","gmt_create":"2026-04-23T09:46:06.4711493+04:00","gmt_modified":"2026-04-23T09:46:06.4711493+04:00"},{"id":"049b280127deb064471c9f9f3eba5a5b","path":"libraries/protocol/include/graphene/protocol/operations.hpp","filename":"operations.hpp","gmt_create":"2026-04-23T09:46:06.4711493+04:00","gmt_modified":"2026-04-23T09:46:06.4711493+04:00"},{"id":"beabef111a7a2136152008b444da9246","path":"libraries/chain/chain_evaluator.cpp","filename":"chain_evaluator.cpp","gmt_create":"2026-04-23T09:46:06.4711493+04:00","gmt_modified":"2026-04-23T09:46:06.4711493+04:00"},{"id":"2c29b33616609cdb7494a96cdf0810bc","path":"libraries/network/peer_connection.hpp","filename":"peer_connection.hpp","gmt_create":"2026-04-23T09:46:06.4717074+04:00","gmt_modified":"2026-04-23T09:46:06.4717074+04:00"},{"id":"e6e4173796f1dde64bec92ed8c9462c3","path":"libraries/network/core_messages.hpp","filename":"core_messages.hpp","gmt_create":"2026-04-23T09:46:06.4717074+04:00","gmt_modified":"2026-04-23T09:46:06.4717074+04:00"},{"id":"64b5113e7dbca1ab08e087f095423e81","path":"thirdparty/fc/include/fc/network/ip.hpp","filename":"ip.hpp","gmt_create":"2026-04-23T09:46:06.4717074+04:00","gmt_modified":"2026-04-23T09:46:06.4717074+04:00"},{"id":"0181fe0bb863b7fe871e3af8ad113ddf","path":"thirdparty/fc/src/network/ip.cpp","filename":"ip.cpp","gmt_create":"2026-04-23T09:46:06.4717074+04:00","gmt_modified":"2026-04-23T09:46:06.4717074+04:00"},{"id":"95ce48240aa09e3af69ee56050284497","path":"programs/util/newplugin.py","filename":"newplugin.py","gmt_create":"2026-04-23T09:46:06.4722115+04:00","gmt_modified":"2026-04-23T09:46:06.4722115+04:00"},{"id":"c6fa8e83f2cf8a08be2de60d97f4a9f8","path":"share/vizd/config/config_testnet.ini","filename":"config_testnet.ini","gmt_create":"2026-04-23T11:16:32.2829997+04:00","gmt_modified":"2026-04-23T11:16:32.2829997+04:00"},{"id":"475c2f17a00cd4de82dd54bf0a8126ac","path":"share/vizd/config/config_witness.ini","filename":"config_witness.ini","gmt_create":"2026-04-23T11:16:32.2829997+04:00","gmt_modified":"2026-04-23T11:16:32.2829997+04:00"},{"id":"56e73581fcc11e3d5d304c4453d84a9f","path":"share/vizd/config/config_mongo.ini","filename":"config_mongo.ini","gmt_create":"2026-04-23T11:18:10.1518461+04:00","gmt_modified":"2026-04-23T11:18:10.1518461+04:00"},{"id":"1703516eef21eec01e919079e221dabb","path":"share/vizd/config/config_debug.ini","filename":"config_debug.ini","gmt_create":"2026-04-23T11:18:10.1518461+04:00","gmt_modified":"2026-04-23T11:18:10.1518461+04:00"},{"id":"77d7d5cae5b2ba02b7b3e0116c821669","path":"share/vizd/config/config_debug_mongo.ini","filename":"config_debug_mongo.ini","gmt_create":"2026-04-23T11:18:10.1518461+04:00","gmt_modified":"2026-04-23T11:18:10.1518461+04:00"},{"id":"295d36eeed1ab98565250d89d54cc36a","path":"share/vizd/vizd.sh","filename":"vizd.sh","gmt_create":"2026-04-23T11:18:10.1518461+04:00","gmt_modified":"2026-04-23T11:18:10.1518461+04:00"},{"id":"2422c587506c0b05e97687067ae1d1cf","path":"documentation/testnet.md","filename":"testnet.md","gmt_create":"2026-04-23T11:18:10.1523611+04:00","gmt_modified":"2026-04-23T11:18:10.1523611+04:00"},{"id":"3a1c05308902dc684e85898a790b0e07","path":"libraries/protocol/include/graphene/protocol/config_testnet.hpp","filename":"config_testnet.hpp","gmt_create":"2026-04-23T11:18:10.1523611+04:00","gmt_modified":"2026-04-23T11:18:10.1523611+04:00"},{"id":"1c1b4b5872b3e0fa0bef4de9fb558675","path":"thirdparty/appbase/application.cpp","filename":"application.cpp","gmt_create":"2026-04-23T11:18:10.15288+04:00","gmt_modified":"2026-04-23T11:18:10.15288+04:00"},{"id":"f49eb1acdefd29c4b322dfa68d449774","path":"thirdparty/fc/src/log/logger_config.cpp","filename":"logger_config.cpp","gmt_create":"2026-04-23T11:21:40.9934436+04:00","gmt_modified":"2026-04-23T11:21:40.9934436+04:00"},{"id":"fb22ad271c25ac4291c3d91edf5eb0b9","path":"share/vizd/config/config_stock_exchange.ini","filename":"config_stock_exchange.ini","gmt_create":"2026-04-23T12:16:49.771073+04:00","gmt_modified":"2026-04-23T12:16:49.771073+04:00"}],"wiki_catalogs":[{"id":"c665e222-676e-4279-9041-a736a7d52cba","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Project Overview","description":"overview","prompt":"Create comprehensive content for the VIZ CPP Node project overview section. Explain the project's purpose as a Graphene-based blockchain implementation with Fair-DPOS consensus algorithm, its architecture as a full consensus node for the VIZ World platform, and its relationship to the broader blockchain ecosystem. Document the core value proposition, target audience (node operators, application developers, wallet developers), and key differentiators from other blockchain implementations. Include both conceptual overviews for beginners new to blockchain technology and technical highlights for experienced developers. Use terminology consistent with the VIZ codebase. Provide practical examples demonstrating common use cases such as running a full node, developing applications, and operating witness nodes. Document the project's position in the Graphene blockchain family and its unique features like Fair-DPOS consensus and social network integration.","progress_status":"completed","dependent_files":"README.md,programs/vizd/main.cpp,libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:31:56+04:00","raw_data":"WikiEncrypted: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"},{"id":"5d0929ac-019d-4924-9f9a-e6cf337e333c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"System Overview","description":"system-overview","prompt":"Create comprehensive content for the VIZ CPP Node system overview section. Explain the overall architecture showing how the main vizd process orchestrates all components including the plugin system, core libraries, and external dependencies. Document the modular design that allows for flexible feature addition and removal through plugins. Describe the relationship between the application framework (appbase), the blockchain core (chain library), protocol definitions (protocol library), networking (network library), and wallet functionality (wallet library). Include system boundaries showing how the node interacts with peers, handles API requests, and manages persistent state. Provide high-level component diagrams illustrating the data flow from JSON-RPC requests through plugins to database operations, and explain the observer pattern used for event-driven architecture. Address the separation of concerns between different library layers and how they work together to form a complete blockchain node.","parent_id":"61cc85da-b705-41e4-9860-17177048c2ee","progress_status":"completed","dependent_files":"programs/vizd/main.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:39:03+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"9c29a057-ce87-4636-9143-abbbe00af3e4","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Build System","description":"build-system","prompt":"Create comprehensive build system documentation for VIZ CPP Node. Document the CMake-based build configuration including cross-platform compilation, dependency management, and build targets. Explain the build helper tools including configure_build.py, cat_parts.py, and newplugin.py. Cover Docker-based development and production builds with detailed instructions for different environments. Document build options, compiler flags, and optimization settings. Include practical examples of common build scenarios such as development builds, release builds, and cross-compilation. Address troubleshooting common build issues, dependency conflicts, and platform-specific compilation problems. Explain the relationship between build configuration and runtime performance, making it accessible to developers while providing sufficient technical depth for advanced build customization.","parent_id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","progress_status":"completed","dependent_files":"install-deps-linux.sh,build-linux.sh,build-mac.sh,build-mingw.bat,build-msvc.bat,CMakeLists.txt,programs/build_helpers/,share/vizd/docker/,.github/workflows/","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-04-21T16:26:53+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZMBZUFWbW0GPH6p6kH7P+fIDAh5BYRHYVp3NjvB2UhTxWRdpz9dCis54SvV5og2z4ceJ8bEKJOm6HlIG3SGdiRDricr9W1RU/DoxApOa+Br5wzTkh/fiOhogtdx6uTt+w3VnxpIH7ni3nrT6kPGlYogwT2AYUb10/RMWccTP1CWb3F+Pqr+aYKeWEQhOwBgKBS/kfW5QwI59l2vGhPI0iT0rsXHzKdr6QlLqbcQWWtEvBLwQQsHlq15mo8eIn8gW3gt7yoi+TzbTbZxtwiBlrkgayNEgrZQKo4OlA6WULiLeNT5SX/+vEPXiOUGXxbLUGZSwgkZn0zB5uG04J1eKSUS4nNWDjyhUPU8VYAOsvM2JKDhIgOWlg84MLjCRjaxX3++a2vLGCGcZ9jwfTkGOjxSXONGiiRnhb+g4hRt/lGAnMFnvLjLDe08hiBiio4CBHXHZKFg8n2xEyJbxOXxBGz58yGCt5rzbfUwLjwkHAFwZ30ty+v0JVfuALvEQC+F2MfYDWvfYvrIrEjV1v76QrC6Y0DTSGl1I39MDj0tWC/Op7x0StkrBq/E7v2ILcqPbvy08odb8WxsqO+eZaq9Yf+WIyWRf43X5fqTvpptAqzoDaa7C3AK3UK5t2z+foa/3RbAc9OmafzscjlR2phbKCqEUuFTRUnUsYmJLp+WhOgfTlHOjrqX5GfE8MK8PfbsfwEAk/ka1SbwkVzCAMENFdux6RX+JGCq46EFM+bfJdry8P9zdPVGqcGTk5PQ6VfNwMJv4wmgWHYiSvu9FjgpDklNgi/4pUTDT/HlJSOxnI613DC9ngQJJBDd2NnWBF+BsPYYEA7q/1V6I3eDr0cVvb5iEdjabPp0VFksWszy1A1DIXgDmN9ul8q6YXnkN5RzXsdJLcXXI445fOhaRSPrlA9Q1SZbAXMdFAMJEeWHOTU/bB8VbfC1ReNwti35uT4As+EYdT/JDyqd9BLm2A6S68q55nf39PGbasa8AQnLxmBY8owVC067h0GxWHQjvA1TbbFjXog/E0OfDQCWFk3gMSKrlTRcauE7rjgKVF2ObMndn3C0KuUOdVG+PwERpO6rkPBJWWqJVHdAUxW/HiTC3SPNQ+HV8zoIWdRu4W5pXC1r3LQx8XMojCrSMUtSobirlXMdIi4Tbf2qoeVbYnR0enZFT4sDR40BBz1bGLnNlTghRHK9AAoW/QKQzLUZlT3630KdZZ2IlD+RLLrv9+WTd+ARHKjjyWdm9hX1OVCm8tzSRyAboHaCCXNsK+lhf+uKYCKnV2UqKEGKbMu8FwVvKKrC6dJ/boyyh8qWXPPqEaJkUA1QXMwnJl4Q1YGkvYWq0TwwlrVCn/scQ9Hsn3ynfm9d63Y5Dy9zvBFVNPMwymX+5Wlu7DJi0Lgeaixw8wi6qVjclx0N6t+XSKFSSNmiC0tmCr4Pn7DMfNZl3oQU/VL0LGCp4VhsU8+mTIb0h1d23ymfsxp4gFsQXMAw0BoqmmSegZDfP2C10I+P6XNUh5PSrgbDBDtWwYJBlFpuT9/cR7CcHR0CCkLW4fG9sEMxsmFPJpxuoiWPj5jtLDS3jRbkwAq0PZQpzJiCM2njPvU0nIfrRF/WgQ9sTHfFzVep+LI4oQ4cpxKAdALMfTOeL+SR2ezX09R5unBUyt3xmNGRpHL5VuQZqC0O+1Fdag+2tk0ENQY4rcuy/ddXHhX9DAxGTQ0vlHeDmQPEeI5/WzKTS0fgd93NSOqPx4+eh1nJPfLG1NSaGNEAA0OvRN7IMBJui64xUi/G8GVwXTQf3ZPcwA7RCDQZMFNWKxwqR224fOPI0A1Q0XIdDtM4E20uTWsXcd9yLYUj6pfOirJhwNPysogeqJEUHrBuUVPfWB/Bmp0GFob4jGjl2aeuHqRH3cGIhA+qy9xvN+R5ZVpxc6YmSCD2MUsnQSY8EIeKSbsB4HvawBdv5mDIZVPCDRqfVHIdBezz82lH4kHsnQFMk118p5U0SGJ5rdb0ZaEjwg5JNcXI+XIMUEmIqMJ+aY4Og5F1cG7ychJjZCLVaVWu1sqNFDi5/HhgJSNLmcJz7svTA7fB8kFPrUU9dpykpPuMhGPEfm3Q1Ll52fOKi3e3wHxjumVUXZFKkDP4K58nhDmoClArEzZa8UqC2iZQqGfqaalh4Mk0l+85QTJL9Izu2MLl3mv47wJj6Om+QTmtno0Ru5A4tkAJow/Nw+Z/jVE/6HrLnLcD2k7UFt1Wm1+QckEkk5Q==","layer_level":1},{"id":"69a80de1-f730-485d-a13f-c4efe84c9103","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Node Configuration","description":"node-configuration","prompt":"Create comprehensive node configuration documentation for VIZ CPP Node. Document the complete configuration file structure including all available parameters, their purposes, default values, and acceptable ranges. Explain different node types (full node, witness node, low-memory node, testnet node) and their specific configuration requirements. Cover essential settings such as database location, plugin activation, network parameters, and performance tuning options. Document authentication settings, API access controls, and security configurations. Include practical examples of common configuration scenarios for different deployment environments. Address parameter validation, configuration file syntax, and troubleshooting invalid configurations. Provide guidance on configuration file organization, backup strategies, and version management.","parent_id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_testnet.ini,share/vizd/config/config_witness.ini,share/vizd/config/config_mongo.ini,share/vizd/config/config_debug.ini","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-03-03T07:40:51+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"25110dbd-3911-48e1-b870-29607c837581","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Node Deployment","description":"node-deployment","prompt":"Create comprehensive node deployment documentation for VIZ CPP Node. Document production deployment strategies including hardware requirements, system prerequisites, and installation procedures. Cover different node types including full nodes, witness nodes, and seed nodes with their specific configuration requirements and operational procedures. Explain the node startup process, configuration file management, and service integration. Include step-by-step installation guides for different operating systems, dependency management, and build optimization. Document performance tuning parameters, resource allocation recommendations, and capacity planning. Address security hardening procedures, firewall configuration, and access control setup. Provide troubleshooting guidance for common deployment issues, startup failures, and configuration errors.","parent_id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/vizd.sh,programs/vizd/main.cpp,documentation/building.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:40:48+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"49484629-248e-40b5-b6b4-1664eab348dc","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Plugin Lifecycle and Registration","description":"plugin-lifecycle-registration","prompt":"Create comprehensive content for plugin lifecycle and registration mechanisms. Document the complete plugin lifecycle from initialization to shutdown, including the plugin_initialize, plugin_startup, and plugin_shutdown phases. Explain how plugins register themselves with the appbase framework and the role of APPBASE_PLUGIN_REQUIRES macro in dependency management. Detail the plugin registration process in main.cpp and how the application framework manages plugin loading order. Include concrete examples of plugin initialization sequences and dependency resolution. Document the plugin naming conventions, static name() method implementation, and how plugins declare their requirements. Address plugin startup timing, error handling during initialization, and graceful shutdown procedures. Provide practical examples of plugin registration patterns and common pitfalls to avoid.","parent_id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,plugins/snapshot/plugin.cpp,programs/vizd/main.cpp,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-04-20T10:26:06+04:00","raw_data":"WikiEncrypted:FgT6N5UmoqQ/n0GhU4kWL0J+Fybs3wSrBZ8i488xBvorI6lbBGjTYhS7bWXZzNetCm3S8JjcFgc9memzvSTO1YQPmT49Uldgjtl2WhFXjcF3WJX4hC0AP6UDYCYSCpEQRv9FPzViWgqq1DAOKLH+wBLA4uPKXHhu9yy+0mxa4aF6S4miAF3erjorTWHLA6eZthaZDF/KtxoS72PiMdX7my+r/UgxX2mhhzK4HFwOQsfLffXQD0QEh+3jSSXo7zksFg4c4HtLPHVniAghLUc4FaiLk4QFZXlsjRxPv9BGuHwpHdYEuf1paaNdIBxZnU6TwCa2zP+eoetFX/hv9cLPE3l34RJBTe3wc1a7XFlDFibG7B0J+cLTdLAoBbZhRWjZtE1jZ38MG19LiU8RC+/BMnG3Kez75HzaUyTdmrrQqVdzv7kWmLDr2ThjIUaJ8DQkZy04RHRESRIBA1lgvJHZvMT8NcvJs61mGdbbjPgm//7a9yxi7My3yX1iwGRqn3a/Lqro9m0YGAhxPL3igGWL4/yIH8gO/GppVOau8yklmHGVQu9sgROoFomlNcZjIUhjPnw/uM0DWMPEnpH8Oc+fqNXXVp8wpQDodiD65535YGFCx/7KABM6loSnvsPbRWYb9pV0KYB0b14G8jaRpOJbgJCApsYhcqTu5sydWErz6v3gUjTszz6cmK/3bvjy0SMoAl7MNDMYebUs8cZiR+8GzHYcHPs9ryxF5ofTQio5BxnxbKH1X7JB00SJVWogJHRL1KkShj5Asor6n/UugH/W+tclRJ/mK9WdtxaV1ifY61reOTJUCmD/eHgvDixPIrC6Z791SNiFzhWLqSJBwOIDrud9LLoSUYWRST13iunjJcEYVzRGkVxR2OU6rsDDFeb+ECIRi4WVM5Kte43i303/Po3fmPSmSdts5p3TU75MteEn71R5ONoH1vNowPjsyuyqGtNssow9U0prKW0nE5FZbXXi3IXUkFWtWroI0kR2htD6Ef70I+bG1C8j+UlcvM9Poffck/PbEruGH+aavXpaxMRcayIT6SGBEy4u+Iu6nughmmP9wKpSzEpStW6ZqgNOnYuOBqJihAHjutfprPUcZjdoifyNNnKRNxBO8EPMBsrIPEysvB7ubU5r0Gb29skV8Wb9LVqm5nGLBC24s8G5bmDfHCqyVxbx+b8AJOVVhAu8dKQK2Pt92R+PXA+VoTQEc0oaxgvsNPJjBx0W/dItwgUB+nItoqSytXeiucfQhINaKD6Ws/KvGKk3mRaS8i6KOJB0V0RoWpwWP0ZjUCGYZXr1i65I9ni82/QtacyhPKeR/dV508moShmcw2S3eD8BqmGKSnPAF7tH8RzIPcvuOFYLH9e7FNcoKV2NhKeNUgZdvVwTcf1NTZTx2ri19AUCa4vIawJUyhQ3/r7UxLrvqBxK8daQ+thKHrXe1gN1K0XAMQoNWSPy+srNGqhpD427EDMl03T99zDRZ8LbeufN2/KsYohFnR/rMKAsI/E1L0YR/5ZNtEKxqNbr68ADWZkE2Sup6GtbMqDmmgYV5G6HXTQsV5ZXSRJnextrT5JNJEoLW+HfSOESLc4syDu5fdoTXi7i772CuEzigL1YKaV1TzR4fpoHzc/CZh6rVObeBEVxqkaLniq228ZuM2e6omqfcHId8BjTE7hi5cBczbOJbVaUEErzMdIvr0EfHByOxwctdQ7JGbMQnxGnYwv2IqQgD1roNER2MFVMmabYAxqqlVGJvH4bRS4uAIK9R6j9O15/bsjfnsWIutsiUJq7WtMZ","layer_level":2},{"id":"41af7577-4b84-4bdb-832b-9539190e7ea9","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Hardfork Management","description":"hardfork-management","prompt":"Create comprehensive hardfork management documentation for VIZ CPP Node. Document the hardfork system architecture including version management, scheduled upgrades, and backward compatibility handling. Explain the hardfork directory structure and how hardfork files are processed during node startup. Detail the migration procedures for upgrading from older versions, including data schema changes and state transitions. Cover the hardfork evaluation system and how different operation types are handled across hardfork boundaries. Document the rollback mechanisms and recovery procedures for failed upgrades. Include practical examples of implementing custom hardfork logic, adding new operation types, and modifying existing behavior. Address common hardfork scenarios such as protocol changes, bug fixes, and feature additions. Provide troubleshooting guidance for hardfork-related issues and validation procedures for ensuring successful upgrades.","parent_id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","progress_status":"completed","dependent_files":"libraries/chain/hardfork.d/0-preamble.hf,libraries/chain/database.cpp,libraries/chain/hardfork.d/12.hf,libraries/protocol/include/graphene/protocol/config.hpp,libraries/chain/hardfork.d/,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-04-20T11:24:22+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"289967d5-f89a-42cd-b660-b89842524e73","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Transaction Processing Pipeline","description":"transaction-processing","prompt":"Create comprehensive documentation for the transaction processing pipeline in the VIZ node. Explain the complete flow from transaction reception through validation, operation processing, authority verification, and state application. Document the transaction validation stages including syntax checking, signature verification, and operation validation. Detail the evaluator registry mechanism and how different operation types are processed through their respective evaluators. Include the transaction object lifecycle, from creation to final application. Explain error handling throughout the pipeline and rollback mechanisms. Document performance optimizations like batch processing and caching strategies used during transaction validation.","parent_id":"971f0bb4-1d2d-4258-92c8-080f826ba913","progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/protocol/transaction.cpp,libraries/chain/transaction_object.cpp,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T07:53:30+04:00","raw_data":"WikiEncrypted:pze/wTPA8hT9dADtWGlHVecGIju168riPHUw4TY8/AOhja4aeOzUlmfgdY/KTiokGkE0pwevgTXyU4//H92NNxIZ90VqY2mbD0yvEYoazibaKq9O1InwoMVUng4EkSsQB9oHT43atze2e4KWPpApnOpuXM/kNSqRnBSucHXjsMd+Tjj5PradoQvpJLU8cQA/Z7rNIJC0cpQOT83jnvDj0V6NqUee6Tv82FRi8ClWzP6EZWLJOwLqfzlzlavNBvEzOVrawfC21Hgjv0XI+S8iljUPDEK+/k4kPqQwBtNAZVNvSxdOMdQQd4H8dHYj42tsWQ4M2CHxt/jWDy4RZ7gusItaB76xjlAkrZESkdwZBkd//EMqxuKfE/A4/LQdGHNOTm+uaj6m8t76OHM9h4VR9V4eueF6t3bMM8jowIFMUsjHBlU+dkSn/NSR6LigMB4jIbNt61XMmwk1mFvwxws6PxL8XqLxS6WdTzKfDE4/IBBD7TZqimc2cA4z2+g/OZ39ZEQlIpiv8/TzTdAWlsxWrctDiJB94u/AwbbOehhEdFH2nS66e1wKUfknITsWMgsuyzC0CfWRd/fwrEG58bYEi74d+wo1sJlOuZEBaSfMiOosE7wvOH3oQ8Y2UgwJ0vjzgZUiE9G0ScjOOZWniMF0bqPEe06ztnJIGeefrHJOWjdIfN1dkS9ufS455XmgRlNSE/NqG4hDmxF9R9NWjkexlSw2BcqQfD6budkT9gXrT+DmvhvTAZNbhg3rbqVluS4bL3ruC2r+ajzWHoYzImenOWqpDXtY3PDdWzlF25dvXKPOiFCgnpIhx4/aEBmvfoFugNyi2rgkZ/GxUvgLFwYxUWsrXzOW3ghrF82KYZiOzclpGc9/z4O3aOx2rsywhd3+bwSLqnWiTUPCcJaACADsGSIk2O+4SSb/+dGgJEi0+9f+XVUkdntAmb/GY0r1Pj9Aggwk6gllw1jhIAFrhSeeN9YQkHHngVWQDTIqpEZrLiK8l9KRp0xOidl2MSvQPSjBk4h2qqynktmU6u6INK0QjvFuStt1EBvl9TX3ObV9TqdxQyTeD4wyygPZWQEip1CHg04iAihm5uA9siBylj/kLKn9MnuWugqJDyQmvMVc7PXW2PjXtPzhW7/Jb/SHMJoTD4Gr9dGOx46lLwizMVmH+Wdgu7ThE5TRiLm3zbM6Vva42JyyhlKovJOwOzbdE7oL4PEURcpIb7CwrNkCvuOclVRFhgGE6YTkuBTdHLlFpLoInX5qE2OW9+ydHnq5m3kxjp0jqHR1FEndp/SOAgjK8j5GUBfktjso1ePTCXqGifq82fcPCltrzG7k2QOtOSECTUa+pOeVnhutaJ3CR//hRALu3mrquQnFk0tLrX117kwCT9zFNRljPROygJRvN4BCTzDJgnqakMlqteAIkiRD3Fb0oHccw3FqJPY5lOQvvyGOgQeuBimDKH34MRTRl3pkYQbHOqjUqUi035eAfFu0Rvt/1KkKcP/6anglXytX8/wCssuFHVX8WLr/XarAK8wkI0F8fuBcwaifM6C4xWQNCD3dZMCNDxfik3SCqkRtAzmd1xC3HA1SQ5I/qlbrtzwC","layer_level":2},{"id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Chain Library","description":"chain-library","prompt":"Create comprehensive content for the Chain Library, which serves as the core blockchain state management system. Document the database.hpp/cpp implementation that handles blockchain state persistence, block validation, and fork resolution. Explain the chain_objects.hpp and chain_object_types.hpp that define the complete blockchain data model including account objects, transaction objects, witness objects, and committee objects. Detail the fork_database.hpp implementation for handling blockchain forks and maintaining consensus. Cover the block_log.hpp functionality for efficient block storage and retrieval. Include the database API methods for querying blockchain state, managing object lifecycles, and handling state transitions. Document the evaluator system for operation processing and the observer pattern implementation for event-driven architecture. Provide examples of common database operations, state queries, and performance optimization techniques.","parent_id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/database.cpp,libraries/chain/include/graphene/chain/chain_objects.hpp,libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/include/graphene/chain/fork_database.hpp,libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/include/graphene/chain/transaction_object.hpp,libraries/chain/include/graphene/chain/account_object.hpp,libraries/chain/include/graphene/chain/witness_objects.hpp,libraries/chain/include/graphene/chain/committee_objects.hpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-04-23T11:18:36.4596728+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"CMake Configuration","description":"cmake-configuration","prompt":"Create comprehensive CMake configuration documentation for VIZ CPP Node. Document the primary CMakeLists.txt structure including project setup, compiler requirements (GCC 4.8+, Clang 3.3+), and platform-specific configurations for Windows, macOS, and Linux. Explain build options including BUILD_TESTNET, LOW_MEMORY_NODE, CHAINBASE_CHECK_LOCKING, and ENABLE_MONGO_PLUGIN with their effects on compilation flags and feature availability. Detail the Boost library configuration with required components and static/dynamic linking options. Document compiler flags for different platforms, optimization settings, and debug/release configurations. Include practical examples of common CMake invocations for development, testing, and production builds. Address troubleshooting build configuration issues, dependency resolution problems, and platform-specific compilation challenges.","parent_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py,programs/build_helpers/CMakeLists.txt","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-03-03T07:53:46+04:00","raw_data":"WikiEncrypted:g3OHqDqjdBWAhmAZ37hW4JJS2u8qzwOVBZXve9aVGP6gazow1Wn8Wd0+UNTa//LywYD6BGd6YGJkamwOkpXAoi0OlYTJa1FWkUUdxN1EH33gTvgfxPrMV7qyTVAROvgnOaS+tl2HssNZt7914i9BaqorW50sTZye5RfdS89LYex/7mydM08IxLGVg4gJKjYPQuSdcpIS1hg+PsDlN9X/Ug8WYWzJ+yxiG9mx1LcaQ+EI6rrhmGEdPeGU6Qw9fk7ruPSqXVu9l9r4mKjSvUhBVKVkT1jFCBng1YqT9JGF0Ab6sCFyIsYqqszQOLVi+oQb1sqQjqb3zoWeB3SFa1Lms0I815Os4GqTE5eta8dnR9ObaTP2AARVEVUdZ6XTwAhUmyuVXzTyZN1URmGpLwWgMrDc7yhhGMV7769Lp1+4GlGgsYH3BI4ib6bfIlNusoofQp42/eD+SyU89DesRdReUag/QKOjfpsM4gI5MmmTVf7/VR5anxsQqwRyee+KZc9tNkW8u1ACyQ4rBstC3cBbHCmXMO3IBU0SyeskR3omlFced0DsX1iB9QuorjlKPKOnDPGIduPawhEA9p2q/FGQlRvsy69nI4aoEAtK8a1J2btjSCNTptMk8up5/UXig8N3WCwoOHQWylIeW1FS+voCO++HTscJGW8SiGRJ4Hy4okzLnJYhSbr2PCfyU0Ky/55gZOzwUC0tUzLaYJFPT6DhdVrucg/2QGwEW3Qr9xTXZWw3dbwyyJruOZAz9myg8yALLUnLa2oPa6JVEa8rMEXPYxLwUtxTvUz/9bta1Bk+8fV+yOKErm3S3c1Iy4rvdFrAw7EnK51nRMEgByN+6Mhz2At31gy/QH6NlKr9W84zJhxL89GRL+fFeY+cqb+D67sAZwA5Os1+hmQnNA0+Br0N5RCQFesEkPBNwX/P+dCzjBFVVFQJisw5esrClIk6Tyd6ZKfkBanNs/6jz0xhs4J4cSZEuVF1pZ5EuixRGZW9lG1ggwrToUFbxK/vlC48sFwKgMqKHoGLc3hYxJnNlOBzRmeUI0NkdGyBuynWi0YwdOhD+09MwmNRaykuqjMww/WUUvF8ZBftLHxEbkRWve/phBWR3zEpEWL7hxR0ofgKgm3y1glXck1Z4D6MFhfdGwNSXyxqBm/AAmQKEXGL2XLWC6HndhK60NNddB6HnvXjUpoJGUSL27pegS/wjGD2vIA5HXH68AzH+yt9UEj1PKzxWR1Zz9HaStw5nObACNkxOW4w/+j74auyHjuFC3/Hivjjf4vmpEAeRih0rkX3wAoDqZyG7g52qWlnNwPy/KoX2pJd87L865JOVDOXYigrgrSgb2t/CZVhSYYvk5bLD5RxJIbjyewxJ8dsPJ3k9edjffT6KwJ6N53zENqv1r6PPWxM2OVhkwbnKaIw9jBL+sA41LyFEcDjG8lzKt2jHbZvSlGkFf/GMK8ULEEMcLmhsz9337fYZohcNiYN9XyRV6WIL4steB3eN0xB7x25P+N+SzYXoVP4WJdaVruEIzfzwoN0yC4v9dhAWgq4exjh9o3QbKTxrsDjyG0PjP4gBYGypP4906w87pWPHheId+lDzjmGW09YAmm6Hg6SB285rTwUs1mbeWfEq3Xg4wqmBWF8gQp/ux8in34C2cYdn8ytE52DOq5OZbPQ4L9+/cMeoXuJZUBBxogig+Q8Qa3pwTCeedNxpddMOO6/qrfMbIaCm7xlKAkvQs31RM3WucVcQeDtL/0CpS/ECiSuk5lvuqy7Ua3KtF22KFv4BRoxy3FZZTUSw76br3o0DmfPWrDJYT1VoRMKMjztGzsy9kF7S5xcml4w3JpuWP559CFPYHvxznYSLIm6QhlLbIUKsz9WGweCxOnj09bqNE+GvddfuRisAa4=","layer_level":2},{"id":"74938232-897d-4eee-8d0c-5646023bb077","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Unit Testing Infrastructure","description":"unit-testing-infrastructure","prompt":"Create comprehensive unit testing infrastructure documentation for VIZ CPP Node. Document the Boost.Test framework setup and configuration used throughout the testing suite. Explain the test categories including basic_tests for fundamental functionality, block_tests for blockchain operations, live_tests for historical data validation, operation_tests for individual operation validation, operation_time_tests for time-dependent operations, and serialization_tests for data encoding/decoding. Cover test execution commands using make chain_test and the generated chain_test executable. Document runtime configuration options including log_level settings (all, success, test_suite, message, warning, error, cpp_exception, system_error, fatal_error, nothing), report_level controls (no, confirm, short, detailed), and run_test filters for selective test execution. Include practical examples of running specific test suites, interpreting test results, and adding new test cases. Address test data management, mock object usage, and test environment isolation.","parent_id":"8958bcd4-acad-47ea-9a20-16c85e32c5ef","progress_status":"completed","dependent_files":"documentation/testing.md,programs/util/schema_test.cpp,programs/util/test_block_log.cpp","gmt_create":"2026-03-03T07:29:31+04:00","gmt_modified":"2026-03-03T07:54:54+04:00","raw_data":"WikiEncrypted:oQ7VNoYBl3ApU4O5/TGa/Y321aSX0DMdTAcPI8Ktg2DhOW6X/1bYLO5CQI7N+LKv2z80e4CW1enmyZ5E0nrAiHIV1VAY3fgrFid9I5hFrYrEc1O4+WRyg6s+pKxE+7jqXvxcSRQ3b/jb5TeUcDAtvZ0e02HNcQyRuOwhh5WMF3spUXjDxLRDkEsyhJJRWEDKroGyUO8VgLAJMEv2H3S9QN/IieXOh0e6hl0id3RltC/L51XQ5WWN/NjtFTIwYI9JVmChiuhUowzVjSKbw2XBlWMI+jWG2cfQ7BJr3HUUH9tf51PogQKJ6t9P4K7pqcHUOeSfjmhiOE3S9ljeEIUIbXXVhqeK8emjbvPufHIxSzTbsLliJbehRlEM+jJKk4MVv+eSqdc329AgBMWsHNpJIVBvD4X6vK5uEUIsWlHBdUaEKNkvUYWcmDS6b10alQEkjoHQcRuKJdDjJQ0WM0AZAjlgNIqSL6BJ1RjS9nibc1lbB8nuJUISDO23egcPqhby6a3p91q3wR89LulzwCDcZDFt44cWnlHMcJAL4HG8z1F7IUILxzHqAy30XPJYcfU6hHyMXa3tH9j4VDC3NnPf1V3ULgj/idDZ6Nbi7hDTibbb//5FNUj6tfgVKUPRwpV8nXFU+TM/Q24KZYXJVXifIQhoC3HSVjQp6XCUI7VDd5jorqnTX/c59RochSQbbFH5A7paVTlXE3QbS+8tlgiyJLRT5PaWDAO5JTUkBpxVY5J1mKqvRtaHO8TGtD1tqQXfYQdSLfluAKzH2RnnTclnxsc5hY6JjYGUqriED4tlfi+dKy8fWk+2aoEXQ/FkY8G8wj19luU7yYabScahybNkLlnx/Iwg+RERNpzY0jWIWsohtH/JQNnaDzhCQI0nNGCjvYMC6IzzOLwvmU10NlC1nlQYNoUNGQ33ZzSnDHh+AIIDtjm3kFSpdBTOTmHqx00dXlH0ZGGb6X4da1YT2+pmJWAu9v+eNSwOqknhKY4lZ7U6qUjMpm6IJaFDgbvVUmh6Rx3lOHDlNgX0txNWsSyoh8li5dmZ+qAHLAC0MRtz/xXPoU/TET3kZcl/XJYrG6U/IC0jPFwwPOGHcpS1b5Ddu+d7DaRkmdferkFarFMxJMRuRfJyTI/C9Ny3DzeiPV63FTqTPm5OksWEzkpue4Ak93BbPDzQQepjKz6lu2ESdmVRSyYgc2X1/RZF2o5erUZ3H0b3C+otGltKz5Yl/fYO0LicQ3R22VLNdkAi9DfgPfS4tfbWJaKAvX6GeGM0RQEynnEjN3QwwWc3vUofMQQnAZmXlQiwHuD9q7ozaRo/5IqZhPmvSw4KciUiC0phf0Z39RZ1dsna80ZLIbTC5dgLY6YzLq386K4GikF2VYJPbGWeCMID7O4sP5E4nRI9rkSuhXxGO+JmgrxYMP6bPP8n89B23Mk3+lnqO8F+DJ+1VF6y6wXRu7CrQlmTnX2Q4aongEnieRT0gOoEkjAFma4l4WeSEzzZm1ZfyBSjmi8po6QZt2TkJy0QBA/yR8/+JyeKwjpExS1GD6GBZPK0MCEYgyMuPfGBrHklM8Y3i0BFrMck+o3/5DlXfPR8SWwBw4DTlZBg5QGLpaFx0tf15ncXp5u/BBFqWkiP1aSYdz0IJv+M7pA9bXIzO80o/bFg56sDBaMtO11hUb1RhlsC44787iUwSkJWtX9wjPGyGlsyeGWQyJck7TtjLijfMmNSVutLvSAaoNX9lDshhuWmmhp83k8gIdfX5vzlJuPHUXrpIIBEq+KwRUzA4ZOea5rO3a0kpDenCKtQxeJxRHVb9w2A+gR6KCtnnWdw1HeSYyGZ+zKCl5Qhdac+qt8+pY3QxJVgDQY/JBuoIDVY9qU7ZvlZ/n7ca/Gg/X1pxZnZqWQpzh2dGf3RvpjmQGUnukFzSRooBuIMRA7VSBS8e8TqxjkuUxKHWVGr+EHR+JFjzJuttjCM6FuaBT0UvgmK3ED8zbDxjVgfu35SVSxlkScg2pr3jElU8zgtvdRjKpOAokqWwMO4ylSjnVhp8tqwa/54U+46kAhCg9MMrmttWHJRD2Ggn28bYB9yLjoi+soR6XN0fsQC7z54/ZmX4TMyewWgCLvbszf2Mlt0EeDvRX7kJP1wHnZTFQ9E4FTtSqlACo2QCU+oPgOoG5PwLtig5A31l2t8iSAr4F5MThDnapR7miC0UmifVivBC4zAIUG2lIZEzeU=","layer_level":2},{"id":"aac23226-14dc-441b-a39d-a5187c89b12a","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Debug Node Plugin","description":"debug-node-plugin","prompt":"Create comprehensive documentation for the debug node plugin functionality. Document the plugin's purpose as a development and debugging tool for blockchain state manipulation. Explain the available debug APIs including debug_push_blocks, debug_push_json_blocks, debug_generate_blocks, debug_generate_blocks_until, debug_pop_block, debug_get_witness_schedule, debug_set_hardfork, and debug_has_hardfork. Detail the block generation capabilities for creating test scenarios and the block pushing functionality for importing existing blockchain data. Document the witness schedule inspection features and hardfork management utilities. Include practical examples of common debugging workflows such as creating test environments, reproducing edge cases, and validating blockchain state changes. Explain the plugin's integration with the chain plugin and JSON-RPC framework. Address security considerations and proper usage in development vs production environments.","parent_id":"ff55fa31-5b21-4383-98fb-59c794986fc5","progress_status":"completed","dependent_files":"plugins/debug_node/include/graphene/plugins/debug_node/plugin.hpp,plugins/debug_node/plugin.cpp,plugins/debug_node/include/graphene/plugins/debug_node/api_helper.hpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T07:55:19+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"23550eb4-0f4b-4afb-82e8-e19c1ff572ee","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Installation and Setup","description":"installation-setup","prompt":"Create comprehensive installation and setup documentation for VIZ CPP Node. Document system requirements including hardware specifications, operating system compatibility, and dependency prerequisites. Provide step-by-step installation procedures for different platforms (Linux, Windows, macOS) with detailed build instructions using CMake. Cover dependency management including Boost, OpenSSL, and other required libraries. Document cross-compilation procedures and platform-specific considerations. Include Docker containerization setup with pre-built images for production and development environments. Address common installation issues, build errors, and troubleshooting steps. Provide verification procedures to confirm successful installation and basic functionality testing.","parent_id":"25110dbd-3911-48e1-b870-29607c837581","progress_status":"completed","dependent_files":"documentation/building.md,CMakeLists.txt,share/vizd/config/config.ini,share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T07:56:01+04:00","raw_data":"WikiEncrypted:6nDTd1wU0hYJuRoAJhne4b5ashHc1omfgy81/++xSBe2w9rUrWuXSbrEHiZ6Cy0q5An6XvzHHLEqEmHIyn2epq5KEULOgH2CqfXy5wyGH0EduXcfrSX56fWPXFubhJoHVQNhHkotTEhKINivrUKUNsPV6o/SCw0uS9y0psxcKPtjaDoh0Fsz18Pdv9IgWC70bflhQsm2jmkHFIc62gg8wOTFVxbF44Nq2KVMgUmZu8HHDVmcWYlGBJG4KP3DT1WhmlX7YVXdIyz/7tiSMjzEmTAQvZZnyO7dKtsVFg3ASsOiAFqYVsIAD2SdlPu/dd4xojgsZw4HhAKnTZn+evhBpNEpL8R9UK82ostEvM0NLTbmE0HKj4B4RySYX7KYg/1d2bpsvrnoJ/ZhVZ8+9AvHl2H5pBA9HcIqHHTTGWu/WnGJDaaSjUfCPXaKPFx4joabBkzYJin7GRLyH+5IZNHA6n3VowgfhsraSEw/MnNETir9SG5GGrWTylTeglHHrcie14oBS34syZT+fNopbAHIhb02nGx/6OCLZ93UO3EGJgnIPuGoFjBUQoQNuOYYjLOAGMP/s+sfVM3r/HZHBua59+e/1tldVB/S2mDsKp26kPb8mx7mr2k/G7ZiBT9K41KCmTJsTej2HHTu0Ht9v/g6hYB9YXKnes9JogX33PqeOULXpDei3Xh9WM8PlpHH+Z9tHuDr+Q6CI5yHVart8aTTkL8zqZFHU9Bm9Ann/Nir98TTITDtqGSvAC+73P10xOYmx6FHJlBkoD+dc7yYj+YQF5ObJ3UCsFNrDQUGXpUUsQiSJkmzKzNwLSHkn0VHNi2webLwLUngr9FCvC/l4GtYDDIR0T5p5nJaaog5uzhpZiGACLuZeGcg4/VOQOZ4USyuIqDviAtW1szf7Okr5nIG3LbRQ9SN1zIGrTkdLys3ywOkB2ZE4kiRq5+GYL5cWQJMeWBkMo3pSPrk6Yv/4zQs/h3E1T/C7t+woDjnKOt+Wntxx2CrHFr7dWF+bWjfBTmGxufuACM44zSCzhOiruhjAnz71o70QjkErs3ZDcBYfB+ilY35E4CtfUoS9G4sNESCs4tQ+qt1zPgWOKYXR//oskpoDuzS6dAEiASGk9w0r7hEKuNo/gDh/qkL7UV3HebH2KL6Ugt15CizV8jt1wVKKxi/n1rsQJy7Sj080qAZtdDosKTgGzOwW0GXxC9h92lY/2ev69kX4pfXel0X1+l2LkwkOUqf64q6OSnAmzKWC903+LQT0RnvWZKVioCDvIGH9hSjaBI9wTHVoocTVmhPLLSj76MSfVnvx/2d0AUEliHgZGNzY7KlEJxsQUEc0ZjkXwY7BQwVKrOL8boU+LyTxj8zbBoMmaEykSzX2qgSwLOd1gEsM+jXNh14gKTgmUmO81ca/j13pbb6UIn6KIaAZSQv4dht4V9WEdvUqG+o9w5HClkedaVicqnp2cdRABOBYzxqZvEaumXpOtEg2YhaXBtv44HwWWahfIlw4O5DbN8+kiJ8G8GWQbKikFzXi+5/jDhEgYeNLInwwXK5bZ1ZYQZlLrVVgHDj0SkGxKpw5Aw/vIuOLro4OvglrGOXmuo6IUXnA/5Sz3eCRnEcsSND5LWjDpt6LskiimzqDwvjDD1Pl6sd9EGaILAbu6DSNyaU/xba0wiM22V4Pu11P932NcUzo7155XM9ungXueuXGtu6w/Gf8m7nGscdJw5fqfk1uLML5/6MFsG3RjtSzTgpiPSPNaIjHy3OEC1yI41UqM2FYg33NLyBV0/cmiQxGsPPGKhSp2mJVRVT2+ncIwxcNw==","layer_level":2},{"id":"c4d28611-5059-40a7-aaa1-5d528cfc98f5","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Operations Definition","description":"operations-definition","prompt":"Develop detailed content for the Operations Definition section covering the comprehensive operation type system. Document the static_variant definition in operations.hpp that enumerates all blockchain operations including account operations (transfer, account_update, account_create), asset operations (vesting transfers, withdrawals), content operations (content operations, votes), governance operations (proposals, witnesses), and specialized operations (committee requests, invites, paid subscriptions). Explain the operation_wrapper structure and serialization mechanisms. Detail the relationship between different operation categories and their hierarchical organization. Include examples of operation creation, validation, and serialization. Document the deprecated operations and their replacements. Address operation ordering requirements and hardfork implications.","parent_id":"84b360c7-2115-43aa-89df-1205d4f6231d","progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/operations.hpp,libraries/protocol/operations.cpp,libraries/protocol/include/graphene/protocol/chain_operations.hpp,libraries/protocol/chain_operations.cpp,libraries/protocol/include/graphene/protocol/proposal_operations.hpp,libraries/protocol/proposal_operations.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:29:14+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"907f8692-5249-4ebe-a7bf-bcec7a632dad","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Database Management","description":"database-management","prompt":"Develop detailed content for the Database Management system that serves as the core state persistence layer for the VIZ blockchain. Document the database.hpp/cpp implementation including the database class constructor, destructor, and lifecycle management. Explain the open(), reindex(), and close() methods for database initialization and cleanup. Detail the validation steps enumeration (skip_nothing, skip_witness_signature, skip_transaction_signatures, etc.) and their use cases during block processing. Cover the database session management, memory allocation strategies, and shared memory configuration. Document the checkpoint system for fast synchronization and the block log integration. Include examples of database operations, state queries, and performance optimization techniques. Explain the relationship with chainbase database and the observer pattern implementation for event-driven state changes.","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/fork_database.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/include/graphene/chain/db_with.hpp,libraries/chain/include/graphene/chain/shared_db_merkle.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-23T09:42:13.8987183+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"e4c9debd-e4c1-487d-ac92-79cdf3462b04","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Node Management","description":"node-management","prompt":"Develop detailed content for the Node Management component that handles overall network node orchestration and peer coordination. Document the node.hpp class implementation including node lifecycle management, peer connection establishment, and network topology maintenance. Explain the node_delegate interface for blockchain integration, including block handling, transaction processing, and synchronization callbacks. Cover node configuration methods like load_configuration(), listen_to_p2p_network(), and connect_to_p2p_network(). Detail peer management functions including add_node(), connect_to_endpoint(), and get_connected_peers(). Document network broadcasting capabilities through broadcast() methods and inventory management. Include examples of node initialization, peer discovery workflows, and network synchronization processes. Address node state management, connection limits, and bandwidth throttling. Provide troubleshooting guidance for common node startup and connection issues.","parent_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","progress_status":"completed","dependent_files":"libraries/network/node.cpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00","raw_data":"WikiEncrypted:84sa6bLhPDu+UNjxUZw5rBAx9KYoUICf6oS5DojEq7h6OODVm92LmG6NSFskdLu4/BlwSqG4Jzo94ijeZaGGCOMnja8I3tGAEbT+3q+n8m/dw+d6coAvelXNpimAGqE+UgFSwNQ+QleFS2KnlnP0Ei+AyYS+W93RhzWk27zbV8GPjpKgme0so6woQQiGN1PmaTl8u03kRB5fRh9sxqVA8qa8YqnyO843mBnm8gceC1VG3ZkElSRJiah67i4rB8mwgmdDzWJDST7UlTgRtRQ6kxvZezrE60FHupzXUoNpmUzeCjYMp4HkB0VGqrOY7Q7zRwtBoyE2zfnXaZuAc8wCdI0TDc8rUfDnRTs2NEQ2+JDZfNlxp+Z5uhT2mCkfhIl0i8ciNT3yXwkxKft6tBOl1KVNCygqrecBFFjE2BprTsr8xv0rYl9g4nMfF8Q55xZxtZ0nrmobnFWDDLiF+5h6wM/rDMGbj5E/+UASJZFSPt4j/cQEKAjp5qI5Axm1BIDHQNDHicG76LbRl3iucTkM4QxCdPYuxcfR3SmzTeFQs2fnkQZKiwMAdWH9ef+B2FDRSverFsTbZg+sKOOw1MpmhghN9EtU6vwfWNi3TzrRj/VRfEnXqE50oX//jSWPsHota4t66ggpqucNRGurBl6aZfFkRXCSFyaYCRmH1sFMinKNS0aijN8tv6oPCYRS2atr0kIBzAX4Ru6MibCtvg80eKvDYujvZZr0bTH6Uh0fmuZwOX7YaDUX1KwBMuja4CmFymM7SGjnkJp/EI44GraxO1o0cuX/hnt5+jmnRqxjqQF5wJ8Tngw/Q3amWUMURWQhBFLGm5Af5QL4Hw5QDvbIJOl/gul82CDG6CC+TP4yW2TFhreAeUNMT8V+n8elOHPgLu7D1EtrLPjg1R4eU1pk1dIRJzlubWIspbm+ymQmlZzwV3AuDT3Eyu4iaY1qta/ZACGBg/DAHUgPDJIExAN5WVclSnIgChTAuOQoEQVMKRVb8oBis85sOEllEH2leXd6p4/vGKuhtX7F70sXWD/OrVT0KA5r/NX/+XUPqKH9WhVgt+kDGu/JcRKm/4MHupYjESCvRTu6orYpKaPYUC18zemoAkkHISq4eaQ4oDoCeyD3T3whl9FqTx4+RoYOrkMAStdijoz2OhY+PRgGaOgiO7MdjnDpj8zlYqbG8A9M/1Wal68lu5FLaOE8slWUY7e29fDGlQUDuUmkkx4FGt1XFM4ID7WgsmA3aNs2miYR/6ROruJVnMBP40Jp64j+HTyBlmE3zphn5KoQK0vPTcWzlXefUYsqxmCjwJ3xGytBa3Tf5p+pNj6gFMNTY/vP9d2W3IRG9Fanzo0hv+MAC4R5VLyipO0vFhsxx5veCg9bh8ZWZW5yobkatfzV/X+gS/CqtWBHf03gDsoxYbdfeLYXcrM4KvREqgVxShOXEBwCdo/g+ukZJkzzc1QYYqEn/Hptz4r8ByAPMzclKREd66MZDBbCj1goZ+J5MWyfy47ZXPJ10iT7neBSO8ggoQGAEs7RXp/SmzdmpYPRG3ScDN7RYIX/K1KenyTNlLuSXQYU4dvS4LmzX9hm2TAL8KScg6z4NSvtYSUR91oZ3EQFL+anrRDjR7TyasN4TdhENpsO2LuGTCeCFqGfDEsPfm06cB42ecQAwzAdVsOaHwhnpibENAAy/M8qD+tDmEiYAkqRDN8FLaIYjC8rRxUHQlx0uamaSK49tqLLd0OqNnpbG9HcJaqr1J1FjhffzOh5q0p4R1KY4ekSD3081e+XuggoOMzQfaJrMWcu+qIA3LFPGuBrC8J1ABpqqdvmYcsiO3d2aE1g1C1get3PYOByvGFsRCDu","layer_level":3},{"id":"b0c3043d-8903-4031-a3c4-05f5d11f328c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Core Build Options","description":"core-build-options","prompt":"Create detailed documentation for VIZ CPP Node core build options and flags. Document the primary build configuration options including BUILD_TESTNET (enables test network compilation with -DBUILD_TESTNET), LOW_MEMORY_NODE (optimizes for reduced memory usage with -DIS_LOW_MEM), CHAINBASE_CHECK_LOCKING (enables chainbase locking checks with -DCHAINBASE_CHECK_LOCKING), and ENABLE_MONGO_PLUGIN (compiles MongoDB integration with -DMONGODB_PLUGIN_BUILT). Explain how each option affects compilation flags, feature availability, and runtime behavior. Include practical examples of CMake invocations with different option combinations for development, testing, and production environments. Document the relationship between build options and resulting executables, shared libraries, and plugin availability.","parent_id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-03-03T08:11:41+04:00","raw_data":"WikiEncrypted:+hgVdflPLL0xmma3oFcNhzO50UdlcHF7zsXDx81IdubJW/ei3OO55+CdCQ8q5WiMdgjekSxvQIh/JW4dHdtvRsVOk97oJYxDnpMU2nARwm7MPVOE1fvGf21aemNsnNtFwaR6q/t3BG8xZS4vVWZKT5owJ77uYsNkUtyJqPayPXgZ6JPk8AgN3ErlK0xSf5sEg+aXImxZoamSb1RzUCLe/AJrMfwO/39F8fRnlooSObSAG9972AB8S3z8qkdT+/NvoP7Yu4c+O4xbkxSPRhVqqoDVzk2WqnvhZkuaibwIrH+emKKGGpww3D5gW5+moLgsLDC6m73VZEeZGSxbE7nms4iAyAJOciJRbc/48yTJ/q3q9oq0k/pV2FuB8A68A1zDWZAlutbh+29TzGfMBPNP1Wxrhno/VTrHMYsiQJOS6dZRxbbN0J/ByB5w5/JmntWDkKeEvOWRKrsw3CMHsKX66UataOYI1UWdk2eEDrSg4SRkNcr3T0prOUhOLk2WM73mmQYCcx/khTM2OtOAJoTBpshyseGs2nk+BdX6kCLmTglTkyiqV+OF0ycuk78gFPSyOQwkeOd6iPGQfzI3nr9VnuL8WYk7kBH9BCJcQTHkwRQjKZejrIH3O5WrLuzX+w5CTP/BrEW8dt29CEh/0s2L78fJo5pCvOsQslGF3j4tRYrDUGtDQ54GiDt0iYCnAIfzF27DbyQVNIkiMfPP9fmE0FoR6wYQKc7FT4NfQpMKTV1xjOzsPolWe2rzXbormwz9pfS0XN3kuarDHx1/UsspkBtInazzzduegUsyG5o1YBrMcnTKcmqphnb5eaQ3+QDWGjsouQfpiCUvowvf7Ajz9YMLtLvcPUK6fTnv47i5C0Ny5eNSnPexPKX+o2LEj1I46MTt2FZz9/UymAj0n5UlOpM297SrQ+WQoJBWKjh03W1x/aWrbpWhLOwmLQVUDz1lGMaKv68c9gNOWX3R8dtU+SuIfFQuMY1XgNpnzH+I1OsbcwOJNB1wtlirZ/XckeHB9fMocf8MICEkSMgPIS4PmRAfUJXh8Emr6GHkO/HIRdzEVykq2GTsMKcTIsnYzLwUsfmy1gH3nXTJRUvP3AdwxG5N4EG4ijcxXFKwenNLlvpzXvG/2uEgZjo728S+7Md1vhLZJ2dsepImJqn1TmEZv5WkEj3lbkemcfx37pZah1qkYgav2mrEVUBqbWdfZpYy6IwDPUCgE5TBzdESGu49HWgYaWW6oug4PTcbaul49Rbiv5LMbfwHEf4EKvuGqQiwjgcWsz+57SmE6omFem0XKE7PUiGMzl1vSMwIaUG3pfaRSMKE5UvrHPHaR1SrsVXt6OQ76yjj73HerLdyDRInKoUzQwkZ9jaHE1hft4Yste+Lej7O2OrUSKE4wzhhVBkwwh9AIUqntzEaaB9U4lFVk5uX6v6IJ9ssNwZMzl5j8bUVDfb+HDc2K26alme+A0EjEKlIL4ENYXCZk8zoRhhzibeDx1ZEZXPjSKdZz73dORKb78hvre4u88arxQuxwmwt","layer_level":3},{"id":"ead3ca09-d5e2-40f4-89b7-f3c2aef06cfb","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Production Dockerfile","description":"production-dockerfile","prompt":"Create detailed documentation for the production Dockerfile configuration used for VIZ CPP Node deployment. Explain the multi-stage build process, base image selection (phusion/baseimage:bionic-1.0.0), and build environment setup. Document the CMake configuration options including BUILD_SHARED_LIBRARIES, LOW_MEMORY_NODE, CHAINBASE_CHECK_LOCKING, and ENABLE_MONGO_PLUGIN settings. Cover the dependency installation process for Boost, OpenSSL, Python, and development tools. Explain the build optimization techniques including ccache usage and parallel compilation. Detail the runtime image construction, user creation, volume mounting configuration, and exposed ports (8090 for HTTP, 8091 for WebSocket, 2001 for P2P). Include practical examples of building and running the production container, volume management for persistent blockchain data, and network configuration for node connectivity.","parent_id":"7108377f-502b-47c6-be02-3765463aed1a","progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:13:22+04:00","raw_data":"WikiEncrypted:1PcQ+NupkgQiLQ506NXlam2NaTESDp42+Zw7VpfY+CzCiLAg7GShqb8JCcPdfBZaP7WIo1Mgj6cRsriY4RimiUKdLamglD6mtocdtihAp1RQvMgjoGAVK79Z0f2cu7KECfA2Z+Ievqh+9tvt69UamhE1qHeFeJsTu0aWWWpl5rcj2YSIR5H0RebtCzB36Sv/CERib288ap2vqUEZU89BGsYKIWlHMuGgzeFzUMYrV+wk9eG5jVZjG906/zYCaDWTbh/TekpxoiIf6HSW4xXhrMD7AZJWn5k0n6jctguU6jEHQP9nzYFUiTMQ2lMvD/jnXKsLpwJqAZR71nU87TaUO8FVZul2iQ+vQFFwzyNXGE4ddtidjCMxKR2Ww73haXvYbAKHAAAdbw0OXyAcdKL7K2fcga/3WAuxnWWVMGg+E5msVSmXsJcIZSV5C5r4Va9hWjxCi27IEGMvBsLBQXwRNsAn8aSlu/fa/jYxeM297Dx450DFq32jM4NPOOXjC5XJaOBlCvsZa5P7zSnR6NJi/X+7fWOw9yjkvU8Py5K3PMH2RW0KfPHB4nSgLXhw7SBcxT1sdiFVcF6VrY01bksI3y6ZFQeU2Mr1vAWTAnZvhbpann/UGYuYmo9u7R6+OoRu7tP/uEmnBKM159+qF/2olZ7ZKbq0jX9b/9HGNcCEWiPovpxyKkfyNvPpJwaiKsoQKs7Z7VJXgM3qZUJI591RB+ZcnmWCqM8nEQcRvf71HmasT4O8Y3sTM2dBr8kEZhAlpbsQKQuv/tO4kgC39gsKvLSkt5o6PZ8rP/QWZKPdyO214qNoge+jhAzViysspNcJh6FXLe3DD6YtFK+txrue5yI9R1M3aoDc/bXI9A5j56VWBYXHbfPf23c5SX4VJL1tryaUnD7HopiWlFdRMMWK4Lkn/2+Q0acfSzOCJ0FwsfSAC8BpfNe60OO6hYvSrt4uhGDRMGa3SGJOJGLial88QaoDUKgcHRRq6xPKtHWGyD/spZpRXxFYPZcPv4y6RRPSrcytnWWxf2UWcR+HQRb1V4MNKxPXh0RW3gSVo9D7smSAIXNAwuZ5uJBZvg7CYavG0mjPm9+32YDh8vPLBHGXUa4i4T4KTfEvENMVQuZVw0amZ5S231HODaR8LmFhvy9QjC/c0hlkiAyQP5zq7Qh9tc8eQ4p8tuxKAPtrhzVy1xTTKXNmZrKKD55p/3sootgWp8RzFJapVolQ4JkSSNZVtNP7J04uG6jAGktkZw0eHLya0dr0D2IRcuFXNoDjTPzy0wVnv3PmAu8ao05iAinwPhwsx9RoTW58m44Z6rqM6uhOkoIi60y9hPWNK4tNtipS+4aX2ZgQanujtzdVUqDmmDQr/q6VdzTCSHieHN5LHp+5aCHW4oKBPABE9RL8gnzlgRxlPxgRzXW0rAj9TnTyuiD8c3HskKJARSiBAcF1oZKweAISYXvb6QGe1TG87AcdEsvUtzDqgcZuKJvULl/zRwIkJ2jDFaDAeUWeORgrzmYEFNQjYLKrqNZULFVqRxeouW732TCle3fBejZlmUVGxfeshmIRsezj254Gy3zs35hkwnB/9C/kBh4EfPu2rzOAqwbIKoHSfjewV2R4z74esD2maXgH255Nd22YvowdyqvJ7UyFouWyze17p/cTLztRvKY2xfFFQ/DFa8DuFRmLSA==","layer_level":3},{"id":"1e7db280-3b51-40ee-b96d-120b47d151f4","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Code Assembly Tools","description":"code-assembly-tools","prompt":"Create comprehensive documentation for VIZ CPP Node code assembly tools. Document the cat-parts utility (cat-parts.cpp) for combining source code fragments from directory structures, including its command-line syntax, directory scanning logic, and file concatenation process. Explain the Python counterpart (cat_parts.py) for automated code assembly workflows. Detail the hardfork directory (.d) processing mechanism, file sorting algorithms, and change detection capabilities. Include practical examples of using these tools for code generation, schema assembly, and automated build processes. Address command-line options, input validation, error handling, and integration with the main build pipeline. Provide troubleshooting guidance for common file system issues and permission problems.","parent_id":"71349e72-2b07-471a-b7f2-b7299a4cb550","progress_status":"completed","dependent_files":"programs/build_helpers/cat-parts.cpp,programs/build_helpers/cat_parts.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:13:01+04:00","raw_data":"WikiEncrypted:Ux5Ub3OP0MtzohTlWbMlC5lEm19o2HQfwDVneLB1a1hTXHDwEhsig5jNN5z+LIXqsxmLUM25wY69aB6+bwuz6D/wkQEy8W5IUBq/kV+7tBHA+L6qCLLNXOlhHVGHuo6JbY9p5a9HNMXuJ5REPOH2cRjbMvOpX2JPYNiqO0206sp7CU+POZ9RIr3gREMK5LT9JmW1upbSPZzeGpNAVcWFEvpI7hlGDI0xytSGBevLkpSH0dT1FJ93u/i1N/YAwGNI7V110fcuiklNuAMYwCAM+sTshWG1AasofpIxFVC3HWLgQc3T6aGyEx/vw988/JCZ3dzRc68yQHQgLyzP+e7VTGUrkw42ZTu7b1d0sFkwjZb3Q8i+O5hhuWGjDAb22Pnufu7fRCCbKxLrbs2IFj0YB2urm0PopQh9GmAVCyiTaLtmt2/GkT96Z5vQDYVAkCAXtWP/eXVV7W7HlEZ+x8N/gBpkGiAzDeauGpvdlpZcFTEv2jhqXIdDe/EIWHBYJ18Nwed4Bv3UQDgYA5s5TUXeVEyRF9243AurwhVMW0Y9x7figiVO3AFR5yoHHxjPwzLkI0F8Q1PLK5zs62CmA03WCostwnKhqG1Tj2x/E80KstYRsF7pR1TwqOmeX5gvlNeEir+x0afFhDoXKKLmFUhmqq3mThWMoxONDYxZSSFUNyI3oPDBvVyXHFQglhuFu+ZxTHn7fz1Tsced3XnAHVq/pcbZlt4wi5umSVXi1mPrz9zBZN9irqYU5bU20vhfwqSuLI/s911aqeeJEPIIxb7paftniC2Ou7p3IraD3n026CfuxsgUGDWGLLsopvN36hlEnPXNWCZgU1dVRqd/Na5f5DjzjUc25GCoUeqOSqboRpjxki0D7e5OM232kS+KKeTKrXQX6QPba7xdzt9dPKEfs2ehTU8E9OnosImfPwc7FM7LIswSmEV0xvaXnJehqLwtNs7ABTiNyZ3tst92hHxxBU6YtNfSCFk6lqVzVRBci7stxUXbF9JkIVPnRtaSqJhTQfd9RP9hfTOvPrihnlkWRJzyOMH2jhuVnCAMTFgkUKe8gVqBGrBLoMY0fzXFrkfsNvj5Vq3Rd9SmCtCHH5CvDL3FvgPJmrmwzbaVrQIThX9c383OKjjYmC3PFTFOekX7IxgCvF9eihK/cCM4WWMozIXKkm8UYPEtKApNGLISn3KlPrI9yOretN0iKCHD0gjF14ZgrGlpZdhtp9mp+9YIqTZtjCDAW+T+rgC/rEPcHwcNFJfpWEXvS4Btct7MDBZUq/irXLxBFJe6Js58ALQtDOPVtXH3F8wzTnsBxNeqgRcFPJZhksU2iu1OGRL/60p5RYLKGJ34USY9z+LghuRBh72H2K6GQOtlGNPjOyF9PlQirmbNa2iTGZv6RSnOAXUgtYRVY6FR7hul7EZ0V4V/oaBEnF1RjxZJlenfKmY18X2+yn5pmAy0s6nKT2rkh9iNN1f/LajWKwoV5kQfiyIG7VI2+eIKJq+u6TUy+VmmF630T0evodIP7j1gmAiqx1IQnqY+scdhg1aDsmUymhwjg76gHZ+BnMqHxas940dtVvNZsJT+ZDMIPoI/VF/2x+Jj","layer_level":3},{"id":"b2eba8df-5dca-47a6-880d-715bda77fbf3","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Getting Started","description":"getting-started","prompt":"Create comprehensive getting started content for VIZ CPP Node. Cover prerequisites including system requirements (Linux Ubuntu LTS, macOS, Windows), dependency installation (Boost 1.57+, OpenSSL, CMake), and environment setup. Document multiple installation approaches including Docker deployment, manual compilation from source, and package installation. Provide step-by-step instructions for first-time node setup, configuration file customization, and initial synchronization. Include practical examples of common setup scenarios such as running a full node, testnet node, and witness node. Document basic troubleshooting for common installation issues, network connectivity problems, and configuration errors. Address security considerations for initial setup and provide guidance on monitoring node health. Make content accessible to beginners while ensuring experienced developers can quickly get up and running.","order":1,"progress_status":"completed","dependent_files":"documentation/building.md,share/vizd/config/config.ini,CMakeLists.txt,README.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:31:32+04:00","raw_data":"WikiEncrypted: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"},{"id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Plugin Architecture","description":"plugin-architecture","prompt":"Develop detailed content for the plugin architecture section. Thoroughly explain the modular plugin-based design that allows for flexible feature addition and removal. Document the plugin registration process, lifecycle management, and inter-plugin communication mechanisms. Include concrete examples from the actual codebase showing how plugins are registered in main.cpp and how they interact with the appbase framework. Explain the plugin template system created by newplugin.py and how custom plugins can be developed. Document the plugin API design patterns, including how plugins access the chain database, handle operations, and communicate with other plugins. Address plugin loading/unloading mechanisms, runtime plugin management, and the observer pattern implementation using Boost.Signals2. Include practical examples of plugin development workflows and best practices for extending the node functionality.","parent_id":"61cc85da-b705-41e4-9860-17177048c2ee","order":1,"progress_status":"completed","dependent_files":"plugins/snapshot/plugin.cpp,plugins/snapshot/include/graphene/plugins/snapshot/snapshot_serializer.hpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/chain/plugin.cpp,programs/util/newplugin.py,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-04-15T13:00:48+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"8958bcd4-acad-47ea-9a20-16c85e32c5ef","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Testing Framework","description":"testing-framework","prompt":"Create detailed testing framework documentation for VIZ CPP Node. Document the complete testing infrastructure including unit tests, integration tests, and performance benchmarks. Explain the test categories including basic_tests, block_tests, live_tests, operation_tests, operation_time_tests, and serialization_tests. Cover the Boost.Test framework configuration, test execution commands, and reporting options. Document code coverage testing with lcov integration and HTML report generation. Include practical examples of writing new tests, running specific test suites, and interpreting test results. Address test data management, mock objects, and test environment setup. Explain continuous integration testing workflows and automated test execution. Document performance testing methodologies and benchmarking tools.","parent_id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","order":1,"progress_status":"completed","dependent_files":"documentation/testing.md,programs/util/schema_test.cpp,programs/util/test_block_log.cpp","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:41:49+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"83f7e67d-2650-45c6-900c-5774a5cf9867","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Build Configuration","description":"build-configuration","prompt":"Create detailed build configuration documentation for VIZ CPP Node. Document the CMake build system including available build options, compiler flags, and feature toggles. Explain cross-platform compilation requirements, dependency management, and third-party library integration. Cover build variants such as debug builds, release builds, and optimized production builds. Document environment variable requirements, toolchain configuration, and platform-specific considerations. Include practical examples of common build scenarios including development builds, production deployments, and cross-compilation setups. Address build troubleshooting, dependency resolution, and performance optimization during compilation. Provide guidance on build system customization and integration with continuous integration pipelines.","parent_id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","order":1,"progress_status":"completed","dependent_files":"build-linux.sh,CMakeLists.txt,.gitmodules,thirdparty/fc/CMakeLists.txt,thirdparty/chainbase/CMakeLists.txt,thirdparty/appbase/CMakeLists.txt,programs/build_helpers/configure_build.py,programs/build_helpers/CMakeLists.txt","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-23T06:46:47.4688679+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"03af4736-8b6c-4759-ab23-6e40f981febc","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Containerization and Docker","description":"containerization-docker","prompt":"Create detailed containerization and Docker deployment documentation for VIZ CPP Node. Document Docker image variants including production, testnet, low-memory, and MongoDB-enabled containers with their specific use cases and configuration options. Explain Dockerfile construction, multi-stage builds, and optimization techniques for reduced image sizes. Cover container orchestration with Docker Compose, Kubernetes deployment patterns, and service discovery mechanisms. Document volume management for persistent data, configuration mounting, and network configuration. Include container security best practices, resource limits, and monitoring integration. Provide examples of container deployment workflows, scaling strategies, and upgrade procedures. Address troubleshooting container-related issues, log management, and performance optimization within containerized environments.","parent_id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","order":1,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:43:26+04:00","raw_data":"WikiEncrypted:OYVOcFWO8QG2KTNzD99v45mmcADjie5BCXerTg4Poq/lnuJ82FcenM2s9tWcBtgD7a9yCImLiX6/SO5PxULR8edQWXEW1ErW6iejY0N2Et/xLXcoB7nrGCgaF11U4E+z8Z3WU27h1LkDQj9QgKm2M2wDzXb+cFVaNBoxv3P9X0DQ/DBI3i1ZVZRL9rQcaYOdA66n2Bl/JMIPfv+3lVM969DpdFB9GMm9kXFoz3kVP7BUoR2Su0tLYRHza9l9SAZ07tIjox6Ib5jkJG23UtJ85gxqQUu1j/taPJkxK4l12IcUmtdoSd6B4o+ovkR5Emc5YayTsgqzimvXbbMEvrypYu4iwF8DaMPAd6nKIcCgEra/ttsEqEubJL3g2z13OwBTJdiYucFqgFk3JM8z5LHV3+LVBCOL5PIzcGLP1b7bV2NjSN/wlViQn4Rm5AI+YfOJBJCjH2IJ/eDq6jjpDgFfhojC/DlHYfDA2ZzsG5jUUeDSM0yQccOJ/FMcolbX/GPGGbyvc8vOIOgsWcjimJnH8KAmWdy8/gLA3nQ8FZdd+x7Uwob+Os7so2iUa84mVnA9BfGJKTNTal5zPakc/F5zSxRNsViBC43N767ptprN/GSD7eE5ZRZ9EpCW0gpXSaNapiO/PFQs6AmNd90e1MN3Bdnfki8VEQEgi4Vb/9jrn2vQYqqs8c6fTJpZanuz0dmeiuaEjJueA/eN+KidtxvD9BRvGqImJfjDaFv/q1ZUcrGaIU0gQJdTL6hpQVcENO2XiEJsreh3t+pCzi2TXf9rjQh9FkRaE4L+M2Uc9Afh8FlS+3O3kUOcJy2aUYRtyAgZ8BhUrENi3cQryb3hdj/WGG0BOEyqSBaMrOQ11VvMhNlyD4csDqUMByeYudt9TrN2B/q+M3dXZxxal6sS25SfZwt6ZyYGE36psFmsqCLNuLFeO1LNBMCIpeDoEZh6olkMWmWjT8Tg1rvDncdf+9+rYxe8dG/sFzSBJ4LobHfn1wMcCKitSeqS7uS1Et1VCce5si7HhMOUkxAbUOnC75GF9H5dSGhFHxtdmZyASDi1rzz4p8aW0bcpp0F9DphCb27lv4hwfmf0g6GzHftGL2pHjIb5b7L+6QTx109ukEudBenvkZCIT2juDFPo7bZG6DZ0/j2gzHT1TX6ugCaQWB2lVWjEbXUzYd+0MFIlD+8dPhPdoKsrXSWBufbFhaDwXRCt9/lY8QojTse9n13WpHiX7K48K5venbhRIH4v16rAoYsQfq/yWOJvr+dA/q0pZgUi+6A4fQgsS+MwLzmlZVcpZWtoQDMtldRhVOS8Vra3Ion+Y0pPGhp3z2HjE/bInEPkTdctiQGkpCPIVAdjRCBN9NhmvHdn0WLlHzdCUlkUldpsRmmknQzjlj27HL1KXlDUim9IXSf5DtxC5IfheWLq4BSUf2VJ6tadWlMk7btPuJ1cJg1ojG6k2zMC2c+P8RZidf24sVwmqilhxkNIv7J4BSCMHBs9hmc8aov3VD31pPGKY0EFbeBsAVuzBEHq+uMLKvz2mCHR+MxvweEWHPPVET01rKFZlJJZyN5b6YMz6giH212zj07ghTpTbIVECMIk6B32v2umTUZ2JniLixCAiQMaOsa4ShgxW0GOoLcftUJvBnphP7yHXa9Gb4kDGouE/Uq7r1PLkQPubJUa0VpzWJrm0/+zJflB28fPP0jZv+Mp6neIa96OPo7H2vfiB94VTqU8n7aP9xBUEGtURNiW2xffV5vPJK0rdJnchEpOS2y0zKvOOdCatBi0oGgj1VRTQcb40sOkopo7NrBUr4qAYTpxU2tf6cwimwxalz1K+2wWacwtUqFWRdLUF08lINWz3bffBkiqS8SyI4FepxotC554HvhNITiL0M8ODOUsvX2sIcDdprV0OMt3IYv4qjl5BYQm7N4yglftstS11Lxt7WNlkOV9DbVqfpIFjFC+l24AJgxOuqfwZsIU56LvLEtfJKs8w9RrjgHC1rGgPaYrR6PKMIbd3iCRipLrl2rlCPVHfXBrwgOqcmB7oDGDD+5tTRce8X/e14oZgNu0nAMUXyHZvga5xiOLU/UGm5lRl8whsMs0pmWuRfCE+hSB0Tt7+9wYesGahYVEpwwHxT0MbsjQLP0Dw5h9G/gulu5kX6zzlWcNne5VjmhiagxM1U27ygziHAcdj5B+OorZon8GnoGHhAUzKeuip+ZSOD5q8UITmNKXuzBVCLa1TAtVnbd3","layer_level":1},{"id":"0e30fbfd-66ed-4df4-a759-4d81582e559f","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Inter-Plugin Communication","description":"inter-plugin-communication","prompt":"Develop detailed content for inter-plugin communication patterns and mechanisms. Thoroughly explain how plugins communicate with each other using the appbase framework's dependency injection system. Document the observer pattern implementation using Boost.Signals2 signals and slots for event-driven communication. Include concrete examples of signal emission and subscription patterns used throughout the codebase. Explain how plugins can expose APIs to other plugins and establish communication channels. Detail the plugin dependency graph and how required plugins are automatically initialized and made available. Document best practices for loose coupling between plugins and avoiding circular dependencies. Address thread safety considerations in plugin communication and synchronization mechanisms. Include practical examples of plugin-to-plugin messaging and event propagation patterns.","parent_id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","order":1,"progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,libraries/network/include/graphene/network/node.hpp,libraries/utilities/include/graphene/utilities/git_revision.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T11:26:31+04:00","raw_data":"WikiEncrypted:+VS3nPXgxjNRzComTBushLS5L02zjsVFvaKCFsqlKpfaDTTPhP96kOqBLeSiPQLmJfMOrOA/aPyYvvtobOnI+yTy5f4Y/9dCTolJoifXEZ5XGFZqDjDoX+djFBEuFlLpFGPST8HMi5z0Ch/1DOLnzXQnZlkaKIp93GltP3r4YI5EER18kAyvOB0UR1rZAxG8UmuZGRoOeXBu0QnM0v3Xce8hayEwp3K/c36ogR1Qn7rZRVjpgCnyg+JP2l6grJxEgapS9MM4uzsM+Ku2QJq3iBjKpNcAZ6WmWmyMNpd6LesnnwaUonLuQ4YvpjRnZtu2lxPpCCkb7x1aYhJNhyhJr7lZkv6hmSrH/NFcjzW50VwA6Em7zVksqvKRHnrksPvdmJB2yWPRJ6MP3Lh+1zBUke1tfZ7evrMKetz1YDTeUWWu+3agM6kRBztnYqRzt+Y3m0UZHdyGo4XFJxZ8qG37YiuKh8xqwnalsKBrw5H7/qRF/eFE5AsjH/YG7zcDUtzMRgM+ajOULwE1//efI2uZyQfmQBLdop1uIFPEMAx/NXkHp5XYHw7pMpqYjjQGCGrI0L44iup2Hpb3t2EGQk5rubDPVo1hYprbomzKYd+3Cn9x1PyMFfGgrIUGNlHUPaxRZU3GgOXGJZ5jZkp5NY54lmzHhkUsxFqg2pKZhTFPZdG2KZJVn3lPEwY9VgOTYSK1mBkHD70mY+1hbRVecnF5biyhKYdxF9EHBRQmdwajNqqPikD4ZQHJztBaN0+1XL1B3E0MJF5y3SwH4i5fqn0nlx3dv88Gff7qR+VqR10q44CaCKYB0Y6xH8rWXqhY615nAuXq/vxY266kyLPhPbI11pWeCUqS9lM7EbQBUlH0Nl2HWMEtF07m4WGB2cFFC0nl0ncXt+htNKg9FQwCluyVL57GanbdPVJAXZHb/Lf663Mvkmy73MHwlPsdOX9JlciDGL0hvKypGxgJx/YXIS9sRec1lx8quZc8pHsMEl8w6+hYdyViF1Wi8K5uNOW5B6dK0N8VxDbgLarfB0b2tX+9W157CYhERVOXIYc1wwhGpMgbzpfrrHixuoUZwQHK2Vu2pUtFiq1x8utSzkwTfO/utllIdTkjMcm/rCGus0j1Gxe0GNTxjpJY4mJjFYDOTpqF1uFBlFy3z3P+aDXUktOK1/GvaHAHKaT9S+4m4n5PSOzjMSnTs7tI3m6ed9yvWgyD5NXmg7WdzkWu+1bmGXD7FkAxqM1n4ftetysxyvLJfm6il0cF1wj/r/gsAR9rXYdeaR/4YT46kEbQCKJNJ5XuE26c7pc3u53eafEB73iKkZ5DgjEdZvjeZEnQMYKoAYgucfPlmF6PxJGpNSzGg7GUrUk8bgQoz56XfSi/UPVqHvBzirD+HOvO0BqMFBirpsqit8ryr1rcIsubw9x/qpnxm32RWo/QZ/J+KTY2WScmFdKTREIXfPFgt8L5UH5+ZiUEHT00xmtYq9T4uWDklpxy4dDFpwdgzRQC6kdKLgSopQ0YTkb0uTzHOGTIzKcj0Qu7MDmB3JZOfN4GIzaRugdUa8ia0oyZsYHKdq1xd9jg11jOya0autYoLgHkNYV5kzcMIYWAAx7AkW6QqbAvd0Q+ZkpTF1hgq+dt3fJ6KUHA9feV15PnROyq29KGCVOFMahYdN1R2Um2mkHNW2xlpNO7w2TSXzFhPuLJMLd5mAfIXWt/Nyq1qTOe5nEQ0HxtWCqz9MRP+JyTlBDOEXB6TH/VrA==","layer_level":2},{"id":"98b542ba-7145-4943-b53c-fafc1763318a","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Database Schema Design","description":"database-schema-design","prompt":"Create detailed database schema design documentation for VIZ CPP Node. Document the object persistence system including chain object types, database schema definitions, and storage optimization strategies. Explain the fork database implementation including conflict resolution algorithms, branch management, and state synchronization. Cover index management and optimization techniques for query performance including primary keys, foreign keys, and composite indexes. Detail the object relationship patterns and how different entities interact within the database schema. Document the schema evolution process including versioning, migration strategies, and backward compatibility considerations. Include practical examples of extending the database schema with custom objects and optimizing query patterns. Address database maintenance procedures including compaction, cleanup, and performance monitoring. Provide guidance on designing efficient data models for custom plugins and extensions.","parent_id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","order":1,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/chain_objects.cpp,libraries/chain/fork_database.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:45:31+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"4c416b5d-aa43-481c-8f93-4a4adc187368","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Block Processing and Validation","description":"block-processing","prompt":"Develop detailed documentation for block processing and validation mechanisms. Explain the complete block validation pipeline including header validation, transaction extraction, and state application. Document the fork resolution algorithms and how the node handles conflicting chains. Detail the block logging system and how blocks are persisted to disk. Explain the role of the fork database in maintaining chain history and handling reorganizations. Include block production coordination for witness nodes and block acceptance criteria. Document performance considerations for block processing and optimization techniques used in high-throughput scenarios.","parent_id":"971f0bb4-1d2d-4258-92c8-080f826ba913","order":1,"progress_status":"completed","dependent_files":"plugins/witness/witness.cpp,libraries/chain/database.cpp,libraries/protocol/block.cpp,libraries/chain/block_log.cpp,libraries/chain/fork_database.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-05T10:59:59+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyKa0Xuqqfm5cq0GV9nRcndmrxsHsnYwJpAewisCUpG2ti9GxrCpxWosUOZaN9wIJ7/8/157xbaOnn2BOhyeyJDPEjOCeYSYjSjv1dxVt5lXdjoBxvlwsQJBLdQGEe+5WerFA204eHfHpA1L7TlPStdeTCWWLb4c1UyCkfl0qGROdTrG24Ugtwamly3cB72eJqa8Y0UT6zN/Xn67BJN2Mb9Jn1Fof43nVsq9zozwUIXYsn9u7l+nYX100oi6s3IgFFBCC02LsQ0tXoMIPxErRXI/7ZZfndbTC9aoFCHdbO7/GqNjEiOgdFx770bV7xxcXgT9vNQNintlXErFbB22ngxi60g2UVCIg9xnH+btIMjT6YHA4d8bufdYzjTrwToCdHX4D3WTjboZrCLyaKQibYUtU2ZzyIl0TiiPKoHOrtH7tl80lx+6XNbW+OY3CsJO8Y9X5GNVE8RwjvyKhSOhulRat1nlH2g7qkGMfXh5qk7wv+vNhORGTMvSVqKk9FzIuvjBf8bh1ZV+ivN3/cowso7sJt+PEJeItobpVl0kbkbIA1E//L8B/3wx6XtJBtEUwt06O/q0ixorcjVJ7ds/aomEvKF/ONR8BEJvlk3VzayStOTePDLNDJWK1kCq7Ez5JYOt7dTfHlriwbWabMlltC2joKiBEdTvv9mgcoNK08pmAIfJxH8zH+ElcAeqo7sVAFMwUJgxFmCjdCfn3odsIzLNx292ctSPapViCFR5xvmdp4uYNLktrNKhVmlWdjoO4UZ36rZzEvwuQPx3BHgHvfhDYvAZdH5IRythWMDWyaRO6/MuRaHXPao+2gAS2NQP50XIP5VjsUtg8bPjqmlOZVgCFmqUKW+Q00TKf5uVd3nI0h/+S5YumBLr5SEavmBHAyF3/fHHcYUOkYcIx4+2Z7Dqg8dmCQuC5DI0ax3rx0KTw54S4ffeyTl4a0/36ropKo2SF7tt64JObM+A9U9eK1mZFFE42Io+3CyO0TpZs67jqXzJMjfuNcgd6AZfDwSYIv24U2w9wqukaqhnfg9W/Zil3hq6GkJjVanCF2ykO41BJReeKRAAR7We+HZWOw0yGSd8dvQJby0syzrN88Wvu03tWJkM7u8DE9BNhfm5zwzdWD1qPOwaqK6WllmDKFQoAPG20KC4l2bw4Ozj+MooTbf7JFQr0y/PCEbjW/gkb1O0mK6kYc/54LI0hk5sdDDJhF4fC7tF8xVh7RFSbwAuUViI8A8neO5ziGWn+LR46kVGNCM387vvl4E4mZg6tAAC0Oufb/1yQOYtXUU2Cq73D/99M4YRAoW8JT6R7zk/pbvA2ICZcjgj4cz20acCebzhvPPqGUt41NseNy4dw3mfemsqZle4qoHSOzfxb6Q90LZpuizTwkU10JtqswqNi7DhmeBIh10MP1KNFLjXW/z6weL1oHlXgBNlzQkkkwhbNERz5pWFQHGoFEMORjpCPrf1ZwhrYzeqtae5GFUI6eqzTmi8A187/ekxmNMFBz2RLz47T2sVKwAk9rS/CUvOTq0Bd+A==","layer_level":2},{"id":"84b360c7-2115-43aa-89df-1205d4f6231d","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Protocol Library","description":"protocol-library","prompt":"Create comprehensive content for the Protocol Library that defines the blockchain's operational framework. Document the operations.hpp implementation containing all transaction operation types including account operations, asset operations, content operations, and governance operations. Explain the transaction.hpp structure for transaction validation, signature verification, and operation serialization. Detail the authority.hpp implementation for authority requirement calculation, multi-signature validation, and permission checking. Cover the block.hpp and block_header.hpp structures for block validation and consensus mechanisms. Document the chain_operations.hpp for blockchain-specific operations and their evaluation logic. Include the types.hpp definitions for blockchain data types and their serialization formats. Provide examples of operation creation, transaction building, authority verification, and block validation processes. Address the relationship between protocol definitions and chain library implementations.","parent_id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/operations.hpp,libraries/protocol/operations.cpp,libraries/protocol/include/graphene/protocol/transaction.hpp,libraries/protocol/transaction.cpp,libraries/protocol/include/graphene/protocol/authority.hpp,libraries/protocol/authority.cpp,libraries/protocol/include/graphene/protocol/types.hpp,libraries/protocol/include/graphene/protocol/block.hpp,libraries/protocol/include/graphene/protocol/block_header.hpp,libraries/protocol/include/graphene/protocol/chain_operations.hpp,libraries/protocol/chain_operations.cpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-03-03T07:57:42+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"71349e72-2b07-471a-b7f2-b7299a4cb550","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Build Helper Tools","description":"build-helpers","prompt":"Develop detailed documentation for VIZ CPP Node build helper tools. Document the cat-parts utility for combining source code fragments, cat_parts.py for automated code assembly, and check_reflect.py for reflection validation. Explain the newplugin.py template system for creating custom plugins with proper file structure and boilerplate code. Cover pretty_schema.py for generating formatted schema representations and schema_test.cpp for validating database schemas. Include practical examples of using each tool in the development workflow, command-line options, input/output formats, and integration with the main build process. Address common usage patterns, troubleshooting tool-specific issues, and best practices for maintaining code organization through these utilities.","parent_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","order":1,"progress_status":"completed","dependent_files":"install-deps-linux.sh,build-linux.sh,programs/build_helpers/cat-parts.cpp,programs/build_helpers/cat_parts.py,programs/build_helpers/check_reflect.py,programs/build_helpers/newplugin.py,programs/build_helpers/pretty_schema.py","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-04-21T16:26:14+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZAaP8JUBGCZQRchVoluTSwBG0F8TNTcA7NnVPcgD17bZ8tkkmKBmN15pV9qTETgIyoqoLH7M7WPfGtqxxySlrJyCUM6SfuR45v/C5WGemH+0hRlRLA0flEYfomMObFQbk5Yk+NHzIvo4JgCZLW5F0XN7DLQWn8LEfXvdWhYrpycEb2+gRUNqVLrMR4Lj9NZBJQro9Xc43t1OtdTxlnZzJErkb/KowYnn4nnYNDGxG9hIQyrHFcPMamMN8EZgZ0hCu2+dpSJriVuNhJjimoclo6Cw3pyOQAVdprPNkw2xEpbHhZQ+rmE3VZlXZ+MLkJTN/XZYKwiYTp2uKbNEPmGsQQ2LomqWACjNw8wv4WqiN7uh6Y3SVosPebV0G/ZcCESHnBvGtowAOOZYPRnPfpDmnecYGNdDURlmBbiLalrynqnRqKVeASYvVRhaPsQynz2xKpKXOOioDWeEmlzNcUP2D0WeKQdlTbEeVPO5aSdRnCUv+tX5viqMRFV/aZaStqyEbDFofDhf1JqBalT0wv/VNgNo8kTnAZFGDOZ7xz67uGXDGXqJn3n/4th3Mdab/0WAx8kakRGAUxfaS2vsxGHC+7QCunw2c0sltmNXkWX3iBbDI+DygDoA0gCMz/aHmapgS90n237xk3kir9qU9TcRxzWK40xmo7Sw6FKr9WMGDkhPOPoAQ1UyBvkEfiBD4MDJr2rlS6heSMFoZIx8/ywk7nCxEx+Q0GV5xO5lyoVZ7IcaG1qcjeCuXta5O4pp6D0sORk2+3lC3RyHKqAFvJLXJK4Rn0Qj8NxjSLxuPnrMMP/z4i53otH5KRVpmj7PDloLwxm7Se1nx7kDpNs35zcbLlEuIZtMbmAu66DwTp97t86Sb5wAJ/lIQ0mzUqFRHIcTAzQpuMVW8o9h0q6bHxq7EYSG4jTchqULmB+GCKY2k6PKr/7T3DauDBVkxIdONfkS9O9XGHXv2A5vsZxP7uwVDL3u08b+BhwDTNCzmwIX8o+rk/rdpGCvVgOqtfkcl6WaPW/IFKnAEIY8MylFSyU9s4XJ3iBGigwuXdomwt1cuBE7EUfi79p3HEL+wLR+AF4vVVMqJYqppha/U+KsYo4B6U+knbKdteYsN6s3vOK46UeNKZrWoIhf/ef7++6us2IsTJKuSlWUvT+AR/qvbLI8mYQWqGfA+Nb8+207lwvZfwI3+518nB+L/C0pagznPrYzjcKWpHAlmPmTmsqqLvjD4BjCKxbG2sCKnimWkVT0LB+hRvV7lMfAk7Gy5kdQSK26mxsceYr0fxKYmag8dKFwHkHvcghZVIR3IHq+9Ir+X7pUunTFXP9j1L31CRnGHLXOnqTcTVwVKYOpqRDDh+e1bBBdP0cL4At2JEOY/gLxBdDUSv45+taH1UJLnCwRwugCz4BpDWxszi1q2n5a6iwGwjrXT/hhAsY30aXJtxMwTMW0boSb16P/oT6iBHls+6cpem4KKYzDAMclvkD0PwTQVZ4jz1Mmkf/GzDs+VNNW7Kwsh5/pZ/6U0avqrOxjIwkpN6gsFPWWmd3ts2BukG8AQhcQyIbMqDtnfDPqrJoDT55qBSSxNiwZeT3Qd1vdF1BhC6WlQ0ypbxK+GA8206/RTjYD8gy0BauM0Subh2zzN2+NEXWDVhzLdt1B3E2JLbjSdF9G4rwdQk/c+yLBVhWZCKC1RV8Mjd8BCkDs5Codlql20owYs9eT2pD3qaecCu7DPM57z6cARZWlp9xRxrJdEeR6HyDqfUnwAI9CyvBUijzQaiJYOtmmYqFvKhFzcD+y41yyaKxk8e3R9kX6T35ElNuhNiIyEFCtrJZTVFRwpwAe","layer_level":2},{"id":"f6d69197-00f2-46b3-878a-cd582ffb1d49","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Code Coverage Analysis","description":"code-coverage-analysis","prompt":"Develop detailed code coverage analysis documentation for VIZ CPP Node testing framework. Document the complete lcov integration workflow including installation prerequisites (brew install lcov), debug build configuration with ENABLE_COVERAGE_TESTING flag, and the multi-step coverage capture process. Explain each stage of the coverage workflow: initial capture with base.info, test execution with chain_test, secondary capture with test.info, tracefile combination with total.info, filtering of test directories with interesting.info, and HTML report generation with genhtml. Cover the cmake configuration options for enabling coverage testing in Debug builds. Document the lcov command-line options including --capture, --initial, --directory traversal, --output-file specification, --no-external filtering, --add-tracefile combination, and --remove-pattern filtering. Include practical examples of generating coverage reports, interpreting coverage metrics, and integrating coverage analysis into CI/CD pipelines. Address common coverage analysis scenarios and troubleshooting coverage collection issues.","parent_id":"8958bcd4-acad-47ea-9a20-16c85e32c5ef","order":1,"progress_status":"completed","dependent_files":"documentation/testing.md","gmt_create":"2026-03-03T07:29:31+04:00","gmt_modified":"2026-03-03T07:58:43+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"784fdef7-9bb2-4ad3-b289-8c8c9c87cd84","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Transaction Debugging Tools","description":"transaction-debugging-tools","prompt":"Develop detailed documentation for transaction debugging utilities in VIZ CPP Node. Document the sign_transaction tool for debugging transaction signing issues, including command-line usage, input/output formats, and common error scenarios. Explain the sign_digest utility for debugging cryptographic operations and signature verification processes. Cover the JavaScript operation serializer for converting between JSON and binary operation formats. Include practical examples of debugging transaction validation failures, signature verification problems, and serialization issues. Document command-line options, input parameter formats, and output interpretation. Address common debugging scenarios such as transaction construction errors, authority verification failures, and network transmission issues. Provide troubleshooting guides for typical transaction-related problems and their solutions.","parent_id":"ff55fa31-5b21-4383-98fb-59c794986fc5","order":1,"progress_status":"completed","dependent_files":"programs/util/sign_transaction.cpp,programs/util/sign_digest.cpp,programs/util/js_operation_serializer/main.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T07:59:59+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"f1b217ef-ee0b-489a-a789-210eefb1e0cc","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Node Types and Configurations","description":"node-types-configurations","prompt":"Create detailed documentation for different VIZ node types and their specific configurations. Document full node setup with complete blockchain synchronization and API exposure. Cover witness node configuration including block production setup, key management, and witness-specific parameters. Explain seed node configuration for network bootstrap and peer discovery. Document specialized configurations for testnet nodes, debug nodes, and MongoDB-integrated nodes. Include configuration file templates, parameter explanations, and operational differences between node types. Address performance tuning specific to each node type, resource allocation recommendations, and monitoring requirements. Provide comparison matrices showing feature availability and resource requirements across different node configurations.","parent_id":"25110dbd-3911-48e1-b870-29607c837581","order":1,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_witness.ini,share/vizd/vizd.sh,share/vizd/config/config_testnet.ini,share/vizd/config/config_mongo.ini,share/vizd/config/config_debug.ini","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-04-21T15:32:31+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"76b6850c-bbb5-47bb-a081-cecd5efc626e","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Transaction Processing","description":"transaction-processing","prompt":"Create comprehensive content for Transaction Processing covering transaction structure, validation, and execution. Document the transaction.hpp implementation including transaction body structure, operation arrays, and metadata fields. Explain transaction validation rules including expiration checking, operation validation, and signature verification. Detail the sign_state.hpp functionality for multi-signature validation and authority checking. Cover transaction serialization formats and network transmission protocols. Include examples of transaction construction, signing workflows, and validation scenarios. Document the relationship between transactions and blocks, and transaction lifecycle management.","parent_id":"84b360c7-2115-43aa-89df-1205d4f6231d","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/transaction.hpp,libraries/protocol/transaction.cpp,libraries/protocol/include/graphene/protocol/sign_state.hpp,libraries/protocol/sign_state.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:14:41+04:00","raw_data":"WikiEncrypted:pze/wTPA8hT9dADtWGlHVecGIju168riPHUw4TY8/AOhja4aeOzUlmfgdY/KTiokGkE0pwevgTXyU4//H92NNz2DvJDyylHUIIAgFa19IOR1rIcwnR+M5gYnWP+MfMyP9rJdHksUzaXlv9bu0L+nSwyEwxvRjUsxXSJzFBEFHqMkwXP+kKSmf2P5ac7NUAQiXV93Cqe+SJpTYieODHUA2aXvlp8c9CzuexfREJPFweCojE4iuz2MpwhzLDyHYWZ0+Oo13SyBMRm8TSYEiJJ1qEryT0ka1GRDrBNabqCzOK6uY1kcgMVU1jjPuzIozI89v9TgBpUe3ZUX2D/okuey3ZXKbQsrqjCWtXu4h/QZb8rYGL0z4J0n4KskmV2PKYbFtn4srZQu7EbpGVbjsDnBXaaURzTiBAn/5bNsIYm+cIxhaOEE0GSJWPZKvt9h0knjB7xU0AMvSOozrAlPI8UzxVBsdecMiFyAtTBrLnr25+mj3ZwaWngPIkUmE4QfDwFvVBktD5TvLYHH5fYgQ6FQEOqADFR/zowPRsBSgtdJ9Eb/rsHcEzSds3O4vfJPa1xBvv0oREt4BtnPPo7h1GW3BkQTBPCsCLRrdxXj7pn96rupr/KX+UZx+3o2WnK2p8s5xzHrxoZ9FQTtLMrP1QfdpEFyryeihlhvZrCXbyJ0kHE91R4y1JciNNxtI/Bjrh6mVBYmrKujPXiV5CFrRwoI2mH19Wti9DQS6W7gklFuAeemFd4jTCHLmR/CDXLjhJDffCUzHS8513myK6oVS5EH7w6YPaLheZxNpurE5ol03A8c/WxlMAXjnBxaf2ZeHj8uxa1EEM6YHmC9P5jSRuEuUUzsS2GRlFgZVAOID0om/E0ENC/0hYqwiXqX6y9n0EmcAgNlDJkUnWeNYJ0oupFu7tnzV85Ilx3SxDP4ea05c5oMYIfzSWji/XEPnZgnS/O9MC1xoLO1yNnHi+fYQCTlLY1nkz1d4gX6E4KMS0BEe2hiCUeZYF3Ve1o8UByfeYpm2dpWLCmdhlT93SxA9Tc+6H2PULFfOIr+EUDlgTwFIjJeGJARDD7Wv2Eq+POFmLHPM1FVpRzVCzAKsxnI7OCf4iC/EthL2PFmXmYvtkCvAvxwMgEwm493vGA2ADLGhz9VzIRDanfMsMnv783wuN+hvDAanYwmAbdNF/scEaa6o7YYzUlSQaAvJ69tNU51UvQmyiiKCXW4ScC0hZ79uAf0ch71hOj4u/b+KFez1SbDRZpKZRxeU0pm+ZGWNs896vkM3THcbIvEb2jp1FDd9tRhuoP5Pu6q9Dpx/wNYMV3VRE0XMIMwliEXXF/ZEjvZQSw6MJVwTNQ/T7UFKiwYPiWR7zu22AG747F3nrt1QQ12XPYHxupLZYDmpv313bFI77gWmFvQm4wKDhyr+8uPpOKb56paTtid6wBDN9/JGgmMGR7/oSz5cLuCQMv2AuLrUnmh9WKD4cydsTT0W5KNDaGRrHfnZiT88kkOALg/Qn0w8oNN2idlbOac//Mwluk7C0esxezBf92dkmhrQsXZ4LjPCkTjDkSGBbvMeU0JhEyVDtolDVSe8XLlbQRNkp31hO/lC1QhlvCzGrrmSgI32+fgI10SmRUU+tqWWL+USh7BGB/ohXpQ+pQkPB8krp6c+tkn","layer_level":3},{"id":"f290b164-f8e8-427a-a32d-700fe50d1868","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Object Model and Persistence","description":"object-model","prompt":"Create comprehensive content for the Object Model and Persistence system that defines the complete blockchain data structure. Document all object types including account_object, transaction_object, content_object, witness_object, committee_object, and their relationships. Explain the object schema definitions, field types, and validation rules in chain_object_types.hpp. Detail the object lifecycle management including creation, modification, deletion, and indexing strategies. Cover the multi-index container patterns used for efficient object lookup and querying. Document the object serialization, deserialization, and persistence mechanisms. Include examples of object creation, querying, and manipulation operations. Explain the relationship between different object types and how they interact within the blockchain state. Address object versioning, schema evolution, and backward compatibility considerations.","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":1,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/chain_objects.hpp,libraries/chain/include/graphene/chain/chain_object_types.hpp,libraries/chain/chain_objects.cpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-03-03T08:15:23+04:00","raw_data":"WikiEncrypted:WrtF4UhzC84au2vkp01Wd8VhZuevsmYW0MiRsMATJ1XvzQRUZVUONQBd74I+5hpz5lJT7q5FmmBA+o8DqqOXNjGpt0nJ0BAMDy5P46t2LJR/9eNbkssWxJy2QJkEwyAnWrDBJjJ0RtuHhzMS9XMXa1dC84o0NwHImEkViQDS7Rpsr2tEFtNFHgqhdd5Zjk+OTwvCho2N8LT8e9ja8cNKp9BMFrmvVAq8aF9GWvThumhCK2w2w5CyEP2RMR4PW+tBxGQJFYDPJFgz9pTEzIVaFbKSiCUnWq0ESj25uR6wVSNMSVgq7zRG7y8IIsgrqnhJu+KgNUrZxmwpxoAcsJ0hKFwNo2lam+HL6ml2/2LVFk8Mzco7PC0p/zgxbfQrRFhP110QNXkeT0bYlTVVlMypAQ1Kxj3NBZ1KLmyLLs12q1EsOjSWSgxN9YXmkrXz8yLbFNZYT7qGDIBSXHVviTp2McCAVwIKGOXKskF71GBPcjqo9pXktSpgKxx7qaaBMhX83pvC95fYpq2cJc75oPgeq9KZXR//fZQakWRETvbbLxccAwa57y57RdnEaBfd9daY++/BbkT3oRJ2hqnpXXUBr2uUme/yb0WIntz6DyjzY8xSE7izPZxRsPcc8RJUWILAy7ZprMZASzMlwRn6/Ky/j23YT5a1e4zoyyoHebXifIGG6ZAse1LtKwo9TNNOQpHCamPfYntDKJg50qHWmO6/bi3qavsAFO/yitivdZkArtHqC398p+u7EFZ37JVRbVzlp3qeNVvPsjEgx8fT+bkd3/qwS7xa/muLbLdVBoTsgfnvYr2G3Is+K4mnBYPu/aNEpG4sm7qoBWE7KLYezbuMRJ9+1Fv1NpvrivJxTSjDVwbC5IA+oCD6Pro5lFg5VkenktCY0G79VFuE35+CL+R7esWyfgnM7V8YjaQTsnBr4DmI49qImBb8qqVwyWze9Zyo0WzDrFg59V/8kW+9HBbrh+JqtG2KpXW0GziW4YZTFW4dxYKV2I/LPpCoOMIgeP2YWhpZIV2nrw9FY4247hiAvnJCk2Q1xqRedjgoTM7IuMBq6LdX6BJU6JkzxAw8gnYuryYKtVkenMBIKVCzTQhreo+0OAPufetVLpssW3EcZU1Nn3pPyvncV+MvelP9nELnHgIKy1t6WMpRIx+q/1FhnSFI7ADmVelU+ntYSPmrDe6HoziMx5djs3WbbfCK+IaYGU8lay02M8Q5NC/UpELQYtdKRC/j738pt5904KOmXsVvbw8wRYjN0hqZut9fMN5dgepehlMduVsqXgzmRRVvgbk+K+O3/mGV3qj1swdiR9lt4skvBPrmh+jR2ACCL+MNoszJHNrglzKIBSUS029Nx5J+0ERK2muv4h27pkx2WHp1C44wXmad8a/qI84yR6y1KOFmGn0SIQ+wsUuTxHA37pOzS1mAJiYqLVgGMS+GNG/ENsAWGLkUVSYZohLq5i645j24mmoIj+BLI4PdQaPAXvBvMR4LdiMovmjf73UFLlA8t2TZ+TLEdIqQpAYHoqDj9ZMNLKTFLNkg/CbbVyL4uZpnscLgQGk1kyWR+sMsjy3nG/rQSGm5+rxc+wfeb+xLIM/ekGSKxF6TTOyDLC+fgVMNyQYE+2MRVg/lTKABDNjCFctgYnFwu39sxnx7gLLilxXTx98QGOM/Jp4L4U6eZYSLwI1pK6arSKqy9ls8TCZmRPFZJb3/RO+YK0K1S6R/aNh5Bn40Y5/rp5kYCDptiseq1xWjbUyVaGjKF5jsAkKQuiMnsaSAdYUEJ92RtZw9ZGhHskCV+3pzqkjd2Bsr8NK3ocd6GiMEHrapMKB+oJpQLFVtXgeck1Xl7v9nSipIUd9sDgGZuJ2u8IOf8JYlKi/NzTcJMCgtBM12aT5PPaM=","layer_level":3},{"id":"f98a762d-2c67-470e-81a6-f7843765c3cd","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Peer Connection Management","description":"peer-connection","prompt":"Create comprehensive content for Peer Connection Management that handles individual peer communication and connection lifecycle. Document the peer_connection.hpp implementation for managing bidirectional peer communication channels, connection state tracking, and message routing. Explain peer connection establishment protocols, authentication mechanisms, and handshake procedures. Cover connection lifecycle management including connection initiation, maintenance, graceful disconnection, and error recovery. Detail peer state tracking, connection quality metrics, and peer reputation systems. Document message queuing, priority handling, and connection multiplexing. Include examples of peer connection setup, message exchange patterns, and connection monitoring. Address connection pooling strategies, timeout handling, and connection reuse optimization. Provide guidance on peer selection algorithms, connection balancing, and fault tolerance mechanisms.","parent_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","order":1,"progress_status":"completed","dependent_files":"libraries/network/node.cpp,libraries/network/node.hpp,plugins/p2p/p2p_plugin.cpp,libraries/network/peer_connection.cpp,libraries/network/include/graphene/network/peer_connection.hpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-04-23T09:39:39.5088209+04:00","raw_data":"WikiEncrypted:VR5KHiCGBNdKELy8Scjin5u2xY+Dj5+IyYWoQiU3xOSz7PDUoqR7wxPwIUx3wbq0KT3hCoqZJUqiKiMi3flUl1+CUwwthoJnvOb5U7feLpBHGIw6yavTfsvlZuEq8CPGuoOyFZaa2zkf41iNsK9UAbImB/s2YTF4pbH1WKKgt9bf+JG9JOJXBdCxcsM+zINCU4KHnJBnRdnrL+ebAuBdUh7aGdoRCDmk/nLjqM8TSJQnbtKh1EMFwhzrGC2nV8JDJw4dIMgFohPao/oOOIMYnV58RiD96QutejKY5fngNSKsjhuH7HfEtXPZ+v6DLycdxlB11EfG3tmtURz4MJGVx4aiP8+Z+t7XxPU4Snco9aDiXQpBKTImeDwD0rmoBrCawZ3mJZkSP7BOlw6LA+ujXddwhYKyg/YoTggj4VPZsj+qIpm5MLH9CNUa9d/QdQlTjoGf5jL64CpDG9ClWOMryk/0VsClcs395NbzYAltSA6GoF0pepXXcJ4cKuNwO4CeCuO0EN82QZnfjNUNv2zg0fdVYclai0N5H60k5PHew1YillbN3OQGj5wwqsVQfNxv28MrsfEVNpLVS4d2YaV2E+4hXiYnc0XpVXS4UreDeaVC8htkYYt+JvaGUPEcU9NZU3q5CCeZC3A0QyquczCcM4UtI608X/wkVnfR8jnXcPFk5Jpedx0un0wMnS7EF9fBkToysxp3iZ2l6X8Nt08IZQlzKvHGHXeT/dClNgvRtBMARP1Mva8Z6eWHA7DT1AIc2ga2W3bzZyc2Qq1J6W9bg4pWiGs2z6p6BiDn20nHG1ZdPoAc/g7N1Wy4kySOh2nY/ERCO/XGwi2JKzexZyweMZEDLIAqV7SLcmPUzOYa3Jm8OwqYK9AYkDBjxJXrQdTxY8N4TwhkEFcHcZTXvWahwI/8ZNhQ6kydXiDg1Kx1FzHLXzcoT9GGCo7QY9YmAYy4khoeoL1orb/SSlGCKAqMOS1ecw/IXnfY4Hwo9kS4oYvhmd2P2sBnr7YFW8anFGQHMvzdTrXTbR+92ctLESq6aJ3CNML9NjYiB6OB9hh6fdMC9Z6ptJ4X34PgiV9Oiv/HyA63fUUUjyTIacJSQ9sUnJ+89y0GDn8muV2pB4SaBCL17pX7gXEgbPRxCZNZp/iEuHgM4oSrCFzcq1SxZVdOpGY3acYcxxfMkaqYj1blaFdk5Qk5dukmGH6JG/iSL1J6P9MKzzn+6qXMF3f2Jc3S3q6B+vWabzQSIYTdl0c9eLURWj2YnSetVbDuDWEuiAE/gpFOpqX/7IOpItBpURnurmoVvH05hC29WIbJN8gvrztIZYHTVCZ01xUEtSedVZdBZdeQA5qsWSaNY+5PlZ4BfVzLYKodo2WMOEpuwRM4sIZ2aDDFGHPTOqoKmW1puuNa1tumd9RHnjcZ6/vacEP2q5HLKmOZphcxIlnEObmO9Vd4VBGc50O9UBZ0SZyQRW7Wtdkz+Nk8I2Qb0b6xv2SK97vk6H8qFVUf1KxaJ8kd9rJ1RT7EaqsUCYMOqGafUdzaTtCl43TUhdSmVVYPaGemwTpWdzA6W1tU16VNJTbQusP5Jr0rkG4I8qHHHKq3b8+y08p9nYFUrLzNp1voSWn4nu43Br4IncdPxXCDeB1UVeQfNFvubg/01xuoZCU+/W7ykFWeX3rk5+aHznSHZN/yY0j80DRp+IQ/g3+Y25uD7QJbNxsEiorakVr5/lzGl4wUcTFTjqDOSBAW04PvnS9uTcrjmapR1l/JuguKZ1Jvnr/u72uyKUUAqytM16AR8y08alYjWLHbHKDqwubX6gZQsBeCBcJ2kKBVl/6uLICOvhkk9oTH5CxAmNenUbmMvr3+8JLQyg3P4UOkGbJTmb3othy18kNVOTgLRs1zH8RsSWUQfSwEa+u+oeuB+Jq9XcEf","layer_level":3},{"id":"1d8f9a74-606b-4430-b8f7-521d9602e384","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Platform Configurations","description":"platform-configurations","prompt":"Create comprehensive platform-specific CMake configuration documentation for VIZ CPP Node. Document Windows configuration including MSVC and MinGW compiler settings, static linking requirements, Visual Studio project flags (/SAFESEH:NO), and TCL library integration. Detail macOS configuration with libc++ standard library, C++14 standard requirements, and Apple-specific compiler flags. Explain Linux configuration including GCC optimization flags (-O3/-O2), static linking options, pthread and rt library requirements, and OpenSSL detection. Include compiler version requirements (GCC 4.8+, Clang 3.3+) and platform-specific dependency resolution. Provide troubleshooting guidance for common platform-specific build issues, missing libraries, and compiler compatibility problems.","parent_id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","order":1,"progress_status":"completed","dependent_files":"CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-04-17T10:42:56+04:00","raw_data":"WikiEncrypted:Lagc5vDVDWJKf0nDI9TGSA5WFJDHl+XgRFW9Z8nrevG3TCAhYIcpEYU1rn2otzoK0HrEK0jMDM9tEMjTdqSFUT2s/zXxLUj1fG7NZ4iHEEDHSkF3MnlEpA0VfBICYmIEysUPG+skLqepPVWG1KHiaLKuhh5y8KMFGz8vf9czZdpBEri/pDAO0R5RG/XkYCd7kytb28lf7+fpAZojUubG1v/nxZl8JrpQybJss1uZ23nrdEWd86bqk3Cw9sbqiahAhqPJE6VBMtgpmRW7Twshw9gjmP2j80RvHuwzEq8HYraiFBGULt2nREETqCLUSJVay9QdNPFHSmcgv1nlO749K6IOf8jvyJEL5BAqr1Y/QKrIDm7hHZauFcS1WEVy7L6mrCOWY7KUpONwVu+vOaFxTTsdNku0ALldwRVrXmGgQ/wjDv0Bn/PGUcOxgW7n2pG//giNon6YErHA7GEiUYieQFI90ZJ+5oD95pxRWJcMumNRJE+uxkCuFyklJfLs2SAfZuqM2ULw0OH1mNLsaUNTcbBDlArHPV78IzpvWoUgk4tcfConWKCNRv838iec6Z8u2rUUNZR0CDOL7K6RFjybi8Ma6P+3RIGnRE7ZozR893j6kSU/yrhYWxR0m1IewVwhBVq6o95yWyHoMTZu3E3nJeehkNDWLnoi+MOrsYflA/1XiMBKZS60IVPM47jZJkvb9DM+ZoVRcD9lgI7md5J8qRvODiXZARh/hLuyNZCKBLfQkl5GiF7F9F9fOuYavuL/Ejp+R77uxMFnjDgyeFETjfVChxb397xHwJApBA0Rw1Ibcn9X3cWsbgXJgKQixvjfXq3MwLMPYtRFI+o/I8iIS0k8JB8dHihnT9FoOMd4P3CK0HT4KLuS10bC8OG5b78Gv+zA/MwZVOoPkiNyyMKpCJki/1BU+0AW5ZhlyH6W34eNJy+hDKPYFHqxIJNyaNXlKWfY8IA6hQcS4TibT3iohEZixNXcfay5LNd6PBf30w6/zIkVmo1aWX20WM/kmC8aYo8cEpVEfHgwe6sEB8P0J8oQiM/eSBlEyidmCkzEae9bpUkL5zWjdfpbwvOZ+aHxxF+bbjH8bbYCU+Kuef+HNviE0s25BLZqPyeXbJmQvoTAzMRslswCGNNw/yAp6FHylTiRUi59aLjibzqFd3lfEy7fchb+nfgdFtMNW1e8mfi1F4TmMYR5xG72yDllegJCfzjpSCtlXellUaG8LIOrjJ/g5J5s9C+u9Z7AZ14gyUMWwAfpnldXvgup46MMQzWFnkdgtoAXdgnyWIzZPze6reTtZt6vzuK/H0+2JUGiQubKLCmJJtHAOAtMPeERunxT5S0bPLAaGC+dVPQ3Bus9B7CXAUApDxXCj6bbBPOmIvu1mcQRQFSywDqN14NSSnxCb4QM997FzIH+KO0Q6DfXMU6Gt+UcZTyL4slDGwH0v7zW/O2uJW/StZhZZNyCtE3eaOvA4KSKrn5WtUgUDnFScw==","layer_level":3},{"id":"f7f97c5a-7a7b-4b53-be0b-993c608c268e","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Testnet Dockerfile","description":"testnet-dockerfile","prompt":"Create comprehensive documentation for the testnet Dockerfile variant designed for VIZ test network deployment. Explain the differences from the production configuration, focusing on testnet-specific CMake options and configuration files. Document the testnet bootstrap process, seed node configuration, and testnet-specific volume mounts. Cover the automated testnet snapshot loading, genesis block configuration, and testnet RPC endpoint setup. Include practical examples of running testnet containers, connecting to testnet networks, and testing blockchain functionality. Address testnet-specific security considerations, resource allocation, and monitoring approaches. Provide troubleshooting guidance for common testnet connectivity and synchronization issues.","parent_id":"7108377f-502b-47c6-be02-3765463aed1a","order":1,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-testnet","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:17:07+04:00","raw_data":"WikiEncrypted:1I+g3iB8Klr7mBC/4DeKMdGxNIcsjOObmJBHKNrFsun7NjeRSkAIkIjgPvn0Ch7mDdGDRfXoAe1bUR41yzysNp6O11x/lcS8a3Ql+s83U89N3Kn9QIK305NUVjepHpGRwCLfuUs6r49/Rmv3IvLnxRoEHmOVl0wtpa/lG3+y1Ne14xPHgmgdT5ReiUN/nXcbHA14+lOVT3SEcda9cKCVHqeI43P0FUZpZcLbL0Hb/8Q3ae4Zsguwd12Hpw95G68CsyAwN1Rm2xgHH7yDcTt5DjjL3XZq/H+YzSdgfFP+TLMsJAx4pY6R4M+6buO8lD5l3FFIQ3FqW/m8g7uM0jnK/8tbFSNYlPMJC1obXfxp0pVqUiYPm85iShtC8nhm/34/TVMpQqFGygDjckU7XuEi07HaP3hTRatT76OMoEXTDLpY232KsbsQjVW68uRk1yj+GQiMyb7g2BDZpxuY+P8Iu3o6DBn3sBUhF43BBVAJwKVoj56yKvSppF2SZfpScCkboybaiHmGwNGUoslVe/CgR9j0pv+uIbjmL2k+XefbYPqCW/DAFQD9YaPMLUX0rkDAGbiawu/EaTAXnYzCzevAwaBvaMimlEHB1EfzGhFbYsFJmwBz9wbcxtE9pPvkbFrzA9Rpz/eIVq7Ufg4lohlimnyu8OW9bP3a5hJML5Ul5tqAr1HfMAC9M5HnAzXqCnYYahVRIMMLjxVechrrwwfEDMHOFNxJmyWQ80unmDR5Dq53k9DL5jP6H6CB5r0z7U4mIMLp3E9yNZGY/1b2/XvcZJ/BWlpLyvfp1XVv+gQcNq7hAsIpyAq4XzBR3Yqlmgdfk2I3qg9AblCrpWwv9mZpvEFcEj8uTq7viBsiX4JurXfPsV79aRzkw0TExgPJV3ZXzglvZ1a49zfz1EcSqU42n68/5+COjjdk6vDvU95/6EoxQBb9zl7eOqluTjQ1R3vDbRKM6OJhrdgMS/nJD3qPjJPcnfGJxGmu5HjqHZm1rk/pqOg6NTm4jag3v1S9HO59r1uPwJXYh3p7tbUOlMYw/chuuNkmcsy6Uah+OKS/uLF9mgqmEey4XnX9U3GJhKy6dHYCUmi8IE4zgP2tWRR1dOX+pgluqLxW7Ub9RyuZ0KgsBEOBmJh5oNrmF602sSudrZcDN22O6PWNwKzukWJrg20wj+ZlZ5j1Hi4AoXBe06kKqLIPY2C8J7Sbra0PDHw14W9H90rpWsI/zOkUKdbcmrAM8x3wt1dBbFIZo7d7SDSMHqPo+MILMlP/cLh4e5zuOQolQhEsJkYT7fnqc3jAoOVSPoMpONhu1RcYpjX5zrVMMd/oJU/H4EVO421T6VMr5aYLgp7gVk6SvcmFXd5Q9NAIi5xge4XsGY8op5iz0Tr4lRrAB+GdneB9fiIOYJEk3L28A/kaWibKkbNe6YOBKCW86vLNQw9kNl0+1NwgRmpuEzxCvt5l7u67gfqHymyp","layer_level":3},{"id":"7abb1792-73ee-444c-a732-4b64ee88f22c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Reflection Validation Tools","description":"reflection-validation","prompt":"Develop detailed documentation for the VIZ CPP Node reflection validation tool (check_reflect.py). Explain how this tool validates reflection metadata for blockchain objects and operations, ensuring proper serialization and deserialization capabilities. Document the reflection checking algorithms, validation rules, and error reporting mechanisms. Include practical examples of running reflection checks during development, interpreting validation results, and fixing reflection-related issues. Cover integration with the build system, automated validation workflows, and continuous integration scenarios. Address common reflection errors, debugging techniques, and best practices for maintaining reflection consistency across the codebase.","parent_id":"71349e72-2b07-471a-b7f2-b7299a4cb550","order":1,"progress_status":"completed","dependent_files":"programs/build_helpers/check_reflect.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:17:31+04:00","raw_data":"WikiEncrypted:bzyetvPZRDtDTnozObvREtrhIrVNlzR9GjOxDARd8qaPKEK0AkNVEuyEWFfIrzjBn8DY6shjGjbqn7TVEpFIluO//1stc1a9TeIVJ9x9W8GnhxuSgajiCEqcxRq/kcWqzRcNq+G5PBS2Vke+Q50oFUmdFPFUbshtige+XHhAM+vr1VbcBaNCvAUnkMSy0cxMpdfxTVp6Lt2BW7voUFp5V5v4wm+eGDYDNJaR/hahDs2WNVGZLd5R0rgYfezTRSEExKq7Q6et6AXVy+pmVgjjZ8ZlGuiO0PQUrn8+34AQSx6pG1b2AZWeaLkhKX7nsekKrRfQhE8xHLo44PBWGtCeP3R+0FPsvW2qbTMUKtpZzwUnfEGZKLte10pyWg39bdvFi7yVl68CABfWhuGT1/bcj615AJhU1WyQObutow+jFnlBjYThqH3JssNmHv1sqy/vwX0aD+YYIftEC94eF7GLoiFluSmUz/f0jk77xwnNPi1B5b3Xp8OarYxWlENi1n//v1POhwuOiylv5EJC8A+vt+k3lyM/E/fLYsZsbN3dxZK5D3ysSEpx5bybq+EOSQCTsMFIqUpGc0keJMdoUq8tLhA8T0ihnlvY3IHyE0Ekojgbf42PCqR5UWjQ2UMuT4qse91Ss00aLjiozuB5ncWKd411zVc3w+V/RuIEOgA7CrShgVwyKQqJY79EvjliATv5Kh4krN0OFZSA5l2BSXKmie4wpSrsKPK0pmDxFlfeuKBCurgkt6vPrUYKtmLy4etO/X9W2BMiMkZQXJSTaIt0rCK7dCPCmeE975IT32alaUaDIlZnBEjvpBqkVFN/Pb046CjE33AdgDHbXQg+T8aNRvOpYZMal3BCnw7IzbMMlG3rawYhXmnXggCxRFexufLtLWKHkxRARivsT7EHcredBAeoSt26ETGMyGZ/Pop47RzOgk0kKCaT3BCAm/I7wZlU+XgnStRjYuMf0wJKf8P8SChYRpK/cUWIlepMtHy6/8E5fkFgrdv5SpyhUoF/wqEHskj5jLC0ZmIcw2l5LrYcd70U2s49AdI4uIuiH4ItRGiqN98cImdA2ryU2izjj9Xde5f1vqBBQpLowqdBNH35QXJsxqIb1RE4+bZ2ySAj7LtV4SPUMffW08rQSlhFImRB9BnWYdCK0Utm+7t/BahAZTEI7L+yFhkq+jj+fdCJzkhzturXGB+OWE6FomYdiD8MYo6LPDyGpfuE8zHe5JoKPFzvp3pWPwxYn5UpnvRVwoOVXviLY2CQOMVLCpxkjXC0BQlrZ7377iK5HtByix3XosgFTKsVppHbl0RdE5iWZVm5lrHwDWctVdM1iB/+tsRrwUpXMUGWYeLvUSVx9b7cJdT87st9oQ6rAlcRyjeTqam5QFb/B8Vukl73nWFLQf4UJTFQyjEGTfvF306mXzZLoRkaeMZN1irqzHCHuS7d9c0=","layer_level":3},{"id":"dbfad48a-6488-4507-b5ff-beca8277f9a8","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Snapshot Plugin System","description":"snapshot-plugin","parent_id":"23a03952-16c9-4271-ab2a-fd18cbcb90f7","order":1,"progress_status":"completed","dependent_files":"documentation/snapshot-plugin.md,plugins/snapshot/plugin.cpp,plugins/p2p/p2p_plugin.cpp,libraries/chain/database.cpp,share/vizd/config/config.ini,share/vizd/config/config_witness.ini,libraries/chain/fork_database.cpp,plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp,plugins/snapshot/CMakeLists.txt,plugins/snapshot/plugin.hpp,plugins/chain/plugin.cpp,libraries/chain/dlt_block_log.cpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp","gmt_create":"2026-04-13T15:59:14+04:00","gmt_modified":"2026-04-23T12:18:55.6134455+04:00","raw_data":"WikiEncrypted:aMBX4tyQy9CspId6SOjUsPjDbWaE0XwjiYFfJC+6JmpoDChB3ZowO5dYf5bnEbW/owWEY1csO33LOVGSLpEpLAsElEIuL6651OxIlbI6Jx6RNkf9UtRcW2ASo0/GisCKkFKS4/8XT+hkNeQJn4LdLkUftG0oshD59M95PkRL07t9KwSIpA2ox3nE452qaZImkttFmbzHeg9VN2z9YxMIV2hnzBtyMqK1zmLPDb9ML/wfBipefTf/UMfHJEid4+mGFPVHeRRtOHCElOCQpymJrrPR8DGFQnj3l7TElvglDPzK5VtVEAcf+VFqw2XuCRQkBSX0TRrhj2NOKQGhdHBuJkfvsH7wi/KVZ4Sk+izxseINMZMWPEjpEvJLz57iawS4603snYkXdYrDZbKv0gYE6kdTFt+JVrKA0DdtFQAccpdP1l2XhnZspjT2PxTsuCsrVlm/UciYIl6VrA6mrXnUbvam8rb8ZmtCcxmbM6Gcz+VHD8LFeQDMrMqNKgPcLnSMeXXqdCoQE5CuYf6QGkmUUBtxflXk9siBVOgqtI7dxQUqyb5OTypOGlwh78e5hRNM5TkMccR/D4Pq5Id27ONJfHLEQw8hfEqJqUQygNb2M9hDSvm1VxDOPMK4nPMagjtuQSwME3ORuGnrcxtrjnBffaZ83lMGNeH95zZ3Za/3zC8fqgW9PrCa4OjzaykYdyLSTV4z7rdy7AB5esCOxBNSiXy22Em5AHrNPZDGkRoIZCUYiKTITdGsaqQgIv2d3y361vKDBiMFJglk/rBPbjucGlXibOM1zsk4i7RqMphSpcP2i2VAb0Ixew9a79mJ3Vlf","layer_level":1},{"id":"584caaf9-1fda-48e4-b063-7384435a48c1","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"DLT Rolling Block Log","description":"dlt-block-log","parent_id":"907f8692-5249-4ebe-a7bf-bcec7a632dad","order":1,"progress_status":"completed","dependent_files":"libraries/chain/dlt_block_log.cpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp,libraries/chain/database.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/fork_database.cpp,libraries/chain/dlt_block_log.hpp,plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-13T16:01:33+04:00","gmt_modified":"2026-04-20T10:26:23+04:00","raw_data":"WikiEncrypted:s2jjuqSQeKwD1hNHHJ9DR2MPb35AgwzTacHpcPL0OtJB0zaRNLYJ+orR6pmHUkGhks1yVrOPHhwOHdr0evYd0xEi282qASpCMeLKGxgeabO4wWJCefkdwW+00NAyLKPpF5TRyYZ+UwGTHAheIXwbFWqT9C+s+LA3IYd0iPIRaYDPXsWnOaxlFuByDTz2fGIFbzQbi2OBxoJs3dFF/ZA79XxaWyIxsn31Q00d4o2IBZ4Gal/zej4WgSrxFocEkfqYak6Gd82wv4w3Bt1lpmxaQGZBCli64gzqLG3v8RwIeE1xlaE7l7Xm8w+X7DvW6xbTpLre9hHx8RA/CZJSv5cCxsczw74XS5u7Y7TrwWgbgG8JL9Hzy7G4Q8cYCn7D20vgTK6jK/2BMyOJ5dd1NKC7otss80YqCsW8wtcpotteMqBujxThE3A8Wwl2EEWcUnjQ83BDUm+tv5h3vf0pG7rcDotJivTCSa7JvigtKWF5eqfpmOrCa9XoR+WHilZJG+mA9cWdpYZ0Csd8sAzDqyvvr5giVSaKFYQccNORBfPhc3M=","layer_level":4},{"id":"de01e4c3-0826-4bc7-abb2-ff569ab8d352","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Emergency Consensus System","description":"emergency-consensus-system","parent_id":"15c5d415-13ad-48f9-8ae8-8f00c771019c","order":1,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/config_testnet.hpp,libraries/chain/database.cpp,libraries/network/node.cpp","gmt_create":"2026-04-20T06:57:07+04:00","gmt_modified":"2026-04-21T14:58:41+04:00","raw_data":"WikiEncrypted:yCC4O4QQiwfuc1LsaLvGZSv7iyGIp30QuTXuQp4YbjBPkP2yi2DSamCQ0erkARNQdFUVyIGCSLZc9P70aEvXU2XDlPi9dn8dxZ/3E7hfD7l8VSySXrg3ONRMw5gixEiSYtQ4qgAlp1kaZpLECZqtVHhhBDsmmA1+uBVR7U0iZY6dUNL8LK2WMd65KfmNdbM4Gs9dejUyJgNkxT/xr1Tax/V+2IgVqVpyPB4a6a9DVSAKXWHOU+jJnn4dPNrlf/gNXL653EZ+A0q0bSTttif9xGbjQWG9GfftOYnmeK2d1GA9enmwE92RCdxuID0mPi4J0JraL3Sdkw3VXUpljXRzXSVBa5Mu25FQ6zYhiimMZ7A=","layer_level":1},{"id":"61cc85da-b705-41e4-9860-17177048c2ee","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Architecture Overview","description":"architecture","prompt":"Create architectural documentation for the VIZ CPP Node system. Describe the high-level design showing the relationship between the main vizd process, core libraries (chain, protocol, network, wallet), plugin system, and external dependencies. Document the modular plugin-based architecture that allows for flexible feature addition and removal. Explain component interactions including data flow from JSON-RPC requests through plugins to database operations, and the observer pattern used for event-driven architecture. Include system boundaries showing how the node communicates with peers, handles API requests, and manages persistent state. Document technical decisions like the choice of C++ for performance, Boost.Signals2 for event handling, and the separation of concerns between different library layers. Address cross-cutting concerns like security, monitoring, and performance optimization. Provide system context diagrams and component breakdowns showing how all parts work together to form a complete blockchain node.","order":2,"progress_status":"completed","dependent_files":"programs/vizd/main.cpp,plugins/chain/include/graphene/plugins/chain/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:32:30+04:00","raw_data":"WikiEncrypted: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"},{"id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Core Libraries","description":"core-libraries","prompt":"Create comprehensive content for the core libraries section. Explain the four fundamental library layers: chain library for blockchain state management and validation, protocol library for operation definitions and transaction processing, network library for peer-to-peer communication, and wallet library for transaction signing and key management. Document the relationships between these libraries and how they work together to provide complete blockchain functionality. Include architectural patterns used in each library, such as the observer pattern for event handling and factory patterns for object creation. Explain the separation of concerns between libraries and how they maintain loose coupling while enabling tight integration. Address the design decisions behind choosing C++ for performance and the specific technologies used in each library layer.","parent_id":"61cc85da-b705-41e4-9860-17177048c2ee","order":2,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/database.hpp,libraries/protocol/include/graphene/protocol/operations.hpp,libraries/network/include/graphene/network/node.hpp,libraries/wallet/include/graphene/wallet/wallet.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:46:01+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"ff55fa31-5b21-4383-98fb-59c794986fc5","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Debugging Tools","description":"debugging-tools","prompt":"Create comprehensive debugging tools documentation for VIZ CPP Node. Document the debug node plugin functionality including state inspection, transaction tracing, and blockchain state visualization. Cover transaction serialization utilities including sign_transaction and sign_digest tools for debugging transaction signing issues. Explain network debugging capabilities and peer connection monitoring. Document performance profiling tools and memory analysis utilities. Include practical examples of common debugging scenarios such as transaction validation failures, consensus issues, and network connectivity problems. Address log analysis techniques, error message interpretation, and systematic debugging approaches. Document integration with external debugging tools and IDE integration. Explain debugging workflows for different development phases from unit testing to production troubleshooting.","parent_id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","order":2,"progress_status":"completed","dependent_files":"plugins/debug_node/,programs/util/sign_transaction.cpp,programs/util/sign_digest.cpp,programs/util/inflation_plot.py","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:45:42+04:00","raw_data":"WikiEncrypted:IGJnZREY6KPscHFIFvSUZLukgMoT7nobYS+G5iTdboI/GIMqKEAnrUC0EOcBZj9zZ/s74VI6PVb99qUBnBepJMdF526RgV789tIHErf0tiovByNWnR1EmNStlFbifZHOGEtgoVA0ywva30ngzNOz46FFS3/CPrBURk0VtMGRAaLZw2bd0KWcaCq7XGHJ1/jGzoIGt+EaoAeA8LmDuOefIKFS08G9owiW2dFHICh2tInYjxH++cEUfrvuVO66pzyg6jqJjvh4XuUjFTUurMbj6yggccGGLFz2tEHq3LxrfGp7HYmgmfdKvecx0f2sYlHLzCxa46LmEVgGpo8NeNH9JW4vQ63Ja3QAuYgG4srAFrFRLB1UudeFBaIoRsPkNtdJ/dE1KSV+4dv5qKFk9rGlHuorDRpJ/H8KdGLybLfybQuSnJCY0RjGWyneeBv2pKLNwZUo6tz5aBbW7CjYjeSnxovHkeqz3FGxhxr+9g55YmkcAH8POWEiTadOG3lwW1Fm2Ah6akK8X8zUwjH3Ea93k0PaG/riIaN3E0JgayfWs6AUgWaSo+UJkg/2DJEz3EDhQaxPrFHJ6RR832ZEZwsoZI7KllqTc3ranXIK6jf9CxpoFBcYCcIKYNvbm2OCmmANEK+ATDdPO0qk7Pduv+rmeqQ0Zkw+xipeIbqQ9+CFeUXauRv51+fRed8T/qUb9IBUmT0lJzNNO3GC98nTQKuji3wrMOQzfMmJyn6RGPV7FML2AHKfoOVQY6g9BgYtx/OBk+X4LcsSNyWJy1+jNS8cYm7zXds/60/wIKAhrNyzhIjDuClU1U+jUjuSrNvViGHi3o3ICYblz8NzmOlRlosrj1MvIsB3YhrYYJy3I5Q4n5o7rWk2a15CW0FQ4jhrFDh/lNaQ5hEDL7pDOOx+Ecr1ZkzEWG/3q5y+I0LMVFH9uzDeadqzYvDBM0vqgpcTdlPlVVy8MUIv+0sruHyO7RXeMeXyhoNVQQekhJ9R/vKyggh2IlF+7L3Trzqno5bzNm1QkuE9+kx/mGcEFUU0LlYZwgZKTNZFn13v7LZj5x4og3+i3bfQNkCC0ZAwJ9Xfa1+sfCBQRD47ZLMRthU9yGcFysjlwioTDHHDMDPzasS4VIUf3Mq1MuDmxZ9paj0uRQXSw+xT0GXjbjkvwatK8hf7MbYdjhgi+8wlyxhBvyaylExkcu8cd1GqPctPoN6be0FPb47i/j6pKp5wi9vQTHc6DiaC3Rozh5AMF8mw8fjs4M+ap64xWAiNfnM4MIvS6GGH83oYtnp2fA2JYGBrcdUImSkATgN8GFj7q317o1YLpVGcdekhZT4huxK01Rc2o2Gksy7uhasAAm1r4s079dsZMfuW71p+iQqWQyR+98hGRSNpw6ltD6w37zvqgFvzXaaqvsa7pRQLnF7Y7dH3Akp94GSHAKO4ihCCyGh4r7LD3YERomFJcTam7M85fto44+K6XJQxukuhbqWwfx8B/SbB9K1ibly3Ezbu4xZFbfkGpOLwRX4E5vLp9dLsHDk911cwx9qgo/aZIKOrMjqcqW58Hfe5smWpMion3vwjQ2d2DLB0oY2okd4sxhHcPEi2jgaelmHpjrC5RjBHVtQGmmy7xz5Xf8wtBbSMugINd5ziyTH0j1p+dLWyRd2nmKqfGXmUi4kUQMmU2YRPrODXmhd8j94UXAxJ+vEuOscCdh39BGj3ZH+08RMi6Nb9rsXQGQaItsb0j0qx7TwKZ6kYGejCCyk6BGCh6T5yBIwGgEgH0nDqS08Ms3SPakSZWjiUQMMTek+mBk4p3JXObUlFDUFDtJ4fAyKCPIMLWUzcuZOz47dOvJsTTP+ecYcDFn9z8qQDK49qlo4QCykIPtv1E4P5wqRRrfXNSyI3QVqSoNMWZJJ8Ge9V9XU/NA//7zc8UdL2ZtQPpV917EINBLs41DJebs/COPxfKEXeGgV9Fv6mJEM2wTWXU9klLeaKYa/QZljXTiVEUZ7ztZLQxGsMgBcH3Jn12trfvC/f1OD2cwxzQy+S+5ccuUoJi+tiH7GFw0wDiVyYLwPrn5KhXAV7Jgpd4pnlHtV2eqzQZTA7L7dBisXbxGz/j655mRqztIuxS0RToXagiJj7nO16klBVU3/7HmtE8AIMwEPuzLw2699CfZdIDeBf/iSQ9dmbrRNZPGK389eVVytInxqUAC8SXmcbizAArCe0OLnW7RBxjy1JoVtswVRjZGaYRINDzmSuV5XdtWCaIvK5tXHjAPkgVX7NjzJftSkQxtWr/6jdYVvHcZw9b/0ptP9taEmeyGbbd+p4Tz5d0w9h+zjiMWNIHF3I7g/o8JUHcHqzW/3gZ6bG7VgI2lOuAP7jy7jgzu/v/7/Q","layer_level":1},{"id":"3d9c7759-c5ae-4ee8-a09b-782e7dc6c02d","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Docker Configuration","description":"docker-configuration","prompt":"Create comprehensive Docker configuration documentation for VIZ CPP Node containerized deployment. Document all available Docker images including production, testnet, low-memory, and MongoDB variants. Explain container environment variables, volume mounting strategies for persistent data storage, and network configuration. Cover Docker Compose configurations, container orchestration patterns, and multi-container deployment scenarios. Document image customization options, base image selection, and security considerations for containerized deployments. Include practical examples of common Docker deployment patterns such as standalone containers, cluster deployments, and development environments. Address container monitoring, logging configuration, and troubleshooting containerized node operations. Provide guidance on Docker registry usage, image versioning, and update procedures.","parent_id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo,share/vizd/vizd.sh","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-17T17:31:31+04:00","raw_data":"WikiEncrypted:CMPQKjsWj44q+b7DSXFoBToX7HStvnP9jx6SRFdnUpnh/XYtv33nsbLYOdh31tlW6OF0WqrkRBNjNuTo1gwjg+3MwWzXDjBsllye+KZkyrcgRvQekeGNR7VYT6Yxi9y6L5FoP0iyMu3amQ5+kdk4rHqRPwR+CDAhJ6vesuB2bE3GBgd5AM+ekXru+DA6y1Ng8Nq1dUr88gIhJHKYxZOOJogYnooB93uXiTp/187/WJ0FeyHRspMoHvctJ2ZgfFb51Tvjk4NImp3TF10iNPhNPBCA8rjZFxkygDAHrQFkpAbAhZbt+7XyAolaxMQqD7DGNDijEcs+nfO1YyOrDlbmpOyDqTnkm7ZpFhtLqp6UM/UXhzhl2NxKEHKJUnh0MeHPSfFrrzidTmGqCX9ec+oAVXqbfQwDf+GTKn+Syg3/cxt+YFoboH+d4yj3ZJrx95X3Y8ZaWP9FzkC8+zyXuz6f7p0CRiDnh7b0a88YuQXQ3wQ1SSTJU7Hss7wX6rEB4kDqXbNFy2kJAz1GC78RMJJMgxCz4DlGe/DZVlz3SND9ElxZ1/01NB0AlDwjZn2P8lQY2mU1xTocY6gVfZSB3JVUMOJiIx+wNyR5Ck4WqWHM9FBcOpNPNwlg81CJzQ4mKGMEfn5msgxLB5GOkIz7mQjHfWvgwPCtpEvDXFPTPEk5fV4umUYhS/4nZsA0lDb7zvMImoV2dDCuxEX28jedz2IZoKzMZ2KDk7hMXuK1zdcgf3wUAT79BtJO3R3cONjhQCWzcPtrPEEG4DUcnF36/32UmP7VW67sOenpRfCofi00r0plXKIcG/eJWsgSOPhmvcLquI66E/REka1pP9tAi04lbTashOunmY60i9qrxxmeSfeyd4dPmxWhxv68HZ5P12MJ3W0Z6/KiB1PBemWWh01tQjwxGnPVTlUePlSCVyGmmqg7o1ufSqDJlJo+wAkXg3w8SAKM7sDINnds7n7fzX1aGgft97Goqj7/ruaq9Vrw5/PjzlL5B6MUeAJb4VjSs7I4oA9gCKQ74k/LnK2cCZFU2C46ZIVKotMv8AGokqzWhh8iBLKGn29GRqD4pcD12AIcbxq6kBSsYuIS+SPl7WreHywIWrPwZwA/iM7tzFNvYyX84bX24gQWNAzqvYdBxDG5siflh4HVugRWYJo9InFn6EG26GJJuO18zfFoUzDLa5iPDnzu5Xq5y123ZlrKfsF0OUrFZWhjMTQ+a0c5JZHiT/ulNnwFGf5VgoEl1kkTnNZRI+C45vP5BJkrWRMi4qLg0ObiPEIJHyux0T3RNcgVfY7hrLBx5BYEcwONa66ryw4bCTmd/kSi2b2s+7RW4wGPonyoZt1H7FlH6aNcFB3Pe/qBikIPe/Y5i8jmv4QrWHBSgCxbsiiqsAaqVKB2dIAVsE8UOKKXn9fEpaDr3EXrRdAXCVm7hBD1HadLDI15gfMPP/giGSaQ8bbVmoJZNh8DzxLcN+a80c+j7HwaXnHUhkZ1L2d0GiBel4u7bABJuPdf0OWyBC4lvb3v7JtuD1m0yAWAaMz+iJjKYKjN90TNSM0I22XEL/jX8T2jKQKx7M/lx4+tCrsFvB6ByUekEp4BEwG3rD/X4sdZmUTXYUxgCj0Q4IjZFZFHx8XpfT7Zlql+F0q4ndz85gUgjqt6N8a9s6SWWS/mk+p930I4OOeJHXP5g6BUSNyxatPsnuCTlgVByVUgiYq3xoJ8/bEr8ce65DYfGLAYSVl9Sx/KhlaIJgPjJyift2Ci9TPIIobCFpJHL4HTkg3vbSRaXPjd5dpfccy/JfniXm6FbNDUYbuxJCezacan7X1IpqnK5r6yi6uGiqxDvwB1mi10mi1gsSEQNduq/dK1tlib3kxleUsr3BQYClYdYmgg6/3BpNNFPhWfdPUEs+SfACVEL1NTmRXu+KmtfR/x15Czoe14VU2KK5tTYYEH1f3iwzd+mHjOFU8WPc84GO1IvMXS8lGxqWRECLZ6oVKcCS76e+q63M0fSk6LsJCWQuoxXmakRdU2RfhVCx8bYModoqflu9GXGOAmw2ko3wq61hpYTamDzH8Tbw==","layer_level":1},{"id":"ca175923-377f-42fc-bc5b-b0313c3dc653","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Cloud and Infrastructure","description":"cloud-infrastructure","prompt":"Create comprehensive cloud and infrastructure deployment documentation for VIZ CPP Node. Document cloud provider deployment strategies for AWS, Google Cloud, Azure, and other major platforms including instance selection, storage configuration, and networking setup. Cover infrastructure-as-code approaches using Terraform, CloudFormation, and other IaC tools. Explain load balancing configurations, auto-scaling policies, and high availability setups. Document CDN integration, SSL/TLS certificate management, and security group configurations. Include monitoring and alerting setup with cloud-native tools, log aggregation, and performance metrics collection. Address cost optimization strategies, reserved instances, and spot instance usage. Provide disaster recovery planning, backup strategies, and multi-region deployment patterns. Document migration procedures, blue-green deployments, and rolling upgrade strategies.","parent_id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/,share/vizd/config/config.ini,documentation/building.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-03-03T07:46:55+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"ec0d76b5-8e74-4c98-b524-78e50c91d776","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Custom Plugin Development","description":"custom-plugin-development","prompt":"Create comprehensive content for developing custom plugins from scratch. Document the plugin template system created by newplugin.py and how to generate boilerplate code for new plugins. Explain the plugin class structure, required methods, and interface implementation patterns. Include step-by-step tutorials for creating different types of plugins: API plugins, database plugins, and network plugins. Detail the plugin development workflow from template generation to deployment and testing. Document plugin configuration options, command-line parameter handling, and integration with the main application. Address plugin testing strategies, unit testing patterns, and integration testing approaches. Include practical examples of common plugin patterns and anti-patterns. Provide guidelines for plugin packaging, distribution, and version management. Document debugging techniques and common development issues.","parent_id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","order":2,"progress_status":"completed","dependent_files":"programs/util/newplugin.py,plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/chain/plugin.cpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T08:00:21+04:00","raw_data":"WikiEncrypted:VrTOMK0P24YINQ3w81YokeSPoB5X9Zo/YG1ok/2a/9ryYLsqc1VARxnFCL4h0y80V3hdIQYc2nWoxIlKRpkvalc7lk5z+JlJ/h/qV4B6VpDkk+7D+iI3Z4iiJ+aP+fnnzj9U/9miQtCCYqlIsgWw+M9ctNXxnyPRWq6ZFHOXO8ReBDq830QA0iedXPe15iArFJ0CpRhfTLTTh9ALhUWxyPZRIZcV2qFU6q+pSX3xNlG5GtLnDcpg9SthmqU/6DxfF0a/GwjHlA0Qm5Xf+F+i4Bdbvby/N9F61bsAtP6CIYEEHZLpvZ7bUxWipx6BT4CGRgByiPmQ39OAPt4yyHIaljAbblr55afTAwZrUbm/zWPAE/pOToMuqYS73Q6aDy9pnGPyS7rCRF9EkKJFcUNHl5hDCnShN+8gSxwHBbKCQS/XR3jbcnxP31XcNG3EM+iT2BUM0KL5nyDV7vLfXXzCeX5cVikVB4Xvdd+GxWgmynOSqmhniOSVBSDu72nUH5kJrVNHoq4Xz1GhNe2cJFUTNkj4PTWcJssbQpwkn+9d9n7cvrMZO3AXrXCluG87yDMzBWORt2Ea0c8YkAiIjgVQlJJwhagve5TCBW7UzjSk6V41rVhKTEM7lCXWLy/yp7YpGIfakUS7Lo/hCeMT/WyMLWXmqKUvfEnAGQUp6mO3rRRUZBCbNkG48j5RTa3tfd0ak0RCGAgJNjiGRso9vwW3Jcy2MDZmKhQmBrhDQU+VTIrOkUnE6BBsC19VAj5nax9ACH+hFBfL7DVYoQIGZQWp1UCDJ8KlWyhVOtYYCq4P4NYjpZTqjd1Vm4RASVSfB0H+7fXJHEKaB9G/eXLp3jG1nbt1IKwDLbT9PpTNnIeF5JChqi049/67JCP4z0rbSq8QP5NrL75g2vXzybKuUtBIRlltbRFisNBnLGabdSJSFZ1IhgJOrOeLMYi2QlJho/MC0Wj47wyZwfdQDYqPaKXRBXQf8g0cukIk1nsIzfdnkDFylPauDWhPeJzDDoj+Xjur1CqrVQgeqxTZl7F5qLt9zHcYMBKkKTGe7HXcBOPiBNyiqDaBxvSLGres01tOjl9CLdct1U01YH4NADG9O0zSpORIsSwTPiucTKNwtQK3KhLpXkhbBHtNc45Yqx96Ok8aKTjwFe7xsSBzPFPdzKDgYzK2O0wbdd5cXeoKtUIn2wloznUviwRJIA9vBh7DtFIUZZgubozRwhs7h3AQ20bM/3F74UthcMhn3AWW3KvV6lwe2ZAUufnBvtPcNQJaJuIk2JPwxkm6TgWeb9GjBtMUaFWYRbw5a5qPyku889Fa6+eB0DrWaDsAPZC01H6k847c3XKGxo/2lCbVnGbNeQC4oAmm677HgDhYaI/Igx75b19V1tEOkUDrxbKeMW+zH+M2XVjD0XvnmpZXJORM9byRnixT9WBsPniMEfMc4Wz6cl/LWi+j1zTYfIB3EVLEJAkZwwtMmwaUvaE/3QeeOrNl6PeYpaFmom2Jduvh1TrvsgC7qp4ii/vL6o76+31OePjzmCIY6ELli+eSVt8H4nqRSlcT541ZYf8jchQUrKXuMk1mtV1oLUgZeW0RZkQx6UN/3aqbbeTypZmueX5+evi4WFejrIPWU7EN0NFHUkZlAql1SXbK3nQ+aFAFVOXeafevdvZpRjQaS0j1idhirFDc/N+POguzTwbVsiJ4x1WByRcs4EuuSUTgWZeIxZLyQ5xd","layer_level":2},{"id":"bbc88401-9798-4b33-9abd-f785bfd1c7db","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Security Implementation","description":"security-implementation","prompt":"Create comprehensive security implementation documentation for VIZ CPP Node. Document the cryptographic security implementation including digital signature verification, key management, and secure communication protocols. Explain the authority system including multi-signature requirements, threshold calculations, and permission validation. Cover API authentication and authorization mechanisms including token-based authentication, rate limiting, and access control. Detail network security measures including peer authentication, secure connections, and protection against various attack vectors. Document vulnerability assessment procedures including common security risks, penetration testing approaches, and security audit methodologies. Address security best practices for plugin development including input validation, secure coding patterns, and threat modeling. Include practical examples of implementing security features in custom plugins and extensions. Provide guidance on security monitoring, incident response, and security update procedures.","parent_id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","order":2,"progress_status":"completed","dependent_files":"libraries/protocol/authority.cpp,libraries/protocol/sign_state.cpp,libraries/chain/database.cpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:47:20+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"78c9439b-6aef-43ff-9057-0036ee0ac803","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"API Request Processing","description":"api-request-handling","prompt":"Create detailed documentation for API request processing from receipt to response generation. Explain the JSON-RPC request parsing, method routing, and parameter validation. Document the database query execution and result formatting for different API endpoints. Detail the webserver plugin's role in HTTP/WS request handling and response serialization. Explain authentication mechanisms and rate limiting for API access. Include error handling strategies, exception propagation, and response formatting standards. Document performance monitoring and optimization techniques for API request processing under load.","parent_id":"971f0bb4-1d2d-4258-92c8-080f826ba913","order":2,"progress_status":"completed","dependent_files":"plugins/database_api/api.cpp,plugins/json_rpc/plugin.cpp,plugins/webserver/webserver_plugin.cpp,libraries/wallet/wallet.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T08:01:46+04:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg1JYzeCsCQE5DuJT41k9RTGrPgA2abBsNlRj9b4XM+jkw4/9NpaPKF6EJT5TeM3pEGtAXs6fmJFpD/ClSCokjO5iH688bbQoqGmQTvYhz6YFrqi2ZwZCgLZqxXjeQ+3tTxBnymCnZxB8FG4ZCYnO/aM7mVFF+wX7cs8cHpaPsXcOfr6Hd4fzmo068z3DM7cGFEXM5A9ls1NnArh155cTf2tueq9UMQkcnntwWzMc3neifSA8s7zCMMuRSbFSClMbY6V9dfVNk5WdOY7cmVE3DUCVinPejJUo5YqsnmY9dctLkvnCjD6r/kkmzQGUdQwKWL//akcURyfe4GYPSjtIZ44ZT/CLrBfKXTw7lan46TCZC7F6qfHQ9aadN3F4TnU5H1ujcRcpThzxdMPsuZ5BEQn14HqOBg4t1kbtlKTeiELTT55CEJBjW2rFbl+U9FB08CuygiPBZllXzpMe0RU4PDD9z79SDJBWHgOSd5WGX1YGQkYKq8L4nuJtoWQlrZ0BPAWIbvneiGiA3oNibLVvbq9BAn3NLuJI+AHJ3loWhzJGAZn6YE/6InN+lcFAd947H4Pe35OluAh6wFSB+XAcNyhKupdb5VKxOSe3opO5Qc8am/tofA8ZU9WYaCGGUEqT+/e6sSfhJsMLLmmY4CNJDdej/QfScNXvrkwcxc2LiYr0NgtIOrzGpsQCuhUVJMPO5LTXSgIqFPE6My9mOIRFinxm2t95cIsVXW4w9PLc3nX8s4sDtfXKxBJNNVzoPQqh4ovzWp8W0I3tY9AJTzVwJpyS3nRWg617dFDa4qGd2+4E1erMFsGEK8BgcY49CVHEMFf9sT45cISssrcMnGi02O6q0dnjHEEeAAY/0T9S4FTN7i80L4k4ZmYEqxKSZLyvrD0737gx9ST0tKa6JpoLG9tT9P1uZnS53sE9aD3HmZkiyLupKeDDv+qpXFpKQoFnkXRndxAB3otewfQhgjJBiHkvHJOUCcGwu7oUTksIx2X+p/HOUVm/a/YaOLOlZg30lXvoq/NBVfV6OXioS0MhhybUF1ZIFv7bCJjXmKAjJ8RzXFBIteGan7GbAqfpCj7QXfNKDIbLTzTS8Tcc3xAX5SftkaJP0F1zb/wPjohfgyOydr9/jfRh6sukEK9rzTfSOuFC2Fbbo/6WmxuoHaivcCwy0lnYP6CZSdGlum5moeyIrqTQBKfgud7vvmpVu7KYrWXaidCLR8KPdODZbPhMACrFawOh3JYjSLEpfTMgtfWikcDOVPjVG52gBOdZNLUQlkJi/ZOAXSmAlMebJ4m1bVS5tnVK9x2Xb3MMwNNJrrlh8aX4ugvzgu71ryH9sfQkOi0JNkbmRqzITStS4cC3qdTs9C75L7Vl5oaVmuz5yGSn","layer_level":2},{"id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Network Library","description":"network-library","prompt":"Create comprehensive content for the Network Library that handles peer-to-peer communication and network protocol implementation. Document the node.hpp implementation for network node management, peer discovery, and connection orchestration. Explain the peer_connection.hpp for individual peer communication, message handling, and connection lifecycle management. Detail the core_messages.hpp for standard network messages including block propagation, transaction broadcasting, and handshake protocols. Cover the stcp_socket.hpp implementation for secure TCP socket communication and network transport layer. Document the peer_database.hpp for peer address management, connection tracking, and network topology maintenance. Include the message.hpp structure for message serialization, deserialization, and protocol compliance. Provide examples of peer connection establishment, message exchange patterns, and network synchronization. Address network security considerations, connection pooling, and performance optimization techniques.","parent_id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","order":2,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/node.hpp,libraries/network/node.cpp,plugins/p2p/p2p_plugin.cpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/network/peer_connection.cpp,libraries/network/include/graphene/network/core_messages.hpp,libraries/network/core_messages.cpp,libraries/network/include/graphene/network/message.hpp,libraries/network/include/graphene/network/stcp_socket.hpp,libraries/network/stcp_socket.cpp,libraries/network/include/graphene/network/peer_database.hpp,libraries/network/peer_database.cpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-04-23T12:16:50.9986922+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"7108377f-502b-47c6-be02-3765463aed1a","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Docker Integration","description":"docker-integration","prompt":"Create comprehensive Docker integration documentation for VIZ CPP Node development and production environments. Document the multi-stage Dockerfile variants including production, testnet, low-memory, and MongoDB-enabled builds. Explain the GitHub Actions CI/CD pipeline configuration for automated Docker builds and testing. Cover container orchestration patterns, volume mounting for persistent data, network configuration for node connectivity, and environment variable setup. Include practical examples of running development containers, connecting to test networks, and deploying production nodes. Address Docker-specific build optimization, image size reduction techniques, security considerations for blockchain node containers, and troubleshooting container-related issues. Document the relationship between Docker configurations and CMake build options.","parent_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","order":2,"progress_status":"completed","dependent_files":".github/workflows/docker-main.yml,.github/workflows/docker-pr-build.yml,share/vizd/docker/Dockerfile-production,share/vizd/docker/Dockerfile-testnet,share/vizd/docker/Dockerfile-lowmem,share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-04-17T10:15:28+04:00","raw_data":"WikiEncrypted:CMPQKjsWj44q+b7DSXFoBXMIGf3GaM3SGkmd3tknFiEqzTeBe3V3x4Rl6LRWK8ucLbbUzS3JInyHtCKQF0ZtTRFsUM2pHuNQBR/McP7zrp8kqpYHwp5RGHgFScAIJwhQeXMWt06bLnmVd5jsAHbioGS3UmhZLSzkbyFrOFeAaGEXV1hChm+rrU6fiW6cWeDh/zmPZpRLLe9VMrpkoEeRdFbzZT3WClOHLOc21Q2QZIyRj/POcXUEOYFj7lriSL6UWS5n1a2f0990pasHQZrSROtt5Xmal47gweop/quaPDZwrVU6s1NnlXmCs6rEr4dJA5PRzeRuwA+IdaxWwk3Zb80SobupVgM5K8g0YWDexoK15CgzQujFwTMO2ERL8laZv5KLrIl5W8f5jaoBbQJ/lpn3NzJ7j8V5G2HV/Pxd0mQTNJQnaMEexQshyUq8A92SpD1Gs6HK1JIdhUlzhsRe1GRGoJuuPM8iA4tSta7F+VdgOw1OQR8qMP1qqr/fGPBLGlIv+hJiRrCjjNH7qpZbCcJ+PKj6aYiSpYSoEc9nvZtyH2+YnA2QhNmN4hBmJ6cg7dQo0aeXxovS/SXyorpTTYYDRllJmEvXUA5rZVLd9m4JHDlnClDCncfys3IV4iX9C+0Ah1xl89YcyJQl8XkY/g/I8pqvKkNxvEtpYL/TgSqROPQOwHOJpgfns8EsUoUrXC/j5oCa84HkdfonOoxNcSpP3tZ2DEj/grMQcCXy9p6atU/zKxVo34A94/vTRp+1ipz5l85OxMoNLshI/I3p4+dAn7iuK/aEe33cSFaI+8Inb5ihmdHlttjs5r/LOqmR+MT1od9da+q+eAkI2NU2wMeDjjQrohsBGZiCCc4fTm99YkcmaekEa1pKCELRIAb1HQKR8nJ6Lvcl3fXj/EddyME3X+v51draQWrzB84H0iqVHKBhvctVPQqp8F7UTzC9ZV97vjpmMpCKOUatXSiXCEA4U/zUEZkSXx+Om7XEhUGJjvZ6UOcd2JW17WKykU5RkzualU11W9DGXaQwMkZI2AY8ipfR1C0R7ZBmg1v3m5Ae8vCCzwjnIP1mkLI+YbifLz+WQNRyyx529VyDi+bndgCEnArzpZePLaLaIOTGwU+fupkPjyLtgO0Mkpjhg8Vjrr2boJhLj4YpFopCDcD23akpBgMUjtnkleOZIaM0c/CSz3r84qmWigf5JNU6vxgBsuosmE1RIbj3ql1+qtCEhfGozSOYcyiw9lR0rNCq2UzWi0fNGU8Yu36iNXw0nld+PFDTSNPLb4Ed+KkqeMzyIIMaPjx/FAGy7UnpG9ZlfLGR4lxxGVY2cOCPGYj65fMeBBL6AUWw4J+SxapwO/E+8gfdYpgThk25UybTF2EpYO4Gpn86aa93NSggOT18LsOWm74ys84v2mxBJ6ds1Fbizl3EJX4jLUG0bJBR6kpEMOwkYEgs5tIby0stgF8anPgJC/Npttwf4iGkZ9WrL9fDElVv70dYw61rXyzQV7NyplySti9UNFqHPqNYeW3PW1VdlXOAWcJx6ic4QFCQPHeX/42x3lcgwDmgUBFNuVBMzgHu+ErwRngOCG+eaBoN1RtIFoDrFTAuf17hiDRMN5yE5hIx9xbtb9LKoVnMnBRGHVt7zMpPE8bkGlFDyYfs/0j7xtso4DtUkFY7kOZcgB3HWnJfMXPQmCMahTDHo1bnk5cwa8WtJRLE7Ns87Wt4DgTeN8/JZnRxmY4uEOzAnehwmcb7I2OUEVk0ucosgNmJk56x2PxTuFbfLAgr7ZXznOt5zxJLOKhaRiqoY+T6fbdwdr5dDazRxSqhLEF5KYJbuFEoPvfILO04KeaXNdPZ0GzZXRHUJ+saTGDDDSJDjI/woJxYnpPrA/ejN0UIER/hnmJ4H2GlP6kgjCqt/X6f1ybak0FEPX+1HEModDzw/Cy3tw+ZyEROrOBk8q1iE1FyAoE=","layer_level":2},{"id":"61ea749d-b063-45cd-bf3e-d8562ba34696","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Network Debugging Capabilities","description":"network-debugging-capabilities","prompt":"Create comprehensive documentation for network debugging capabilities in VIZ CPP Node. Document peer connection monitoring and debugging techniques including connection establishment issues, handshake failures, and network protocol problems. Explain message propagation debugging for understanding block and transaction distribution across the network. Cover network performance monitoring and latency analysis tools. Document peer database inspection for diagnosing network topology issues and connection quality problems. Include practical examples of common network debugging scenarios such as peer discovery failures, block propagation delays, and network partition detection. Address logging configuration for network debugging, connection state monitoring, and network traffic analysis. Provide troubleshooting guides for network connectivity issues and performance optimization techniques.","parent_id":"ff55fa31-5b21-4383-98fb-59c794986fc5","order":2,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/node.hpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/network/node.cpp,libraries/network/peer_connection.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T08:04:07+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"0c9b41bf-680e-40eb-a163-c34a13239b1b","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Service Integration","description":"service-integration","prompt":"Create comprehensive service integration documentation for VIZ CPP Node deployment. Document systemd service configuration for Linux environments including service files, startup scripts, and process management. Cover Windows service installation and management procedures. Explain integration with reverse proxies, load balancers, and API gateways. Document monitoring integration including health checks, metrics collection, and alerting setup. Address log rotation, centralized logging, and log aggregation strategies. Include integration with cloud platforms, container orchestration systems, and automated deployment pipelines. Document backup and recovery procedures, disaster recovery planning, and high availability configurations. Provide integration examples with popular monitoring tools, logging systems, and infrastructure management platforms.","parent_id":"25110dbd-3911-48e1-b870-29607c837581","order":2,"progress_status":"completed","dependent_files":"share/vizd/vizd.sh,programs/vizd/main.cpp,share/vizd/config/config.ini,plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T08:03:49+04:00","raw_data":"WikiEncrypted:vMsgMax61wW2sTWhXd8DH8qAw9CtLog8cZ1tiD2BFP+U0bXW3hqFYf3RL9xyiBC/9b4sFP+QmOk2wmA/qm9hf0gT3h2Jws99nvB34YCyl5dFaIRl84rx/o3Zykg3tatTYFluDC7sbSvs1O0o8gMlPHhUonDd9S0Wby8VPQZNvmSEJ/WgHJJygKImU3JR6hCKaVPIJYXeKFOu2MMIoj0sshp9BQnlc1PmbUL9S4on4eMkB10USK/Ro+RgIaYSkS55t21sHWbLTo0AlxIYQ+u0KpIzryme9wNUHxNVv1/IR7MrAd/lUW5ytYLeeT+8Vl87eR7Z3oPoyjsZ3ZbIID+QIAzdNu2832ZZA7xUUgZJBC5mMJz9XR+Ufm671kMd/tgGWmWR36CAQ6tg5WVoTK7FLLOP7NJr8n8JYqcBpGXHRoFWOzLaYd/eBTgigAT2//TsubTjnTst0Xr5wCwHMEizXHcho4YT8rdM97WryHG0LqDXPXpKfJdorLOlz48JKDaCjVGeE0oO77OerszQWRaaHz6Otzq3+Suf167Tp6EQB6ErQpC3x79NVUEBJkgeltwq8BZzB7mT8WjiD8dzA0ouZxOkfye1tPTKgdN9llQJQM8YmsxV7dzAJ9Zk4fQR32f2I+8aMONsLHq8Ye0GRjHmVjSP/I59+8qzq9/vTKE1DLsRm4ATPJm6qpIKnbhA0L/QUgRkjpOOiUiBlYcKuzkNtxwYGT3Kl2H16TVZv92wuUs9Q0igRFhOuMXtMF9dOAD+8d1kAMc7s4bQJGqb03MNS52ZDa2NIjyeDjP0N/ZIVSlCLqlIXeF6nFzlI1+2RLWMSqlSXt6WiZXkhtgnbBXQJLp4ZBaKnDBezrJI1PXBohf13XZ2y6AXkuGKjJwe2fxE0A8vynkyIyTeAHBpfoXcdDVI4GhaTQMaGsASUAJuQjOCFcSj01Z9IjxjFv9fddpSlR6KvnOhqrbnZhltVnNCS1CwWaGGvp6fakDvnZR8lnmI1mukzzde0zZ2GwMrypQo4wuGW5bUH/XJpG/r2UwS31ArKbP6E5Mfq60OymRDINMWSJD016iwBtvaEo1S0F1Vjf4P+4v/qFKApG9mMaDKbbKoS/PxvkW7YxbBhXqSws/TlykHsuEDeoVK2qNyZnn16LP+XaIog+yFNJBrS2FuZVo7pO6c/qdLfuiO550zmM/y3Iq9vfDEywnwrMah00LPAPrIw/Dmqwzn+PZdfz/GeSJifvAvbHN6iqVbUV9Est6nDFcNVqxGylGlPui1mJ3eFg0/wFAKf61Q4yzylgEf9LWqzN8hl6GDzQvN2IY7J0GbIzEPoh3fayxchmU1Zeom4xwtv56vCZFnrdKwgAQ4b3HBzBT75pYKEeNtPfI0y8BJNbfYdA6jocqZP0rnE2GTTX/2LIi+d5ftnKdahlv0oDtGTzHUEnh+q+ymfrrslIS1YjUiWsYi6g2LlRAmZ8gzhK76DQ7/dM8k7Q3SoCRk5z/kcLrgy4Z+lSLqasmUGhewoVBLdudC/Eam77SJ15s/5T58WIE3NT1UOw8h5O5j7YSWM6ErjZC3uTvEVtmRhBi3To4FqO7dWQW2Da8QJewcor/ldmjaEGpFSBFc/6ROzdHI34DTjOHmfroIsfx4/UVKbxb3RgViP4DVjAQj5jnLvHM5mdVIuI6vaHF1UAJZTsyAfcqHB6ryb9xGYZ22mWk11OakmTv73w0PCQRHAR3mqVUfiFG79eu7OLe/5+f4VbaxwegE0DGd9+WbkQl2tWc6wwm700mXO+ZWAB7RbkXEujlUF7HZ6lFfvT6nDQxEnb6riuw/0+d8RHlIWR93YaCmx/7UV+HhspCPHD1G7vaG2lFLfLaEMR1FucZeJsNLzzYDyqTfS7YNjOWpfjCSmzjS7qzViO7leJGrPVv47n//","layer_level":2},{"id":"f5c3d1ac-1375-4c51-9683-542e2309c154","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Authority Management","description":"authority-management","prompt":"Develop detailed content for Authority Management covering permission systems and access control. Document the authority.hpp implementation including authority structures, weight calculations, and threshold validation. Explain multi-signature authority requirements and permission hierarchies. Detail the sign_state.hpp functionality for signature validation and authority checking during transaction processing. Cover authority inheritance patterns, custom authority types, and permission delegation mechanisms. Include examples of authority configuration, signature verification workflows, and permission validation scenarios. Document the relationship between authorities and operations requiring specific permissions.","parent_id":"84b360c7-2115-43aa-89df-1205d4f6231d","order":2,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/authority.hpp,libraries/protocol/authority.cpp,libraries/protocol/include/graphene/protocol/sign_state.hpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:17:58+04:00","raw_data":"WikiEncrypted:Jgq9fCpm/NkqSNIWYhs+n4jiUARsKF/Jd4ydE+1m2zwQwWHJGmtOerLGG8TW7XbS4S/T35fVYB/yJZzgovCH718BLdmouX/kTxDmd8tNbBdrrta+doQxNGDkod8z/WaaQYLVb4IxX7U/EjoAr7/P+66vrhi6RqYj5fBPtrSgLJUW/RR9MCpaEUYd7pGcSU6JWeCOU2QyjuuYk1SyjFg+g1rcuLzhrRhHI9zKfjN872ae11+XxxBNxki1ElyJsf3BevyOBdOTFNxxS363QkNd/vpvy4NvNUs1OpK8DvQeMiVwEtO8/HAwIm2nwoQnxz0E3q+QPoaUTGSDd7BN9thcQWqlBd1D6lTayxEUnWl33CQOWEqRTocDEicRTnxYYEwujQCeNI8NVyTgieqInU4N2L/J58a02Wz8RQi6AJXBFQ6f1btOEF/VJS5xkGYxJDnigIiZctgWc5R/uQ+g2s9733TZBWZBG5jaZK8dp6ZIH1hX31+DnMRzJnO0xqnFq1JGcThh3FXCYiazMyDvVG4xlJVCLM9Jg61r4bStfBEfdQofNXQXURMWrAWgVRjgBpvKKSIsaJzo/m/mwupcs6A5ROCTsUktizLhzKbWqTUCOhya+jnqDYc966T4LKBkbRgz2G2viJ4xn0ApRwTxKB8eYeMeTPYlpmHdYAOGVqe3dAPJ9kXect7UPNO49edXXDW8c59l+VwSAGXSRIPWC1vBp/hFyYfOI2oO1qF0XiloGQrv69txOEG2PmXtvgz8Wj4UVm6zpeKhwcw/kdmqNBV6EAd4wu7ri2GlggsPU3vp85an6T0UVHXL/OxtJiLQWwrTpGOjaEAo7uCVA6F4KL8kKpsAIC/EPq3CBO2XJkylhWGGK+vbLH1QSzROeOoJQN/RmOUXveFYAkQxysQJi36XfXtBEcI0swK/nJPGsjje8+b8vZpoBlN98dW8t0Ns5PRfjyRuhRbCHYvN9Vvg6/5yuRQFHQPY0GArydv24Du0b4F4jYEfq1U/U0SqxKU2uOBEONQjr873NJVAjWVmM/TChAhjIgGPuIf1anSvWe/+3rCjs9E+YgrTU6fW9XKVinf/wF229mjENAXVsUPeekDSua6JWR3GoZ4n6L08jD57Z1GJDYvZpQC6OmiFbkwl0jZ1LVjqHPMMDtKd+gzj2TOLDHjEewcQLtTUws+fE0Z0A1j2oJOWR7ffPuRW86eGL7eT5croRguM1miNpTx3b7XjIY05QBx+cZfEW3dwauyynARfon3eYMJ1ywVqc+NeZ0uqVxtRhlXc+RD7Qt0rIu2irReEDQaz6Ruvi5GSWsNZSiAsJgNSMoBc6vIcU3vu0nUVZRIxQTZ2E6URcuRuWHR7xxtTZGl0FW7qPWYddIon/o93Y1kOj1tqKyGP3s1OghTd9vzmGKrbovd810tZXWyLrz4s1G3xf/GU9K7mYwUoXKtAOkbj26gosy2d7zXTU7ucfwn1XhZBThySCG6CjiRoCU7dPOBNwN3hcOcpagEr7UrxQQbiFwrVLSa5uy5t823DFb9iMAGkJ2H/IJZ05LeVDBC8cvgklwS7BEkMrU1nIcH0qUOhDN+PiCz74ePlbsdDCXpJ2XcfTk24dkzl05ZzDA==","layer_level":3},{"id":"8f172067-7581-44fa-b206-fd5819df8d83","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Fork Resolution and Consensus","description":"fork-resolution","prompt":"Develop detailed content for the Fork Resolution and Consensus system that maintains blockchain integrity and handles network partitions. Document the fork_database.hpp implementation including fork chain management, branch selection algorithms, and irreversible block determination. Explain the fork traversal mechanisms, common ancestor detection, and chain reorganization processes. Detail the block ID tracking, fork chain construction, and conflict resolution strategies. Cover the witness scheduling integration and how fork resolution affects block production. Document the API methods for fork detection, chain validation, and state recovery. Include examples of fork scenarios, resolution processes, and consensus mechanisms. Explain the relationship with the blockchain log and how forks are persisted and recovered. Address performance considerations for large fork chains and optimization strategies.","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":2,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/fork_database.cpp,libraries/chain/hardfork.d/12.hf,libraries/chain/include/graphene/chain/fork_database.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-21T15:32:34+04:00","raw_data":"WikiEncrypted:LF5XH+WZjZXH77Oahqhu33D8kMc2V5EyZ5sCQJaB6AbkaftNweUtSuIUOV/O1ju0L84BXRl/rB6mkbN9lJNCBp8gKu1Js50cynDLXNwHl9v3CFjgeOELp0KEyNk7HrPoblpscxDGsnAxbjU6uksUs7PZyWJCAzr8jneUzUPrG6E7HCVuh5sWAwE285YtEcSXwBJAvdW996g3nJvnkJ/9OU37HNMopNQxA/EE4NsxPzCxS2Le0wp/zVtXA2Tv/h+CoXom8jR5is1HxswvqLMWlRL1ydiDaEMn4ZDiHPqSR9m0S1oRiui56e1aOuuBYInexLa7a1n+Kw+ysf3Y5ww2Cp49DyD/E08WH4E4opB81FKYbtoze1Mw/b7kqdxHUpJQ3nZajLOOfm/oU1KynvIs6V443J3na4/h4Q6cpBDkUF0etRaXgWHx70Ht/Ks1t5pmNe7fFgA9e4rGyLMoRV38CorEAqbRfnJWdqcqsA7OUMTv0sFGntYOZaN/OItauKvfdOOp+KPLVPja65BWdew5ejCI6/mq/cSr90S1XcvfEUh2v4Zyx5w0d7mSFK4GCcI9QzKXQ1wyOYpeOJ5AoVWob+PafZDPtkmCEfBsfOvMRTzscilccfvGwBiSFWfIpPj49UYFdF+dMmp1yNqewLPdmAyXALBYYwUIsNckeaNEMtwtF6cH1fC8KsMpWwA0Wp392B+BGq7Lay6SQVSdt0eyWgBdxHck4diRxxr0Oc5fu9D5DDwjp/ZlStApcNe/SL7ssRUl+AU+KQTAUBKGSuLXmxuySdg/G6kd54QDbGLkFItNbV7LAckpyEV7TkAAm7lQYr2JDW7cVU1aJC2cRyfD72BVGlXA+00JttJaU4eREWRjWT2BNNoUm8dk3uNBmC4UxaDGv0Iuhuz3fU5plGJghKgPIFgsl8KLSqJ+TKBm1ZrVu4nYBIgK4Sg8ufhvHInXw7dP+yOfojGX0O0/QmQIgkGOBSd4l0mo9wd5j5I+ffHrL0pSSW3sUY78eVAfXwcLMXLXsggz6QPmk86kihvU8nvuORQd39gPujX+gdlyieq1v+UFvj+PNih21VeC3knG9d5b2hTHH7uynom7CjxgqWhguJhyjpxNSIM1qJq152kTvTFksfiULzVA34IMP4DtXX9rkPkW3vLp6IJUxdwhkgIOTO38ZJhOyQ9Lbk4szcxFquA5XOthJ94QFgp7LMF5QqgMwtafmX64U17fJ0kSdGIRckAx30tVbrOI9EYC/yZLIs50s4Bw+odBKe3iCMaZtgquCFxZqttABZl0+5r/LnAy8ICpymy4JQ2b2lAZEDNqVtAvrtIHYkXalyiWR4CXZGju8NmDytFK5ufxGLdgrHYjNQ5T2yxPanMV86bhcnLrF0XJNvjAreSSLH8YOq/mgcq9f4vBf3gkIAf1hVYiub/2abkFCEi0/nVl06Hx+jTKWDmT1L8/ov0OULvi/v2K2l+XK+GxzvCZ0xrM/lCOoCgR8keZ+QiRdTSeANDObY7vf6p8qVmTmXnTaJRAy/1s8mlolKOadKO/Y0Szp5vGnHp1Hzts7VRfIYMDxOnJ8E+I8gURt1B+npguJyhh0owcNMI5xEwGusv7Ilo0vH0rdNHNzPAWIcL23/iIN1a5SzVeC22xRfkQ0hOXY8oNJyJMrcl4X+sxlBMR9smyHc/qUoobf0BYhuWp1SA1yLU0hICoeTqy2037fpkkRzpC5upHLJe62zpUtWojzlBzhrnN0kT2TZkoLGlQAI+n1WYEoXkVyLyetdnIz8UDGtykmPbJq2Skba0vyVjQNNl1TTwK4+6oTOMiOjdPe4FUdZsXI/WSmIeIf1/kLCQhJzeVSOqW7KdQNpuy2pIpkQ4sIc+UqEitPPkvsWrcnQWdakNtVd0=","layer_level":3},{"id":"9a2b1ed3-9679-4f74-9819-f04abf116d7c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Message Handling and Protocol","description":"message-handling","prompt":"Develop detailed content for Message Handling and Protocol that defines network communication standards and message processing. Document the core_messages.hpp implementation covering standard network message types including block_message, trx_message, and item_id structures. Explain message serialization, deserialization, and protocol compliance validation. Cover message routing, delivery guarantees, and message ordering mechanisms. Detail the message.hpp structure for generic message handling, payload encoding, and protocol versioning. Document message propagation tracking, duplicate detection, and message validation workflows. Include examples of message creation, transmission, and processing patterns. Address message compression, fragmentation handling, and protocol upgrade mechanisms. Provide guidance on implementing custom message types, message validation rules, and protocol extension points.","parent_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","order":2,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/core_messages.hpp,libraries/network/core_messages.cpp,libraries/network/include/graphene/network/message.hpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:20:04+04:00","raw_data":"WikiEncrypted:IaaHBhg4aKVK2Z27STIpf61hPTwuvjJw00wghNRz0dqXZFnsx3+KXuJLymQNNBhm+4HmlhfiPgft+nBCx8lK4ljvr9u1N7eyZnhnwrufcfJWtCJmJAYdT6I/MbNWHUQIKT842G2JFoDfikSnGXpefzkqbmJ9h4HkLavoFO8GveAAfrmDKT8BrkB45sEUfJuABljdMo1Z4Po59a0a4om8B5rJ8OUxvmIemXI2d5efoKGKw5+cKGNGgMwYtApsVIFedpjM4uFtQnlachraAR2ooVuqRRO80ib4jrTSv6yeZ7H51ge5rgRDeYcFxsrJCoVdwdGWygXe8okjzamm+iH8qIoCmIeWbmGhMXfFlxEK/xb+wwY52MBM4YD0HCpQKrh+FO+ELHik/d6lsYRY9gPA/rOwZAD/lHaoyAvRfwGwxZBnI9v1hKYnBr3jkgYNLd2b4C+SN6V0q1D/J5y5JrGIEDD0UDlw9LcEozUbvr8SxlE/c3ssjyO70AP9AkWHy0n/edPKa7I1P8a5PI/LkoGgkbZsgmU2eWdzzRHPD+SAnRdp/wbF747R4uXmCN4zeoRvcIx7OcXyzlai1574JHXrHUXVa2PHa0w8B8126wMxdEQWP7//PnhsaFyMCTJtgGzzl4Z9itYmtAjL63fZhJ4/ulTh6nSVcAaG5zFsedHUkFowgbseLtQe/VZ/cnva8HtoTWZN1mFJ+RqQ9jfwt6LYrzEd2q3MirnV2jaYHYkcstr51bztnhXvUgkhWL+e3AELp6mphweylQexxr7cElbJkAXJKfxSoGgi6yrwn8HZrCLHucOZYM2oPk5hxPtgYidAWjD39B7q9sD5fd5HTpIbtXghy+Y0n03NfM1FVHHCxxjzfqjT2zJHMmFpwEg7TMxgVKXNzsaoXhfOVluWDB6boDg9qics2SnUgCnPjCrCaUfOL/+/3CYa+UyWEEKgG7CyS5/Y82EKHbZzSus9o4j4gANndEAiosEL3j2nl89R6zEhtRLCWEcaj2rvM5aHgTjhKovqUJXkKsmixnyt5qMgzbo5nsmiBjpOUlvVKwEBSXsLxENv+jTt+kgzsIbzy1Jp5xtzSiQhvHOoLZ30UfUSrf3lMZ6XwJ/uVJbfRPnkQxayMicktwKeQtCn4FChxyYZEp76MNcO23bGr0HXdcFwVB+V+6sOw35crzsrOX0G3Y5zxdwwg9AKekR1gVUEilUZk9axa+YC+9LJy7dzNX1rkOd7bVXWcUs1ZrGXwQEKkB1BPYhOsWZG44+DyxwIxnRp+jOUXNaPqE5EejlZDlomg7S1cOn4gOqSktzaWJjoGTILesnSEh2cL6x8Wy3fBDjYFWKF3L+PuCNh+pD4ChQBrf7ypQp+hBk8SvwZS7dp1cjzmzJZxVoJMDfb/TM4Earm3H0uHtPgyNB9Vtphl05jPHAf0f8vYuQ+s7cTaTyab/jpEqRdDzl6/cALbcywQ1V2aRNc0kPxcV2Zaopfp2UHzxC77e6+R15VG0KlBuF3PObzKl8w+w5wkN8x/18+NiQGljAIYuoslW70VeMMwUwo4fuB0U7f0r1Q9yeYVdIdFTT9y2SoL7yQgFs0wpWrAT5vjflJ7nPeIj9yMdKSOh6orsFq+PRqcVGaZPd+qVoghULPAqhBhvKqEe+2fuMItfkb1t/1K1HkFcu0s9KC8xYkZFFbClqzym72hHLhRXCU+9mTwqhkMHujFNlXu11k6j8K1Ep2jNU5J2M9v5RO91IEa0hRaKxJLDF8/SuYNgZoWdOIjPZxsoZyg1dmtaVoVp53","layer_level":3},{"id":"33a7db07-2dc5-4def-a181-8ece479e6ceb","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Dependency Management","description":"dependency-management","prompt":"Create detailed dependency management documentation for VIZ CPP Node CMake configuration. Document Boost library configuration including required components (thread, date_time, system, filesystem, program_options, signals, serialization, chrono, unit_test_framework, context, locale, coroutine), static vs dynamic linking options, and version requirements (1.57+). Explain third-party dependency integration through subdirectories (appbase, chainbase, fc), OpenSSL configuration, and optional dependencies like MongoDB. Detail dependency resolution strategies, version compatibility matrices, and troubleshooting missing or incompatible dependencies. Include guidance for customizing dependency locations, handling corporate firewalls, and managing dependency updates across different platforms.","parent_id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","order":2,"progress_status":"completed","dependent_files":"CMakeLists.txt,plugins/mongo_db/include/graphene/plugins/mongo_db/mongo_db_types.hpp,plugins/witness_api/include/graphene/plugins/witness_api/plugin.hpp,thirdparty/CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-04-19T22:00:10+04:00","raw_data":"WikiEncrypted:Plae3AeD8kzvx5cS0SI01VxUgqb4buHXTzzTWj4gTygU7IDKBYr41L3/hTrS44leIMVa8ywMUh248ZyPirs+eIVofLm7+N0WlOX6fg0khoNhXtfGI1JGQ9weIgIVyjznsmVNtjh2fiQQu82cjIL5lPsNVUenQmG4sEvbSS9dpwJ3rEyNbj0zNlca/sosLrYifdoLBf6wi9rVRkw0R2HPbVqv1K62V8d2h1xVxhoD+mzciX08y+Y626vWX3TQ55XUKWPPezNHVOIkuhKKK/FvzNNEOWkkvBod7s12N1y5zsBJ7OnVtQ+te+Oraj1mZvD3yQNlf7OoLG+dWkEdXHOvf5CZFFffTB/IVrar9FXThN/I7Fc5spsivRhxmS2EtHqcjzaJttxdCdRQQ/BCFLgiPZjRjOfDJSF+XwX5s/wgAZIzXU8Fs+Q5CU2VClMl0ZBUMCFhbGkGobGoibrJW0gv+xCNWo9dvQy90S9DVkg2JHDWq6NQLU9/Ck03b6pCkb4oUVBlX+E2FjRHbbZRNMSRaaKp/+A0F3LfmijkIZtUidn2Ud5ssgcgnZ0xWqxULF0L7nK0uOpChFpQE37ofSZGu0ZYcgLBqoAqGM3z7FWLOT9QNFB2J2ghVFeM8ctDl15x5agpJ6c/n20KeYIQQ3YbyR1w7lEJ2DmAIJ115iDZOxh6T+la0Dxl1e6Z6gGg4R0x1BnYlD1RaeyHxnbcJpmmd25fYpjV0bwt8FMkic75TZmS6y1j4LbrrxRqsSAoq4YRuvS6ry5PgQBOPti5pLq1FtNs7nMTUGfERuRBF77QhfGS4zi95OM0MqSDSW1NNeL7hTmzhlbVNJzyRvgd/6gkuSoyWoccHQGp8IpMeJglYMcUS/1agV1WnMfkJO0IgyiMq03NBKaIDDyvY75Al1xdsUXFFSwS5PytKsQEt1WFbqNBe1dxZTAtRspq5I8JD5AAdK7DQWcjEZdeYgr305oWce1+VxuCkOHk7GIs2j/mFf2bY7c8pzqUhVQNYXfZFHuKet+VgRnEPP/FGnsPmbto4yg4y8H7RWaOD8tyi+e93Di9ifGP6c9XBzLRXZNceCcgqhEQP39gDKqBNFgCfEwmTexbqkDzoAB+uSkFe1g4ABb7klM7h/um1faCYTTD05mQgAcjQlUGu6Kig0OuvO20D/u2w+DkhZticFB7WdkEAMnzEA0J34GWtQjN08T/5j3K1NnlDCxAZQ7sS5MADnsU5FA5/ccz5ZPmHPTsUPPNcH+YLNVERxwyESTIBAfTgEhI0GVthOsevmZIAgvtZGLeT/vIFMhv5bywfq6/Ecu4Ns/AHG+gT0UXUg8r4Nqg8wgE94TVKAkBcthaCrkMgzh+dpgtkgf8dvur67TXqpUHdhuStZpvRlPhfA22RJm9XYNB7NZ+OLWCVxzmEwyncrvdieFuAP5kZs0IY6Fa7kvZ8E6kLTRwHvZU7BuMutV/73vTY4TiA15o0Z09KIRrbYRie/XkiK7Mo4Pe/2qhFQ/hqUvC0GpmyT3uQpk87+6XQO6TUzYuZvzO7fx8glSmEmJOBlIakoCXqY+heH5XcP4uAK0CrcjKNQt3n3/l3JDhZLXGtR4FSzfj7SswLAg5iSUJBG6KST3hab6DYHGqSrrJOHF7p6JnrWx6i2y6epIIluQQltuf6CtUp6ppPR+vZF+V2tnYisy6JXWohcO3wFw1jHbDq5UrBHWcXrEQaJCOA/OV","layer_level":3},{"id":"8fef3afb-835c-46af-aff9-07f9f40c0eec","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Low-Memory Dockerfile","description":"low-memory-dockerfile","prompt":"Create detailed documentation for the low-memory Dockerfile optimized for resource-constrained environments. Explain the LOW_MEMORY_NODE build option impact on memory usage, reduced functionality, and performance trade-offs. Document the minimal dependency requirements, optimized build process, and reduced feature set compared to production builds. Cover use cases for low-memory deployments including lightweight nodes, development environments, and edge computing scenarios. Include practical examples of building low-memory containers, resource monitoring, and performance optimization techniques. Address limitations of low-memory mode, supported operations, and migration paths to full-featured builds when resources allow.","parent_id":"7108377f-502b-47c6-be02-3765463aed1a","order":2,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-lowmem","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:20:43+04:00","raw_data":"WikiEncrypted:fKjMku8Fpv/b9ZP4Ul2Tm7Zca1h5FLirNykTI/AA7d47CnKOVNgTfrsa18b5sEdeunts328aDl/rj1iuGdoZlRmNliSHTyno4JbtoRql9rKHpIYLsGWMX9G2LUkeMbg5FlADbz3moUepTMX3AczHxUqbYB4AFqFyRp9NfIt2CAJxj+V+xIYQZNJxkd++ojQvXSYZIG5JstNLMOPkzDOBBMSmIkHlovPB1lMrLLJwFhzUpC1xCa+ND63Q5gMlN0G3yfjAIqOGUgrdT+ScVEXVikgbsMs2FR+Yf21LW0JY5SWTiW9asZnrbARtm1I0PBi1SwOnynvG4O70EZX9LRN9utgNzEKbQ/qb7A8SfVmVJ/5d2HzbGUMSHrkrOIOfbq7x+m5zQ+xeVa3ivGOz0zfrx0YS8ylBBcoxuQpJaKppYNws9zDTzNPyPKF6F8R0f1xEekSn/JYo8L8cTTlwORrSEVBL7LFIRgEWWaDNsVi/1O8gCAip4DBDZBQ2LPfC6P1QsUKasNlSO1mVC86ULrnACvyOlzdu4LgiRoNEiae/X7YYeJ27qk6miFPwfkqI74vrZqcB1SJtN1oM7wrhwKFiRe9nBzycLbwqgkO0CcPCTjuD4ODtK8fSqy3BoOB3//ZSvhyZGyn0R8gSDuAPdm+kh0/VZkaih+mXej8gh4sIMDIrJ2wnLHPiSUo0fHeGe7xvqvxBGfsukAs4x/6YobQGQrAcK8lvIiqbuv/zcWei0mxwkL+vtvgCGdgWdZNzVGlKpi+l0uM4+PmlnnUtI6E2ft7hMLxSRFFE0JCZJZibOiVittplbnVeb/JCKsBfBqhKT5ffxVvmAWmmz4FggTt3s6WiYfzMLbT5gs0JbLKyZw2fyzMJinM86Lsg4JoVDV2tEjnC5K+hG0CYL+/Hmdc06IdnAhagszBwJdg6UcIJmPbvVOGO5/yXMYF/PHJb4YEX0bYPFjmlxEiX2VH9mauNLPpt1jyCPGWgnZhyUwTWiQRTInuPux3MmvCBFIdhvbSqewELe+RCUR4kKk9YJS5GXYeZdik3EX7M9JK4p5q0/MxMgt4QtVQ/rYH/5oOzinNpJ6a6qM5G1yQe+AJJiNnMmCPHHNOzcC312TKra6dD7p85Thyog4vHQujObntWLiTnTOyNOJ4xY0pNqOZCXC/Q5ZorjBo1XHSB1Lp0wSdJAtzg644h4eKUjh85lW+FjpNYTVSH3dYhbW8ZQbhBhB1LSTXLsLYMDwhUlV29PLoAS5L+j2tTI5azUAjxI33HBbuYkzHJcOVoz9ZwiNPX/8aOHvoacoHQ3sNu0ZTYwXCfQcn/qQWFY79o04+IJ6ojQPjfOL9PxdOR+3+FXk7ksofNnnVe5/+jF7ZkrgbI13Bg2V2aDwse9dsZ8pT2WIlIDimfa+o8woVUK9ZsEODSEH7BfQ==","layer_level":3},{"id":"e8c2ec9c-8772-48dc-adb5-7fa5a8b796cb","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Plugin Development Tools","description":"plugin-development-tools","prompt":"Create comprehensive documentation for the VIZ CPP Node plugin development tool (newplugin.py). Document the template system for generating custom plugin boilerplate code, including directory structure generation, header file creation, and implementation skeleton templates. Explain the plugin naming conventions, file organization patterns, and integration requirements. Include step-by-step examples of creating new plugins using the template system, modifying generated code, and integrating plugins into the main application. Cover command-line options, customization parameters, and best practices for plugin development. Address common plugin development pitfalls, testing strategies, and deployment considerations.","parent_id":"71349e72-2b07-471a-b7f2-b7299a4cb550","order":2,"progress_status":"completed","dependent_files":"programs/build_helpers/newplugin.py","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:21:29+04:00","raw_data":"WikiEncrypted:ukPV2tcWPRGn89Upsee0BNh0I4BWUQUUZnzOP1DB+1vlRoA2DnNNT/bHeFbdtIQSXyk7bUmdFD+AFhUw6F/GhxiiRn+hzkKtze7IIl7cKG/KiTWWAdasY0S/sUREmQTHx6fByz16NvdAO9bhp/o5Zn/mUi/wb3p4250DKByWWZfNOfNXVv2JlV04ypM3wlrlGWlbJ7X8Fy6U0pHiMDV7TSm1MqZ7jRntlHQPGcOntBT/sCsvcMG+2Tz+AhYuUPl5S8hp4VL5aF0Bldz2wMa/U1pJc7TfQFlMxB86sCIBeKzByisy5hcvzrvj4EnFi6GPdH6XeSu/FRtSiNKuU/+BLK4e+xVb299e30vgCpN+yGzMnQSwF6Hl+jcihMZsXvgHDNEI/RrCXZvssPbZrT7sDQLng4yvFg/DbS5ctr/s3st4H4yLiUYjxEqDeeDZJmUsl/gOzg5Npf6VYtyLMLyH9njN3FYygMBEItIWHS/ZMH1W3KPMaE+jELwWFWfW6x3luX1FV+5NfTiGDUZFr5zbOv1nTesTTLLSp0JnpHFC0GvbajAQrZqALmujKNhlB5TCYT05Flf0GcmXhPEou3sfRmVyejF6URcCf/d5kBLMvqRSdfpnl/N03KHaPxYZINuPHBIAvP6NhDUCR/fUp24M1VUaRdEYxuTA0xVGT4B/mJFB1GcM4+9oL3v5BAIoblxDFG0ot39YIWDKAEZJP+FvRnZW7pXYJeHiWSk0qtIKgtaISPvLuJjnsI/dT0oSS3xkL0kd2kYI0vsYF4O+AsB9t2ee1KQCgIm5wS/fpF5ZD6AzqEaVt4Bz7TefBcReXAJpcG3vuPU+gLWvuzjT41eG5LOaY9P3Xn7wAvALCYsFE0vfSh8VR6967R/tPj5malqd3ZlHC0dxWpbxK5zylOGQO4uxR11qWEo2wh0pDE9wImO0X1phGa0q8u9QH0mjXEQ/tKnVJMfCy44Ur4SoVgKhfwCVtzuOaQWJzffT2DQN0zbuTBYBWTCrq9HAR6vNZmH2Z3sEpQgc/+ZJvLWTGHYGzSkGBjeIvPAFT7j3+lGMmHjVnT2E1QbymYUm4bNV6N4jm82YWThsJ9rkZtizBTQnTkbtEeW/TDXtJESiADfebLTnRZTZl7I7WM5mLPsPhlwYWa5D4Ll1vbKBq3TOCFjt7mBHIGiV3sS8VL+r86dHiM5y9zVYhoVkQ6dZnGqT8NcjOrRqF4ysAeIFLlMfihEvI3KCXAR61jbN/0bv2w9K/DcKSf6l2e7fFEfrdNx9kXLwfiDmsII0LnZpIxwKudn1vbk74LhTEW8Cuq4YGMH2AKTpMPt3FKdP/7CGNTpSK6QxHL6TtvmZv+gP7Z3wdC5jd0QjQlu4NnBFMWzpn/9HWmVn0GOavzxl77UxMoNg+Zc3VHivV1ARsjNAEidCVxhg4Mnb7xQ2/trOZlh0kCHFa/M=","layer_level":3},{"id":"74975776-340c-4463-92f2-6e949c1301d0","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"NTP Synchronization System","description":"ntp-synchronization-system","parent_id":"15c5d415-13ad-48f9-8ae8-8f00c771019c","order":2,"progress_status":"completed","dependent_files":"libraries/time/time.cpp,libraries/time/include/graphene/time/time.hpp,plugins/witness/witness.cpp","gmt_create":"2026-04-21T15:57:29+04:00","gmt_modified":"2026-04-21T16:27:59+04:00","raw_data":"WikiEncrypted:kk2p6A+hTfq/j31wt7MAgu7PjcLqcqeJIlT11ZAX6rG6RFTstxzezqPewwuq7KJcZnmxN+1kb78oCoyll71+CuHlqFqb2IInJOarRp3GUu1hTuhP5Ph9c12xZHHA3N9Y6gkfFTURztr6jAT6LxmiaTH7GJAiS5z7eF8RNHQWKef/m7HHGsZr01TaIMaqh33KDw6kzrqzxNeZDzLMbyh/x9737bQIhT5RB3tSN8g6hBmfRWfk8EkMtWVf4AcsDkhJOGA2ZXZbKc+Ey4I2k6wZGpgW1sM4jfqwCC5VX8Nk9VocnoDSGLfxgLh/xYV2SF27P7AOCsOaBBGjXqSvStzw1Q==","layer_level":1},{"id":"15c5d415-13ad-48f9-8ae8-8f00c771019c","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Core Libraries","description":"core-libraries","prompt":"Create comprehensive documentation for the VIZ CPP Node core libraries section. Explain the purpose and relationships between the four main library categories: chain library for blockchain state management and validation, protocol library for transaction and operation definitions, network library for peer-to-peer communication, and wallet library for transaction signing and key management. Document how these libraries interact to form the foundation of the blockchain node. Include both conceptual overviews for beginners understanding blockchain architecture and technical implementation details for experienced developers working with the codebase. Use terminology consistent with the VIZ codebase. Provide practical examples demonstrating how different library components work together in typical blockchain operations like transaction processing and block validation. Document public interfaces, key classes, and their responsibilities within the overall system architecture.","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/network/node.cpp,libraries/network/include/graphene/network/peer_connection.hpp,libraries/chain/include/graphene/chain/db_with.hpp,libraries/wallet/include/graphene/wallet/wallet.hpp,libraries/wallet/wallet.cpp,libraries/chain/,libraries/protocol/,libraries/network/,libraries/wallet/,libraries/api/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-19T22:31:11+04:00","raw_data":"WikiEncrypted:OwfuchP/A55BRKOnq/sTqUUdhlQOKRVU+yBCaLhxPeKCzLxiQ5Sm5i6/NamrTB1GPtQ/42VsCJitqOb6j9+rRLbOn1+SqitbER3Tvci5cvFV/b+fzhya8ziqkwiuFYENR+wRGihTXbi72VgF75nhexj96mW47VL18GZs4M9hdzdYmcNkEtrmD8n8N1ndgIQu7/ingT9KzT6sHx6WBFXApoa4vgzjeNtwNYRCK8tScDECuTZFoKabVwAaWSEJnxWfMl0JZQ5YO0hM3UnskArlEs2TqJEZKoIHbVKCED/yuXL0rDJlExNNV/oWu4cI1l4fWr9Pji0x1C3YgIJ8AZTSgveRYwACHcSBzl2fvknv6/PDGrZjXckNBaSIOn3EUrLP7X0iD212KBlqTkGrsje/RAmDcQK1V1RI7aHdNwBnf3rqk3sD/NFo0AdpX2iukWsQcvesEFIHlGC/dut1pc28aPYmI59c4yDtPRD+EK+i+VLRYGwCIBS1MzQtcDLBk4YMQieqT91R3SgroO+ggTmo+4GWPfwoaDGywFO3IS2MbhJIk4c0YuNJr1HbQDzCE4tyBk0OB9Wcv+QBL/ZOzbnvqmjBJSJ99hnQqq8GZz3Swt8zKlLGWvsXhDR0velmhZymMEtR+TD2bMBRILHtTkNJwLLs6DpqPkQGAKHIyaIGd9F9Nuwx2fAu0JfzE5kwaTN0ku1Wny5AQSQMxGi2VBHBxhpwj8CPufwO/v0HcPk4sSRKGEGvyUsAAt3EvWdfE1WX6yIOue3OMMmYXyuoHkJWq0p2XCrni/ebLyy1Rp6LN+3YZ+QoGcvrLTPAAgvqz2IigdnCFoTFpcmdBp4mhk1Ebd/LeZG+suATuOLm/16O/NG+Qcr6Q7gSRpAuEiysNSXdOACX4eYp86egU0WkO4YFMO35HksekpEsemfJ+Zq9zgwI6pqfljOll+CEDs2bSW3FxPE4+yezuR46xuCq5gYVlLFcRfF7aMzCsSgWGaDSQTsqJX1dCtyDx73H3LtdxWn9EuUhVqA3E8kpXhZhrA8HsWFlzEpx8RwQSwFeM8Ry0Fq7beNrV+eVTElC6usy7S6t4Kj4yv4GllIf/DKTmIcQpzZeOhBEYfL7xpWOI4QXwsEnb2vls+wvMBN6sKmP/LKoY73vciHiHl62xkH581tuizSf7GI2gylGWUiVT5Vtgr2/0FbsppD8w9v20z9DKbBXHC463HLRIXjQeL1B7kK/anBbEWQ0FAdCT2nxohIj3/iGxJyHf0qqqvVNEG/qOY4Qk/k0YEbbDyb+a1HnMJ+f2uLJRO8RjGSPGqWkemK62SKZEpjY6XSd6HiU2rQpWMvaN6gevwlRIO/6kk1rDLNJvjqtPYIxaM/K+/RiIio13wjxbj+JHf20zlYLrWBBRcoab6+M86BZCZfqjEwBoxL6cl2bdDIvwh7ChADaHD+AZXLp39jJbu2R6UtFeFezMSoqKjJSrj3qRKwipluxJWEd4jb8q7Wiux8dhqOEA2cNcQ6pUZhxh2+AR0U4PnyOkSIhxnbh+uGslRGmU2PwivIp0gpYGFO0L63MYbYDXt2OXLMP7vZXAahEJjjW+25AiOJwJ94l1ZkT9I17qjw7WU1ZPD7kSbH+/wONgTv7lZsC9d4PBUkVg9HMzJXR2PDM3f69CYWE0my3V9h5ZwWbptD+i/N+G8KprC2eVALORM2wHoEmimq/ol9qgDlDyutlG0pi0x1iVwBGey1tWCAugnqzIqXdVWwAQVKPr+QLrSUiRzLsHJV8sVJA/yCKpFSwOdXNM7hq44boELFpjx/7tNlTtG87AR7+po8/u3/DjJQlzBkmbfSv1kZGuqYOwgubO1FtGNB4CAyngNeoB5nCQddvKrUKiPA+2pFjRltmwdmH8H8YWi9T/lXqmX1u7pE9PeZv1gRNHfsYNbxK+d76qnVDbmBbuOnc8tv291PF9zyl1TH5HWRoGBd7degtLlC+Gs0avEo7g791GJNKRbuwYne/aZ+BUCBKsZoQAGOPJbQ8hc2sYPHHlXyxxtQ7UNp8b55pmzlAaCwEQAvegUBTXhSbOx1AeOVpdvUed2LOEaI28CsWDDLyfo7dh0PA2VVdlZ5C3VowwKco3FGI5aWnJvzs9bh9FMERAWUJ504u01rBF2kG7jPpWMPQPnSBfSDqUWqYml8mmgzhEFd+KTXK81o97Jcc3Rq28ocyJyXRbuVOYG02GXkkSlrSYPowYu9DI/qImrZx8+ZSNfK69sBQvc6QCN2miyUtz98/NKXDAg21MKDyksptqSylFPIh/+y4+eS06b2cfOmo99s5F+yg7qE8RTOy5ldNI3/3/N8XhM9qV0it95aViB8D4M0bRLgn8UF2vIbBO0abN9W2ExZLniofhIQn31Wl06nZOGDe6L+hVTP26gHX4AWnwHy4HZ9/nFagEMYXct0z5Di+wKG8NbEN0Imiix9EYWZVnJiAXYlZbox1MsP+SCCNT6JutEoM8/mQXW0AfIqWIoN/z/zIHSmQKbFm0gkRliRzqhC0TR1HP9PKAD/UPdxTm3hFS51koG5uB3SkJhvHob3hLJhJBwhgalokCEB61wKqOuYYbZMugsOaw6icItng694wJH33ttuKu7IFZFi2xdLZSvym8xTQSW+OKKbFunfmFxoF5xpy0Iwr2xUHWAZVdNNvV2+J1g8r6vDH9IYlCJqxIW7zGu+f87YldXaG0a4xjbmdhCr+QYCHHE1rnV215pjNgYfxO9wCLSZ/UTg0+MwtY2eYOJ8ppdO7zV3EV/qa7msZILZKAhF7x7fYoyYrueHMtR1xj44ahyc5ZZkdRs0N0X/jr8evEL9lgrNjUJG8NmpTadCTsibhPTQM26umBwpwUlsVKPa4VeMk9Sq5+Jb1cPAAKxJssPvrDNLI/4po7dj64TRVn81v2KumtxWrr8KH8zK7rfPFwvtVVQu+BjM5Ql3bmN7JIA=="},{"id":"971f0bb4-1d2d-4258-92c8-080f826ba913","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Data Flow and Processing","description":"data-flow","prompt":"Create detailed documentation for data flow and processing patterns throughout the VIZ node. Explain the complete data flow from incoming JSON-RPC requests through plugin validation, operation processing, state application, and response generation. Document the transaction processing pipeline including validation, authority checking, state application, and fork resolution. Include block processing flow showing how blocks are validated, processed, and integrated into the blockchain. Explain the observer pattern implementation for event-driven architecture and how signals/slots enable decoupled communication between components. Document the data persistence mechanisms, including how state changes are applied to the database and how fork resolution works. Address performance considerations, caching strategies, and optimization techniques used throughout the data processing pipeline.","parent_id":"61cc85da-b705-41e4-9860-17177048c2ee","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/protocol/transaction.cpp,plugins/database_api/api.cpp,libraries/network/node.cpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:48:50+04:00","raw_data":"WikiEncrypted:PGdHQOrMWxh6s6galmzx60G4c66k6IPhWJyX8d8v0xn2Sl7SJvUGzCeuElhJ4SjnW1f5q1x3OM20oMAyLozbgKnw1geq3fLXvsMfIZaJytjp20ZVI2wKYo7M9ca6xvMqmvLCoFjV2Z0kELRuZLvDkmrlYmvgiiF44ET+JaQD3Tg6UnMB2AfY+GkjGaMezQa+OwIe8+/2009s6DSnQ122sSDAASlZ4rQAQgkeL7LK6gVM4lYmwTx7H0FRKgvN56jg92nJt8Q9ssKuyC3PnuMRtdmLRDD9GHl1UjneLNj58vnJAWszzHCQBtNk3VjHNP0deezRuhtgxwC+tewqd/JQSDdmqyXoyJE348rcbGaYl3xaUS1p7UrDoI32vDeIvbkTHgU7k5h+7g9gk3haKfN9RTzmsbqoL4b717U38BLqEOT3exi9WZkIorQW0NF5G6m0x9Q0Tj3SFO79eAxNuomk15MhXHBdLOea8nqT47FcO/+tqaorLLAUsGEH+NKXmbsnYD8mN6BS9AiVn3+3XJh5WvCSNOMqv2BkONJycxEao4fPiJe3Skv/lMqF2C5EGRNx5VUDJCHu5QSu7iNcehn6sFKJz7hJ1MvCwwEmlcnZTHZdCnSBWIGwj45ejQABCG69LOiZAmidK5KSRBFFqPcIEBWLz8Gjz8nSvvj/YOWHvnBGrJhJx7RWwwBisYRsAy8Z5cW61f+KRnOeiEN/pAz0CVwH/qCZ82Xoa3zbJhxDnVobI/YZxB38kzyIhZzD5f3TmRsWdYpru9hzJFPh4gEZUpsJG6MybcNpBh1TM2pH6c74FIjPfAU7ZiWVr0OrgabTZ7XlHJ7+uB2xNr3k8VzkQVf/V1AHJd8L5ZyI0pt4Dp9E0Op0q76xdp5vQHjmpfTZlnsM9Rjo/49Hsvs8G6a3fnlXts9G3Z+xo853HjLZVtYt2WD+9vjO7shN4ANJp6vwD1LpJWWEZMsRZT78kU0yIH7hAENi2GDclKPltKOA6xqDqNuz9cCyWGu/8JeX+SH00trq7Usn6zm+KCEs27c/T/YH/t93FMy7TOSXt3czenAk2eo5Y0Dwkfg76ikGVoLpj3QrHxmeFx/MCun8RXKjooErmweSQ0xhlAfNLUGdhsWcjsQQoA/g6jyIIfyVzl2FxuT86yu0Lyx13sc7HSif55cl1n3VweLstcitlhCQxCXHY1XnzOEuvylz+3+gqE81pk+e/EtYVpCOAnImJV56kOfkVIPHWVXQT/GazHgAtiW8XjD6WTHkeY/+kVBRMra0MvIz57qKdAw+zFgMJ3LXK+SybRY5ANWjt5RA4Un4tPdsOSE8XBkhZz1UFPkW8dtXySJd9Byr1XKqgUI1u/e7477TafcC/BWJNjeUIcIs4Kcjn+tzA1/wqJ4ImMm97/9cgv4QoDcxTPvZMEWmAKgYbjCsq5JuTsGWZeUd4gLTRYNdZMfeywZ1gARhSkt/BswMFAZFgL7DVbDgy7m3lvEz9l/U2i5ea7PWJv/KkYnXxer6DthsXvkHn+CEoQ7h1S9z3RNXMYEE8kZ+GOhOJib9twOdHelHqFefxCAoJQz7dJL8o9cmHq0Fr2WSTuKvcAvfX8iUnrtB1ur55PFh1Ub21t5HcA+Ofm44YsMlcT+G2k6lZsQpZP0Shrhe2kxei7508e065lBusZAeDpXsqIBC1BdRcJ3quwypSsS4SJyHeLaz4PHY9ubLEL+opj3D8JWdurRx8fFnB2+u1EiFth365AXKQR4baz4MaYaGxaJ4bBc/KzURVnTSI1Ysbh5eQQKGjFu4a7r/0sEw0E8tlDp5iw==","layer_level":1},{"id":"fbae6ca8-dcad-40c1-9dd1-20534479e987","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Development Workflow","description":"development-workflow","prompt":"Create detailed development workflow documentation for VIZ CPP Node contributors. Document the complete development lifecycle including code style guidelines, commit conventions, and pull request processes. Explain the plugin development workflow with step-by-step instructions for creating new plugins using newplugin.py template. Cover the continuous integration pipeline including GitHub Actions workflows for Docker builds and PR validation. Document code review processes, testing requirements, and merge criteria. Include practical examples of common development tasks such as implementing new features, fixing bugs, and contributing to existing plugins. Address collaboration workflows, issue tracking, and community contribution guidelines. Explain the relationship between development workflow and project quality assurance processes.","parent_id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","order":3,"progress_status":"completed","dependent_files":"documentation/git_guildelines.md,documentation/plugin.md,programs/util/newplugin.py,.github/workflows/","gmt_create":"2026-03-03T07:28:48+04:00","gmt_modified":"2026-03-03T07:48:38+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"535a1c44-108e-4813-aca4-6a95a2ded914","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Network Configuration","description":"network-configuration","prompt":"Create detailed network configuration documentation for VIZ CPP Node peer-to-peer networking. Document peer connection settings, seed node configuration, and network discovery mechanisms. Explain listen address configuration, port settings, and firewall requirements for different deployment scenarios. Cover network security settings including TLS configuration, authentication requirements, and connection limits. Document network performance tuning parameters, bandwidth management, and connection quality metrics. Include practical examples of network setup for different environments including private networks, testnets, and public mainnet deployments. Address network troubleshooting including connection issues, latency problems, and peer discovery failures. Provide guidance on network monitoring, bandwidth optimization, and scaling considerations for high-traffic deployments.","parent_id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","order":3,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_debug.ini,share/vizd/config/config_mongo.ini,share/vizd/config/config_stock_exchange.ini,share/vizd/config/config_testnet.ini,share/vizd/config/config_witness.ini,plugins/chain/plugin.cpp,plugins/snapshot/plugin.cpp,share/vizd/vizd.sh,share/vizd/seednodes,share/vizd/seednodes_empty,libraries/network/include/graphene/network/config.hpp","gmt_create":"2026-03-03T07:28:57+04:00","gmt_modified":"2026-04-23T12:16:49.7941472+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"121a231f-fd81-4c10-8222-4f3f29aaebd0","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Monitoring and Maintenance","description":"monitoring-maintenance","prompt":"Create comprehensive monitoring and maintenance documentation for VIZ CPP Node operations. Document health check endpoints, performance metrics collection, and system monitoring integration with tools like Prometheus, Grafana, and ELK stack. Cover log management strategies, log rotation, centralized logging, and log analysis procedures. Explain database maintenance tasks including compaction, optimization, and backup verification procedures. Document performance monitoring including CPU, memory, disk I/O, and network utilization tracking. Include proactive maintenance procedures such as regular updates, security patches, and configuration audits. Address incident response procedures, troubleshooting methodologies, and escalation workflows. Document capacity planning, growth forecasting, and resource optimization strategies. Provide automated maintenance scripts, monitoring dashboards, and alerting configurations for operational efficiency.","parent_id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","order":3,"progress_status":"completed","dependent_files":"plugins/p2p/p2p_plugin.cpp,share/vizd/config/config.ini,plugins/debug_node/,documentation/debug_node_plugin.md","gmt_create":"2026-03-03T07:29:04+04:00","gmt_modified":"2026-04-21T15:57:29+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"19cf79d5-d0e6-4e4f-93ec-1199f0967648","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Plugin API Design Patterns","description":"plugin-api-patterns","prompt":"Develop detailed content for plugin API design patterns and best practices. Thoroughly explain how plugins access and interact with the blockchain database through the chainbase framework. Document the database access patterns including find, get, and index operations demonstrated in the chain plugin API. Include concrete examples of how plugins implement CRUD operations on blockchain objects. Explain the plugin API surface design principles and how to create clean, maintainable plugin interfaces. Detail the template-based database access patterns used throughout the codebase for type-safe object operations. Document error handling strategies, exception management, and data validation within plugin APIs. Address performance considerations in plugin database access and optimization techniques. Include practical examples of plugin API usage patterns and integration with other system components.","parent_id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","order":3,"progress_status":"completed","dependent_files":"plugins/chain/include/graphene/plugins/chain/plugin.hpp,plugins/database_api/include/graphene/plugins/database_api/plugin.hpp,libraries/chain/include/graphene/chain/database.hpp","gmt_create":"2026-03-03T07:29:09+04:00","gmt_modified":"2026-03-03T08:05:51+04:00","raw_data":"WikiEncrypted:ukPV2tcWPRGn89Upsee0BLgnn7JYGqI+7BDGQTVnjuRHRVrSL6tQDGezspM53gdtUsm79POkhFGbMKDAc/J73KOr8fv9yxwFP0VoRuKhzfwxYc3cuTurCXWgzU9qD33UyKcWZq5jbu8gui6I3BI09h3x8uoako0lZEJvMc987YbO8DFIAMI186UTX0GSkXJAiB+0tTnW0lK7Q7CyvzRlnJ4uvexA1xc+EZhQapFn0hFfn3BkqPvnFiPnhpszja3qVmCu0yxr5AX+OzkI9YrEHhMjnuc8KfaQdW9VHAia2WrQVVakOkiPAtBRLXw1SRpQtkxf6KrABOJaLawhkAo48bB2LOZHqAGu3tOxNEc72vQZfevNODQw/4xudcgAahRGx6P8V5QbfRG+7ZOzoOWphjKBaflPa3rNxq8WGsAT/7iITXZlKmwpq3pzl7blf9ohNDJ10/MGhxEznX6QxuFW4DthLR5kVo5FMpMbegc2qceJcr7rDsOVLLMyn4iJu3UaiybcuK+TNOvl/9FepZrihUrm7Rs1ztzDJ4QcscsNs+neY94/12m5K8AL6Mu2NzlcGwModzUdwsbItYtpPbN3vRWm+Nz4rmPUAYuKtui4c9vNm4avqaez3/tk9hTuof0mO/Pm7zStNDgQyzxVojbY3EL8rrMEPcI/D3OSAaUkUGRG2fLtZsmL+d/ZPTlIBTsNmlndMfEYTDrKr5E+W+3IRTPIKlzPWVBGmWGxi7haFJl2kgSpHJNyeh0Eo+8iETSeKxxu2TDgSHUkuYIg3HEGgdvgYIr1qGaupyRUtoY/q5EFKf5BRPbM5yv+gz+JC83OqEu+q80SULYKezoBiEdC5INZXHTv6NQVWGEl+8cCqdbUhMXEry7NmKGDeMJk5zVvI7BNCOTSguxS0P3q8tOjLfGnCxbOsLD8pxYvoN/z/twkUIVYuDYD322POm0xjzJ4AlPQArTp0rc4KlmH4w85aBBZ/nQ+fE49ONoyT3SW+Cp0lP0zVFHQPxLCqiO0CyKyNngE9HLAHdlN06IdGeLydDYg6DPV12HBIEV76AMcRaUL/CEr8dMWl2JhqmOYzIcZ54x/28IVV6uLzeZqSeBF86UMoiqp9mlO53qdRZ389i6a43ExR/fsho0biQmT1pYOg2z+Bs4JH/7havhY3tRk5/juh8+qSjyoYYJPDsqohP+9mGFBGc1L7BHbT6vyiZ9TjHmRwy+EnJSkDz/glriYfUpFIaSLN57bLnu+/sljxE/9WpEvw78No8/Rg/u5o0zhUxaSohbQRyrtjDWxh+2oFpvfLxStjsxVLZN+WS79BCIEnYef+pRZS/FzWgoaufxJaHm59yNZZYUdUB5rqxr8ex2ShwGoxeOaNmHsdrwGJ8/1m+Vg3BIlGtSTACH+Yt91iRdU2djDMu3OjKI7UKic90Ym6lDwCsnSjtgRZFxOa2+iYkqh87X0eA2XH4fcVs5dZv1zzPVTLYPu7ASfJWHRQQnPxabds2CqBynETnz4ROkyvaSshSNuqU3j0juF0GxFpyUNzVeHf5innJ7jt+muwMjOeff+m8cKbx//GFVgPhrp+2SM89QoZShNDkyyy9BlP71G4v5udRQgl7xC4qFX3ukbL1gg7nD9AT9bEcj4e4FwzePHvt633V7icBSGr0pCiDbBVwZEsmQvAuR8I+Pk8cIPh9trrznEmV1qLVkcEN/a1Rd3RANeS1yOnW2kVHHkpx+vQQWHnTzGpWTeMe7iVK02bsiYRcPro0nLDjwy+huJfeJA0v6pQciFTorypRWxbHa44CcnT9pJNzwdIwj6Qw==","layer_level":2},{"id":"c20f5498-c255-4e15-8d5b-66c6fad67c5f","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Advanced Plugin Development","description":"advanced-plugin-development","prompt":"Create advanced plugin development documentation for VIZ CPP Node. Document custom plugin creation workflows including plugin architecture patterns, lifecycle management, and integration with the core system. Explain advanced plugin development techniques including custom evaluators, database object extensions, and inter-plugin communication patterns. Cover the plugin testing framework including unit testing strategies, integration testing approaches, and automated testing procedures. Detail advanced plugin features including custom API endpoints, real-time event handling, and asynchronous processing. Document plugin performance optimization techniques including memory management, caching strategies, and resource utilization. Include practical examples of developing complex plugins such as custom validators, specialized APIs, and system integrations. Address plugin deployment and distribution including packaging, installation procedures, and dependency management. Provide guidance on plugin debugging, profiling, and troubleshooting advanced issues.","parent_id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","order":3,"progress_status":"completed","dependent_files":"plugins/test_api/,documentation/plugin.md,plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-03-03T07:29:10+04:00","gmt_modified":"2026-03-03T07:50:18+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"92bf8d74-e2d5-4408-b1a9-70d326484879","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Event-Driven Communication Patterns","description":"event-driven-architecture","prompt":"Document the event-driven architecture and observer pattern implementation throughout the VIZ node. Explain how signals/slots enable decoupled communication between plugins and components. Detail the operation notification system and how state changes trigger event propagation. Document the plugin communication mechanisms and inter-component messaging patterns. Explain the role of Boost.Signals2 in managing event subscriptions and callback registration. Include examples of common event patterns like account updates, transaction confirmations, and block notifications. Address performance implications of event-driven architecture and optimization strategies for high-frequency events.","parent_id":"971f0bb4-1d2d-4258-92c8-080f826ba913","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/operation_notification.cpp,libraries/network/node.cpp,plugins/database_api/state.cpp","gmt_create":"2026-03-03T07:29:21+04:00","gmt_modified":"2026-03-03T08:05:24+04:00","raw_data":"WikiEncrypted:W27BoG2tWSBKbrlfVNVQ+n30XbiFQ0QQI5a6lxogiBPjTg0DvvbBFVxLISoEha9gga8YkbF6lz5DhmIKlkxVqSrOPfvwP98GUOj8LffovPN0x6FVjem0YCS83Npx+6Ibzq2LUJxesBU+qAtPQEe1+kgERFazI8jpVPIEA5SAQs6E+tVyMbrp+izzDgE1An3BkZcmd8WlOiKBTXmO+BX9+gxzlWar87g9CugYmsBzcZwUUzG+TnbkVV8m9VyiERgc7YdTtwBSORP6zbFpLpqimwCl1WGfM2iPx3fmKl9ID7Vqcg9sjWHFHETcAef3vIQcCHn5ZwelrdlGWmjuugEqhEclWt6FQ+85c+7FlrVA/SJEkPHl21tbyLcXRo59nelJ479auS1kaMRkIAbbLLJFA89pTxBHLTh6UpmQfi/PnJX0FHKAQG4cCXDLpbng3u9V4jiScS+kPZDrvwbi0pxVlN3BoDGiYiup5naQqix6syTGND3DBn7DrrN97NOWB6As3M2nXHR2NvXMUoEN1DnpOIMbilF3IRve9B+8ZJCp0RU5fbFQjy1qD+s++dLoQP21N1/cjEFHD1iF0WYvAaqrRk/uDYDHno+tqeQ/mx+ZPbJqVfsvxIMdcTs+jDXnczvtHH+oOzAEz+66ridRpqISPDgcfO2cbHbD8yChkTSvPCRZdWYhTuPGD9FMpDyd0jIjtOB3xxYvHoZkAxGV+nMX9hasGMIF7kwGkhH9rmrYSGjPP7cDfNwTwu/FBc32a47b3jkk6hpJjVqUgKaUQwVLAljvp0rQBygK/1ZzcxVW+BIMsTioFS1YT3txI6Yht/fkrclLUxfXo4emNwybErlc27SOgQsen8u8XVq6ec0ymghCmX2GNpzdyBcoGHndxCnjXNjuytqWC148K/gEYnD8uMDDFR/FDCpTamlo9TnjmLOonJ+/0ajAF3YrxiqACGbHvCrJ4G+yuWD0h8hICR+5PP8s+bFUs/yKn7d9kaDv15PD1TKsDYh9+8aUEFoagYbWqdVUqdoaRVqqeuMH776Y5FkUXnii32wBY7HhXZLhzZSyp1xuekmM7J84yOOK2tBopwNQRS686YPC8+JftwhlJCmWcc0+mYaWoDpSZu4qYzYc84zrabiZWOKq7wECSRjNq1So/eOnTsS8aflZfO3NPSmfrPeog/Q5TzrA9SAmy+fQSmJFuZG2EpQmwndvbB6e6NcyddF6eHMQSXFsIQmzRkclcjFw5DWeX1BZU8uYADfXYb9MLMIiQFqfi7uQoiSiLvJ1KCqNhvLB6OVclq+W/oceE/acm/1XZZ8ivi1Qou4VtLQe1CWJECh3sTOOdIZyP0UWlmqWmT9BUQBQ1G6l5wGdjTmUEhh/r1xHfJHHYuzX2Wgc+JRQIS8LKGWlyVGcRi8l44kHDiM9Clhn2uGn4nL7baAM0wRSOGz/zGx0WsDBvGqL0nVkDgCZJdy0t2Y8WCG0Dfft57uM5GvoSFZ6MOzhOe0koPbRUZA9gA8yNzup8ltl7rocXAO12CAW7XD3rCUxhffjjXddeBpSijY8cpDxEylvPQnGr4rJuIbCjuM=","layer_level":2},{"id":"e1585c0a-e5e5-4e43-b30d-a898c0509afe","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Wallet Library","description":"wallet-library","prompt":"Create comprehensive content for the Wallet Library that provides transaction signing capabilities and wallet management functionality. Document the wallet.hpp implementation for wallet state management, key storage, and transaction building. Explain the remote_node_api.hpp for connecting to remote blockchain nodes and delegating transaction signing. Detail the API documentation system for exposing wallet functionality through JSON-RPC interfaces. Cover the reflection utilities for dynamic API generation and type introspection. Include wallet encryption, key derivation, and security best practices. Document transaction construction, signature aggregation, and broadcast mechanisms. Provide examples of wallet creation, key import/export, transaction signing workflows, and remote node integration. Address wallet backup strategies, recovery procedures, and security considerations for key management.","parent_id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","order":3,"progress_status":"completed","dependent_files":"libraries/wallet/include/graphene/wallet/wallet.hpp,libraries/wallet/wallet.cpp,libraries/wallet/include/graphene/wallet/remote_node_api.hpp,libraries/wallet/include/graphene/wallet/api_documentation.hpp,libraries/wallet/include/graphene/wallet/reflect_util.hpp","gmt_create":"2026-03-03T07:29:24+04:00","gmt_modified":"2026-03-07T21:45:11+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"97020392-6c50-402b-9313-1919a2deb4c3","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Cross-Platform Compilation","description":"cross-platform-compilation","prompt":"Develop detailed cross-platform compilation documentation for VIZ CPP Node. Document platform-specific build configurations for Windows (MSVC and MinGW), macOS (Xcode), and Linux distributions. Explain compiler requirements, dependency installation procedures, and platform-specific optimization flags. Cover static vs dynamic linking considerations, library path configurations, and platform-specific build artifacts. Include step-by-step compilation instructions for each supported platform, common compilation errors and their solutions, and performance optimization techniques. Address cross-compilation scenarios, continuous integration setup, and automated build pipelines. Document the relationship between platform choices and runtime performance characteristics.","parent_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","order":3,"progress_status":"completed","dependent_files":"CMakeLists.txt,programs/build_helpers/configure_build.py,share/vizd/config/config.ini","gmt_create":"2026-03-03T07:29:30+04:00","gmt_modified":"2026-03-03T08:06:47+04:00","raw_data":"WikiEncrypted:2GoRefXUXXQ3Xwp7OyY9nlon887ydNfpOl/itiNfh/4iWIxC9TaxKDiFwjOVFwQTPZYi+aDZcmdacy3T3sTlNOPDniBKjwz+vMIh3cB1plVH4KYwPt2TZXc/+ujGFDRr35exKHL5nJjwwQ0ZMNpW/UibupcGN0tcn8JuX3NpL4WLBra3PxQ3XTSuZYZPVzLj82+fwHHCLPcEK+78OX8e1RcVEklR+N1UsgtET9kO0/b+T0OBqa5ERNN3IEYqcp0mY5DL4MgmhZ5ELHFmyDcLeXPGbENuTTr/wv73OYFptwxgOC7zfdnxEof+OJt7oFB1H14TF9NkYiMrMg21KMYZ7SpknlH2jxvpqfrAZCvqdyxgE59BG/VXVZPBrsUVrClVTeHDodIoKQCzDVpuGZCDEUcM4ywm7n0JaWJSvA5QqTFe6FlcGrO4kJP0nIgvoYFjCNa6wMEbFOKpK082OTtsHnoZAn7Ygz/SktuD3sxaFQutzYzGUpESMp+7KK6ArmF3MZD1kHYrkbx8S1r3t7TRMBIPvNVbc8GJDepR8ER6t3haV1sBwAGTuVTiBApkEg1+z2snamjx/DMbTOTZC0t9VeDuyQmejRJ2nfbysv6hUkQPWiiVsQjp/J+k69s9+Ux7cnj9DlnC7yP61FjH09kWx24MLREOQlg4aqdv02Yaf/0NhCugHWGlzPlZRo9Rcm7A/fYVCWIdyBicPqoNenizmIRw/+0ZUncKEzrvzurMeUV+p6by+Wl4x/LuusxxAJNHAjzKBMDLPygjAixvqHVGme7S3iJkX6GEWMaATXOA58szwt0/m65fztGuJ6QnWZOGheD2ELMTHbAgxv9IgkRcqpDmLp2VaP7YYU4hq0gze2HaeR6u4tAs0fHJZX1HORBQV6m/1mzw/VUtnolpwqE/TDgNPDjy6eYc/8e8OPu/PHoavvf4IzJOMbuw9Jab/F5w158jHfEt9txnl5+n9JhFtPecLcLLIKgnb8rnsbOKzT4D5ggU6rqH4FkXNb3bwpNtX3vMcfTGxzXmertP2Lb88uXGxhfMWPiAvWdUrJtNxnCQIUWII2pyHmrr1hLGTBSzE0qEj2a1Y4kVgfkKUkeDNwNCf97ufWnDMqThJcy6zqCMYqHJIq/hc32CjSkIzzDOQouvmIOPaVwL6fpE699lSOwB+RKRrfZy4TBjrmA++IxZO00dgzzHFOHnN2m7tOKpsMnGukeWgOno6BUIexnY0lI9oY3VNKLjBq1WOxOBwi2qClZoCoD+7QkbJHk9gFUvcuZdAG8QeMQcgeeReC8hK9BHD4hZPTReh0bkSF1wEfAbM6TrdmuRtEECtHx8ccNSDmA0dl9OIyKfqRhsIsVF8knLOjcFBsaRt57n5d82KEfGVC68CqLC53zlhwC0f+83i16CySJnkLCgNBbd15ULQvB0CplndMfsziHgwpuJqtovu8ylKTtPg/wamM1QLvqMB5t4DVEbc90jw7qwR8T2SBAu+WoLfmaD20wd01rLkYH4tYuEUmmUq0XbGQtgOi+rUF1mBwHDdrHFW/gr7FuEdUWCclH5mbo1cA7ExHaHxPYDAxlKWN7m2zuym9yZ+Gf5h3jBjwldO1bHH58e5oSV8DQciXvAjBNDP9wIfpcfNEKgnr17F/GNHOBuQBfTDOUGLSGiAqCT5hu+QpkcGRq4U52dOsMI7FjTQau2lMxTyaQ=","layer_level":2},{"id":"1d376f80-f865-42b4-84b5-f59e5649be28","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Performance Profiling Utilities","description":"performance-profiling-utilities","prompt":"Document performance profiling and analysis utilities available in VIZ CPP Node. Explain the inflation_plot.py script for analyzing blockchain economic metrics and inflation patterns. Cover the size_checker utility for examining memory usage and object sizing within the blockchain database. Document test utilities including test_block_log and test_shared_mem for performance benchmarking and memory testing. Include practical examples of performance analysis workflows such as identifying memory bottlenecks, measuring transaction processing throughput, and analyzing database performance. Address profiling techniques for different system components including blockchain processing, network operations, and database performance. Provide guidance on interpreting performance metrics and identifying optimization opportunities. Document integration with external profiling tools and system monitoring approaches.","parent_id":"ff55fa31-5b21-4383-98fb-59c794986fc5","order":3,"progress_status":"completed","dependent_files":"programs/util/inflation_plot.py,programs/util/size_checker/main.cpp,programs/util/test_block_log.cpp,programs/util/test_shared_mem.cpp","gmt_create":"2026-03-03T07:29:38+04:00","gmt_modified":"2026-03-03T08:08:06+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"43ca18bb-016d-4bfa-93da-7fc744208224","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Security Hardening","description":"security-hardening","prompt":"Create comprehensive security hardening documentation for VIZ CPP Node deployments. Document network security configuration including firewall rules, port management, and network isolation procedures. Cover API security including authentication mechanisms, rate limiting, and access control implementation. Explain cryptographic security measures including key management, certificate handling, and secure communication protocols. Document system-level security including user permissions, file system security, and process isolation. Address security monitoring and threat detection including intrusion detection, anomaly monitoring, and security event logging. Include vulnerability assessment procedures, security update management, and incident response protocols. Document compliance considerations, audit logging, and security best practices for different deployment environments from development to production.","parent_id":"25110dbd-3911-48e1-b870-29607c837581","order":3,"progress_status":"completed","dependent_files":"share/vizd/config/config.ini,share/vizd/config/config_debug.ini,libraries/protocol/include/graphene/protocol/authority.hpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:29:47+04:00","gmt_modified":"2026-03-03T08:08:09+04:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"9d8e68ae-a4a3-461e-947d-bfe4e0449f8f","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Block Structures","description":"block-structures","prompt":"Create comprehensive content for Block Structures covering blockchain block format and consensus mechanisms. Document the block.hpp implementation including block header structure, transaction inclusion, and block metadata. Explain the block_header.hpp specification covering block hash computation, timestamp validation, and witness signatures. Detail block validation rules including Merkle root verification, witness validation, and fork resolution criteria. Cover block production workflows, block propagation mechanisms, and consensus participation. Include examples of block construction, validation scenarios, and network synchronization. Document the relationship between blocks and blockchain state progression.","parent_id":"84b360c7-2115-43aa-89df-1205d4f6231d","order":3,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/block.hpp,libraries/protocol/block.cpp,libraries/protocol/include/graphene/protocol/block_header.hpp,libraries/protocol/block_header.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:21:50+04:00","raw_data":"WikiEncrypted:boPmx5CcA0j/DyoZ7HyhKvDO0uY4WRRkzNPlVPFfuYd8x5dUCvXHd/9oi/DxEkfTxFYD6bAblx+fQQtuLzg3sNwWhDQfuhCUPU0fy858bISDVVeq0bZ9kOv+N1cQafYJexYNmmOXHAtODv6aTvln0mZMaSSdpskonjRSiVDR2JFQ1c3ihfXZ9aWKOJzr9HkollwT6o0GKJ8eorPz1iLxLjuuquHSqCI3XT9AEmwcOaNnQShyTG0htuDWIltom40CsZcu7Cy8U/5nQzjC0xDOrC250aMy5seipxo8FAkVVpMX1XNBS38rhNMjRx2OKCppowA7cIOi2FHW6V4Q5vbu+mU6FUxquGMY6lbq3yu8TbvoMAD/QHS8UL7YYUa+4otdwFZ9QSkbvu5GvmAg2jjbbBzHknhWswLPV2t16urDqHkTqrEYUcmJNobdpZwC6FMjh8IS60obeoHCmUMLWxbZKLs/at3r+7JaWiPt+7xh26AoOr2jvjva8YYv6aSKWGoTMW3H2qpeMDiwUqtqWS0L/REzV01evXpTy69qkgUnRQcWi+FkXRKAwQ4p5veRT8OF23DmlIPRBd9CX73BxgYX+wQmYU/ki8y2bDeb1P+++vOAPh+61ADmkl1O1DMHisuDnaDiCFOfYhQoUbJ8x19MSmRVDwe4AU6+EZrxp8RKz8/a9GwAtETrMQ+90BijOC54NEEGnoN4nI7onVLXrah4q7IPCn7ZsDwfiTROpju69VldR0fx5W3mcW5cR5QkvQ2GxhzLhsLECXMlAfQ8rmumlR3p2VeIdW8e/P/S/ozfNjWZzTfhrhDfu0Vh0Y7Vl6w8M+CVXnOs/tC7MadUAhjrh+JQyC+HMohGmdO7/z9++33J1xvTFJVyMw0GFOMSQFY6Ep07yumrY1mvZl7qZS05ItAmaINydqZu3p6K+KExgwoNhGWchPC4vfZ8xBQ0VJoT+F8Faidd+o4SynyU1Oa9a4nDGc4as1CSHvJdKS7A/xthytbfgo5QJNtZqwsgpqQiSBar6Jt5wb0v34osxOvwjhLvuvDRZ9fuSDvIlOiFT7/h1jeTg77hn49LMeK3SSge8uSY1mhYSX0wFFmSTZ09o0BBULQWJpqNi47MKUitiopByHGADdj6vHInz2cTcAegHNkmJElDw3ojdlDsbQibKm8vkNBNR/J43aDniBItv5XH9lShNCczTfl0ZYuawpqhiTDLOq8QJy8wCli16PSF3Wwq61hM7hq6qXdL1rZfvRsnYBW5GhCSL7weKEaqDTpsk+IxRFFdhwJ1ncnSZGEOLXXOeudTkfZHk8r+YxgLkt0NzpdB6t3M6r975QZs+Tj+4ReU8QJzH2lETRvs5l///xaT2cUdzYBloc/E60aX4zonk7ZyYs3KJwXniHXQefJRk+RsmN1DbuKpwaEFPVI1OiUgtuetyAT05BDA7lh2VSvtej7xZtkMI0FejtchcpCcvJFuH1BgjPfECJKdDQlWhRzLDP+YDKXAP8z5AFFA2tzEw7DXGyBxKo8/9vajdN/f2CiX1x1ryNzep77p2dM5fyk5ZvgmBvQlK5wEf4+BZgjSp+c9B8mojotd6/I5mRMJ6pUqqe92PePdrcW+I4qiFA==","layer_level":3},{"id":"7d9d43c7-98c7-43bb-97e7-3d8e74b43f29","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Block Processing and Validation","description":"Block Processing and Validation","prompt":"Create comprehensive content for the Block Processing and Validation system that handles incoming blocks and maintains blockchain consistency. Document the block_log.hpp implementation for efficient block storage, retrieval, and replay functionality. Explain the block validation pipeline including header validation, transaction validation, and state application. Detail the push_block() and validate_block() methods, their validation steps, and error handling mechanisms. Cover the block summary object creation, witness participation tracking, and block production scheduling. Document the block replay mechanisms for node synchronization and state reconstruction. Include examples of block processing workflows, validation scenarios, and performance optimization techniques. Explain the integration with fork database, witness scheduling, and state persistence. Address block size limits, transaction ordering, and consensus enforcement mechanisms.","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":3,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/block_log.cpp,libraries/chain/include/graphene/chain/block_summary_object.hpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-04-20T08:23:26+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyKa0Xuqqfm5cq0GV9nRcndmrxsHsnYwJpAewisCUpG2ti9GxrCpxWosUOZaN9wIJ7/8/157xbaOnn2BOhyeyJDPEjOCeYSYjSjv1dxVt5lXdexGoI1KQL06BJsml/tJH8IGm3rSrWyMIJMVaaR4ggiX6+4EVB5GRcduKv4h7YPDYp3XIn5/mXxo9OTYPUOtsoVOv7rHyTlUbejkiXURwQve9fLOeUlvOIkZF4R06e8IAaiKcWGIvFXcY2VrH3QcxUFJsp4kJhDzGK2FUcgBnx3qjBwarMUwBpmjy4qxtg9mcgmICpt9DkXV/Qj7CgjGXDq0ch298hK9VXiT1gmCEUwmXar2PNH/y9g8c8RiIUMVAxrUCV6mO2cnruxbtn4bQRHyC6sk4Ob2Xl2kVvZuIDBbT66aj/kOiD69bs6LpzdWsztvVvmOAFqak3DVJANV/su1oWfc4dZHy1TVF86Ri31HD6HaOPhqNpMApI4ZuTGA6AuOth9U/yvJQNw9eJa2uqHSJLovcqephYqd/UVvPQUwwoQmeMyQpQGIgDu02ksU/4/umYthxfnKr9BCJZueLWKne0Ib/cxoDN+QlTPByFNxCIyaHLleav2nztHstwhM3KkUtSO48JMcEIF4KuBSW8rzzIVZSm8sfhQ+Z18r/cGnez0cCvKI8I6dIkLNeFeMz/WwUgYBbFFnw9LMJ0u7OulBWbJ6hXLwmS9uQEAywjdogAEWO7ff6hfllQ5ZJjUMBmDO4drvylBiNbQFRrwKjyqKxSoR2js37uA4O0CBA/JESRC6UsjfeRfGNWa1l/rXrdgoGwwBrE8hT7iNKOAgU2x/xiS81GBLWaUdxUtzTAK4j0jIgecLdmg9DWIxP35A4grHki8nATuqPuMzK/XD82HPaERxvdoyjYE/kyUsP/mUfCwD/JXekHhftIDxZUJSqV7l/fDYPQ5ipe2jBnJIy7Nh4rpvA2BW9RJhI41asIZjiphshvPGZWGOF2GAyVwTANhAoRWizBv+itY1p/2WOckumF9RlmFiXVuFJzkCrNMyvjdvkdCYcu003ud8rO4xtpyb+J6jN5TNAoQUSO5fOhVvcHght5e6GzQlmQqJsmhjwCIcHq0OfStaGzE49mWjAcY3UjQhLQluW7CXA6G0qGQ7XoDVDML/QxP22XB8y8Ag/eDa38ZbtVYhXNIhVy9pWH8EeWIPbbGJv1UMvE6KF89Ybpgi9DmWvsZz6grqkqVw7Kig7sPtS0YJOHjCaHQ7LJmHCCudaZuZ2MF2TuMAkYW5yaytTWIhz0H77S/dQmzQmMbytfA1mqlMnBDDXtlT22T3++L+II8JkaX+0jTi1DTG6QXHTBQ7GcRuJfIF8CXjnJPbDSyUgXNRdvY1/Mn9CbPL4uVjXu90DzGhoKrvUGDXTTIzcHERZKN2/WCYDuD2A/kt/ky+a4Ifw0xSaifi271XU3geXOUUbdpVlCcV9aORTRkhN252B0skqL0oEnWgTxGYxoqA7NSU0021Y5Bd8/1cnNsVTN2vGh0YqLujdAfT3t+xV4modisvpwYxQ50Aj0ZJpcYBstxuDpOaAhEkLR5hr5XLkyAkl1niPitqs2+wSSsmDR9AUBpEY9FszPwk0pJOauEP8Jfr1d5BLOVVyTx33OYPcaq7OSFBB+BVeb2PdBWIQ3rXPJh4/C4vFb2Dm7ANtijqKL05LFes9n4IA9RpbvGA4TKXkeuQ29BEmtOSBPphfzyG9SQXOvTw7hmw5S3Kynu9fQaK77qhLq8/bZnW5czbIhiCfmycKKVJJWKkhDVDc/QGJZkuISswBtvOZqyJEogCnVHh20eVcvsGuV4ki3KHOcPx4rUhjTjXNpaaFzlwE8XrbFLZ8u2B/jB+4toP9H8MuRsWry/rKhQmFlz+dl20Ow/ic6jWDvlTRVljvVsPFvB3bDy4T8IKvzVoVtpm8QJHxIkeEhA7FGrf3","layer_level":3},{"id":"2623c72a-ca9b-44fa-9b7d-de0c2d64b8c0","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Transport Layer and Sockets","description":"transport-layer","prompt":"Create comprehensive content for Transport Layer and Sockets that implements secure TCP communication for network transport. Document the stcp_socket.hpp implementation for secure socket communication, including TLS/SSL encryption, certificate management, and secure connection establishment. Explain socket lifecycle management, connection pooling, and resource cleanup procedures. Cover transport security features including encryption negotiation, authentication verification, and secure channel establishment. Detail socket configuration options, buffer management, and performance optimization settings. Document error handling, connection recovery, and fault tolerance mechanisms. Include examples of secure socket setup, encrypted communication patterns, and transport layer debugging. Address network security considerations, vulnerability mitigation, and secure communication best practices. Provide guidance on socket monitoring, performance tuning, and troubleshooting transport layer issues.","parent_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","order":3,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/stcp_socket.hpp,libraries/network/stcp_socket.cpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:24:00+04:00","raw_data":"WikiEncrypted:dkYJ53aRvrNDaS+3NsNNs6w5If3uzOgs0Hbe29DiBx3mo/yRmSwkQRnMBRPnzoWGqPZ92OwU/caHUIgxDw3SIzF6G+l+ERyUQeM+5k8nlB13TwLGj0fVp686VLtYOr41/lerWMRI7r1nkNr74ZsTI//FSbi2G9SrvyKZ61XeHQG52M/cayN69rlGN09zTApYx4BVQSWb2i6BxxSytcKaDWb1J20q6BHyKneNmvNVZgCaF0rwcMeSSoByQylXwRDtVsY/0BwBP4rfWpBp67hPXAduIM1/AM21CdQgxh2c6knORVht0g0QmQsZw0NWcx4YL9Y1nzZyFpQ70i7h6ipwiSBFydgbOJPVkWTCSkMboLQVC+JReq+N76UfDkZcuNeooMsYPKVmR21KRI53d1ksrMsqJKpk8m/l2Gx1mYC8RPnt8hA5HK7RK35cQcnLx+tHRlGouJ37O/Ho3ZjGeYnuXO06taOqh4oHKNhC0CuTM7j5briN+qDNziKL3qrEagkw8MQ2Flhw2Ut609zD4HJIE4DiH/98snKwoFEIvo3HIZ3XOuQrGA8tqN7EGe7F3pG0++qZeOZ7cUJhnNWxqTeXGsLDH7yxQWtZyBLyvjGQX1xr/juOFCZx4bAzdWoycAfVlvjr2uxkBo6EYFbTo/IyJrXg5VPan51QhuxjTDEzVNWlSwt1lnBCnuOCKwHgBdzcSJgJH56iYdia5kRnlRiLeBRmHyIE169xvgvBxxlrH1JndEb33mw9trClKcuQpM2pPzVA56qCbcbiM2Z44kdqKDr4CSG8ooHl6voaTHVMpIhfDUSmE67NTSyHYiI1dd/85iVQ+9FfNfoASUtTAXELUUYQYvzHMPJiU3MEaD2YcNWgsKvzjxN3VN4FTcmw8L40grY9Y82P4hOZiWDDUlAMLciKeF6y2t266s4DZ8JCnab8osDj8QF+6KTb6kkeqFJ3cCCGI0txYTS54YjlXZcPpiqHCPE0t9FvIT5upocG+rYGTWehyi1JYLJWC274vsGtm5GxLvRg6mbSqE7tBd1v8Zer9fNpXLEm4Vbddd/Rl6Eh0qbzB1Tsoq6fYyLBGLyV2fbQav8S8id2khKvjPBzrSRYlKUt4MIeJoj1OPBsETpBlksb/sBe6zXuWQl1xdv1gj9XrQNqLeVVV6nMW0llZzTx7hDht3JryMwsQg1tnfcOHSIT8O7jb/KR3IsyPyzBwErQdZ401BUyu+fG/uzA7BXgy7/APjoVyikPtgFONSsd2LohWJ/+o/xmuwCFIM3eNoMIwhCsFA98lztBOiM9foR5bXUo85+w7OvJTct69ak8sO+4KO5AH5/Tz7uFF7T77SRhUeDI7YjpD+Ik9HLNsoGKRyr8cbNLyac/UxKH1U4TKLDk4AXTIImmwF5rK8DJ0f5l1TNZgMaUZ8DFXO5vQClOfyqFxZWCt6klaU44p54Zp3LCMzEJnexfBmjaSv0DcVFHG8qLi18z3+qLjoEnRpsnnMHegrThAgDc/30MLr7k4e6iUcffJUilYu4Pu1Sc42USdHD2FfKrNDoUSfokki3E/ZKIrFVGQvC8gnoSqAwuh0ioo3iHGiJW1O3Hth8vbhUnFatBI/jLrXyzAFrOTkVzWwxQemSuJIF6jvWcGkgiAogUGWvRS60wJBSFfLyUdAMPIXDDve4qPvZ3uNGSNHXFN5w5oxjkJr9zWEXTyWOpAcb+j7G2l3FtGxwEAfgiPCl3sCAHm/4tpKr2gTx99oBrasStExD6+BpcjkMiFvcLVuwDnAuknrACPbPJ8vXTbEJ3TxUxzy5/jBlGmaFsNKC9zcFZfTn5AJGPPUGUziylI2Tr54IzA7ULa2tuHRctvQB9pah5y+GJCs/E0wSrqA==","layer_level":3},{"id":"cf3cedf1-9b9e-41a4-bbf0-94bcb29b6e8b","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Build Targets","description":"build-targets","prompt":"Create comprehensive build targets documentation for VIZ CPP Node CMake configuration. Document the main build targets including vizd (full node executable), cli_wallet (command-line wallet), js_operation_serializer (operation serialization tool), and various utility programs. Explain library targets (libraries/*) and plugin targets (plugins/*) with their dependencies and interconnections. Detail static vs shared library compilation options, test target configuration, and installation targets. Include examples of building specific components, skipping unnecessary targets, and customizing build scope for development workflows. Document target-specific compiler flags, linking requirements, and platform-specific considerations for each build target.","parent_id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","order":3,"progress_status":"completed","dependent_files":"CMakeLists.txt,programs/CMakeLists.txt,libraries/CMakeLists.txt,plugins/CMakeLists.txt","gmt_create":"2026-03-03T07:30:07+04:00","gmt_modified":"2026-03-03T08:23:32+04:00","raw_data":"WikiEncrypted:ZHd6gDb1oAMJeik+Vv5fPmYm+3RvozY/gdL9KOhG1Gzli6r3m1Qs+ajLMwPD/vJq3bXqoW1huXFI4mNN8ySzLIQHLUimXSbYEWathKED4BP6kZB18cGiRNQidMb8cyrDV5Iuqrq7w4IXFOrP49KX1Fj+mOjkDg3HSykKn6cAceQlzfAz0DrSk7eNO5hzUQqSiElf3OV0v7+fK9Cm4IQq0058KWBtgI5xr1ykHT0HpoUy3JFULOqohFCF27f5ON1OWmLfAvFSCDxaw0Cl+BhogR6z4GT18ewS7uuTNy2PkJ1ia0uNOXkxMjsSSmmup5HxBMXdZkQpdPZNEoZL7fDXqwhfd98C+eejOh3Z4tyNJtppazTRl06TCmo9zBZKQAczNueGCUBgz5MmxlMxulgT+9hXgu1cWG4XA3eJ96P6ZBxnW25xp7PSSH9JRkMlDmOcuC46lfmCQWt0aTtIS2ozbWrcE0ww96p2VsQ45j2rNdqMIpi1ulIJUOotFpc/CddsAlKtEVpExeGMLcSkX76K3NIA90qoVwWSndANNc4MJ/8bh9ulFe2+uzoBBu3xinjVvUlbOCjyNGqFd1jnMZtnt3L7/t7PH0V9q2SOflN+SgM9jVRVitER45lZFxsqr/tav2KGrocQE/xxUOIjQIC5CMvx2HWPNHn7xRZU9XceW974jpXKFvL5kBh7vnmnsKJupnB9t42ya5cABJD3AQu6Z0j6CKGPS2/l4uzkYiQ89k5SPmbyPik64SWmpi1um5U9Kj7wI4cWS/oflhQlCNAmvw4uvDwwljAA6qj+M6gLAanR65d03Q9aDTAjBYMVwGmOo4abkQv3nf9TCwKxKDVFAs5ZcueELmtGXDiVHfj+aZxEo+t86mMMQ8g7u+kNm84EszGt09RKbBsjXslT7yQIutKSMsZJpE3XeEFYyhNtdvcx4MZ0/0C07WBxke/L+xeuddZajpKMJ3dJJCBkwNkDH9y1gQCS0cFOpuuviGp6SNKtCxcvsgaWS7wBAW+uPcsoMQE0llh0xjKnOnATbn9DIx0tfuUk7ESBuGr0VaKB9nfzTlBLkjl4PToRWCsnt84L3d+ueb44ND8vu7KMItz8QOKO4zuDAQv3ATK+TZjQcFqFxXPqpOu6tx2+SzU9U0Tm1N/U3VMkQgn+Uz1EBAQjxtp0HMRc8ziGnewPSGizlOykM6jUEZhJPFrMxDefENfoQxGLA+l6IrDKlL/lo86+eCXm4vFSHWEalAjeApSnERSF0wPuU6fm9QJcUdlhu7YfBgb2KoEhKQv99o5kzzGAwEO48dvnbGMlT5tg4Wy00FCskJlqYfDQBVxLTL24kNHfDTz7VM3JENKxyK0FPq8e+xgEtZrVx5vIEPzsppJ7Tm2JvwMNsgBNzTTVrWdB6GFc+ykwf9X+NihR8xU80Of6zgl/EQLw4MGr687/twMImC5bbwRa0EN4Pnpm+wfGnxag1dAxyCl7pFPa00FsMWfFsRJfEMTsBtYzA4fj+y8wFZji35gM1dsWtMer8ZNiTk+A","layer_level":3},{"id":"fda1e981-233a-4634-994b-5314629e18d7","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"MongoDB Integration Dockerfile","description":"mongo-dockerfile","prompt":"Create comprehensive documentation for the MongoDB-enabled Dockerfile variant that integrates VIZ CPP Node with MongoDB for enhanced indexing and query capabilities. Explain the ENABLE_MONGO_PLUGIN CMake option and its impact on build configuration and dependencies. Document the MongoDB plugin architecture, data synchronization mechanisms, and performance benefits of secondary indexing. Cover the MongoDB container setup, connection configuration, and data persistence strategies. Include practical examples of enabling MongoDB integration, configuring replica sets, and optimizing query performance. Address the trade-offs between traditional SQLite-based storage and MongoDB integration, including storage requirements, backup strategies, and migration procedures.","parent_id":"7108377f-502b-47c6-be02-3765463aed1a","order":3,"progress_status":"completed","dependent_files":"share/vizd/docker/Dockerfile-mongo","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:24:06+04:00","raw_data":"WikiEncrypted:1goLeoGXOcr+JMF7YkmJQ4CA5GfPsgr9AOqxshcHKh0QXHY1oeNCF9v12XmDZHZdXhCy259YG0ezOu7wCXExHWK8rq0XwOg0suG4Rru7URghgXoS9VEljbRd1sl6vaFJhSLystxSvjxxzzlFJvD2tYkg8LaFtAmMvb8rZV8Ez/vZCMyxbPhKJ/eYVSciU7pmsK5xcHztFCn50vpB2r+Tj7t3gDP8WGYotYg9Jf5I0fqC3CInBw+7+Fy7HWpLVUIBIaIjozAoDMsShFMBja8RpTufBS28/UhItMRKddABKXVEZXD7SGIpEsoJoSREJ6yiSO+EmTw7r4tt0ORzmnJhtT97Bxk6r9hcgLBH9wNaggWiZSGB0X7RZSbzLF4qGNJ8kk/Dku4q/6vMsh1tZlnNTz+xeJ9Qdd4d6UNqdaS1i0rQHV/TauwScbWmVjrmaU3qQS5CwPasVE25WCIbXplFghy90JNbFQvZqI1Et3VDOQTiGhrW4WEULb81StceIyHZHPYG0KEkZ7RSnXUbIn1DARL6HzgoHsunnU1r15BIcy9NKrxjvCIQVJHpNSkt3Gj2AKDIAd1VCYM7KU4prw0cF23fcCABWMrCPPFmkFxsp0G/1NATKnFi56Km0ARP9qM78401kh9C5AVW7pDJ3akRvievrgrCd8ffmyrxqPThxJ4FWDo85X5RFbaaRiNj9qln0BKGqrR9t2JF2OHebqvlzwoROLwdN5DaJazsk9B6QVquqRJZLV+jBuJ59vK9g1rpdU1oBluHRJLvB4PZypWLlTVg5Pf/v5jCH0gnPTpCMxPwfPJlxUc2m5hojJE32fkJeAkFXJ8Q2j9mbQAvuDxUCH1844Bhwc+O8q0ZzPHADKs8yp2RPbPIU9cDsrHP8I3rkRdRHQkSpzW1Ja7wDnR7rHFtaV81Ygr5h0DDQqEGeJRycLYDrvbgXJ++N8yk2pMI3NdVp82G4v97ldxc7pmOoyCtSxLmM2L0AVmLCiJfEIIelQtOfafD8S/dXBowqYXgsFsj7pHzEfLu685kww+S0Hi2Ma58ydkYzot32TR3SBK6Euo5mDirRCGoi66xck8Ao84maWlxOIZR4/27ZoQsTCnnRPuONwNxwf4IArp+RpIyq6y8pMDvJS6D9+NUNajJvmdC3ripFYOzzg6AoGuxRkUKXPGkJJeUxIU0YUv6UUx3/Ceh5rSpXlBoWnIrnMvY57waMMR24d54ElfvPd61lvpdCD6zkMGQFpKPL2fuhcyOZXVUzBhG0iHARrL5sDw/qpkjwUp6pMY8lWFvqInaAAfRcYJqSSxcTf5lSDQncMV16JPUH71IzFKM75zM6dxgi5dX1EbdZHeDSFX4sBwGdR6tMxyw7x2Tr59DU2XjpNklRUYK+t81jNTVBFghVIAHiZbZh0iA26/Pgy/WrWoID8+MBc/XNy4wtzJXPUzsy1notTsYCLr/sK9uptZZRYnp","layer_level":3},{"id":"9c398ca5-a783-434b-a1a3-3791e3328f43","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Schema Generation Tools","description":"schema-generation-tools","prompt":"Develop detailed documentation for VIZ CPP Node schema generation and validation tools. Document the pretty_schema.py utility for generating formatted schema representations and documentation from blockchain object definitions. Explain the schema_test.cpp utility for validating database schemas and object relationships. Cover the schema generation process, formatting options, and output customization. Include practical examples of using these tools for documentation generation, schema validation, and development workflow integration. Address schema evolution patterns, backward compatibility considerations, and automated schema testing approaches. Provide guidance on interpreting schema validation results and resolving schema conflicts.","parent_id":"71349e72-2b07-471a-b7f2-b7299a4cb550","order":3,"progress_status":"completed","dependent_files":"programs/build_helpers/pretty_schema.py,programs/util/schema_test.cpp","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:24:57+04:00","raw_data":"WikiEncrypted:7b0rATEHF8+R+XhpZF8awJS9ucITjIW8AZ92lNvy3q9A2A2uvYfv6YpvR0BnMFsd4Q0ovn849WEZySYF9U7MEsIS00oTyk5KL6C0n6FXddBjWTUR5PTJ3ztnl9XxWJzEUhzMMtIdmAd1KyvimpOCYwQ21QpwY5paukgVnjbsw/0pQ82INNTEiOIwF7BlzTf1HYfL7szXIL0WkJpLMdLxt2h9C2FHgQFy60+AKUZg1pt5Jd3K/aBQWV81VNnDXW/LnOx1FPSPwkGkzssRmbbAg0nFhMWsx5SMLXwbx+0OxsTzcsEom77ZZm1yybS/5zIQUFiRjQfIYwJuzu6N5Z2LWfsWSHYqLWmQF3c6umAOf3r1wW2ZNrCeX9orBn5VMOJZ7l8GTVOJXCDCFxdnr1WXweN5VGwCS0Odt+Ron1uBfAzu1GAw58ablMKRKv9VS4SXuxnr2wY/CQOMRjsWbRtvI71HuFhd2RJZIc3eVAsDc1GU1cmrTeTbUnOpZCUhW1oFgJZ7zk11j0lDuC7R2fp03fFJsHDnTeTn+KjHQ8dMIpWtQ8Nit6XrZb6D7tvpAC0SvTT6/p2f7HZgovIfTijfj1y1hPiIdc1d3NgzyEntYVppm5pepIF06TVVx7zfhhiuG9b6HE5hLuEvMq3DS/4XMm90Cnv4sZnjEyT3TEj5mX4J7N5cBAgYCSGgcNeI43T1C15pXX4uGLqfoOPXXnB/SCpxe9nWbiABMh2oto/9Xz2rUuQGDrsSrvRXL3iFGHAh+0c6m//cPkbqieTn8V+jGVQl6W0JlrLbKYhtiihZ2TDx24go8d7f8PL0ejj90ChkWSBVvmztGtG5cLsTAM5lB21FF4PXM72PfYtGrOCtfIOOHZfaXn/3vJKykmXqi9G01zdxiUzn5JV9g4bjIq2pAeYD9x8XC/bIO81rmTigEbB4nnLKa1ElZBsSM0/70h8jS+5z7IliXyuhB5FqyvZwwW0xVyIOUAzLtk33DyepAdhyg5fBwgApQ/HT48joEV2rTs8N48kN92Kxy2Ye79DVSUvQzIQPTLZoQkDnUqCOageMGKRgFzb6cqmHCuPViGnEMOQf0++miVciKXzhicWHaoLzp+sFjN3yGJMY6tZVI1oh/UiPejOTqvAQz8SMLfS229ZyyilSHYo4cKKzCuR9NlRx1X211iyYLzcNfOdkZwdM4CwTPQMSl3VtUnvqTSZHwYv1ZCeN76rrKV5GhJGX/NxT335dN0vycUHuJLIn/NlfOsFxQG5XodPVwtnxZp7S6TnnU1KVuZrm2ftDmexkuoC+050w+4hBvFdc/wjSpNOWgIx5HxbDS9wWBlmnw0TDrlXh3YEqotm+U3Crr7DxCF+D4IgTMGhdtmJ1R1jLTzSqu6SKtryd32ymbDmRgf1/8MZIIPbWljiJyYH5UNsPbK4WhW9WLV2g+eXlh+1UAwBgpyWvaeXm/t1ctPrjmfXsAnoJTYnhyJ6upeg8GnfHo7Z9UDfIJ3pyR/8d0SUQ7usL8Nb9HXxpWxddOk9Evqn5","layer_level":3},{"id":"23a03952-16c9-4271-ab2a-fd18cbcb90f7","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Plugin System","description":"plugin-system","prompt":"Create comprehensive documentation for the VIZ CPP Node plugin system architecture. Explain the plugin framework's role in enabling modular functionality, the plugin lifecycle from registration to shutdown, and inter-plugin communication patterns. Document the 40+ built-in plugins covering everything from core blockchain functionality to specialized APIs and integrations. Include both conceptual overviews for beginners understanding the plugin concept and detailed technical implementation for experienced developers creating custom plugins. Use terminology consistent with the appbase framework and VIZ codebase. Provide practical examples demonstrating plugin registration, API endpoint creation, and plugin interaction patterns. Document the plugin development workflow including the template-based creation tool, testing strategies, and deployment considerations. Address plugin configuration, dependency management, and performance implications.","order":4,"progress_status":"completed","dependent_files":"plugins/p2p/CMakeLists.txt,plugins/p2p/p2p_plugin.cpp,documentation/plugin.md,plugins/,plugins/chain/,plugins/webserver/,plugins/database_api/,programs/util/newplugin.py","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-23T09:46:06.5542337+04:00","raw_data":"WikiEncrypted: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"},{"id":"12fad09d-d670-4207-8050-ef35a26d7fb6","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Design Patterns and Architectural Decisions","description":"design-patterns","prompt":"Develop comprehensive content for design patterns and architectural decisions section. Document the key architectural patterns used throughout the system including MVC-like separation between data (database), control (plugins), and view (APIs), event-driven architecture using Boost.Signals2, factory pattern for object creation, and strategy pattern for different evaluation strategies. Explain the technical decisions behind major architectural choices such as using C++ for performance, choosing appbase for application framework, and implementing a plugin-based architecture. Include trade-offs analysis for different design approaches and how they impact system performance, maintainability, and extensibility. Document cross-cutting concerns like security implementation, monitoring capabilities, and error handling strategies. Address scalability considerations and how the architecture supports horizontal and vertical scaling.","parent_id":"61cc85da-b705-41e4-9860-17177048c2ee","order":4,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/database.hpp,libraries/chain/include/graphene/chain/index.hpp,libraries/chain/include/graphene/chain/evaluator.hpp,libraries/network/include/graphene/network/node.hpp","gmt_create":"2026-03-03T07:28:18+04:00","gmt_modified":"2026-03-03T07:52:04+04:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"1d874657-e407-402d-adae-077a51576f74","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Data Types and Serialization","description":"data-types-serialization","prompt":"Develop detailed content for Data Types and Serialization covering blockchain data structures and encoding formats. Document the types.hpp definitions including basic data types, smart contracts types, and specialized blockchain types. Explain serialization mechanisms for operations, transactions, and blockchain objects. Detail the operation_util.hpp functionality for operation utilities and helper functions. Cover variant serialization, enum handling, and custom type serialization patterns. Include examples of data type usage, serialization scenarios, and deserialization workflows. Document the relationship between data types and protocol versioning.","parent_id":"84b360c7-2115-43aa-89df-1205d4f6231d","order":4,"progress_status":"completed","dependent_files":"libraries/protocol/include/graphene/protocol/types.hpp,libraries/protocol/types.cpp,libraries/protocol/include/graphene/protocol/operation_util.hpp,libraries/protocol/operation_util_impl.cpp","gmt_create":"2026-03-03T07:29:54+04:00","gmt_modified":"2026-03-03T08:25:53+04:00","raw_data":"WikiEncrypted:4o0MsTZSJF8izk/4K4S0sgel0pL3GjUBgmfU2Jyx8LAEeqHSwBDIqrwqYaLa7vz0dZklAexiBrcyBPoGl0UL8BLUGv1A6Pm6qrXwLUFQaxQ3uw6aYd84Czg+l1rsyFCtZkGqcNdvR7IzXAukFAEoBdxczKyxinARYsusL7HRvAfVzJVoHceBpQQ3T8jYuUKHR7KxqUNsY1I1N4cKmpYRNuONQUbY3FaLt836Lwat+eczNxHuemF2h54DgyLIYFx7jGWD64tBO5H18dfTY45jnQWyvHaLi9b34BxaNrhm+fGKARUr4lS123jCX8Ogd6cROYLNUcfKWIV71Lza7SLjR3oy2fJHN2RTB7aek7eUs7BZ29A+DVGyDmeK8uCBtgTPDzclEAp6WftsK75zwen2vDxgiOSXFpRMVMEAOHAwj1IuDC7RNL+ffoS7VdEA68fjVq126qs32YF+sBGMUkEKyWEWX+gkggDLcEHsn/7+jSvzHtKBYqvBHDb4T0RhQ33cQm8MOsWmMxNa/cVQmnkVvOXkGhgMzkTo2aWzaU5vJ/1gxMrhMc+G6+zypIGtUI9UjmYZslWZiPNHcOTa2Fe+62p2Finm8c8m8ItRnKBSpvWLSmz+nIWazm7UWfByDY1S1v1wNfnY2PcdeEAjKCyxthZ5Cky9zotWIT+qrIOpc/qC26r4ZBiQR0j9E1GWg4iNMJxrVhTp02hdLeaTOL2pfLR0G4X7IcxRwvHRz0hH8trmEJpknID6V2HoDQ3xJPAyk7MoVzWBkP0ginPs2PFFCPTQKuJCx9YICn7OxOH8KNNGT8dqz2jLx+oipdS5PkG++aRBaQhBx/3XcXUJu1RLEc5ow1BZ5FfwwFI1SawDt2JI+TJwDy5UvAJg3NVZlw2VZNOWvlMSWjzRd1JXWKRnZ3ttaAdOh8Rnq8018rPe3hTKusOw0H7x6Qutwzuy861i00sXA1EpBOM+h4qwdylwOpck0nF6stCsQKPPthaeVkTF54qbg6oJiJisfp0I9QfmilymYVDuLFzflAylAFe8YSWyBHptb61CK4Ak5snS3b+69+zTp8vXayv56nEDuQ8gn7gtbYOmYf7PpkfCmWz5gUtos9IbU02Fw4OnqLWIyYUH6qOhbS87wfcuSqUp+1WKMYHFNxzTmXG7UQvt/7Ir6SJvZbS6l6YykQlv2yMFV7+LDWkQyA2o7PPDUcTjmV4IQVtY2pd2QEkdQlBFF7doTRILVr7moooL82uAYJK1aSAfGLpPLQ00ZG8qg6d0Wx3YVH00HTPF7xHCvt9YOJwKwPZ/uF5ycShlwxUNsN2qj6QIXK9CdnDV5a5JDGhP/JmICPhmAG/S7PUAL4d5+EE6xxFA4iwcsWyZm1i76v4W5l/+U3wz/4cREOAone0UPOTGBFFvTvrgLgt2iwBpoWCUJJs1T6w3dwWMyZRG1Sy4dJY6reScRpuOoPdBmKELw8zB4hBipR8Tlj5DA517ISX2rXS4QjE53Vk0mEbFdVha4CsZ33/5Ytms3zPrGhiUM2/KFGnEQMevHWbR+98FTktgxyxdpcmc3q9fByqAP2kYSvyRFDeX8oG+KsE+DdUEqk6u","layer_level":3},{"id":"33f77581-8eb1-4711-bfca-7bd928215b93","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Transaction Processing","description":"transaction-processing","prompt":"Develop detailed content for the Transaction Processing system that validates and executes blockchain operations. Document the transaction_object.hpp implementation including transaction metadata, status tracking, and fee calculation. Explain the evaluator system including the evaluator base class, evaluator_registry for operation dispatch, and custom operation interpreters. Detail the transaction validation pipeline including signature verification, authority checks, and operation validation. Cover the apply_transaction() and _apply_transaction() methods, their execution context, and rollback mechanisms. Document the pending transaction management, transaction pool operations, and broadcast mechanisms. Include examples of transaction processing workflows, operation evaluation, and error handling. Explain the relationship with the witness scheduling, fee markets, and state transitions. Address transaction size limits, priority handling, and performance optimization strategies.","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":4,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/transaction_object.hpp,libraries/chain/transaction_object.cpp,libraries/chain/include/graphene/chain/evaluator.hpp,libraries/chain/include/graphene/chain/evaluator_registry.hpp,libraries/chain/chain_evaluator.cpp","gmt_create":"2026-03-03T07:29:58+04:00","gmt_modified":"2026-03-03T08:26:05+04:00","raw_data":"WikiEncrypted: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","layer_level":3},{"id":"10042579-7fa9-4a92-843f-47cb5ec8d3c7","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Peer Database and Discovery","description":"peer-database","prompt":"Develop detailed content for Peer Database and Discovery that manages peer address storage, discovery mechanisms, and network topology maintenance. Document the peer_database.hpp implementation for persistent peer address storage, connection history tracking, and peer reputation management. Explain peer discovery algorithms, bootstrap node configuration, and network seeding procedures. Cover peer address validation, geographic distribution optimization, and connection diversity strategies. Detail database schema for peer records, connection statistics, and peer scoring mechanisms. Document peer pruning policies, stale peer removal, and database maintenance procedures. Include examples of peer database initialization, peer lookup operations, and network discovery workflows. Address peer selection strategies, load balancing across peers, and network partition recovery. Provide guidance on peer database backup, migration procedures, and performance optimization techniques.","parent_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","order":4,"progress_status":"completed","dependent_files":"libraries/network/include/graphene/network/peer_database.hpp,libraries/network/peer_database.cpp","gmt_create":"2026-03-03T07:30:03+04:00","gmt_modified":"2026-03-03T08:27:29+04:00","raw_data":"WikiEncrypted:XiRbxJCvY27UULqlncgSjGeAt+SntVKp6XLlW8ZptMe3cQN5ElOvYsLW2S/yrn5Pm/gdCGXs1y2Piedj9v33wLVOwOus1E+E5H9jI71bXJ8uMEB/sz5NkYwU8/6WNzkQEHsACzMBDHuIu68ikPcAtR/8PnomAHUeME5ZfrZrVhoViH3TDu6y2YrDMdFxjmqinq0fSJUCDY+ReIEVe0DvsdamrkwIGLGY5bVT2dG4wA72SkOilgWxqZTHkxb6lHymUVytk9eYkF++9M1xy+eMmJxQD+TE2u5KZxVCvqgn2YADlbSX3hWCGnZjEjZFVlyDxQaAO1QnQ8yUy2iYYhwwWm7CeMqOc9byb+cFu+/OcEVm+e8BFvLtlLhxtP3eh+6O2Vs973N6W5ysyb0JygjHnJ8nudjMyaHNw8RyMvqSOSLT9U6UwXVTEaUotwIWIKzszrlF5uOiVOgjVs4Vuhd/uYnYqPY7yg1U9Gupcuxvia0BPTymFFSR0GDBDuozAVK3y45LRyXz9WHPutVVQWh88qMX+jfAGvGLPWgoIINUN7qxj7vx/kvAhe+zqVIba7395/OXZF6206+vXtoOr52yCARo1CLxoOxdGiOKHHIbYfGb5rQTXcMLT47TM1pJW77qF2ZR5g5GHIJIMydfYlnCTELuUPbwEQv+04i9jOdcmqTvtikO6WoduzLSRan9imvV39bTHESYJcjmUlckudSYPQtozz7k9e+CM8MImvuLr9XjkYGT1eUYbvc+w1RPzIdkX0510bTwxzf+aDCpoCvs8EQsEWVi7mp9dM2qBWQEdpkW8TIno+0mFwoo9mNRZDjG3uDxVroN5n9AgEtgWwXkrXHOFMpY2E1AIKhxOYjZ1Vy5KzxBMdh2cinDqfAb6ll0vpu9cElmA+zv7ttinHxgQjFyClOod38iDnt5ZR+0FGhcIcs4P74nKN67g708KKvGVd4lwx6dtmZrc24PynmKHwA2TBmrLBNM5ayRIe9uGx7fwf2GBSg2dPNCXEUtOTsDs7IGGa0B9w4wa5CKCIuoB9SoV70Lq1n/P6BwSKUmhNygSrebiD43uHUQ5cOIYPv9jDBgaTNBoQM4TnTC7fjNg5xBcDw0vlGHTq9FwedyYAG47EgYdNoSbNf8YT/GbFLjGaspoWg/aJJfrOiArUoo6Wg4ojQP3O0OGKlX4X0H/+9dL+4J9PwFjIvx/ESPb/xBDznza0ed4IZr+4fZ7TaSScM5euZl2jk16NwcujBriKnp6ABz12CC3fd5IXOG8S/P/iIbQseHgBo7JfDWjLYX20Cap8snp6zDAuJPznfy5geMKJ/JacoOzCglJsV+R03yLHv9QFHCjeSziCtcx+9azEC8MvUzgqr6CzcAI4nkh5GhDwnkmJ7JfJU22HTpajb16qZcHJBnGZWHiG3KZdD8jKV5qSo2fwd+92rHO4mrCEXisYVNImPxfi8jA1nSAp6Y2NXk6bFa02t0jO15651DfABmgqeJxXvGGgN5MrRLKGu6rb3deqKo+dcjh1F7OffKbsMAZH+mQOCdYVTsnEyCJupKzMvhxEqC/LIXyStFyD8xXNLXXMILU+BGDP5Ot99lNtc1tavX26Wadj+ngWdtm1fw3m6GQ9+HUEY2O8NQNTNdGyhn7l58zZA6wDYY3LgzZzzq3DBddqX0/Hlrr2wcjnqsfapDRrVhDfTM5Y5WjHfvmtO2n0v4Wv6ZgGL4pTCzDtXzl0is4FdsexfPlZVbHL2kFxVm7iXsRfmCY7F74GkQUrSNaKjisSho8S7eR3XxH26Kbkww49FudqO3YTCQO2q969KjbtwNxa2MS3UjOh4=","layer_level":3},{"id":"0d06257c-c8ed-49ce-b5f0-024a8f1c62a4","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"GitHub Actions CI/CD Pipeline","description":"github-actions-ci","prompt":"Create detailed documentation for the GitHub Actions CI/CD pipeline configuration that automates Docker image builds and testing for VIZ CPP Node. Explain the workflow triggers for main branch pushes and pull requests, including build matrix configurations for different Docker variants. Document the automated testing processes, code quality checks, and security scanning integrated into the pipeline. Cover the artifact management, Docker image publishing to registries, and deployment automation workflows. Include practical examples of modifying workflow configurations, adding new build stages, and troubleshooting pipeline failures. Address best practices for CI/CD in blockchain development, including reproducible builds, security considerations, and performance optimization of automated workflows.","parent_id":"7108377f-502b-47c6-be02-3765463aed1a","order":4,"progress_status":"completed","dependent_files":".github/workflows/docker-main.yml,.github/workflows/docker-pr-build.yml","gmt_create":"2026-03-03T07:30:16+04:00","gmt_modified":"2026-03-03T08:27:16+04:00","raw_data":"WikiEncrypted:xtifkbs/d6wNgYxQA0eu1rJ2oLOxPwih+xivji5z+tk4TDdFMY/p/WvAfD0LFZfeJ+Eax8x67PbVPoq2NW8j2tIHrBfX9wrvkZxoA9QdrNVjiLVdVfe6Y1r0ibktm0Avg6vXYAS0SaYo67e5rpbS5THtPtI5Epz3s9cYAf9VR4Ht6UclEB5iAnTvfl+NiNqfwqwXiOspjLPQiRG8p3RfJBmILD7fF74upqMQMTZNR3dX1RyKYAlf52Fl8pvi8nswFcV11CJbcJFMlHuyqv8r1x7sF93nPiITCDAY4YEDZWPtv0HPZbO5ySbZHW9xbssULeAkFufQZ/thD6DxJCi7VRJYes9hYACZbo0sGXne5XDS5Yx/46CVqDbse/jkgCrx32z0z79xufyr+ot9vUQkNIk0/AR44Xp8Jcrmr/X8f1lhsB62/1x3o1O1KJjW9HRPHhR9E8qwNbu3fJzjGJ2T5YyRodDBh1WIsRecGD2oc/aHfbYTLleUIkaF4ywe9XotnNdXE+2AIDZUIu6n4c/5FEPwDpUueJ4Tp9k8+0OWRmWMKDI4nBMsQl78/UW5ztdVu/cLE9zt7D3HhyQEhqD9i5hVXxOIkTI0U//nf+BZWPBGkwxAujRCgHUo83KHF2/rtvvaHVaeLCtDI3KHBfgR3IYbBZfOSKN9t7Pt/SyFiuO+OXYDMzpDJxjLHxbBHQDtDt2r5p3Gm8nG3WssxSuRpEBus11wtbcjXlF2mXLsAl1wCMvARg12hIujsTyX93eiDPM9fBMzi/vFbFUOpWiA1wr9v/dDH7eMYbYiSIg4yl/RGFtCLvn6HbxwUkiYKS3TCv/o3gjbNRpr6fx9S+slOi3AgEtxdTTwarmmGxIW3MIC1ttWgDOIDKCR5UKIW49MPA9YXncu1oMKGb8O5oegsXc/GYpBkBlJQcoCzYKXZweonUUybw20/ubLULaB7u4MKBsN2b+StKx+79GvhVXFstIGp5avC1FRLQzt0TnQq9mYErtlpdZptJP8ICL6VD9ixgiWv9h7xNkCODRVkl3iMLjqfEW2qAZEvHHFMqRPP0ahgx7pp+hgFZPwKU0mjPKeUXl8krbNPXMeEIIKU4IHI0x3mpIfJqIYGm8frGZkdEgeHdiebGnPkRSMwQS5nPieC6CCoi0njCZkSNzttDzq606Hg+uAeO6k8sdlYJMnnVChv1lV5PjJPeHCPiWzQ5OjVeB2Eev+ZRsYt9H3ki7ze7YVwsVr0uI9Oq4T2F71RffnMEi85KedLxjLysvnZX2sUg1vhKCdBfIGsAD2WknQG+UifpDs+lBI4+lxP+BreYfl0r/B83QtGC43dNsT6U/tlrhi6AlVMRXn4PtnpTty596UHw/q7nIST+ypHUfADM1CFQJTqpQG5UbAOH9Nx+mz32w0nG+e/owYNzindwUlSLihC1265vOzGpP3xZFwPKHT15sdqcruYTTkrbWxzpsoOrjyZb4iobm6VNhIB2RPlTwGjUMtx1uUnum0VzuS7x7xpo8CjYM6HuyYfu/jacSvKPqPn1A2TrS2CmIxl4Nb59/V9OjhS75lWzk5rUXo7SLHSmTnwBMg77E4cxSlfVHeRvxSDXS4KdCgvq3owWlaIw==","layer_level":3},{"id":"c88165cb-4289-4933-9556-c797cd9b370e","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Build Helper Scripts","description":"build-helpers","parent_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","order":4,"progress_status":"completed","dependent_files":"build-linux.sh,build-mac.sh,build-mingw.bat,build-msvc.bat","gmt_create":"2026-04-19T22:01:25+04:00","gmt_modified":"2026-04-19T22:03:11+04:00","raw_data":"WikiEncrypted:zhwwHcEGfkuzROuyPGwGZD/0WI/CTybfsgnvf0a+/fBPmrYtLd5NuaTqipWJR9I45kt0KlRWyKnQXBlUGFuKVXIWHd8zpK1bD/dws3Y+0y5bmVLWHKp6dzQZhaCQ8PqdbqH6Ef6BOExueeAKMrg3VG4nGQ4qnkwQuwN3IYhGJSf0t1yOpT1aqpbR+u9hEgg+mf/t+np2afE7VAT75QUC3xAJ/6WmRABeDId8fKJ8AJi2YCHWLM/x6M/vbZTtQNbB3k8sTMjZxrWdv7Jdh1CgCg==","layer_level":2},{"id":"5d002413-f09c-48b4-ae6c-288ea6d2bb74","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"API Reference","description":"api-reference","prompt":"Create comprehensive API documentation for the VIZ CPP Node JSON-RPC API system. Document all public API endpoints organized by functional categories including database API for blockchain state queries, social network APIs for content and user interactions, governance APIs for committee and proposal management, and custom protocol APIs for specialized business logic. For each API group, document HTTP methods, URL patterns, request/response schemas, authentication requirements, and error handling. Include practical examples showing common API usage patterns, parameter specifications, and response interpretations. Document WebSocket endpoints for real-time data streaming and subscription management. Address rate limiting, security considerations, and performance optimization. Provide client implementation guidelines and common integration patterns. Include migration guides for API changes and backwards compatibility notes where applicable.","order":5,"progress_status":"completed","dependent_files":"plugins/database_api/,plugins/social_network/,plugins/committee_api/,plugins/custom_protocol_api/,libraries/api/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T11:26:06+04:00","raw_data":"WikiEncrypted:RZNXu19SJ/2tmZCrVS63Y22apEi7GzLCNEfRMnzWirpXt13SoDaP1qe23OLxeGSWild/EjV6axUq+K62cfQVmzf9dRKxs0sFQ/Fwj1OJv5b8oqQ2s2r2qPkSzOjqC2XY3VdTt0vHgW/2fFMJoqG/3n5ul83yH4fYaSXzn547LK3pNxEvp0tGxLN7ChFylWh7I9HE0iAGC4UxUYBF20P3UI+BEQg/O81U019YAnUlRohT4aYAQ+cPSBeDHVP5L3pCZ8Ap8xaQx678bKcCStlVfJynpH8C6VkRLcrdE5jzNDmomEYM9Wn2GbwKdk8AcWOkSFHw3OWjf/zwS1ETuTjvzmfiTQHLc56IAaqr5bIYk/YeDvKOALqKFv1pfnKuJzn7wFaLhp8ulxkRat1p2H0Asdgf4wkvCcuPILFuZWk1+R+1MwUvfwHSYN+u3JsB+dUj5L96WMiy9y5bTNMyEkt0GzMgZ+LxPPZz9ah2jmB7rWbr7BxIS2jMu8GuPflgXdcYOvVrOJb9SkhuOQRjc4G4twlZ+cuKhX5O80p4hU6TLp8/RxAdy8TXUnHkoRTV2emGlP6VMgcNydSu/YrpUpghKLmBT8gu3LUbb8DG/2JVtbKcHs3NPX1DE2Uux1vn1xTBxs+Q9/Ny4G2FFrex54FA72/daixMJpRBwpQMw/5PNwjLCaqpyRyeLcgCXgzA/RnBEqQ+64bUMMkyUVJxhVIGsxd6/FpOGi6GLFpDbwz0GP9xGrN/7XsJpC/3SpJ8WglZoedjo8UOAM3RRh3kaEEa6JPJ+yOr4ZGT3p36K8u32DOIEUy/m8RAjyo1p/+yxaXvpzax/f0XE/yfvKxxZ9AC06DPfnlunNBffkqQdxCLFNW/y9zuItCjHZh6NnP3RkBg6qZMXQkOV6vNGTRw+QCDo/76ZT8PPKzXSD8jhboBTNJJYBWBLJjO4/EbU13vLgyd4iHvE3G3aDbgcle6Ztdkg2v6tqZyLKfqDMQCGgpOjBdG5QuWwS0Oi8OkflVdufxxbIVPMlN35Vfl3dIyu6+wW7/Xn3050eNChA0b0AQluxVp/7nvgfFmHxC+P5HoEy7O82O+kXqIPWQEdElbQliZ/tvuznpan2GiKCW6bkvgMcnZ/NNUf5NuIQPzCD31jDU26Xlk29fQ6/F3lgPAjyce5MR7F4eypK6Dng717i+kBPdreg+VUz8zL1BYToPz1UGR5TfpTOKsvo+G26X72GS5j85pSQFxWZMXoMZv4WIlbdahxaOsGGHvBxaGsuBdX7xioUYvnmfeSBCaAKnhd9uP7Y+c6sP8MbbkZbePcfwqYmf35G55TKQnpE0DoGV2uhhmKcwOz2H2ARCjvU8mey6AQ92kdUnuga6OdTHkA8WdAI0RXm2Cve4J4YWjnLRNIe9CBI1E2VQrDOPSjnrW8QDT+a3j8dpR0dAo+7amS90DBhJcuaox5sKkCfIo/yRElmquADvFOF8gPKw4PcSoXRz9TG7yUg33MXHCHDoSg8jWwgGONJoiZxrmHV46WuPrdnWJudLa4RrnHqp0TGKoxJ4AEw40h2wzT+5Lj0fyVdO5iW4aMKXVWlclyWNU1EQMSxwJb4ESonxBdmLrMM8wJxs8VLDRx4XyTWBVFwPsjQPwIUHZV19/cWHpORmG6TOttDbgPCYC6ccvGsLdzQC4b/7C6rE/736foCG41pRyvBeYzaSWtXUAscXpRAEMQCQkzZgEnbYjSUy4AzVAzTe2cnACdI9tpuE4hF2AF5hL6tq4evmxDgdvIqSzgzY78zGFedj0ZXtX4OsPLHmvifdVLRa1gAA0Ydjpc4fZH3EEBxdPcB2InqRTPOQXf47c5ja9qw/oPMCSSu+vWYCu5e2vxjEvqcRyVtIK4+bt+HPyIvJwo2gXCkXrnqe7QOxZxxEO/9eF7NcG05QaB42jRb87nDKirsTQkqzvlZ3niK6zc7in+XDcGIPhGP0IXitPqa/2YgY6bMRZg/4KOrAymgZgrZH+MpBwnIZv/2cjQhDrZzLZE90nzpAWp8fgkYIS63lMyiJJOSJebPltGtwNXDDM+bBhp1ttmGrg4WhL6HbJOqdkSj5MCyVRX5EaHVafl1YMJL1WxoluaNx5ceGdpmJ8z4PiC5Awq4A4wfRNchzFNSyDV3YeEZnlyzhi3MC2w2VtvVFj3JMWKhHe8ieuMuHq7/F61Q3eL1prsmL1q48NmPQJmAV8QRd1MDrcpLyIcBzI8azcg8ZTbWccUvR/z8HgpWTlH+6XY8IV13wj6/xtImCiY1+zF1Eeem9Lglfctp+19aFFY4cM5tywOzIE1gbbysGBG9mXW7gjTQ1K5MMWB1eYTWN2IKCulk23mzSQt9tfHUhT3LJvrfWDIexhB5Jlo7XwmBtIw5Dr+3sJ+a4H/KIpb+OPb3XpCEOB1Fhpwtq3wH0WFLiwbR838GWGfzqvPKIyet1TEY69aq2OevJLAp7dp80xJ3WlZ0R9YCaWi39fbVuEAz+nrwv+Pyc6D+BKtJDo7n0q0sOSD2skVELYLRRskQDbg133QhZsg1tZRwhy6Cv3"},{"id":"5839c539-10e8-46ae-b351-965f9b43d732","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Block Log Reader Module","description":"block-log-reader-module","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":5,"progress_status":"completed","dependent_files":"libraries/chain/include/graphene/chain/block_log.hpp,libraries/chain/include/graphene/chain/dlt_block_log.hpp,libraries/chain/block_log.cpp,libraries/chain/dlt_block_log.cpp","gmt_create":"2026-04-14T14:39:36+04:00","gmt_modified":"2026-04-14T14:41:40+04:00","raw_data":"WikiEncrypted:R9i/29qd1Uv5xEgS1tKQyI1I0rpdsO9IumbhMrSZOSV7pWU+H3/REFsGh6aDTot4hNxJPS2VAN0rfbzcg4VekaBmG/Alt/nqGifIFlLhScM8FHHmLRuS2zB0uFzQkJdXUBV23GOZdcOPSusr1YBSe5C1pBy92GXe11lEhG++DJeD7uDwx/BwFgme27p7RN3ShHGpOKO6KZLVq4NtrBbRqXBgj+BPN896vHdpQsGPy1Z9xdzm3DDw7+wmkNL+5lwLXW+0miCGz0DCrZ8PWFoJJhE3W1JhA/46ieUfQOPY78J4877vX/mqkUnYqvTQFp7WP5nOGjPH/csixyLK1BUw6K2TEcBagf+in3k6twTXnVUyf1ZZPU/VpryPBLYtnWHcOZgglvMtupZVMfciEg1Ziasrbccx96hkUHVxE6c59taZWMVDyPuepIVEIVVoBJZJ","layer_level":3},{"id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Configuration Management","description":"configuration-management","prompt":"Create comprehensive configuration management documentation for VIZ CPP Node. Document the complete configuration system including configuration file structure, runtime parameters, and environment variable overrides. Explain different node types (full node, witness node, low-memory node) and their specific configuration requirements. Cover network configuration including seed nodes, listen addresses, and peer connectivity settings. Document plugin activation and configuration, performance tuning parameters, and logging configuration. Include practical examples of common configuration scenarios such as production deployments, testnet setups, and development environments. Address Docker-specific configuration, container environment variables, and volume mounting for persistent data. Document build-time configuration options, compiler flags, and feature toggles. Provide troubleshooting guidance for common configuration issues and validation techniques.","order":6,"progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,plugins/snapshot/plugin.cpp,plugins/witness/witness.cpp,share/vizd/config/,CMakeLists.txt,share/vizd/docker/,documentation/building.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-04-23T11:18:10.2274666+04:00","raw_data":"WikiEncrypted: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"},{"id":"cadab21b-6f75-4c9f-a0b6-d884627bd20f","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Memory Management System","description":"memory-management-system","parent_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","order":6,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,libraries/network/node.cpp,libraries/chain/include/graphene/chain/database_exceptions.hpp,libraries/network/include/graphene/network/exceptions.hpp","gmt_create":"2026-04-23T07:21:32.8087509+04:00","gmt_modified":"2026-04-23T07:24:03.9860571+04:00","raw_data":"WikiEncrypted:4UGnUWsfWDZbqjKXeP7l3nIFoUg1QR8mX7Mg3xz3Yqw2RQAhFYQlnJrNzDWK62g0p28n0x68xCnCqGl889LahGm2SmDbdbatAKMUU6rWXYCa0OVLuOdGke8rYlfqEy7jqg9n6G5tgmPenrLnxYIV3sNiXn3qSd2vliI9gyL7+Nnnvh4wG+yt/57yJB6Alf9j8+Vs14dAv4Jqb1RjzwbcYyfw0XFVsg4xHOhBwJQw0dCApL6hAyQ7v6+hVzoKQe14dtn8Eg3J7ESvXVm01lpOzNYenxKbdJgKdUe+P26n9bbzODvgBbRBFYiYSmR//Vl27IUpjNtsUiFgG1aKtX6r1k+dtQayk4L8rEzInpYj7gpthyG82a4iWGPX9wPRMCUNwmT6eBLhgFwY3UuWMHEHOXEQtSwPP6JrDjjxNwMWROGtuYbGiQ5Cx0T2ulznu96E","layer_level":3},{"id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Development Tools","description":"development-tools","prompt":"Create comprehensive development tools documentation for VIZ CPP Node. Document the complete development toolkit including the CMake build system, cross-platform compilation instructions, and Docker-based development environments. Cover the testing framework with unit tests, integration tests, and performance benchmarks. Document debugging tools including the debug node plugin, transaction serialization utilities, and network debugging capabilities. Explain the development workflow including code style guidelines, pull request processes, and continuous integration. Include practical examples of common development tasks such as building custom plugins, running tests, and profiling performance. Address code generation tools, schema validation utilities, and development environment setup. Document the relationship between development tools and the overall project structure, making it accessible to contributors while providing sufficient technical depth for advanced development tasks.","order":7,"progress_status":"completed","dependent_files":"programs/,documentation/testing.md,programs/util/,.github/workflows/","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:35:27+04:00","raw_data":"WikiEncrypted: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"},{"id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Deployment and Operations","description":"deployment-operations","prompt":"Create comprehensive deployment and operations documentation for VIZ CPP Node. Document production deployment strategies including hardware requirements, security hardening, and performance optimization. Cover Docker containerization with different image types (production, testnet, low-memory) and orchestration options. Explain cloud deployment options, load balancing considerations, and high availability configurations. Document node types including full nodes, witness nodes, and seed nodes with their specific requirements and operational procedures. Include monitoring and maintenance procedures such as log management, health checks, database maintenance, and performance optimization. Address security considerations including firewall configuration, SSL/TLS setup, and access control. Provide troubleshooting guidance for common operational issues, performance bottlenecks, and recovery procedures. Document backup and disaster recovery strategies.","order":8,"progress_status":"completed","dependent_files":"share/vizd/docker/,share/vizd/vizd.sh,share/vizd/config/config.ini,documentation/testnet.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:36:27+04:00","raw_data":"WikiEncrypted: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"},{"id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Advanced Topics","description":"advanced-topics","prompt":"Create comprehensive advanced topics documentation for VIZ CPP Node. Cover complex subjects including hardfork implementation and management, database schema design and optimization, security considerations and vulnerability assessment, and advanced plugin development patterns. Document the hardfork system including version management, migration procedures, and backward compatibility handling. Explain database design patterns including object persistence strategies, index optimization, and fork database implementation. Address security topics including cryptographic implementation, API authentication, network security, and vulnerability mitigation. Cover advanced plugin development including custom evaluators, database object extensions, and inter-plugin communication patterns. Include performance optimization techniques, memory management, and scalability considerations. Provide expert-level guidance on extending the core functionality and integrating with external systems.","order":9,"progress_status":"completed","dependent_files":"libraries/chain/hardfork.d/,libraries/chain/include/graphene/chain/chain_object_types.hpp,plugins/test_api/,documentation/plugin.md","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:26+04:00","raw_data":"WikiEncrypted:qSUmbhu+RuqdVWUcJ+wGdyVAD9Ks19xuWOYgkjDNvKBwFZN2dDegGRt2vZTJRk+Ji+Yjf6JStqPLVhqLzlVOIBFkEa8tmRAxO+h5B4/Y4V+oKWscJyMQtWLTAa+jFf/X/F/eGugIpLCcVs2SqH1oF9HHA0F1Ep4Tyfr5DBNZoD2ZFZRQdjTLNNFXLLfxDtwL64LqG6oZj3GV1vL2E2RAEfhTnk3WOkpMhMUItUbimJKADJDrq9psGX7B7OX50J8FVRhEkGVTDqKRsZRq7fzEpz++DB2mYELb/JRMKbjQVaFt3JivdsLx8alDGqkbCzT8H7Qn9gcnnMt+wTj0eSOtqEE7qjOlWHjiGqrrtl1vDIoBLVBTK6lwf1PEoIywdrJsX7BnQfGSPQK8qFxTVB4J4MuNLYrJ9qW6tXyBooR9J9cWHq+I5GooD9HoN3vet6pCeKlWwZfjUICdXPdgFOUMjVbtu+TGnJobW/7kBR0zFhwsKK9q5sNcMsuLLu13gdNwNkYTdwwvUrG6Qpgmq0Glrz55iOSNA9F7PJjST34P0DC+h4h3IGGFtHrUPddoZW3a9/tASZskeAH+LJEfYCa/2T0ovpU6WOOQ8zM2PGwUgj1qWfhGWj7WMgHHx7K20bJF9NIY4VEqwXSTZOImCdTuBQYgKXgL8SqUxOcl71LPMl7CVBreKujmNcefs0y7iBEKfj5XZmstFbEfY0Ya6UvkjM6I7OFXrqUejoHeM61oGl+eBdcOV0kvqE9KwI1HSzi4JgoRT/SX3S+8Pa8ttMzgbZUOv0otrFm4m4gWiGZBm5XZaf5M461Nh5K4fSYbkHuz+QsdjNXYMQtnKc2zop4yhFMU1o1vzzM2GevAUaKchyO3fUEGisyCBMOzC6gItXYKJTfinTGM5g1fBrV50piU3GIqfgsd1bTJgGG7sGmN55XQnjUcBUMwpBg/5fTNXAJTccVYVkSWlvCQi+DNSQFaPIMtykqdn55lAuOEFAH7e1MblA+bxcmMT1MBG6gECakn05q5xmFIZJBYAaicm/LsNLYakZDxd4n6yVVr9YeEgvR4FwRKTfCtYz6geUhd9twW9qmKxzrjJhrX08l5YQ5TQdoypOx/mO09lMs5rlE89i0MzisvZsu74m8GWCKr8Qq+1s9eSku0SXbQkhnvdfrH/+0ewUsaOrP7CV5ntiVkde3EXwTY0FeaHJkQSt8RahY1l2AoNjhIFdXCX8aGQbDp0cRX6ddVtOZKTjLjCaWbVVNwWR/8xbhKFFXE3sjDr/nn+RaD8gAv6PMhdYBS0Fy+hveOdpozpAiYohbWz/Z/Tf6H3C0lthKUSjGvIT5rQHSPRmF3R6J2rmKJLQAbLh5cPLClVG3028sGjqDvE1StF2MVpldK/2qRI47dP25zUb+9V5CSj9r/wk7vAcby8JFGjO/csKF6yKuse68HIVz5BYYCMkZ07zYqNK6y2anj0hD2oXTcQgXVLlAEAetL+XxgstJpYov1/AG9RF0zrh2Hsgti5AJ18sy0xH3vyvLxWzp4mHBiEweoVLJWgXsEyG9Pcu8cwCntC+KnNZX0txom1BnEz2eWqlWq12ODQsIoPouCq8y8DEpg/cYxE6xQ8Qil8cR5HvVe44nef67U1Yd0FNWE+wWSiY9JN9msWCU1A09gj/+qAk9EyV80jy9JdG3+97hXTx1d0fL0qmYJE6b0BgqNkUYFDwOKo7irB1PCPelUCtxAwI3aJ+k52PgJqrWq3YXjmcY5XG7fPTOtH1giZR6oT0fWP2y+O4hpIZSFMvVI1pOQ6jLfRqu74YnWX0FXaEd0KmtWKH50VI6ntPc0xBPR7UjWdu5M/+MKejRl9WA+5bbbbr+7RGIX5eFV3HA0GfxX4SZzcvupYET1d/12Ejfj5Ahzi+cGA1QmZDmGoxOMkIKH/C2poZqff+cUNrqJ9tU714+pUgfTyW0k9HHpL563H/Qok6w9D7w/2DSjQuRyxpJqAiQ48k2uHAIeeLw4frBQtY2dF4D7mrK4VCnJhETwUDLeggxcuAoGAQdHz96P35k5uCsBaAkYlFbrdvKIgUPu4INNa2nr72+wu4P6wsNjlk9z1s1zbcQDM1VNf663Avi+hz9zlLJzBjpvBIzkdcxF3Jl5iaKB+1eXbPpscs2eq0T4XogFHSq7ccNBjk97r99+pVg6YcXobV6fkZHpZfz0O/sP5k8W/ohFW7dsYI/aqYWetn0bXxHpYz0JXevRyR6IegMU54upxtMu6Og01m1c/BlNCrEXnTjsfuem/yaHVfTB4n61N57mJqq8oZzJzdfOwSYpEcyDZODHRqhAijtUMzaCesBLvEfYptLIRaotek+cTBsFroz1kyFXmoe7hI7SFLuN1KR2+ug8yGSNPSshpLl+7COWv5RDSHQ13hnLhVAPsxLmoD1xN+MjUU0Rk5d2D+nXi/ZlgcuYTsnChJXrU/mrr0Vmir42zG5vFN2UCmfSt+FeDnHUtFGnRP8b82nbiLT3HuVNzHqFJh82Jqihw400GVD+pir69ZeXZ1CkuOtnHSZcS+V5aBrk3KI/7EOqTzNMfHSVdYapm/AGXzBkYNlpfpa5l+zx5dqFgcOnjcxkrKzHYVJYMDm4QkfJ5AVwug8BjhdsFwSp0U2fpqZWybIWp9BMZr1fds+rd8te/2qtk0cnkmKk7zehs5V4Ly+XoOCjRSY4pbhLXa3M5Y+bBxE9pKgBWY7Vdf6teCPHnCVGMLHnrTBSHCFTpR2zkEj91+u3hYTTvLbaUQSsTKg85DP2VMtPJxRdGRC3lxRFCKX6WGsNlx9fzkKcnkWt3PEY1gnBpUBiTwJTFpA3R32UJ5KxI/FFpRIST0o8dr8yAJFUhq98tgV6JGkjkST//kmXwg/5wp/9gLgrN81WJQ=="},{"id":"4fbca2d2-cc25-42f6-afd8-cbd6026fe8bd","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Troubleshooting and FAQ","description":"troubleshooting-faq","prompt":"Create comprehensive troubleshooting and FAQ documentation for VIZ CPP Node. Document common build issues and their solutions including dependency problems, compilation errors, and platform-specific issues. Cover network connectivity problems such as peer discovery failures, sync issues, and firewall configuration. Address performance optimization including memory usage, CPU utilization, and disk I/O optimization. Document error message interpretation and diagnostic procedures for various failure scenarios. Include frequently asked questions about node operation, API usage, plugin development, and integration challenges. Provide systematic debugging approaches using the debug node plugin, log analysis techniques, and diagnostic tools. Address recovery procedures for common failure scenarios including database corruption, sync desynchronization, and configuration errors. Include community resources, support channels, and escalation procedures for complex issues.","order":10,"progress_status":"completed","dependent_files":"documentation/building.md,documentation/debug_node_plugin.md,documentation/testnet.md,share/vizd/config/config.ini","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:39+04:00","raw_data":"WikiEncrypted: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"},{"id":"7ab4ff43-6263-43e1-8f8e-111eca2efe58","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Contributing and Development","description":"contributing-development","prompt":"Create comprehensive contributing and development documentation for VIZ CPP Node. Document the development workflow including code style guidelines, commit message conventions, and review processes. Explain the contribution process from issue identification through pull request submission and merge. Cover code quality standards including testing requirements, documentation expectations, and performance criteria. Document the plugin development contribution process including template usage, testing requirements, and integration guidelines. Address community contribution opportunities including bug reporting, feature requests, and documentation improvements. Include practical examples of common contribution scenarios such as fixing bugs, adding features, and improving documentation. Document the relationship between contributions and the overall project governance, licensing requirements, and intellectual property considerations. Provide guidance for new contributors on getting started with development and finding suitable projects to contribute to.","order":11,"progress_status":"completed","dependent_files":"documentation/git_guildelines.md,documentation/plugin.md,documentation/api_notes.md,programs/util/newplugin.py","gmt_create":"2026-03-03T07:27:58+04:00","gmt_modified":"2026-03-03T07:37:44+04:00","raw_data":"WikiEncrypted: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"},{"id":"5a98a33e-b415-44f7-a50b-243d65c44f26","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Witness","description":"witness","order":12,"progress_status":"completed","dependent_files":"libraries/chain/database.cpp,plugins/witness/witness.cpp,plugins/witness/include/graphene/plugins/witness/witness.hpp","gmt_create":"2026-04-13T21:23:28+04:00","gmt_modified":"2026-04-20T08:24:42+04:00","raw_data":"WikiEncrypted:JeTXIs+pfWQp8HpBYqSHUt9pgs+Z3ta6nCRipvtinj2ZibPEEeHHjj4s1YQflAL5g+pQu+9IkQ2YST7DB2y5HUc2yLNF1Rs8APiadNnvkHhWnqIgyXobp8z/zCnepAa0oTCXj0RBxWwasN4s/jf6ntXkDWH+aw4ObG0t7BOVPstyL1jv8je2uSzq4Xr60gnd8mioVbRB8IdzIaoLDYaXl6iuBrXj4y3nNAwMC2XCy6/vmSEqnVb+fX9/SH2ECJ6Vxl0OgAD1h6yzkx+QsHxIKPbHADAe15TThTZJiIbDAB/YrL/k3vnvVwAaaUrcuaTo"},{"id":"561c0ee5-a6f2-4d57-94f0-ed48f69e6b27","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Webserver Plugin","description":"webserver-plugin","order":13,"progress_status":"completed","dependent_files":"plugins/webserver/webserver_plugin.cpp,documentation/webserver-plugin.md,plugins/json_rpc/plugin.cpp","gmt_create":"2026-04-14T09:27:36+04:00","gmt_modified":"2026-04-17T10:16:56+04:00","raw_data":"WikiEncrypted:DVkoReQyyhdwnmC6pD+XJl1726hWlyrdb/kexi9P3mlDxrXesxG0TGa6cLaC0YXste3eGQsJLCuBJsmN7jS41YrtOzDmXjZ20dpluGZh7TH4+TtwylvlkpRi4B3wlSAZPlGlYu8KTZBEYhBs12qLfSftuV0YEDkOWUp4QNrC8iSstYDYlX2nawdvmtoOJ9is2SwGwm2mWyVShNp//OSbrtMOYq7ALXKPYx7yzqaZWeZqUNtSL59YEFv1Gj5f5NmLgl8d8+AZm8eDML8XD9QHA79I6O5aSwZ92DQfbjjt+KPMlOh+doek67SBNyuzP0o1"},{"id":"0d7e1eb6-3349-497c-b241-19a16d373373","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"Chain Plugin","description":"chain-plugin","order":14,"progress_status":"completed","dependent_files":"plugins/chain/plugin.cpp,libraries/chain/include/graphene/chain/database.hpp,libraries/chain/database.cpp,share/vizd/config/config.ini,share/vizd/config/config_witness.ini,plugins/chain/include/graphene/plugins/chain/plugin.hpp","gmt_create":"2026-04-20T08:54:36+04:00","gmt_modified":"2026-04-21T18:25:29+04:00","raw_data":"WikiEncrypted:2nxDQCjwbtJzhDuGjsVF7mHsV7DvjvnRRbUVGKq7sKBjc03f9mwX6sCrl1O98+zpUP3CrZGNY7+od97OqysKwp6V8pyGSudE2hJ3DdykrmghdZyNyMiMYgtOBsvdZTRIdJlAFnHDmRzYMmCTOMWeNdqv8w6ngBgg0YD/pPSFYBoeeG6rwvPRTH3dBiMXec10EbYRWPjoBm8Fw540XGuVFAn9ikZJ8lOuUTgy/Ni56EckUEyzWhLH6toB4l0nSOZaChSQO32a91Irt41f9Uaq2Vtd2HxPRZN49vjVPRIlEmDsdgtmGUFhVxl3qKWc0dNMCJeooAWHmQOl4Xo/2kSMjiZEvNQT8/xxwhx1E2yWeJ4zcNxLkop+gHbfZ5fdKS91Q0HyTuDg0dhbOX44YrTEehDa4KE8ZOFgWEBoQkq/6wX11xfm3s59BJX7gWLEqJUDqXtxA58ggWDvGV0tERqjcenPJWF6n6FyWpp5SHupLaY="},{"id":"27ea703c-98e3-4cd3-8c11-ffa41b7b3fc1","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"P2p Plugin","description":"p2p-plugin","order":15,"progress_status":"completed","dependent_files":"plugins/p2p/p2p_plugin.cpp","gmt_create":"2026-04-23T11:49:52.2061972+04:00","gmt_modified":"2026-04-23T11:53:01.9908033+04:00","raw_data":"WikiEncrypted:LjUwH/yUcbWfnBumtHMxuKISe72JbF8T+AYe9w/08E+XtSR36PLbVQBinOspVDlWetMPFkhRiTMoRAUUG8lGn0m5x7RHi+E+u8xLwer77SBWrdcqs1K/me8oPR4L3xyhfoZEEa6nmpxWsgYHnKOyO8hkIJiMDRdjCjtSNsDLptAHdnDGwzoQK16yapTzm+rN"}],"wiki_items":[{"catalog_id":"b2eba8df-5dca-47a6-880d-715bda77fbf3","title":"Getting Started","description":"getting-started","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"afae6a00-299c-40ea-844b-cdb2fbf947af","gmt_create":"2026-03-03T07:31:32+04:00","gmt_modified":"2026-03-03T07:31:32+04:00"},{"catalog_id":"c665e222-676e-4279-9041-a736a7d52cba","title":"Project Overview","description":"overview","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3d15bcc2-ff93-4ae7-b2c4-2886f9c53de2","gmt_create":"2026-03-03T07:31:56+04:00","gmt_modified":"2026-03-03T07:31:56+04:00"},{"catalog_id":"61cc85da-b705-41e4-9860-17177048c2ee","title":"Architecture Overview","description":"architecture","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"b3ef69c4-9a18-48ea-8119-3457fab8a7a2","gmt_create":"2026-03-03T07:32:30+04:00","gmt_modified":"2026-03-03T07:32:30+04:00"},{"catalog_id":"5d002413-f09c-48b4-ae6c-288ea6d2bb74","title":"API Reference","description":"api-reference","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"f00c97a6-c879-4bcd-a12e-6432de7c268e","gmt_create":"2026-03-03T07:33:49+04:00","gmt_modified":"2026-03-03T11:26:06+04:00"},{"catalog_id":"23a03952-16c9-4271-ab2a-fd18cbcb90f7","title":"Plugin System","description":"plugin-system","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"dccbfa78-83ae-4fee-9212-5ac10c7424f6","gmt_create":"2026-03-03T07:33:58+04:00","gmt_modified":"2026-04-23T09:46:06.5542337+04:00"},{"catalog_id":"15c5d415-13ad-48f9-8ae8-8f00c771019c","title":"Core Libraries","description":"core-libraries","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"fb12fa88-1b7f-4e42-978a-50f1c7f6a91b","gmt_create":"2026-03-03T07:34:30+04:00","gmt_modified":"2026-04-19T22:31:11+04:00"},{"catalog_id":"3d7f67ff-d926-43f9-aa40-274a8bcc5a87","title":"Development Tools","description":"development-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"c6417b92-8eeb-47a2-adb9-b3f20f58b67c","gmt_create":"2026-03-03T07:35:27+04:00","gmt_modified":"2026-03-03T07:35:27+04:00"},{"catalog_id":"52d3664a-1bc3-416d-af24-b6826b0eb20a","title":"Configuration Management","description":"configuration-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"9032efbf-122b-4ac0-9b47-6531642636d2","gmt_create":"2026-03-03T07:35:41+04:00","gmt_modified":"2026-04-23T11:18:10.2274666+04:00"},{"catalog_id":"0a29818d-c5c4-477a-9a73-6cb166a647ae","title":"Deployment and Operations","description":"deployment-operations","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"e00a4c9f-f2bd-4a3b-8a23-5c6b15243264","gmt_create":"2026-03-03T07:36:27+04:00","gmt_modified":"2026-03-03T07:36:27+04:00"},{"catalog_id":"1ff378ae-ab40-445d-8853-ba7c346a78a2","title":"Advanced Topics","description":"advanced-topics","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"6e4a5dd8-da58-4bbb-99c7-2e0276ecf320","gmt_create":"2026-03-03T07:37:26+04:00","gmt_modified":"2026-03-03T07:37:26+04:00"},{"catalog_id":"4fbca2d2-cc25-42f6-afd8-cbd6026fe8bd","title":"Troubleshooting and FAQ","description":"troubleshooting-faq","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"be138b9c-e1e9-460b-a7cd-3a1c3cf1ecb1","gmt_create":"2026-03-03T07:37:39+04:00","gmt_modified":"2026-03-03T07:37:39+04:00"},{"catalog_id":"7ab4ff43-6263-43e1-8f8e-111eca2efe58","title":"Contributing and Development","description":"contributing-development","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"a04ea176-2745-4bd5-9e9a-b5f332dbbc8c","gmt_create":"2026-03-03T07:37:44+04:00","gmt_modified":"2026-03-03T07:37:44+04:00"},{"catalog_id":"5d0929ac-019d-4924-9f9a-e6cf337e333c","title":"System Overview","description":"system-overview","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"aab844a1-51ae-4696-96ed-2d4903c8e95c","gmt_create":"2026-03-03T07:39:03+04:00","gmt_modified":"2026-03-03T07:39:03+04:00"},{"catalog_id":"9c29a057-ce87-4636-9143-abbbe00af3e4","title":"Build System","description":"build-system","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"c6932108-aec0-4bf5-9c51-221f37cba865","gmt_create":"2026-03-03T07:39:35+04:00","gmt_modified":"2026-04-21T16:26:53+04:00"},{"catalog_id":"25110dbd-3911-48e1-b870-29607c837581","title":"Node Deployment","description":"node-deployment","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"78b647b3-e3a3-44fe-b2f2-3df8132000fa","gmt_create":"2026-03-03T07:40:48+04:00","gmt_modified":"2026-03-03T07:40:48+04:00"},{"catalog_id":"69a80de1-f730-485d-a13f-c4efe84c9103","title":"Node Configuration","description":"node-configuration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"9a735450-ec59-49ef-9d42-609483ce0279","gmt_create":"2026-03-03T07:40:51+04:00","gmt_modified":"2026-03-03T07:40:51+04:00"},{"catalog_id":"41af7577-4b84-4bdb-832b-9539190e7ea9","title":"Hardfork Management","description":"hardfork-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"2b610f75-570f-4afb-8cc7-1acc5cb266f9","gmt_create":"2026-03-03T07:41:25+04:00","gmt_modified":"2026-04-20T11:24:22+04:00"},{"catalog_id":"8958bcd4-acad-47ea-9a20-16c85e32c5ef","title":"Testing Framework","description":"testing-framework","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"10a114a5-9a01-48ee-af7f-b8d3858a5a9c","gmt_create":"2026-03-03T07:41:49+04:00","gmt_modified":"2026-03-03T07:41:49+04:00"},{"catalog_id":"83f7e67d-2650-45c6-900c-5774a5cf9867","title":"Build Configuration","description":"build-configuration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"418196e8-0815-496e-b69d-8458e1f3cfef","gmt_create":"2026-03-03T07:42:49+04:00","gmt_modified":"2026-04-23T06:46:47.4698668+04:00"},{"catalog_id":"03af4736-8b6c-4759-ab23-6e40f981febc","title":"Containerization and Docker","description":"containerization-docker","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"29c60e4b-bedd-49da-ad65-0bb2bf389352","gmt_create":"2026-03-03T07:43:26+04:00","gmt_modified":"2026-03-03T07:43:26+04:00"},{"catalog_id":"48bf8158-7839-4c2c-a50d-7cc05923bd1c","title":"Plugin Architecture","description":"plugin-architecture","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"ebc6e2d6-0b85-4e39-a4f3-1481ed578543","gmt_create":"2026-03-03T07:43:34+04:00","gmt_modified":"2026-04-15T13:00:48+04:00"},{"catalog_id":"98b542ba-7145-4943-b53c-fafc1763318a","title":"Database Schema Design","description":"database-schema-design","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"8c6bf6e5-b514-4f1d-9928-ca8fada91268","gmt_create":"2026-03-03T07:45:31+04:00","gmt_modified":"2026-03-03T07:45:31+04:00"},{"catalog_id":"ff55fa31-5b21-4383-98fb-59c794986fc5","title":"Debugging Tools","description":"debugging-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"a551b73c-4e9a-4860-81c2-173ec92097d4","gmt_create":"2026-03-03T07:45:42+04:00","gmt_modified":"2026-03-03T07:45:42+04:00"},{"catalog_id":"f0c815e1-40a5-43ea-b849-ddfc5fa665c1","title":"Core Libraries","description":"core-libraries","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"11a3f0cc-0550-4d22-84d7-48826fa26abe","gmt_create":"2026-03-03T07:46:01+04:00","gmt_modified":"2026-03-03T07:46:01+04:00"},{"catalog_id":"ca175923-377f-42fc-bc5b-b0313c3dc653","title":"Cloud and Infrastructure","description":"cloud-infrastructure","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"f6ccaa92-08d3-4c74-ab62-ca912f5f4307","gmt_create":"2026-03-03T07:46:55+04:00","gmt_modified":"2026-03-03T07:46:55+04:00"},{"catalog_id":"bbc88401-9798-4b33-9abd-f785bfd1c7db","title":"Security Implementation","description":"security-implementation","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"11f48434-b4e3-4a44-8398-8bc28594453a","gmt_create":"2026-03-03T07:47:20+04:00","gmt_modified":"2026-03-03T07:47:20+04:00"},{"catalog_id":"3d9c7759-c5ae-4ee8-a09b-782e7dc6c02d","title":"Docker Configuration","description":"docker-configuration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"898244dc-5466-4c8c-abac-5a7f753e3b91","gmt_create":"2026-03-03T07:48:32+04:00","gmt_modified":"2026-04-17T17:31:31+04:00"},{"catalog_id":"fbae6ca8-dcad-40c1-9dd1-20534479e987","title":"Development Workflow","description":"development-workflow","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"2cd6fcf9-82f4-4042-855e-fd40ec6a825c","gmt_create":"2026-03-03T07:48:38+04:00","gmt_modified":"2026-03-03T07:48:38+04:00"},{"catalog_id":"971f0bb4-1d2d-4258-92c8-080f826ba913","title":"Data Flow and Processing","description":"data-flow","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"5a194080-41c5-4f5f-aca3-22afce98407e","gmt_create":"2026-03-03T07:48:50+04:00","gmt_modified":"2026-03-03T07:48:50+04:00"},{"catalog_id":"c20f5498-c255-4e15-8d5b-66c6fad67c5f","title":"Advanced Plugin Development","description":"advanced-plugin-development","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"46e8c3bf-bd6f-4c78-af50-5dbc5a514905","gmt_create":"2026-03-03T07:50:18+04:00","gmt_modified":"2026-03-03T07:50:18+04:00"},{"catalog_id":"535a1c44-108e-4813-aca4-6a95a2ded914","title":"Network Configuration","description":"network-configuration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3d9ef584-1d54-4c52-bdce-636c5bde9f59","gmt_create":"2026-03-03T07:50:58+04:00","gmt_modified":"2026-04-23T12:16:49.7941472+04:00"},{"catalog_id":"12fad09d-d670-4207-8050-ef35a26d7fb6","title":"Design Patterns and Architectural Decisions","description":"design-patterns","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"cea6507f-ab8a-40e1-9f5d-043a1ef1478a","gmt_create":"2026-03-03T07:52:04+04:00","gmt_modified":"2026-03-03T07:52:04+04:00"},{"catalog_id":"49484629-248e-40b5-b6b4-1664eab348dc","title":"Plugin Lifecycle and Registration","description":"plugin-lifecycle-registration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"e6d961b0-63ae-4b7d-89df-3b29ba669b8d","gmt_create":"2026-03-03T07:52:10+04:00","gmt_modified":"2026-04-20T10:26:06+04:00"},{"catalog_id":"121a231f-fd81-4c10-8222-4f3f29aaebd0","title":"Monitoring and Maintenance","description":"monitoring-maintenance","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"af8dc25b-51f9-43a0-91a2-a0c293d102fe","gmt_create":"2026-03-03T07:52:29+04:00","gmt_modified":"2026-04-21T15:57:29+04:00"},{"catalog_id":"289967d5-f89a-42cd-b660-b89842524e73","title":"Transaction Processing Pipeline","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"8140185f-741a-4828-b727-52977e4fadca","gmt_create":"2026-03-03T07:53:30+04:00","gmt_modified":"2026-03-03T07:53:30+04:00"},{"catalog_id":"9cba4008-bdf5-47d9-9b5b-25e71815c8c6","title":"CMake Configuration","description":"cmake-configuration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"94a82512-369f-4529-8fa2-eddf8af042ba","gmt_create":"2026-03-03T07:53:46+04:00","gmt_modified":"2026-03-03T07:53:46+04:00"},{"catalog_id":"74938232-897d-4eee-8d0c-5646023bb077","title":"Unit Testing Infrastructure","description":"unit-testing-infrastructure","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3d6d5564-da18-4dd3-9c56-bfdf8b7c569d","gmt_create":"2026-03-03T07:54:54+04:00","gmt_modified":"2026-03-03T07:54:54+04:00"},{"catalog_id":"aac23226-14dc-441b-a39d-a5187c89b12a","title":"Debug Node Plugin","description":"debug-node-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3cf7d295-dc75-43bb-88bd-43f9414fdd0b","gmt_create":"2026-03-03T07:55:19+04:00","gmt_modified":"2026-03-03T07:55:19+04:00"},{"catalog_id":"5feb376c-3c10-492c-bc41-20d7a69bd7bb","title":"Chain Library","description":"chain-library","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"813fff1c-5fce-4cd6-83ae-53e339f99daf","gmt_create":"2026-03-03T07:55:53+04:00","gmt_modified":"2026-04-23T11:18:36.4596728+04:00"},{"catalog_id":"23550eb4-0f4b-4afb-82e8-e19c1ff572ee","title":"Installation and Setup","description":"installation-setup","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"68d45923-3806-4691-a79b-6960515cba32","gmt_create":"2026-03-03T07:56:01+04:00","gmt_modified":"2026-03-03T07:56:01+04:00"},{"catalog_id":"0e30fbfd-66ed-4df4-a759-4d81582e559f","title":"Inter-Plugin Communication","description":"inter-plugin-communication","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"49c97151-b7f5-47d6-beaf-7b55fdb8fa40","gmt_create":"2026-03-03T07:57:09+04:00","gmt_modified":"2026-03-03T11:26:31+04:00"},{"catalog_id":"84b360c7-2115-43aa-89df-1205d4f6231d","title":"Protocol Library","description":"protocol-library","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"6b3de1c4-0bed-4a2d-8d01-764f3e44da73","gmt_create":"2026-03-03T07:57:42+04:00","gmt_modified":"2026-03-03T07:57:42+04:00"},{"catalog_id":"4c416b5d-aa43-481c-8f93-4a4adc187368","title":"Block Processing and Validation","description":"block-processing","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"d41ddaa7-6738-4106-a9f2-4b3bd859bed7","gmt_create":"2026-03-03T07:57:58+04:00","gmt_modified":"2026-03-05T10:59:59+04:00"},{"catalog_id":"f6d69197-00f2-46b3-878a-cd582ffb1d49","title":"Code Coverage Analysis","description":"code-coverage-analysis","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"cb59c51f-940a-480e-bdcc-b9d709e0628b","gmt_create":"2026-03-03T07:58:43+04:00","gmt_modified":"2026-03-03T07:58:43+04:00"},{"catalog_id":"71349e72-2b07-471a-b7f2-b7299a4cb550","title":"Build Helper Tools","description":"build-helpers","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"be2e8184-d028-4124-9ff1-fb18116037f4","gmt_create":"2026-03-03T07:58:47+04:00","gmt_modified":"2026-04-21T16:26:14+04:00"},{"catalog_id":"784fdef7-9bb2-4ad3-b289-8c8c9c87cd84","title":"Transaction Debugging Tools","description":"transaction-debugging-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"cf9a052e-4ced-484d-9869-1efdf69938cc","gmt_create":"2026-03-03T07:59:59+04:00","gmt_modified":"2026-03-03T07:59:59+04:00"},{"catalog_id":"f1b217ef-ee0b-489a-a789-210eefb1e0cc","title":"Node Types and Configurations","description":"node-types-configurations","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"4cae5d6e-a5e4-4917-b754-94b739f7810b","gmt_create":"2026-03-03T08:00:19+04:00","gmt_modified":"2026-04-21T15:32:31+04:00"},{"catalog_id":"ec0d76b5-8e74-4c98-b524-78e50c91d776","title":"Custom Plugin Development","description":"custom-plugin-development","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"722769d8-4964-4378-8c18-75ab09381d8b","gmt_create":"2026-03-03T08:00:20+04:00","gmt_modified":"2026-03-03T08:00:21+04:00"},{"catalog_id":"78c9439b-6aef-43ff-9057-0036ee0ac803","title":"API Request Processing","description":"api-request-handling","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"bda7f43f-72e8-4bad-8b62-29e516c0f71e","gmt_create":"2026-03-03T08:01:46+04:00","gmt_modified":"2026-03-03T08:01:46+04:00"},{"catalog_id":"7108377f-502b-47c6-be02-3765463aed1a","title":"Docker Integration","description":"docker-integration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"49dd986a-a01e-4faf-9e42-2278b298e7d2","gmt_create":"2026-03-03T08:02:06+04:00","gmt_modified":"2026-04-17T10:15:28+04:00"},{"catalog_id":"0c9b41bf-680e-40eb-a163-c34a13239b1b","title":"Service Integration","description":"service-integration","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"e3283c06-b90c-4e16-ace9-dfe813416c46","gmt_create":"2026-03-03T08:03:49+04:00","gmt_modified":"2026-03-03T08:03:49+04:00"},{"catalog_id":"0fad8a36-dd0a-4bed-9aca-d2b8d4aaa713","title":"Network Library","description":"network-library","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"b37927e4-88c1-4fe1-afa6-b1368bf27344","gmt_create":"2026-03-03T08:03:52+04:00","gmt_modified":"2026-04-23T12:16:50.9986922+04:00"},{"catalog_id":"61ea749d-b063-45cd-bf3e-d8562ba34696","title":"Network Debugging Capabilities","description":"network-debugging-capabilities","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"0afed60c-5a1d-4eca-8198-c13c66fa3a87","gmt_create":"2026-03-03T08:04:07+04:00","gmt_modified":"2026-03-03T08:04:07+04:00"},{"catalog_id":"92bf8d74-e2d5-4408-b1a9-70d326484879","title":"Event-Driven Communication Patterns","description":"event-driven-architecture","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"7e2fa0ba-5607-4eaa-89f6-28498cf7f9cf","gmt_create":"2026-03-03T08:05:24+04:00","gmt_modified":"2026-03-03T08:05:24+04:00"},{"catalog_id":"19cf79d5-d0e6-4e4f-93ec-1199f0967648","title":"Plugin API Design Patterns","description":"plugin-api-patterns","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"4a9be427-bea8-4544-b878-a7bd4d6fe135","gmt_create":"2026-03-03T08:05:51+04:00","gmt_modified":"2026-03-03T08:05:51+04:00"},{"catalog_id":"97020392-6c50-402b-9313-1919a2deb4c3","title":"Cross-Platform Compilation","description":"cross-platform-compilation","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"06e7bdba-7c63-40f1-a827-186765fa6634","gmt_create":"2026-03-03T08:06:47+04:00","gmt_modified":"2026-03-03T08:06:47+04:00"},{"catalog_id":"e1585c0a-e5e5-4e43-b30d-a898c0509afe","title":"Wallet Library","description":"wallet-library","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"f10d3fa8-832c-4f96-9ebf-3c06f2b35f4f","gmt_create":"2026-03-03T08:07:16+04:00","gmt_modified":"2026-03-07T21:45:11+04:00"},{"catalog_id":"1d376f80-f865-42b4-84b5-f59e5649be28","title":"Performance Profiling Utilities","description":"performance-profiling-utilities","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"115908bf-b23e-425a-a465-14deca30a28b","gmt_create":"2026-03-03T08:08:06+04:00","gmt_modified":"2026-03-03T08:08:06+04:00"},{"catalog_id":"43ca18bb-016d-4bfa-93da-7fc744208224","title":"Security Hardening","description":"security-hardening","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"0fe3bef0-ce62-4c69-9e42-2c4279692ce5","gmt_create":"2026-03-03T08:08:09+04:00","gmt_modified":"2026-03-03T08:08:09+04:00"},{"catalog_id":"b0c3043d-8903-4031-a3c4-05f5d11f328c","title":"Core Build Options","description":"core-build-options","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"1253118c-3895-484a-8833-f8a75ad484cc","gmt_create":"2026-03-03T08:11:41+04:00","gmt_modified":"2026-03-03T08:11:41+04:00"},{"catalog_id":"e4c9debd-e4c1-487d-ac92-79cdf3462b04","title":"Node Management","description":"node-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"f28ee86a-fca4-470c-8556-7a946ee49c7d","gmt_create":"2026-03-03T08:11:43+04:00","gmt_modified":"2026-04-23T08:46:18.362368+04:00"},{"catalog_id":"907f8692-5249-4ebe-a7bf-bcec7a632dad","title":"Database Management","description":"database-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"67bce420-e9f6-4b70-b83a-d19411a2f09e","gmt_create":"2026-03-03T08:12:40+04:00","gmt_modified":"2026-04-23T09:42:13.8987183+04:00"},{"catalog_id":"1e7db280-3b51-40ee-b96d-120b47d151f4","title":"Code Assembly Tools","description":"code-assembly-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"19eb036e-1e87-426d-a5f0-911d5e1b48d6","gmt_create":"2026-03-03T08:13:01+04:00","gmt_modified":"2026-03-03T08:13:01+04:00"},{"catalog_id":"ead3ca09-d5e2-40f4-89b7-f3c2aef06cfb","title":"Production Dockerfile","description":"production-dockerfile","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"0cfd47e1-c711-4b9e-88f1-3f1d0f6fd470","gmt_create":"2026-03-03T08:13:22+04:00","gmt_modified":"2026-03-03T08:13:22+04:00"},{"catalog_id":"76b6850c-bbb5-47bb-a081-cecd5efc626e","title":"Transaction Processing","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"c965ea0e-3788-4399-b1ad-a28b56e711c8","gmt_create":"2026-03-03T08:14:41+04:00","gmt_modified":"2026-03-03T08:14:41+04:00"},{"catalog_id":"f290b164-f8e8-427a-a32d-700fe50d1868","title":"Object Model and Persistence","description":"object-model","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"c7648a28-5402-4b7e-8491-fb811d7b2518","gmt_create":"2026-03-03T08:15:23+04:00","gmt_modified":"2026-03-03T08:15:23+04:00"},{"catalog_id":"f98a762d-2c67-470e-81a6-f7843765c3cd","title":"Peer Connection Management","description":"peer-connection","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3d4850df-edca-433b-93aa-7b4e8b2ca3da","gmt_create":"2026-03-03T08:16:05+04:00","gmt_modified":"2026-04-23T09:39:39.5088209+04:00"},{"catalog_id":"1d8f9a74-606b-4430-b8f7-521d9602e384","title":"Platform Configurations","description":"platform-configurations","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"d29576a1-94e5-4cc8-b6db-a26233208c1b","gmt_create":"2026-03-03T08:16:10+04:00","gmt_modified":"2026-04-17T10:42:56+04:00"},{"catalog_id":"f7f97c5a-7a7b-4b53-be0b-993c608c268e","title":"Testnet Dockerfile","description":"testnet-dockerfile","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"48472fb0-8fb1-4c18-beaa-d528e772ad06","gmt_create":"2026-03-03T08:17:07+04:00","gmt_modified":"2026-03-03T08:17:07+04:00"},{"catalog_id":"7abb1792-73ee-444c-a732-4b64ee88f22c","title":"Reflection Validation Tools","description":"reflection-validation","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"8ab5afd9-a2c3-4a4b-bebc-8a4c9c6b3c83","gmt_create":"2026-03-03T08:17:31+04:00","gmt_modified":"2026-03-03T08:17:31+04:00"},{"catalog_id":"f5c3d1ac-1375-4c51-9683-542e2309c154","title":"Authority Management","description":"authority-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"96d18f3b-75bc-4b99-b280-3f74888d4d89","gmt_create":"2026-03-03T08:17:58+04:00","gmt_modified":"2026-03-03T08:17:58+04:00"},{"catalog_id":"33a7db07-2dc5-4def-a181-8ece479e6ceb","title":"Dependency Management","description":"dependency-management","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"2c40d2b3-38f4-4d9b-8c7f-04e238f0f5c0","gmt_create":"2026-03-03T08:19:13+04:00","gmt_modified":"2026-04-19T22:00:10+04:00"},{"catalog_id":"8f172067-7581-44fa-b206-fd5819df8d83","title":"Fork Resolution and Consensus","description":"fork-resolution","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"995e608b-33c4-4619-ad28-cdb33c1fee75","gmt_create":"2026-03-03T08:19:55+04:00","gmt_modified":"2026-04-21T15:32:34+04:00"},{"catalog_id":"9a2b1ed3-9679-4f74-9819-f04abf116d7c","title":"Message Handling and Protocol","description":"message-handling","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"fe73f758-2211-4ca5-91c7-8e3ca561726f","gmt_create":"2026-03-03T08:20:04+04:00","gmt_modified":"2026-03-03T08:20:04+04:00"},{"catalog_id":"8fef3afb-835c-46af-aff9-07f9f40c0eec","title":"Low-Memory Dockerfile","description":"low-memory-dockerfile","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"ff07e431-2871-4c03-9a48-df11b1c2d509","gmt_create":"2026-03-03T08:20:43+04:00","gmt_modified":"2026-03-03T08:20:43+04:00"},{"catalog_id":"e8c2ec9c-8772-48dc-adb5-7fa5a8b796cb","title":"Plugin Development Tools","description":"plugin-development-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"e9e4bec3-52c1-48e0-a514-51709f4313f3","gmt_create":"2026-03-03T08:21:29+04:00","gmt_modified":"2026-03-03T08:21:29+04:00"},{"catalog_id":"9d8e68ae-a4a3-461e-947d-bfe4e0449f8f","title":"Block Structures","description":"block-structures","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3fd0ef61-a22e-47a1-a06e-fd6321efc9cd","gmt_create":"2026-03-03T08:21:50+04:00","gmt_modified":"2026-03-03T08:21:50+04:00"},{"catalog_id":"7d9d43c7-98c7-43bb-97e7-3d8e74b43f29","title":"Block Processing and Validation","description":"block-processing","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"656aa75c-bf21-48c1-b44c-4dcab2afee14","gmt_create":"2026-03-03T08:22:26+04:00","gmt_modified":"2026-04-20T08:23:26+04:00"},{"catalog_id":"cf3cedf1-9b9e-41a4-bbf0-94bcb29b6e8b","title":"Build Targets","description":"build-targets","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"dbb85b90-521b-4020-9481-157cbbf219f3","gmt_create":"2026-03-03T08:23:32+04:00","gmt_modified":"2026-03-03T08:23:32+04:00"},{"catalog_id":"2623c72a-ca9b-44fa-9b7d-de0c2d64b8c0","title":"Transport Layer and Sockets","description":"transport-layer","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"75b86f21-0ff1-48aa-91f6-8385cce6206d","gmt_create":"2026-03-03T08:24:00+04:00","gmt_modified":"2026-03-03T08:24:00+04:00"},{"catalog_id":"fda1e981-233a-4634-994b-5314629e18d7","title":"MongoDB Integration Dockerfile","description":"mongo-dockerfile","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"30d5a5ec-65f1-4bb4-9d03-adf9cee17919","gmt_create":"2026-03-03T08:24:06+04:00","gmt_modified":"2026-03-03T08:24:06+04:00"},{"catalog_id":"9c398ca5-a783-434b-a1a3-3791e3328f43","title":"Schema Generation Tools","description":"schema-generation-tools","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"297b7a79-d227-41a0-bb25-238963d7cc1f","gmt_create":"2026-03-03T08:24:57+04:00","gmt_modified":"2026-03-03T08:24:57+04:00"},{"catalog_id":"1d874657-e407-402d-adae-077a51576f74","title":"Data Types and Serialization","description":"data-types-serialization","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"872e2ac3-5c14-42c9-a3bb-38a8c46709fa","gmt_create":"2026-03-03T08:25:53+04:00","gmt_modified":"2026-03-03T08:25:53+04:00"},{"catalog_id":"33f77581-8eb1-4711-bfca-7bd928215b93","title":"Transaction Processing","description":"transaction-processing","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"6852cf61-cd7b-42c3-95c0-829c87723676","gmt_create":"2026-03-03T08:26:05+04:00","gmt_modified":"2026-03-03T08:26:05+04:00"},{"catalog_id":"0d06257c-c8ed-49ce-b5f0-024a8f1c62a4","title":"GitHub Actions CI/CD Pipeline","description":"github-actions-ci","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"bf906e37-8997-4f06-a99f-26dba3f43293","gmt_create":"2026-03-03T08:27:16+04:00","gmt_modified":"2026-03-03T08:27:16+04:00"},{"catalog_id":"10042579-7fa9-4a92-843f-47cb5ec8d3c7","title":"Peer Database and Discovery","description":"peer-database","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"40533d38-e516-4c32-be8b-d1775c29cffd","gmt_create":"2026-03-03T08:27:29+04:00","gmt_modified":"2026-03-03T08:27:29+04:00"},{"catalog_id":"c4d28611-5059-40a7-aaa1-5d528cfc98f5","title":"Operations Definition","description":"operations-definition","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"3db17a7d-046c-4234-a9c3-2a0c3829f9e1","gmt_create":"2026-03-03T08:29:14+04:00","gmt_modified":"2026-03-03T08:29:14+04:00"},{"catalog_id":"dbfad48a-6488-4507-b5ff-beca8277f9a8","title":"Snapshot Plugin System","description":"snapshot-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"fcb075ef-b146-4755-ab58-212aed8a9478","gmt_create":"2026-04-13T16:01:32+04:00","gmt_modified":"2026-04-23T12:18:55.6134455+04:00"},{"catalog_id":"584caaf9-1fda-48e4-b063-7384435a48c1","title":"DLT Rolling Block Log","description":"dlt-block-log","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"f6b39e62-2b94-459e-8a9c-d731c54bcde6","gmt_create":"2026-04-13T16:03:19+04:00","gmt_modified":"2026-04-20T10:26:23+04:00"},{"catalog_id":"5a98a33e-b415-44f7-a50b-243d65c44f26","title":"Witness","description":"witness","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"71aaa436-aad3-4787-baed-4c1b3bb0c4de","gmt_create":"2026-04-13T21:25:30+04:00","gmt_modified":"2026-04-20T08:24:42+04:00"},{"catalog_id":"561c0ee5-a6f2-4d57-94f0-ed48f69e6b27","title":"Webserver Plugin","description":"webserver-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"1b7649ec-0801-4443-a7d2-2d5fe5215d76","gmt_create":"2026-04-14T09:29:12+04:00","gmt_modified":"2026-04-17T10:16:56+04:00"},{"catalog_id":"5839c539-10e8-46ae-b351-965f9b43d732","title":"Block Log Reader Module","description":"block-log-reader-module","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"a8c70538-5565-4aff-b524-86870480084b","gmt_create":"2026-04-14T14:41:40+04:00","gmt_modified":"2026-04-14T14:41:40+04:00"},{"catalog_id":"dbfad48a-6488-4507-b5ff-beca8277f9a8","title":"Snapshot Plugin System","description":"snapshot-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"9d3780f6-5f89-404f-acb7-3406999412cc","gmt_create":"2026-04-16T12:35:54+04:00","gmt_modified":"2026-04-23T12:18:55.6134455+04:00"},{"catalog_id":"c88165cb-4289-4933-9556-c797cd9b370e","title":"Build Helper Scripts","description":"build-helpers","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"1bd79ab7-a87d-4140-baf9-d7dced2080cf","gmt_create":"2026-04-19T22:03:11+04:00","gmt_modified":"2026-04-19T22:03:11+04:00"},{"catalog_id":"de01e4c3-0826-4bc7-abb2-ff569ab8d352","title":"Emergency Consensus System","description":"emergency-consensus-system","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"9efd1632-3b7e-478a-8ec9-b8f6901bc80a","gmt_create":"2026-04-20T06:59:08+04:00","gmt_modified":"2026-04-21T14:58:41+04:00"},{"catalog_id":"0d7e1eb6-3349-497c-b241-19a16d373373","title":"Chain Plugin","description":"chain-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"24860970-0f03-410e-affd-663c8c6ad7b8","gmt_create":"2026-04-20T08:56:19+04:00","gmt_modified":"2026-04-21T18:25:29+04:00"},{"catalog_id":"74975776-340c-4463-92f2-6e949c1301d0","title":"NTP Synchronization System","description":"ntp-synchronization-system","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"581fc583-ffba-4ea2-9db6-f6ef47a37749","gmt_create":"2026-04-21T15:59:39+04:00","gmt_modified":"2026-04-21T16:27:59+04:00"},{"catalog_id":"cadab21b-6f75-4c9f-a0b6-d884627bd20f","title":"Memory Management System","description":"memory-management-system","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"297ae328-3c35-473b-b605-27f95b1a62f3","gmt_create":"2026-04-23T07:24:03.9850107+04:00","gmt_modified":"2026-04-23T07:24:03.9862964+04:00"},{"catalog_id":"27ea703c-98e3-4cd3-8c11-ffa41b7b3fc1","title":"P2p Plugin","description":"p2p-plugin","extend":"{}","progress_status":"completed","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","id":"12cb9691-a8bc-48e2-b37c-a14b148beb07","gmt_create":"2026-04-23T11:53:01.9886095+04:00","gmt_modified":"2026-04-23T11:53:01.9908822+04:00"}],"wiki_overview":{"content":"\u003cblog\u003e\n\n# VIZ CPP Node - Comprehensive Project Analysis\n\n## 1. Project Introduction\n\n### Purpose Statement\nVIZ is a C++ implementation of a decentralized blockchain node designed for the VIZ World platform. It serves as a full consensus node that validates transactions, maintains the blockchain state, and provides APIs for interacting with the distributed ledger system.\n\n### Core Goals and Objectives\n- **Consensus Validation**: Maintain blockchain integrity through cryptographic verification and consensus mechanisms\n- **Network Participation**: Act as a peer-to-peer node in the VIZ network infrastructure\n- **API Provision**: Expose comprehensive JSON-RPC APIs for external applications and wallets\n- **Extensibility**: Support modular plugin architecture for specialized functionality\n- **Performance**: Optimize for both full node operations and lightweight consensus-only modes\n\n### Target Audience\n- Blockchain developers building applications on VIZ\n- Node operators running full nodes or witness nodes\n- Wallet developers integrating with VIZ blockchain\n- Researchers studying blockchain consensus mechanisms\n\n## 2. Technical Architecture\n\n### Component Breakdown\n\nThe VIZ project follows a modular architecture built on the appbase framework:\n\n```mermaid\ngraph TD\n A[VIZ Node] --\u003e B[Core Libraries]\n A --\u003e C[Plugins]\n A --\u003e D[Programs]\n \n B --\u003e E[Chain Library]\n B --\u003e F[Protocol Library]\n B --\u003e G[Network Library]\n B --\u003e H[Wallet Library]\n \n C --\u003e I[Chain Plugin]\n C --\u003e J[P2P Plugin]\n C --\u003e K[Webserver Plugin]\n C --\u003e L[Database API Plugin]\n C --\u003e M[JSON-RPC Plugin]\n \n D --\u003e N[vizd - Full Node]\n D --\u003e O[cli_wallet - CLI Wallet]\n D --\u003e P[js_operation_serializer - Tools]\n```\n\n### Design Patterns\n\n**Plugin Architecture**: The project extensively uses the appbase plugin system, allowing modular functionality through independent plugins that can be enabled/disabled at runtime.\n\n**Database Pattern**: Chainbase provides an object-oriented database abstraction layer, enabling efficient blockchain state management.\n\n**Observer Pattern**: Event-driven architecture through Boost.Signals2 for handling blockchain events and state changes.\n\n### System Relationships\n\n```mermaid\nsequenceDiagram\n participant Client\n participant Webserver\n participant JSON_RPC\n participant Chain\n participant Database\n \n Client-\u003e\u003e+Webserver: HTTP Request\n Webserver-\u003e\u003e+JSON_RPC: Parse JSON-RPC\n JSON_RPC-\u003e\u003e+Chain: Validate Operation\n Chain-\u003e\u003e+Database: Query State\n Database--\u003e\u003e-Chain: Return Data\n Chain--\u003e\u003e-JSON_RPC: Process Result\n JSON_RPC--\u003e\u003e-Webserver: JSON Response\n Webserver--\u003e\u003e-Client: HTTP Response\n```\n\n### Data Flow Diagrams\n\n```mermaid\nflowchart TD\n A[Transaction Input] --\u003e B[JSON-RPC Parser]\n B --\u003e C[Operation Validation]\n C --\u003e D[Authority Verification]\n D --\u003e E[State Application]\n E --\u003e F[Block Production]\n F --\u003e G[P2P Broadcasting]\n \n H[Block Input] --\u003e I[Block Validation]\n I --\u003e J[Fork Resolution]\n J --\u003e K[State Commit]\n K --\u003e L[Peer Sync]\n```\n\n## 3. Key Implementation\n\n### Main Entry Points\n\n**Primary Node Entry Point**: `programs/vizd/main.cpp`\n- Initializes the application with core plugins\n- Configures logging and command-line options\n- Manages plugin lifecycle and startup sequence\n\n**Configuration Management**: `share/vizd/config/config.ini`\n- Network settings (P2P endpoints, webserver ports)\n- Plugin activation and configuration\n- Performance tuning parameters\n- Logging configuration sections\n\n### Core Modules\n\n**Database Layer**: `libraries/chain/include/graphene/chain/database.hpp`\n- Blockchain state management\n- Object persistence and retrieval\n- Fork database handling\n- Transaction validation pipeline\n\n**Protocol Definitions**: `libraries/protocol/include/graphene/protocol/operations.hpp`\n- Complete operation type definitions\n- Transaction structure validation\n- Authority requirement calculation\n- Virtual operation handling\n\n**Plugin System**: `plugins/chain/include/graphene/plugins/chain/plugin.hpp`\n- Core blockchain functionality\n- Block acceptance and validation\n- Transaction processing\n- Index management\n\n### Configuration Approach\n\n**Build Configuration**: `CMakeLists.txt`\n- Cross-platform compilation support\n- Compiler-specific optimizations\n- Feature toggles (testnet, low-memory)\n- Dependency management\n\n**Runtime Configuration**: `share/vizd/config/config.ini`\n- Plugin enable/disable directives\n- Network connectivity settings\n- Performance tuning parameters\n- Logging configuration sections\n\n### External Dependencies\n\n**Third-party Libraries**: `thirdparty/CMakeLists.txt`\n- appbase: Application framework foundation\n- fc: Fast Crypto library for networking and cryptography\n- chainbase: High-performance object database\n\n**Build Dependencies**:\n- Boost 1.57+: Core C++ utilities\n- OpenSSL: Cryptographic operations\n- CMake: Build system\n- Platform-specific toolchains\n\n### Integration Points\n\n**P2P Network**: `plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp`\n- Peer discovery and connection management\n- Block and transaction propagation\n- Network protocol compliance\n\n**Web API**: `plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp`\n- HTTP/HTTPS server implementation\n- WebSocket support for real-time updates\n- JSON-RPC 2.0 compliance\n\n**Database API**: `plugins/database_api/include/graphene/plugins/database_api/plugin.hpp`\n- Comprehensive blockchain state queries\n- Account and transaction history\n- Market data and governance information\n\n### Component Relationship Diagrams\n\n```mermaid\ngraph LR\n A[Chain Plugin] --\u003e B[Database Layer]\n A --\u003e C[P2P Plugin]\n D[Webserver Plugin] --\u003e E[JSON-RPC Plugin]\n E --\u003e A\n F[Database API Plugin] --\u003e A\n G[Account History Plugin] --\u003e A\n H[Tags Plugin] --\u003e A\n I[Follow Plugin] --\u003e A\n```\n\n## 4. Key Features\n\n### Functionality Overview\n\n**Blockchain Consensus**: Full validation of blocks and transactions according to VIZ protocol rules\n**Network Participation**: Active participation in the peer-to-peer network with configurable connectivity\n**API Exposure**: Comprehensive JSON-RPC APIs covering all blockchain functionality\n**Plugin Extensibility**: Modular architecture supporting specialized functionality through plugins\n**Performance Optimization**: Configurable memory usage and processing modes for different node types\n\n### Implementation Highlights\n\n**Modular Plugin System**: `plugins/*/include/graphene/plugins/*/plugin.hpp`\n- Independent plugin development and deployment\n- Runtime plugin loading/unloading\n- Inter-plugin communication through appbase framework\n\n**High-performance Database**: `libraries/chain/database.cpp`\n- Optimized object storage and retrieval\n- Efficient fork resolution algorithms\n- Memory-mapped file support for large datasets\n\n**Comprehensive API Coverage**: `plugins/database_api/api.cpp`\n- Complete blockchain state queries\n- Historical data access\n- Real-time event streaming\n\n### Feature Architecture Diagrams\n\n```mermaid\nstateDiagram-v2\n [*] --\u003e Initializing\n Initializing --\u003e Syncing: Start Node\n Syncing --\u003e Live: Catch Up Complete\n Live --\u003e Producing: Witness Enabled\n Live --\u003e Listening: Normal Mode\n Producing --\u003e Live: Block Production\n Listening --\u003e Live: New Blocks\n Live --\u003e [*]: Shutdown\n \n Syncing --\u003e [*]: Error\n Live --\u003e [*]: Error\n```\n\n**Development Workflow**: `documentation/building.md`\n- Cross-platform build system\n- Docker containerization support\n- Automated testing and CI/CD integration\n- Release packaging and distribution\n\n**Testing Infrastructure**: `documentation/testing.md`\n- Unit test framework integration\n- Integration testing capabilities\n- Performance benchmarking tools\n- Continuous integration workflows\n\n## 5. Conclusion and Recommendations\n\n### Project Architecture Summary\n\nThe VIZ CPP Node demonstrates a well-architected blockchain implementation with several key strengths:\n\n- **Modular Design**: Clean separation of concerns through the plugin architecture enables easy maintenance and feature development\n- **Performance Focus**: Multiple optimization modes (full node vs. low-memory) accommodate diverse deployment scenarios\n- **Comprehensive API**: Broad coverage of blockchain functionality through standardized JSON-RPC interfaces\n- **Cross-platform Compatibility**: Robust build system supporting multiple operating systems and compilers\n\n### Architectural Strengths\n\n1. **Scalability**: Plugin-based architecture allows selective feature activation based on node requirements\n2. **Maintainability**: Clear module boundaries facilitate independent development and testing\n3. **Interoperability**: Standardized JSON-RPC interface enables seamless integration with external applications\n4. **Reliability**: Comprehensive error handling and logging throughout the system\n\n### Potential Improvement Areas\n\n1. **Documentation**: Enhanced inline documentation would improve code maintainability\n2. **Testing Coverage**: Expanded unit and integration test suites would increase confidence in changes\n3. **Monitoring**: Additional metrics and health check endpoints would improve operational visibility\n4. **Security**: Regular security audits and vulnerability assessments should be integrated into the development process\n\n### Actionable Recommendations\n\n1. **Implement Comprehensive Logging**: Add structured logging with correlation IDs for better debugging\n2. **Enhance Test Coverage**: Target 80%+ code coverage across all modules\n3. **Performance Monitoring**: Integrate metrics collection for key performance indicators\n4. **Security Hardening**: Implement regular security assessments and dependency updates\n5. **Developer Experience**: Create comprehensive developer guides and example applications\n\n### Next Steps for Project Evolution\n\n1. **Microservices Migration**: Consider breaking down monolithic components into microservices for better scalability\n2. **Cloud-native Deployment**: Enhance Kubernetes support and cloud-native features\n3. **Advanced Analytics**: Implement real-time analytics and reporting capabilities\n4. **Mobile Integration**: Develop mobile SDKs for broader ecosystem adoption\n5. **Community Development**: Establish contributor guidelines and development workflows\n\n---\n\n**Sources:**\n- [CMakeLists.txt](CMakeLists.txt)\n- [main.cpp](programs/vizd/main.cpp)\n- [database.hpp](libraries/chain/include/graphene/chain/database.hpp)\n- [operations.hpp](libraries/protocol/include/graphene/protocol/operations.hpp)\n- [plugin.hpp](plugins/chain/include/graphene/plugins/chain/plugin.hpp)\n- [config.ini](share/vizd/config/config.ini)\n- [building.md](documentation/building.md)\n- [plugin.hpp](plugins/database_api/include/graphene/plugins/database_api/plugin.hpp)\n- [p2p_plugin.hpp](plugins/p2p/include/graphene/plugins/p2p/p2p_plugin.hpp)\n- [webserver_plugin.hpp](plugins/webserver/include/graphene/plugins/webserver/webserver_plugin.hpp)\n- [CMakeLists.txt](thirdparty/CMakeLists.txt)\n\n\u003c/blog\u003e","gmt_create":"2026-03-03T07:24:05+04:00","gmt_modified":"2026-03-03T07:24:05+04:00","id":"803607e7-6a8a-4c9b-afb1-d634ded301a2","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6"},"wiki_readme":{"content":"No readme file","gmt_create":"2026-03-03T07:22:14+04:00","gmt_modified":"2026-03-03T07:22:14+04:00","id":"6149adec-82d6-4736-a18a-62862d0820c7","repo_id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6"},"wiki_repo":{"id":"c5610a51-36c1-4fcd-9a18-9ce91fff8be6","name":"viz-cpp-node","progress_status":"completed","wiki_present_status":"COMPLETED","optimized_catalog":"\".\\n├── .github\\\\workflows\\\\\\n│ ├── docker-main.yml\\n│ └── docker-pr-build.yml\\n├── .qoder\\\\\\n│ ├── agents\\\\\\n│ └── skills\\\\\\n├── documentation\\\\\\n│ ├── doxygen\\\\\\n│ │ ├── images\\\\\\n│ │ │ └── viz.png\\n│ │ ├── DoxygenLayout.xml\\n│ │ ├── customdoxygen.css\\n│ │ ├── footer.html\\n│ │ └── header.html\\n│ ├── api_notes.md\\n│ ├── building.md\\n│ ├── debug_node_plugin.md\\n│ ├── git_guildelines.md\\n│ ├── plugin.md\\n│ ├── testing.md\\n│ └── testnet.md\\n├── libraries\\\\\\n│ ├── api\\\\\\n│ │ ├── include\\\\graphene\\\\api\\\\\\n│ │ │ ├── account_api_object.hpp\\n│ │ │ ├── account_vote.hpp\\n│ │ │ ├── chain_api_properties.hpp\\n│ │ │ ├── committee_api_object.hpp\\n│ │ │ ├── content_api_object.hpp\\n│ │ │ ├── discussion.hpp\\n│ │ │ ├── discussion_helper.hpp\\n│ │ │ ├── invite_api_object.hpp\\n│ │ │ ├── paid_subscription_api_object.hpp\\n│ │ │ ├── vote_state.hpp\\n│ │ │ └── witness_api_object.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── account_api_object.cpp\\n│ │ ├── chain_api_properties.cpp\\n│ │ ├── committee_api_object.cpp\\n│ │ ├── content_api_object.cpp\\n│ │ ├── discussion_helper.cpp\\n│ │ ├── invite_api_object.cpp\\n│ │ ├── paid_subscription_api_object.cpp\\n│ │ └── witness_api_object.cpp\\n│ ├── chain\\\\\\n│ │ ├── hardfork.d\\\\\\n│ │ │ ├── 0-preamble.hf\\n│ │ │ ├── 1.hf\\n│ │ │ ├── 10.hf\\n│ │ │ ├── 11.hf\\n│ │ │ ├── 2.hf\\n│ │ │ ├── 3.hf\\n│ │ │ ├── 4.hf\\n│ │ │ ├── 5.hf\\n│ │ │ ├── 6.hf\\n│ │ │ ├── 7.hf\\n│ │ │ ├── 8.hf\\n│ │ │ └── 9.hf\\n│ │ ├── include\\\\graphene\\\\chain\\\\\\n│ │ │ ├── account_object.hpp\\n│ │ │ ├── block_log.hpp\\n│ │ │ ├── block_summary_object.hpp\\n│ │ │ ├── chain_evaluator.hpp\\n│ │ │ ├── chain_object_types.hpp\\n│ │ │ ├── chain_objects.hpp\\n│ │ │ ├── committee_objects.hpp\\n│ │ │ ├── compound.hpp\\n│ │ │ ├── content_object.hpp\\n│ │ │ ├── custom_operation_interpreter.hpp\\n│ │ │ ├── database.hpp\\n│ │ │ ├── database_exceptions.hpp\\n│ │ │ ├── db_with.hpp\\n│ │ │ ├── evaluator.hpp\\n│ │ │ ├── evaluator_registry.hpp\\n│ │ │ ├── fork_database.hpp\\n│ │ │ ├── generic_custom_operation_interpreter.hpp\\n│ │ │ ├── global_property_object.hpp\\n│ │ │ ├── immutable_chain_parameters.hpp\\n│ │ │ ├── index.hpp\\n│ │ │ ├── invite_objects.hpp\\n│ │ │ ├── node_property_object.hpp\\n│ │ │ ├── operation_notification.hpp\\n│ │ │ ├── paid_subscription_objects.hpp\\n│ │ │ ├── proposal_object.hpp\\n│ │ │ ├── shared_authority.hpp\\n│ │ │ ├── shared_db_merkle.hpp\\n│ │ │ ├── transaction_object.hpp\\n│ │ │ └── witness_objects.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── block_log.cpp\\n│ │ ├── chain_evaluator.cpp\\n│ │ ├── chain_objects.cpp\\n│ │ ├── chain_properties_evaluators.cpp\\n│ │ ├── committee_evaluator.cpp\\n│ │ ├── database.cpp\\n│ │ ├── database_proposal_object.cpp\\n│ │ ├── fork_database.cpp\\n│ │ ├── invite_evaluator.cpp\\n│ │ ├── paid_subscription_evaluator.cpp\\n│ │ ├── proposal_evaluator.cpp\\n│ │ ├── proposal_object.cpp\\n│ │ ├── shared_authority.cpp\\n│ │ └── transaction_object.cpp\\n│ ├── network\\\\\\n│ │ ├── include\\\\graphene\\\\network\\\\\\n│ │ │ ├── config.hpp\\n│ │ │ ├── core_messages.hpp\\n│ │ │ ├── exceptions.hpp\\n│ │ │ ├── message.hpp\\n│ │ │ ├── message_oriented_connection.hpp\\n│ │ │ ├── node.hpp\\n│ │ │ ├── peer_connection.hpp\\n│ │ │ ├── peer_database.hpp\\n│ │ │ └── stcp_socket.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── core_messages.cpp\\n│ │ ├── message_oriented_connection.cpp\\n│ │ ├── node.cpp\\n│ │ ├── peer_connection.cpp\\n│ │ ├── peer_database.cpp\\n│ │ └── stcp_socket.cpp\\n│ ├── protocol\\\\\\n│ │ ├── include\\\\graphene\\\\protocol\\\\\\n│ │ │ ├── README.md\\n│ │ │ ├── asset.hpp\\n│ │ │ ├── authority.hpp\\n│ │ │ ├── base.hpp\\n│ │ │ ├── block.hpp\\n│ │ │ ├── block_header.hpp\\n│ │ │ ├── chain_operations.hpp\\n│ │ │ ├── chain_virtual_operations.hpp\\n│ │ │ ├── config.hpp\\n│ │ │ ├── config_testnet.hpp\\n│ │ │ ├── exceptions.hpp\\n│ │ │ ├── get_config.hpp\\n│ │ │ ├── operation_util.hpp\\n│ │ │ ├── operation_util_impl.hpp\\n│ │ │ ├── operations.hpp\\n│ │ │ ├── proposal_operations.hpp\\n│ │ │ ├── protocol.hpp\\n│ │ │ ├── sign_state.hpp\\n│ │ │ ├── transaction.hpp\\n│ │ │ ├── types.hpp\\n│ │ │ └── version.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── asset.cpp\\n│ │ ├── authority.cpp\\n│ │ ├── block.cpp\\n│ │ ├── chain_operations.cpp\\n│ │ ├── get_config.cpp\\n│ │ ├── operation_util_impl.cpp\\n│ │ ├── operations.cpp\\n│ │ ├── proposal_operations.cpp\\n│ │ ├── sign_state.cpp\\n│ │ ├── transaction.cpp\\n│ │ ├── types.cpp\\n│ │ └── version.cpp\\n│ ├── time\\\\\\n│ │ ├── include\\\\graphene\\\\time\\\\\\n│ │ │ └── time.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── time.cpp\\n│ ├── utilities\\\\\\n│ │ ├── include\\\\graphene\\\\utilities\\\\\\n│ │ │ ├── git_revision.hpp\\n│ │ │ ├── key_conversion.hpp\\n│ │ │ ├── padding_ostream.hpp\\n│ │ │ ├── string_escape.hpp\\n│ │ │ ├── tempdir.hpp\\n│ │ │ └── words.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── git_revision.cpp.in\\n│ │ ├── key_conversion.cpp\\n│ │ ├── string_escape.cpp\\n│ │ ├── tempdir.cpp\\n│ │ └── words.cpp\\n│ ├── wallet\\\\\\n│ │ ├── include\\\\graphene\\\\wallet\\\\\\n│ │ │ ├── api_documentation.hpp\\n│ │ │ ├── reflect_util.hpp\\n│ │ │ ├── remote_node_api.hpp\\n│ │ │ └── wallet.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── Doxyfile.in\\n│ │ ├── api_documentation_standin.cpp\\n│ │ ├── generate_api_documentation.pl\\n│ │ └── wallet.cpp\\n│ └── CMakeLists.txt\\n├── plugins\\\\\\n│ ├── account_by_key\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\account_by_key\\\\\\n│ │ │ ├── account_by_key_objects.hpp\\n│ │ │ └── account_by_key_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── account_by_key_plugin.cpp\\n│ ├── account_history\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\account_history\\\\\\n│ │ │ ├── history_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── auth_util\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\auth_util\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── block_info\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\block_info\\\\\\n│ │ │ ├── block_info.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── chain\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\chain\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── committee_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\committee_api\\\\\\n│ │ │ └── committee_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── committee_api.cpp\\n│ ├── custom_protocol_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\custom_protocol_api\\\\\\n│ │ │ ├── custom_protocol_api.hpp\\n│ │ │ ├── custom_protocol_api_object.hpp\\n│ │ │ └── custom_protocol_api_visitor.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── custom_protocol_api.cpp\\n│ │ └── custom_protocol_api_visitor.cpp\\n│ ├── database_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\database_api\\\\\\n│ │ │ ├── api_objects\\\\\\n│ │ │ │ ├── account_recovery_request_api_object.hpp\\n│ │ │ │ ├── master_authority_history_api_object.hpp\\n│ │ │ │ └── proposal_api_object.hpp\\n│ │ │ ├── forward.hpp\\n│ │ │ ├── plugin.hpp\\n│ │ │ └── state.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── api.cpp\\n│ │ └── proposal_api_object.cpp\\n│ ├── debug_node\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\debug_node\\\\\\n│ │ │ ├── api_helper.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── follow\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\follow\\\\\\n│ │ │ ├── follow_api_object.hpp\\n│ │ │ ├── follow_evaluators.hpp\\n│ │ │ ├── follow_forward.hpp\\n│ │ │ ├── follow_objects.hpp\\n│ │ │ ├── follow_operations.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── follow_evaluators.cpp\\n│ │ ├── follow_operations.cpp\\n│ │ └── plugin.cpp\\n│ ├── invite_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\invite_api\\\\\\n│ │ │ └── invite_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── invite_api.cpp\\n│ ├── json_rpc\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\json_rpc\\\\\\n│ │ │ ├── plugin.hpp\\n│ │ │ └── utility.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── mongo_db\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\mongo_db\\\\\\n│ │ │ ├── mongo_db_operations.hpp\\n│ │ │ ├── mongo_db_plugin.hpp\\n│ │ │ ├── mongo_db_state.hpp\\n│ │ │ ├── mongo_db_types.hpp\\n│ │ │ └── mongo_db_writer.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── mongo_db_operations.cpp\\n│ │ ├── mongo_db_plugin.cpp\\n│ │ ├── mongo_db_state.cpp\\n│ │ ├── mongo_db_types.cpp\\n│ │ └── mongo_db_writer.cpp\\n│ ├── network_broadcast_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\network_broadcast_api\\\\\\n│ │ │ └── network_broadcast_api_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── network_broadcast_api.cpp\\n│ ├── operation_history\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\operation_history\\\\\\n│ │ │ ├── applied_operation.hpp\\n│ │ │ ├── history_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── applied_operation.cpp\\n│ │ └── plugin.cpp\\n│ ├── p2p\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\p2p\\\\\\n│ │ │ └── p2p_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── p2p_plugin.cpp\\n│ ├── paid_subscription_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\paid_subscription_api\\\\\\n│ │ │ └── paid_subscription_api.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── paid_subscription_api.cpp\\n│ ├── private_message\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\private_message\\\\\\n│ │ │ ├── private_message_evaluators.hpp\\n│ │ │ ├── private_message_objects.hpp\\n│ │ │ └── private_message_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── private_message_objects.cpp\\n│ │ └── private_message_plugin.cpp\\n│ ├── raw_block\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\raw_block\\\\\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ ├── social_network\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\social_network\\\\\\n│ │ │ └── social_network.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── social_network.cpp\\n│ ├── tags\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\tags\\\\\\n│ │ │ ├── discussion_query.hpp\\n│ │ │ ├── plugin.hpp\\n│ │ │ ├── tag_api_object.hpp\\n│ │ │ ├── tag_visitor.hpp\\n│ │ │ ├── tags_object.hpp\\n│ │ │ └── tags_sort.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ ├── discussion_query.cpp\\n│ │ ├── plugin.cpp\\n│ │ └── tag_visitor.cpp\\n│ ├── test_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\test_api\\\\\\n│ │ │ └── test_api_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── test_api_plugin.cpp\\n│ ├── webserver\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\webserver\\\\\\n│ │ │ └── webserver_plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── webserver_plugin.cpp\\n│ ├── witness\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\witness\\\\\\n│ │ │ └── witness.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── witness.cpp\\n│ ├── witness_api\\\\\\n│ │ ├── include\\\\graphene\\\\plugins\\\\witness_api\\\\\\n│ │ │ ├── api_objects\\\\\\n│ │ │ │ ├── feed_history_api_object.hpp\\n│ │ │ │ └── witness_api_object.hpp\\n│ │ │ └── plugin.hpp\\n│ │ ├── CMakeLists.txt\\n│ │ └── plugin.cpp\\n│ └── CMakeLists.txt\\n├── programs\\\\\\n│ ├── build_helpers\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ ├── cat-parts.cpp\\n│ │ ├── cat_parts.py\\n│ │ ├── check_reflect.py\\n│ │ └── configure_build.py\\n│ ├── cli_wallet\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── js_operation_serializer\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── size_checker\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ ├── util\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ ├── get_dev_key.cpp\\n│ │ ├── inflation_plot.py\\n│ │ ├── newplugin.py\\n│ │ ├── pretty_schema.py\\n│ │ ├── saltpass.py\\n│ │ ├── schema_test.cpp\\n│ │ ├── sign_digest.cpp\\n│ │ ├── sign_transaction.cpp\\n│ │ ├── test_block_log.cpp\\n│ │ └── test_shared_mem.cpp\\n│ ├── vizd\\\\\\n│ │ ├── CMakeLists.txt\\n│ │ └── main.cpp\\n│ └── CMakeLists.txt\\n├── share\\\\vizd\\\\\\n│ ├── config\\\\\\n│ │ ├── config.ini\\n│ │ ├── config_debug.ini\\n│ │ ├── config_debug_mongo.ini\\n│ │ ├── config_mongo.ini\\n│ │ ├── config_stock_exchange.ini\\n│ │ ├── config_testnet.ini\\n│ │ └── config_witness.ini\\n│ ├── docker\\\\\\n│ │ ├── Dockerfile-lowmem\\n│ │ ├── Dockerfile-mongo\\n│ │ ├── Dockerfile-production\\n│ │ └── Dockerfile-testnet\\n│ ├── seednodes\\n│ ├── seednodes_empty\\n│ ├── snapshot-testnet.json\\n│ ├── snapshot.json\\n│ └── vizd.sh\\n├── thirdparty\\\\\\n│ ├── appbase\\\\\\n│ ├── chainbase\\\\\\n│ ├── fc\\\\\\n│ └── CMakeLists.txt\\n├── .gitignore\\n├── .gitmodules\\n├── .travis.yml\\n├── CMakeLists.txt\\n├── Doxyfile\\n├── LICENSE.md\\n└── README.md\\n\"","current_document_structure":"WikiEncrypted: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","catalogue_think_content":"WikiEncrypted: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","recovery_checkpoint":"incremental_processing","last_commit_id":"40886e44a5ee5d1878dc4aa3899754627cf45e0f","last_commit_update":"2026-04-23T12:18:56.2336846+04:00","gmt_create":"2026-03-03T06:42:09+04:00","gmt_modified":"2026-04-23T12:18:56.2336846+04:00","extend_info":"{\"language\":\"en\",\"active\":true,\"branch\":\"free-memory\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"0.8.2\"}"}} \ No newline at end of file diff --git a/build-linux.sh b/build-linux.sh index 4bae296dd3..a621451843 100644 --- a/build-linux.sh +++ b/build-linux.sh @@ -36,7 +36,7 @@ BUILD_TYPE="Release" LOW_MEMORY="OFF" BUILD_TESTNET="OFF" ENABLE_MONGO="OFF" -SHARED_LIBS="ON" +SHARED_LIBS="OFF" CHAINBASE_LOCK="ON" CLEAN_BUILD="false" DO_INSTALL="false" diff --git a/documentation/snapshot-plugin.md b/documentation/snapshot-plugin.md index 4037db8044..90a7a8d31f 100644 --- a/documentation/snapshot-plugin.md +++ b/documentation/snapshot-plugin.md @@ -176,12 +176,42 @@ Early-rejection checks in `_push_block` prevent sync disruption: 1. **Duplicate blocks**: If a block is at or before head and its ID matches our chain, it's already applied — skip silently (prevents unnecessary `fork_db` push attempts that would throw `unlinkable_block_exception`). -2. **Blocks at/before head on a different fork with unknown parent**: If a block is at or before our head but on a different fork (different ID), AND its parent isn't in the fork_db (the fork diverged before the fork_db's window), silently reject it. Without this check, `fork_db.push_block` throws `unlinkable_block_exception`, which the P2P layer catches and uses to restart sync — creating an infinite error loop where the sync peer keeps sending blocks from the other fork, each one fails to link, and each failure restarts sync. +2. **Blocks at/before head on a different fork with unknown parent**: If a block is at or before our head but on a different fork (different ID), AND its parent isn't in the fork_db (the fork diverged before the fork_db's window), throw `unlinkable_block_exception`. The P2P layer catches this and soft-bans the peer (stale fork) or restarts sync (block ahead of head). Without this check, `fork_db.push_block` throws the same exception anyway, but the P2P layer can't distinguish the cause. -3. **Far-ahead blocks with unknown parent**: If a block's `previous` is neither our `head_block_id()` nor in `fork_db`, the block can never link. Return `false` silently instead of throwing, which prevents P2P sync restart. +3. **Far-ahead blocks with unknown parent**: If a block is above our head, its `previous` is neither our `head_block_id()` nor in `fork_db`, and it's not the genesis block, return `false` silently instead of pushing to `fork_db`. Without this guard, `fork_db.push_block` throws `unlinkable_block_exception` which triggers P2P sync restart, clearing the sync queue and preventing forward progress. This is critical after snapshot import: the node is at block N, the network is at N+1000, and every broadcast block would otherwise disrupt the sequential sync. 4. **Immediate successor always allowed**: Blocks whose `previous == head_block_id()` always pass — this is the critical sync case where the next sequential block must be accepted, even when `fork_db` is empty after a restart. +### Deferred Resize and Sync Recovery + +When shared memory is exhausted during block processing, the node schedules a deferred resize and throws `deferred_resize_exception`. The P2P layer handles this as a transient local condition: + +- **Sync path**: Does NOT soft-ban the peer (the peer did nothing wrong). Instead, restarts sync with all active peers so the missed block is re-fetched after the resize completes. +- **Broadcast path**: Does NOT soft-ban or disconnect. The block will be re-received naturally after the resize. + +Without this fix, `deferred_resize_exception` in the sync path would fall through to the generic error handler, causing a 1-hour soft-ban of the peer AND losing the missed block — the next sync block (N+2) would fail to link because N+1 was never applied, permanently stalling sync. + +### P2P Soft-Ban Trigger Reference + +All soft-ban triggers set `fork_rejected_until = now + duration` and `inhibit_fetching_sync_blocks = true`. The default duration is 1 hour (3600s), but **trusted peers** (IPs matching `trusted-snapshot-peer` config) get a reduced 5-minute (300s) ban, allowing faster recovery from transient errors. Broadcast blocks from soft-banned peers are silently discarded. The `inhibit_fetching_sync_blocks` flag is automatically reset when the ban expires. + +| # | Code Path | Exception / Condition | Block Position | Action | Reason | +|---|-----------|----------------------|----------------|--------|--------| +| 1 | Sync: `send_sync_block_to_node_delegate` | `block_older_than_undo_history` | any | Soft-ban 1h (5 min trusted) | Peer on a fork too old for undo history | +| 2 | Sync: `send_sync_block_to_node_delegate` | `unlinkable_block_exception` + block ≤ head | ≤ head | Soft-ban 1h (5 min trusted) | Dead fork, block at/below head | +| 3 | Sync: `send_sync_block_to_node_delegate` | `unlinkable_block_exception` + block > head | > head | Restart sync | Behind; need to fetch missing parents | +| 4 | Sync: `send_sync_block_to_node_delegate` | `deferred_resize_exception` | any | Restart sync, no soft-ban | Local condition; peer not at fault | +| 5 | Sync: `send_sync_block_to_node_delegate` | Generic `fc::exception` | any | Soft-ban 1h (5 min trusted) | Unspecified rejection; prevent reconnect loops | +| 6 | Broadcast: `process_block_during_normal_operation` | `unlinkable_block_exception` + block ≤ head | ≤ head | Soft-ban 1h (5 min trusted) | Stale fork | +| 7 | Broadcast: `process_block_during_normal_operation` | `unlinkable_block_exception` + block > head | > head | Restart sync | Behind; resync to catch up | +| 8 | Broadcast: `process_block_during_normal_operation` | `block_older_than_undo_history` | any | Soft-ban 1h (5 min trusted) | Dead fork, stale blocks | +| 9 | Broadcast: `process_block_during_normal_operation` | `deferred_resize_exception` | any | No action | Local transient; block re-received after resize | +| 10 | Broadcast: `process_block_during_normal_operation` | `fc::exception` + block ≤ head | ≤ head | Soft-ban 1h (5 min trusted) | Fork rejection; prevent cascading disconnects | +| 11 | Broadcast: `process_block_during_normal_operation` | `fc::exception` + block > head | > head | Disconnect | Genuinely invalid block | +| 12 | Chain: `_push_block` | Block ≤ head, different fork, parent not in fork_db | ≤ head | Throw `unlinkable_block_exception` | Fork diverged before fork_db window | +| 13 | Chain: `_push_block` | Block > head, `previous != head_block_id`, parent not in fork_db | > head | Return `false` silently | Prevent sync restart storms from broadcast blocks | +| 14 | Chain: `push_block` | `bad_alloc` → `deferred_resize_exception` | any | Throw `deferred_resize_exception` | Shared memory exhausted; P2P must not penalize peer | + ### `is_known_block()` in DLT Mode In DLT mode, the `block_summary` table (TAPOS buffer, 65536 entries) survives snapshot import, but block data may not be available on disk. Simply returning `true` from `block_summary` would mislead P2P peers into requesting blocks the node can't serve. @@ -306,6 +336,43 @@ stalled-sync-timeout-minutes = 5 - **Network partition**: If the node cannot reach the chain head via P2P, it will attempt to bootstrap from a snapshot. - **DLT mode recovery**: Essential for nodes running in DLT mode without full block history. +## P2P Stale Sync Detection + +The P2P plugin can automatically detect and recover from network stalls — when no blocks are received from any peer for an extended period. This is a lightweight recovery mechanism that does **not** require downloading a snapshot. + +### How It Works + +When enabled, the P2P plugin tracks the last time a block was received via the network. A background task checks every 30 seconds whether the elapsed time exceeds the configured timeout. If a stall is detected, the node performs three recovery actions in sequence: + +1. **Reset sync from LIB** — The P2P layer's sync start point is reset to the last irreversible block (LIB). This ensures the node resumes from a safe, fork-proof position instead of potentially chasing a dead fork. +2. **Resync with connected peers** — The node explicitly restarts synchronization with all currently connected peers by sending fresh `fetch_blockchain_item_ids_message` requests. +3. **Reconnect seed peers** — All seed nodes from `p2p-seed-node` config are re-added to the connection queue and reconnection is attempted for any that were disconnected. + +This is complementary to the snapshot plugin's stalled sync detection (which downloads a new snapshot). The P2P stale recovery is faster and less disruptive — it only adjusts sync state and reconnects peers, without requiring any state reload. + +### Config Options + +```ini +# Enable P2P stale sync detection (default: false) +p2p-stale-sync-detection = true + +# Timeout in seconds before recovery triggers (default: 120 = 2 minutes) +p2p-stale-sync-timeout-seconds = 120 +``` + +### Comparison with Snapshot Stalled Sync Detection + +| Feature | P2P Stale Sync | Snapshot Stalled Sync | +|---------|---------------|----------------------| +| Plugin | P2P | Snapshot | +| Trigger | No blocks received for timeout | No blocks received for timeout | +| Recovery action | Reset sync + reconnect peers | Download newer snapshot + reload state | +| Timeout default | 120 seconds | 5 minutes | +| Use case | Temporary network partition, peer disconnections | Node far behind, peers lack old blocks | +| DLT mode | Works for all nodes | Designed for DLT mode | + +Both can be enabled independently. For DLT nodes, the snapshot detection provides deeper recovery (fresh state), while P2P detection handles transient connectivity issues without state reload. + ## Config Reference ### Config file options (`config.ini`) diff --git a/libraries/chain/database.cpp b/libraries/chain/database.cpp index 9d674469ea..83f825c6be 100644 --- a/libraries/chain/database.cpp +++ b/libraries/chain/database.cpp @@ -567,17 +567,17 @@ namespace graphene { namespace chain { uint64_t max_mem = max_memory(); uint64_t free_mem_before = free_memory(); + uint64_t used_mem_before = max_mem - free_mem_before; size_t new_max = max_mem + _inc_shared_memory_size; if (!immediate) { // Deferred mode: just set the flag. The actual resize will be // performed by apply_pending_resize() at a safe point where // no other threads hold read locks or lockless references. - wlog( - "Shared memory resize deferred on block ${block}: will grow to ${mem}M " - "(currently ${free_before}M free, ${max_before}M total)", + ilog( + "\033[33mShared memory resize deferred on block ${block}: actual data ${used_before}M / current ${max_before}M -> will grow to ${mem}M\033[0m", ("block", current_block_num)("mem", new_max / (1024 * 1024)) - ("free_before", free_mem_before / (1024 * 1024))("max_before", max_mem / (1024 * 1024))); + ("used_before", used_mem_before / (1024 * 1024))("max_before", max_mem / (1024 * 1024))); _pending_resize = true; _pending_resize_target = new_max; return true; @@ -585,21 +585,23 @@ namespace graphene { namespace chain { // Immediate mode: used during reindex when we already hold an // exclusive write lock and no API threads are running. - wlog( - "Memory is almost full on block ${block}, increasing to ${mem}M (was ${free_before}M free, ${max_before}M total)", + ilog( + "\033[33mShared memory growing on block ${block}: actual data ${used_before}M / current ${max_before}M -> new ${mem}M\033[0m", ("block", current_block_num)("mem", new_max / (1024 * 1024)) - ("free_before", free_mem_before / (1024 * 1024))("max_before", max_mem / (1024 * 1024))); + ("used_before", used_mem_before / (1024 * 1024))("max_before", max_mem / (1024 * 1024))); resize(new_max); uint64_t free_mem = free_memory(); uint64_t reserved_mem = reserved_memory(); + uint64_t used_mem_after = new_max - free_mem; if (free_mem > reserved_mem) { free_mem -= reserved_mem; } uint32_t free_mb = uint32_t(free_mem / (1024 * 1024)); - wlog("Free memory is now ${free}M", ("free", free_mb)); + ilog("\033[33mShared memory grow complete: actual data ${used_after}M / new ${max_after}M (free ${free}M)\033[0m", + ("used_after", used_mem_after / (1024 * 1024))("max_after", new_max / (1024 * 1024))("free", free_mb)); _last_free_gb_printed = free_mb / 1024; return true; } @@ -621,17 +623,24 @@ namespace graphene { namespace chain { _pending_resize = false; _pending_resize_target = 0; - wlog("Applying deferred shared memory resize to ${mem}M", + uint64_t max_mem_before = max_memory(); + uint64_t free_mem_before = free_memory(); + uint64_t used_mem_before = max_mem_before - free_mem_before; + + ilog("\033[33mApplying deferred shared memory resize: actual data ${used_before}M / current ${max_before}M -> new ${mem}M\033[0m", + ("used_before", used_mem_before / (1024 * 1024))("max_before", max_mem_before / (1024 * 1024)) ("mem", target / (1024 * 1024))); resize(target); uint64_t free_mem = free_memory(); uint64_t reserved_mem = reserved_memory(); + uint64_t used_mem_after = target - free_mem; if (free_mem > reserved_mem) { free_mem -= reserved_mem; } uint32_t free_mb = uint32_t(free_mem / (1024 * 1024)); - wlog("Deferred resize complete. Free memory is now ${free}M", ("free", free_mb)); + ilog("\033[33mDeferred shared memory grow complete: actual data ${used_after}M / new ${max_after}M (free ${free}M)\033[0m", + ("used_after", used_mem_after / (1024 * 1024))("max_after", target / (1024 * 1024))("free", free_mb)); _last_free_gb_printed = free_mb / 1024; }); } @@ -1112,7 +1121,7 @@ namespace graphene { namespace chain { // internally, which waits for all readers to finish first. apply_pending_resize(); - bool result; + bool result = false; with_strong_write_lock([&]() { detail::without_pending_transactions(*this, skip, std::move(_pending_tx), [&]() { try { @@ -1125,16 +1134,17 @@ namespace graphene { namespace chain { throw e; } // Out of shared memory. Schedule a deferred resize. - // Return false (block not applied) instead of throwing so that: - // - the P2P layer does not penalise / disconnect the peer; - // - witness slot-miss is logged but the node stays connected. + // Throw a specific exception so the P2P layer can distinguish + // this transient condition from a permanently invalid block. // apply_pending_resize() at the top of the next push_block() call // will perform the resize safely before any database access, and // the missed block will be re-received during normal sync. wlog("Received bad_alloc exception. Scheduling deferred resize."); set_reserved_memory(free_memory()); _resize(new_block.block_num()); // deferred (immediate=false by default) - result = false; + FC_THROW_EXCEPTION(deferred_resize_exception, + "Shared memory exhausted on block ${block}, resize deferred. Retry next block.", + ("block", new_block.block_num())); } }); }); @@ -1219,16 +1229,17 @@ namespace graphene { namespace chain { // Block is at or before head but on a different fork. // If the block's parent is not in the fork_db, we can never // link it (the fork diverged before the fork_db's window). - // Silently reject to prevent unlinkable_block_exception from - // propagating to the P2P layer, which would trigger a sync - // restart loop (the sync peer keeps sending blocks from the - // other fork, each one fails to link, each failure restarts - // sync, ad infinitum). + // Throw unlinkable_block_exception so the P2P layer can + // soft-ban the peer sending blocks from this dead fork. + // This is NOT a micro-fork: micro-fork blocks have parents + // that ARE in fork_db and fall through to normal push logic. if (new_block.previous != block_id_type() && !_fork_db.is_known_block(new_block.previous)) { wlog("Rejecting block ${n} from a different fork: parent not in fork_db (head=${h})", ("n", new_block.block_num())("h", head_block_num())); - return false; + FC_THROW_EXCEPTION(unlinkable_block_exception, + "Block from a different fork whose parent is not in fork_db (block ${n}, head=${h})", + ("n", new_block.block_num())("h", head_block_num())); } // Parent IS in fork_db — fall through to normal push logic // which may trigger a fork switch (if the other fork has @@ -1269,6 +1280,7 @@ namespace graphene { namespace chain { return false; } + if (!(skip & skip_fork_db)) { shared_ptr new_head = _fork_db.push_block(new_block); _maybe_warn_multiple_production(new_head->num); @@ -1358,8 +1370,6 @@ namespace graphene { namespace chain { _fork_db.remove((*ritr)->data.id()); ++ritr; } - _fork_db.set_head(branches.second.front()); - // pop all blocks from the bad fork while (head_block_id() != branches.second.back()->data.previous) { @@ -1374,9 +1384,27 @@ namespace graphene { namespace chain { apply_block((*ritr)->data, skip); session.push(); } + + // Restore fork_db head to the original chain tip. + // pop_block() above moved _head backwards via + // _fork_db.pop_block(), but apply_block() does not + // advance it. Without this, _head stays at the fork + // point instead of the original chain tip. + _fork_db.set_head(branches.second.front()); + throw *except; } } + + // After successfully switching to the new fork, update the + // fork_db head to point to the new chain tip. pop_block() + // moves _head backwards via _fork_db.pop_block(), but + // apply_block() does NOT advance it forward. Without this, + // _head stays at the fork point, causing fetch_branch_from() + // to fail when get_blockchain_synopsis() later tries to + // locate the current head_block_id(). + _fork_db.set_head(new_head); + return true; } else { return false; diff --git a/libraries/chain/include/graphene/chain/database_exceptions.hpp b/libraries/chain/include/graphene/chain/database_exceptions.hpp index 1a00635c33..339d4b8dcd 100644 --- a/libraries/chain/include/graphene/chain/database_exceptions.hpp +++ b/libraries/chain/include/graphene/chain/database_exceptions.hpp @@ -84,6 +84,8 @@ namespace graphene { FC_DECLARE_DERIVED_EXCEPTION(block_too_old_exception, graphene::chain::chain_exception, 4080100, "block is too old for fork database") + FC_DECLARE_DERIVED_EXCEPTION(deferred_resize_exception, graphene::chain::chain_exception, 4080200, "shared memory resize deferred, retry block") + FC_DECLARE_DERIVED_EXCEPTION(unknown_hardfork_exception, graphene::chain::chain_exception, 4090000, "chain attempted to apply unknown hardfork") FC_DECLARE_DERIVED_EXCEPTION(plugin_exception, graphene::chain::chain_exception, 4100000, "plugin exception") diff --git a/libraries/network/include/graphene/network/exceptions.hpp b/libraries/network/include/graphene/network/exceptions.hpp index 83b1178c94..07e7f5b8e9 100644 --- a/libraries/network/include/graphene/network/exceptions.hpp +++ b/libraries/network/include/graphene/network/exceptions.hpp @@ -44,5 +44,7 @@ namespace graphene { FC_DECLARE_DERIVED_EXCEPTION(unlinkable_block_exception, graphene::network::net_exception, 90006, "unlinkable block") + FC_DECLARE_DERIVED_EXCEPTION(deferred_resize_exception, graphene::network::net_exception, 90007, "shared memory resize deferred, retry block") + } } diff --git a/libraries/network/include/graphene/network/node.hpp b/libraries/network/include/graphene/network/node.hpp index 2b7f29b6bc..0a1af90364 100644 --- a/libraries/network/include/graphene/network/node.hpp +++ b/libraries/network/include/graphene/network/node.hpp @@ -281,12 +281,28 @@ namespace graphene { void set_allowed_peers(const std::vector &allowed_peers); + /** + * Set trusted peer endpoints for reduced soft-ban duration. + * Peers matching these IP addresses will be soft-banned for 5 minutes + * instead of 1 hour, allowing faster recovery from transient errors. + * Typically populated with trusted-snapshot-peer IPs. + */ + void set_trusted_peer_endpoints(const std::vector &endpoints); + /** * Instructs the node to forget everything in its peer database, mostly for debugging * problems where nodes are failing to connect to the network */ void clear_peer_database(); + /** + * Restart synchronization with all currently connected peers. + * This is useful when the node detects it has fallen behind + * (e.g., no blocks received for an extended period) and wants + * to force a re-sync from its current sync point. + */ + virtual void resync(); + void set_total_bandwidth_limit(uint32_t upload_bytes_per_second, uint32_t download_bytes_per_second); fc::variant_object network_get_info() const; @@ -327,6 +343,9 @@ namespace graphene { void sync_from(const item_id ¤t_head_block, const std::vector &hard_fork_block_numbers) override { } + void resync() override { + } + void broadcast(const message &item_to_broadcast) override; void add_node_delegate(node_delegate *node_delegate_to_add); diff --git a/libraries/network/node.cpp b/libraries/network/node.cpp index e5fd984915..bd66b31558 100644 --- a/libraries/network/node.cpp +++ b/libraries/network/node.cpp @@ -76,6 +76,11 @@ #define P2P_IN_DEDICATED_THREAD 1 +// ANSI color codes for console ban notifications +#define CLOG_RED "\033[91m" +#define CLOG_ORANGE "\033[33m" +#define CLOG_RESET "\033[0m" + #define INVOCATION_COUNTER(name) \ static unsigned total_ ## name ## _counter = 0; \ static unsigned active_ ## name ## _counter = 0; \ @@ -586,6 +591,15 @@ namespace graphene { std::set _allowed_peers; #endif // ENABLE_P2P_DEBUGGING_API + // Trusted peer IPs for reduced soft-ban duration (5 min vs 1 hour). + // Populated from trusted-snapshot-peer config. Stored as + // 32-bit raw IP addresses for O(1) lookup. + std::set _trusted_peer_ips; + + // Soft-ban durations + static constexpr uint32_t SOFT_BAN_DURATION_SEC = 3600; // 1 hour (default) + static constexpr uint32_t TRUSTED_SOFT_BAN_DURATION_SEC = 300; // 5 minutes (trusted peers) + bool _node_is_shutting_down; // set to true when we begin our destructor, used to prevent us from starting new tasks while we're shutting down unsigned _maximum_number_of_blocks_to_handle_at_one_time; @@ -816,9 +830,14 @@ namespace graphene { node_id_t get_node_id() const; void set_allowed_peers(const std::vector &allowed_peers); + void set_trusted_peer_endpoints(const std::vector &endpoints); + uint32_t get_soft_ban_duration(peer_connection *peer) const; + bool is_trusted_peer(peer_connection *peer) const; void clear_peer_database(); + void resync(); + void set_total_bandwidth_limit(uint32_t upload_bytes_per_second, uint32_t download_bytes_per_second); void disable_peer_advertising(); @@ -2410,7 +2429,8 @@ namespace graphene { if (!originating_peer->we_need_sync_items_from_peer && !fetch_blockchain_item_ids_message_received.blockchain_synopsis.empty() && !_delegate->has_item(peers_last_item_seen)) { - dlog("sync: restarting sync with peer ${peer}", ("peer", originating_peer->get_remote_endpoint())); + ilog("sync: restarting sync with peer ${peer} because we don't have their last item (peer is in sync with us)", + ("peer", originating_peer->get_remote_endpoint())); start_synchronizing_with_peer(originating_peer->shared_from_this()); } } else { @@ -2421,7 +2441,8 @@ namespace graphene { if (!originating_peer->we_need_sync_items_from_peer && !fetch_blockchain_item_ids_message_received.blockchain_synopsis.empty() && !_delegate->has_item(peers_last_item_seen)) { - dlog("sync: restarting sync with peer ${peer}", ("peer", originating_peer->get_remote_endpoint())); + ilog("sync: restarting sync with peer ${peer} because we don't have their last item (peer is out of sync with us)", + ("peer", originating_peer->get_remote_endpoint())); start_synchronizing_with_peer(originating_peer->shared_from_this()); } } @@ -3118,6 +3139,7 @@ namespace graphene { dlog("in send_sync_block_to_node_delegate()"); bool client_accepted_block = false; bool discontinue_fetching_blocks_from_peer = false; + bool deferred_resize = false; fc::oexception handle_message_exception; @@ -3127,14 +3149,34 @@ namespace graphene { "p2p pushing sync block #${block_num} ${block_hash}", ("block_num", block_message_to_send.block.block_num()) ("block_hash", block_message_to_send.block_id)); - _delegate->handle_block(block_message_to_send, true, contained_transaction_message_ids); - ilog("Successfully pushed sync block ${num} (id:${id})", - ("num", block_message_to_send.block.block_num()) - ("id", block_message_to_send.block_id)); + bool accepted = _delegate->handle_block(block_message_to_send, true, contained_transaction_message_ids); + if (accepted) { + ilog("Successfully pushed sync block ${num} (id:${id})", + ("num", block_message_to_send.block.block_num()) + ("id", block_message_to_send.block_id)); + } else { + // Block returned false — not applied as new head, but not an error + // either. This covers: block already on chain, micro-fork block + // added to fork_db without switching, or block ahead with unknown + // parent during sync. Dead-fork blocks (parent not in fork_db, + // at/below head) throw unlinkable_block_exception from _push_block + // and are handled by the catchers below with proper soft-ban. + ilog("Sync block #${num} not applied (already on chain, micro-fork, or parent unknown ahead)", + ("num", block_message_to_send.block.block_num())); + } _most_recent_blocks_accepted.push_back(block_message_to_send.block_id); client_accepted_block = true; } + catch (const deferred_resize_exception &e) { + // Shared memory resize is in progress. Do NOT mark the block as accepted. + // The block was not applied (bad_alloc prevented it). Do NOT soft-ban the + // peer — this is a local condition, not a peer error. We must restart + // sync so the missed block is re-fetched after resize completes. + wlog("Sync block #${num} deferred due to shared memory resize, will restart sync to re-fetch", + ("num", block_message_to_send.block.block_num())); + deferred_resize = true; + } catch (const block_older_than_undo_history &e) { fc_wlog(fc::logger::get("sync"), "p2p failed to push sync block #${block_num} ${block_hash}: block is on a fork older than our undo history would " @@ -3150,6 +3192,26 @@ namespace graphene { handle_message_exception = e; discontinue_fetching_blocks_from_peer = true; } + catch (const unlinkable_block_exception &e) { + // Block from a dead fork (parent not in fork_db) or an ahead-of-head + // block that slipped past early rejection. Distinguish ahead vs. at/below + // head: at/below head → soft-ban (stale fork); ahead → restart sync + // (we may be behind after a resize or fork switch). + uint32_t peer_block_num = block_message_to_send.block.block_num(); + uint32_t our_head = _delegate->get_block_number(_delegate->get_head_block_id()); + if (peer_block_num <= our_head) { + wlog("Sync block #${num} is from a dead fork (at or below our head #${head}), will soft-ban peer", + ("num", peer_block_num)("head", our_head)); + handle_message_exception = e; + discontinue_fetching_blocks_from_peer = true; + } else { + // Block is ahead — we may be behind. Restart sync instead of + // soft-banning so the missing blocks can be fetched sequentially. + wlog("Sync block #${num} is unlinkable and ahead of our head #${head}, restarting sync", + ("num", peer_block_num)("head", our_head)); + deferred_resize = true; // reuse flag to trigger sync restart below + } + } catch (const fc::canceled_exception &) { throw; } @@ -3215,7 +3277,8 @@ namespace graphene { // find out about the new item. if (!peer->peer_needs_sync_items_from_us && !peer->we_need_sync_items_from_peer) { - dlog("We will be restarting synchronization with peer ${peer}", ("peer", peer->get_remote_endpoint())); + ilog("Sync block #${num} accepted: peer ${peer} has empty lists and is in sync, will restart sync to notify of new item", + ("num", block_message_to_send.block.block_num())("peer", peer->get_remote_endpoint())); peers_we_need_to_sync_to.insert(peer); } } else if (!disconnecting_this_peer) { @@ -3243,33 +3306,61 @@ namespace graphene { } } } - } else { - // invalid message received + } else if (!deferred_resize) { + // invalid message received (not a deferred resize) for (const peer_connection_ptr &peer : _active_connections) { ASSERT_TASK_NOT_PREEMPTED(); // don't yield while iterating over _active_connections if (peer->ids_of_items_being_processed.find(block_message_to_send.block_id) != peer->ids_of_items_being_processed.end()) { if (discontinue_fetching_blocks_from_peer) { - wlog("Soft-banning peer ${endpoint} for 1 hour: on a fork that's too old", - ("endpoint", peer->get_remote_endpoint())); + wlog("Soft-banning peer ${endpoint} for ${dur}s: on a fork that's too old", + ("endpoint", peer->get_remote_endpoint()) + ("dur", get_soft_ban_duration(peer.get()))); + ilog(CLOG_RED "[BAN] Peer ${endpoint} soft-banned at ${time} UTC for ${dur}s. Reason: sync block on fork too old (block #${num})" CLOG_RESET, + ("endpoint", peer->get_remote_endpoint()) + ("time", fc::time_point_sec(fc::time_point::now()).to_iso_string()) + ("num", block_message_to_send.block.block_num()) + ("dur", get_soft_ban_duration(peer.get()))); peer->inhibit_fetching_sync_blocks = true; - peer->fork_rejected_until = fc::time_point::now() + fc::seconds(3600); + peer->fork_rejected_until = fc::time_point::now() + fc::seconds(get_soft_ban_duration(peer.get())); } else { // Soft-ban instead of disconnect. During sync, a rejected // block usually means the peer is on a stale fork. // Disconnecting would cause a reconnect loop; soft-ban // gives the fork time to resolve organically. - wlog("Soft-banning peer ${endpoint} for 1 hour: rejected sync block #${num}", + wlog("Soft-banning peer ${endpoint} for ${dur}s: rejected sync block #${num}", ("endpoint", peer->get_remote_endpoint()) - ("num", block_message_to_send.block.block_num())); - peer->fork_rejected_until = fc::time_point::now() + fc::seconds(3600); + ("num", block_message_to_send.block.block_num()) + ("dur", get_soft_ban_duration(peer.get()))); + ilog(CLOG_RED "[BAN] Peer ${endpoint} soft-banned at ${time} UTC for ${dur}s. Reason: rejected sync block #${num}" CLOG_RESET, + ("endpoint", peer->get_remote_endpoint()) + ("time", fc::time_point_sec(fc::time_point::now()).to_iso_string()) + ("num", block_message_to_send.block.block_num()) + ("dur", get_soft_ban_duration(peer.get()))); + peer->fork_rejected_until = fc::time_point::now() + fc::seconds(get_soft_ban_duration(peer.get())); peer->inhibit_fetching_sync_blocks = true; } } } } + // Handle deferred resize or unlinkable-ahead: restart sync from all + // active sync peers so the missed block(s) are re-fetched after the + // resize completes. Without this, the next sync block (N+2) would fail + // to link because N+1 was never applied, and subsequent blocks would all + // be silently rejected by the early-rejection check, stalling sync. + if (deferred_resize) { + wlog("Restarting sync with all peers to re-fetch block #${num} after deferred resize", + ("num", block_message_to_send.block.block_num())); + for (const peer_connection_ptr &peer : _active_connections) { + ASSERT_TASK_NOT_PREEMPTED(); + if (peer->we_need_sync_items_from_peer) { + start_synchronizing_with_peer(peer); + } + } + } + for (auto &peer_to_disconnect : peers_to_disconnect) { const peer_connection_ptr &peer = peer_to_disconnect.first; std::string reason_string; @@ -3476,12 +3567,25 @@ namespace graphene { std::vector contained_transaction_message_ids; _message_ids_currently_being_processed.insert(message_hash); fc_ilog(fc::logger::get("sync"), - "p2p pushing block #${block_num} ${block_hash} from ${peer} (message_id was ${id})", + "\033[90mp2p pushing block #${block_num} ${block_hash} from ${peer} (message_id was ${id})\033[0m", ("block_num", block_message_to_process.block.block_num()) ("block_hash", block_message_to_process.block_id) ("peer", originating_peer->get_remote_endpoint())("id", message_hash)); - _delegate->handle_block(block_message_to_process, false, contained_transaction_message_ids); + bool accepted = _delegate->handle_block(block_message_to_process, false, contained_transaction_message_ids); _message_ids_currently_being_processed.erase(message_hash); + if (!accepted) { + // The chain returned false — block was not applied. This can + // happen for normal reasons (block already on chain, or micro-fork + // block added to fork_db without triggering a fork switch). + // Dead-fork blocks (parent not in fork_db, at/below head) throw + // unlinkable_block_exception from _push_block, so they are + // handled by the unlinkable_block_exception catcher below. + // For normal false returns, we still track the block as accepted + // for P2P inventory purposes since the block IS valid — it just + // didn't become the new head. + ilog("Block #${num} returned false (already on chain or micro-fork)", + ("num", block_message_to_process.block.block_num())); + } message_validated_time = fc::time_point::now(); ilog("Successfully pushed block ${num} (id:${id})", ("num", block_message_to_process.block.block_num()) @@ -3571,21 +3675,35 @@ namespace graphene { catch (const fc::canceled_exception &) { throw; } + catch (const deferred_resize_exception &e) { + // Shared memory resize is in progress. Do NOT mark the block as accepted + // and do NOT soft-ban the peer. The block will be re-received after resize. + wlog("Block #${num} deferred due to shared memory resize, will retry on next block", + ("num", block_message_to_process.block.block_num())); + } catch (const unlinkable_block_exception &e) { uint32_t peer_block_num = block_message_to_process.block.block_num(); uint32_t our_head = _delegate->get_block_number(_delegate->get_head_block_id()); if (peer_block_num <= our_head) { // Block is at or below our head — peer is on a stale fork. Soft-ban. - wlog("Soft-banning peer ${endpoint} for 1 hour: " + wlog("Soft-banning peer ${endpoint} for ${dur}s: " "unlinkable block #${num} at or below our head #${head}", ("endpoint", originating_peer->get_remote_endpoint()) - ("num", peer_block_num)("head", our_head)); + ("num", peer_block_num)("head", our_head) + ("dur", get_soft_ban_duration(originating_peer))); + ilog(CLOG_RED "[BAN] Peer ${endpoint} soft-banned at ${time} UTC for ${dur}s. Reason: unlinkable block #${num} at or below head #${head}" CLOG_RESET, + ("endpoint", originating_peer->get_remote_endpoint()) + ("time", fc::time_point_sec(fc::time_point::now()).to_iso_string()) + ("num", peer_block_num)("head", our_head) + ("dur", get_soft_ban_duration(originating_peer))); originating_peer->fork_rejected_until = - fc::time_point::now() + fc::seconds(3600); + fc::time_point::now() + fc::seconds(get_soft_ban_duration(originating_peer)); originating_peer->inhibit_fetching_sync_blocks = true; } else { // Block is ahead of us — we may be behind. Resync is justified. + ilog("Normal block #${num} is unlinkable and ahead of our head #${head}, will restart sync with peer ${peer}", + ("num", peer_block_num)("head", our_head)("peer", originating_peer->get_remote_endpoint())); restart_sync_exception = e; } } @@ -3594,10 +3712,16 @@ namespace graphene { // This typically happens when a peer is stuck on a dead fork and // keeps broadcasting stale blocks. Soft-ban them for 1 hour // instead of restarting sync or disconnecting. - wlog("Soft-banning peer ${endpoint} for 1 hour: sent block #${num} that is too old for our fork database", + wlog("Soft-banning peer ${endpoint} for ${dur}s: sent block #${num} that is too old for our fork database", ("endpoint", originating_peer->get_remote_endpoint()) - ("num", block_message_to_process.block.block_num())); - originating_peer->fork_rejected_until = fc::time_point::now() + fc::seconds(3600); + ("num", block_message_to_process.block.block_num()) + ("dur", get_soft_ban_duration(originating_peer))); + ilog(CLOG_RED "[BAN] Peer ${endpoint} soft-banned at ${time} UTC for ${dur}s. Reason: block #${num} too old for fork database" CLOG_RESET, + ("endpoint", originating_peer->get_remote_endpoint()) + ("time", fc::time_point_sec(fc::time_point::now()).to_iso_string()) + ("num", block_message_to_process.block.block_num()) + ("dur", get_soft_ban_duration(originating_peer))); + originating_peer->fork_rejected_until = fc::time_point::now() + fc::seconds(get_soft_ban_duration(originating_peer)); originating_peer->inhibit_fetching_sync_blocks = true; } catch (const fc::exception &e) { @@ -3609,9 +3733,15 @@ namespace graphene { // HF12: soft-ban peers instead of disconnecting during fork rejection // This prevents cascading disconnections during emergency consensus if (block_message_to_process.block.block_num() <= _delegate->get_block_number(_delegate->get_head_block_id())) { - wlog("Soft-banning peer ${endpoint} for 1 hour due to fork rejection", - ("endpoint", originating_peer->get_remote_endpoint())); - originating_peer->fork_rejected_until = fc::time_point::now() + fc::seconds(3600); + wlog("Soft-banning peer ${endpoint} for ${dur}s due to fork rejection", + ("endpoint", originating_peer->get_remote_endpoint()) + ("dur", get_soft_ban_duration(originating_peer))); + ilog(CLOG_RED "[BAN] Peer ${endpoint} soft-banned at ${time} UTC for ${dur}s. Reason: fork rejection on block #${num}" CLOG_RESET, + ("endpoint", originating_peer->get_remote_endpoint()) + ("time", fc::time_point_sec(fc::time_point::now()).to_iso_string()) + ("num", block_message_to_process.block.block_num()) + ("dur", get_soft_ban_duration(originating_peer))); + originating_peer->fork_rejected_until = fc::time_point::now() + fc::seconds(get_soft_ban_duration(originating_peer)); originating_peer->inhibit_fetching_sync_blocks = true; } else { disconnect_exception = e; @@ -4023,6 +4153,8 @@ namespace graphene { void node_impl::start_synchronizing_with_peer(const peer_connection_ptr &peer) { VERIFY_CORRECT_THREAD(); + ilog("Starting sync with peer ${peer} (head_block: ${head})", + ("peer", peer->get_remote_endpoint())("head", _delegate->get_block_number(_delegate->get_head_block_id()))); peer->ids_of_items_to_get.clear(); peer->number_of_unfetched_item_ids = 0; peer->we_need_sync_items_from_peer = true; @@ -4750,7 +4882,7 @@ namespace graphene { _handshaking_connections.erase(peer); _closing_connections.erase(peer); _terminating_connections.erase(peer); - fc_ilog(fc::logger::get("sync"), "New peer is connected (${peer}), now ${count} active peers", + fc_ilog(fc::logger::get("sync"), "\033[93mNew peer is connected (${peer}), now ${count} active peers\033[0m", ("peer", peer->get_remote_endpoint()) ("count", _active_connections.size())); } @@ -4761,7 +4893,7 @@ namespace graphene { _handshaking_connections.erase(peer); _closing_connections.insert(peer); _terminating_connections.erase(peer); - fc_ilog(fc::logger::get("sync"), "Peer connection closing (${peer}), now ${count} active peers", + fc_ilog(fc::logger::get("sync"), CLOG_ORANGE "Peer connection closing (${peer}), now ${count} active peers" CLOG_RESET, ("peer", peer->get_remote_endpoint()) ("count", _active_connections.size())); } @@ -4772,7 +4904,7 @@ namespace graphene { _handshaking_connections.erase(peer); _closing_connections.erase(peer); _terminating_connections.insert(peer); - fc_ilog(fc::logger::get("sync"), "Peer connection terminating (${peer}), now ${count} active peers", + fc_ilog(fc::logger::get("sync"), CLOG_RED "Peer connection terminating (${peer}), now ${count} active peers" CLOG_RESET, ("peer", peer->get_remote_endpoint()) ("count", _active_connections.size())); } @@ -5109,11 +5241,53 @@ namespace graphene { #endif // ENABLE_P2P_DEBUGGING_API } + void node_impl::set_trusted_peer_endpoints(const std::vector &endpoints) { + VERIFY_CORRECT_THREAD(); + _trusted_peer_ips.clear(); + for (const auto &ep_str : endpoints) { + try { + // Parse "host:port" — extract just the IP part + std::string ip_str = ep_str; + auto colon_pos = ip_str.rfind(':'); + if (colon_pos != std::string::npos) { + ip_str = ip_str.substr(0, colon_pos); + } + // Resolve hostname to IP via fc::ip::endpoint + auto ep = fc::ip::endpoint::from_string(ip_str + ":0"); + _trusted_peer_ips.insert(uint32_t(ep.get_address())); + } catch (...) { + wlog("Failed to parse trusted peer endpoint: ${ep}", ("ep", ep_str)); + } + } + if (!_trusted_peer_ips.empty()) { + ilog("P2P: ${n} trusted peer IP(s) registered for reduced soft-ban (5 min vs 1 hour)", + ("n", _trusted_peer_ips.size())); + } + } + + bool node_impl::is_trusted_peer(peer_connection *peer) const { + if (_trusted_peer_ips.empty() || !peer) return false; + auto remote_ep = peer->get_remote_endpoint(); + if (!remote_ep.valid()) return false; + return _trusted_peer_ips.count(uint32_t(remote_ep->get_address())) > 0; + } + + uint32_t node_impl::get_soft_ban_duration(peer_connection *peer) const { + return is_trusted_peer(peer) ? TRUSTED_SOFT_BAN_DURATION_SEC : SOFT_BAN_DURATION_SEC; + } + void node_impl::clear_peer_database() { VERIFY_CORRECT_THREAD(); _potential_peer_db.clear(); } + void node_impl::resync() { + VERIFY_CORRECT_THREAD(); + ilog("Resync: restarting synchronization with all ${n} connected peers", + ("n", _active_connections.size())); + start_synchronizing(); + } + void node_impl::set_total_bandwidth_limit(uint32_t upload_bytes_per_second, uint32_t download_bytes_per_second) { VERIFY_CORRECT_THREAD(); _rate_limiter.set_upload_limit(upload_bytes_per_second); @@ -5291,10 +5465,18 @@ namespace graphene { INVOKE_IN_IMPL(set_allowed_peers, allowed_peers); } + void node::set_trusted_peer_endpoints(const std::vector &endpoints) { + INVOKE_IN_IMPL(set_trusted_peer_endpoints, endpoints); + } + void node::clear_peer_database() { INVOKE_IN_IMPL(clear_peer_database); } + void node::resync() { + INVOKE_IN_IMPL(resync); + } + void node::set_total_bandwidth_limit(uint32_t upload_bytes_per_second, uint32_t download_bytes_per_second) { INVOKE_IN_IMPL(set_total_bandwidth_limit, upload_bytes_per_second, download_bytes_per_second); diff --git a/plugins/chain/plugin.cpp b/plugins/chain/plugin.cpp index 63a68977d1..0e93e49e5f 100644 --- a/plugins/chain/plugin.cpp +++ b/plugins/chain/plugin.cpp @@ -103,7 +103,8 @@ namespace chain { bool plugin::plugin_impl::accept_block(const protocol::signed_block &block, bool currently_syncing, uint32_t skip) { if (currently_syncing) { if (!sync_start_logged) { - ilog("\033[92m>>> Syncing Blockchain started from block #${n}\033[0m", ("n", block.block_num())); + ilog("\033[92m>>> Syncing Blockchain started from block #${n} (head: ${head})\033[0m", + ("n", block.block_num())("head", db.head_block_num())); sync_start_logged = true; } @@ -112,6 +113,10 @@ namespace chain { ("t", block.timestamp)("n", block.block_num())("p", block.witness)); } } else { + if (sync_start_logged) { + ilog("\033[92mSync mode ended: received normal block #${n} (head: ${head}), sync_start_logged reset\033[0m", + ("n", block.block_num())("head", db.head_block_num())); + } sync_start_logged = false; // reset guard when not syncing } @@ -344,39 +349,41 @@ namespace chain { // Auto-discover latest snapshot if --snapshot-auto-latest is set and --snapshot is not if (my->snapshot_path.empty() && options.count("snapshot-auto-latest") && options.at("snapshot-auto-latest").as()) { std::string snap_dir = options.count("snapshot-dir") ? options.at("snapshot-dir").as() : ""; - if (!snap_dir.empty()) { - fc::path dir_path(snap_dir); - if (fc::exists(dir_path) && fc::is_directory(dir_path)) { - fc::path best_path; - uint32_t best_block = 0; - boost::filesystem::directory_iterator end_itr; - for (boost::filesystem::directory_iterator itr(dir_path); itr != end_itr; ++itr) { - if (boost::filesystem::is_regular_file(itr->status())) { - std::string filename = itr->path().filename().string(); - std::string ext = itr->path().extension().string(); - if (ext == ".vizjson" || ext == ".json") { - auto pos = filename.find("snapshot-block-"); - if (pos != std::string::npos) { - try { - std::string num_str = filename.substr(pos + 15); - auto dot_pos = num_str.find('.'); - if (dot_pos != std::string::npos) num_str = num_str.substr(0, dot_pos); - uint32_t block_num = static_cast(std::stoul(num_str)); - if (block_num > best_block) { - best_block = block_num; - best_path = fc::path(itr->path().string()); - } - } catch (...) {} - } + // If snapshot-dir is not set, default to /snapshots + if (snap_dir.empty()) { + snap_dir = (appbase::app().data_dir() / "snapshots").string(); + } + fc::path dir_path(snap_dir); + if (fc::exists(dir_path) && fc::is_directory(dir_path)) { + fc::path best_path; + uint32_t best_block = 0; + boost::filesystem::directory_iterator end_itr; + for (boost::filesystem::directory_iterator itr(dir_path); itr != end_itr; ++itr) { + if (boost::filesystem::is_regular_file(itr->status())) { + std::string filename = itr->path().filename().string(); + std::string ext = itr->path().extension().string(); + if (ext == ".vizjson" || ext == ".json") { + auto pos = filename.find("snapshot-block-"); + if (pos != std::string::npos) { + try { + std::string num_str = filename.substr(pos + 15); + auto dot_pos = num_str.find('.'); + if (dot_pos != std::string::npos) num_str = num_str.substr(0, dot_pos); + uint32_t block_num = static_cast(std::stoul(num_str)); + if (block_num > best_block) { + best_block = block_num; + best_path = fc::path(itr->path().string()); + } + } catch (...) {} } } } - if (!best_path.string().empty()) { - my->snapshot_path = best_path.string(); - ilog("Chain plugin: auto-discovered latest snapshot: ${p}", ("p", my->snapshot_path)); - } else { - wlog("Chain plugin: --snapshot-auto-latest but no snapshots found in ${d}", ("d", snap_dir)); - } + } + if (!best_path.string().empty()) { + my->snapshot_path = best_path.string(); + ilog("Chain plugin: auto-discovered latest snapshot: ${p}", ("p", my->snapshot_path)); + } else { + wlog("Chain plugin: --snapshot-auto-latest but no snapshots found in ${d}", ("d", snap_dir)); } } } diff --git a/plugins/json_rpc/plugin.cpp b/plugins/json_rpc/plugin.cpp index d3fab62a65..7c554c2247 100644 --- a/plugins/json_rpc/plugin.cpp +++ b/plugins/json_rpc/plugin.cpp @@ -259,7 +259,7 @@ namespace graphene { dump_rpc_time(const fc::variant& data) : data_(data) { - dlog("\033[90mdata: ${data}\033[0m", ("data", fc::json::to_string(data_))); + ilog("\033[90mdata: ${data}\033[0m", ("data", fc::json::to_string(data_))); } ~dump_rpc_time() { diff --git a/plugins/p2p/CMakeLists.txt b/plugins/p2p/CMakeLists.txt index 3ee1c42b9f..6f183518ef 100644 --- a/plugins/p2p/CMakeLists.txt +++ b/plugins/p2p/CMakeLists.txt @@ -29,6 +29,7 @@ target_link_libraries( graphene_chain graphene::chain_plugin graphene::network + graphene::snapshot appbase ) diff --git a/plugins/p2p/p2p_plugin.cpp b/plugins/p2p/p2p_plugin.cpp index a636ed1007..b3bfb6245c 100644 --- a/plugins/p2p/p2p_plugin.cpp +++ b/plugins/p2p/p2p_plugin.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -14,6 +15,7 @@ // ANSI color codes for P2P stats console log messages #define CLOG_CYAN "\033[96m" +#define CLOG_WHITE "\033[97m" #define CLOG_RESET "\033[0m" using std::string; @@ -108,6 +110,14 @@ namespace graphene { void p2p_stats_task(); + // Stale sync detection + bool _stale_sync_enabled = false; + uint32_t _stale_sync_timeout_seconds = 120; + fc::time_point _last_block_received_time; + fc::future _stale_sync_task_done; + + void stale_sync_check_task(); + std::unique_ptr node; chain::plugin &chain; @@ -130,20 +140,20 @@ namespace graphene { bool p2p_plugin_impl::handle_block(const block_message &blk_msg, bool sync_mode, std::vector &) { try { + // Track last block received time for stale sync detection + _last_block_received_time = fc::time_point::now(); + uint32_t head_block_num; chain.db().with_weak_read_lock([&]() { head_block_num = chain.db().head_block_num(); }); + int32_t gap = (int32_t)blk_msg.block.block_num() - (int32_t)head_block_num - 1; if (sync_mode) - fc_ilog(fc::logger::get("sync"), - "chain pushing sync block #${block_num} ${block_hash}, head is ${head}", - ("block_num", blk_msg.block.block_num())("block_hash", blk_msg.block_id)("head", - head_block_num)); + dlog("chain pushing sync block #${block_num} (head: ${head}, gap: ${gap})", + ("block_num", blk_msg.block.block_num())("head", head_block_num)("gap", gap)); else - fc_ilog(fc::logger::get("sync"), - "chain pushing block #${block_num} ${block_hash}, head is ${head}", - ("block_num", blk_msg.block.block_num())("block_hash", blk_msg.block_id)("head", - head_block_num)); + dlog("chain pushing normal block #${block_num} (head: ${head}, gap: ${gap})", + ("block_num", blk_msg.block.block_num())("head", head_block_num)("gap", gap)); try { // When a block is too old for our fork database (e.g. a peer @@ -156,27 +166,40 @@ namespace graphene { if (!sync_mode) { fc::microseconds latency = fc::time_point::now() - blk_msg.block.timestamp; - ilog("Got ${t} transactions on block ${b} by ${w} -- latency: ${l} ms", + ilog(CLOG_WHITE "Got ${t} transactions on block ${b} by ${w} -- latency: ${l} ms" CLOG_RESET, ("t", blk_msg.block.transactions.size())("b", blk_msg.block.block_num())("w", blk_msg.block.witness)("l", latency.count() / 1000)); } return result; } catch (const graphene::chain::block_too_old_exception &e) { - fc_elog(fc::logger::get("sync"), - "Block ${n} is too old for fork database (head=${head}): ${e}", - ("n", blk_msg.block.block_num())("head", head_block_num)("e", e.to_detail_string())); - wlog("Block ${n} is too old for fork database, banning peer", - ("n", blk_msg.block.block_num())); + wlog("Block ${n} is too old for fork database (head=${head}): ${e}", + ("n", blk_msg.block.block_num())("head", head_block_num)("e", e.to_detail_string())); FC_THROW_EXCEPTION(graphene::network::block_older_than_undo_history, "Block is too old for fork database: ${e}", ("e", e.to_detail_string())); + } catch (const graphene::chain::deferred_resize_exception &e) { + // Shared memory resize is deferred. Re-throw as network exception + // so the P2P layer knows this is transient and should not + // penalise the peer or mark the block as accepted. + wlog("Block ${n} deferred due to shared memory resize (head=${head}): ${e}", + ("n", blk_msg.block.block_num())("head", head_block_num)("e", e.to_detail_string())); + FC_THROW_EXCEPTION(graphene::network::deferred_resize_exception, + "Shared memory resize deferred: ${e}", ("e", e.to_detail_string())); + } catch (const graphene::chain::unlinkable_block_exception &e) { + // Chain rejected block from a dead fork whose parent is not + // in fork_db. Convert to network exception so the P2P layer + // can soft-ban the peer (block at/below head) or resync + // (block ahead of head). Micro-fork blocks are NOT caught + // here — they have parents in fork_db and return false normally. + wlog("Block ${n} is from a dead fork (parent not in fork_db, head=${head}): ${e}", + ("n", blk_msg.block.block_num())("head", head_block_num)("e", e.to_detail_string())); + FC_THROW_EXCEPTION(graphene::network::unlinkable_block_exception, + "Block from a dead fork: ${e}", ("e", e.to_detail_string())); } catch (const graphene::network::unlinkable_block_exception &e) { // translate to a graphene::network exception - fc_elog(fc::logger::get("sync"), "Error when pushing block, current head block is ${head}:\n${e}", ("e", e.to_detail_string())("head", head_block_num)); - elog("Error when pushing block:\n${e}", ("e", e.to_detail_string())); - FC_THROW_EXCEPTION(graphene::network::unlinkable_block_exception, "Error when pushing block:\n${e}", ("e", e.to_detail_string())); + elog("Error when pushing block, current head block is ${head}: ${e}", ("e", e.to_detail_string())("head", head_block_num)); + FC_THROW_EXCEPTION(graphene::network::unlinkable_block_exception, "Error when pushing block: ${e}", ("e", e.to_detail_string())); } catch (const fc::exception &e) { - fc_elog(fc::logger::get("sync"), "Error when pushing block, current head block is ${head}:\n${e}", ("e", e.to_detail_string())("head", head_block_num)); - elog("Error when pushing block:\n${e}", ("e", e.to_detail_string())); + elog("Error when pushing block, current head block is ${head}: ${e}", ("e", e.to_detail_string())("head", head_block_num)); throw; } @@ -287,8 +310,8 @@ namespace graphene { // In DLT mode, block data may not be available for blocks // before the dlt_block_log range. This is expected — peer // will get the block from another node. - dlog("Block ${id} not available in DLT mode (no block data for this range)", - ("id", id.item_hash)); + dlog("Block ${id} (num ${num}) not available in DLT mode (no block data for this range)", + ("id", id.item_hash)("num", block_header::num_from_id(id.item_hash))); FC_THROW_EXCEPTION(fc::key_not_found_exception, ""); } elog("Couldn't find block ${id} -- corresponding ID in our chain is ${id2}", @@ -559,6 +582,72 @@ namespace graphene { } } + void p2p_plugin_impl::stale_sync_check_task() { + if (!_stale_sync_enabled || !node) { + return; + } + try { + auto now = fc::time_point::now(); + auto elapsed = now - _last_block_received_time; + auto timeout = fc::seconds(_stale_sync_timeout_seconds); + + if (elapsed > timeout) { + uint32_t head_block = 0; + uint32_t lib_num = 0; + chain.db().with_weak_read_lock([&]() { + head_block = chain.db().head_block_num(); + lib_num = chain.db().get_dynamic_global_properties().last_irreversible_block_num; + }); + + wlog("Stale sync detected: no blocks received for ${s}s (head: ${h}, LIB: ${lib}). " + "Resetting sync from last irreversible block and reconnecting seed peers.", + ("s", _stale_sync_timeout_seconds)("h", head_block)("lib", lib_num)); + + // Reset sync from last irreversible block + if (lib_num > 0 && node) { + block_id_type lib_block_id; + chain.db().with_weak_read_lock([&]() { + lib_block_id = chain.db().get_block_id_for_num(lib_num); + }); + node->sync_from(item_id(graphene::network::block_message_type, lib_block_id), + std::vector()); + ilog("Reset P2P sync from LIB block #${n}", ("n", lib_num)); + + // Force resync with all currently connected peers + node->resync(); + } + + // Reconnect all seed nodes (add_node resets the retry timer, + // connect_to_endpoint initiates connection if not already connected) + for (const auto &seed : seeds) { + try { + ilog("Reconnecting seed node ${s}", ("s", seed)); + node->add_node(seed); + node->connect_to_endpoint(seed); + } catch (const fc::exception &e) { + wlog("Failed to reconnect seed node ${s}: ${e}", + ("s", seed)("e", e.to_detail_string())); + } + } + + // Reset timer to avoid immediate retry + _last_block_received_time = fc::time_point::now(); + } + } catch (const fc::exception &e) { + wlog("Exception in stale sync check task: ${e}", ("e", e.to_detail_string())); + } catch (...) { + wlog("Unknown exception in stale sync check task"); + } + + if (_stale_sync_enabled) { + _stale_sync_task_done = fc::schedule( + [this]() { stale_sync_check_task(); }, + fc::time_point::now() + fc::seconds(30), + "stale_sync_check_task" + ); + } + } + } // detail p2p_plugin::p2p_plugin() { @@ -580,7 +669,12 @@ namespace graphene { ("p2p-stats-enabled", boost::program_options::value()->default_value(true), "Enable periodic logging of P2P peer statistics (ip, port, latency, bytes in, blocked status).") ("p2p-stats-interval", boost::program_options::value()->default_value(300), - "Interval in seconds between P2P peer statistics dumps (default: 300 = 5 minutes)."); + "Interval in seconds between P2P peer statistics dumps (default: 300 = 5 minutes).") + ("p2p-stale-sync-detection", boost::program_options::value()->default_value(false), + "Enable stale sync detection: when no blocks are received for the configured timeout, " + "reset sync from last irreversible block and reconnect seed peers (default: false).") + ("p2p-stale-sync-timeout-seconds", boost::program_options::value()->default_value(120), + "Timeout in seconds after which stale sync detection triggers recovery action (default: 120 = 2 minutes)."); cli.add_options() ("force-validate", boost::program_options::bool_switch()->default_value(false), "Force validation of all transactions. Deprecated in favor of p2p-force-validate") @@ -646,6 +740,19 @@ namespace graphene { wlog("p2p-stats-interval must be > 0, using default of 300 seconds"); } } + + if (options.count("p2p-stale-sync-detection")) { + my->_stale_sync_enabled = options.at("p2p-stale-sync-detection").as(); + } + + if (options.count("p2p-stale-sync-timeout-seconds")) { + uint32_t stale_timeout = options.at("p2p-stale-sync-timeout-seconds").as(); + if (stale_timeout > 0) { + my->_stale_sync_timeout_seconds = stale_timeout; + } else { + wlog("p2p-stale-sync-timeout-seconds must be > 0, using default of 120 seconds"); + } + } } void p2p_plugin::plugin_startup() { @@ -674,6 +781,17 @@ namespace graphene { my->node->listen_to_p2p_network(); my->node->connect_to_p2p_network(); + + // Register trusted snapshot peer IPs for reduced soft-ban (5 min vs 1 hour) + auto* snap_plug = appbase::app().find_plugin(); + if (snap_plug) { + auto trusted_eps = snap_plug->get_trusted_snapshot_peers(); + if (!trusted_eps.empty()) { + ilog("Registering ${n} trusted snapshot peer(s) for reduced P2P soft-ban", ("n", trusted_eps.size())); + my->node->set_trusted_peer_endpoints(trusted_eps); + } + } + block_id_type block_id; my->chain.db().with_weak_read_lock([&]() { block_id = my->chain.db().head_block_id(); @@ -690,6 +808,16 @@ namespace graphene { "p2p_stats_task" ); } + + if (my->_stale_sync_enabled) { + my->_last_block_received_time = fc::time_point::now(); + ilog("P2P stale sync detection enabled, timeout: ${s}s", ("s", my->_stale_sync_timeout_seconds)); + my->_stale_sync_task_done = fc::schedule( + [this]() { my->stale_sync_check_task(); }, + fc::time_point::now() + fc::seconds(30), + "stale_sync_check_task" + ); + } }).wait(); ilog("P2P Plugin started"); } @@ -698,13 +826,22 @@ namespace graphene { ilog("Shutting down P2P Plugin"); if (my->stats_enabled && my->_stats_task_done.valid()) { try { - my->_stats_task_done.cancel_and_wait("p2p_plugin::plugin_shutdown()"); + my->_stats_task_done.cancel_and_wait("p2p_plugin::plugin_shutdown() stats"); } catch (const fc::exception &e) { wlog("Exception canceling P2P stats task: ${e}", ("e", e.to_detail_string())); } catch (...) { wlog("Unknown exception canceling P2P stats task"); } } + if (my->_stale_sync_enabled && my->_stale_sync_task_done.valid()) { + try { + my->_stale_sync_task_done.cancel_and_wait("p2p_plugin::plugin_shutdown() stale_sync"); + } catch (const fc::exception &e) { + wlog("Exception canceling stale sync check task: ${e}", ("e", e.to_detail_string())); + } catch (...) { + wlog("Unknown exception canceling stale sync check task"); + } + } my->node->close(); my->p2p_thread.quit(); my->node.reset(); diff --git a/plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp b/plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp index 16b9346665..09472cb29b 100644 --- a/plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp +++ b/plugins/snapshot/include/graphene/plugins/snapshot/plugin.hpp @@ -83,6 +83,10 @@ namespace graphene { namespace plugins { namespace snapshot { /// Create snapshot at the given path void create_snapshot_at(const std::string& path); + /// Returns the list of trusted-snapshot-peer endpoints (IP:port strings) + /// Used by the P2P plugin to apply reduced soft-ban duration for trusted peers + const std::vector& get_trusted_snapshot_peers() const; + private: class plugin_impl; std::unique_ptr my; diff --git a/plugins/snapshot/plugin.cpp b/plugins/snapshot/plugin.cpp index 4f7ee08ef4..27117975b2 100644 --- a/plugins/snapshot/plugin.cpp +++ b/plugins/snapshot/plugin.cpp @@ -1135,6 +1135,12 @@ void snapshot_plugin::plugin_impl::load_snapshot(const fc::path& input_path) { fc::variant snapshot_var = fc::json::from_string(json_content); FC_ASSERT(snapshot_var.is_object(), "Snapshot file is not a valid JSON object"); + // Free decompressed JSON immediately after parsing to reduce peak memory. + // For large snapshots, json_content can be hundreds of MB that would + // otherwise stay alive alongside the parsed variant tree. + json_content.clear(); + json_content.shrink_to_fit(); + auto snapshot = snapshot_var.get_object(); // Parse and validate header @@ -1165,17 +1171,28 @@ void snapshot_plugin::plugin_impl::load_snapshot(const fc::path& input_path) { ilog(CLOG_ORANGE "Snapshot checksum verified" CLOG_RESET); std::cerr << " Snapshot checksum verified OK\n"; + // Free the re-serialized state JSON immediately after checksum verification + // to reduce peak memory. state_json is a full copy of the state that is + // no longer needed once the checksum is verified. + state_json.clear(); + state_json.shrink_to_fit(); + const auto& state = snapshot["state"].get_object(); // Import objects in dependency order std::cerr << " Importing state into database...\n"; db.with_strong_write_lock([&]() { - // Clear genesis-created multi-instance objects before importing. + // Clear ALL existing multi-instance objects before importing. + // This is critical for the hot-reload path (stalled sync detection) + // where load_snapshot() is called on an already-populated database. + // For initial load (fresh DB from open_from_snapshot), these indexes + // are empty and the loops are no-ops. + // // init_genesis() creates initial accounts, authorities, witnesses, and metadata // that would conflict with the snapshot's objects. Singletons (dgp, witness_schedule, // hardfork_property) and block_summaries are handled separately (modify-in-place). { - ilog(CLOG_ORANGE "Clearing genesis objects before snapshot import..." CLOG_RESET); + ilog(CLOG_ORANGE "Clearing existing objects before snapshot import..." CLOG_RESET); const auto& acc_idx = db.get_index().indices(); while (!acc_idx.empty()) { db.remove(*acc_idx.begin()); } @@ -1187,6 +1204,83 @@ void snapshot_plugin::plugin_impl::load_snapshot(const fc::path& input_path) { const auto& meta_idx = db.get_index().indices(); while (!meta_idx.empty()) { db.remove(*meta_idx.begin()); } + + // Also clear all other multi-instance object types that may exist + // from a previous snapshot (hot-reload path). These are no-ops on + // a fresh database. + const auto& wv_idx = db.get_index().indices(); + while (!wv_idx.empty()) { db.remove(*wv_idx.begin()); } + + const auto& bs_idx = db.get_index().indices(); + while (!bs_idx.empty()) { db.remove(*bs_idx.begin()); } + + const auto& cnt_idx = db.get_index().indices(); + while (!cnt_idx.empty()) { db.remove(*cnt_idx.begin()); } + + const auto& cv_idx = db.get_index().indices(); + while (!cv_idx.empty()) { db.remove(*cv_idx.begin()); } + + const auto& bpv_idx = db.get_index().indices(); + while (!bpv_idx.empty()) { db.remove(*bpv_idx.begin()); } + + const auto& tx_idx = db.get_index().indices(); + while (!tx_idx.empty()) { db.remove(*tx_idx.begin()); } + + const auto& vd_idx = db.get_index().indices(); + while (!vd_idx.empty()) { db.remove(*vd_idx.begin()); } + + const auto& vde_idx = db.get_index().indices(); + while (!vde_idx.empty()) { db.remove(*vde_idx.begin()); } + + const auto& fvd_idx = db.get_index().indices(); + while (!fvd_idx.empty()) { db.remove(*fvd_idx.begin()); } + + const auto& wvr_idx = db.get_index().indices(); + while (!wvr_idx.empty()) { db.remove(*wvr_idx.begin()); } + + const auto& esc_idx = db.get_index().indices(); + while (!esc_idx.empty()) { db.remove(*esc_idx.begin()); } + + const auto& prop_idx = db.get_index().indices(); + while (!prop_idx.empty()) { db.remove(*prop_idx.begin()); } + + const auto& ra_idx = db.get_index().indices(); + while (!ra_idx.empty()) { db.remove(*ra_idx.begin()); } + + const auto& cr_idx = db.get_index().indices(); + while (!cr_idx.empty()) { db.remove(*cr_idx.begin()); } + + const auto& cv2_idx = db.get_index().indices(); + while (!cv2_idx.empty()) { db.remove(*cv2_idx.begin()); } + + const auto& inv_idx = db.get_index().indices(); + while (!inv_idx.empty()) { db.remove(*inv_idx.begin()); } + + const auto& ase_idx = db.get_index().indices(); + while (!ase_idx.empty()) { db.remove(*ase_idx.begin()); } + + const auto& ps_idx = db.get_index().indices(); + while (!ps_idx.empty()) { db.remove(*ps_idx.begin()); } + + const auto& psb_idx = db.get_index().indices(); + while (!psb_idx.empty()) { db.remove(*psb_idx.begin()); } + + const auto& wpe_idx = db.get_index().indices(); + while (!wpe_idx.empty()) { db.remove(*wpe_idx.begin()); } + + const auto& ct_idx = db.get_index().indices(); + while (!ct_idx.empty()) { db.remove(*ct_idx.begin()); } + + const auto& mah_idx = db.get_index().indices(); + while (!mah_idx.empty()) { db.remove(*mah_idx.begin()); } + + const auto& arr_idx = db.get_index().indices(); + while (!arr_idx.empty()) { db.remove(*arr_idx.begin()); } + + const auto& cra_idx = db.get_index().indices(); + while (!cra_idx.empty()) { db.remove(*cra_idx.begin()); } + + ilog(CLOG_ORANGE "Existing objects cleared" CLOG_RESET); } // CRITICAL - singleton objects (modify existing) if (state.contains("dynamic_global_property")) { @@ -1362,7 +1456,10 @@ void snapshot_plugin::plugin_impl::load_snapshot(const fc::path& input_path) { ilog(CLOG_ORANGE "All objects imported successfully" CLOG_RESET); }); - // Seed fork_db with head block from snapshot + // Seed fork_db with head block from snapshot. + // Reset fork_db first to clear stale entries from a previous snapshot + // (important for the hot-reload path during stalled sync detection). + db.get_fork_db().reset(); if (state.contains("fork_db_head_block")) { auto head_block = state["fork_db_head_block"].as(); db.get_fork_db().start_block(head_block); @@ -1451,12 +1548,10 @@ void snapshot_plugin::plugin_impl::on_applied_block(const graphene::protocol::si // Check --snapshot-at-block: one-time snapshot at exact block if (snapshot_at_block > 0 && block_num == snapshot_at_block && !is_syncing) { fc::path output; - if (!snapshot_dir.empty()) { - output = fc::path(snapshot_dir) / ("snapshot-block-" + std::to_string(block_num) + ".vizjson"); - } else if (!create_snapshot_path.empty()) { + if (!create_snapshot_path.empty()) { output = fc::path(create_snapshot_path); } else { - output = fc::path("snapshot-block-" + std::to_string(block_num) + ".vizjson"); + output = fc::path(snapshot_dir) / ("snapshot-block-" + std::to_string(block_num) + ".vizjson"); } if (is_witness_producing_soon()) { ilog(CLOG_GREEN "Deferring snapshot-at-block ${b}: witness scheduled to produce next block" CLOG_RESET, ("b", block_num)); @@ -1470,7 +1565,7 @@ void snapshot_plugin::plugin_impl::on_applied_block(const graphene::protocol::si // Check --snapshot-every-n-blocks: periodic snapshots (only when synced) if (snapshot_every_n_blocks > 0 && block_num % snapshot_every_n_blocks == 0 && !is_syncing) { - std::string dir = snapshot_dir.empty() ? "." : snapshot_dir; + std::string dir = snapshot_dir; fc::path output = fc::path(dir) / ("snapshot-block-" + std::to_string(block_num) + ".vizjson"); if (is_witness_producing_soon()) { ilog(CLOG_GREEN "Deferring periodic snapshot at block ${b}: witness scheduled to produce next block" CLOG_RESET, ("b", block_num)); @@ -1747,7 +1842,7 @@ std::tuple> read_message_with_timeout( // ============================================================================ fc::path snapshot_plugin::plugin_impl::find_latest_snapshot() { - std::string dir = snapshot_dir.empty() ? "." : snapshot_dir; + std::string dir = snapshot_dir; fc::path dir_path(dir); if (!fc::exists(dir_path) || !fc::is_directory(dir_path)) { @@ -1791,7 +1886,7 @@ fc::path snapshot_plugin::plugin_impl::find_latest_snapshot() { } void snapshot_plugin::plugin_impl::cleanup_old_snapshots() { - if (snapshot_max_age_days == 0 || snapshot_dir.empty()) return; + if (snapshot_max_age_days == 0) return; std::string dir = snapshot_dir; if (!fc::exists(fc::path(dir)) || !fc::is_directory(fc::path(dir))) return; @@ -2515,7 +2610,7 @@ std::string snapshot_plugin::plugin_impl::download_snapshot_from_peers() { ("s", best->compressed_size)("l", MAX_SNAPSHOT_SIZE)); // Create temp file for download - std::string dir = snapshot_dir.empty() ? "." : snapshot_dir; + std::string dir = snapshot_dir; if (!boost::filesystem::exists(dir)) { boost::filesystem::create_directories(dir); ilog(CLOG_YELLOW "Created snapshot directory: ${d}" CLOG_RESET, ("d", dir)); @@ -2824,7 +2919,7 @@ void snapshot_plugin::set_program_options( ("snapshot-every-n-blocks", bpo::value()->default_value(0), "Automatically create a snapshot every N blocks (0 = disabled)") ("snapshot-dir", bpo::value()->default_value(""), - "Directory for auto-generated snapshot files") + "Directory for auto-generated snapshot files (default: /snapshots)") ("snapshot-max-age-days", bpo::value()->default_value(90), "Delete snapshots older than N days after creating a new one (0 = disabled)") ("allow-snapshot-serving", bpo::value()->default_value(false), @@ -2875,10 +2970,17 @@ void snapshot_plugin::plugin_initialize(const bpo::variables_map& options) { // because find_latest_snapshot() reads snapshot_dir to locate files. if (options.count("snapshot-dir")) { my->snapshot_dir = options.at("snapshot-dir").as(); - if (!my->snapshot_dir.empty()) { - ilog("Snapshot directory: ${d}", ("d", my->snapshot_dir)); - } } + // If snapshot-dir is not set, default to /snapshots + if (my->snapshot_dir.empty()) { + my->snapshot_dir = (appbase::app().data_dir() / "snapshots").string(); + } + // Ensure the snapshot directory exists + if (!boost::filesystem::exists(my->snapshot_dir)) { + boost::filesystem::create_directories(my->snapshot_dir); + ilog("Created default snapshot directory: ${d}", ("d", my->snapshot_dir)); + } + ilog("Snapshot directory: ${d}", ("d", my->snapshot_dir)); my->snapshot_auto_latest = options.at("snapshot-auto-latest").as(); if (my->snapshot_auto_latest) { @@ -3167,4 +3269,9 @@ void snapshot_plugin::create_snapshot_at(const std::string& path) { // Note: create_snapshot() already calls update_snapshot_cache() } +const std::vector& snapshot_plugin::get_trusted_snapshot_peers() const { + static const std::vector empty; + return my ? my->trusted_snapshot_peers : empty; +} + } } } // graphene::plugins::snapshot diff --git a/plugins/witness/witness.cpp b/plugins/witness/witness.cpp index 565ae4e7d5..e2cdbdd4a7 100644 --- a/plugins/witness/witness.cpp +++ b/plugins/witness/witness.cpp @@ -259,7 +259,7 @@ namespace graphene { auto& db = pimpl->database(); fc::time_point now_fine = graphene::time::now(); - fc::time_point_sec now = now_fine + fc::microseconds(500000); + fc::time_point_sec now = now_fine + fc::microseconds(250000); uint32_t slot = db.get_slot_at_time(now); if (slot == 0) { @@ -297,12 +297,14 @@ namespace graphene { } void witness_plugin::impl::schedule_production_loop() { - //Schedule for the next second's tick regardless of chain state - // If we would wait less than 50ms, wait for the whole second. + //Schedule for the next 250ms tick regardless of chain state + // With +250ms look-ahead in maybe_produce_block(), the tick at + // T_slot - 250ms aligns now exactly to the slot boundary for zero-lag production. + // If we would wait less than 50ms, wait for the whole 250ms period. int64_t ntp_microseconds = graphene::time::now().time_since_epoch().count(); - int64_t next_microseconds = 1000000 - ( ntp_microseconds % 1000000 ); + int64_t next_microseconds = 250000 - ( ntp_microseconds % 250000 ); if (next_microseconds < 50000) { // we must sleep for at least 50ms - next_microseconds += 1000000 ; + next_microseconds += 250000 ; } production_timer_.expires_from_now( posix_time::microseconds(next_microseconds) ); @@ -376,7 +378,7 @@ namespace graphene { block_production_condition::block_production_condition_enum witness_plugin::impl::maybe_produce_block(fc::mutable_variant_object &capture) { auto &db = database(); fc::time_point now_fine = graphene::time::now(); - fc::time_point_sec now = now_fine + fc::microseconds( 500000 ); + fc::time_point_sec now = now_fine + fc::microseconds( 250000 ); // === HARDFORK 12: THREE-STATE SAFETY ENFORCEMENT === const auto &dgp = db.get_dynamic_global_properties(); diff --git a/share/vizd/config/config.ini b/share/vizd/config/config.ini index ca54629da4..573daf82dd 100644 --- a/share/vizd/config/config.ini +++ b/share/vizd/config/config.ini @@ -11,6 +11,13 @@ p2p-seed-node = 80.87.202.57:2001 # on1x vizd-snapshot p2p-seed-node = 95.217.177.173:2001 # id p2p-seed-node = 37.27.115.162:2001 # lex +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_debug.ini b/share/vizd/config/config_debug.ini index 6a1693b61b..061efec20e 100644 --- a/share/vizd/config/config_debug.ini +++ b/share/vizd/config/config_debug.ini @@ -7,6 +7,13 @@ # P2P nodes to connect to on startup (may specify multiple times) # p2p-seed-node = +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_debug_mongo.ini b/share/vizd/config/config_debug_mongo.ini index 8281fd81d7..f9361e9603 100644 --- a/share/vizd/config/config_debug_mongo.ini +++ b/share/vizd/config/config_debug_mongo.ini @@ -7,6 +7,13 @@ # P2P nodes to connect to on startup (may specify multiple times) # p2p-seed-node = +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_mongo.ini b/share/vizd/config/config_mongo.ini index 143db46514..e44af3b192 100644 --- a/share/vizd/config/config_mongo.ini +++ b/share/vizd/config/config_mongo.ini @@ -7,6 +7,13 @@ p2p-endpoint = 0.0.0.0:4243 # P2P nodes to connect to on startup (may specify multiple times) # p2p-seed-node = +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_stock_exchange.ini b/share/vizd/config/config_stock_exchange.ini index 5ebae1af4f..83a81c6252 100644 --- a/share/vizd/config/config_stock_exchange.ini +++ b/share/vizd/config/config_stock_exchange.ini @@ -7,6 +7,13 @@ p2p-endpoint = 0.0.0.0:4243 # P2P nodes to connect to on startup (may specify multiple times) # p2p-seed-node = +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_testnet.ini b/share/vizd/config/config_testnet.ini index bf38d33c8a..7bce1328f8 100644 --- a/share/vizd/config/config_testnet.ini +++ b/share/vizd/config/config_testnet.ini @@ -7,6 +7,13 @@ p2p-endpoint = 0.0.0.0:4243 # P2P nodes to connect to on startup (may specify multiple times) # p2p-seed-node = +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/share/vizd/config/config_witness.ini b/share/vizd/config/config_witness.ini index 838bce6967..d71c10b1e3 100644 --- a/share/vizd/config/config_witness.ini +++ b/share/vizd/config/config_witness.ini @@ -11,6 +11,13 @@ p2p-seed-node = 80.87.202.57:2001 # on1x vizd-snapshot p2p-seed-node = 95.217.177.173:2001 # id p2p-seed-node = 37.27.115.162:2001 # lex +# Enable stale sync detection: when no blocks are received for the configured timeout, +# the node resets sync from the last irreversible block and reconnects all seed peers. +# p2p-stale-sync-detection = false + +# Timeout in seconds before stale sync detection triggers recovery (default: 120 = 2 minutes). +# p2p-stale-sync-timeout-seconds = 120 + # Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. # checkpoint = diff --git a/thirdparty/fc b/thirdparty/fc index 7ada0a5392..fa5b5001af 160000 --- a/thirdparty/fc +++ b/thirdparty/fc @@ -1 +1 @@ -Subproject commit 7ada0a5392abb1feb2237ff25691509da2df8a69 +Subproject commit fa5b5001afcdbb60667dc3a4db4acd5f907430e8