RPC for archival purposes - noncesense-research-lab/archival_network GitHub Wiki

RPC for archival purposes

IsthmusCrypto

Target blocks

The archival nodes caught two different blocks at height 1636647... Let's use this to see what can be fished out via RPC. Here are the two blocks, as recorded in /opt/monerodarchive/archive.log

Orange Version, received at 2018-08-11 15:40:08.404

{"major_version": 7, "minor_version": 7, "timestamp": 1534002002, "prev_id": "a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d", "nonce": 6109, "miner_tx": {"version": 2, "unlock_time": 1636707, "vin": [ {"gen": {"height": 1636647}}], "vout": [ {"amount": 4117313238290, "target": {"key": "f05ba6757d6a018018998d582503a046138771d59cdc8c875ffd65ce5fc2fb9d"}}], "extra": [ 1, 97, 155, 0, 104, 55, 19, 206, 98, 234, 93, 95, 120, 197, 226, 241, 124, 170, 166, 141, 14, 52, 85, 87, 2, 76, 49, 230, 85, 155, 239, 21, 119, 2, 8, 3, 182, 96, 16, 82, 253, 252, 0], "rct_signatures": {"type": 0}}, "tx_hashes": [ "dc1c598843d3c2eb4069860cfea566746903844d7157554cbd422de07657a0ed", "5c6016e9612689f1a388b0789ed36a5b01a2ef4ae3902dc7cb1973f996209c57", "e5edac12c561e26fb65f8a03ce1af6f112a767c36f8be900cc7fd4274bf7a630", "20f55c531eccdf5fb91a745da3fa8fb3db670e9b6a9da378f00866d5c257755e", "f1a911e7d20ac218372ed404247394bea999b6522c483b2905a31e7fd4a680a4", "7c519b11c73381bd3a6b048ff5195bd2845f81c414cb93c56169f761177712a2", "cb06133b9612a0bac4cb31f83e51025a8b83dd2f4ca2eded6da69cee0e14a1cd", "0dcffe884a1d08a9021d5cca122c8ca655b6722ea23726d1669fc4d3b84d38b6", "69b63537a3984fcc3277fa80997afe87d8a106f254dde74ec0625836973f77be", "dd099b632afc67f05ac83f8d180e9a269083acb6ea40f0c24da79ca5ac920726"]}

Blue version, received at 2018-08-11 15:41:03.528

{"major_version": 7, "minor_version": 7, "timestamp": 1534002005, "prev_id": "a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d", "nonce": 4244652084, "miner_tx": {"version": 2, "unlock_time": 1636707, "vin": [ {"gen": {"height": 1636647}}], "vout": [ {"amount": 4117313238290, "target": {"key": "2251d9c3cd61ccd3e0b01ad67321b178b307d2075922efce71a365b51ff4737f"}}], "extra": [ 1, 78, 247, 54, 65, 107, 44, 157, 83, 85, 157, 211, 14, 253, 181, 105, 237, 69, 167, 109, 23, 97, 123, 125, 189, 137, 203, 126, 74, 60, 210, 1, 80, 2, 8, 4, 195, 207, 124, 82, 253, 252, 0], "rct_signatures": {"type": 0}}, "tx_hashes": [ "dc1c598843d3c2eb4069860cfea566746903844d7157554cbd422de07657a0ed", "5c6016e9612689f1a388b0789ed36a5b01a2ef4ae3902dc7cb1973f996209c57", "e5edac12c561e26fb65f8a03ce1af6f112a767c36f8be900cc7fd4274bf7a630", "20f55c531eccdf5fb91a745da3fa8fb3db670e9b6a9da378f00866d5c257755e", "f1a911e7d20ac218372ed404247394bea999b6522c483b2905a31e7fd4a680a4", "7c519b11c73381bd3a6b048ff5195bd2845f81c414cb93c56169f761177712a2", "cb06133b9612a0bac4cb31f83e51025a8b83dd2f4ca2eded6da69cee0e14a1cd", "0dcffe884a1d08a9021d5cca122c8ca655b6722ea23726d1669fc4d3b84d38b6", "69b63537a3984fcc3277fa80997afe87d8a106f254dde74ec0625836973f77be", "dd099b632afc67f05ac83f8d180e9a269083acb6ea40f0c24da79ca5ac920726"]}

1636647 orange was heard first, but later kicked out when 1636647 blue was released simultaneously with 1636648 blue.

Query by height

Unfortunately, RPC query by height only pulls out the blue copy.

curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_block","params":{"height":1636647}' -H 'Content-Type: application/json'
{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "blob": "0707d586bcdb05a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d344000fd02e3f26301ffa7f2630192eaf897ea77022251d9c3cd61ccd3e0b01ad67321b178b307d2075922efce71a365b51ff4737f2b014ef736416b2c9d53559dd30efdb569ed45a76d17617b7dbd89cb7e4a3cd20150020804c3cf7c52fdfc00000adc1c598843d3c2eb4069860cfea566746903844d7157554cbd422de07657a0ed5c6016e9612689f1a388b0789ed36a5b01a2ef4ae3902dc7cb1973f996209c57e5edac12c561e26fb65f8a03ce1af6f112a767c36f8be900cc7fd4274bf7a63020f55c531eccdf5fb91a745da3fa8fb3db670e9b6a9da378f00866d5c257755ef1a911e7d20ac218372ed404247394bea999b6522c483b2905a31e7fd4a680a47c519b11c73381bd3a6b048ff5195bd2845f81c414cb93c56169f761177712a2cb06133b9612a0bac4cb31f83e51025a8b83dd2f4ca2eded6da69cee0e14a1cd0dcffe884a1d08a9021d5cca122c8ca655b6722ea23726d1669fc4d3b84d38b669b63537a3984fcc3277fa80997afe87d8a106f254dde74ec0625836973f77bedd099b632afc67f05ac83f8d180e9a269083acb6ea40f0c24da79ca5ac920726",
    "block_header": {
      "block_size": 140393,
      "depth": 272,
      "difficulty": 53198323707,
      "hash": "f8b4ada9fcae3fbf14733de543cf917c43bd18d86d2e77539b4a57a822ba08cb",
      "height": 1636647,
      "major_version": 7,
      "minor_version": 7,
      "nonce": 4244652084,
      "num_txes": 10,
      "orphan_status": false,
      "pow_hash": "",
      "prev_hash": "a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d",
      "reward": 4117313238290,
      "timestamp": 1534002005
    },
    "json": "{\n  \"major_version\": 7, \n  \"minor_version\": 7, \n  \"timestamp\": 1534002005, \n  \"prev_id\": \"a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d\", \n  \"nonce\": 4244652084, \n  \"miner_tx\": {\n    \"version\": 2, \n    \"unlock_time\": 1636707, \n    \"vin\": [ {\n        \"gen\": {\n          \"height\": 1636647\n        }\n      }\n    ], \n    \"vout\": [ {\n        \"amount\": 4117313238290, \n        \"target\": {\n          \"key\": \"2251d9c3cd61ccd3e0b01ad67321b178b307d2075922efce71a365b51ff4737f\"\n        }\n      }\n    ], \n    \"extra\": [ 1, 78, 247, 54, 65, 107, 44, 157, 83, 85, 157, 211, 14, 253, 181, 105, 237, 69, 167, 109, 23, 97, 123, 125, 189, 137, 203, 126, 74, 60, 210, 1, 80, 2, 8, 4, 195, 207, 124, 82, 253, 252, 0\n    ], \n    \"rct_signatures\": {\n      \"type\": 0\n    }\n  }, \n  \"tx_hashes\": [ \"dc1c598843d3c2eb4069860cfea566746903844d7157554cbd422de07657a0ed\", \"5c6016e9612689f1a388b0789ed36a5b01a2ef4ae3902dc7cb1973f996209c57\", \"e5edac12c561e26fb65f8a03ce1af6f112a767c36f8be900cc7fd4274bf7a630\", \"20f55c531eccdf5fb91a745da3fa8fb3db670e9b6a9da378f00866d5c257755e\", \"f1a911e7d20ac218372ed404247394bea999b6522c483b2905a31e7fd4a680a4\", \"7c519b11c73381bd3a6b048ff5195bd2845f81c414cb93c56169f761177712a2\", \"cb06133b9612a0bac4cb31f83e51025a8b83dd2f4ca2eded6da69cee0e14a1cd\", \"0dcffe884a1d08a9021d5cca122c8ca655b6722ea23726d1669fc4d3b84d38b6\", \"69b63537a3984fcc3277fa80997afe87d8a106f254dde74ec0625836973f77be\", \"dd099b632afc67f05ac83f8d180e9a269083acb6ea40f0c24da79ca5ac920726\"\n  ]\n}",
    "miner_tx_hash": "cbc637928a1e26d81c3fbef432019db43831ce0b0f82563b914f982c5f45f523",
    "status": "OK",
    "tx_hashes": ["dc1c598843d3c2eb4069860cfea566746903844d7157554cbd422de07657a0ed","5c6016e9612689f1a388b0789ed36a5b01a2ef4ae3902dc7cb1973f996209c57","e5edac12c561e26fb65f8a03ce1af6f112a767c36f8be900cc7fd4274bf7a630","20f55c531eccdf5fb91a745da3fa8fb3db670e9b6a9da378f00866d5c257755e","f1a911e7d20ac218372ed404247394bea999b6522c483b2905a31e7fd4a680a4","7c519b11c73381bd3a6b048ff5195bd2845f81c414cb93c56169f761177712a2","cb06133b9612a0bac4cb31f83e51025a8b83dd2f4ca2eded6da69cee0e14a1cd","0dcffe884a1d08a9021d5cca122c8ca655b6722ea23726d1669fc4d3b84d38b6","69b63537a3984fcc3277fa80997afe87d8a106f254dde74ec0625836973f77be","dd099b632afc67f05ac83f8d180e9a269083acb6ea40f0c24da79ca5ac920726"],
    "untrusted": false
  }
}

Query by hash

Blue block

