From a978f76f08cfc641d45b31fc4195aa51dcaaa7e0 Mon Sep 17 00:00:00 2001 From: swampdaddy Date: Fri, 13 Mar 2026 17:11:47 +0000 Subject: [PATCH] opp_parser: relay script + event parser + 116 parsed Ethereum OPP messages - relay.ts: automated Ethereum->Wire operator relay pipeline - parse_balances.ts: Ethereum OPP event parser - types.ts: assertion type constants (2001-3006) - opp_events_current.json: 116 parsed messages from Hoodi outpost --- opp_events_current.json | 6080 ++++++++++++++++++++++++++++++++++++ package.json | 30 + src/compare_balances.ts | 253 ++ src/parse_balances.test.ts | 1164 +++++++ src/parse_balances.ts | 366 +++ src/relay.ts | 462 +++ src/types.ts | 90 + tsconfig.json | 19 + 8 files changed, 8464 insertions(+) create mode 100644 opp_events_current.json create mode 100644 package.json create mode 100644 src/compare_balances.ts create mode 100644 src/parse_balances.test.ts create mode 100644 src/parse_balances.ts create mode 100644 src/relay.ts create mode 100644 src/types.ts create mode 100644 tsconfig.json diff --git a/opp_events_current.json b/opp_events_current.json new file mode 100644 index 0000000..c595a07 --- /dev/null +++ b/opp_events_current.json @@ -0,0 +1,6080 @@ +[ + { + "name": "OPPMessage", + "blockNumber": 24301512, + "transactionHash": "0xf9c6484dfd0e0ced2309b462fbce9dbc3ea53dc4c6097d24bd7004d1453209ab", + "index": 146, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000013202e9b59b656ff5098f04818b44e36963cb008641ed0dae", + "previousMessageID": "0x0000000000000000000000000000000000000000000000000000000000000000", + "payloadHash": "0x6ffd3963d339f1f1399829be892ccfa95a6a4d9dd94156f868aa2e7234ba6248", + "timestamp": { + "__bigint__": "1769219855" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x148c090889757820c2b109dd1d68ee25befa3666cb00002876e1158d0500000000000000000000000000000000000000000000000000002876e1158d05000000000000000000000000000000000000000000000000000000e83c80d09f3c2e3b030000000000000000000000000000000000000000", + "args": { + "staker": "0x8c090889757820c2b109dd1d68ee25befa3666cb", + "principal": { + "__bigint__": "400000000000000000" + }, + "shares": { + "__bigint__": "400000000000000000" + }, + "index": { + "__bigint__": "1000000000000000000000000000" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301523, + "transactionHash": "0x493c82879f91c69288f8805fe10a03d7ecc943de797639847ddba506e24ea704", + "index": 36, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000002db162c6c9c3137a42e82085741f7e0fb42b59e4ea1dabf39", + "previousMessageID": "0x00000000000000013202e9b59b656ff5098f04818b44e36963cb008641ed0dae", + "payloadHash": "0x8b7da79928ecc250a4f9f5cb32ef5c647336358870fc50dd70e3a69b21d6c103", + "timestamp": { + "__bigint__": "1769219987" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x148c090889757820c2b109dd1d68ee25befa3666cb0000514c516f1f14000000000000000000000000000000000000000000000000832c3f20636cf01300000000000000000000000000000000000000000000000000c40e65a578ca9d84cc42030000000000000000000000000000000000000000", + "args": { + "staker": "0x8c090889757820c2b109dd1d68ee25befa3666cb", + "principal": { + "__bigint__": "1450000000000000000" + }, + "shares": { + "__bigint__": "1436767454129761411" + }, + "index": { + "__bigint__": "1009209942661356730000000000" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301535, + "transactionHash": "0x338518a2cbb883520fa6eba9d482a4c4087780d842f3ab9f2d87fbf35e0a5896", + "index": 162, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000036e1b7a03c90b4ee3c6be8d26de8dfbfd58913904c42c62c8", + "previousMessageID": "0x0000000000000002db162c6c9c3137a42e82085741f7e0fb42b59e4ea1dabf39", + "payloadHash": "0x3d9de9295727acf4164cc3b161971544a534756e95e2e38cecc957131c32e8f5", + "timestamp": { + "__bigint__": "1769220131" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x141e0bb67b167ba7006ac3f62a75ce4552f4bce23a00008e33009585000000000000000000000000000000000000000000000000007207a923e0598400000000000000000000000000000000000000000000000000a40c1d3f14eabbb6bcdf42030000000000000000000000000000000000000000", + "args": { + "staker": "0x1e0bb67b167ba7006ac3f62a75ce4552f4bce23a", + "principal": { + "__bigint__": "37600000000000000" + }, + "shares": { + "__bigint__": "37253516131633010" + }, + "index": { + "__bigint__": "1009300702439541828210199716" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301595, + "transactionHash": "0xd5124e74b2f9dccf1b735febb81ad693be7a08e3ed9b3e1f7261f2adbb7807ef", + "index": 123, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000004cc91f1d9da60de8ffd40c69972b83a9b0488e2edfcf99062", + "previousMessageID": "0x00000000000000036e1b7a03c90b4ee3c6be8d26de8dfbfd58913904c42c62c8", + "payloadHash": "0x19e41ae0ac4bbb933b7fb13b93e84357bd55ce1f916f8190c6814133c725ebfc", + "timestamp": { + "__bigint__": "1769220863" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14f2d3608a3ba8e3d05886cedb83b04652edc629c000c071f58b0cc02000000000000000000000000000000000000000000000000026150a46264051200000000000000000000000000000000000000000000000005ebf9ac409574c6a2e4246030000000000000000000000000000000000000000", + "args": { + "staker": "0xf2d3608a3ba8e3d05886cedb83b04652edc629c0", + "principal": { + "__bigint__": "2359900000000000000" + }, + "shares": { + "__bigint__": "2328713015455257894" + }, + "index": { + "__bigint__": "1013392369234748801342422878" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301599, + "transactionHash": "0xe3fb355518f993ed0afc1da7d305cf8da5c2935349ca59795a73939a2bb4df74", + "index": 136, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000005acd1402dba63f04a7e89e755e578b4abd04723a9f15577fd", + "previousMessageID": "0x0000000000000004cc91f1d9da60de8ffd40c69972b83a9b0488e2edfcf99062", + "payloadHash": "0x8039fbd49f41fedb075f89b841e297c5b4123b3ca0c4ed52870e54728e65079f", + "timestamp": { + "__bigint__": "1769220911" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x147412bc256355abd22dd53de3a38e8995b5d4c1d10080c3b8f9b75f0100000000000000000000000000000000000000000000000080e2bd905ae63fdc0f000000000000000000000000000000000000000000000000f378e22d552ade340000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x7412bc256355abd22dd53de3a38e8995b5d4c1d1", + "ethIn": { + "__bigint__": "99000000000000000" + }, + "usdValue": { + "__bigint__": "292571817994170000000" + }, + "pretokensOut": { + "__bigint__": "975239393313900000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x147412bc256355abd22dd53de3a38e8995b5d4c1d10080c3b8f9b75f010000000000000000000000000000000000000000000000006e26890810125b010000000000000000000000000000000000000000000000005ebf9ac409574c6a2e4246030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x7412bc256355abd22dd53de3a38e8995b5d4c1d1", + "principal": { + "__bigint__": "99000000000000000" + }, + "shares": { + "__bigint__": "97691676990580334" + }, + "index": { + "__bigint__": "1013392369234748801342422878" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301621, + "transactionHash": "0x215279c4a771f92a464f209b09feffbefbb02b39ba8c9630301c42f7d9f79f75", + "index": 173, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000639c954d5b47211fa1328287d4ae6bb86447827765c5c5e60", + "previousMessageID": "0x0000000000000005acd1402dba63f04a7e89e755e578b4abd04723a9f15577fd", + "payloadHash": "0x72c7571d565375b439ad6a2e9f626f664581457848c2bff9841ed27a872fe067", + "timestamp": { + "__bigint__": "1769221175" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700c0471b863e7903000000000000000000000000000000000000000000000000d1ff186307da6803000000000000000000000000000000000000000000000000110a21deaafb2c9027b74a030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "250300000000000000" + }, + "shares": { + "__bigint__": "245685904953901009" + }, + "index": { + "__bigint__": "1018780462993856936575830545" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301624, + "transactionHash": "0x6c67dd77fb2a253c72e884b2930700e9cb3f760be860f4394d713c8d140da89a", + "index": 32, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000790541200d01b2a25e203d5ddde2c25c7acadad272aa5eb0b", + "previousMessageID": "0x000000000000000639c954d5b47211fa1328287d4ae6bb86447827765c5c5e60", + "payloadHash": "0x31adb6ff076fa6c308a28de09ff9e7d2405246cc93faae9b9f189cbe9aea0bc3", + "timestamp": { + "__bigint__": "1769221211" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1442340ea1f5051b111ce3fe8275009bea28e7923344201d76031d7d0000000000000000000000000000000000000000000000000059f0fdb141cb4fa40500000000000000000000000000000000000000000000007e764e5130505fce120000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x42340ea1f5051b111ce3fe8275009bea28e79233", + "ethIn": { + "__bigint__": "35216272792559684" + }, + "usdValue": { + "__bigint__": "104073625796947603545" + }, + "pretokensOut": { + "__bigint__": "346912085989825345150" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1442340ea1f5051b111ce3fe8275009bea28e7923344201d76031d7d000000000000000000000000000000000000000000000000004cb95f1795ce7a00000000000000000000000000000000000000000000000000110a21deaafb2c9027b74a030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x42340ea1f5051b111ce3fe8275009bea28e79233", + "principal": { + "__bigint__": "35216272792559684" + }, + "shares": { + "__bigint__": "34567086896298316" + }, + "index": { + "__bigint__": "1018780462993856936575830545" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301639, + "transactionHash": "0x7e43ee68fc4c41b687f9869e8ba6af205bebcc6d768cc70093c0a0ce475ac686", + "index": 3, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000086c91ebb8842b2ebaebd399a938ad2eb82eb561f28a2d902c", + "previousMessageID": "0x000000000000000790541200d01b2a25e203d5ddde2c25c7acadad272aa5eb0b", + "payloadHash": "0xbf36fb43a18ac454a00ae7b4b186a2bf410a7a245a5edf6ac5dbb74b9d7adcc2", + "timestamp": { + "__bigint__": "1769221391" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700007a3c54c3e730000000000000000000000000000000000000000000000000c4da0f9d469adc2f000000000000000000000000000000000000000000000000cdffe4af9ee39d417e374d030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "3524000000000000000" + }, + "shares": { + "__bigint__": "3448801042732407492" + }, + "index": { + "__bigint__": "1021804376748858225021222861" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301645, + "transactionHash": "0xec6af964027e7c702facd309f4bbd80de6b597fa6c3b7977e05acf32f4ec7d18", + "index": 54, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000995b3daeed9590819d04205a9a2c44e3bdf0c50f65ed9b54a", + "previousMessageID": "0x00000000000000086c91ebb8842b2ebaebd399a938ad2eb82eb561f28a2d902c", + "payloadHash": "0x142c6ee828c4c94970e919b0c2fb10b8382f201a6bebeb899dad614a3e446516", + "timestamp": { + "__bigint__": "1769221463" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14d88d0f65f09ac87b3ca954e19eae8cddae7f36784032f265ad594a610000000000000000000000000000000000000000000000009305e2699d840bd5620400000000000000000000000000000000000000000000d3daa3de3690a4f4260e00000000000000000000000000000000000000000000", + "args": { + "buyer": "0xd88d0f65f09ac87b3ca954e19eae8cddae7f3678", + "ethIn": { + "__bigint__": "7010514371230184000" + }, + "usdValue": { + "__bigint__": "20712598360268560532883" + }, + "pretokensOut": { + "__bigint__": "66831735408382768831187" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14d88d0f65f09ac87b3ca954e19eae8cddae7f36784032f265ad594a61000000000000000000000000000000000000000000000000c8c34eb2811d215f0000000000000000000000000000000000000000000000006b63a823602c7d82cbf84d030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xd88d0f65f09ac87b3ca954e19eae8cddae7f3678", + "principal": { + "__bigint__": "7010514371230184000" + }, + "shares": { + "__bigint__": "6854792550714098632" + }, + "index": { + "__bigint__": "1022717218553880676124877675" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301648, + "transactionHash": "0x2f216b459c185a7eb6e717b345cf475e5c8689d35798f0e30420c83ea83af40c", + "index": 31, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000a1aae689231d1c30f5b7ac4a6cfd1e5edb7411ed5dd9863b1", + "previousMessageID": "0x000000000000000995b3daeed9590819d04205a9a2c44e3bdf0c50f65ed9b54a", + "payloadHash": "0x2cb5e5e676c4543ebe3bfa84a24e12fd1b2d410515e17b8c9efc788c0c7f3f77", + "timestamp": { + "__bigint__": "1769221499" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f70000194295d431450000000000000000000000000000000000000000000000005c38c5b6e9eaa443000000000000000000000000000000000000000000000000c2bd6eb0895a698ed8234e030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "4986000000000000000" + }, + "shares": { + "__bigint__": "4874278986236377180" + }, + "index": { + "__bigint__": "1022920520979429414004506050" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301653, + "transactionHash": "0x72a4204e4c6a63f3c758fa6e660cc786359989f61c1205fa6298c64691f25abc", + "index": 60, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000bace1cdb81b4c7fff93e87cbe80932185441a1fe646af1411", + "previousMessageID": "0x000000000000000a1aae689231d1c30f5b7ac4a6cfd1e5edb7411ed5dd9863b1", + "payloadHash": "0x2d1ddb6f590156b85cb33eae88274ceb910d336240cbae2c2c0a81fe77349a7b", + "timestamp": { + "__bigint__": "1769221559" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad000082dfe40d4700000000000000000000000000000000000000000000000000247be96a50764500000000000000000000000000000000000000000000000000c2bd6eb0895a698ed8234e030000000000000000000000000000000000000000", + "args": { + "staker": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "principal": { + "__bigint__": "20000000000000000" + }, + "shares": { + "__bigint__": "19551861156182820" + }, + "index": { + "__bigint__": "1022920520979429414004506050" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301660, + "transactionHash": "0xa20a7226930bf21ea31cd458c821f85f05395c30e0f5e85d7ea54ba04ed7ffa9", + "index": 45, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000c3417a4a5e03c2de4a62a07e9f979c5a3aee1cd6208db7f61", + "previousMessageID": "0x000000000000000bace1cdb81b4c7fff93e87cbe80932185441a1fe646af1411", + "payloadHash": "0xb3a429c9adb2dd1e807346baf3a1bb15d8275c24d9be2a40846db7eea785c430", + "timestamp": { + "__bigint__": "1769221643" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f70000e2bc64908c4d000000000000000000000000000000000000000000000000973324c4ff8fc04b00000000000000000000000000000000000000000000000099198c50b661023d40cd4e030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "5588000000000000000" + }, + "shares": { + "__bigint__": "5458521077043180439" + }, + "index": { + "__bigint__": "1023720513510768898411862425" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301660, + "transactionHash": "0xcc7288b4c9aef6d14fe5fd523e4dbc114c764709be619bdae904a9800c9ceacb", + "index": 50, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000dfcedc734661129a640c47746cf584db1e6259ea3b650b649", + "previousMessageID": "0x000000000000000c3417a4a5e03c2de4a62a07e9f979c5a3aee1cd6208db7f61", + "payloadHash": "0x92d6753c61c616d76c2d48d953cf864ced8b526e0a12e9aeffa4e8241f7d5569", + "timestamp": { + "__bigint__": "1769221643" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14d88d0f65f09ac87b3ca954e19eae8cddae7f36780000fb23f777016100000000000000000000000000000000000000000000000082bd44761a0ec25e00000000000000000000000000000000000000000000000099198c50b661023d40cd4e030000000000000000000000000000000000000000", + "args": { + "staker": "0xd88d0f65f09ac87b3ca954e19eae8cddae7f3678", + "principal": { + "__bigint__": "6990000000000000000" + }, + "shares": { + "__bigint__": "6828035491863248258" + }, + "index": { + "__bigint__": "1023720513510768898411862425" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301672, + "transactionHash": "0x2ee6252f97cedc9ef6a04d6c63147906f42e54bbf7bd2bd29cb832e4f1b0a132", + "index": 103, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000ed783045538d7329cc3fefc7257fe21ff18a6dcd20da4f66c", + "previousMessageID": "0x000000000000000dfcedc734661129a640c47746cf584db1e6259ea3b650b649", + "payloadHash": "0x99456646491bf71b243d83aa7369b7c2672e187cb9cfc632327dd8e1e6a0a81e", + "timestamp": { + "__bigint__": "1769221787" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x148c090889757820c2b109dd1d68ee25befa3666cb0000e9e5d39cb0050000000000000000000000000000000000000000000000000080799a67f1d0aa4100000000000000000000000000000000000000000000000a0b2b896686eed0c90000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x8c090889757820c2b109dd1d68ee25befa3666cb", + "ethIn": { + "__bigint__": "410000000000000000" + }, + "usdValue": { + "__bigint__": "1211346968000000000000" + }, + "pretokensOut": { + "__bigint__": "3722850677194912107274" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x148c090889757820c2b109dd1d68ee25befa3666cb0000e9e5d39cb005000000000000000000000000000000000000000000000000d90b86d991dc8e0500000000000000000000000000000000000000000000000099198c50b661023d40cd4e030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x8c090889757820c2b109dd1d68ee25befa3666cb", + "principal": { + "__bigint__": "410000000000000000" + }, + "shares": { + "__bigint__": "400499935860362201" + }, + "index": { + "__bigint__": "1023720513510768898411862425" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301678, + "transactionHash": "0x2a85199d648bb6b66d0c920e994238d4964ff4d209d309035ece23cc830fdad3", + "index": 62, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000000f122fd8f76ab32fe23d5cc7d22a5f1d7224fe96381cba7716", + "previousMessageID": "0x000000000000000ed783045538d7329cc3fefc7257fe21ff18a6dcd20da4f66c", + "payloadHash": "0x1cf7ae5a0dfc42f493110e2453c67e30986e6a8b1f8bd1d1ec4de18b08383e5e", + "timestamp": { + "__bigint__": "1769221859" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x148c090889757820c2b109dd1d68ee25befa3666cb00609f1a1dff140000000000000000000000000000000000000000000000000076469c499182140000000000000000000000000000000000000000000000000099198c50b661023d40cd4e030000000000000000000000000000000000000000", + "args": { + "staker": "0x8c090889757820c2b109dd1d68ee25befa3666cb", + "principal": { + "__bigint__": "5910000000000000" + }, + "shares": { + "__bigint__": "5773060051060342" + }, + "index": { + "__bigint__": "1023720513510768898411862425" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301704, + "transactionHash": "0x599817537197ea36c172ba9bd0d363e51fc3a0dfb4d3211720ea1719a2aded1d", + "index": 66, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000010759c1d101b14aa4a4a47b7b157cec57327b1aa1609e18a0a", + "previousMessageID": "0x000000000000000f122fd8f76ab32fe23d5cc7d22a5f1d7224fe96381cba7716", + "payloadHash": "0x1b3aeee0c13da0b12c485f612f39acab5168f19c01cceceefb711c7233887b92", + "timestamp": { + "__bigint__": "1769222171" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1463503551976e92c9cf7f7f1d2e27e02e6e9301390000c7eed829bc120000000000000000000000000000000000000000000000000080ce4da6fbaf38d8000000000000000000000000000000000000000000000000000512da9805f27b0200000000000000000000000000000000000000000000", + "args": { + "buyer": "0x63503551976e92c9cf7f7f1d2e27e02e6e930139", + "ethIn": { + "__bigint__": "1350000000000000000" + }, + "usdValue": { + "__bigint__": "3988581480000000000000" + }, + "pretokensOut": { + "__bigint__": "11731122000000000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1463503551976e92c9cf7f7f1d2e27e02e6e9301390000c7eed829bc1200000000000000000000000000000000000000000000000066ce3b2cf4174c120000000000000000000000000000000000000000000000002e652769354083b5aff84e030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x63503551976e92c9cf7f7f1d2e27e02e6e930139", + "principal": { + "__bigint__": "1350000000000000000" + }, + "shares": { + "__bigint__": "1318455128394288742" + }, + "index": { + "__bigint__": "1023925631541309193941640494" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301709, + "transactionHash": "0x162710389648654ddac3f93411b57f97d0c23dde82706cecb1a22034c7ce7e9a", + "index": 112, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001146e67e45453ccb5f6bfd18ae06aeeea50dcbb61b10649eee", + "previousMessageID": "0x0000000000000010759c1d101b14aa4a4a47b7b157cec57327b1aa1609e18a0a", + "payloadHash": "0xe814851583ee456472ce8d9de1330cdb07f136c84742f0f77fd4b5a94a870e26", + "timestamp": { + "__bigint__": "1769222231" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1459708a095fb44a9054f9ba3b2fb82fce07b182c1400dc748527c1104000000000000000000000000000000000000000000000000e06e4efa6b4bd2f32e0000000000000000000000000000000000000000000000c0eb22d179836a188a0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x59708a095fb44a9054f9ba3b2fb82fce07b182c1", + "ethIn": { + "__bigint__": "293152143605960000" + }, + "usdValue": { + "__bigint__": "866119415414098128608" + }, + "pretokensOut": { + "__bigint__": "2547410045335582731200" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1459708a095fb44a9054f9ba3b2fb82fce07b182c1400dc748527c1104000000000000000000000000000000000000000000000000ef42fa8f5126f9030000000000000000000000000000000000000000000000002e652769354083b5aff84e030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x59708a095fb44a9054f9ba3b2fb82fce07b182c1", + "principal": { + "__bigint__": "293152143605960000" + }, + "shares": { + "__bigint__": "286302183064486639" + }, + "index": { + "__bigint__": "1023925631541309193941640494" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301715, + "transactionHash": "0x75cd98606b71c36b805511a202820aa3ef8dd4ffb93dd296619d07e98eaaa6f1", + "index": 26, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000123171ef2177e9098e5215844d07688b943e4aedf78429ceea", + "previousMessageID": "0x000000000000001146e67e45453ccb5f6bfd18ae06aeeea50dcbb61b10649eee", + "payloadHash": "0x5f63f892b5b824ca34a156d3dd0ac31dd8757853d578feae63f7c73c7a7166a5", + "timestamp": { + "__bigint__": "1769222303" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1442340ea1f5051b111ce3fe8275009bea28e792335a0223a1131a7f00000000000000000000000000000000000000000000000000d2b96df8b90fe3ba0500000000000000000000000000000000000000000000002dc85180aa975fda100000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x42340ea1f5051b111ce3fe8275009bea28e79233", + "ethIn": { + "__bigint__": "35775993652380250" + }, + "usdValue": { + "__bigint__": "105700344970726980050" + }, + "pretokensOut": { + "__bigint__": "310883367560961706029" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1442340ea1f5051b111ce3fe8275009bea28e792335a0223a1131a7f000000000000000000000000000000000000000000000000007d0142fcc5217c000000000000000000000000000000000000000000000000002e652769354083b5aff84e030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x42340ea1f5051b111ce3fe8275009bea28e79233", + "principal": { + "__bigint__": "35775993652380250" + }, + "shares": { + "__bigint__": "34940031336579453" + }, + "index": { + "__bigint__": "1023925631541309193941640494" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301730, + "transactionHash": "0xd884c7f960ec8750977426c5d46e009c3e959f8d2fbefb54425a3cb98eb6ff6d", + "index": 42, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001361c7032d645f99ce7598fcc02787c8fffd94dd27c89b48d4", + "previousMessageID": "0x00000000000000123171ef2177e9098e5215844d07688b943e4aedf78429ceea", + "payloadHash": "0xf1905078018ccb425b045e313d81ef1e381764b7b36e8f03c49c3ead5161afbf", + "timestamp": { + "__bigint__": "1769222483" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1492bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c000024b717fafe040000000000000000000000000000000000000000000000001dd0eeeb52fce004000000000000000000000000000000000000000000000000b664aa2f68fbbe91150b4f030000000000000000000000000000000000000000", + "args": { + "staker": "0x92bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c", + "principal": { + "__bigint__": "360000000000000000" + }, + "shares": { + "__bigint__": "351558204010713117" + }, + "index": { + "__bigint__": "1024012513128635830943507638" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301734, + "transactionHash": "0xe03474712879428fb0551ddf17f683ef22fc110f11107962b8f9e0fe7430ae14", + "index": 9, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001493f9a45dd7e1d977a8473743d009b358d40ae45339f2b956", + "previousMessageID": "0x000000000000001361c7032d645f99ce7598fcc02787c8fffd94dd27c89b48d4", + "payloadHash": "0xb3b7ed54dc9242618d65b5e86bc12f99557af435a32774d1814b3ece67ef7e0a", + "timestamp": { + "__bigint__": "1769222531" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1498eff980c57c9d333340b3856481bf7b8698987cdc6508385d017b12000000000000000000000000000000000000000000000000cab9bdc4ccf3b148d5000000000000000000000000000000000000000000000052042ecae19f474e730200000000000000000000000000000000000000000000", + "args": { + "buyer": "0x98eff980c57c9d333340b3856481bf7b8698987c", + "ethIn": { + "__bigint__": "1331659614701774300" + }, + "usdValue": { + "__bigint__": "3934394723602542737866" + }, + "pretokensOut": { + "__bigint__": "11571749187066302170194" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1498eff980c57c9d333340b3856481bf7b8698987cdc6508385d017b12000000000000000000000000000000000000000000000000c7207119e1100c12000000000000000000000000000000000000000000000000b664aa2f68fbbe91150b4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x98eff980c57c9d333340b3856481bf7b8698987c", + "principal": { + "__bigint__": "1331659614701774300" + }, + "shares": { + "__bigint__": "1300432951383761095" + }, + "index": { + "__bigint__": "1024012513128635830943507638" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301735, + "transactionHash": "0xa6d6020989cd570df75ad0af8db6d73445d05aab900205d6cc01930884dabe44", + "index": 22, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000015e7aac6ad9224ee834b1288b9f586adf1215577a08405cd35", + "previousMessageID": "0x000000000000001493f9a45dd7e1d977a8473743d009b358d40ae45339f2b956", + "payloadHash": "0xb77c7a3003d1ec826dd0829c53e95e6ca80e9103df03a1770edaef0643e7859b", + "timestamp": { + "__bigint__": "1769222543" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14cd8adc0faa1ce9283e2f8960e2b20854d6f15f650000c68e4ae6b609000000000000000000000000000000000000000000000000000091b65fbb641d70000000000000000000000000000000000000000000000000003255ecf9dcbf490100000000000000000000000000000000000000000000", + "args": { + "buyer": "0xcd8adc0faa1ce9283e2f8960e2b20854d6f15f65", + "ethIn": { + "__bigint__": "700000000000000000" + }, + "usdValue": { + "__bigint__": "2068153360000000000000" + }, + "pretokensOut": { + "__bigint__": "6082804000000000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14cd8adc0faa1ce9283e2f8960e2b20854d6f15f650000c68e4ae6b60900000000000000000000000000000000000000000000000000ea33e74b957c09000000000000000000000000000000000000000000000000b664aa2f68fbbe91150b4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xcd8adc0faa1ce9283e2f8960e2b20854d6f15f65", + "principal": { + "__bigint__": "700000000000000000" + }, + "shares": { + "__bigint__": "683585396687497728" + }, + "index": { + "__bigint__": "1024012513128635830943507638" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301752, + "transactionHash": "0x9051ea163e329eff7e54aecebd04bb6fb8ea0f1be4969d8f2a61c8480ea40e53", + "index": 3, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000016f47cc20de46b45f3c3442f86d4b1877a1bbf1eb5aafc038a", + "previousMessageID": "0x0000000000000015e7aac6ad9224ee834b1288b9f586adf1215577a08405cd35", + "payloadHash": "0x74825e8d2ccae71eac4986f6fb353f37568d0e97d243226092a267d4a1817643", + "timestamp": { + "__bigint__": "1769222747" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14a92af302fb88486f2b013d2931f6529df173bf4f0000c16ff2862300000000000000000000000000000000000000000000000000d58c1c9d08ae2200000000000000000000000000000000000000000000000000045ef40397edc2110a644f030000000000000000000000000000000000000000", + "args": { + "staker": "0xa92af302fb88486f2b013d2931f6529df173bf4f", + "principal": { + "__bigint__": "10000000000000000" + }, + "shares": { + "__bigint__": "9761501227027669" + }, + "index": { + "__bigint__": "1024432591609165089581850116" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301753, + "transactionHash": "0xe59560252ddd808e1e9ac96d4b6865d2671ab8028726fc8de680354f3b2633f0", + "index": 8, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000173e024d1f56aa5ec17abc1ac00ddf656935f3d36c7a812a23", + "previousMessageID": "0x0000000000000016f47cc20de46b45f3c3442f86d4b1877a1bbf1eb5aafc038a", + "payloadHash": "0xb3b850a6bdd14c83cf0fdb7d13b43648d7bcdaf87e518a4527d9108bb6261ac6", + "timestamp": { + "__bigint__": "1769222759" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0080a5663566c3000000000000000000000000000000000000000000000000000040426f68071ccf080000000000000000000000000000000000000000000000008068747ecaace8190000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "ethIn": { + "__bigint__": "55000000000000000" + }, + "usdValue": { + "__bigint__": "162497764000000000000" + }, + "pretokensOut": { + "__bigint__": "477934600000000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0080a5663566c30000000000000000000000000000000000000000000000000093061d602fbdbe00000000000000000000000000000000000000000000000000045ef40397edc2110a644f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "principal": { + "__bigint__": "55000000000000000" + }, + "shares": { + "__bigint__": "53688256748652179" + }, + "index": { + "__bigint__": "1024432591609165089581850116" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301757, + "transactionHash": "0xe4c068a91b207387d2a59a39f0455200ed5ea4e283b8f3d476ff70ffd45bbe02", + "index": 41, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000018f80b4a6a475d161636f836e9f2d93f5038546832453e3a6d", + "previousMessageID": "0x00000000000000173e024d1f56aa5ec17abc1ac00ddf656935f3d36c7a812a23", + "payloadHash": "0x12fd05dda6656ae973faeabade4ad7443700fc0395fb1938850a6445efcdd7ee", + "timestamp": { + "__bigint__": "1769222807" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1498eff980c57c9d333340b3856481bf7b8698987c000031157383353300000000000000000000000000000000000000000000000094358c102f75fc3100000000000000000000000000000000000000000000000047796014294cb534be6a4f030000000000000000000000000000000000000000", + "args": { + "staker": "0x98eff980c57c9d333340b3856481bf7b8698987c", + "principal": { + "__bigint__": "3690000000000000000" + }, + "shares": { + "__bigint__": "3601882646991091092" + }, + "index": { + "__bigint__": "1024464248740174698259708231" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301764, + "transactionHash": "0x77fd0347c74cb24714b1806dfe91024e5cc4f6dbfcff122f3fe2bea8db930d57", + "index": 19, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000019780d9cbf488178f724754ebe73c8ec079c6f09df6e93996d", + "previousMessageID": "0x0000000000000018f80b4a6a475d161636f836e9f2d93f5038546832453e3a6d", + "payloadHash": "0x40b4bddd1ee69b0e7e72d13de74b4c077d78616ebca7db4da5ce565c9125bdd4", + "timestamp": { + "__bigint__": "1769222891" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14b24846e6103187602009f84be785aa3a438f967500c0e47768fc4c0400000000000000000000000000000000000000000000000051be81c9c2b1320400000000000000000000000000000000000000000000000047796014294cb534be6a4f030000000000000000000000000000000000000000", + "args": { + "staker": "0xb24846e6103187602009f84be785aa3a438f9675", + "principal": { + "__bigint__": "309900000000000000" + }, + "shares": { + "__bigint__": "302499575149739601" + }, + "index": { + "__bigint__": "1024464248740174698259708231" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301790, + "transactionHash": "0x72acdd44a093b6ab848d8389a2f7d49dc144410bbe9d0aaddd09f7b6c066e426", + "index": 32, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001a6c34a439a518fea471c016b692c486ff102fae1faaaaea03", + "previousMessageID": "0x0000000000000019780d9cbf488178f724754ebe73c8ec079c6f09df6e93996d", + "payloadHash": "0x86524380188334afca7dc3c82195d75831d75ef1887ba3a0260757ed891e83f9", + "timestamp": { + "__bigint__": "1769223203" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1492bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c000024b717fafe040000000000000000000000000000000000000000000000001dd0eeeb52fce00400000000000000000000000000000000000000000000000047796014294cb534be6a4f0300000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x92bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c", + "amount": { + "__bigint__": "360000000000000000" + }, + "shares": { + "__bigint__": "351558204010713117" + }, + "index": { + "__bigint__": "1024464248740174698259708231" + }, + "tokenId": { + "__bigint__": "19" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301799, + "transactionHash": "0x78b23315bdd5978132f51cf85f134508b1c5407bff6aadc93a54420d218b61f5", + "index": 220, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001b774823b7c5b82987abd8bd72e789038751948e6b36d953f2", + "previousMessageID": "0x000000000000001a6c34a439a518fea471c016b692c486ff102fae1faaaaea03", + "payloadHash": "0xabc73effd2a716636f9029a8b3bf7fc20018502c4d82a03a12772da3edca3f77", + "timestamp": { + "__bigint__": "1769223311" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1492bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c000024b717fafe040000000000000000000000000000000000000000000000000000267b4e76b7a8390000000000000000000000000000000000000000000000069c3c9ec6b22458a90000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x92bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c", + "ethIn": { + "__bigint__": "360000000000000000" + }, + "usdValue": { + "__bigint__": "1063621728000000000000" + }, + "pretokensOut": { + "__bigint__": "3123851146397541506054" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1492bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c000024b717fafe0400000000000000000000000000000000000000000000000001e62cc3556fe00400000000000000000000000000000000000000000000000047796014294cb534be6a4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x92bf7cc6bc3ad370bfce2916bf23a2cfb0fa8e0c", + "principal": { + "__bigint__": "360000000000000000" + }, + "shares": { + "__bigint__": "351403185072301569" + }, + "index": { + "__bigint__": "1024464248740174698259708231" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301813, + "transactionHash": "0x873f642bf577831857ae91413f63c6528a93e65c7b0fb6c7e443e6fb5009b2a2", + "index": 17, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001ca7aa8e4f9333eb2f0d78bbd01c1956ad27e719faeb5484ae", + "previousMessageID": "0x000000000000001b774823b7c5b82987abd8bd72e789038751948e6b36d953f2", + "payloadHash": "0xf31e71b8832ae8d92866b6361ff0dd055c2775b6705577d49144c923a112c8b0", + "timestamp": { + "__bigint__": "1769223479" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0000c52ebca2b1000000000000000000000000000000000000000000000000000080531f197b1902080000000000000000000000000000000000000000000000380eaf01d48eb83e160000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "ethIn": { + "__bigint__": "50000000000000000" + }, + "usdValue": { + "__bigint__": "147725240000000000000" + }, + "pretokensOut": { + "__bigint__": "410347888888888888888" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0000c52ebca2b10000000000000000000000000000000000000000000000000019c31bea9364ad00000000000000000000000000000000000000000000000000f59cdee98605bce0cf6b4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "principal": { + "__bigint__": "50000000000000000" + }, + "shares": { + "__bigint__": "48805757421601561" + }, + "index": { + "__bigint__": "1024469297097105658016079093" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301831, + "transactionHash": "0xc27405610b1aec4e00f4920b79fdd93710a95f722505411a3d8c581813388955", + "index": 256, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001d0f7193f9a8ef5d8709566399c8df9497bea70149479e042a", + "previousMessageID": "0x000000000000001ca7aa8e4f9333eb2f0d78bbd01c1956ad27e719faeb5484ae", + "payloadHash": "0x58a0c39304e59dd5958adb3de144413fdb61121c5c7c8083cedd15d847d4b85a", + "timestamp": { + "__bigint__": "1769223695" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14d88d0f65f09ac87b3ca954e19eae8cddae7f36780080faca73f91f0000000000000000000000000000000000000000000000000000c0ad5c2896047101000000000000000000000000000000000000000000000000c0a98f8cbd0c01040000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xd88d0f65f09ac87b3ca954e19eae8cddae7f3678", + "ethIn": { + "__bigint__": "9000000000000000" + }, + "usdValue": { + "__bigint__": "26590543200000000000" + }, + "pretokensOut": { + "__bigint__": "73862620000000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14d88d0f65f09ac87b3ca954e19eae8cddae7f36780080faca73f91f0000000000000000000000000000000000000000000000000099b723aaf1351f00000000000000000000000000000000000000000000000000f59cdee98605bce0cf6b4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xd88d0f65f09ac87b3ca954e19eae8cddae7f3678", + "principal": { + "__bigint__": "9000000000000000" + }, + "shares": { + "__bigint__": "8785036335888281" + }, + "index": { + "__bigint__": "1024469297097105658016079093" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301851, + "transactionHash": "0x2f7bc0e112d6cb33b12693923d6966d266dbef69d5471eb87b20ee2fa1eff8d5", + "index": 156, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001efad3bb43a2c26dfcd9c74309d327276aa473156841c7f197", + "previousMessageID": "0x000000000000001d0f7193f9a8ef5d8709566399c8df9497bea70149479e042a", + "payloadHash": "0xb7b4880151d786bcb2a0306cd99fade73d1778025f6d1356f03c921ea25137c6", + "timestamp": { + "__bigint__": "1769223935" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad000082dfe40d4700000000000000000000000000000000000000000000000000247be96a50764500000000000000000000000000000000000000000000000000f59cdee98605bce0cf6b4f0300000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "amount": { + "__bigint__": "20000000000000000" + }, + "shares": { + "__bigint__": "19551861156182820" + }, + "index": { + "__bigint__": "1024469297097105658016079093" + }, + "tokenId": { + "__bigint__": "11" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301854, + "transactionHash": "0xf7d772c087496c329a01e93c44e77aa0de2eefd91987df5a1d6311330a5e0e2d", + "index": 165, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000001f8bec92920fc62b12ab9ca7f6ccc6d658849a060de6882a0b", + "previousMessageID": "0x000000000000001efad3bb43a2c26dfcd9c74309d327276aa473156841c7f197", + "payloadHash": "0x8a3104f3547733eaca5fe0de1fbcc2bd12ed9a95ce4bb915698391839726ab6a", + "timestamp": { + "__bigint__": "1769223971" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0040ffc49e0a570000000000000000000000000000000000000000000000000000e0116e517c8cec030000000000000000000000000000000000000000000000e3184e151bcb69e60a0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "ethIn": { + "__bigint__": "24500000000000000" + }, + "usdValue": { + "__bigint__": "72385367600000000000" + }, + "pretokensOut": { + "__bigint__": "201070465555555555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14a2fdc2ddf5e652af96dae3c9d16e34c9824e99ad0040ffc49e0a5700000000000000000000000000000000000000000000000000f7248db761f6540000000000000000000000000000000000000000000000000073dbdc46c59ef78b066c4f030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xa2fdc2ddf5e652af96dae3c9d16e34c9824e99ad", + "principal": { + "__bigint__": "24500000000000000" + }, + "shares": { + "__bigint__": "23914797595436279" + }, + "index": { + "__bigint__": "1024470305559909735570660211" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301869, + "transactionHash": "0x6a0888e18c6d7ed8fc8bbe6ee9a9e39d3e124dc3b4bce9f4dea0743270aed285", + "index": 318, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000020d7da95fdd64c156b8376f444b589feb2743a54e653571531", + "previousMessageID": "0x000000000000001f8bec92920fc62b12ab9ca7f6ccc6d658849a060de6882a0b", + "payloadHash": "0xcfe26f2e37ef324edbb6457915b9a0a4f1c41f96ea75e6cbfa3b580207db1086", + "timestamp": { + "__bigint__": "1769224151" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14545230aca3748c61de286a3d92007307940aba140000f842dcba6a22000000000000000000000000000000000000000000000000376978fcd92d962100000000000000000000000000000000000000000000000009f2b2495414a9a5fea04f030000000000000000000000000000000000000000", + "args": { + "staker": "0x545230aca3748c61de286a3d92007307940aba14", + "principal": { + "__bigint__": "2480000000000000000" + }, + "shares": { + "__bigint__": "2420172264025123127" + }, + "index": { + "__bigint__": "1024720445260939416004915721" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301895, + "transactionHash": "0x8f9f3d3b0b4643c5fa048fbd77bb74b8cb290e41ec1d4117f15bb9f91c11d841", + "index": 96, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000021dacf333a77140e52e27ce0ea9fe8607e11ccc56cc4d240db", + "previousMessageID": "0x0000000000000020d7da95fdd64c156b8376f444b589feb2743a54e653571531", + "payloadHash": "0xec204f02bc0c918d267ef9a6496f89873e655f0cd0b3df21f99f7ad54bfcff5f", + "timestamp": { + "__bigint__": "1769224463" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700409e322c06794d000000000000000000000000000000000000000000000000642ee91bfd7f904b0000000000000000000000000000000000000000000000003b11f00092d2e188f51150030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "5582500000000000000" + }, + "shares": { + "__bigint__": "5444992674562649700" + }, + "index": { + "__bigint__": "1025253904579108566400504123" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301904, + "transactionHash": "0xc79737b88ff6038614694175f4fc94fdf2cf91b049464bad50626a1b0ddba13c", + "index": 42, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000022a9c9c12c308c5e7a8e9006f8831ec7ecbd6e7e3b0b051cb3", + "previousMessageID": "0x0000000000000021dacf333a77140e52e27ce0ea9fe8607e11ccc56cc4d240db", + "payloadHash": "0xff5d6d7a46482740dd5045ce2ed1bf7207755e2faf66dbc02e29c2bf18a2aa7d", + "timestamp": { + "__bigint__": "1769224571" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700c01349f44f424d000000000000000000000000000000000000000000000000089d04194441524b000000000000000000000000000000000000000000000000f5c8c512ea9fb4bdf37550030000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "principal": { + "__bigint__": "5567100000000000000" + }, + "shares": { + "__bigint__": "5427472261668183304" + }, + "index": { + "__bigint__": "1025726108140237796724295925" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301911, + "transactionHash": "0x7ce1ac63acd9c7fe95a45f0bbe643403aca39bcfec7ce85e1207e01b2f249473", + "index": 208, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000231287be9a7a9b918e39e1782eb018fbaae9bd8ea435f72fa3", + "previousMessageID": "0x0000000000000022a9c9c12c308c5e7a8e9006f8831ec7ecbd6e7e3b0b051cb3", + "payloadHash": "0x1d1e4610f935511dbb8f00d65695196e177207f4cd3770e5256cd198867ec079", + "timestamp": { + "__bigint__": "1769224655" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14545230aca3748c61de286a3d92007307940aba140000d16b19f65b020000000000000000000000000000000000000000000000000080b59d88a2563a1b00000000000000000000000000000000000000000000008e6386d2d0180da24b0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x545230aca3748c61de286a3d92007307940aba14", + "ethIn": { + "__bigint__": "170000000000000000" + }, + "usdValue": { + "__bigint__": "502265816000000000000" + }, + "pretokensOut": { + "__bigint__": "1395182822222222222222" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14545230aca3748c61de286a3d92007307940aba140000d16b19f65b02000000000000000000000000000000000000000000000000817d083f58ce4c02000000000000000000000000000000000000000000000000516f66899d2433cbaf7850030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x545230aca3748c61de286a3d92007307940aba14", + "principal": { + "__bigint__": "170000000000000000" + }, + "shares": { + "__bigint__": "165734164715830657" + }, + "index": { + "__bigint__": "1025739021833449869293285201" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24301941, + "transactionHash": "0x58665c7c5fd4ba2dde507b96758480ccfb7b4adec08d65db469dd3ae5b969bf6", + "index": 98, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000249d0e7fcbe0e397a0a1a90b1c041ba822c98cc9b6abb0e07f", + "previousMessageID": "0x00000000000000231287be9a7a9b918e39e1782eb018fbaae9bd8ea435f72fa3", + "payloadHash": "0xc2abb582dde4913ec0f1a182fca01b110ba8931b0b4e31012bf0884b49fc7331", + "timestamp": { + "__bigint__": "1769225015" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1423190a70e18ad32ab043503c13fd4bf4b975880b00803d1a4b8e8a000000000000000000000000000000000000000000000000000040463c04e0133f0600000000000000000000000000000000000000000000005595dfc30be0e159110000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x23190a70e18ad32ab043503c13fd4bf4b975880b", + "ethIn": { + "__bigint__": "39000000000000000" + }, + "usdValue": { + "__bigint__": "115225687200000000000" + }, + "pretokensOut": { + "__bigint__": "320071353333333333333" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1423190a70e18ad32ab043503c13fd4bf4b975880b00803d1a4b8e8a000000000000000000000000000000000000000000000000000cbf1441211487000000000000000000000000000000000000000000000000001e588b7ccc464902547950030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x23190a70e18ad32ab043503c13fd4bf4b975880b", + "principal": { + "__bigint__": "39000000000000000" + }, + "shares": { + "__bigint__": "38021254914293516" + }, + "index": { + "__bigint__": "1025742051068875664276543518" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302145, + "transactionHash": "0x96f06464eaf6fab62cbb4020a713fef2db9bd5c62a1a8b8957a9fd0fb60ab7a8", + "index": 34, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000025200d0659f4d3c00e779bd1817624eb8a9444cbfcfd5c6942", + "previousMessageID": "0x00000000000000249d0e7fcbe0e397a0a1a90b1c041ba822c98cc9b6abb0e07f", + "payloadHash": "0x8f540dc642d03957ef39f20b9f3fa351a19b04f3daddf990a0b5919f937474d6", + "timestamp": { + "__bigint__": "1769227463" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14af469c4a0914938e6149cf621c54fb4b1ec0c2020080a925ff81510100000000000000000000000000000000000000000000000000d80ff46549b43d0f0000000000000000000000000000000000000000000000e3900f6da93d11562a0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xaf469c4a0914938e6149cf621c54fb4b1ec0c202", + "ethIn": { + "__bigint__": "95000000000000000" + }, + "usdValue": { + "__bigint__": "281147420540000000000" + }, + "pretokensOut": { + "__bigint__": "780965057055555555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14af469c4a0914938e6149cf621c54fb4b1ec0c2020080a925ff815101000000000000000000000000000000000000000000000000cb1d103f070949010000000000000000000000000000000000000000000000002d07da6429da8640ee7a50030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xaf469c4a0914938e6149cf621c54fb4b1ec0c202", + "principal": { + "__bigint__": "95000000000000000" + }, + "shares": { + "__bigint__": "92615194065247691" + }, + "index": { + "__bigint__": "1025749618718848716367333165" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302181, + "transactionHash": "0x36789c47834072e2363a00a452bdd3422e3a8b2c4b27b01d1938e15761244bea", + "index": 75, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000026e99b7975b8928960c9d594fa104657e8597a1b3b776985c6", + "previousMessageID": "0x0000000000000025200d0659f4d3c00e779bd1817624eb8a9444cbfcfd5c6942", + "payloadHash": "0x8025a48e84c19107957ad09bba06283cf4949cc126d42c11fabb97793da89090", + "timestamp": { + "__bigint__": "1769227895" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d30080ef605bec5f000000000000000000000000000000000000000000000000000038c96d68c9e75404000000000000000000000000000000000000000000000000b8a0db93f64a080c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "ethIn": { + "__bigint__": "27000000000000000" + }, + "usdValue": { + "__bigint__": "79905056364000000000" + }, + "pretokensOut": { + "__bigint__": "221958489900000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d30080ef605bec5f0000000000000000000000000000000000000000000000000014038ecee9835d000000000000000000000000000000000000000000000000002d07da6429da8640ee7a50030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "principal": { + "__bigint__": "27000000000000000" + }, + "shares": { + "__bigint__": "26322213050123028" + }, + "index": { + "__bigint__": "1025749618718848716367333165" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302337, + "transactionHash": "0x87be9ab6b05a1c088218d8307854a054b32323f6524dd1b8345e125e99de0f5d", + "index": 111, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000279035c6040604cb4166e7fb75fdcf7fc4656ecc668cd7c6df", + "previousMessageID": "0x0000000000000026e99b7975b8928960c9d594fa104657e8597a1b3b776985c6", + "payloadHash": "0x841cf778714a6ba4b39d2801371a0acdb00c90f9332ad9133bc5940c31e6f750", + "timestamp": { + "__bigint__": "1769229791" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d30aac2126e4e6680000000000000000000000000000000000000000000000000072c0d0c55bdf07bd0400000000000000000000000000000000000000000000005988ee4154a587290d0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "ethIn": { + "__bigint__": "29527265144581130" + }, + "usdValue": { + "__bigint__": "87408077478097371250" + }, + "pretokensOut": { + "__bigint__": "242800215216937142361" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d30aac2126e4e66800000000000000000000000000000000000000000000000000042db8eb084466000000000000000000000000000000000000000000000000001850a14a309352c2d68050030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "principal": { + "__bigint__": "29527265144581130" + }, + "shares": { + "__bigint__": "28785252729629956" + }, + "index": { + "__bigint__": "1025777519548660655650328600" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302392, + "transactionHash": "0xf2c0e63620f3581f0e6635e4f5ceaa7b73c11853e2ebf886e27a087d8db9d9c3", + "index": 49, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000288daf05a7b97d4c01470db2cc8e5fe03350debc981033ed71", + "previousMessageID": "0x00000000000000279035c6040604cb4166e7fb75fdcf7fc4656ecc668cd7c6df", + "payloadHash": "0x91ee7915afe93246513ff1af9752fc6700493ca8e3104b2c072aab24e5ee0c78", + "timestamp": { + "__bigint__": "1769230451" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000158e35d1b00400000000000000000000000000000000000000000000000000e1b6601ad09e3d360000000000000000000000000000000000000000000000e3a9a60cbbec2aab960000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "338000000000000000" + }, + "usdValue": { + "__bigint__": "1000564395074660000000" + }, + "pretokensOut": { + "__bigint__": "2779345541874055555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000158e35d1b0040000000000000000000000000000000000000000000000008644a83dd4a39204000000000000000000000000000000000000000000000000619f7ca08b1def63088150030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "338000000000000000" + }, + "shares": { + "__bigint__": "329505854714299526" + }, + "index": { + "__bigint__": "1025778435084455128778710881" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302600, + "transactionHash": "0xb7cf7e79d1b3a0eacc55c3b3e4ecda2608deb3ebe13494ee02c5c5bc4afa260d", + "index": 86, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000029aca8a63d1823a9a5b7e1abfe5cc4f9a6e614e7a9c1a4fa8d", + "previousMessageID": "0x00000000000000288daf05a7b97d4c01470db2cc8e5fe03350debc981033ed71", + "payloadHash": "0x1bc6ad11f131c0bf13ee46fa1e9b13a27fb8c41687c9317744ec57cb01020ed2", + "timestamp": { + "__bigint__": "1769232959" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1422c0b697303bdc6bdec75be8428e1b72d38d5ddf000048e1e5f6e20200000000000000000000000000000000000000000000000000003ed21f027b63210000000000000000000000000000000000000000000000e338acf23b5b00bf5c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x22c0b697303bdc6bdec75be8428e1b72d38d5ddf", + "ethIn": { + "__bigint__": "208000000000000000" + }, + "usdValue": { + "__bigint__": "615910880000000000000" + }, + "pretokensOut": { + "__bigint__": "1710863555555555555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1422c0b697303bdc6bdec75be8428e1b72d38d5ddf000048e1e5f6e20200000000000000000000000000000000000000000000000049757bdcaf61d00200000000000000000000000000000000000000000000000037e464b4e7d4fc75b88450030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x22c0b697303bdc6bdec75be8428e1b72d38d5ddf", + "principal": { + "__bigint__": "208000000000000000" + }, + "shares": { + "__bigint__": "202769391177921865" + }, + "index": { + "__bigint__": "1025795850111758184074241079" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302649, + "transactionHash": "0x5ab77e8cfb3975293d6d8cb7f0f2ce8b44bacb19ffab2ed3defbd6c448911235", + "index": 79, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002a8328c30fb902d371cad37ab92e4448c4343e521648e50136", + "previousMessageID": "0x0000000000000029aca8a63d1823a9a5b7e1abfe5cc4f9a6e614e7a9c1a4fa8d", + "payloadHash": "0x5dd23171272e3b2d8ada93c9dbf42057b2ac46a359de0c7a1d82daf03ae773c0", + "timestamp": { + "__bigint__": "1769233547" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14f90ae185b349d63548e6f0e65cf70221c6688c70008042dad5572b00000000000000000000000000000000000000000000000000006074340cb557f5010000000000000000000000000000000000000000000000717cd1583e4c9e70050000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xf90ae185b349d63548e6f0e65cf70221c6688c70", + "ethIn": { + "__bigint__": "12200000000000000" + }, + "usdValue": { + "__bigint__": "36125542000000000000" + }, + "pretokensOut": { + "__bigint__": "100348727777777777777" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14f90ae185b349d63548e6f0e65cf70221c6688c70008042dad5572b00000000000000000000000000000000000000000000000000c016ef09cc402a00000000000000000000000000000000000000000000000000d26af5842c758ee0e98450030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xf90ae185b349d63548e6f0e65cf70221c6688c70", + "principal": { + "__bigint__": "12200000000000000" + }, + "shares": { + "__bigint__": "11893194106017472" + }, + "index": { + "__bigint__": "1025796761681312852903029458" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302802, + "transactionHash": "0x30256ddc46321cbc036e62a7ac175a486b80295127026aae41598d949eb21014", + "index": 274, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002be110c06e68b9b51464e8d67bc74923b157e50d44df0aa5d2", + "previousMessageID": "0x000000000000002a8328c30fb902d371cad37ab92e4448c4343e521648e50136", + "payloadHash": "0xe3f6c4168da3fe69cac6d600561e5e83031f02d50422113a24a66f7ceeeecc27", + "timestamp": { + "__bigint__": "1769235395" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14395ca32b369631fc40bf8f0cf7d5c7848382cb7d0080366ffc9c5801000000000000000000000000000000000000000000000000a070c1efc9f14f010000000000000000000000000000000000000000000000003985e80187d2e8bd768650030000000000000000000000000000000000000000", + "args": { + "staker": "0x395ca32b369631fc40bf8f0cf7d5c7848382cb7d", + "principal": { + "__bigint__": "97000000000000000" + }, + "shares": { + "__bigint__": "94559966811222176" + }, + "index": { + "__bigint__": "1025804082542129715396248889" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24302894, + "transactionHash": "0x5bddd29c4ac759cdc7287fbe3ca147cf0f7902e9d5e413e7e93b7c275698eb04", + "index": 120, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002c3935bcf10973972a3b208a07a1639769fb21e68a22fbd790", + "previousMessageID": "0x000000000000002be110c06e68b9b51464e8d67bc74923b157e50d44df0aa5d2", + "payloadHash": "0xcfd9a0e362c1ce911d6330e3d6b5345b405c76f9e7e97c8f9b8f6029265e12cc", + "timestamp": { + "__bigint__": "1769236499" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40080c12c0326c10b00000000000000000000000000000000000000000000000000ecb9bbce0d50c687000000000000000000000000000000000000000000000071c859423e5fde26790100000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "847000000000000000" + }, + "usdValue": { + "__bigint__": "2504600386750000000000" + }, + "pretokensOut": { + "__bigint__": "6957223296527777777777" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40080c12c0326c10b0000000000000000000000000000000000000000000000006d08ca18ac45750b000000000000000000000000000000000000000000000000b7596c98cce2b2f7e29350030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "847000000000000000" + }, + "shares": { + "__bigint__": "825642712144939117" + }, + "index": { + "__bigint__": "1025867469718925677937056183" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24303068, + "transactionHash": "0x5c4f63c0c23571e362fbea9b5eaed31cf79f0d4b0a41bd70d70fdeb3cc9a7c51", + "index": 120, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002d4b88fa6357a7fb9b2988073d854cc72c34463dae111d8517", + "previousMessageID": "0x000000000000002c3935bcf10973972a3b208a07a1639769fb21e68a22fbd790", + "payloadHash": "0x24ba754a316133b33427da372a217732d3d54aec5167b1d203aed4b52a2eadcd", + "timestamp": { + "__bigint__": "1769238587" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14ddff7e79ba0d0c45ac05ecb87eb392417b9d11910080cff5560b0a03000000000000000000000000000000000000000000000000323be0c0eb69f6020000000000000000000000000000000000000000000000004734d5ccd421edf4519750030000000000000000000000000000000000000000", + "args": { + "staker": "0xddff7e79ba0d0c45ac05ecb87eb392417b9d1191", + "principal": { + "__bigint__": "219000000000000000" + }, + "shares": { + "__bigint__": "213474493620828978" + }, + "index": { + "__bigint__": "1025883684207188539639936071" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24303123, + "transactionHash": "0xabe91240b3fe7b8cd49465490b5b01fc9fc3f9588be357b0428e9704eb6e7e15", + "index": 191, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002eb60c5f99663ebb1dfac4340de465e53114894604c2ae48cd", + "previousMessageID": "0x000000000000002d4b88fa6357a7fb9b2988073d854cc72c34463dae111d8517", + "payloadHash": "0x8926263a243b1b9ac4fc08eef4773f7fe3af2e0959c8a5803f798b5f2817a576", + "timestamp": { + "__bigint__": "1769239247" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1499888acb9bb6603c272b8687ac1c0c40787155750000a337c12fbd0d00000000000000000000000000000000000000000000000000d88ca9e76999b29e000000000000000000000000000000000000000000000000584e2c2e26aad3b80100000000000000000000000000000000000000000000", + "args": { + "buyer": "0x99888acb9bb6603c272b8687ac1c0c4078715575", + "ethIn": { + "__bigint__": "990000000000000000" + }, + "usdValue": { + "__bigint__": "2927454997500000000000" + }, + "pretokensOut": { + "__bigint__": "8131819437500000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1499888acb9bb6603c272b8687ac1c0c40787155750000a337c12fbd0d0000000000000000000000000000000000000000000000002112839d7f33640d000000000000000000000000000000000000000000000000cdc5cb77efec0d6ed1a650030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x99888acb9bb6603c272b8687ac1c0c4078715575", + "principal": { + "__bigint__": "990000000000000000" + }, + "shares": { + "__bigint__": "964952843360604705" + }, + "index": { + "__bigint__": "1025956871169128338673092045" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24303630, + "transactionHash": "0x5806091704b657544a252b11471fd2e8b3e9fda2c650af82628be7bf7d094dfb", + "index": 63, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000002fc2ac45ac0c305750ba83c960f953608a9b1299e65635cd97", + "previousMessageID": "0x000000000000002eb60c5f99663ebb1dfac4340de465e53114894604c2ae48cd", + "payloadHash": "0xa6bc0a8505e94a79c764dd24c0520b0d632d197176b666aac10ed728abeafe9c", + "timestamp": { + "__bigint__": "1769245367" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14395ca32b369631fc40bf8f0cf7d5c7848382cb7d004096bf02e7690c0000000000000000000000000000000000000000000000006792adf2564e190c0000000000000000000000000000000000000000000000008616b5c1257444de7db450030000000000000000000000000000000000000000", + "args": { + "staker": "0x395ca32b369631fc40bf8f0cf7d5c7848382cb7d", + "principal": { + "__bigint__": "894500000000000000" + }, + "shares": { + "__bigint__": "871814138218517095" + }, + "index": { + "__bigint__": "1026021442859185170332063366" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24303730, + "transactionHash": "0x933e0cbcd996fcd92e8665cd956e67f3799af83e075bdede3c6fbd603e5a76e7", + "index": 158, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000030a3005c53962e0f9e6582435a0fc26c52c5e4f6cd65ec4c77", + "previousMessageID": "0x000000000000002fc2ac45ac0c305750ba83c960f953608a9b1299e65635cd97", + "payloadHash": "0x35a001a31e95bd50782dd68110718859c220c1d2bed9fb560b299ca87a52b52c", + "timestamp": { + "__bigint__": "1769246567" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14e2a2bd3fea3faa06cff8c29c3c43443d42e9ea020040ae1a6a08bf60000000000000000000000000000000000000000000000000b08ab31aa73d3f5e0000000000000000000000000000000000000000000000002147f3925369ea86841d51030000000000000000000000000000000000000000", + "args": { + "staker": "0xe2a2bd3fea3faa06cff8c29c3c43443d42e9ea02", + "principal": { + "__bigint__": "6971300000000000000" + }, + "shares": { + "__bigint__": "6791214551014804144" + }, + "index": { + "__bigint__": "1026517414172739671998809889" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24304047, + "transactionHash": "0x2151459993b60cea10ab9a2b46907032cf2bc1f1da68eedb9d1ae7eb38e52c12", + "index": 770, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000031ca769dfe772e2842cd934502fae563303f86e15ffec10d16", + "previousMessageID": "0x0000000000000030a3005c53962e0f9e6582435a0fc26c52c5e4f6cd65ec4c77", + "payloadHash": "0x67b97f510814a73a6ba6d899980e2aadbe55606a1b738c5163cdcddd16ba1c25", + "timestamp": { + "__bigint__": "1769250383" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1416d20cd30ed54b8400999b62f06c5f4cd30a3f7200c0bb7e7bc76101000000000000000000000000000000000000000000000000002d168e7f3024f50f0000000000000000000000000000000000000000000000e3b504e0456a9d532c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x16d20cd30ed54b8400999b62f06c5f4cd30a3f72", + "ethIn": { + "__bigint__": "99580000000000000" + }, + "usdValue": { + "__bigint__": "294365458068500000000" + }, + "pretokensOut": { + "__bigint__": "817681827968055555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1416d20cd30ed54b8400999b62f06c5f4cd30a3f7200c0bb7e7bc7610100000000000000000000000000000000000000000000000048726c8f5ca3580100000000000000000000000000000000000000000000000040dc5c1d2bb57636dc1e51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x16d20cd30ed54b8400999b62f06c5f4cd30a3f72", + "principal": { + "__bigint__": "99580000000000000" + }, + "shares": { + "__bigint__": "97007009927033416" + }, + "index": { + "__bigint__": "1026523754055525796864121920" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24304701, + "transactionHash": "0xccc6e0711fa9f384d38a1bd36fc7629d736bfa72d013f3cfe9737b86f8260f8a", + "index": 103, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003246220245ff20f26d5114c264d1c85d28f56c9f6b911338ec", + "previousMessageID": "0x0000000000000031ca769dfe772e2842cd934502fae563303f86e15ffec10d16", + "payloadHash": "0xe4ffa06349706ba8b71d80e0e5e61a2eb78d8c8e92d2e2cce32d32523254474c", + "timestamp": { + "__bigint__": "1769258243" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14f90ae185b349d63548e6f0e65cf70221c6688c70000082dfe40d4700000000000000000000000000000000000000000000000000799a1658e537450000000000000000000000000000000000000000000000000040dc5c1d2bb57636dc1e51030000000000000000000000000000000000000000", + "args": { + "staker": "0xf90ae185b349d63548e6f0e65cf70221c6688c70", + "principal": { + "__bigint__": "20000000000000000" + }, + "shares": { + "__bigint__": "19483231557950073" + }, + "index": { + "__bigint__": "1026523754055525796864121920" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24305655, + "transactionHash": "0xcdfc049d9c42da2f3e8bec811d8aa1a9151dc0877a8f230f8523657508247abd", + "index": 448, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000033fa7a7461cc083d917a2a9e0c5b879750ff778217b8529075", + "previousMessageID": "0x000000000000003246220245ff20f26d5114c264d1c85d28f56c9f6b911338ec", + "payloadHash": "0xfff9402caa5d589cbbe585e7e3ffea00a9efa8043a292ef70f0211883f2d5ee5", + "timestamp": { + "__bigint__": "1769269775" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1498eff980c57c9d333340b3856481bf7b8698987c000064a7b3b6e00d000000000000000000000000000000000000000000000000051f198c3c8e840d000000000000000000000000000000000000000000000000acb3064905eec732923551030000000000000000000000000000000000000000", + "args": { + "staker": "0x98eff980c57c9d333340b3856481bf7b8698987c", + "principal": { + "__bigint__": "1000000000000000000" + }, + "shares": { + "__bigint__": "974059810118508293" + }, + "index": { + "__bigint__": "1026631003160201950845645740" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24305921, + "transactionHash": "0x1cb4f5422c58d389bab2e45c59544ad9f19ffaf8bb1c725437e82a76b6876b12", + "index": 32, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003463909e22fd3fc805d6d769edee579820ff8cd6248f607f81", + "previousMessageID": "0x0000000000000033fa7a7461cc083d917a2a9e0c5b879750ff778217b8529075", + "payloadHash": "0xa267fc12188ccaf94deb43b82fc1ce129f0309a2bc1921494bc940d107f5a70e", + "timestamp": { + "__bigint__": "1769272991" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14992e49f6a2b86aa62bcb7c09b6ea098580c0aee60080c3b8f9b75f0100000000000000000000000000000000000000000000000000089397ee6aa7da0f000000000000000000000000000000000000000000000000885ffa24f0090a2c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x992e49f6a2b86aa62bcb7c09b6ea098580c0aee6", + "ethIn": { + "__bigint__": "99000000000000000" + }, + "usdValue": { + "__bigint__": "292456840500000000000" + }, + "pretokensOut": { + "__bigint__": "812380112500000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14992e49f6a2b86aa62bcb7c09b6ea098580c0aee60080c3b8f9b75f0100000000000000000000000000000000000000000000000093a75345cb9756010000000000000000000000000000000000000000000000003a14aa0f8d724ddce03651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x992e49f6a2b86aa62bcb7c09b6ea098580c0aee6", + "principal": { + "__bigint__": "99000000000000000" + }, + "shares": { + "__bigint__": "96431341332309907" + }, + "index": { + "__bigint__": "1026637176588037852836271162" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24306632, + "transactionHash": "0x0ec640590fef6293c3220284430d3f446c3399715381d0768070c57d3522246c", + "index": 232, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000351d71082990615b128c52be3e03fc0105dd81630342577c05", + "previousMessageID": "0x000000000000003463909e22fd3fc805d6d769edee579820ff8cd6248f607f81", + "payloadHash": "0x9355f29622d93954939a81bed3eab75097f9d6c4fa5580450bf74867c6338ff0", + "timestamp": { + "__bigint__": "1769281547" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300007775cc0087000000000000000000000000000000000000000000000000003fd3c9ff4b7f830000000000000000000000000000000000000000000000000047101fe74ad476ccf33b51030000000000000000000000000000000000000000", + "args": { + "staker": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "principal": { + "__bigint__": "38000000000000000" + }, + "shares": { + "__bigint__": "37013186339787583" + }, + "index": { + "__bigint__": "1026661137767316038973591623" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24307557, + "transactionHash": "0x292723cff30af0a829de3620976d8d2ec43eceb00f9970e14abbf3946c6e674c", + "index": 143, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003633a1f287c60c956bb58fdd160300d91092186a107ba8a071", + "previousMessageID": "0x00000000000000351d71082990615b128c52be3e03fc0105dd81630342577c05", + "payloadHash": "0xae8030f29558a19ded857ea070484d7ea59f5733138117d210baf6c9ab5f49a6", + "timestamp": { + "__bigint__": "1769292671" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x147e787d9d1d5d3bfccd321dfda9fd8502ec0d743900803181f56b8f0400000000000000000000000000000000000000000000000000002c7e788081a1340000000000000000000000000000000000000000000000c771084232ba6732920000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x7e787d9d1d5d3bfccd321dfda9fd8502ec0d7439", + "ethIn": { + "__bigint__": "328600000000000000" + }, + "usdValue": { + "__bigint__": "970868416000000000000" + }, + "pretokensOut": { + "__bigint__": "2696856711111111111111" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x147e787d9d1d5d3bfccd321dfda9fd8502ec0d743900803181f56b8f0400000000000000000000000000000000000000000000000032f78bf231157104000000000000000000000000000000000000000000000000bf669a4b316ed7563c4051030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x7e787d9d1d5d3bfccd321dfda9fd8502ec0d7439", + "principal": { + "__bigint__": "328600000000000000" + }, + "shares": { + "__bigint__": "320060352786855730" + }, + "index": { + "__bigint__": "1026681365369959614447773375" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24307831, + "transactionHash": "0xc3402ed68204fe9573fc269365f9e41a318ce8a8b371585e29ce43e116bc654a", + "index": 92, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000037a6b3faced4f7165ec901722b383ce837839325f56190f573", + "previousMessageID": "0x000000000000003633a1f287c60c956bb58fdd160300d91092186a107ba8a071", + "payloadHash": "0x88f6c22155de8b84cc62089c51aa91ec205afae080a7fba9e9f7c6bfbf0a9776", + "timestamp": { + "__bigint__": "1769295971" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14a42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b0000c0d0d335a51a000000000000000000000000000000000000000000000000526fd77fd22df319000000000000000000000000000000000000000000000000f392064d47a9862b2b5951030000000000000000000000000000000000000000", + "args": { + "staker": "0xa42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b", + "principal": { + "__bigint__": "1920000000000000000" + }, + "shares": { + "__bigint__": "1869888652400095058" + }, + "index": { + "__bigint__": "1026799107816171051470459635" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24308392, + "transactionHash": "0x2d129043efb62581ee3c929fdf83b58af76d5ecf39e5766a8c07dba3a8f8870f", + "index": 198, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000038ee22f8615c407ea54bb0d74175994bd0ad112668435d1584", + "previousMessageID": "0x0000000000000037a6b3faced4f7165ec901722b383ce837839325f56190f573", + "payloadHash": "0x68ca589097a8135752ac6c02eec285e48f90565850c7db3284f3e8041ae62807", + "timestamp": { + "__bigint__": "1769302763" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14106162f991d13a5b4bc61fd46c0d9ecf21433aa49024b82f13469001000000000000000000000000000000000000000000000000bd3bd5c8e2dba703120000000000000000000000000000000000000000000000293489d8ae9b270a320000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x106162f991d13a5b4bc61fd46c0d9ecf21433aa4", + "ethIn": { + "__bigint__": "112667038903182480" + }, + "usdValue": { + "__bigint__": "332304814197074901949" + }, + "pretokensOut": { + "__bigint__": "923068928325208060969" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14106162f991d13a5b4bc61fd46c0d9ecf21433aa49024b82f1346900100000000000000000000000000000000000000000000000082cad71c49c785010000000000000000000000000000000000000000000000003004e3fbe0d40860177451030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x106162f991d13a5b4bc61fd46c0d9ecf21433aa4", + "principal": { + "__bigint__": "112667038903182480" + }, + "shares": { + "__bigint__": "109712882770889346" + }, + "index": { + "__bigint__": "1026926246559961633708508208" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24308641, + "transactionHash": "0x92a4b3f6dfb886d403820ed8b462b4074e7d5d9106a2ebdc3354e77d824a5d9d", + "index": 396, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000390b9d898a118838fb3d8589be418b87baed45a17a1ad60eab", + "previousMessageID": "0x0000000000000038ee22f8615c407ea54bb0d74175994bd0ad112668435d1584", + "payloadHash": "0xc09d8b5e955d3795226e79af916481e7885eae6bb0ba8d72f7e109d659ce5728", + "timestamp": { + "__bigint__": "1769305751" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14ba26035b9cd76cda5b767a966b8a3392e476fc0f0080c3b8f9b75f0100000000000000000000000000000000000000000000000000b871e502893eda0f00000000000000000000000000000000000000000000000038910b0899e6082c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xba26035b9cd76cda5b767a966b8a3392e476fc0f", + "ethIn": { + "__bigint__": "99000000000000000" + }, + "usdValue": { + "__bigint__": "292427318700000000000" + }, + "pretokensOut": { + "__bigint__": "812298107500000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14ba26035b9cd76cda5b767a966b8a3392e476fc0f0080c3b8f9b75f01000000000000000000000000000000000000000000000000db4fed479d7e5601000000000000000000000000000000000000000000000000269a248e35189eac4f7551030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xba26035b9cd76cda5b767a966b8a3392e476fc0f", + "principal": { + "__bigint__": "99000000000000000" + }, + "shares": { + "__bigint__": "96403656016744411" + }, + "index": { + "__bigint__": "1026932007462503580011108902" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24308899, + "transactionHash": "0xf32f3059fce546dab30ba3cc238cf535cb82ff6d3b7f554d8adb173581bfb60c", + "index": 684, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003a5556807b8b718b3d03f5ffc4ad678de1547ab74395e50c6d", + "previousMessageID": "0x00000000000000390b9d898a118838fb3d8589be418b87baed45a17a1ad60eab", + "payloadHash": "0x37c20de26722b23c8057f87bf6f42af9cd6e1d272a98efe61b0ca14f8b95c737", + "timestamp": { + "__bigint__": "1769308847" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c4984a2660c193d6010000000000000000000000000000000000000000000000004823cd104a3dda3215000000000000000000000000000000000000000000000056b772a0061c97e23a0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "ethIn": { + "__bigint__": "132455697805101720" + }, + "usdValue": { + "__bigint__": "391045934183038657352" + }, + "pretokensOut": { + "__bigint__": "1086238706063996270422" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c4984a2660c193d601000000000000000000000000000000000000000000000000eb27f2ce873bca01000000000000000000000000000000000000000000000000a3bf136fa0ca4577ee7651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "principal": { + "__bigint__": "132455697805101720" + }, + "shares": { + "__bigint__": "128980993812080619" + }, + "index": { + "__bigint__": "1026939659017386584647647139" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24309093, + "transactionHash": "0xd60429408146661efca579fc978f2177554db13f165e48b7b50452c5d7d933cb", + "index": 160, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003b4ba1ae817e4e539cdd584c75d3db291e398aa33a3fdda685", + "previousMessageID": "0x000000000000003a5556807b8b718b3d03f5ffc4ad678de1547ab74395e50c6d", + "payloadHash": "0x8595e38079aeb9d04e81d5bcf4f56a5190afc6997ea989b16117e7e713e1b53a", + "timestamp": { + "__bigint__": "1769311187" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d300002876e1158d0500000000000000000000000000000000000000000000000000804374944005ef3f0000000000000000000000000000000000000000000000e3b849982a25f297b10000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "ethIn": { + "__bigint__": "400000000000000000" + }, + "usdValue": { + "__bigint__": "1179368120000000000000" + }, + "pretokensOut": { + "__bigint__": "3276022555555555555555" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d300002876e1158d05000000000000000000000000000000000000000000000000493a487e11c6670500000000000000000000000000000000000000000000000074a0ebafeb2ca7f6097c51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "principal": { + "__bigint__": "400000000000000000" + }, + "shares": { + "__bigint__": "389497671226243657" + }, + "index": { + "__bigint__": "1026963778090616513939349620" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24309105, + "transactionHash": "0x44146daa59d0dbb7031ec2f8b18b10ef78c58debd1577b27f47787eefe20f039", + "index": 382, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003c300cd856e137c180a872a941dede0806dd53ab31b74841f2", + "previousMessageID": "0x000000000000003b4ba1ae817e4e539cdd584c75d3db291e398aa33a3fdda685", + "payloadHash": "0x5e2ae1ceb0d47706ddbd63e4fa45a696e72f937a4695f4c2331a2b5403819e0d", + "timestamp": { + "__bigint__": "1769311331" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d3dc458e303cbe3800000000000000000000000000000000000000000000000000f05e7a907f86868d02000000000000000000000000000000000000000000000061b2c5adb73c5917070000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "ethIn": { + "__bigint__": "15971764417742300" + }, + "usdValue": { + "__bigint__": "47091474436089077488" + }, + "pretokensOut": { + "__bigint__": "130809651211358548577" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x148b67c4671c74366cc489b7cccf60dd744c58b0d3dc458e303cbe3800000000000000000000000000000000000000000000000000f27b543dd640370000000000000000000000000000000000000000000000000074a0ebafeb2ca7f6097c51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x8b67c4671c74366cc489b7cccf60dd744c58b0d3", + "principal": { + "__bigint__": "15971764417742300" + }, + "shares": { + "__bigint__": "15552412615212018" + }, + "index": { + "__bigint__": "1026963778090616513939349620" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24309259, + "transactionHash": "0x882487f01d67e419c8047bcc8dd4118da631345c1d68090848dbd032041fe23d", + "index": 112, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003dd6b742820ade635ec789bf4fec49f7052a4853b4bcf300d3", + "previousMessageID": "0x000000000000003c300cd856e137c180a872a941dede0806dd53ab31b74841f2", + "payloadHash": "0x888876ba9ecdddfff7b936e635c8f302cc3a657a823038b306df2fc7fe91f60b", + "timestamp": { + "__bigint__": "1769313179" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c41e30eb086a866201000000000000000000000000000000000000000000000000a52a31a5d1de28f30f0000000000000000000000000000000000000000000000e69288750d321c4e2c0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "ethIn": { + "__bigint__": "99789931729858590" + }, + "usdValue": { + "__bigint__": "294222660447929182885" + }, + "pretokensOut": { + "__bigint__": "817285167910914396902" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c41e30eb086a86620100000000000000000000000000000000000000000000000000b74c2efc365901000000000000000000000000000000000000000000000000293302b7bf8e561f407d51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "principal": { + "__bigint__": "99789931729858590" + }, + "shares": { + "__bigint__": "97169323701614336" + }, + "index": { + "__bigint__": "1026969499512948809621713705" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24309422, + "transactionHash": "0xe75594e23d7caf242c54f6ac412b09dedb6ebcce900b62257a8f532bdf883940", + "index": 57, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003e4d6022b10c59014c0f8fdd0a8623a971aaf80dfc221e0424", + "previousMessageID": "0x000000000000003dd6b742820ade635ec789bf4fec49f7052a4853b4bcf300d3", + "payloadHash": "0xcd862d3fa8b7bfd3c968dc466ba4095b20543daba941f010146787fa760680fe", + "timestamp": { + "__bigint__": "1769315147" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c40080c3b8f9b75f0100000000000000000000000000000000000000000000000000f0966f528d14c90f000000000000000000000000000000000000000000000000f04d8bc81639d92b0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "ethIn": { + "__bigint__": "99000000000000000" + }, + "usdValue": { + "__bigint__": "291190522392000000000" + }, + "pretokensOut": { + "__bigint__": "808862562200000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14774f5b0340d7ab44bddf8d4c665edf95b90926c40080c3b8f9b75f01000000000000000000000000000000000000000000000000b5c9c3b7ed7a5601000000000000000000000000000000000000000000000000bc5272acb96db601747e51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x774f5b0340d7ab44bddf8d4c665edf95b90926c4", + "principal": { + "__bigint__": "99000000000000000" + }, + "shares": { + "__bigint__": "96399603443943861" + }, + "index": { + "__bigint__": "1026975178975380978959274684" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24312108, + "transactionHash": "0xb814351c0cc8045a9b4dbbc2ae3e5cadfa4673d98fe7985411a6c0e0e065902e", + "index": 125, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000003f51a401ed8d4cef6af3c209acb3f00ea1ee9731c18f2f6b93", + "previousMessageID": "0x000000000000003e4d6022b10c59014c0f8fdd0a8623a971aaf80dfc221e0424", + "payloadHash": "0x7c65ce97923750eb7b758c94dcc32b55adb6a1edfb65ddc91fcec5eb1f4aab7a", + "timestamp": { + "__bigint__": "1769347499" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x143b63294873689f11a7cd0e03d474031bfa81ab320000570ac81f3103000000000000000000000000000000000000000000000000000025f7ce3d1499240000000000000000000000000000000000000000000000c7711192e93938a9650000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x3b63294873689f11a7cd0e03d474031bfa81ab32", + "ethIn": { + "__bigint__": "230000000000000000" + }, + "usdValue": { + "__bigint__": "675113296000000000000" + }, + "pretokensOut": { + "__bigint__": "1875314711111111111111" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x143b63294873689f11a7cd0e03d474031bfa81ab320000570ac81f31030000000000000000000000000000000000000000000000002e56503784a31b030000000000000000000000000000000000000000000000003e648f191a9bd2228d8451030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x3b63294873689f11a7cd0e03d474031bfa81ab32", + "principal": { + "__bigint__": "230000000000000000" + }, + "shares": { + "__bigint__": "223952394743993902" + }, + "index": { + "__bigint__": "1027003976728711834339599422" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24312820, + "transactionHash": "0x08d575487f40d5d22cec29d92cc6451ceb619bc15731de87313c126a9aa77386", + "index": 213, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000406cce28d7e76870c3ca27572bf5cf88f44553e580e7b8950d", + "previousMessageID": "0x000000000000003f51a401ed8d4cef6af3c209acb3f00ea1ee9731c18f2f6b93", + "payloadHash": "0xd8d09324d4b540341ce7c564e886b740dd0ba87261216e598cf9f8cf2ed72117", + "timestamp": { + "__bigint__": "1769356055" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x146820250308b5ea5044672a297b2529e627787f5f00008a5d784563010000000000000000000000000000000000000000000000000080fba90f3058e20f0000000000000000000000000000000000000000000000579652dec07500772a0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x6820250308b5ea5044672a297b2529e627787f5f", + "ethIn": { + "__bigint__": "100000000000000000" + }, + "usdValue": { + "__bigint__": "293011000000000000000" + }, + "pretokensOut": { + "__bigint__": "783338234257538717271" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x146820250308b5ea5044672a297b2529e627787f5f00008a5d784563010000000000000000000000000000000000000000000000002ec52d8c12ed59010000000000000000000000000000000000000000000000004f83cd469856221af48651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x6820250308b5ea5044672a297b2529e627787f5f", + "principal": { + "__bigint__": "100000000000000000" + }, + "shares": { + "__bigint__": "97369530882180398" + }, + "index": { + "__bigint__": "1027015320850241493131952975" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24313139, + "transactionHash": "0x44d387130d097809cb0a65c2018090db7bc64f39c0ae20cb944d661f792c784a", + "index": 438, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000041a7da0532b1eeb642cd095da4541e440f1960f23777c5471d", + "previousMessageID": "0x00000000000000406cce28d7e76870c3ca27572bf5cf88f44553e580e7b8950d", + "payloadHash": "0x40565e88f5bdc55275c6554d1d470b13d99fea4c5c8752fb730f3dc61152ae0c", + "timestamp": { + "__bigint__": "1769359895" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14ba26035b9cd76cda5b767a966b8a3392e476fc0f4ca1a52697ea63010000000000000000000000000000000000000000000000006dadf46e8b88d6b20f0000000000000000000000000000000000000000000000a541c78f2bb8e34f290000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xba26035b9cd76cda5b767a966b8a3392e476fc0f", + "ethIn": { + "__bigint__": "100181551641633100" + }, + "usdValue": { + "__bigint__": "289587798621853887853" + }, + "pretokensOut": { + "__bigint__": "762073154268036546981" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14ba26035b9cd76cda5b767a966b8a3392e476fc0f4ca1a52697ea630100000000000000000000000000000000000000000000000085a97e3b5c8d5a01000000000000000000000000000000000000000000000000a1006f0d317162f7268851030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xba26035b9cd76cda5b767a966b8a3392e476fc0f", + "principal": { + "__bigint__": "100181551641633100" + }, + "shares": { + "__bigint__": "97545769216551301" + }, + "index": { + "__bigint__": "1027020981496699972616126625" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24315086, + "transactionHash": "0x20844b1d14b3e630272a0ed0d2b8d346d260fdaad679f53dba4472d154ba145c", + "index": 356, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004243720e4b576c334f738ca4256221b4a31212f853e14cd00b", + "previousMessageID": "0x0000000000000041a7da0532b1eeb642cd095da4541e440f1960f23777c5471d", + "payloadHash": "0x4bcf322994499c33fbc0c2987218b72874629865e590089fdd03ef00e23bccc0", + "timestamp": { + "__bigint__": "1769383355" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000976d1adff70400000000000000000000000000000000000000000000000000c05bc0a3edb43d360000000000000000000000000000000000000000000000bc06c9d1e46355bd8e0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "358000000000000000" + }, + "usdValue": { + "__bigint__": "1000570620000000000000" + }, + "pretokensOut": { + "__bigint__": "2633080578947368421052" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000976d1adff70400000000000000000000000000000000000000000000000060577e374a62d604000000000000000000000000000000000000000000000000c7b6ed272a7cac32768c51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "358000000000000000" + }, + "shares": { + "__bigint__": "348574092065920864" + }, + "index": { + "__bigint__": "1027041332527652535773542087" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24318262, + "transactionHash": "0x68af171342601627791765f290f1a7deb13972b3bb8a43fedd886113f5fdfa46", + "index": 162, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "0" + }, + "timestamp": { + "__bigint__": "1769421551" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xaf3adfa3b44e0cbe0aa47d98af512f0a0a750ea739243148bbd529e9888b910a", + "firstMessageID": "0x00000000000000013202e9b59b656ff5098f04818b44e36963cb008641ed0dae", + "lastMessageID": "0x00000000000000390b9d898a118838fb3d8589be418b87baed45a17a1ad60eab" + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24318262, + "transactionHash": "0x68af171342601627791765f290f1a7deb13972b3bb8a43fedd886113f5fdfa46", + "index": 163, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "1" + }, + "timestamp": { + "__bigint__": "1769421551" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xd193b3a9ce7b317a873b04016fb57d813d62e01926267d2b9790edeed029aef2", + "firstMessageID": "0x000000000000003a5556807b8b718b3d03f5ffc4ad678de1547ab74395e50c6d", + "lastMessageID": "0x000000000000004243720e4b576c334f738ca4256221b4a31212f853e14cd00b" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24318265, + "transactionHash": "0x50a7863ed5a4b731e1c16d3b67fb98d31ea5d90ca6d091322987dca842cc582c", + "index": 51, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000043e476d2469d48c495aaed060a8a9ebd35e7f7fce16e258d9e", + "previousMessageID": "0x000000000000004243720e4b576c334f738ca4256221b4a31212f853e14cd00b", + "payloadHash": "0x8f4b871a09ba7cc086e3186fe78ce530a0ea4cfc9b0f2edbf66fe38838fafdd7", + "timestamp": { + "__bigint__": "1769421587" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x145f93bfdcaff806599da8aa63a7be8aba619290fc00803d1a4b8e8a000000000000000000000000000000000000000000000000000000e21eabf4511606000000000000000000000000000000000000000000000086f2e60d49acd704100000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x5f93bfdcaff806599da8aa63a7be8aba619290fc", + "ethIn": { + "__bigint__": "39000000000000000" + }, + "usdValue": { + "__bigint__": "112288800000000000000" + }, + "pretokensOut": { + "__bigint__": "295496842105263157894" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x145f93bfdcaff806599da8aa63a7be8aba619290fc00803d1a4b8e8a0000000000000000000000000000000000000000000000000054ab31d04ee88600000000000000000000000000000000000000000000000000a43006d34213e430f08c51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x5f93bfdcaff806599da8aa63a7be8aba619290fc", + "principal": { + "__bigint__": "39000000000000000" + }, + "shares": { + "__bigint__": "37973072077237076" + }, + "index": { + "__bigint__": "1027043582901961596187586724" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24319576, + "transactionHash": "0xbc917b97e6cdc02941cccfa7ce5315f103ea68eba62c6138358b80099c7e558a", + "index": 60, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000044c5b4857cdf2180cf56a1ff2960c313165255b87cab9403f9", + "previousMessageID": "0x0000000000000043e476d2469d48c495aaed060a8a9ebd35e7f7fce16e258d9e", + "payloadHash": "0xf8cc0b44bc4c7bbe561c2b1c885fc681428fbb6630d59807bfecd7290c21cb10", + "timestamp": { + "__bigint__": "1769437403" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700007a3c54c3e730000000000000000000000000000000000000000000000000c4da0f9d469adc2f000000000000000000000000000000000000000000000000a43006d34213e430f08c510300000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "amount": { + "__bigint__": "3524000000000000000" + }, + "shares": { + "__bigint__": "3448801042732407492" + }, + "index": { + "__bigint__": "1027043582901961596187586724" + }, + "tokenId": { + "__bigint__": "8" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24319955, + "transactionHash": "0x38ba65eecab5057af6a5dfb8c8e5c2fabdbdd5a5b1abf537345d9847f039e4dc", + "index": 140, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000045a1624e0235f83eef9987c5023a63eaa908f238f46c277554", + "previousMessageID": "0x0000000000000044c5b4857cdf2180cf56a1ff2960c313165255b87cab9403f9", + "payloadHash": "0xf71e0e5bc93c6e9840539e987bc8a47c2ec666d36f3011d5b9a5dd34823976ec", + "timestamp": { + "__bigint__": "1769441987" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1424deed232d133d38cf64a66ee2cd6ff8ec53bb190000c16ff286230000000000000000000000000000000000000000000000000000cc6013dd0ed593010000000000000000000000000000000000000000000000d71842ac7b6ab726040000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x24deed232d133d38cf64a66ee2cd6ff8ec53bb19", + "ethIn": { + "__bigint__": "10000000000000000" + }, + "usdValue": { + "__bigint__": "29099180910000000000" + }, + "pretokensOut": { + "__bigint__": "76576791868421052631" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1424deed232d133d38cf64a66ee2cd6ff8ec53bb190000c16ff2862300000000000000000000000000000000000000000000000000f6aed75e729722000000000000000000000000000000000000000000000000007f4630af224a58c9598d51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x24deed232d133d38cf64a66ee2cd6ff8ec53bb19", + "principal": { + "__bigint__": "10000000000000000" + }, + "shares": { + "__bigint__": "9736666681421558" + }, + "index": { + "__bigint__": "1027045530795555061853341311" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24319962, + "transactionHash": "0x3dc2aeb2967f4e717f1a6a5820372626ceba81762a3d3a7792bbfea4ce9bf221", + "index": 350, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000466c5b6b4686f1ab46d9725eb6da57a5beae2de2197c592f93", + "previousMessageID": "0x0000000000000045a1624e0235f83eef9987c5023a63eaa908f238f46c277554", + "payloadHash": "0x63a491728c3b68d01e0d5ec559259a283744b024ddb9f06fb29dab4e3dc61a3e", + "timestamp": { + "__bigint__": "1769442071" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x1424deed232d133d38cf64a66ee2cd6ff8ec53bb190000c16ff2862300000000000000000000000000000000000000000000000000f6aed75e729722000000000000000000000000000000000000000000000000007f4630af224a58c9598d51030000000000000000000000000000000000000000", + "args": { + "staker": "0x24deed232d133d38cf64a66ee2cd6ff8ec53bb19", + "principal": { + "__bigint__": "10000000000000000" + }, + "shares": { + "__bigint__": "9736666681421558" + }, + "index": { + "__bigint__": "1027045530795555061853341311" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24322963, + "transactionHash": "0xb0cfbba2f720175b97aa4b1fef914505a2c0e25d2b4553625585ac587e5dc661", + "index": 126, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004738e42276b2ebfdfb83fa8f63b8c559176fce536490aa90e4", + "previousMessageID": "0x00000000000000466c5b6b4686f1ab46d9725eb6da57a5beae2de2197c592f93", + "payloadHash": "0x693867851ad69bb6745425f42cadb08f384e3473ebdfb2dc7fb5355ed6fba753", + "timestamp": { + "__bigint__": "1769478287" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300007775cc0087000000000000000000000000000000000000000000000000003fd3c9ff4b7f8300000000000000000000000000000000000000000000000000d37abedcc8f78aa01bc1510300000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "amount": { + "__bigint__": "38000000000000000" + }, + "shares": { + "__bigint__": "37013186339787583" + }, + "index": { + "__bigint__": "1027289947214435035933211347" + }, + "tokenId": { + "__bigint__": "51" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24325063, + "transactionHash": "0xa72c2b102c8861490d56548745401dd0ec9a9bce2a43d20b0b4c470ea9c96a88", + "index": 34, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000048da3ea0c71f2402a5b9b6e5da92739ac4914b6e40bc6d31ac", + "previousMessageID": "0x000000000000004738e42276b2ebfdfb83fa8f63b8c559176fce536490aa90e4", + "payloadHash": "0x1aafbeb2af96c7933e1e46e71510bc96d9032b513fab6ecb430b8a910ceaf3fc", + "timestamp": { + "__bigint__": "1769503559" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000a2d732ecb7040000000000000000000000000000000000000000000000000024edc1fb3b7fea35000000000000000000000000000000000000000000000094af2c4f024d5ce28d0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "340000000000000000" + }, + "usdValue": { + "__bigint__": "994574726186000000000" + }, + "pretokensOut": { + "__bigint__": "2617301911015789473684" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f40000a2d732ecb704000000000000000000000000000000000000000000000000d57c1fe983cf970400000000000000000000000000000000000000000000000084ad7ccc03844cf678c551030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "340000000000000000" + }, + "shares": { + "__bigint__": "330961263093841109" + }, + "index": { + "__bigint__": "1027310558406939717989608836" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24327110, + "transactionHash": "0x3be7f23e385d9da78437a62ee486f3e6ab2bc30e3a0a220f74d9b5e9277dc998", + "index": 72, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000491f4ec73521cff09aa9accb94c7f74c93f740249404abec4e", + "previousMessageID": "0x0000000000000048da3ea0c71f2402a5b9b6e5da92739ac4914b6e40bc6d31ac", + "payloadHash": "0x2e3fc55ae2d498e03c998ae74333458cbbba253435465b32135356fa3c804352", + "timestamp": { + "__bigint__": "1769528219" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x145a93472a55a6f4fc674018b1bd28aa0291276e8900804598dec5a60100000000000000000000000000000000000000000000000000f54d34325f6ecb1200000000000000000000000000000000000000000000000de3532b6930a975310000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x5a93472a55a6f4fc674018b1bd28aa0291276e89", + "ethIn": { + "__bigint__": "119000000000000000" + }, + "usdValue": { + "__bigint__": "346700151833140000000" + }, + "pretokensOut": { + "__bigint__": "912368820613526315789" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x145a93472a55a6f4fc674018b1bd28aa0291276e8900804598dec5a6010000000000000000000000000000000000000000000000004ecda068e4879b0100000000000000000000000000000000000000000000000022cad4fe90677225ffc651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x5a93472a55a6f4fc674018b1bd28aa0291276e89", + "principal": { + "__bigint__": "119000000000000000" + }, + "shares": { + "__bigint__": "115835630505741646" + }, + "index": { + "__bigint__": "1027317756034500154210175522" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24327325, + "transactionHash": "0x8bfc42a2082c6a0e33854a1298cfac93cfada458a56162fc74a66e5215114089", + "index": 391, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004a628e8af4f20c7c4b62d3e38ab28c9ea6dad17767938a6ba0", + "previousMessageID": "0x00000000000000491f4ec73521cff09aa9accb94c7f74c93f740249404abec4e", + "payloadHash": "0x8c7ec6643acf74ada517eb954c7af716ea3230cd065b4136f74f233ae9c2a7f0", + "timestamp": { + "__bigint__": "1769530823" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300007775cc00870000000000000000000000000000000000000000000000000000009bace7afda2106000000000000000000000000000000000000000000000000006275cd043223100000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "ethIn": { + "__bigint__": "38000000000000000" + }, + "usdValue": { + "__bigint__": "113119920000000000000" + }, + "pretokensOut": { + "__bigint__": "297684000000000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300007775cc008700000000000000000000000000000000000000000000000000050192dcc769830000000000000000000000000000000000000000000000000022cad4fe90677225ffc651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "principal": { + "__bigint__": "38000000000000000" + }, + "shares": { + "__bigint__": "36989529069060357" + }, + "index": { + "__bigint__": "1027317756034500154210175522" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24327365, + "transactionHash": "0x69f642d481103a00e0ba894e6e729c470dff627e3b2e5c7906002a8e2d35c721", + "index": 577, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004b6254962bdbc3681c891bd9a0bae1d6c70412e018746af399", + "previousMessageID": "0x000000000000004a628e8af4f20c7c4b62d3e38ab28c9ea6dad17767938a6ba0", + "payloadHash": "0x81140f49bd7f3abc829e10abf87a0354f81062c404ded0ab8f201973140c982f", + "timestamp": { + "__bigint__": "1769531315" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300c05773a57c020000000000000000000000000000000000000000000000000000c03847251aeb1c000000000000000000000000000000000000000000000000282fe6c803d9194c000000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "ethIn": { + "__bigint__": "700000000000000" + }, + "usdValue": { + "__bigint__": "2083788000000000000" + }, + "pretokensOut": { + "__bigint__": "5483652631578947368" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x145263a8fc7f35ca026ea5faf684aff13a73e7ca7300c05773a57c0200000000000000000000000000000000000000000000000000501c2b8eb76b020000000000000000000000000000000000000000000000000022cad4fe90677225ffc651030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x5263a8fc7f35ca026ea5faf684aff13a73e7ca73", + "principal": { + "__bigint__": "700000000000000" + }, + "shares": { + "__bigint__": "681386061798480" + }, + "index": { + "__bigint__": "1027317756034500154210175522" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24328972, + "transactionHash": "0xc43de7b16106e7c1bcd3b3b4b66cdea38eba4be0258a4e561c15e4554ba74d97", + "index": 373, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "2" + }, + "timestamp": { + "__bigint__": "1769550707" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x9e7b5327699d4ba3d4713e1a5d17ffd9ca6fcc156852d9a8d12281447c4a0783", + "firstMessageID": "0x0000000000000043e476d2469d48c495aaed060a8a9ebd35e7f7fce16e258d9e", + "lastMessageID": "0x0000000000000048da3ea0c71f2402a5b9b6e5da92739ac4914b6e40bc6d31ac" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24334865, + "transactionHash": "0x06768e81d2c3a1a83fb9a6b97c878d95beadc809b25b807293cc33d02ed1747f", + "index": 123, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004c6b5f970e0ce2b3e3b13a94c769efef08b85359adbcdcd0f5", + "previousMessageID": "0x000000000000004b6254962bdbc3681c891bd9a0bae1d6c70412e018746af399", + "payloadHash": "0x7bf26aa1f315f9edabd33e72038dadbed32fdb2efc1e29c2c3e0b206a3dc356c", + "timestamp": { + "__bigint__": "1769621675" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x147fb70768d03174eae5b32b313f31308de458f01160fb01bd841b1a1c0000000000000000000000000000000000000000000000005ed5d989509144144901000000000000000000000000000000000000000000000424730c9e1271ff610300000000000000000000000000000000000000000000", + "args": { + "buyer": "0x7fb70768d03174eae5b32b313f31308de458f011", + "ethIn": { + "__bigint__": "2024961239377116000" + }, + "usdValue": { + "__bigint__": "6070439252204713530718" + }, + "pretokensOut": { + "__bigint__": "15974840137380825080836" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x147fb70768d03174eae5b32b313f31308de458f01160fb01bd841b1a1c000000000000000000000000000000000000000000000000879162009e225a1b000000000000000000000000000000000000000000000000a2e5b797a514095edadb51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x7fb70768d03174eae5b32b313f31308de458f011", + "principal": { + "__bigint__": "2024961239377116000" + }, + "shares": { + "__bigint__": "1970925848934650247" + }, + "index": { + "__bigint__": "1027416247278746506112787874" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24336310, + "transactionHash": "0x8ae62baaefe75e32977c97966235655271a3e58a3a057c7673e07fcdf35d57f8", + "index": 520, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "3" + }, + "timestamp": { + "__bigint__": "1769639051" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x86e93488f7acaad737fe48cbd9e8a697c6a0df17c952e00a847139f26b7b3b75", + "firstMessageID": "0x00000000000000491f4ec73521cff09aa9accb94c7f74c93f740249404abec4e", + "lastMessageID": "0x000000000000004b6254962bdbc3681c891bd9a0bae1d6c70412e018746af399" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24338243, + "transactionHash": "0x3342f834321d58ff14a6ce64b6e03f25ca6482ac34b97c8ad737c326682f3386", + "index": 239, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004d8269f8adde5198ede44f6d7c81ee264c7ccbd71ea07ac93d", + "previousMessageID": "0x000000000000004c6b5f970e0ce2b3e3b13a94c769efef08b85359adbcdcd0f5", + "payloadHash": "0xe86b9990bf9e4977f2ae0f217328f89b5c85d407a8d3fedd5c39d70011953025", + "timestamp": { + "__bigint__": "1769662367" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14896c20da40c2a4df9b7c98b16a8d5a95129161a538910388b9a721000000000000000000000000000000000000000000000000006555e03256fae883010000000000000000000000000000000000000000000000834c69789fe3d0fc030000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x896c20da40c2a4df9b7c98b16a8d5a95129161a5", + "ethIn": { + "__bigint__": "9473089524175160" + }, + "usdValue": { + "__bigint__": "27951866335402677605" + }, + "pretokensOut": { + "__bigint__": "73557542987901783171" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14896c20da40c2a4df9b7c98b16a8d5a95129161a538910388b9a72100000000000000000000000000000000000000000000000000a9098a3c14c12000000000000000000000000000000000000000000000000000722e2be76824bfb600ef51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x896c20da40c2a4df9b7c98b16a8d5a95129161a5", + "principal": { + "__bigint__": "9473089524175160" + }, + "shares": { + "__bigint__": "9219491913927081" + }, + "index": { + "__bigint__": "1027506679610509882959801970" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24338400, + "transactionHash": "0xf92eeea1d67c30b7624c4ccbf436f3eba02744e66e92edbd4089bcbde6807478", + "index": 1008, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004e9f05584cd3f8efe3b2078f87075eec39a50d90e1211d3091", + "previousMessageID": "0x000000000000004d8269f8adde5198ede44f6d7c81ee264c7ccbd71ea07ac93d", + "payloadHash": "0x178ee4f053f6f2c909b39b39e2ff70cfea387e473f15872f16e0c9f401903b16", + "timestamp": { + "__bigint__": "1769664263" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x1424deed232d133d38cf64a66ee2cd6ff8ec53bb19009066d31e750b0000000000000000000000000000000000000000000000000000e8461614310f84000000000000000000000000000000000000000000000000a12c9255424b865b010000000000000000000000000000000000000000000000", + "args": { + "buyer": "0x24deed232d133d38cf64a66ee2cd6ff8ec53bb19", + "ethIn": { + "__bigint__": "3225000000000000" + }, + "usdValue": { + "__bigint__": "9515878500000000000" + }, + "pretokensOut": { + "__bigint__": "25041785526315789473" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x1424deed232d133d38cf64a66ee2cd6ff8ec53bb19009066d31e750b000000000000000000000000000000000000000000000000009991c08f99260b00000000000000000000000000000000000000000000000000722e2be76824bfb600ef51030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x24deed232d133d38cf64a66ee2cd6ff8ec53bb19", + "principal": { + "__bigint__": "3225000000000000" + }, + "shares": { + "__bigint__": "3138665727431065" + }, + "index": { + "__bigint__": "1027506679610509882959801970" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24342431, + "transactionHash": "0x3feac6909acb23df4ffcc636d84cc6181f941cfb1d74dd2812630dc3916d226f", + "index": 629, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000004f5567e5414752495171f9a35cd3f345b053c6a0f41a8465ce", + "previousMessageID": "0x000000000000004e9f05584cd3f8efe3b2078f87075eec39a50d90e1211d3091", + "payloadHash": "0xa90f2be357d0bf3c32e154bf116260621f8cb34706396a5d4ab8a63184db8ab0", + "timestamp": { + "__bigint__": "1769712827" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14896c20da40c2a4df9b7c98b16a8d5a95129161a500008a5d7845630100000000000000000000000000000000000000000000000028ed4b1e3bc259010000000000000000000000000000000000000000000000009f667d0c3d62240337f051030000000000000000000000000000000000000000", + "args": { + "staker": "0x896c20da40c2a4df9b7c98b16a8d5a95129161a5", + "principal": { + "__bigint__": "100000000000000000" + }, + "shares": { + "__bigint__": "97322426132327720" + }, + "index": { + "__bigint__": "1027512403606046833819608735" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24342644, + "transactionHash": "0x94658ed5377d7c2a3b42003ec407e4211a999ec89143d8b99697bb4c7d1d81c6", + "index": 82, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000050043467aa6c72555699ab03f37ef3d2fb29ec1518133c5b9e", + "previousMessageID": "0x000000000000004f5567e5414752495171f9a35cd3f345b053c6a0f41a8465ce", + "payloadHash": "0x229c9fbb19bb6b68f0c576fed5e141c978e365144c0113b21cd8ea67d80b30ee", + "timestamp": { + "__bigint__": "1769715383" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14992e49f6a2b86aa62bcb7c09b6ea098580c0aee60000c52ebca2b100000000000000000000000000000000000000000000000000e6c33da2f7e0ac000000000000000000000000000000000000000000000000000e57d54a99b6d977f1f051030000000000000000000000000000000000000000", + "args": { + "staker": "0x992e49f6a2b86aa62bcb7c09b6ea098580c0aee6", + "principal": { + "__bigint__": "50000000000000000" + }, + "shares": { + "__bigint__": "48661050177733606" + }, + "index": { + "__bigint__": "1027515843110165178140153614" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24342726, + "transactionHash": "0xccc8b1acaeb97e1bcb3856033bedf0699f770dc82d5c061719b12adbe3c9986b", + "index": 601, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000517da076a6bfdaef5b28e4306cd40c212d5a6d5ac8184b6137", + "previousMessageID": "0x0000000000000050043467aa6c72555699ab03f37ef3d2fb29ec1518133c5b9e", + "payloadHash": "0xf9dd623a29eff22c2b6cd3fc17f54c07c1dfc41e3eff182f982ebf818268f8d3", + "timestamp": { + "__bigint__": "1769716379" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d1dc91efdc3a7b9030000000000000000000000000000000000000000000000005ab9b82150d320c42800000000000000000000000000000000000000000000003df53666c5cd7e476b0000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "268430113012369693" + }, + "usdValue": { + "__bigint__": "752002290920187279706" + }, + "pretokensOut": { + "__bigint__": "1978953397158387578173" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d1dc91efdc3a7b9030000000000000000000000000000000000000000000000000e57d54a99b6d977f1f051030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "268430113012369693" + }, + "index": { + "__bigint__": "1027515843110165178140153614" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24342779, + "transactionHash": "0xc99eaf94aa0b4ec188517bc58d2a60f3017058c9065d9b45d95d5afc491bbcb6", + "index": 769, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "4" + }, + "timestamp": { + "__bigint__": "1769717015" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xd2010d67e5cb573229f019651ddb89b6b0b9a8ba1e2e4460824f6fe0d0d3a75c", + "firstMessageID": "0x000000000000004c6b5f970e0ce2b3e3b13a94c769efef08b85359adbcdcd0f5", + "lastMessageID": "0x000000000000004e9f05584cd3f8efe3b2078f87075eec39a50d90e1211d3091" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24342911, + "transactionHash": "0x2c1996f4e25952c6f35eae8b2e7919f9fbbcddf6e453db2a1a36d87681c7fcf6", + "index": 81, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000052f67ac4acfbec842fe5db0f28fc48e19b8ca1341e76edccb8", + "previousMessageID": "0x00000000000000517da076a6bfdaef5b28e4306cd40c212d5a6d5ac8184b6137", + "payloadHash": "0x23d3706dc90273dbbd18c98663bd18ccb2e67314eb1a27be8a2e6abf43072b51", + "timestamp": { + "__bigint__": "1769718599" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14a42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b00401369d161890400000000000000000000000000000000000000000000000010cf66fe482e6a040000000000000000000000000000000000000000000000003463163563904b3a520452030000000000000000000000000000000000000000", + "args": { + "staker": "0xa42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b", + "principal": { + "__bigint__": "326900000000000000" + }, + "shares": { + "__bigint__": "318117614723714832" + }, + "index": { + "__bigint__": "1027607352971990154484278068" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24349490, + "transactionHash": "0xd1982b6b42b97aa1fdb4e17b707dec4d6e7ec22f35f8fda7d2fc3fc0f122718a", + "index": 326, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000053db2353e1198de0366390501bc676d66254dfdbc81668e2a4", + "previousMessageID": "0x0000000000000052f67ac4acfbec842fe5db0f28fc48e19b8ca1341e76edccb8", + "payloadHash": "0x5432410244c064f61d3c9bcff3d247cab96c469181d6a32aeb0fe423b95cd9e1", + "timestamp": { + "__bigint__": "1769797847" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0de80f54ea5f0f290000000000000000000000000000000000000000000000000097a497ad013ee4ac0100000000000000000000000000000000000000000000009abe300cc17aa968040000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "11557378672824296" + }, + "usdValue": { + "__bigint__": "30904894719851472023" + }, + "pretokensOut": { + "__bigint__": "81328670315398610586" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0de80f54ea5f0f290000000000000000000000000000000000000000000000000053a4f8317ff074967a1452030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "11557378672824296" + }, + "index": { + "__bigint__": "1027683655346423816047338579" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24353837, + "transactionHash": "0x22c17d31872cec1c161c8c5bf2dd30c6521b4fc69c2a79db7cd68a38e9858715", + "index": 101, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000054a7e1d9aa866c0233da5e215a0173f52219fa486e9e5211bf", + "previousMessageID": "0x0000000000000053db2353e1198de0366390501bc676d66254dfdbc81668e2a4", + "payloadHash": "0xa46e3bc75c625bc6724ec1976a9c3ff832ed045ae9e1656721270166ab34e749", + "timestamp": { + "__bigint__": "1769850227" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x146820250308b5ea5044672a297b2529e627787f5f0000c84e676dc11b000000000000000000000000000000000000000000000000008069bd07dfa5931e0100000000000000000000000000000000000000000000af639910cca319eaed0200000000000000000000000000000000000000000000", + "args": { + "buyer": "0x6820250308b5ea5044672a297b2529e627787f5f", + "ethIn": { + "__bigint__": "2000000000000000000" + }, + "usdValue": { + "__bigint__": "5286407960000000000000" + }, + "pretokensOut": { + "__bigint__": "13833480005184594207663" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x146820250308b5ea5044672a297b2529e627787f5f0000c84e676dc11b0000000000000000000000000000000000000000000000002556ab60c85f001b0000000000000000000000000000000000000000000000008f4fefc5ad13b4355b4852030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x6820250308b5ea5044672a297b2529e627787f5f", + "principal": { + "__bigint__": "2000000000000000000" + }, + "shares": { + "__bigint__": "1945660353243993637" + }, + "index": { + "__bigint__": "1027928639582651737413996431" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24354678, + "transactionHash": "0x0a115dc40cc6e6257a806c5eac96c23cf0f03f2c6d0b145b30195344b7436a7d", + "index": 180, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000055683056b438100f1ad5f0fc22e01017f5e091288fabd8a52c", + "previousMessageID": "0x0000000000000054a7e1d9aa866c0233da5e215a0173f52219fa486e9e5211bf", + "payloadHash": "0xf53c6f2fb46a1d201976c42d5c4f51ca803ea446adf255b8074f9094a4d44559", + "timestamp": { + "__bigint__": "1769860355" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f4008004ef90bd1005000000000000000000000000000000000000000000000000804dc561c6682929340000000000000000000000000000000000000000000000c0416df4ef85e766820000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "365000000000000000" + }, + "usdValue": { + "__bigint__": "962196708863750000000" + }, + "pretokensOut": { + "__bigint__": "2405491772159375000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f4008004ef90bd10050000000000000000000000000000000000000000000000000454f07f6679ed040000000000000000000000000000000000000000000000009c7f3622b7b475df3b4e52030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "365000000000000000" + }, + "shares": { + "__bigint__": "355073426772218884" + }, + "index": { + "__bigint__": "1027956395717973721069551516" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24357513, + "transactionHash": "0x70d032449b217a619642bb0ada791bd3c2e23f9a696d59144d6e2498b8e54d94", + "index": 374, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "5" + }, + "timestamp": { + "__bigint__": "1769894591" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xdd74c723ae9fc5837da16eff9df2a198506823cc3d00bf0b41beaf82b467d34e", + "firstMessageID": "0x000000000000004f5567e5414752495171f9a35cd3f345b053c6a0f41a8465ce", + "lastMessageID": "0x0000000000000053db2353e1198de0366390501bc676d66254dfdbc81668e2a4" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24357525, + "transactionHash": "0x2a5a1343aa0e03ad496ff6c668627e82fa649f44e7e3fdccc6b3d467ae1418da", + "index": 247, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000056ac71a175e948f93f79f12866af87386fa88ca17767a29f6c", + "previousMessageID": "0x0000000000000055683056b438100f1ad5f0fc22e01017f5e091288fabd8a52c", + "payloadHash": "0xf34d16b089b3d0b50bb76cde6883e6fc9e514753821dd7933c17654128435bba", + "timestamp": { + "__bigint__": "1769894735" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d5524408f8e2e5b00000000000000000000000000000000000000000000000000f71757a80a4d4550030000000000000000000000000000000000000000000000e9bbd9a49a40ad48080000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "25665412704248917" + }, + "usdValue": { + "__bigint__": "61124346225725216759" + }, + "pretokensOut": { + "__bigint__": "152810865564313041897" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d5524408f8e2e5b000000000000000000000000000000000000000000000000007c5ff35907d784af5b6252030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "25665412704248917" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24362867, + "transactionHash": "0x33c58d8089e4c58b78c0c1995fad66ffe634cdb05756e1d022104aa0ebf005a8", + "index": 1004, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000057df23754f5b083c7c2940c653190260f87c756256e9a6dae8", + "previousMessageID": "0x0000000000000056ac71a175e948f93f79f12866af87386fa88ca17767a29f6c", + "payloadHash": "0x295b0a185898c34612118c44c41703b752bbed92f081e4c81026169a493e9107", + "timestamp": { + "__bigint__": "1769959187" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14c6af34d695d501c407e46280a53e76cec5b7fd1bb049e9a315a4910f00000000000000000000000000000000000000000000000070dc4d61513e70628d000000000000000000000000000000000000000000000018a74273cb9b1876610100000000000000000000000000000000000000000000", + "args": { + "buyer": "0xc6af34d695d501c407e46280a53e76cec5b7fd1b", + "ethIn": { + "__bigint__": "1121858195043207600" + }, + "usdValue": { + "__bigint__": "2608084152325401074800" + }, + "pretokensOut": { + "__bigint__": "6520210380813502687000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14c6af34d695d501c407e46280a53e76cec5b7fd1bb049e9a315a4910f00000000000000000000000000000000000000000000000059ec05cd80e3240f0000000000000000000000000000000000000000000000007c5ff35907d784af5b6252030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xc6af34d695d501c407e46280a53e76cec5b7fd1b", + "principal": { + "__bigint__": "1121858195043207600" + }, + "shares": { + "__bigint__": "1091247152065539161" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24362980, + "transactionHash": "0xd0e80e8251838385a67332ab391a9a984061f47f3ce9fc78a0f5e9ce67a7cf60", + "index": 254, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000584c6589b05a31707711ed9ec5323ba8541878d8c9cfd1710e", + "previousMessageID": "0x0000000000000057df23754f5b083c7c2940c653190260f87c756256e9a6dae8", + "payloadHash": "0xb1f2b2c41aab387c1cc3d3a47516af4be8708e9aabf8111e13d12d645bc2289f", + "timestamp": { + "__bigint__": "1769960555" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700c01349f44f424d000000000000000000000000000000000000000000000000089d04194441524b0000000000000000000000000000000000000000000000007c5ff35907d784af5b62520300000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "amount": { + "__bigint__": "5567100000000000000" + }, + "shares": { + "__bigint__": "5427472261668183304" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + }, + "tokenId": { + "__bigint__": "32" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24362984, + "transactionHash": "0xa018c30e078a74602c630a9ed1a5cb61ccac3bb2dea94d782d908cd65a56e225", + "index": 174, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000059963a631984cb6ee55f0b99b21edb9e7cbcf553255aeea1ca", + "previousMessageID": "0x00000000000000584c6589b05a31707711ed9ec5323ba8541878d8c9cfd1710e", + "payloadHash": "0x38beb49bea9fea1c7c5e2bf4fb16e2fe55e6021d8f9ae59910af14287cb58ccc", + "timestamp": { + "__bigint__": "1769960603" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f700409e322c06794d000000000000000000000000000000000000000000000000642ee91bfd7f904b0000000000000000000000000000000000000000000000007c5ff35907d784af5b62520300000000000000000000000000000000000000001f00000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "amount": { + "__bigint__": "5582500000000000000" + }, + "shares": { + "__bigint__": "5444992674562649700" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + }, + "tokenId": { + "__bigint__": "31" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24362989, + "transactionHash": "0x7715741880e9bd852d12a05063cf7d2e000a7f6c97bf29e14bcec78e8f3e80f9", + "index": 399, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005ad22502f84d0fb1e0ed26f58def2f57aaded551515221f5a7", + "previousMessageID": "0x0000000000000059963a631984cb6ee55f0b99b21edb9e7cbcf553255aeea1ca", + "payloadHash": "0x9e87632234fa4429ea8e266d7e20d58c3dbb35d4679fe47b15209ce8d5bd3c7d", + "timestamp": { + "__bigint__": "1769960663" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f70000e2bc64908c4d000000000000000000000000000000000000000000000000973324c4ff8fc04b0000000000000000000000000000000000000000000000007c5ff35907d784af5b62520300000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "amount": { + "__bigint__": "5588000000000000000" + }, + "shares": { + "__bigint__": "5458521077043180439" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + }, + "tokenId": { + "__bigint__": "12" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24362992, + "transactionHash": "0x76d6878ca7a2f64452071bb41a78b2daa892ff9e5de769d716b716bed09fbc75", + "index": 166, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005be1481720ea6751e3a1d2a6385dba0defe876361c73c3202c", + "previousMessageID": "0x000000000000005ad22502f84d0fb1e0ed26f58def2f57aaded551515221f5a7", + "payloadHash": "0x25609014d235256687c0010d383887c62e873c3b8779bacff2317b422421b0f2", + "timestamp": { + "__bigint__": "1769960699" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x1419286a93a5e3190008843b76ad96d1f2be3566f70000194295d431450000000000000000000000000000000000000000000000005c38c5b6e9eaa4430000000000000000000000000000000000000000000000007c5ff35907d784af5b62520300000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0x19286a93a5e3190008843b76ad96d1f2be3566f7", + "amount": { + "__bigint__": "4986000000000000000" + }, + "shares": { + "__bigint__": "4874278986236377180" + }, + "index": { + "__bigint__": "1028051429888936811437449084" + }, + "tokenId": { + "__bigint__": "10" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24364615, + "transactionHash": "0x74beb98da2aa3361b6468c6d8d2a60f11dd93b7961fa22dea7420db1895616e0", + "index": 541, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "6" + }, + "timestamp": { + "__bigint__": "1769980307" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xef9eccb77f2c5e17c727c42f5020ad0d582ff77007a0268ce3d5e00c6d2f6ff7", + "firstMessageID": "0x0000000000000054a7e1d9aa866c0233da5e215a0173f52219fa486e9e5211bf", + "lastMessageID": "0x0000000000000056ac71a175e948f93f79f12866af87386fa88ca17767a29f6c" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24364624, + "transactionHash": "0x7df7b13042b4cf2965ea6fac745ec8b8b13bf79cb00c92fb4b879da08eec50ce", + "index": 198, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005ccd3015e525b013adec0c1a75ff16bb59beccc62499791032", + "previousMessageID": "0x000000000000005be1481720ea6751e3a1d2a6385dba0defe876361c73c3202c", + "payloadHash": "0xc9d7e8f0bdcf91ce325498d9c04270b6fe6d9f365d84599a9d97eb9229be220c", + "timestamp": { + "__bigint__": "1769980415" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d21090c43fd940f00000000000000000000000000000000000000000000000000ff434a9c48180f8c000000000000000000000000000000000000000000000000fda9b986b5bc255e010000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "4385940123158817" + }, + "usdValue": { + "__bigint__": "10092311990099395583" + }, + "pretokensOut": { + "__bigint__": "25230779975248488957" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d21090c43fd940f00000000000000000000000000000000000000000000000000f28089346901b4a97c7452030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "4385940123158817" + }, + "index": { + "__bigint__": "1028137040809113256911798514" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24371807, + "transactionHash": "0xba4e03d01ac4f0bb1798e3f67b5a34e1c5ad201abd220f9a4cad4e99512f9268", + "index": 756, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "7" + }, + "timestamp": { + "__bigint__": "1770067079" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x7c591a17723699de1e0fb8c71ea083b2ddb73e3375788c44abcff61482d471b3", + "firstMessageID": "0x0000000000000057df23754f5b083c7c2940c653190260f87c756256e9a6dae8", + "lastMessageID": "0x000000000000005ccd3015e525b013adec0c1a75ff16bb59beccc62499791032" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24371869, + "transactionHash": "0x248ef661e37aad060cdb001981c0f3dcc0554fe0948dc7ad500218d0e9212204", + "index": 497, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005d024c62e5ca913d46c11e8ba0b3948184c4ca6cb72342313f", + "previousMessageID": "0x000000000000005ccd3015e525b013adec0c1a75ff16bb59beccc62499791032", + "payloadHash": "0x3beb71a0fedc928fa49c9a4bc0f90eeff8960db23dcba5c4f72fa51b25b17cdb", + "timestamp": { + "__bigint__": "1770067835" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d413b6de3abe40f000000000000000000000000000000000000000000000000007bf9a605f2d2fc90000000000000000000000000000000000000000000000000b36f210e5d0f786a010000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "4473551556787009" + }, + "usdValue": { + "__bigint__": "10447457172511455611" + }, + "pretokensOut": { + "__bigint__": "26118642931278639027" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d413b6de3abe40f00000000000000000000000000000000000000000000000000d015d31c98399b58fa8652030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "4473551556787009" + }, + "index": { + "__bigint__": "1028224361851917980556006864" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24372193, + "transactionHash": "0x1e1b3f76d3c493f59358df524ae0965a0255dd2a17601ba2b69b60b27acbee64", + "index": 61, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005e207a6d98e1496cc2f1f730e23a1285062d1ffb05e2d95e8b", + "previousMessageID": "0x000000000000005d024c62e5ca913d46c11e8ba0b3948184c4ca6cb72342313f", + "payloadHash": "0x39ca1828b50075f0b76f35d38f4fb6339589aa186ad94f3a92cb9caa918857b6", + "timestamp": { + "__bigint__": "1770071747" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x14a42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b0000c0d0d335a51a000000000000000000000000000000000000000000000000526fd77fd22df319000000000000000000000000000000000000000000000000d015d31c98399b58fa86520300000000000000000000000000000000000000003500000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0xa42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b", + "amount": { + "__bigint__": "1920000000000000000" + }, + "shares": { + "__bigint__": "1869888652400095058" + }, + "index": { + "__bigint__": "1028224361851917980556006864" + }, + "tokenId": { + "__bigint__": "53" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24372195, + "transactionHash": "0x641d052e8b821fa328c920dfe876763633e0f2ce7d9500f2fd9fd934a139a19c", + "index": 9, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x000000000000005f0b047c7492e04ca8b7d9f0304fa8ad90a16e43cc2be01b67", + "previousMessageID": "0x000000000000005e207a6d98e1496cc2f1f730e23a1285062d1ffb05e2d95e8b", + "payloadHash": "0x1728efcb1aff8ce88645e9874a9f87df0009a61fc084ae75f1a258487c8a4a71", + "timestamp": { + "__bigint__": "1770071771" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3002, + "assertionName": "Unstake", + "assertion": "0x14a42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b00401369d161890400000000000000000000000000000000000000000000000010cf66fe482e6a04000000000000000000000000000000000000000000000000d015d31c98399b58fa86520300000000000000000000000000000000000000004d00000000000000000000000000000000000000000000000000000000000000", + "args": { + "staker": "0xa42fef51f8ae7480b2f47eac8ea32fbe9dff2b1b", + "amount": { + "__bigint__": "326900000000000000" + }, + "shares": { + "__bigint__": "318117614723714832" + }, + "index": { + "__bigint__": "1028224361851917980556006864" + }, + "tokenId": { + "__bigint__": "77" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24372640, + "transactionHash": "0x1c0be88c95998aca51d83d7b02e79db6fbe231b5dc466d2582342e8614d69cda", + "index": 209, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000602610b4564ce09d24f51665df27e4a52d74530a19a51c1811", + "previousMessageID": "0x000000000000005f0b047c7492e04ca8b7d9f0304fa8ad90a16e43cc2be01b67", + "payloadHash": "0xd94bd68de51a4dae0275766a23896230a581f3a0f26ce5269664b4a20c57ee8f", + "timestamp": { + "__bigint__": "1770077123" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14cd8817f9a4c52bc2a71bc1f3e41d1668c56afcf40000e68698c4270e0000000000000000000000000000000000000000000000007fc01bfcc1e7c30d0000000000000000000000000000000000000000000000002b22548a59e518d62c9f52030000000000000000000000000000000000000000", + "args": { + "staker": "0xcd8817f9a4c52bc2a71bc1f3e41d1668c56afcf4", + "principal": { + "__bigint__": "1020000000000000000" + }, + "shares": { + "__bigint__": "991891163296022655" + }, + "index": { + "__bigint__": "1028338630027283011602752043" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24372734, + "transactionHash": "0x6c8d9b4f85716cf50654dfd341f2aea10debfcad4a722f20e7140cca5a5ebd4a", + "index": 334, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000061b0db4330398f6dcd5fd5797d1ad3c12c52867670697d8444", + "previousMessageID": "0x00000000000000602610b4564ce09d24f51665df27e4a52d74530a19a51c1811", + "payloadHash": "0x77c17a853adb95772949b27571bbd9e8942c86878ca45bcb93cea884a7bcc8f8", + "timestamp": { + "__bigint__": "1770078263" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3001, + "assertionName": "Stake", + "assertion": "0x14cd8817f9a4c52bc2a71bc1f3e41d1668c56afcf40080c6a47e8d0300000000000000000000000000000000000000000000000000d4e4dd5e6e7403000000000000000000000000000000000000000000000000002b22548a59e518d62c9f52030000000000000000000000000000000000000000", + "args": { + "staker": "0xcd8817f9a4c52bc2a71bc1f3e41d1668c56afcf4", + "principal": { + "__bigint__": "1000000000000000" + }, + "shares": { + "__bigint__": "972442316956884" + }, + "index": { + "__bigint__": "1028338630027283011602752043" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24378282, + "transactionHash": "0xca5d3d134a72f5a06e73e8d3f45262af2987d47392a4cfb4286ab4024b1cf647", + "index": 598, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000624d9ed2912a84059065df48cb354bb883eaca779bf3058221", + "previousMessageID": "0x0000000000000061b0db4330398f6dcd5fd5797d1ad3c12c52867670697d8444", + "payloadHash": "0xb4e5f758456509a0a9c5651916f1ec271252f4c34d4f333fb6ff2faada557aef", + "timestamp": { + "__bigint__": "1770145271" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d8f96d07c051a20000000000000000000000000000000000000000000000000008452e446daf7ac090100000000000000000000000000000000000000000000004ace3ab1a16b3098020000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "9035810125944463" + }, + "usdValue": { + "__bigint__": "19143948632909435524" + }, + "pretokensOut": { + "__bigint__": "47859871582273588810" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d8f96d07c051a20000000000000000000000000000000000000000000000000007ad22210fcaa24dfb2ad52030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "9035810125944463" + }, + "index": { + "__bigint__": "1028407215673580936621118074" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24384851, + "transactionHash": "0xf23ced3d94c1ea24f1b237b3f892e8c9dc0747bfc6b25a65ddf70177ef87103a", + "index": 394, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "8" + }, + "timestamp": { + "__bigint__": "1770224543" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x8687dcf895350bb348c5f4eecadff73460aabb73f31f9b30706f0654868f4349", + "firstMessageID": "0x000000000000005d024c62e5ca913d46c11e8ba0b3948184c4ca6cb72342313f", + "lastMessageID": "0x00000000000000624d9ed2912a84059065df48cb354bb883eaca779bf3058221" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24385437, + "transactionHash": "0xc9d2b3484f6d5763f3943bfe06bc993dedea7fd8d0fbdb6cfcf9fa98ec939100", + "index": 252, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000063a33b6ced5da96a5831eeaf8cf4dbe88d33455d31fe943f14", + "previousMessageID": "0x00000000000000624d9ed2912a84059065df48cb354bb883eaca779bf3058221", + "payloadHash": "0x53926ad967d0cdff39b49c8b71b21515829d4ba89b4c18769a19d4d0c846440c", + "timestamp": { + "__bigint__": "1770231671" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d9bbf0132da6017000000000000000000000000000000000000000000000000005d7e514aabbfabc3000000000000000000000000000000000000000000000000e8bbcb392c5f2de9010000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "6580414722457499" + }, + "usdValue": { + "__bigint__": "14099573800820637277" + }, + "pretokensOut": { + "__bigint__": "35248934502051593192" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d9bbf0132da60170000000000000000000000000000000000000000000000000087bf4e69e5b33b3f8cc952030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "6580414722457499" + }, + "index": { + "__bigint__": "1028538729436095162436468615" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24391992, + "transactionHash": "0x80ddd573ef2d96472081d3112bd29d3b7a6e078f7b7123d38c4f48b4d36cece9", + "index": 339, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "9" + }, + "timestamp": { + "__bigint__": "1770310967" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x0000000000000063a33b6ced5da96a5831eeaf8cf4dbe88d33455d31fe943f14", + "firstMessageID": "0x0000000000000063a33b6ced5da96a5831eeaf8cf4dbe88d33455d31fe943f14", + "lastMessageID": "0x0000000000000063a33b6ced5da96a5831eeaf8cf4dbe88d33455d31fe943f14" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24392585, + "transactionHash": "0x616f8cd423d395765e94d66f54d69b021e2f53e99611e0782965983b6c67fae9", + "index": 550, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000064feaf80546144e8af3892a27771986dd522b919dee9ab1625", + "previousMessageID": "0x0000000000000063a33b6ced5da96a5831eeaf8cf4dbe88d33455d31fe943f14", + "payloadHash": "0x780c0e5f3c5f5d998a4daa949b15c84d360ce2f868fda945daa9da57c604f19d", + "timestamp": { + "__bigint__": "1770318107" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0da68b1c8ee9bd0900000000000000000000000000000000000000000000000000ae9126d9615c014a000000000000000000000000000000000000000000000000336ce09ef46603b9000000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "2742085599660966" + }, + "usdValue": { + "__bigint__": "5332645009108144558" + }, + "pretokensOut": { + "__bigint__": "13331612522770361395" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0da68b1c8ee9bd090000000000000000000000000000000000000000000000000041a61b4c3c22341627d552030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "2742085599660966" + }, + "index": { + "__bigint__": "1028593531756246317596911169" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24399735, + "transactionHash": "0xd2d917f521434ca33efc0c28a0dee011ca1c9fadd7c375ec129cfb737a6fc639", + "index": 704, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000065c497a293e0c032d7487b49d00f89d5480e927af98c3a5d6a", + "previousMessageID": "0x0000000000000064feaf80546144e8af3892a27771986dd522b919dee9ab1625", + "payloadHash": "0x3d09a80815430f0decc115b5c807e582f48d64282feba6cba8e0deda275f0055", + "timestamp": { + "__bigint__": "1770404459" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0dc1112459bb651100000000000000000000000000000000000000000000000000f7b2f0fc30065e8b00000000000000000000000000000000000000000000000069bf59787a0f6b5c010000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "4896929932906945" + }, + "usdValue": { + "__bigint__": "10042471026554614519" + }, + "pretokensOut": { + "__bigint__": "25106177566386536297" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0dc1112459bb651100000000000000000000000000000000000000000000000000b7e403fa1d740689e0e952030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "4896929932906945" + }, + "index": { + "__bigint__": "1028691400007322841928426679" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24400064, + "transactionHash": "0xb77412a29ea970bca23bf9524f60959548a92c823745f4b1e0eb0d93aac9a351", + "index": 588, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "10" + }, + "timestamp": { + "__bigint__": "1770408443" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0x0000000000000064feaf80546144e8af3892a27771986dd522b919dee9ab1625", + "firstMessageID": "0x0000000000000064feaf80546144e8af3892a27771986dd522b919dee9ab1625", + "lastMessageID": "0x0000000000000064feaf80546144e8af3892a27771986dd522b919dee9ab1625" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24406708, + "transactionHash": "0x958966799bd0ea4b9cd30dbf43bf08641d40fdb06ccee66673611db37fc4eaae", + "index": 350, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x00000000000000663d825cbfd1f888a4b07cc564966aa1c9c8b0be9adacabe30", + "previousMessageID": "0x0000000000000065c497a293e0c032d7487b49d00f89d5480e927af98c3a5d6a", + "payloadHash": "0xeb9f944e865a2dfa58aaabc13cd0fabf88163213c50b5a354fbb808dbd8500ea", + "timestamp": { + "__bigint__": "1770488579" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14285202c8db763db06ab42e0705104cb7919ef95e00807f6e0b032621000000000000000000000000000000000000000000000000801ea8183b8a38390e0100000000000000000000000000000000000000000000404ca4bd93590d8fa30200000000000000000000000000000000000000000000", + "args": { + "buyer": "0x285202c8db763db06ab42e0705104cb7919ef95e", + "ethIn": { + "__bigint__": "2388600000000000000" + }, + "usdValue": { + "__bigint__": "4984744097346858000000" + }, + "pretokensOut": { + "__bigint__": "12461860243367145000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14285202c8db763db06ab42e0705104cb7919ef95e00807f6e0b03262100000000000000000000000000000000000000000000000090734aa8eeb03520000000000000000000000000000000000000000000000000bcc4fe2f81a190c9ee4953030000000000000000000000000000000000000000", + "args": { + "purchaser": "0x285202c8db763db06ab42e0705104cb7919ef95e", + "principal": { + "__bigint__": "2388600000000000000" + }, + "shares": { + "__bigint__": "2320955722051515280" + }, + "index": { + "__bigint__": "1029145010094674829146768572" + } + } + } + ] + } + }, + { + "name": "OPPMessage", + "blockNumber": 24406899, + "transactionHash": "0xd93fcd968a4386d20fed754a2370c6a4e92dfbb71f1116396683c7a992151923", + "index": 672, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000067da0bc4b989c37c78f0ba26d15f92c05b5ff84f67d8350abb", + "previousMessageID": "0x00000000000000663d825cbfd1f888a4b07cc564966aa1c9c8b0be9adacabe30", + "payloadHash": "0x76a1971d67b95dff3fb9592abfdfcee26e8e6ca45abd98cf44eb6b1063ff6dae", + "timestamp": { + "__bigint__": "1770490871" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d223ff433a0a250000000000000000000000000000000000000000000000000001345b3ad9973ac94020000000000000000000000000000000000000000000000af2c40320021af73060000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "ethIn": { + "__bigint__": "22696807086964514" + }, + "usdValue": { + "__bigint__": "47606552864908068115" + }, + "pretokensOut": { + "__bigint__": "119016382162270170287" + } + } + }, + { + "assertionType": 3006, + "assertionName": "Yield Pretoken Purchase", + "assertion": "0x14da268adcb90c422c2102a5f713182a42a8b9ea0d223ff433a0a25000000000000000000000000000000000000000000000000000bcc4fe2f81a190c9ee4953030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xda268adcb90c422c2102a5f713182a42a8b9ea0d", + "principal": { + "__bigint__": "22696807086964514" + }, + "index": { + "__bigint__": "1029145010094674829146768572" + } + } + } + ] + } + }, + { + "name": "OPPEpoch", + "blockNumber": 24413421, + "transactionHash": "0x1ebd478e4977ddd11718bff263ea872373dc8133671b002e35fab16877adf3d4", + "index": 837, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "envelope": { + "epochNumber": { + "__bigint__": "11" + }, + "timestamp": { + "__bigint__": "1770570167" + }, + "prevEpochHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "merkleRoot": "0xe262829e4560ffe2b27bc109996d935baa2f26feae2152ec1e12c648f32c1fa3", + "firstMessageID": "0x0000000000000065c497a293e0c032d7487b49d00f89d5480e927af98c3a5d6a", + "lastMessageID": "0x00000000000000663d825cbfd1f888a4b07cc564966aa1c9c8b0be9adacabe30" + } + }, + { + "name": "OPPMessage", + "blockNumber": 24417436, + "transactionHash": "0x35835ddc46d6f67526773f443ff2f4f3f4150b7631a4714d9cabd36eae124c87", + "index": 148, + "contract": "OPP", + "contractAddress": "0x5e1135cF8987268a3e7F68551558Ae92c454429f", + "header": { + "messageID": "0x0000000000000068f5df0b4950aae112064cc740b5a6b0a099a59cdf41b91eb6", + "previousMessageID": "0x0000000000000067da0bc4b989c37c78f0ba26d15f92c05b5ff84f67d8350abb", + "payloadHash": "0x468ecce27544649be6cdcff56ea1ad7528d1636cc92719a92585bd2151ebeba1", + "timestamp": { + "__bigint__": "1770618695" + }, + "messageNumber": { + "__bigint__": "0" + } + }, + "payload": { + "protocolVersion": { + "__bigint__": "1" + }, + "encodingFlags": { + "__bigint__": "0" + }, + "assertions": [ + { + "assertionType": 3005, + "assertionName": "Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f4000030f4744da90600000000000000000000000000000000000000000000000000803ff9b4ebbb0e36000000000000000000000000000000000000000000000000c01e6f44cdd524870000000000000000000000000000000000000000000000", + "args": { + "buyer": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "ethIn": { + "__bigint__": "480000000000000000" + }, + "usdValue": { + "__bigint__": "997185881280000000000" + }, + "pretokensOut": { + "__bigint__": "2492964703200000000000" + } + } + }, + { + "assertionType": 3004, + "assertionName": "Liq Pretoken Purchase", + "assertion": "0x14db5832c22734b166b299d2d0301c44aabbfd87f4000030f4744da9060000000000000000000000000000000000000000000000004133aafb38c97806000000000000000000000000000000000000000000000000f93a050f21b18edc436753030000000000000000000000000000000000000000", + "args": { + "purchaser": "0xdb5832c22734b166b299d2d0301c44aabbfd87f4", + "principal": { + "__bigint__": "480000000000000000" + }, + "shares": { + "__bigint__": "466343808010433345" + }, + "index": { + "__bigint__": "1029283528064472830253021945" + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..fc6768e --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "opp-parser", + "version": "1.0.0", + "description": "OPP Balance Parser for EOSIO Migration", + "main": "src/parse_balances.ts", + "scripts": { + "parse": "ts-node src/parse_balances.ts", + "compare": "ts-node src/compare_balances.ts", + "relay": "ts-node src/relay.ts", + "build": "tsc", + "start": "node dist/parse_balances.js", + "test": "jest" + }, + "keywords": [ + "opp", + "blockchain", + "eosio", + "parser" + ], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/jest": "^29.5.0", + "@types/node": "^20.10.0", + "jest": "^29.7.0", + "ts-jest": "^29.1.0", + "ts-node": "^10.9.2", + "typescript": "^5.3.0" + } +} diff --git a/src/compare_balances.ts b/src/compare_balances.ts new file mode 100644 index 0000000..2b06b8e --- /dev/null +++ b/src/compare_balances.ts @@ -0,0 +1,253 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import { BalanceOutput, StakerOutput, PurchaserOutput } from './types'; + +// Tolerance: use absolute tolerance for small values, relative for large values. +// The coworker's table truncates display to 4-5 significant figures, so values in +// the thousands can differ by ~1.0 due to display rounding alone. +const ABS_TOLERANCE = parseFloat(process.env.TOLERANCE ?? '1.5'); +const WEI = 1e18; + +interface CoworkerRow { + account: string; + principal: number; + staked: number; + shares: number; + preSpent: number; + prePurchased: number; + refundValue: number; + pretokenYield: number; +} + +interface MergedRow { + principal: number; + staked: number; + shares: number; + preSpent: number; + prePurchased: number; + refundValue: number; + pretokenYield: number; +} + +// Parse the coworker's box-drawing table from the temp file +function parseCoworkerTable(filePath: string): { rows: CoworkerRow[]; totals: CoworkerRow } { + const raw = fs.readFileSync(filePath, 'utf-8'); + const lines = raw.split('\n'); + + const rows: CoworkerRow[] = []; + let totals: CoworkerRow | null = null; + + for (const line of lines) { + // Skip border lines (┌─┬─┐, ├─┼─┤, └─┴─┘) and empty lines + if (!line.includes('│') || line.trim() === '') continue; + + // Split by │ and trim each cell + const cells = line.split('│').map((c) => c.trim()).filter((c) => c !== ''); + + // Skip header row + if (cells[0] === 'Account') continue; + + // Check if this is the totals row + if (cells[0] === 'Totals') { + totals = { + account: 'Totals', + principal: parseFloat(cells[1]), + staked: parseFloat(cells[2]), + shares: parseFloat(cells[3]), + preSpent: parseFloat(cells[4]), + prePurchased: parseFloat(cells[5]), + refundValue: parseFloat(cells[6]), + pretokenYield: parseFloat(cells[7]), + }; + continue; + } + + // Regular account row - must start with 0x + if (!cells[0].startsWith('0x')) continue; + + rows.push({ + account: cells[0].toLowerCase(), + principal: parseFloat(cells[1]), + staked: parseFloat(cells[2]), + shares: parseFloat(cells[3]), + preSpent: parseFloat(cells[4]), + prePurchased: parseFloat(cells[5]), + refundValue: parseFloat(cells[6]), + pretokenYield: parseFloat(cells[7]), + }); + } + + if (!totals) { + throw new Error('No totals row found in coworker data'); + } + + return { rows, totals }; +} + +// Merge staker + purchaser data for an address into a single comparable row +function mergeOurData( + address: string, + staker: StakerOutput | undefined, + purchaser: PurchaserOutput | undefined, + latestIndex: bigint, +): MergedRow { + const stakerPrincipal = staker ? Number(BigInt(staker.principal)) / WEI : 0; + const purchaserPrincipal = purchaser ? Number(BigInt(purchaser.principal)) / WEI : 0; + + const stakerShares = staker ? Number(BigInt(staker.shares)) / WEI : 0; + const purchaserShares = purchaser ? Number(BigInt(purchaser.shares)) / WEI : 0; + + const stakerYield = staker ? Number(BigInt(staker.pretokenYield)) / WEI : 0; + const purchaserYield = purchaser ? Number(BigInt(purchaser.yield)) / WEI : 0; + + const purchaserPretokens = purchaser ? Number(BigInt(purchaser.pretokens)) / WEI : 0; + + // Refund value = (totalShares * latestIndex) / 1e27 + const totalShares = BigInt(staker?.shares ?? '0') + BigInt(purchaser?.shares ?? '0'); + const refundValue = Number((totalShares * latestIndex) / BigInt('1000000000000000000000000000')) / WEI; + + return { + principal: stakerPrincipal + purchaserPrincipal, + staked: stakerPrincipal, + shares: stakerShares + purchaserShares, + preSpent: purchaserPrincipal, + prePurchased: purchaserPretokens, + refundValue, + pretokenYield: stakerYield + purchaserYield, + }; +} + +// Check if two values match within tolerance +function matches(ours: number, theirs: number): boolean { + return Math.abs(ours - theirs) <= ABS_TOLERANCE; +} + +// Format a number for display, matching coworker's precision style +function fmt(n: number): string { + if (n === 0) return '0'; + if (Math.abs(n) >= 100) return n.toFixed(0); + if (Math.abs(n) >= 1) return n.toFixed(4); + return n.toFixed(4); +} + +function main(): void { + const tempPath = path.join(__dirname, '..', 'temp'); + const balancesPath = path.join(__dirname, '..', 'balances_output.json'); + + if (!fs.existsSync(tempPath)) { + console.error('Missing coworker data file: ./temp'); + process.exit(1); + } + if (!fs.existsSync(balancesPath)) { + console.error('Missing balances_output.json - run `npm run parse` first'); + process.exit(1); + } + + // Load data + const { rows: coworkerRows, totals: coworkerTotals } = parseCoworkerTable(tempPath); + const balances: BalanceOutput = JSON.parse(fs.readFileSync(balancesPath, 'utf-8')); + const latestIndex = BigInt(balances.metadata.latestIndex); + + // Collect all unique addresses + const allAddresses = new Set(); + for (const row of coworkerRows) allAddresses.add(row.account); + for (const addr of Object.keys(balances.stakers)) allAddresses.add(addr); + for (const addr of Object.keys(balances.purchasers)) allAddresses.add(addr); + + const fields = ['principal', 'staked', 'shares', 'preSpent', 'prePurchased', 'refundValue', 'pretokenYield'] as const; + const fieldLabels: Record = { + principal: 'Principal', + staked: 'Staked', + shares: 'Shares', + preSpent: 'PRE Spent', + prePurchased: 'PRE Purchased', + refundValue: 'Refund Value', + pretokenYield: 'Pretoken Yield', + }; + + let mismatches = 0; + let totalChecked = 0; + + // Our totals accumulator + const ourTotals: MergedRow = { + principal: 0, staked: 0, shares: 0, preSpent: 0, + prePurchased: 0, refundValue: 0, pretokenYield: 0, + }; + + console.log('=== Per-Account Comparison ===\n'); + + for (const addr of [...allAddresses].sort()) { + const coworkerRow = coworkerRows.find((r) => r.account === addr); + const ours = mergeOurData( + addr, + balances.stakers[addr], + balances.purchasers[addr], + latestIndex, + ); + + // Accumulate our totals + for (const f of fields) ourTotals[f] += ours[f]; + + if (!coworkerRow) { + console.log(`${addr}: MISSING from coworker data`); + mismatches++; + continue; + } + + // Compare each field + const diffs: string[] = []; + for (const f of fields) { + totalChecked++; + const ourVal = ours[f]; + const theirVal = coworkerRow[f]; + if (!matches(ourVal, theirVal)) { + diffs.push(` ${fieldLabels[f]}: ours=${fmt(ourVal)} theirs=${fmt(theirVal)} diff=${fmt(ourVal - theirVal)}`); + mismatches++; + } + } + + if (diffs.length > 0) { + console.log(`${addr}: MISMATCH`); + for (const d of diffs) console.log(d); + } + } + + // Check for addresses in coworker data but not in ours + for (const row of coworkerRows) { + if (!balances.stakers[row.account] && !balances.purchasers[row.account]) { + console.log(`${row.account}: MISSING from our data`); + mismatches++; + } + } + + // Totals comparison + console.log('\n=== Totals Comparison ===\n'); + console.log(`${'Field'.padEnd(20)} ${'Ours'.padStart(12)} ${'Theirs'.padStart(12)} ${'Diff'.padStart(12)} ${'Status'.padStart(8)}`); + console.log('-'.repeat(66)); + + for (const f of fields) { + const ourVal = ourTotals[f]; + const theirVal = coworkerTotals[f]; + const diff = ourVal - theirVal; + const status = matches(ourVal, theirVal) ? 'OK' : 'MISMATCH'; + if (status === 'MISMATCH') mismatches++; + console.log( + `${fieldLabels[f].padEnd(20)} ${fmt(ourVal).padStart(12)} ${fmt(theirVal).padStart(12)} ${fmt(diff).padStart(12)} ${status.padStart(8)}`, + ); + } + + // Summary + console.log(`\n=== Summary ===`); + console.log(`Accounts compared: ${allAddresses.size}`); + console.log(`Fields checked: ${totalChecked}`); + console.log(`Tolerance: ${ABS_TOLERANCE} (override with TOLERANCE env var)`); + + if (mismatches === 0) { + console.log('\nAll values match within tolerance!'); + } else { + console.log(`\n${mismatches} mismatch(es) found.`); + process.exit(1); + } +} + +main(); diff --git a/src/parse_balances.test.ts b/src/parse_balances.test.ts new file mode 100644 index 0000000..68e7aca --- /dev/null +++ b/src/parse_balances.test.ts @@ -0,0 +1,1164 @@ +import { OPPBalanceParser, INDEX_PRECISION, parseBigInt } from './parse_balances'; +import { ASSERTION_TYPES, OPPMessage } from './types'; + +// Helper to create a test message with assertions +function createMessage( + messageId: string, + assertions: Array<{ assertionType: number; args: Record }> +): OPPMessage { + return { + header: { + messageID: messageId, + previousMessageID: '', + payloadHash: '', + timestamp: '1700000000', + messageNumber: 1, + }, + payload: { + protocolVersion: 1, + encodingFlags: 0, + assertions: assertions.map((a) => ({ + ...a, + assertionName: getAssertionName(a.assertionType), + })), + }, + }; +} + +function getAssertionName(type: number): string { + const names: Record = { + [ASSERTION_TYPES.STAKE]: 'Stake', + [ASSERTION_TYPES.UNSTAKE]: 'Unstake', + [ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE]: 'Liq Pretoken Purchase', + [ASSERTION_TYPES.PRETOKEN_PURCHASE]: 'Pretoken Purchase', + [ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE]: 'Yield Pretoken Purchase', + }; + return names[type] || 'Unknown'; +} + +describe('OPPBalanceParser', () => { + describe('Staker Tests', () => { + test('Test 1: Single Staker - Stake Only', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, // 1.0 + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const staker = output.stakers['0xaaa']; + expect(staker).toBeDefined(); + expect(staker.principal).toBe('1000'); + expect(staker.shares).toBe('1000'); + }); + + test('Test 2: Single Staker - Stake with Index Growth', () => { + const parser = new OPPBalanceParser(); + const indexAt1_1 = (INDEX_PRECISION * BigInt(11)) / BigInt(10); // 1.1e27 + + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, // stake at index 1.0 + }, + }, + ]), + // Simulate index growth by processing another event with higher index + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xBBB', // different staker to update index + principal: BigInt(0), + shares: BigInt(0), + index: indexAt1_1, // index now 1.1 + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const staker = output.stakers['0xaaa']; + expect(staker).toBeDefined(); + expect(staker.principal).toBe('1000'); + expect(staker.shares).toBe('1000'); + }); + + test('Test 3: Single Staker - Stake and Partial Unstake', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.UNSTAKE, + args: { + staker: '0xAAA', + amount: BigInt(500), + shares: BigInt(500), + index: INDEX_PRECISION, + tokenId: BigInt(1), + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const staker = output.stakers['0xaaa']; + expect(staker).toBeDefined(); + expect(staker.principal).toBe('500'); // 1000 - 500 + expect(staker.shares).toBe('500'); + }); + }); + + describe('Purchaser Tests', () => { + test('Test 4: Single Purchaser - Direct Pretoken Purchase (3005)', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xAAA', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(5000), + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const purchaser = output.purchasers['0xaaa']; + expect(purchaser).toBeDefined(); + expect(purchaser.pretokens).toBe('5000'); + expect(purchaser.shares).toBe('0'); + expect(purchaser.principal).toBe('0'); + expect(purchaser.yield).toBe('0'); + expect(purchaser.totalPretokens).toBe('5000'); + }); + + test('Test 5: Single Purchaser - Liq Purchase (3004)', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const purchaser = output.purchasers['0xaaa']; + expect(purchaser).toBeDefined(); + expect(purchaser.pretokens).toBe('0'); + expect(purchaser.shares).toBe('1000'); + expect(purchaser.principal).toBe('1000'); + expect(purchaser.yield).toBe('0'); + expect(purchaser.totalPretokens).toBe('0'); + }); + + test('Test 6: Single Purchaser - Liq + Yield Distribution (3004 + paired 3005/3006)', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield event: 3005 and 3006 are paired in same message + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(5000), // This is the actual pretokens to distribute + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), // This is ETH, not pretokens - should be ignored + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const purchaser = output.purchasers['0xaaa']; + expect(purchaser).toBeDefined(); + expect(purchaser.pretokens).toBe('0'); + expect(purchaser.shares).toBe('1000'); + expect(purchaser.principal).toBe('1000'); + expect(purchaser.yield).toBe('5000'); // Gets pretokensOut from paired 3005 + expect(purchaser.totalPretokens).toBe('5000'); + expect(output.metadata.yieldDust).toBe('0'); + }); + + test('Test 7: Multiple Purchasers - Equal Split, No Dust', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xAAA', + principal: BigInt(500), + shares: BigInt(500), + index: INDEX_PRECISION, + }, + }, + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xBBB', + principal: BigInt(500), + shares: BigInt(500), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield event: paired 3005/3006 + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), // Pretokens to distribute + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), // ETH value (ignored) + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const purchaserA = output.purchasers['0xaaa']; + const purchaserB = output.purchasers['0xbbb']; + + expect(purchaserA).toBeDefined(); + expect(purchaserB).toBeDefined(); + + // Each gets 50% of 1000 = 500 + expect(purchaserA.yield).toBe('500'); + expect(purchaserA.totalPretokens).toBe('500'); + expect(purchaserB.yield).toBe('500'); + expect(purchaserB.totalPretokens).toBe('500'); + + // No dust + expect(output.metadata.yieldDust).toBe('0'); + }); + + test('Test 8: Multiple Purchasers - Unequal Split with Dust', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xAAA', + principal: BigInt(100), + shares: BigInt(100), + index: INDEX_PRECISION, + }, + }, + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xBBB', + principal: BigInt(100), + shares: BigInt(100), + index: INDEX_PRECISION, + }, + }, + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xCCC', + principal: BigInt(100), + shares: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield event: paired 3005/3006 + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(100), // Pretokens to distribute + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), // ETH value (ignored) + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const purchaserA = output.purchasers['0xaaa']; + const purchaserB = output.purchasers['0xbbb']; + const purchaserC = output.purchasers['0xccc']; + + expect(purchaserA).toBeDefined(); + expect(purchaserB).toBeDefined(); + expect(purchaserC).toBeDefined(); + + // With scaled arithmetic (1e27 precision), each gets exactly 1/3 of 100 + // 100 * 1e27 / 3 = 33333...e27, then /1e27 = 33 (truncated at final step only) + expect(purchaserA.yield).toBe('33'); + expect(purchaserB.yield).toBe('33'); + expect(purchaserC.yield).toBe('33'); + + // With scaled arithmetic, dust is minimized (only truncation at final output) + // The 1 unit of dust now happens in the 1e27 scaled space, not output space + expect(output.metadata.yieldDust).toBe('0'); + }); + + test('Test 9: Stakers receive yield distribution', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // Staker stakes 1000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xSTAKER', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Liq purchaser contributes 1000 + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xPURCHASER', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield event: paired 3005/3006 + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(2000), // Pretokens to distribute + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // Staker gets 50% (1000/2000 total principal) of 2000 = 1000 + const staker = output.stakers['0xstaker']; + expect(staker).toBeDefined(); + expect(staker.pretokenYield).toBe('1000'); + + // Purchaser gets 50% of 2000 = 1000 + const purchaser = output.purchasers['0xpurchaser']; + expect(purchaser).toBeDefined(); + expect(purchaser.yield).toBe('1000'); + }); + + test('Test 10: Fully unstaked user receives no yield', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // User A stakes 1000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // User B stakes 1000 (for reference) + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xBBB', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // User A fully unstakes + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.UNSTAKE, + args: { + staker: '0xAAA', + amount: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + tokenId: BigInt(1), + }, + }, + ]), + // Yield event occurs AFTER user A unstaked - paired 3005/3006 + createMessage('msg4', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), // Pretokens to distribute + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // User A should not appear in output (fully unstaked, no yield) + expect(output.stakers['0xaaa']).toBeUndefined(); + + // User B should get 100% of the yield (only remaining principal) + const stakerB = output.stakers['0xbbb']; + expect(stakerB).toBeDefined(); + expect(stakerB.pretokenYield).toBe('1000'); + }); + + test('Test 11: Yield distributed before and after partial unstake', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // User stakes 2000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xUSER', + principal: BigInt(2000), + shares: BigInt(2000), + index: INDEX_PRECISION, + }, + }, + ]), + // First yield event - user has 2000 principal + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), // 100% goes to user + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // User unstakes half + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.UNSTAKE, + args: { + staker: '0xUSER', + amount: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + tokenId: BigInt(1), + }, + }, + ]), + // Second yield event - user has 1000 NET principal (2000 - 1000) + createMessage('msg4', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(500), // 100% goes to user (only participant) + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const user = output.stakers['0xuser']; + expect(user).toBeDefined(); + // Should receive both yields: 1000 + 500 = 1500 + expect(user.pretokenYield).toBe('1500'); + // Net principal should be 1000 (2000 in - 1000 out) + expect(user.principal).toBe('1000'); + }); + }); + + describe('Intermittent Staking with Multiple Yield Events', () => { + test('Test 12: Stakers join at different times across yield events', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // Epoch 0: Staker A joins with 1000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 1: Only A is staked (1000 total principal) + // A gets 100% of 1000 PRE = 1000 PRE + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // Epoch 1: Staker B joins with 1000 + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xBBB', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 2: A and B both staked (2000 total principal) + // A gets 50% of 2000 PRE = 1000 PRE + // B gets 50% of 2000 PRE = 1000 PRE + createMessage('msg4', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(200), + usdValue: BigInt(400), + pretokensOut: BigInt(2000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(200), + index: INDEX_PRECISION, + }, + }, + ]), + // Epoch 2: Staker C joins with 2000 + createMessage('msg5', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xCCC', + principal: BigInt(2000), + shares: BigInt(2000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 3: A(1000), B(1000), C(2000) = 4000 total principal + // A gets 25% of 4000 PRE = 1000 PRE + // B gets 25% of 4000 PRE = 1000 PRE + // C gets 50% of 4000 PRE = 2000 PRE + createMessage('msg6', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(400), + usdValue: BigInt(800), + pretokensOut: BigInt(4000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(400), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // A: 1000 (event1) + 1000 (event2) + 1000 (event3) = 3000 PRE + const stakerA = output.stakers['0xaaa']; + expect(stakerA).toBeDefined(); + expect(stakerA.pretokenYield).toBe('3000'); + + // B: 0 (missed event1) + 1000 (event2) + 1000 (event3) = 2000 PRE + const stakerB = output.stakers['0xbbb']; + expect(stakerB).toBeDefined(); + expect(stakerB.pretokenYield).toBe('2000'); + + // C: 0 (missed event1) + 0 (missed event2) + 2000 (event3) = 2000 PRE + const stakerC = output.stakers['0xccc']; + expect(stakerC).toBeDefined(); + expect(stakerC.pretokenYield).toBe('2000'); + }); + + test('Test 13: Mixed stakers and liq purchasers across yield events', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // Staker A joins with 1000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xSTAKER', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 1: Only staker (1000 total) + // Staker gets 100% of 500 PRE + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(50), + usdValue: BigInt(100), + pretokensOut: BigInt(500), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(50), + index: INDEX_PRECISION, + }, + }, + ]), + // Liq purchaser joins with 3000 + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xLIQ', + principal: BigInt(3000), + shares: BigInt(3000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 2: Staker(1000) + Liq(3000) = 4000 total + // Staker gets 25% of 1000 PRE = 250 PRE + // Liq gets 75% of 1000 PRE = 750 PRE + createMessage('msg4', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // Staker: 500 (event1) + 250 (event2) = 750 PRE + const staker = output.stakers['0xstaker']; + expect(staker).toBeDefined(); + expect(staker.pretokenYield).toBe('750'); + + // Liq: 0 (missed event1) + 750 (event2) = 750 PRE + const liq = output.purchasers['0xliq']; + expect(liq).toBeDefined(); + expect(liq.yield).toBe('750'); + }); + + test('Test 14: Staker leaves and rejoins between yield events', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // Staker A joins with 1000 + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Staker B joins with 1000 + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xBBB', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 1: A(1000) + B(1000) = 2000 total + // Each gets 500 PRE + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // Staker A fully unstakes + createMessage('msg4', [ + { + assertionType: ASSERTION_TYPES.UNSTAKE, + args: { + staker: '0xAAA', + amount: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + tokenId: BigInt(1), + }, + }, + ]), + // Yield Event 2: Only B(1000) = 1000 total + // B gets 100% of 1000 PRE + createMessage('msg5', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // Staker A rejoins with 2000 + createMessage('msg6', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(2000), + shares: BigInt(2000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield Event 3: A has net principal 2000 (3000 in - 1000 out), B has 1000 = 3000 total + // A gets 2000/3000 * 2000 PRE = 1333 PRE + // B gets 1000/3000 * 2000 PRE = 666 PRE + createMessage('msg7', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(200), + usdValue: BigInt(400), + pretokensOut: BigInt(2000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(200), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // A: 500 (event1) + 0 (event2, was unstaked) + 1333 (event3) = 1833 PRE + // Net principal at event3: totalIn(3000) - totalOut(1000) = 2000 + const stakerA = output.stakers['0xaaa']; + expect(stakerA).toBeDefined(); + expect(stakerA.pretokenYield).toBe('1833'); + expect(stakerA.principal).toBe('2000'); // 1000 + 2000 - 1000 = 2000 + + // B: 500 (event1) + 1000 (event2) + 666 (event3) = 2166 PRE + const stakerB = output.stakers['0xbbb']; + expect(stakerB).toBeDefined(); + expect(stakerB.pretokenYield).toBe('2166'); + }); + + test('Test 15: Zero principal edge case - no yield distributed', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // Yield event with no stakers - should not crash + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(1000), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + // Now someone stakes + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.STAKE, + args: { + staker: '0xAAA', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Second yield event - now there's a staker + createMessage('msg3', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(500), + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // A only gets yield from event 2 (500 PRE) + // Event 1 yield (1000 PRE) is lost because no one was staked + const stakerA = output.stakers['0xaaa']; + expect(stakerA).toBeDefined(); + expect(stakerA.pretokenYield).toBe('500'); + }); + }); + + describe('3005+3006 Double-Counting Fix', () => { + test('Test 16: 3005 paired with 3006 should NOT add to purchaser pretokens', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // First: a liq purchaser stakes so there's someone to receive yield + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xLIQ_USER', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + // Yield event: 3005 and 3006 paired - the 3005's pretokensOut should NOT + // be added to '0xYIELD_SOURCE' as a direct purchase + createMessage('msg2', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xYIELD_SOURCE', // This is the protocol address + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(5000), // This is for distribution, NOT a purchase + }, + }, + { + assertionType: ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE, + args: { + purchaser: '0xYIELD_SOURCE', + principal: BigInt(100), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // The yield source address should NOT appear as a purchaser with pretokens + // (it might appear if it has yield from being a staker, but not with direct pretokens) + const yieldSource = output.purchasers['0xyield_source']; + expect(yieldSource).toBeUndefined(); + + // The actual liq user should receive all the yield + const liqUser = output.purchasers['0xliq_user']; + expect(liqUser).toBeDefined(); + expect(liqUser.yield).toBe('5000'); + expect(liqUser.pretokens).toBe('0'); // No direct pretokens + expect(liqUser.totalPretokens).toBe('5000'); // Only from yield + }); + + test('Test 17: 3005 paired with 3004 (not 3006) should still count both', () => { + const parser = new OPPBalanceParser(); + const messages = [ + // User does both direct pretoken purchase AND liq purchase in same message + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xUSER', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(5000), // Direct pretokens + }, + }, + { + assertionType: ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE, + args: { + purchaser: '0xUSER', + principal: BigInt(1000), + shares: BigInt(1000), + index: INDEX_PRECISION, + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + // User should have both direct pretokens AND liq position + const user = output.purchasers['0xuser']; + expect(user).toBeDefined(); + expect(user.pretokens).toBe('5000'); // Direct pretokens counted + expect(user.shares).toBe('1000'); // Liq shares counted + expect(user.principal).toBe('1000'); // Liq principal counted + expect(user.totalPretokens).toBe('5000'); // pretokens + yield (0) + }); + + test('Test 18: 3005 alone should still count as direct purchase', () => { + const parser = new OPPBalanceParser(); + const messages = [ + createMessage('msg1', [ + { + assertionType: ASSERTION_TYPES.PRETOKEN_PURCHASE, + args: { + buyer: '0xBUYER', + ethIn: BigInt(100), + usdValue: BigInt(200), + pretokensOut: BigInt(3000), + }, + }, + ]), + ]; + + parser.processMessages(messages); + const output = parser.generateOutput(); + + const buyer = output.purchasers['0xbuyer']; + expect(buyer).toBeDefined(); + expect(buyer.pretokens).toBe('3000'); + expect(buyer.totalPretokens).toBe('3000'); + }); + }); + + describe('parseBigInt helper', () => { + test('parses __bigint__ format', () => { + expect(parseBigInt({ __bigint__: '12345' })).toBe(BigInt(12345)); + }); + + test('parses string', () => { + expect(parseBigInt('12345')).toBe(BigInt(12345)); + }); + + test('parses number', () => { + expect(parseBigInt(12345)).toBe(BigInt(12345)); + }); + + test('parses bigint', () => { + expect(parseBigInt(BigInt(12345))).toBe(BigInt(12345)); + }); + + test('returns 0 for null/undefined', () => { + expect(parseBigInt(null)).toBe(BigInt(0)); + expect(parseBigInt(undefined)).toBe(BigInt(0)); + }); + }); +}); diff --git a/src/parse_balances.ts b/src/parse_balances.ts new file mode 100644 index 0000000..a430246 --- /dev/null +++ b/src/parse_balances.ts @@ -0,0 +1,366 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import { + OPPMessage, + StakerState, + PurchaserState, + BalanceOutput, + StakerOutput, + PurchaserOutput, + ASSERTION_TYPES, + BigIntSerialized, +} from './types'; + +// Constants +export const INDEX_PRECISION = BigInt('1000000000000000000000000000'); // 1e27 +export const YIELD_PRECISION = BigInt('1000000000000000000000000000'); // 1e27 - for scaled yield arithmetic + +// Parse BigInt from serialized format +export function parseBigInt(val: any): bigint { + if (val === null || val === undefined) { + return BigInt(0); + } + if (typeof val === 'object' && val.__bigint__) { + return BigInt(val.__bigint__); + } + if (typeof val === 'bigint') { + return val; + } + if (typeof val === 'string') { + return BigInt(val); + } + if (typeof val === 'number') { + return BigInt(val); + } + return BigInt(0); +} + +// Main parser class +export class OPPBalanceParser { + private stakers: Map = new Map(); + private purchasers: Map = new Map(); + private latestIndex: bigint = INDEX_PRECISION; // Default to 1e27 (1.0) + private lastMessageId: string = ''; + private lastTimestamp: string = ''; + private totalMessages: number = 0; + private totalPrincipal: bigint = BigInt(0); // Track total NET principal for yield distribution (stakers + liq purchasers) + private yieldDust: bigint = BigInt(0); // Track rounding errors from yield distribution + + // Get or create staker state + private getStaker(address: string): StakerState { + const normalized = address.toLowerCase(); + if (!this.stakers.has(normalized)) { + this.stakers.set(normalized, { + totalShares: BigInt(0), + totalPrincipalIn: BigInt(0), + totalAmountOut: BigInt(0), + yieldClaimed: BigInt(0), + }); + } + return this.stakers.get(normalized)!; + } + + // Get or create purchaser state + private getPurchaser(address: string): PurchaserState { + const normalized = address.toLowerCase(); + if (!this.purchasers.has(normalized)) { + this.purchasers.set(normalized, { + pretokens: BigInt(0), + liqShares: BigInt(0), + liqPrincipalIn: BigInt(0), + yieldClaimed: BigInt(0), + }); + } + return this.purchasers.get(normalized)!; + } + + // Process a single assertion + private processAssertion( + assertion: { assertionType: number; args: Record }, + allAssertions: Array<{ assertionType: number; args: Record }> + ): void { + const { assertionType, args } = assertion; + + switch (assertionType) { + case ASSERTION_TYPES.STAKE: { + // 3001: Stake - staker, principal, shares, index + const staker = this.getStaker(args.staker); + const shares = parseBigInt(args.shares); + const principal = parseBigInt(args.principal); + const index = parseBigInt(args.index); + + staker.totalShares += shares; + staker.totalPrincipalIn += principal; + this.totalPrincipal += principal; // Track for yield distribution + + if (index > BigInt(0)) { + this.latestIndex = index; + } + break; + } + + case ASSERTION_TYPES.UNSTAKE: { + // 3002: Unstake - staker, amount, shares, index, tokenId + const staker = this.getStaker(args.staker); + const shares = parseBigInt(args.shares); + const amount = parseBigInt(args.amount); + const index = parseBigInt(args.index); + + staker.totalShares -= shares; + staker.totalAmountOut += amount; + this.totalPrincipal -= amount; // Reduce total principal for yield distribution + + if (index > BigInt(0)) { + this.latestIndex = index; + } + break; + } + + case ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE: { + // 3004: Liq Pretoken Purchase - purchaser, principal, shares, index + const purchaser = this.getPurchaser(args.purchaser); + const shares = parseBigInt(args.shares); + const principal = parseBigInt(args.principal); + const index = parseBigInt(args.index); + + purchaser.liqShares += shares; + purchaser.liqPrincipalIn += principal; + this.totalPrincipal += principal; // Track for yield distribution + + if (index > BigInt(0)) { + this.latestIndex = index; + } + break; + } + + case ASSERTION_TYPES.PRETOKEN_PURCHASE: { + // 3005: Pretoken Purchase - buyer, ethIn, usdValue, pretokensOut + // Skip if paired with 3006 (yield event) - those pretokens are for distribution, not direct purchase + const isPairedWithYield = allAssertions.some( + (a) => a.assertionType === ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE + ); + + if (!isPairedWithYield) { + const purchaser = this.getPurchaser(args.buyer); + const pretokensOut = parseBigInt(args.pretokensOut); + purchaser.pretokens += pretokensOut; + } + break; + } + + case ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE: { + // 3006: Yield Pretoken Purchase - purchaser, principal, index + // Find paired 3005 event in same assertions array and use pretokensOut + const index = parseBigInt(args.index); + + // Find paired 3005 event to get actual pretokens to distribute + const pairedPretoken = allAssertions.find( + (a) => a.assertionType === ASSERTION_TYPES.PRETOKEN_PURCHASE + ); + + if (pairedPretoken && this.totalPrincipal > BigInt(0)) { + const pretokensToDistribute = parseBigInt(pairedPretoken.args.pretokensOut); + + // Scale up pretokens before distribution to minimize precision loss + // We multiply by YIELD_PRECISION first, then divide by totalPrincipal + // This delays truncation and preserves more precision + const scaledPretokens = pretokensToDistribute * YIELD_PRECISION; + + // Distribute to stakers based on NET principal (after unstakes) + for (const [addr, state] of this.stakers.entries()) { + const netPrincipal = state.totalPrincipalIn - state.totalAmountOut; + if (netPrincipal > BigInt(0)) { + // share = (netPrincipal / totalPrincipal) * pretokens * PRECISION + const scaledShare = (netPrincipal * scaledPretokens) / this.totalPrincipal; + state.yieldClaimed += scaledShare; + } + } + + // Distribute to liq purchasers based on their principal + for (const [addr, state] of this.purchasers.entries()) { + if (state.liqPrincipalIn > BigInt(0)) { + const scaledShare = (state.liqPrincipalIn * scaledPretokens) / this.totalPrincipal; + state.yieldClaimed += scaledShare; + } + } + + // Note: Dust is now tracked in scaled units, will be divided at output + // Theoretical total = scaledPretokens, actual distributed is sum of shares + // Dust per event is at most (numUsers - 1) units in scaled space + } + + if (index > BigInt(0)) { + this.latestIndex = index; + } + break; + } + + // Ignore bonding events (2001, 2002) + default: + break; + } + } + + // Process all messages + public processMessages(messages: any[]): void { + let validMessages = 0; + + for (const message of messages) { + // Skip messages without proper structure + if (!message?.header?.messageID || !message?.payload?.assertions) { + console.warn('Skipping message:', JSON.stringify(message).slice(0, 100)); + continue; + } + + validMessages++; + this.lastMessageId = message.header.messageID; + this.lastTimestamp = typeof message.header.timestamp === 'object' + ? message.header.timestamp.__bigint__ + : String(message.header.timestamp); + + for (const assertion of message.payload.assertions) { + this.processAssertion(assertion, message.payload.assertions); + } + } + + this.totalMessages = validMessages; + } + + // Generate output + public generateOutput(): BalanceOutput { + const stakersOutput: Record = {}; + const purchasersOutput: Record = {}; + + // Process stakers + for (const [address, state] of this.stakers.entries()) { + // Skip if no remaining balance and no yield claimed + if (state.totalShares === BigInt(0) && state.yieldClaimed === BigInt(0)) { + continue; + } + + const netPrincipal = state.totalPrincipalIn - state.totalAmountOut; + // Divide by YIELD_PRECISION to convert from scaled internal representation + const actualYield = state.yieldClaimed / YIELD_PRECISION; + + stakersOutput[address] = { + principal: netPrincipal.toString(), + shares: state.totalShares.toString(), + pretokenYield: actualYield.toString(), + }; + } + + // Process purchasers + for (const [address, state] of this.purchasers.entries()) { + // Skip if no remaining balance + if (state.pretokens === BigInt(0) && + state.liqShares === BigInt(0) && + state.yieldClaimed === BigInt(0)) { + continue; + } + + // Divide by YIELD_PRECISION to convert from scaled internal representation + const actualYield = state.yieldClaimed / YIELD_PRECISION; + const totalPretokens = state.pretokens + actualYield; + + purchasersOutput[address] = { + pretokens: state.pretokens.toString(), + shares: state.liqShares.toString(), + principal: state.liqPrincipalIn.toString(), + yield: actualYield.toString(), + totalPretokens: totalPretokens.toString(), + }; + } + + // Sum totals from final output to correctly reflect net values + let totalLiqEthStaked = BigInt(0); + for (const staker of Object.values(stakersOutput)) { + totalLiqEthStaked += BigInt(staker.principal); + } + let totalLiqEthPurchased = BigInt(0); + for (const purchaser of Object.values(purchasersOutput)) { + totalLiqEthPurchased += BigInt(purchaser.principal); + } + + return { + stakers: stakersOutput, + purchasers: purchasersOutput, + metadata: { + lastMessageId: this.lastMessageId, + lastTimestamp: this.lastTimestamp, + latestIndex: this.latestIndex.toString(), + totalMessages: this.totalMessages, + generatedAt: new Date().toISOString(), + yieldDust: this.yieldDust.toString(), + totalLiqEthStaked: totalLiqEthStaked.toString(), + totalLiqEthPurchased: totalLiqEthPurchased.toString(), + }, + }; + } + + // Validation checks + public validate(): string[] { + const errors: string[] = []; + + // Check for negative shares + for (const [address, state] of this.stakers.entries()) { + if (state.totalShares < BigInt(0)) { + errors.push(`Staker ${address} has negative shares: ${state.totalShares.toString()}`); + } + } + + for (const [address, state] of this.purchasers.entries()) { + if (state.liqShares < BigInt(0)) { + errors.push(`Purchaser ${address} has negative liq shares: ${state.liqShares.toString()}`); + } + if (state.pretokens < BigInt(0)) { + errors.push(`Purchaser ${address} has negative pretokens: ${state.pretokens.toString()}`); + } + } + + return errors; + } +} + +// Main execution +async function main(): Promise { + const inputPath = path.join(__dirname, '..', 'opp_events_current.json'); + const outputPath = path.join(__dirname, '..', 'balances_output.json'); + + console.log('Loading OPP events from:', inputPath); + + // Load and parse JSON + const rawData = fs.readFileSync(inputPath, 'utf-8'); + const messages: OPPMessage[] = JSON.parse(rawData); + + console.log(`Loaded ${messages.length} messages`); + + // Process messages + const parser = new OPPBalanceParser(); + parser.processMessages(messages); + + // Validate + const errors = parser.validate(); + if (errors.length > 0) { + console.error('Validation errors:'); + for (const error of errors) { + console.error(' -', error); + } + } + + // Generate output + const output = parser.generateOutput(); + + // Write output + fs.writeFileSync(outputPath, JSON.stringify(output, null, 2)); + + console.log(`Output written to: ${outputPath}`); + console.log(`Stakers: ${Object.keys(output.stakers).length}`); + console.log(`Purchasers: ${Object.keys(output.purchasers).length}`); + console.log(`Latest index: ${output.metadata.latestIndex}`); + console.log(`Last message: ${output.metadata.lastMessageId}`); +} + +main().catch((error) => { + console.error('Error:', error); + process.exit(1); +}); diff --git a/src/relay.ts b/src/relay.ts new file mode 100644 index 0000000..2fc62bb --- /dev/null +++ b/src/relay.ts @@ -0,0 +1,462 @@ +#!/usr/bin/env ts-node +/** + * OPP Operator Relay + * + * Automates the Ethereum → Wire depot OPP message flow: + * 1. Reads parsed Ethereum outpost events (OPP assertions) + * 2. Encodes them into Wire depot wire-format payloads + * 3. Submits epoch chains from multiple operators (4-of-7 consensus) + * 4. Uploads messages via uploadmsgs + * 5. Cranks to process READY messages + * + * Usage: + * WIRE_NODE=http://192.168.50.183:8888 \ + * CLIO=/path/to/clio \ + * ts-node src/relay.ts [--events opp_events_current.json] [--epoch-size 10] + */ + +import { execSync } from "child_process"; +import * as fs from "fs"; +import * as path from "path"; +import * as crypto from "crypto"; +import { + OPPMessage, + OPPAssertion, + BigIntSerialized, + ASSERTION_TYPES, +} from "./types"; + +// ── Config ─────────────────────────────────────────────────────────────────── + +const WIRE_NODE = process.env.WIRE_NODE || "http://localhost:8888"; +const CLIO = process.env.CLIO || "clio"; +const EPOCH_SIZE = parseInt(process.env.EPOCH_SIZE || "10", 10); + +// 7 batch operators registered on the testnet +const OPERATORS = [ + "testoperator", + "testoper2345", + "testoper345a", + "testoperaaaa", + "testoperbbbb", + "testopercccc", + "testoperdddd", +]; +const CONSENSUS_QUORUM = 4; + +// Depot assertion type IDs (matching depot.types.hpp) +const DEPOT_ASSERTION = { + BALANCE_SHEET: 0xaa00, + STAKE_UPDATE: 0xee00, + YIELD_REWARD: 0xee01, + WIRE_PURCHASE: 0xee02, + OPERATOR_REGISTRATION: 0xee03, + CHALLENGE_RESPONSE: 0xee04, + SLASH_OPERATOR: 0xee05, +}; + +// ── Helpers ────────────────────────────────────────────────────────────────── + +function toBigInt(v: string | BigIntSerialized | number): bigint { + if (typeof v === "number") return BigInt(v); + if (typeof v === "string") return BigInt(v); + return BigInt(v.__bigint__); +} + +function clio(args: string): string { + const cmd = `${CLIO} -u ${WIRE_NODE} ${args}`; + try { + return execSync(cmd, { + encoding: "utf-8", + timeout: 30000, + stdio: ["pipe", "pipe", "pipe"], + }); + } catch (e: any) { + console.error(`clio error: ${e.stderr || e.message}`); + throw e; + } +} + +function clioJson(args: string): any { + const out = clio(args); + try { + return JSON.parse(out); + } catch { + return out; + } +} + +function getDepotState(): any { + const resp = clioJson("get table sysio.depot sysio.depot depotstate"); + return resp.rows?.[0]; +} + +// ── Wire Format Encoding ───────────────────────────────────────────────────── + +function writeBE(buf: Buffer, offset: number, value: bigint, bytes: number) { + for (let i = bytes - 1; i >= 0; i--) { + buf[offset + i] = Number(value & 0xffn); + value >>= 8n; + } +} + +function nameToUint64(name: string): bigint { + const charmap = ".12345abcdefghijklmnopqrstuvwxyz"; + let n = 0n; + for (let i = 0; i < Math.min(name.length, 13); i++) { + const c = BigInt(charmap.indexOf(name[i]) || 0); + if (i < 12) { + n |= (c & 0x1fn) << BigInt(64 - 5 * (i + 1)); + } else { + n |= c & 0x0fn; + } + } + return n; +} + +function symbolCodeRaw(sym: string): bigint { + let raw = 0n; + for (let i = 0; i < Math.min(sym.length, 7); i++) { + raw |= BigInt(sym.charCodeAt(i)) << BigInt(8 * i); + } + return raw; +} + +/** + * Map an Ethereum OPP assertion to a depot wire-format message. + * Returns: { assertionType: number, payload: Buffer } or null if unmappable. + */ +function mapAssertionToDepot( + assertion: OPPAssertion +): { assertionType: number; payload: Buffer } | null { + switch (assertion.assertionType) { + case ASSERTION_TYPES.STAKE: + case ASSERTION_TYPES.UNSTAKE: { + // Map to stake_update (0xEE00) + // Payload: sym_code(8) + delta(8) + wire_account(8) + direction(1) + const ethSym = symbolCodeRaw("ETH"); + const isStake = assertion.assertionType === ASSERTION_TYPES.STAKE; + // Ethereum amounts are in Wei (18 decimals). Depot ETH reserve uses 8 decimals. + // Scale: Wei / 10^10 = 8-decimal ETH + const rawAmount = toBigInt( + assertion.args.principal || assertion.args.amount || "0" + ); + const amount = rawAmount / 10000000000n; // Wei -> 8-decimal ETH + if (amount <= 0n) return null; + // The staker field is an Ethereum address, but we need a Wire account name. + // For the relay, we map it to a deterministic Wire name (first 12 chars of hex). + // In production, this would use the user's registered Wire account. + const staker = String(assertion.args.staker || ""); + const wireAccount = nameToUint64("testoperator"); // Default for testnet + + const buf = Buffer.alloc(25); + writeBE(buf, 0, ethSym, 8); + writeBE(buf, 8, amount, 8); + writeBE(buf, 16, wireAccount, 8); + buf[24] = isStake ? 0 : 1; + + return { assertionType: DEPOT_ASSERTION.STAKE_UPDATE, payload: buf }; + } + + case ASSERTION_TYPES.PRETOKEN_PURCHASE: { + // Map to wire_purchase (0xEE02) + // Payload: source_sym(8) + source_amount(8) + buyer_account(8) + const ethSym = symbolCodeRaw("ETH"); + const rawEthIn = toBigInt(assertion.args.ethIn || "0"); + const ethIn = rawEthIn / 10000000000n; // Wei -> 8-decimal ETH + if (ethIn <= 0n) return null; + const buyer = nameToUint64("testoperator"); // Default for testnet + + const buf = Buffer.alloc(24); + writeBE(buf, 0, ethSym, 8); + writeBE(buf, 8, ethIn, 8); + writeBE(buf, 16, buyer, 8); + + return { assertionType: DEPOT_ASSERTION.WIRE_PURCHASE, payload: buf }; + } + + case ASSERTION_TYPES.LIQ_PRETOKEN_PURCHASE: + case ASSERTION_TYPES.YIELD_PRETOKEN_PURCHASE: { + // Map to yield_reward (0xEE01) + const ethSym = symbolCodeRaw("ETH"); + const rawPrincipal = toBigInt(assertion.args.principal || "0"); + const principal = rawPrincipal / 10000000000n; // Wei -> 8-decimal ETH + if (principal <= 0n) return null; + const beneficiary = nameToUint64("testoperator"); + + const buf = Buffer.alloc(24); + writeBE(buf, 0, ethSym, 8); + writeBE(buf, 8, principal, 8); + writeBE(buf, 16, beneficiary, 8); + + return { assertionType: DEPOT_ASSERTION.YIELD_REWARD, payload: buf }; + } + + case ASSERTION_TYPES.BONDED_ACTOR: + case ASSERTION_TYPES.UNBONDED_ACTOR: { + // Map to operator_registration (0xEE03) + // Payload: wire_account(8) + op_type(1) + action(1) + secp_key(33) + ed_key(32) = 75 + const isBond = assertion.assertionType === ASSERTION_TYPES.BONDED_ACTOR; + const wireAccount = nameToUint64("testoperator"); + + const buf = Buffer.alloc(75); + writeBE(buf, 0, wireAccount, 8); + buf[8] = 1; // operator_type_batch + buf[9] = isBond ? 0 : 1; // 0=register, 1=deregister + // Dummy keys for testnet + buf[10] = 0x02; // compressed secp prefix + buf[42] = 0xff; + buf[43] = 0x01; // ed25519 first byte + + return { + assertionType: DEPOT_ASSERTION.OPERATOR_REGISTRATION, + payload: buf, + }; + } + + default: + // Unknown Ethereum assertion type — pass through as balance_sheet stub + // so it doesn't block the pipeline. Unknown types in the depot are + // silently skipped. + return null; + } +} + +/** + * Encode depot messages into the uploadmsgs wire format: + * [assertion_type(2 BE) | payload_len(4 BE) | payload(N)] repeated + */ +function encodeMessages( + msgs: { assertionType: number; payload: Buffer }[] +): Buffer { + const parts: Buffer[] = []; + for (const msg of msgs) { + const header = Buffer.alloc(6); + header.writeUInt16BE(msg.assertionType, 0); + header.writeUInt32BE(msg.payload.length, 2); + parts.push(header, msg.payload); + } + return Buffer.concat(parts); +} + +// ── Relay Pipeline ─────────────────────────────────────────────────────────── + +interface RelayResult { + epoch: number; + messagesProcessed: number; + submitchainTxs: string[]; + uploadmsgsTx: string; + crankTx: string; + reservesBefore: any; + reservesAfter: any; +} + +async function relayEpoch( + depotMessages: { assertionType: number; payload: Buffer }[] +): Promise { + // Always re-read state to get the current epoch + const state = getDepotState(); + const epoch = state.current_epoch; + + console.log(`\n=== Relay Epoch ${epoch} (${depotMessages.length} messages) ===`); + + // Capture reserves before + const reservesBefore = clioJson("get table sysio.depot 2 reserves"); + + // Generate epoch hash from messages + const messagesBuf = encodeMessages(depotMessages); + const merkleHash = crypto + .createHash("sha256") + .update(messagesBuf) + .digest("hex"); + const epochHashInput = Buffer.from(merkleHash + "0".repeat(64), "hex"); + const epochHash = crypto + .createHash("sha256") + .update(epochHashInput) + .digest("hex"); + + // Step 1: submitchain from CONSENSUS_QUORUM operators + const dummySig = + "0".repeat(128) + "ff"; // 65-byte dummy signature hex + const prevHash = "0".repeat(64); + + const submitTxs: string[] = []; + let successCount = 0; + for (let i = 0; i < OPERATORS.length && successCount < CONSENSUS_QUORUM; i++) { + const op = OPERATORS[i]; + try { + const result = clio( + `push action sysio.depot submitchain '{"operator_account":"${op}", "epoch_number":${epoch}, "epoch_hash":"${epochHash}", "prev_epoch_hash":"${prevHash}", "merkle_root":"${merkleHash}", "signature":"${dummySig}"}' -p ${op}@active` + ); + const txMatch = result.match(/executed transaction: ([a-f0-9]+)/); + submitTxs.push(txMatch ? txMatch[1].substring(0, 12) : "ok"); + successCount++; + console.log(` submitchain from ${op}: OK`); + } catch (e: any) { + const errMsg = e.stderr || e.message; + if (errMsg.includes("already submitted")) { + // Already submitted — skip + submitTxs.push("ALREADY"); + successCount++; // count as success — vote already recorded + console.log(` submitchain from ${op}: already submitted`); + } else if (errMsg.includes("not elected")) { + // Not elected for this epoch — try next operator + continue; + } else { + console.error(` submitchain from ${op}: FAILED`); + submitTxs.push("FAILED"); + } + } + } + + if (successCount < CONSENSUS_QUORUM) { + console.error(` Only ${successCount}/${CONSENSUS_QUORUM} submissions — cannot proceed`); + } + + // Step 2: uploadmsgs + const messagesHex = messagesBuf.toString("hex"); + console.log(` uploadmsgs (${messagesHex.length / 2} bytes)...`); + let uploadTx = ""; + try { + const result = clio( + `push action sysio.depot uploadmsgs '{"operator_account":"${OPERATORS[0]}", "epoch_number":${epoch}, "messages":"${messagesHex}", "merkle_proofs":""}' -p ${OPERATORS[0]}@active` + ); + const txMatch = result.match(/executed transaction: ([a-f0-9]+)/); + uploadTx = txMatch ? txMatch[1] : "ok"; + } catch (e: any) { + console.error(` uploadmsgs failed: ${e.message}`); + uploadTx = "FAILED"; + } + + // Step 3: crank + console.log(` crank from ${OPERATORS[0]}...`); + let crankTx = ""; + try { + const result = clio( + `push action sysio.depot crank '{"operator_account":"${OPERATORS[0]}"}' -p ${OPERATORS[0]}@active` + ); + const txMatch = result.match(/executed transaction: ([a-f0-9]+)/); + crankTx = txMatch ? txMatch[1] : "ok"; + } catch (e: any) { + console.error(` crank failed: ${e.message}`); + crankTx = "FAILED"; + } + + // Capture reserves after + const reservesAfter = clioJson("get table sysio.depot 2 reserves"); + + return { + epoch, + messagesProcessed: depotMessages.length, + submitchainTxs: submitTxs, + uploadmsgsTx: uploadTx, + crankTx: crankTx, + reservesBefore: reservesBefore?.rows, + reservesAfter: reservesAfter?.rows, + }; +} + +// ── Main ───────────────────────────────────────────────────────────────────── + +async function main() { + const eventsFile = + process.argv.find((a) => a.startsWith("--events="))?.split("=")[1] || + path.join(__dirname, "..", "opp_events_current.json"); + + console.log("Wire OPP Operator Relay"); + console.log("======================="); + console.log(`Node: ${WIRE_NODE}`); + console.log(`Events: ${eventsFile}`); + console.log(`Epoch size: ${EPOCH_SIZE}`); + + // Check depot state + const state = getDepotState(); + if (!state) { + console.error("ERROR: Depot not initialized. Run init first."); + process.exit(1); + } + console.log(`Current epoch: ${state.current_epoch}`); + console.log(`State: ${state.state === 0 ? "ACTIVE" : state.state === 1 ? "CHALLENGE" : "PAUSED"}`); + + // Load events + if (!fs.existsSync(eventsFile)) { + console.log("No events file found. Running in balance_sheet relay mode."); + // Send a single balance_sheet assertion with current ETH state + const ethSym = symbolCodeRaw("ETH"); + const buf = Buffer.alloc(25); + writeBE(buf, 0, ethSym, 8); + writeBE(buf, 8, 12000000000000n, 8); // 120000.00000000 ETH + writeBE(buf, 16, 6000000000000n, 8); // 600000000.0000 WIRE + buf[24] = 8; // precision + + const result = await relayEpoch([ + { assertionType: DEPOT_ASSERTION.BALANCE_SHEET, payload: buf }, + ]); + console.log("\nResult:", JSON.stringify(result, null, 2)); + return; + } + + // Parse events + const raw = fs.readFileSync(eventsFile, "utf-8"); + const messages: OPPMessage[] = JSON.parse(raw); + console.log(`Loaded ${messages.length} OPP messages from Ethereum`); + + // Map Ethereum assertions to depot messages + const depotMessages: { assertionType: number; payload: Buffer }[] = []; + let skipped = 0; + + for (const msg of messages) { + if (!msg.payload?.assertions) { + skipped++; + continue; + } + for (const assertion of msg.payload.assertions) { + const mapped = mapAssertionToDepot(assertion); + if (mapped) { + depotMessages.push(mapped); + } else { + skipped++; + } + } + } + + console.log( + `Mapped ${depotMessages.length} assertions to depot format (${skipped} skipped)` + ); + + // Relay in epoch-sized batches + const maxEpochs = parseInt(process.env.MAX_EPOCHS || "5", 10); + const results: RelayResult[] = []; + for (let i = 0; i < depotMessages.length && results.length < maxEpochs; i += EPOCH_SIZE) { + const batch = depotMessages.slice(i, i + EPOCH_SIZE); + try { + const result = await relayEpoch(batch); + results.push(result); + console.log( + ` => Epoch ${result.epoch}: ${result.messagesProcessed} msgs, crank: ${result.crankTx === "FAILED" ? "FAILED" : result.crankTx.substring(0, 12)}` + ); + if (result.crankTx === "FAILED") { + console.error(" Crank failed — stopping relay."); + break; + } + } catch (e: any) { + console.error(` Epoch relay error: ${e.message}`); + break; + } + } + + // Save results + const outputFile = path.join( + __dirname, + "..", + `relay_results_${new Date().toISOString().replace(/[:.]/g, "-")}.json` + ); + fs.writeFileSync(outputFile, JSON.stringify(results, null, 2)); + console.log(`\nResults saved to ${outputFile}`); + console.log(`Total: ${results.length} epochs relayed, ${depotMessages.length} messages`); +} + +main().catch((e) => { + console.error("Fatal:", e); + process.exit(1); +}); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..dae6e1f --- /dev/null +++ b/src/types.ts @@ -0,0 +1,90 @@ +// OPP Event Types + +export interface BigIntSerialized { + __bigint__: string; +} + +export interface OPPHeader { + messageID: string; + previousMessageID: string; + payloadHash: string; + timestamp: string | BigIntSerialized; + messageNumber: number | BigIntSerialized; +} + +export interface OPPAssertion { + assertionType: number; + assertionName: string; + args: Record; +} + +export interface OPPPayload { + protocolVersion: number; + encodingFlags: number; + assertions: OPPAssertion[]; +} + +export interface OPPMessage { + header: OPPHeader; + payload: OPPPayload; +} + +// Balance Tracking State + +export interface StakerState { + totalShares: bigint; // Current shares balance + totalPrincipalIn: bigint; // Sum of stake principals + totalAmountOut: bigint; // Sum of unstake amounts + yieldClaimed: bigint; // Yield distributed as pretokens (from 3006) +} + +export interface PurchaserState { + pretokens: bigint; // Direct pretoken purchases (3005) + liqShares: bigint; // Yield-bearing shares (3004) + liqPrincipalIn: bigint; // Principal for liq positions (3004) + yieldClaimed: bigint; // Yield converted to pretokens (3006) +} + +// Output Types + +export interface StakerOutput { + principal: string; // Net principal (in - out) + shares: string; // Raw shares for verification + pretokenYield: string; // Yield distributed as pretokens (from 3006) +} + +export interface PurchaserOutput { + pretokens: string; // Direct pretoken purchases (3005) + shares: string; // Liq position shares (3004) + principal: string; // ETH contributed to liq (3004) + yield: string; // Yield allocated as pretokens (3006) + totalPretokens: string; // pretokens + yield +} + +export interface BalanceMetadata { + lastMessageId: string; + lastTimestamp: string; + latestIndex: string; + totalMessages: number; + generatedAt: string; + yieldDust: string; + totalLiqEthStaked: string; + totalLiqEthPurchased: string; +} + +export interface BalanceOutput { + stakers: Record; + purchasers: Record; + metadata: BalanceMetadata; +} + +// Assertion type constants +export const ASSERTION_TYPES = { + BONDED_ACTOR: 2001, + UNBONDED_ACTOR: 2002, + STAKE: 3001, + UNSTAKE: 3002, + LIQ_PRETOKEN_PURCHASE: 3004, + PRETOKEN_PURCHASE: 3005, + YIELD_PRETOKEN_PURCHASE: 3006, +} as const; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..50572da --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": ["ES2020"], + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +}