origintrail-node
Version:
OriginTrail Node - Decentralized Knowledge Graph Node Library
1,111 lines (944 loc) • 38.4 kB
JavaScript
import { BigNumber, ethers } from 'ethers';
import { createRequire } from 'module';
export const WS_RPC_PROVIDER_PRIORITY = 2;
export const HTTP_RPC_PROVIDER_PRIORITY = 1;
export const FALLBACK_PROVIDER_QUORUM = 1;
export const PUBLISH_BATCH_SIZE = 20;
export const PUBLISH_MIN_NUM_OF_NODE_REPLICATIONS = 3;
export const GET_BATCH_SIZE = 2;
export const GET_MIN_NUM_OF_NODE_REPLICATIONS = 1;
export const FINALITY_BATCH_SIZE = 1;
export const FINALITY_MIN_NUM_OF_NODE_REPLICATIONS = 1;
export const ASK_BATCH_SIZE = 20;
export const RPC_PROVIDER_STALL_TIMEOUT = 60 * 1000;
export const SIX_HOURS_IN_MS = 6 * 60 * 60 * 1000;
export const UINT256_MAX_BN = ethers.constants.MaxUint256;
export const UINT128_MAX_BN = BigNumber.from(2).pow(128).sub(1);
export const UINT64_MAX_BN = BigNumber.from(2).pow(64).sub(1);
export const UINT40_MAX_BN = BigNumber.from(2).pow(40).sub(1);
export const UINT32_MAX_BN = BigNumber.from(2).pow(32).sub(1);
export const ONE_ETHER = BigNumber.from('1000000000000000000');
export const HASH_RING_SIZE = ethers.constants.MaxUint256;
export const STAKE_UINT256_MULTIPLIER_BN = UINT256_MAX_BN.div(500000000);
export const UINT256_UINT32_DIVISOR_BN = UINT256_MAX_BN.div(UINT32_MAX_BN);
export const ZERO_PREFIX = '0x';
export const ZERO_BYTES32 = ethers.constants.HashZero;
export const ZERO_ADDRESS = ethers.constants.AddressZero;
export const SCHEMA_CONTEXT = 'http://schema.org/';
export const PRIVATE_ASSERTION_PREDICATE =
'https://ontology.origintrail.io/dkg/1.0#privateMerkleRoot';
export const TRIPLE_ANNOTATION_LABEL_PREDICATE = 'https://ontology.origintrail.io/dkg/1.0#label';
export const PRIVATE_RESOURCE_PREDICATE =
'https://ontology.origintrail.io/dkg/1.0#representsPrivateResource';
export const DKG_METADATA_PREDICATES = {
PUBLISHED_BY: 'https://ontology.origintrail.io/dkg/1.0#publishedBy',
PUBLISHED_AT_BLOCK: 'https://ontology.origintrail.io/dkg/1.0#publishedAtBlock',
PUBLISH_TX: 'https://ontology.origintrail.io/dkg/1.0#publishTx',
PUBLISH_TIME: 'https://ontology.origintrail.io/dkg/1.0#publishTime',
BLOCK_TIME: 'https://ontology.origintrail.io/dkg/1.0#blockTime',
};
export const PRIVATE_HASH_SUBJECT_PREFIX = 'https://ontology.origintrail.io/dkg/1.0#metadata-hash:';
export const UAL_PREDICATE = '<https://ontology.origintrail.io/dkg/1.0#UAL>';
export const COMMIT_BLOCK_DURATION_IN_BLOCKS = 5;
export const COMMITS_DELAY_BETWEEN_NODES_IN_BLOCKS = 5;
export const TRANSACTION_POLLING_TIMEOUT_MILLIS = 300 * 1000;
export const SOLIDITY_ERROR_STRING_PREFIX = '0x08c379a0';
export const SOLIDITY_PANIC_CODE_PREFIX = '0x4e487b71';
export const SOLIDITY_PANIC_REASONS = {
0x1: 'Assertion error',
0x11: 'Arithmetic operation underflowed or overflowed outside of an unchecked block',
0x12: 'Division or modulo division by zero',
0x21: 'Tried to convert a value into an enum, but the value was too big or negative',
0x22: 'Incorrectly encoded storage byte array',
0x31: '.pop() was called on an empty array',
0x32: 'Array accessed at an out-of-bounds or negative index',
0x41: 'Too much memory was allocated, or an array was created that is too large',
0x51: 'Called a zero-initialized variable of internal function type',
};
export const LIBP2P_KEY_DIRECTORY = 'libp2p';
export const LIBP2P_KEY_FILENAME = 'privateKey';
export const BLS_KEY_DIRECTORY = 'bls';
export const BLS_KEY_FILENAME = 'secretKey';
export const TRIPLE_STORE_CONNECT_MAX_RETRIES = 10;
export const COMMAND_PRIORITY = {
HIGHEST: 0,
HIGH: 1,
MEDIUM: 5,
LOW: 10,
LOWEST: 20,
};
export const DEFAULT_COMMAND_PRIORITY = COMMAND_PRIORITY.MEDIUM;
export const DEFAULT_BLOCKCHAIN_EVENT_SYNC_PERIOD_IN_MILLS = 15 * 24 * 60 * 60 * 1000; // 15 days
export const MAX_BLOCKCHAIN_EVENT_SYNC_OF_HISTORICAL_BLOCKS_IN_MILLS = 60 * 60 * 1000; // 1 hour
export const MAXIMUM_NUMBERS_OF_BLOCKS_TO_FETCH = 50;
export const TRANSACTION_QUEUE_CONCURRENCY = 1;
export const TRIPLE_STORE_CONNECT_RETRY_FREQUENCY = 10;
export const MAX_FILE_SIZE = 10000000;
export const GET_STATES = { LATEST: 'LATEST', FINALIZED: 'LATEST_FINALIZED' };
export const BYTES_IN_KILOBYTE = 1024;
export const BYTES_IN_MEGABYTE = BYTES_IN_KILOBYTE * BYTES_IN_KILOBYTE;
export const PUBLISH_TYPES = { ASSERTION: 'assertion', ASSET: 'asset', INDEX: 'index' };
export const DEFAULT_GET_STATE = GET_STATES.LATEST;
export const PEER_OFFLINE_LIMIT = 24 * 60 * 60 * 1000;
export const CONTENT_ASSET_HASH_FUNCTION_ID = 1;
export const CHUNK_BYTE_SIZE = 32;
export const PARANET_SYNC_KA_COUNT = 50;
export const PARANET_SYNC_RETRIES_LIMIT = 3;
export const PARANET_SYNC_RETRY_DELAY_MS = 60 * 1000;
export const PARANET_ACCESS_POLICY = {
OPEN: 0,
PERMISSIONED: 1,
};
export const TRIPLE_STORE_REPOSITORIES = {
DKG: 'dkg',
PUBLIC_CURRENT: 'publicCurrent',
PRIVATE_CURRENT: 'privateCurrent',
};
export const BASE_NAMED_GRAPHS = {
UNIFIED: 'unified:graph',
HISTORICAL_UNIFIED: 'historical-unified:graph',
METADATA: 'metadata:graph',
CURRENT: 'current:graph',
};
export const REQUIRED_MODULES = [
'repository',
'httpClient',
'network',
'validation',
'blockchain',
'tripleStore',
'blockchainEventsService',
];
/**
* Triple store media types
* @type {{APPLICATION_JSON: string, N_QUADS: string, SPARQL_RESULTS_JSON: string, LD_JSON: string}}
*/
export const MEDIA_TYPES = {
LD_JSON: 'application/ld+json',
N_QUADS: 'application/n-quads',
SPARQL_RESULTS_JSON: 'application/sparql-results+json',
JSON: 'application/json',
};
/**
* XML data types
* @type {{FLOAT: string, DECIMAL: string, DOUBLE: string, BOOLEAN: string, INTEGER: string}}
*/
export const XML_DATA_TYPES = {
DECIMAL: 'http://www.w3.org/2001/XMLSchema#decimal',
FLOAT: 'http://www.w3.org/2001/XMLSchema#float',
DOUBLE: 'http://www.w3.org/2001/XMLSchema#double',
INTEGER: 'http://www.w3.org/2001/XMLSchema#integer',
BOOLEAN: 'http://www.w3.org/2001/XMLSchema#boolean',
};
export const MIN_NODE_VERSION = 16;
export const NETWORK_API_RATE_LIMIT = {
TIME_WINDOW_MILLS: 1 * 60 * 1000,
MAX_NUMBER: 100,
};
export const NETWORK_API_SPAM_DETECTION = {
TIME_WINDOW_MILLS: 1 * 60 * 1000,
MAX_NUMBER: 150,
};
export const NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES = 60;
export const HIGH_TRAFFIC_OPERATIONS_NUMBER_PER_HOUR = 16000;
export const SHARDING_TABLE_CHECK_COMMAND_FREQUENCY_MILLS = 10 * 1000; // 10 seconds
export const PARANET_SYNC_FREQUENCY_MILLS = 1 * 60 * 1000;
export const SEND_TELEMETRY_COMMAND_FREQUENCY_MINUTES = 15;
export const PEER_RECORD_UPDATE_DELAY = 30 * 60 * 1000; // 30 minutes
export const DEFAULT_COMMAND_CLEANUP_TIME_MILLS = 4 * 24 * 60 * 60 * 1000;
export const REMOVE_SESSION_COMMAND_DELAY = 2 * 60 * 1000;
export const OPERATION_IDS_COMMAND_CLEANUP_TIME_MILLS = 24 * 60 * 60 * 1000;
export const GET_LATEST_SERVICE_AGREEMENT_FREQUENCY_MILLS = 30 * 1000;
export const DIAL_PEERS_COMMAND_FREQUENCY_MILLS = 30 * 1000;
export const DIAL_PEERS_CONCURRENCY = 10;
export const MIN_DIAL_FREQUENCY_MILLIS = 60 * 60 * 1000;
export const PERMANENT_COMMANDS = [
'eventListenerCommand',
'otnodeUpdateCommand',
'sendTelemetryCommand',
'startParanetSyncCommands',
'dialPeersCommand',
'shardingTableCheckCommand',
'commandsCleanerCommand',
'operationIdCleanerCommand',
'blockchainEventCleanerCommand',
'getCleanerCommand',
'getResponseCleanerCommand',
'publishCleanerCommand',
'publishResponseCleanerCommand',
'pendingStorageCleanerCommand',
'finalityCleanerCommand',
'finalityResponseCleanerCommand',
'askCleanerCommand',
'askResponseCleanerCommand',
'batchGetCleanerCommand',
];
export const MAX_COMMAND_DELAY_IN_MILLS = 14400 * 60 * 1000; // 10 days
export const DEFAULT_COMMAND_REPEAT_INTERVAL_IN_MILLS = 5000; // 5 seconds
export const DEFAULT_COMMAND_DELAY_IN_MILLS = 60 * 1000; // 60 seconds
export const TRANSACTION_PRIORITY = {
HIGHEST: 0,
HIGH: 1,
MEDIUM: 5,
LOW: 10,
LOWEST: 20,
};
export const V0_PRIVATE_ASSERTION_PREDICATE =
'https://ontology.origintrail.io/dkg/1.0#privateAssertionID';
export const DKG_PREDICATE = 'https://ontology.origintrail.io/dkg/1.0#';
export const HAS_NAMED_GRAPH_SUFFIX = 'hasNamedGraph';
export const HAS_KNOWLEDGE_ASSET_SUFFIX = 'hasKnowledgeAsset';
const require = createRequire(import.meta.url);
export const ABIs = {
KnowledgeCollection: require('dkg-evm-module/abi/KnowledgeCollection.json'),
KnowledgeCollectionStorage: require('dkg-evm-module/abi/KnowledgeCollectionStorage.json'),
Staking: require('dkg-evm-module/abi/Staking.json'),
Token: require('dkg-evm-module/abi/Token.json'),
Hub: require('dkg-evm-module/abi/Hub.json'),
IdentityStorage: require('dkg-evm-module/abi/IdentityStorage.json'),
ParametersStorage: require('dkg-evm-module/abi/ParametersStorage.json'),
Profile: require('dkg-evm-module/abi/Profile.json'),
ProfileStorage: require('dkg-evm-module/abi/ProfileStorage.json'),
ShardingTable: require('dkg-evm-module/abi/ShardingTable.json'),
ShardingTableStorage: require('dkg-evm-module/abi/ShardingTableStorage.json'),
ParanetsRegistry: require('dkg-evm-module/abi/ParanetsRegistry.json'),
ParanetKnowledgeCollectionsRegistry: require('dkg-evm-module/abi/ParanetKnowledgeCollectionsRegistry.json'),
AskStorage: require('dkg-evm-module/abi/AskStorage.json'),
Chronos: require('dkg-evm-module/abi/Chronos.json'),
Paranet: require('dkg-evm-module/abi/Paranet.json'),
RandomSampling: require('dkg-evm-module/abi/RandomSampling.json'),
RandomSamplingStorage: require('dkg-evm-module/abi/RandomSamplingStorage.json'),
DelegatorsInfo: require('dkg-evm-module/abi/DelegatorsInfo.json'),
};
export const CONTRACT_FUNCTION_PRIORITY = {};
export const COMMAND_RETRIES = {};
export const SIMPLE_ASSET_SYNC_PARAMETERS = {
GET_RESULT_POLLING_INTERVAL_MILLIS: 1 * 1000,
GET_RESULT_POLLING_MAX_ATTEMPTS: 30,
};
export const PARANET_SYNC_PARAMETERS = {
GET_RESULT_POLLING_INTERVAL_MILLIS: 1 * 1000,
GET_RESULT_POLLING_MAX_ATTEMPTS: 300,
};
export const COMMAND_TX_GAS_INCREASE_FACTORS = {
SUBMIT_COMMIT: 1.2,
SUBMIT_UPDATE_COMMIT: 1.2,
SUBMIT_PROOFS: 1.2,
};
export const MIGRATION_FLAG_PATH = '.enrichment_migration_done_dkg';
export const CONTRACT_FUNCTION_GAS_LIMIT_INCREASE_FACTORS = {};
export const GNOSIS_DEFAULT_GAS_PRICE = {
TESTNET: 1,
MAINNET: 1,
};
export const NEURO_DEFAULT_GAS_PRICE = {
TESTNET: 8,
MAINNET: 8,
};
export const CONTRACT_FUNCTION_FIXED_GAS_PRICE = {};
export const WEBSOCKET_PROVIDER_OPTIONS = {
reconnect: {
auto: true,
delay: 1000, // ms
maxAttempts: 3,
},
clientConfig: {
keepalive: true,
keepaliveInterval: 30 * 1000, // ms
},
};
export const TRIPLE_STORE_IMPLEMENTATION = {
BLAZEGRAPH: 'Blazegraph',
GRAPHDB: 'GraphDB',
FUSEKI: 'Fuseki',
NEPTUNE: 'Neptune',
};
export const NETWORK_MESSAGE_TYPES = {
REQUESTS: {
PROTOCOL_REQUEST: 'PROTOCOL_REQUEST',
},
RESPONSES: {
ACK: 'ACK',
NACK: 'NACK',
BUSY: 'BUSY',
},
};
export const PARANET_NODES_ACCESS_POLICIES = ['OPEN', 'PERMISSIONED'];
export const NETWORK_MESSAGE_TIMEOUT_MILLS = {
PUBLISH: {
REQUEST: 15 * 1000,
},
UPDATE: {
REQUEST: 60 * 1000,
},
GET: {
REQUEST: 15 * 1000,
},
ASK: {
REQUEST: 60 * 1000,
},
FINALITY: {
REQUEST: 60 * 1000,
},
BATCH_GET: {
REQUEST: 30 * 1000,
},
};
export const MAX_OPEN_SESSIONS = 10;
export const ERROR_TYPE = {
EVENT_LISTENER_ERROR: 'EventListenerError',
BLOCKCHAIN_EVENT_LISTENER_ERROR: 'BlockchainEventListenerError',
DIAL_PROTOCOL_ERROR: 'DialProtocolError',
VALIDATE_ASSET_ERROR: 'ValidateAssetError',
NETWORK_PROTOCOL_ERROR: 'NetworkProtocolError',
PUBLISH: {
PUBLISH_START_ERROR: 'PublishStartError',
PUBLISH_ROUTE_ERROR: 'PublishRouteError',
PUBLISH_NETWORK_START_ERROR: 'PublishNetworkStartError',
PUBLISH_VALIDATE_ASSET_ERROR: 'PublishValidateAssetError',
PUBLISH_LOCAL_STORE_ERROR: 'PublishLocalStoreError',
PUBLISH_LOCAL_STORE_REMOTE_ERROR: 'PublishLocalStoreRemoteError',
PUBLISH_FIND_NODES_ERROR: 'PublishFindNodesError',
PUBLISH_STORE_REQUEST_ERROR: 'PublishStoreRequestError',
PUBLISH_VALIDATE_ASSERTION_METADATA_ERROR: 'PublishValidateAssertionMetadataError',
PUBLISH_ERROR: 'PublishError',
},
STORE_ASSERTION_ERROR: 'StoreAssertionError',
UPDATE: {
UPDATE_INIT_ERROR: 'UpdateInitError',
UPDATE_REQUEST_ERROR: 'UpdateRequestError',
UPDATE_START_ERROR: 'UpdateStartError',
UPDATE_ROUTE_ERROR: 'UpdateRouteError',
UPDATE_LOCAL_STORE_ERROR: 'UpdateLocalStoreError',
UPDATE_LOCAL_STORE_REMOTE_ERROR: 'UpdateLocalStoreRemoteError',
UPDATE_ERROR: 'UpdateError',
UPDATE_STORE_INIT_ERROR: 'UpdateStoreInitError',
UPDATE_REMOTE_ERROR: 'UpdateRemoteError',
UPDATE_DELETE_PENDING_STATE_ERROR: 'UpdateDeletePendingStateError',
UPDATE_VALIDATE_ASSET_ERROR: 'UpdateValidateAssetError',
UPDATE_STORE_REQUEST_ERROR: 'UpdateStoreRequestError',
UPDATE_VALIDATE_ASSERTION_METADATA_ERROR: 'UpadateValidateAssertionMetadataError',
UPDATE_ASSERTION_ERROR: 'UpdateAssertionError',
UPDATE_NETWORK_START_ERROR: 'UpdateNetworkStartError',
},
GET: {
GET_ROUTE_ERROR: 'GetRouteError',
GET_ASSERTION_ID_ERROR: 'GetAssertionIdError',
GET_PRIVATE_ASSERTION_ID_ERROR: 'GetPrivateAssertionIdError',
GET_VALIDATE_ASSET_ERROR: 'GetValidateAssetError',
GET_LOCAL_ERROR: 'GetLocalError',
GET_NETWORK_ERROR: 'GetNetworkError',
GET_CURATED_PARANET_NETWORK_ERROR: 'GetCuratedParanetNetworkError',
GET_START_ERROR: 'GetStartError',
GET_INIT_ERROR: 'GetInitError',
GET_REQUEST_ERROR: 'GetRequestError',
GET_INIT_REMOTE_ERROR: 'GetInitRemoteError',
GET_REQUEST_REMOTE_ERROR: 'GetRequestRemoteError',
GET_ERROR: 'GetError',
},
BATCH_GET: {
BATCH_GET_ERROR: 'BatchGetError',
},
LOCAL_STORE: {
LOCAL_STORE_ERROR: 'LocalStoreError',
},
QUERY: {
LOCAL_QUERY_ERROR: 'LocalQueryError',
},
GET_BID_SUGGESTION: {
UNSUPPORTED_BID_SUGGESTION_RANGE_ERROR: 'UnsupportedBidSuggestionRangeError',
},
PARANET: {
START_PARANET_SYNC_ERROR: 'StartParanetSyncError',
PARANET_SYNC_ERROR: 'ParanetSyncError',
},
FIND_SHARD: {
FIND_SHARD_ERROR: 'FindShardError',
PUBLISH_FIND_SHARD_ERROR: 'PublishFindShardError',
UPDATE_FIND_SHARD_ERROR: 'UpdateFindShardError',
GET_FIND_SHARD_ERROR: 'GetFindShardError',
BATCH_GET_FIND_SHARD_ERROR: 'BatchGetFindShardError',
},
ASK: {
ASK_ERROR: 'AskError',
ASK_NETWORK_ERROR: 'AskNetworkError',
ASK_REQUEST_ERROR: 'AskRequestError',
ASK_REQUEST_REMOTE_ERROR: 'AskRequestRemoteError',
ASK_FIND_SHARD_ERROR: 'AskFindShardError',
},
PUBLISH_FINALIZATION: {
PUBLISH_FINALIZATION_NO_CACHED_DATA: 'PublishFinalizationNoCachedData',
},
UPDATE_FINALIZATION: {
UPDATE_FINALIZATION_NO_CACHED_DATA: 'UpdateFinalizationNoCachedData',
UPDATE_FINALIZATION_NO_OLD_DATA: 'UpdateFinalizationNoOldData',
},
FINALITY: {
FINALITY_ERROR: 'FinalityError',
FINALITY_NETWORK_ERROR: 'FinalityNetworkError',
FINALITY_REQUEST_ERROR: 'FinalityRequestError',
FINALITY_REQUEST_REMOTE_ERROR: 'FinalityRequestRemoteError',
FINALITY_START_ERROR: 'FinalityStartError',
},
};
export const OPERATION_ID_STATUS = {
PENDING: 'PENDING',
FAILED: 'FAILED',
COMPLETED: 'COMPLETED',
FIND_NODES_START: 'FIND_NODES_START',
FIND_NODES_END: 'FIND_NODES_END',
FIND_CURATED_PARANET_NODES_START: 'FIND_CURATED_PARANET_NODES_START',
FIND_CURATED_PARANET_NODES_END: 'FIND_CURATED_PARANET_NODES_END',
DIAL_PROTOCOL_START: 'DIAL_PROTOCOL_START',
DIAL_PROTOCOL_END: 'DIAL_PROTOCOL_END',
VALIDATE_ASSET_START: 'VALIDATE_ASSET_START',
VALIDATE_ASSET_END: 'VALIDATE_ASSET_END',
VALIDATE_ASSET_BLOCKCHAIN_START: 'VALIDATE_ASSET_BLOCKCHAIN_START',
VALIDATE_ASSET_BLOCKCHAIN_END: 'VALIDATE_ASSET_BLOCKCHAIN_END',
VALIDATE_ASSERTION_METADATA_START: 'VALIDATE_ASSERTION_METADATA_START',
VALIDATE_ASSERTION_METADATA_END: 'VALIDATE_ASSERTION_METADATA_END',
PROTOCOL_SCHEDULE_MESSAGE_START: 'PROTOCOL_SCHEDULE_MESSAGE_START',
PROTOCOL_SCHEDULE_MESSAGE_END: 'PROTOCOL_SCHEDULE_MESSAGE_END',
HANDLE_PROTOCOL_MESSAGE_START: 'HANDLE_PROTOCOL_MESSAGE_START',
HANDLE_PROTOCOL_MESSAGE_END: 'HANDLE_PROTOCOL_MESSAGE_END',
PUBLISH_LOCAL_STORE_REMOTE_SEND_MESSAGE_RESPONSE_START:
'PUBLISH_LOCAL_STORE_REMOTE_SEND_MESSAGE_RESPONSE_START',
PUBLISH_LOCAL_STORE_REMOTE_SEND_MESSAGE_RESPONSE_END:
'PUBLISH_LOCAL_STORE_REMOTE_SEND_MESSAGE_RESPONSE_END',
PUBLISH: {
VALIDATING_PUBLISH_ASSERTION_REMOTE_START: 'VALIDATING_PUBLISH_ASSERTION_REMOTE_START',
VALIDATING_PUBLISH_ASSERTION_REMOTE_END: 'VALIDATING_PUBLISH_ASSERTION_REMOTE_END',
PUBLISH_VALIDATE_ASSET_START: 'PUBLISH_VALIDATE_ASSET_START',
PUBLISH_VALIDATE_ASSET_END: 'PUBLISH_VALIDATE_ASSET_END',
PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_START: 'PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_START',
PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_END: 'PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_END',
PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_START:
'PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_START',
PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_END:
'PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_END',
INSERTING_ASSERTION: 'INSERTING_ASSERTION',
PUBLISHING_ASSERTION: 'PUBLISHING_ASSERTION',
PUBLISH_START: 'PUBLISH_START',
PUBLISH_INIT_START: 'PUBLISH_INIT_START',
PUBLISH_INIT_END: 'PUBLISH_INIT_END',
PUBLISH_LOCAL_STORE_REMOTE_CACHE_DATASET_START:
'PUBLISH_LOCAL_STORE_REMOTE_CACHE_DATASET_START',
PUBLISH_LOCAL_STORE_REMOTE_CACHE_DATASET_END:
'PUBLISH_LOCAL_STORE_REMOTE_CACHE_DATASET_END',
PUBLISH_REPLICATE_START: 'PUBLISH_REPLICATE_START',
PUBLISH_REPLICATE_END: 'PUBLISH_REPLICATE_END',
PUBLISH_FIND_NODES_START: 'PUBLISH_FIND_NODES_START',
PUBLISH_FIND_NODES_END: 'PUBLISH_FIND_NODES_END',
PUBLISH_END: 'PUBLISH_END',
PUBLISH_LOCAL_STORE_REMOTE_START: 'PUBLISH_LOCAL_STORE_REMOTE_START',
PUBLISH_LOCAL_STORE_REMOTE_END: 'PUBLISH_LOCAL_STORE_REMOTE_END',
PUBLISH_VALIDATE_ASSET_REMOTE_START: 'VALIDATE_ASSET_REMOTE_START',
PUBLISH_VALIDATE_ASSET_REMOTE_END: 'VALIDATE_ASSET_REMOTE_END',
PUBLISH_FAILED: 'PUBLISH_FAILED',
},
PUBLISH_FINALIZATION: {
PUBLISH_FINALIZATION_START: 'PUBLISH_FINALIZATION_START',
PUBLISH_FINALIZATION_METADATA_VALIDATION_START:
'PUBLISH_FINALIZATION_METADATA_VALIDATION_START',
PUBLISH_FINALIZATION_METADATA_VALIDATION_END:
'PUBLISH_FINALIZATION_METADATA_VALIDATION_END',
PUBLISH_FINALIZATION_STORE_ASSERTION_START: 'PUBLISH_FINALIZATION_STORE_ASSERTION_START',
PUBLISH_FINALIZATION_STORE_ASSERTION_END: 'PUBLISH_FINALIZATION_STORE_ASSERTION_END',
PUBLISH_FINALIZATION_END: 'PUBLISH_FINALIZATION_END',
PUBLISH_FINALIZATION_FAILED: 'PUBLISH_FINALIZATION_FAILED',
},
UPDATE_FINALIZATION: {
UPDATE_FINALIZATION_START: 'UPDATE_FINALIZATION_START',
UPDATE_FINALIZATION_METADATA_VALIDATION_START:
'UPDATE_FINALIZATION_METADATA_VALIDATION_START',
UPDATE_FINALIZATION_METADATA_VALIDATION_END: 'UPDATE_FINALIZATION_METADATA_VALIDATION_END',
UPDATE_FINALIZATION_STORE_ASSERTION_START: 'UPDATE_FINALIZATION_STORE_ASSERTION_START',
UPDATE_FINALIZATION_STORE_ASSERTION_END: 'UPDATE_FINALIZATION_STORE_ASSERTION_END',
UPDATE_FINALIZATION_END: 'UPDATE_FINALIZATION_END',
},
UPDATE: {
UPDATE_START: 'UPDATE_START',
UPDATE_INIT_START: 'UPDATE_INIT_START',
UPDATE_INIT_END: 'UPDATE_INIT_END',
UPDATE_REPLICATE_START: 'UPDATE_REPLICATE_START',
UPDATE_REPLICATE_END: 'UPDATE_REPLICATE_END',
UPDATE_FIND_NODES_START: 'UPDATE_FIND_NODES_START',
UPDATE_FIND_NODES_END: 'UPDATE_FIND_NODES_END',
VALIDATING_UPDATE_ASSERTION_REMOTE_START: 'VALIDATING_UPDATE_ASSERTION_REMOTE_START',
VALIDATING_UPDATE_ASSERTION_REMOTE_END: 'VALIDATING_UPDATE_ASSERTION_REMOTE_END',
UPDATE_END: 'UPDATE_END',
UPDATE_VALIDATE_ASSET_START: 'UPDATE_VALIDATE_ASSET_START',
UPDATE_VALIDATE_ASSET_END: 'UPDATE_VALIDATE_ASSET_END',
UPDATE_NETWORK_START_ERROR: 'UPDATE_NETWORK_START_ERROR',
UPDATE_LOCAL_STORE_REMOTE_START: 'UPDATE_LOCAL_STORE_REMOTE_START',
UPDATE_LOCAL_STORE_REMOTE_END: 'UPDATE_LOCAL_STORE_REMOTE_END',
UPDATE_VALIDATE_ASSET_REMOTE_START: 'UPDATE_VALIDATE_ASSET_REMOTE_START',
UPDATE_VALIDATE_ASSET_REMOTE_END: 'UPDATE_VALIDATE_ASSET_REMOTE_END',
UPDATE_LOCAL_STORE_REMOTE_CACHE_DATASET_START:
'UPDATE_LOCAL_STORE_REMOTE_CACHE_DATASET_START',
UPDATE_LOCAL_STORE_REMOTE_CACHE_DATASET_END: 'UPDATE_LOCAL_STORE_REMOTE_CACHE_DATASET_END',
},
GET: {
ASSERTION_EXISTS_LOCAL_START: 'ASSERTION_EXISTS_LOCAL_START',
ASSERTION_EXISTS_LOCAL_END: 'ASSERTION_EXISTS_LOCAL_END',
GET_START: 'GET_START',
GET_INIT_START: 'GET_INIT_START',
GET_INIT_END: 'GET_INIT_END',
GET_VALIDATE_ASSET_START: 'GET_VALIDATE_ASSET_START',
GET_VALIDATE_ASSET_END: 'GET_VALIDATE_ASSET_END',
GET_LOCAL_START: 'GET_LOCAL_START',
GET_LOCAL_END: 'GET_LOCAL_END',
GET_REMOTE_START: 'GET_REMOTE_START',
GET_REMOTE_END: 'GET_REMOTE_END',
GET_FETCH_FROM_NODES_START: 'GET_FETCH_FROM_NODES_START',
GET_FETCH_FROM_NODES_END: 'GET_FETCH_FROM_NODES_END',
GET_FIND_NODES_START: 'GET_FIND_NODES_START',
GET_FIND_NODES_END: 'PUBLISH_FIND_NODES_END',
GET_END: 'GET_END',
GET_FAILED: 'GET_FAILED',
},
BATCH_GET: {
BATCH_GET_INIT: 'BATCH_GET_INIT',
BATCH_GET_START: 'BATCH_GET_START',
BATCH_GET_END: 'BATCH_GET_END',
BATCH_GET_FAILED: 'BATCH_GET_FAILED',
BATCH_GET_VALIDATE_ASSET_START: 'BATCH_GET_VALIDATE_ASSET_START',
BATCH_GET_VALIDATE_ASSET_END: 'BATCH_GET_VALIDATE_ASSET_END',
BATCH_GET_VALIDATE_ASSET_ERROR: 'BATCH_GET_VALIDATE_ASSET_ERROR',
BATCH_GET_LOCAL_START: 'BATCH_GET_LOCAL_START',
BATCH_GET_LOCAL_END: 'BATCH_GET_LOCAL_END',
BATCH_GET_REMOTE_START: 'BATCH_GET_REMOTE_START',
BATCH_GET_REMOTE_END: 'BATCH_GET_REMOTE_END',
BATCH_GET_REQUEST_REMOTE_ERROR: 'BATCH_GET_REQUEST_REMOTE_ERROR',
BATCH_GET_FIND_SHARD_START: 'BATCH_GET_FIND_SHARD_START',
BATCH_GET_FIND_SHARD_END: 'BATCH_GET_FIND_SHARD_END',
},
QUERY: {
QUERY_INIT_START: 'QUERY_INIT_START',
QUERY_INIT_END: 'QUERY_INIT_END',
QUERY_START: 'QUERY_START',
QUERY_END: 'QUERY_END',
QUERY_FAILED: 'QUERY_FAILED',
},
LOCAL_STORE: {
LOCAL_STORE_INIT_START: 'LOCAL_STORE_INIT_START',
LOCAL_STORE_INIT_END: 'LOCAL_STORE_INIT_END',
LOCAL_STORE_START: 'LOCAL_STORE_START',
LOCAL_STORE_END: 'LOCAL_STORE_END',
LOCAL_STORE_PROCESS_RESPONSE_START: 'LOCAL_STORE_PROCESS_RESPONSE_START',
LOCAL_STORE_PROCESS_RESPONSE_END: 'LOCAL_STORE_PROCESS_RESPONSE_END',
},
PARANET: {
PARANET_SYNC_START: 'PARANET_SYNC_START',
PARANET_SYNC_END: 'PARANET_SYNC_END',
PARANET_SYNC_MISSED_KAS_SYNC_START: 'PARANET_SYNC_MISSED_KAS_SYNC_START',
PARANET_SYNC_MISSED_KAS_SYNC_END: 'PARANET_SYNC_MISSED_KAS_SYNC_END',
PARANET_SYNC_NEW_KAS_SYNC_START: 'PARANET_SYNC_NEW_KAS_SYNC_START',
PARANET_SYNC_NEW_KAS_SYNC_END: 'PARANET_SYNC_NEW_KAS_SYNC_END',
},
ASK: {
ASK_START: 'ASK_START',
ASK_END: 'ASK_END',
ASK_REMOTE_START: 'ASK_REMOTE_START',
ASK_REMOTE_END: 'ASK_REMOTE_START',
ASK_FIND_NODES_START: 'ASK_FIND_NODES_START',
ASK_FIND_NODES_END: 'ASK_FIND_NODES_END',
ASK_FETCH_FROM_NODES_START: 'ASK_FETCH_FROM_NODES_START',
ASK_FETCH_FROM_NODES_END: 'ASK_FETCH_FROM_NODES_END',
},
FINALITY: {
FINALITY_START: 'FINALITY_START',
FINALITY_END: 'FINALITY_END',
FINALITY_REMOTE_START: 'FINALITY_REMOTE_START',
FINALITY_REMOTE_END: 'FINALITY_REMOTE_START',
FINALITY_REPLICATE_START: 'FINALITY_REPLICATE_START',
FINALITY_REPLICATE_END: 'FINALITY_REPLICATE_END',
FINALITY_FETCH_FROM_NODES_START: 'FINALITY_FETCH_FROM_NODES_START',
FINALITY_FETCH_FROM_NODES_END: 'FINALITY_FETCH_FROM_NODES_END',
PUBLISH_FINALITY_REMOTE_START: 'PUBLISH_FINALITY_REMOTE_START',
PUBLISH_FINALITY_REMOTE_END: 'PUBLISH_FINALITY_REMOTE_END',
PUBLISH_FINALITY_END: 'PUBLISH_FINALITY_END',
PUBLISH_FINALITY_FETCH_FROM_NODES_END: 'PUBLISH_FINALITY_FETCH_FROM_NODES_END',
},
SYNC: {
SYNC_START: 'SYNC_START',
SYNC_NEW_START: 'SYNC_NEW_START',
SYNC_MISSED_START: 'SYNC_MISSED_START',
SYNC_END: 'SYNC_END',
SYNC_NEW_END: 'SYNC_NEW_END',
SYNC_MISSED_END: 'SYNC_MISSED_END',
SYNC_PROGRESS_STATUS: 'SYNC_PROGRESS_STATUS',
SYNC_FAILED: 'SYNC_FAILED',
SYNC_NEW_FAILED: 'SYNC_NEW_FAILED',
SYNC_MISSED_FAILED: 'SYNC_MISSED_FAILED',
},
};
export const OPERATIONS = {
PUBLISH: 'publish',
FINALITY: 'finality',
// UPDATE: 'update',
GET: 'get',
BATCH_GET: 'batchGet',
ASK: 'ask',
};
export const SERVICE_AGREEMENT_START_TIME_DELAY_FOR_COMMITS_SECONDS = {
mainnet: 5 * 60,
testnet: 5 * 60,
devnet: 3 * 60,
test: 10,
development: 10,
};
export const EXPECTED_TRANSACTION_ERRORS = {
INSUFFICIENT_FUNDS: 'InsufficientFunds',
NODE_ALREADY_SUBMITTED_COMMIT: 'NodeAlreadySubmittedCommit',
TIMEOUT_EXCEEDED: 'timeout exceeded',
TOO_LOW_PRIORITY: 'TooLowPriority',
NODE_ALREADY_REWARDED: 'NodeAlreadyRewarded',
SERVICE_AGREEMENT_DOESNT_EXIST: 'ServiceAgreementDoesntExist',
INVALID_SCORE_FUNCTION_ID: 'InvalidScoreFunctionId',
COMMIT_WINDOW_CLOSED: 'CommitWindowClosed',
NODE_NOT_IN_SHARDING_TABLE: 'NodeNotInShardingTable',
PROOF_WINDOW_CLOSED: 'ProofWindowClosed',
NODE_NOT_AWARDED: 'NodeNotAwarded',
WRONG_MERKLE_PROOF: 'WrongMerkleProof',
NO_MINTED_ASSETS: 'NoMintedAssets',
NONCE_TOO_LOW: 'nonce too low',
REPLACEMENT_UNDERPRICED: 'replacement transaction underpriced',
ALREADY_KNOWN: 'already known',
};
/**
* @constant {number} OPERATION_ID_COMMAND_CLEANUP_TIME_MILLS -
* operation id command cleanup interval time 24h
*/
export const OPERATION_ID_COMMAND_CLEANUP_TIME_MILLS = 24 * 60 * 60 * 1000;
/**
* @constant {number} FINALIZED_COMMAND_CLEANUP_TIME_MILLS - Command cleanup interval time
* finalized commands command cleanup interval time 24h
*/
export const PUBLISH_STORAGE_MEMORY_CLEANUP_COMMAND_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const PUBLISH_STORAGE_FILE_CLEANUP_COMMAND_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const FINALIZED_COMMAND_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const FINALIZED_COMMAND_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
export const GET_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const GET_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const GET_RESPONSE_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const GET_RESPONSE_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const PUBLISH_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const PUBLISH_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
export const PUBLISH_RESPONSE_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const PUBLISH_RESPONSE_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
export const UPDATE_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const UPDATE_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
export const UPDATE_RESPONSE_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const UPDATE_RESPONSE_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
export const ASK_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const ASK_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const ASK_RESPONSE_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const ASK_RESPONSE_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const FINALITY_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const FINALITY_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const FINALITY_RESPONSE_CLEANUP_TIME_MILLS = 12 * 60 * 60 * 1000;
export const FINALITY_RESPONSE_CLEANUP_TIME_DELAY = 24 * 60 * 60 * 1000;
export const PROCESSED_BLOCKCHAIN_EVENTS_CLEANUP_TIME_MILLS = 1 * 60 * 60 * 1000;
export const PROCESSED_BLOCKCHAIN_EVENTS_CLEANUP_TIME_DELAY = 1 * 60 * 60 * 1000;
/**
* @constant {number} COMMAND_STATUS -
* Status for commands
*/
export const COMMAND_STATUS = {
FAILED: 'FAILED',
EXPIRED: 'EXPIRED',
UNKNOWN: 'UNKNOWN',
STARTED: 'STARTED',
PENDING: 'PENDING',
COMPLETED: 'COMPLETED',
REPEATING: 'REPEATING',
};
export const PENDING_STORAGE_FILES_FOR_REMOVAL_MAX_NUMBER = 100_000;
export const OPERATION_ID_FILES_FOR_REMOVAL_MAX_NUMBER = 100;
export const REPOSITORY_ROWS_FOR_REMOVAL_MAX_NUMBER = 50_000;
export const MIGRATION_FOLDER = 'migrations';
export const PUBLISHER_NODE_SIGNATURES_FOLDER = 'publisher';
export const NETWORK_SIGNATURES_FOLDER = 'network';
/**
* How many commands will run in parallel
* @type {number}
*/
export const GENERAL_COMMAND_QUEUE_PARALLELISM = 100;
export const BATCH_GET_COMMAND_QUEUE_PARALLELISM = 20;
export const GET_LATEST_SERVICE_AGREEMENT_BATCH_SIZE = 50;
export const GET_ASSERTION_IDS_MAX_RETRY_COUNT = 5;
export const GET_ASSERTION_IDS_RETRY_DELAY_IN_SECONDS = 2;
export const GET_LATEST_SERVICE_AGREEMENT_EXCLUDE_LATEST_TOKEN_ID = 1;
/**
* @constant {object} HTTP_API_ROUTES -
* HTTP API Routes with parameters
*/
export const HTTP_API_ROUTES = {
v0: {
// publish: {
// method: 'post',
// path: '/publish',
// options: { rateLimit: true },
// },
// update: {
// method: 'post',
// path: '/update',
// options: { rateLimit: true },
// },
query: {
method: 'post',
path: '/query',
options: {},
},
// 'local-store': {
// method: 'post',
// path: '/local-store',
// options: {},
// },
get: {
method: 'post',
path: '/get',
options: { rateLimit: true },
},
result: {
method: 'get',
path: '/:operation/:operationId',
options: {},
},
info: {
method: 'get',
path: '/info',
options: {},
},
'bid-suggestion': {
method: 'get',
path: '/bid-suggestion',
options: {},
},
},
v1: {
publish: {
method: 'post',
path: '/publish',
options: { rateLimit: true },
},
finality: {
method: 'get',
path: '/finality',
options: {},
},
// update: {
// method: 'post',
// path: '/update',
// options: { rateLimit: true },
// },
query: {
method: 'post',
path: '/query',
options: {},
},
get: {
method: 'post',
path: '/get',
options: { rateLimit: true },
},
result: {
method: 'get',
path: '/:operation/:operationId',
options: {},
},
info: {
method: 'get',
path: '/info',
options: {},
},
ask: {
method: 'post',
path: '/ask',
options: {},
},
'direct-query': {
method: 'post',
path: '/direct-query',
options: {},
},
'local-store': {
method: 'post',
path: '/local-store',
options: {},
},
},
};
/**
* @constant {object} NETWORK_PROTOCOLS -
* Network protocols
*/
export const NETWORK_PROTOCOLS = {
STORE: ['/store/1.0.0'],
// UPDATE: ['/update/1.0.0'],
GET: ['/get/1.0.0'],
BATCH_GET: ['/batch-get/1.0.0'],
ASK: ['/ask/1.0.0'],
FINALITY: ['/finality/1.0.0'],
};
export const OPERATION_STATUS = {
IN_PROGRESS: 'IN_PROGRESS',
FAILED: 'FAILED',
COMPLETED: 'COMPLETED',
};
export const AGREEMENT_STATUS = {
ACTIVE: 'ACTIVE',
EXPIRED: 'EXPIRED',
};
export const OPERATION_REQUEST_STATUS = {
FAILED: 'FAILED',
COMPLETED: 'COMPLETED',
};
/**
* Local query types
* @type {{CONSTRUCT: string, SELECT: string}}
*/
export const QUERY_TYPES = {
SELECT: 'SELECT',
CONSTRUCT: 'CONSTRUCT',
};
/**
* Local store types
* @type {{TRIPLE: string, PENDING: string}}
*/
export const LOCAL_STORE_TYPES = {
TRIPLE: 'TRIPLE',
TRIPLE_PARANET: 'TRIPLE_PARANET',
};
/**
* Contract names
* @type {{SHARDING_TABLE: string}}
*/
export const CONTRACTS = {
SHARDING_TABLE: 'ShardingTable',
STAKING: 'Staking',
PROFILE: 'Profile',
HUB: 'Hub',
PARAMETERS_STORAGE: 'ParametersStorage',
IDENTITY_STORAGE: 'IdentityStorage',
LOG2PLDSF: 'Log2PLDSF',
LINEAR_SUM: 'LinearSum',
PARANETS_REGISTRY: 'ParanetsRegistry',
};
export const MONITORED_CONTRACT_EVENTS = {
Hub: ['NewContract', 'ContractChanged', 'NewAssetStorage', 'AssetStorageChanged'],
ParametersStorage: ['ParameterChanged'],
KnowledgeCollectionStorage: ['KnowledgeCollectionCreated'],
};
export const MONITORED_CONTRACTS = Object.keys(MONITORED_CONTRACT_EVENTS);
export const MONITORED_EVENTS = Object.values(MONITORED_CONTRACT_EVENTS).flatMap(
(events) => events,
);
export const CONTRACT_INDEPENDENT_EVENTS = {};
export const NODE_ENVIRONMENTS = {
DEVELOPMENT: 'development',
TEST: 'test',
DEVNET: 'devnet',
TESTNET: 'testnet',
MAINNET: 'mainnet',
};
export const MAXIMUM_FETCH_EVENTS_FAILED_COUNT = 1000;
export const CONTRACT_EVENT_FETCH_INTERVALS = {
MAINNET: 10 * 1000,
DEVELOPMENT: 4 * 1000,
};
export const TRANSACTION_CONFIRMATIONS = 1;
export const SERVICE_AGREEMENT_SOURCES = {
BLOCKCHAIN: 'blockchain',
EVENT: 'event',
CLIENT: 'client',
NODE: 'node',
};
export const CACHE_DATA_TYPES = {
NUMBER: 'number',
ANY: 'any',
};
export const PARANET_SYNC_SOURCES = {
SYNC: 'sync',
LOCAL_STORE: 'local_store',
};
/**
* CACHED_FUNCTIONS:
* ContractName: {
* functionName: returnType
* }
* @type {{IdentityStorageContract: [{name: string, type: string}], ParametersStorageContract: *}}
*/
export const CACHED_FUNCTIONS = {
ParametersStorageContract: {
r0: CACHE_DATA_TYPES.NUMBER,
r1: CACHE_DATA_TYPES.NUMBER,
r2: CACHE_DATA_TYPES.NUMBER,
finalizationCommitsNumber: CACHE_DATA_TYPES.NUMBER,
updateCommitWindowDuration: CACHE_DATA_TYPES.NUMBER,
commitWindowDurationPerc: CACHE_DATA_TYPES.NUMBER,
proofWindowDurationPerc: CACHE_DATA_TYPES.NUMBER,
epochLength: CACHE_DATA_TYPES.NUMBER,
minimumStake: CACHE_DATA_TYPES.ANY,
maximumStake: CACHE_DATA_TYPES.ANY,
minProofWindowOffsetPerc: CACHE_DATA_TYPES.NUMBER,
maxProofWindowOffsetPerc: CACHE_DATA_TYPES.NUMBER,
},
IdentityStorageContract: {
getIdentityId: CACHE_DATA_TYPES.NUMBER,
},
};
export const LOW_BID_SUGGESTION = 'low';
export const MED_BID_SUGGESTION = 'med';
export const HIGH_BID_SUGGESTION = 'high';
export const ALL_BID_SUGGESTION = 'all';
export const BID_SUGGESTION_RANGE_ENUM = [
LOW_BID_SUGGESTION,
MED_BID_SUGGESTION,
HIGH_BID_SUGGESTION,
ALL_BID_SUGGESTION,
];
export const LOW_BID_SUGGESTION_OFFSET = 9;
export const MED_BID_SUGGESTION_OFFSET = 11;
export const HIGH_BID_SUGGESTION_OFFSET = 14;
export const LOCAL_INSERT_FOR_ASSET_SYNC_MAX_ATTEMPTS = 5;
export const LOCAL_INSERT_FOR_ASSET_SYNC_RETRY_DELAY = 1000;
export const LOCAL_INSERT_FOR_CURATED_PARANET_MAX_ATTEMPTS = 5;
export const LOCAL_INSERT_FOR_CURATED_PARANET_RETRY_DELAY = 1000;
export const MAX_RETRIES_READ_CACHED_PUBLISH_DATA = 10;
export const RETRY_DELAY_READ_CACHED_PUBLISH_DATA = 10 * 1000;
export const TRIPLE_STORE_REPOSITORY = {
DKG: 'dkg',
DKG_HISTORIC: 'dkg-historic',
};
export const TRIPLES_VISIBILITY = {
PUBLIC: 'public',
PRIVATE: 'private',
ALL: 'all',
};
export const V6_CONTENT_STORAGE_MAP = {
BASE_MAINNET: '0x3bdfA81079B2bA53a25a6641608E5E1E6c464597',
BASE_TESTNET: '0x9e3071Dc0730CB6dd0ce42969396D716Ea33E7e1',
BASE_DEVNET: '0xBe08A25dcF2B68af88501611e5456571f50327B4',
GNOSIS_MAINNET: '0xf81a8C0008DE2DCdb73366Cf78F2b178616d11DD',
GNOSIS_TESTNET: '0xeA3423e02c8d231532dab1BCE5D034f3737B3638',
GNOSIS_DEVNET: '0x3db64dD0Ac054610d1e2Af9Cca0fbCB1A7f4C2d8',
OTP_MAINNET: '0x5cAC41237127F94c2D21dAe0b14bFeFa99880630',
OTP_TESTNET: '0x1A061136Ed9f5eD69395f18961a0a535EF4B3E5f',
OTP_DEVNET: '0xABd59A9aa71847F499d624c492d3903dA953d67a',
};
export const PROOFING_INTERVAL = 5 * 60 * 1000;
export const PROOFING_MAX_ATTEMPTS = 120;
export const REORG_PROOFING_BUFFER = 60 * 1000;
export const CHUNK_SIZE = 32;
export const CLAIM_REWARDS_INTERVAL = 60 * 60 * 1000;
export const CLAIM_REWARDS_BATCH_SIZE = 10;
export const BATCH_GET_BATCH_SIZE = 5;
export const BATCH_GET_UAL_MAX_LIMIT = 1000;
export const SYNC_INTERVAL = 12 * 1000;
export const SYNC_BATCH_GET_WAIT_TIME = 1000;
export const SYNC_BATCH_GET_MAX_ATTEMPTS = 15 * 60;
export const MAX_TOKEN_ID_PER_GET_PAGE = 50;
export const BLAZEGRAPH_HEALTH_INTERVAL = 60 * 1000;
export const MAX_COMMAND_LIFETIME = 15 * 60 * 1000;