This became the main chain, so querying it is easy:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_block_header_by_hash","params":{"hash":"f8b4ada9fcae3fbf14733de543cf917c43bd18d86d2e77539b4a57a822ba08cb"}}' -H 'Content-Type: application/json'
{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "block_header": {
      "block_size": 140393,
      "depth": 272,
      "difficulty": 53198323707,
      "hash": "f8b4ada9fcae3fbf14733de543cf917c43bd18d86d2e77539b4a57a822ba08cb",
      "height": 1636647,
      "major_version": 7,
      "minor_version": 7,
      "nonce": 4244652084,
      "num_txes": 10,
      "orphan_status": false,
      "pow_hash": "",
      "prev_hash": "a51a2f7e93019a0d5385b4adfa0d238d9a92cd72ae7a15bc03c54e2d099bed2d",
      "reward": 4117313238290,
      "timestamp": 1534002005
    },
    "status": "OK",
    "untrusted": false
  }
}

Orange block

This is the original block, that became orphaned when an alternative 1636647 and 1636648 were released later. First we must find its ID:

$ grep 'HEIGHT 1636647' ~/.bitmonero/bitmonero.lo* -A 3
/home/map/.bitmonero/bitmonero.log:HEIGHT 1636647, difficulty:	53198323707
/home/map/.bitmonero/bitmonero.log-block reward: 4.117313238290(4.079570938290 + 0.037742300000), coinbase_blob_size: 94, cumulative size: 140393, 221(2/115)ms
/home/map/.bitmonero/bitmonero.log-2018-08-11 15:40:08.503	[P2P8]	INFO 	blockchain	src/cryptonote_core/blockchain.cpp:3693	Height: 1636648 blob: 94 cumm: 140393 p/t: 221 (2/115/0/0/0/1/4/98/0/0/3)ms
/home/map/.bitmonero/bitmonero.log-2018-08-11 15:40:08.514	[P2P6]	INFO 	blockchain.db.lmdb	src/blockchain_db/lmdb/db_lmdb.cpp:580	[check_and_resize_for_batch] checking DB size
--
/home/map/.bitmonero/bitmonero.log:2018-08-11 15:41:00.040	[P2P8]	INFO 	global	src/cryptonote_core/blockchain.cpp:1563	----- BLOCK ADDED AS ALTERNATIVE ON HEIGHT 1636647
/home/map/.bitmonero/bitmonero.log-id:	<f8b4ada9fcae3fbf14733de543cf917c43bd18d86d2e77539b4a57a822ba08cb>
/home/map/.bitmonero/bitmonero.log-PoW:	<5db9c064625aa7c020501fde9efe91a6ccca7c24ebc1ff9576b7c00f00000000>
/home/map/.bitmonero/bitmonero.log-difficulty:	53198323707
--
/home/map/.bitmonero/bitmonero.log:HEIGHT 1636647, difficulty:	53198323707
/home/map/.bitmonero/bitmonero.log-block reward: 4.117313238290(4.079570938290 + 0.037742300000), coinbase_blob_size: 94, cumulative size: 140393, 142(0/54)ms
/home/map/.bitmonero/bitmonero.log-2018-08-11 15:41:00.362	[P2P8]	INFO 	blockchain	src/cryptonote_core/blockchain.cpp:3693	Height: 1636648 blob: 94 cumm: 140393 p/t: 142 (0/54/0/0/0/2/3/83/0/0/4)ms
/home/map/.bitmonero/bitmonero.log-2018-08-11 15:41:00.407	[P2P9]	INFO 	net.p2p.msg	src/cryptonote_protocol/cryptonote_protocol_handler.inl:1609	[13.125.122.37:37780 INC] Received NOTIFY_RESPONSE_CHAIN_ENTRY: m_block_ids.size()=3, m_start_height=1636646, m_total_height=1636649
--
/home/map/.bitmonero/bitmonero.log:2018-08-11 15:41:00.473	[P2P8]	INFO 	global	src/cryptonote_core/blockchain.cpp:1563	----- BLOCK ADDED AS ALTERNATIVE ON HEIGHT 1636647
/home/map/.bitmonero/bitmonero.log-id:	<b4f9a75e797cffe733db05f2d82f9aa97bd72f5211906e4fd8ed765e83123095>
/home/map/.bitmonero/bitmonero.log-PoW:	<d90b02a399410dd8199cf71fc678b5c2af3d20339e69d71db740b30d00000000>
/home/map/.bitmonero/bitmonero.log-difficulty:	53198323707

We are looking for block b4f9a75e797cffe733db05f2d82f9aa97bd72f5211906e4fd8ed765e83123095

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_block_header_by_hash","params":{"hash":"b4f9a75e797cffe733db05f2d82f9aa97bd72f5211906e4fd8ed765e83123095"}}' -H 'Content-Type: application/json'
{
  "error": {
    "code": -32700,
    "message": "Parse error"
  },
  "id": 0,
  "jsonrpc": ""

Is this truly a parse error? The syntax is exactly the same for querying the blue block by has and the orange block by has. Can RPC not access alternative blocks? Or is this error incorrectly labeled?