The archiver service's purpose is to store and make available data regardless of the current epoch.
The archive system consists of two services:
qubic-archiver
- the archiver processor and HTTP server that provides rpc endpoints to query the archiverqubic-nodes
- a service responsible with providing information regarding reliable nodes and the max tick of the network
Before starting the system, open the docker-compose.yml
file and make sure that you have a reliable peer list setup
for the qubic-nodes
service.
This can be configured using the QUBIC_NODES_QUBIC_PEER_LIST
environment variable.
Other optional configuration parameters for qubic-archiver can be specified as env variable by adding them to docker compose:
$QUBIC_ARCHIVER_SERVER_READ_TIMEOUT <duration> (default: 5s)
$QUBIC_ARCHIVER_SERVER_WRITE_TIMEOUT <duration> (default: 5s)
$QUBIC_ARCHIVER_SERVER_SHUTDOWN_TIMEOUT <duration> (default: 5s)
$QUBIC_ARCHIVER_SERVER_HTTP_HOST <string> (default: 0.0.0.0:8000)
$QUBIC_ARCHIVER_SERVER_GRPC_HOST <string> (default: 0.0.0.0:8001)
$QUBIC_ARCHIVER_SERVER_NODE_SYNC_THRESHOLD <int> (default: 3)
$QUBIC_ARCHIVER_SERVER_CHAIN_TICK_FETCH_URL <string> (default: http://127.0.0.1:8080/max-tick)
$QUBIC_ARCHIVER_POOL_NODE_FETCHER_URL <string> (default: http://127.0.0.1:8080/status)
$QUBIC_ARCHIVER_POOL_NODE_FETCHER_TIMEOUT <duration> (default: 2s)
$QUBIC_ARCHIVER_POOL_INITIAL_CAP <int> (default: 5)
$QUBIC_ARCHIVER_POOL_MAX_IDLE <int> (default: 20)
$QUBIC_ARCHIVER_POOL_MAX_CAP <int> (default: 30)
$QUBIC_ARCHIVER_POOL_IDLE_TIMEOUT <duration> (default: 15s)
$QUBIC_ARCHIVER_QUBIC_NODE_PORT <string> (default: 21841)
$QUBIC_ARCHIVER_QUBIC_STORAGE_FOLDER <string> (default: store)
$QUBIC_ARCHIVER_QUBIC_PROCESS_TICK_TIMEOUT <duration> (default: 5s)
$ docker-compose up -d
Provides information regarding the status of the archiver instance.
curl http://127.0.0.1:8001/status
{
"lastProcessedTick":{
"tickNumber":13683006,
"epoch":107
},
"lastProcessedTicksPerEpoch":{
"106":13548510,
"107":13683006
},
"skippedTicks":[
{
"startTick":1,
"endTick":13547629
},
{
"startTick":13548511,
"endTick":13679999
}
],
"processedTickIntervalsPerEpoch":[
{
"epoch":106,
"intervals":[
{
"initialProcessedTick":13547630,
"lastProcessedTick":13548510
}
]
},
{
"epoch":107,
"intervals":[
{
"initialProcessedTick":13680000,
"lastProcessedTick":13683006
}
]
}
]
}
Mainly used by the load-balancer to decide if the instance should be added to the balancing rotation based on if it's up-to-date with the network or not.
curl http://127.0.0.1:8001/healthcheck
{
"code":13,
"message":"processor is behind node by 7684 ticks",
"details":[]
}
Returns the number of the latest tick processed by the archiver instance.
curl http://127.0.0.1:8001/latestTick
{
"latestTick":13690806
}
Returns the tick information for the given tick.
curl http://127.0.0.1:8001/ticks/13683397/tick-data
{
"tickData":{
"computorIndex":481,
"epoch":107,
"tickNumber":13683397,
"timestamp":"1714593920000",
"varStruct":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"timeLock":"1BAUdVy8iM0d9LYFK2/WACnR+Fvn7cPY3sLgnt2W/Es=",
"transactionIds":[
"xgniuxigsnbeifvkithkcgnvxhmglgkppscwupescgwoqljxdecekhueutfn",
"ilhefvlxgzpzmdfiixupcusbgyihxxqfomdvumwfngkuugagyutjudhfhobd",
"jvpovfnhpiijehctdtsivngewabbzwxinjijwmeiihuebraaheokpzdayhsb"
],
"contractFees":[],
"signatureHex":"74b77a2f61b363bc0f2ebeda39b5255c8b5ffb767f571a32603ace8b4f47c23f531018bb4efac3f5a9c3f7896c08d04e4149319a666df25d0bed6c6cfbed0000"
}
}
Returns the quorum tick information for the given tick.
curl http://127.0.0.1:8001/ticks/13683397/quorum-tick-data
{
"quorumTickData":{
"quorumTickStructure":{
"epoch":107,
"tickNumber":13683397,
"timestamp":"1714593914000",
"prevResourceTestingDigestHex":"42359ba71f11311f",
"prevSpectrumDigestHex":"f635766cbfe80a021e18d03a87fc8304e7f8cdd25e56f8147e2b97e21ea38161",
"prevUniverseDigestHex":"52da6fe4a4da50a34582f11b53094ebdfa25087614a5dc6e5e15f0f418804102",
"prevComputerDigestHex":"9ea25c5c9fa90e55d68cca1d3c78183d5b91bbac82c96de5400e267a16223bd2",
"txDigestHex":"09ab681628b3e0263c444c2edbce51adb22c0e38e81cbfedd7c08abab2d6c67f"
},
"quorumDiffPerComputor":{
"0":{
"saltedResourceTestingDigestHex":"0ee4483f607b4865",
"saltedSpectrumDigestHex":"41d5452637b88cba3b9b44c320ff958f26f7898864752c82ee42ebcacedb6e40",
"saltedUniverseDigestHex":"751da9c5e2d9e9a74dae2e6552ffaad249ac0eae728a0c940d1cdb3d3e1c8fcd",
"saltedComputerDigestHex":"755957976e92e0bf65e5537ec4398867f1afabfc777ab4f888e3ccecd6ff787a",
"expectedNextTickTxDigestHex":"b0f4b3415740c927d351c528355ab13bd2d0640395b5c0eae380e7b93ca5872d",
"signatureHex":"36ac100871d93c0719370fc75f034e72780f7c4fc21605fe98ec69229a7df2d1fdc1f65aa3bcc74c927bc9296400914bc8909677b2f1e26643764718fcc40100"
},
"1":{
"saltedResourceTestingDigestHex":"d0bfef154b6bbc28",
"saltedSpectrumDigestHex":"43d1c210e61c3481df7bc65a5456d089be0932ddabac0690ba5a4df918561ef0",
"saltedUniverseDigestHex":"86bff2d98c8a04517cfe92d662f2185640a3af0a6e125b7e9353119f57b96e3a",
"saltedComputerDigestHex":"46d7e8504caa635789a8c014e2270db92e8f996851637eca11ddf7f533e76b21",
"expectedNextTickTxDigestHex":"b0f4b3415740c927d351c528355ab13bd2d0640395b5c0eae380e7b93ca5872d",
"signatureHex":"c47b58fc51247bb4d223d922e589771956103280c82ccb0927da464bdd0861791d788109c0bdee63dc94553215fc21d5db994eb1e4c1ec268a8d7663fd8d2500"
},
// ...
"675":{
"saltedResourceTestingDigestHex":"fd730f13a8973bd3",
"saltedSpectrumDigestHex":"ae20699498a6231169d936fd749a5f8ce5c7608ee8bb019824ff984c7e7f0321",
"saltedUniverseDigestHex":"9cb63a800d5c8bce5933c82c322205db7a6be9d0389512193b33166efcb0ac61",
"saltedComputerDigestHex":"816131300e1e13e7e9bf9fc5831653764ea9fb2a0bd7e01570db2e049a3f2caa",
"expectedNextTickTxDigestHex":"b0f4b3415740c927d351c528355ab13bd2d0640395b5c0eae380e7b93ca5872d",
"signatureHex":"c4f4ac87c1edf351e60bb545d15a457d7d803646f1c324d9c2429213c326ace736181b1135f718b97a52649a9c6abb43b3774cb0049bf2f959d5cfa8e08c0300"
}
}
}
}
Returns the full list of transactions for the given tick.
Note that this will include ALL transactions, approved or not.
curl http://127.0.0.1:8001/ticks/13683397/transactions
{
"transactions":[
{
"sourceId":"IAHIRNYARPTESFWWKHWBIICNUEYCIGFMXOGOOBNNBAKSEEGFDWUHPNDHJQUK",
"destId":"AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ",
"amount":"0",
"tickNumber":13683397,
"inputType":0,
"inputSize":32,
"inputHex":"716c692d637564616b008dd1814005e586d28cbf0687c5d380817ee3f5494304",
"signatureHex":"814d9e9ccb01766b0885d0592e6c39054c9311d13971be51e3a798c9f3ec080c6f280e4b6519042ee4a9be0c8d9b23127c9ee788282e7578cc8d52dd351c1d00",
"txId":"xgniuxigsnbeifvkithkcgnvxhmglgkppscwupescgwoqljxdecekhueutfn"
},
{
"sourceId":"UHDZJOGELURMKBEQUSMNBMWAVPHDADXMZPCOLTFAUGQZVELHGUYRCPADDBEF",
"destId":"AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ",
"amount":"0",
"tickNumber":13683397,
"inputType":0,
"inputSize":32,
"inputHex":"716c692d637564616b0197b23003bc90c9b26688c3329109deba9654162b5c12",
"signatureHex":"8b165c45532b2a2ef52da2c7bb78030ceacb4154c107297dc6f0f2ccb9da5dd2b602b8578ba391a916c1fefbcb31115b6345456fac868a188cfdeb5530b21100",
"txId":"ilhefvlxgzpzmdfiixupcusbgyihxxqfomdvumwfngkuugagyutjudhfhobd"
},
{
"sourceId":"MYVLWZGGVHALIEVZQXCEVQJXNEUAYULLEMBMFTNORGJGESCMQTPCVOHBBBTI",
"destId":"AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ",
"amount":"0",
"tickNumber":13683397,
"inputType":0,
"inputSize":32,
"inputHex":"716c692d637564616b01c8af176f1f3b2ec5b8e53af9215b86d139dbc835003d",
"signatureHex":"7bea63bcf5fe31c670ec1feee93c943c5e8c4f12fc58f69cfe50b59f0a92dd3347b9ab2797b8184441a4be885ac4579a1000fdf429b0a6dd540bf0cff12a0300",
"txId":"jvpovfnhpiijehctdtsivngewabbzwxinjijwmeiihuebraaheokpzdayhsb"
}
]
}
Returns the list of transfer transactions for the given tick.
Note that there is a difference between transfer transactions and mining transactions.
curl http://127.0.0.1:8001/ticks/13686173/transfer-transactions
{
"transactions": [
{
"sourceId": "FNXHQOKFGKMZUGWQHLTNOPMIGXQAQZWYUPAGXMGAKAASHCVNGUPHEMJHUSOK",
"destId": "IZTNWDKXSFULQADTOLTMLUPHSCFCXLOJMQOUHPBSRGQZMMXZCJYQFTRDOGRE",
"amount": "45832157",
"tickNumber": 13686173,
"inputType": 0,
"inputSize": 0,
"inputHex": "",
"signatureHex": "8b897f20911d4df01c9faa56782760173f95e1da6f22bbbbae13a519904356b25db5eb736a27056d34f29d09b8fc847142703c0deacedb143b759acd42be0b00",
"txId": "whhhorfprtqayfygoqwoyqbpnajdfwocnyunwwvjqgykcqpnmphrbozdxscj"
}
]
}
Returns the list of all approved transactions for the given tick.
curl http://127.0.0.1:8001/ticks/13686387/approved-transactions
{
"approvedTransactions": [
{
"sourceId": "ARALPBGBRNORYBDFRWKQSLENOELBMFJWOFKBRQJNXDXTRZPYGGFKSADAXJON",
"destId": "NLRQDYJUXUDLTEMGPZSBWAABQTIAYZCELAOZIAPBTGTRMGFPTTEBALRAYPPN",
"amount": "24427392",
"tickNumber": 13686387,
"inputType": 0,
"inputSize": 0,
"inputHex": "",
"signatureHex": "526370cd218a33d53ff17d1de4194158e713222ebee88e53d26c73872d1946fcaae42ec83be1a4b84dbf14bc5458ed462ab43ccc63c4446554341e782c541700",
"txId": "ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya"
}
]
}
Returns the hash of the given processed tick. This is mainly used to compare archiver instances and verify they process ticks the same.
curl http://127.0.0.1:8001/ticks/13686387/chain-tick
{
"hexDigest": "cf8914a346c217036a71d92f4e81c123aeea7a2d187f4123932e98326360c101"
}
Returns the transaction information for the given transaction id.
curl http://127.0.0.1:8001/transactions/ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya
{
"transaction": {
"sourceId": "ARALPBGBRNORYBDFRWKQSLENOELBMFJWOFKBRQJNXDXTRZPYGGFKSADAXJON",
"destId": "NLRQDYJUXUDLTEMGPZSBWAABQTIAYZCELAOZIAPBTGTRMGFPTTEBALRAYPPN",
"amount": "24427392",
"tickNumber": 13686387,
"inputType": 0,
"inputSize": 0,
"inputHex": "",
"signatureHex": "526370cd218a33d53ff17d1de4194158e713222ebee88e53d26c73872d1946fcaae42ec83be1a4b84dbf14bc5458ed462ab43ccc63c4446554341e782c541700",
"txId": "ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya"
}
}
Returns the status of the given transaction.
curl http://127.0.0.1:8001/tx-status/ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya
{
"transactionStatus": {
"txId": "ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya",
"moneyFlew": true
}
}
Returns the list of transfer transactions for the given identity.
curl http://127.0.0.1:8001/identities/ARALPBGBRNORYBDFRWKQSLENOELBMFJWOFKBRQJNXDXTRZPYGGFKSADAXJON/transfer-transactions?start_tick=13686000&end_tick=13686400
{
"transferTransactionsPerTick": [
{
"tickNumber": 13686387,
"identity": "ARALPBGBRNORYBDFRWKQSLENOELBMFJWOFKBRQJNXDXTRZPYGGFKSADAXJON",
"transactions": [
{
"sourceId": "ARALPBGBRNORYBDFRWKQSLENOELBMFJWOFKBRQJNXDXTRZPYGGFKSADAXJON",
"destId": "NLRQDYJUXUDLTEMGPZSBWAABQTIAYZCELAOZIAPBTGTRMGFPTTEBALRAYPPN",
"amount": "24427392",
"tickNumber": 13686387,
"inputType": 0,
"inputSize": 0,
"inputHex": "",
"signatureHex": "526370cd218a33d53ff17d1de4194158e713222ebee88e53d26c73872d1946fcaae42ec83be1a4b84dbf14bc5458ed462ab43ccc63c4446554341e782c541700",
"txId": "ktwllcxqbvlrffrbweestshxqxbhpulqwdnvljssmcuzuefuzcwufedgmkya"
}
]
}
]
}
Returns the list of computors for the given epoch
curl http://127.0.0.1:8001/epochs/107/computors
{
"computors": {
"epoch": 107,
"identities": [
"OTSWYJAUPATSAHMJBEYVRCPZXJPAYQOEWWYEZKUTWELLTLKHCPPGWXBCXVVH",
"AUHFHHNWLWPXEEXRCAKDWUCYRDRAZNRDNISHEDZYAFYJOUZZKYFMMWFAAFXM",
"YQZPLDQLMCWDSDETFBBABRXGNRTCZSSXFYSGBPFCZFNSSQZDJVDQYUPDNYIM",
"RGGNEEZYXQYTYFNFTLQYZKNNFMSCTBRSNZJIQGCXKAVVELCXQQQRMAKDDGOA",
"JKUYHUUTSYESTATAZVGPQCFFCHHACXLEBXJWUBNBBAFGPSRLNFLNYRPGXEHO",
"HDPWVFRQBPZREDVBVHYJLMLDACFDLPCLKGJOMFETCGEHMPVNTXVOVVHCNATJ",
"SPECJVLASVEPUGKQVXOPURMJUWYBLXAFWHPVEUHBVGAGUIZDJULCOZNGEQIC",
// ...
"SIZEQJHYGNJDIDFNXMZTJKZXUVUCUIEKGOHRJMRNNDIRIOMTTZSXUMKBXUWA"
],
"signatureHex": "77a9faf00728badab3452b64a9c75e3997128068c4bc3dab1f741264f4f95ece4b11425098debc3984f592aab7d5d827206627a3bdefa24c29797d5065650000"
}
}