From cfe8913ba22982668915295d7cf61291e1fd33a6 Mon Sep 17 00:00:00 2001 From: luciusverus-cyber Date: Thu, 22 Oct 2026 11:36:42 +0200 Subject: [PATCH] test: cover indexer decoders with real testnet fixtures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The decoders decide what reaches the database but only scValToDisplay had tests. Add captured testnet envelopes and metas covering a successful invocation, a failed invocation, both contract-creation host functions and a multi-operation transaction, so every exported decoder is exercised against real ledger data. Closes #11 🤖 Generated with Codebuff Co-Authored-By: Codebuff --- indexer/src/decode.test.ts | 269 ++++++++++++++++++- indexer/src/fixtures/README.md | 19 ++ indexer/src/fixtures/create-contract-v2.json | 8 + indexer/src/fixtures/create-contract.json | 8 + indexer/src/fixtures/failed-invoke.json | 8 + indexer/src/fixtures/multi-operation.json | 8 + indexer/src/fixtures/successful-invoke.json | 8 + 7 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 indexer/src/fixtures/README.md create mode 100644 indexer/src/fixtures/create-contract-v2.json create mode 100644 indexer/src/fixtures/create-contract.json create mode 100644 indexer/src/fixtures/failed-invoke.json create mode 100644 indexer/src/fixtures/multi-operation.json create mode 100644 indexer/src/fixtures/successful-invoke.json diff --git a/indexer/src/decode.test.ts b/indexer/src/decode.test.ts index 3a7b2c3..8892c0a 100644 --- a/indexer/src/decode.test.ts +++ b/indexer/src/decode.test.ts @@ -1,6 +1,39 @@ import { describe, expect, it } from "vitest"; import { StrKey, xdr } from "@stellar/stellar-sdk"; -import { extractEvents, extractInvocationReturnValue, scValToDisplay } from "./decode.js"; +import { + decodeContractCreation, + decodeInvocation, + extractEvents, + extractInvocationReturnValue, + extractStorageChanges, + scValToDisplay, +} from "./decode.js"; +import createContractV2Fixture from "./fixtures/create-contract-v2.json" with { type: "json" }; +import createContractFixture from "./fixtures/create-contract.json" with { type: "json" }; +import failedInvokeFixture from "./fixtures/failed-invoke.json" with { type: "json" }; +import multiOperationFixture from "./fixtures/multi-operation.json" with { type: "json" }; +import successfulInvokeFixture from "./fixtures/successful-invoke.json" with { type: "json" }; + +interface Fixture { + description: string; + hash: string; + ledger: number; + status: "SUCCESS" | "FAILED"; + envelopeXdr: string; + resultMetaXdr: string; +} + +/** + * Testnet envelopes and metas captured from Soroban RPC (`getTransaction`) on + * 2026-10-22; see src/fixtures/README.md for provenance. + */ +function loadFixture(fixture: Fixture) { + return { + ...fixture, + envelope: xdr.TransactionEnvelope.fromXDR(fixture.envelopeXdr, "base64"), + meta: xdr.TransactionMeta.fromXDR(fixture.resultMetaXdr, "base64"), + }; +} describe("scValToDisplay", () => { it("decodes a symbol to a plain string", () => { @@ -145,3 +178,237 @@ describe("extractEvents", () => { expect(extractEvents(meta, txHash)).toEqual(expected); }); }); + +// --------------------------------------------------------------------------- +// Fixture-based tests: real testnet envelopes and metas. +// --------------------------------------------------------------------------- + +const successfulInvoke = loadFixture(successfulInvokeFixture as Fixture); +const failedInvoke = loadFixture(failedInvokeFixture as Fixture); +const createContract = loadFixture(createContractFixture as Fixture); +const createContractV2 = loadFixture(createContractV2Fixture as Fixture); +const multiOperation = loadFixture(multiOperationFixture as Fixture); + +describe("scValToDisplay (testnet fixtures)", () => { + it("renders the Soroban return value of a real invocation", () => { + const returnValue = successfulInvoke.meta.v4().sorobanMeta()!.returnValue()!; + expect(scValToDisplay(returnValue)).toBe('["1493531","1472284"]'); + }); +}); + +describe("decodeInvocation (testnet fixtures)", () => { + it("decodes the contract, function and args of a successful invoke", () => { + expect(decodeInvocation(successfulInvoke.envelope)).toEqual({ + contractId: "CBXZBQ6NW3TGPGLTR4JCG2VPVWFLCCHKDW75NJIXYXV7CJLNUO64VTFC", + functionName: "deposit_liquidity_and_collateral", + args: [ + "1", + "GB6YNCUDIPIFCXHXUTE3F54GFYGFMHUK6ZR5LLXD36TZTYC2DK2WYQ3U", + "2", + "1493531", + '{"id":0,"seed1":null,"seed2":null,"tag":0}', + ], + }); + }); + + it("still decodes the invocation of a failed transaction", () => { + expect(failedInvoke.status).toBe("FAILED"); + const decoded = decodeInvocation(failedInvoke.envelope); + expect(decoded?.contractId).toBe("CD4KFB23CQLJ47RIPESVBTQ444R75M6QVEZULWXHHFYYZT7SS2VGXOPW"); + expect(decoded?.functionName).toBe("write_prices"); + expect(decoded?.args).toEqual([ + "GBV54BUAQBFAS6WIRKGURXXCMXWALH4OYBCYE75VBHROJLEKJ4LOZTFB", + '["BTC"]', + expect.stringContaining("425443"), + ]); + }); + + it("returns null for a multi-operation transaction with no host-function op", () => { + expect(decodeInvocation(multiOperation.envelope)).toBeNull(); + }); + + it("returns null for contract-creation host functions", () => { + expect(decodeInvocation(createContract.envelope)).toBeNull(); + expect(decodeInvocation(createContractV2.envelope)).toBeNull(); + }); +}); + +describe("extractInvocationReturnValue (testnet fixtures)", () => { + it("decodes the return value of a successful invocation", () => { + expect(extractInvocationReturnValue(successfulInvoke.meta)).toBe('["1493531","1472284"]'); + }); + + it("returns null when the transaction failed", () => { + expect(extractInvocationReturnValue(failedInvoke.meta)).toBeNull(); + }); + + it("returns the new contract address for a creation", () => { + expect(extractInvocationReturnValue(createContract.meta)).toBe( + "CCJKICDXTNUHZBFYYLMGSDAW6FD23DS5UBWYMBC2ECYFSX3EGSSW6G5B" + ); + }); +}); + +describe("decodeContractCreation (testnet fixtures)", () => { + it("decodes a createContract host function", () => { + expect(decodeContractCreation(createContract.envelope, createContract.meta, "GCREATOR")).toEqual({ + contractId: "CCJKICDXTNUHZBFYYLMGSDAW6FD23DS5UBWYMBC2ECYFSX3EGSSW6G5B", + creator: "GCREATOR", + }); + }); + + it("decodes a createContractV2 host function", () => { + expect(decodeContractCreation(createContractV2.envelope, createContractV2.meta, "GCREATOR")).toEqual({ + contractId: "CBUZIAY2CBUCCRRRJBUANPTOQEF42YETHVG44N34NZ7XIUQ6L7DBV56D", + creator: "GCREATOR", + }); + }); + + it("returns null for an ordinary invocation and for a failed transaction", () => { + expect(decodeContractCreation(successfulInvoke.envelope, successfulInvoke.meta, "GCREATOR")).toBeNull(); + expect(decodeContractCreation(failedInvoke.envelope, failedInvoke.meta, "GCREATOR")).toBeNull(); + }); +}); + +describe("extractStorageChanges (testnet fixtures)", () => { + it("extracts every entry change of a successful invocation", () => { + const changes = extractStorageChanges(successfulInvoke.meta); + expect(changes).toHaveLength(16); + expect(changes.map((change) => change.changeType)).toEqual([ + "state", + "state", + "state", + "state", + "updated", + "updated", + "updated", + "updated", + "state", + "updated", + "state", + "updated", + "state", + "updated", + "state", + "updated", + ]); + }); + + it("expands instance entries into one row per storage key plus the wasm hash", () => { + const instanceChanges = extractStorageChanges(successfulInvoke.meta).filter( + (change) => change.durability === "instance" + ); + expect(instanceChanges).toHaveLength(8); + expect(instanceChanges.every((change) => change.contractId === "CDH4BTGP7GRDFO6Y24AP4RP34NMC3V2RXTTUA4ABCFRMFEYWR6AG6GK6")).toBe( + true + ); + expect(instanceChanges[0]).toEqual({ + contractId: "CDH4BTGP7GRDFO6Y24AP4RP34NMC3V2RXTTUA4ABCFRMFEYWR6AG6GK6", + durability: "instance", + keyDisplay: "__wasm_hash__", + valueDisplay: "a5f6b06ca8fb10a7f3d12ba5fae3361f04a242054757080cf14c375b88e1c898", + changeType: "state", + }); + }); + + it("decodes persistent contract data keys and values", () => { + const changes = extractStorageChanges(successfulInvoke.meta); + expect(changes[9]).toMatchObject({ + contractId: "CBXZBQ6NW3TGPGLTR4JCG2VPVWFLCCHKDW75NJIXYXV7CJLNUO64VTFC", + durability: "persistent", + keyDisplay: '["Reserve",1,2]', + valueDisplay: expect.stringContaining('"available":"9462586167919"'), + changeType: "updated", + }); + expect(changes[6]).toMatchObject({ + contractId: "CDH4BTGP7GRDFO6Y24AP4RP34NMC3V2RXTTUA4ABCFRMFEYWR6AG6GK6", + durability: "instance", + keyDisplay: '["Metadata"]', + changeType: "updated", + }); + }); + + it("collapses a created contract's instance storage into its created rows", () => { + expect(extractStorageChanges(createContract.meta)).toEqual([ + { + contractId: "CCJKICDXTNUHZBFYYLMGSDAW6FD23DS5UBWYMBC2ECYFSX3EGSSW6G5B", + durability: "instance", + keyDisplay: "METADATA", + valueDisplay: + '{"decimal":7,"name":"KEUR:GDA44W6ZQ7TI65ZZ5E3TOHBEQXSKIBTNFFY5N4XVLQBA3AUQW2B3GLUU","symbol":"KEUR"}', + changeType: "created", + }, + { + contractId: "CCJKICDXTNUHZBFYYLMGSDAW6FD23DS5UBWYMBC2ECYFSX3EGSSW6G5B", + durability: "instance", + keyDisplay: '["Admin"]', + valueDisplay: "GDA44W6ZQ7TI65ZZ5E3TOHBEQXSKIBTNFFY5N4XVLQBA3AUQW2B3GLUU", + changeType: "created", + }, + { + contractId: "CCJKICDXTNUHZBFYYLMGSDAW6FD23DS5UBWYMBC2ECYFSX3EGSSW6G5B", + durability: "instance", + keyDisplay: '["AssetInfo"]', + valueDisplay: + '["AlphaNum4",{"asset_code":"KEUR","issuer":"c1ce5bd987e68f7739e937371c2485e4a4066d2971d6f2f55c020d8290b683b3"}]', + changeType: "created", + }, + ]); + }); + + it("records only the wasm hash when a V2 creation has no instance storage", () => { + expect(extractStorageChanges(createContractV2.meta)).toEqual([ + { + contractId: "CBUZIAY2CBUCCRRRJBUANPTOQEF42YETHVG44N34NZ7XIUQ6L7DBV56D", + durability: "instance", + keyDisplay: "__wasm_hash__", + valueDisplay: "c1a650506f7c20c8f4d16aae73f894f302cd011d7ef33adef572f20b34f7653e", + changeType: "created", + }, + ]); + }); + + it("yields no contract-data changes for a failed transaction", () => { + expect(extractStorageChanges(failedInvoke.meta)).toEqual([]); + }); + + it("ignores non-contract-data ledger changes across multiple operations", () => { + // The three operations only touch account/sponsorship ledger entries. + expect(extractStorageChanges(multiOperation.meta)).toEqual([]); + }); +}); + +describe("extractEvents (testnet fixtures)", () => { + it("extracts contract events with topics and values from a successful invocation", () => { + const events = extractEvents(successfulInvoke.meta, successfulInvoke.hash); + expect(events).toHaveLength(4); + expect(events.map((event) => event.eventId)).toEqual([ + `${successfulInvoke.hash}-0-0`, + `${successfulInvoke.hash}-0-1`, + `${successfulInvoke.hash}-0-2`, + `${successfulInvoke.hash}-0-3`, + ]); + expect(events[0]).toEqual({ + eventId: `${successfulInvoke.hash}-0-0`, + contractId: "CBVJ6GYJJ55ALTHN32OJEFGUZWWTMDFGIBCM42SPYQ4GWLKX2XARAP2N", + type: "contract", + topic: [ + "transfer", + "GB6YNCUDIPIFCXHXUTE3F54GFYGFMHUK6ZR5LLXD36TZTYC2DK2WYQ3U", + "CBXZBQ6NW3TGPGLTR4JCG2VPVWFLCCHKDW75NJIXYXV7CJLNUO64VTFC", + "SOL:GAGVZMODPYFTULIVSY3RGFADIC5LF4LLSN37N4MFWGNZ57TYBXL2LQQX", + ], + value: "1493531", + }); + expect(events[1]?.topic[0]).toBe("mint"); + expect(events[2]?.value).toBe('["1493531","1472284"]'); + }); + + it("extracts no events from a failed transaction", () => { + expect(extractEvents(failedInvoke.meta, failedInvoke.hash)).toEqual([]); + }); + + it("extracts no events from a multi-operation transaction without Soroban events", () => { + expect(extractEvents(multiOperation.meta, multiOperation.hash)).toEqual([]); + }); +}); diff --git a/indexer/src/fixtures/README.md b/indexer/src/fixtures/README.md new file mode 100644 index 0000000..ce52a2a --- /dev/null +++ b/indexer/src/fixtures/README.md @@ -0,0 +1,19 @@ +# Testnet transaction fixtures + +Envelopes and transaction metas captured from Stellar testnet on 2026-10-22 via +Soroban RPC `getTransaction` (`https://soroban-testnet.stellar.org`). Each file +holds the base64 `envelopeXdr` and `resultMetaXdr` exactly as the RPC returned +them, plus the transaction hash, ledger and final status for reference: + +`https://horizon-testnet.stellar.org/transactions/` + +| File | What it covers | +| ------------------------ | ------------------------------------------------------------------------------ | +| `successful-invoke.json` | Successful `invokeHostFunction` (SAC deposit into a lending pool): return value, 16 storage changes including expanded instance entries, and 4 contract events. | +| `failed-invoke.json` | Failed `invokeHostFunction` (oracle `write_prices` rejected): invocation is still decodable, but there is no return value, no storage change and no event. | +| `create-contract.json` | Successful `createContract` host function whose instance has storage entries. | +| `create-contract-v2.json`| Successful `createContractV2` host function whose instance only has a wasm hash. | +| `multi-operation.json` | Successful three-operation (sponsorship) transaction: exercises decoders over multiple operations, none of which is a host function. | + +These files are decoded by `src/decode.test.ts`; refresh them only if the +decoders' expected output intentionally changes. diff --git a/indexer/src/fixtures/create-contract-v2.json b/indexer/src/fixtures/create-contract-v2.json new file mode 100644 index 0000000..b10d367 --- /dev/null +++ b/indexer/src/fixtures/create-contract-v2.json @@ -0,0 +1,8 @@ +{ + "description": "Successful createContractV2 host function", + "hash": "6df181248ff9cf3f830a9f3e7e71d0032b428b014fe90fa36fe5396152220126", + "ledger": 5327582, + "status": "SUCCESS", + "envelopeXdr": "AAAAAgAAAACZ3D1SSP9k5nKIH73DFtzCNti/aFWvZ9p47K72I9YAwgABwEsAUUrdAAAAAQAAAAEAAAAAAAAAAAAAAABq2dkhAAAAAAAAAAEAAAAAAAAAGAAAAAMAAAAAAAAAAAAAAACZ3D1SSP9k5nKIH73DFtzCNti/aFWvZ9p47K72I9YAwhn/Z/umEKLlZzr2hCwOFyoGub/k/r54t9FRT/ldBHEZAAAAAMGmUFBvfCDI9NFqrnP4lPMCzQEdfvM63vVy8gs092U+AAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAJncPVJI/2TmcogfvcMW3MI22L9oVa9n2njsrvYj1gDCGf9n+6YQouVnOvaELA4XKga5v+T+vni30VFP+V0EcRkAAAAAwaZQUG98IMj00Wquc/iU8wLNAR1+8zre9XLyCzT3ZT4AAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAfBplBQb3wgyPTRaq5z+JTzAs0BHX7zOt71cvILNPdlPgAAAAEAAAAGAAAAAWmUAxoQaCFGMUhoBr5ugQvNYJM9Tc43fG5/dFIeX8YaAAAAFAAAAAEABQWdAAAAAAAAAGgAAAAAAAG/5wAAAAEj1gDCAAAAQPKcuMWqoDZPAnN1WIpnFvNp/Quub5rIABW3SlqXSnSsEvtxT948A4D5c27acFn+egPtEwE1aimG9ZNFNz6X8gc=", + "resultMetaXdr": "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" +} \ No newline at end of file diff --git a/indexer/src/fixtures/create-contract.json b/indexer/src/fixtures/create-contract.json new file mode 100644 index 0000000..d6dc6c2 --- /dev/null +++ b/indexer/src/fixtures/create-contract.json @@ -0,0 +1,8 @@ +{ + "description": "Successful createContract host function", + "hash": "0238e23c054a370cb6d959b3d4f4e3d21c141475eab9222f94280e6fb493d56f", + "ledger": 5327584, + "status": "SUCCESS", + "envelopeXdr": "AAAAAgAAAADBzlvZh+aPdznpNzccJIXkpAZtKXHW8vVcAg2CkLaDswAHe6kAUUrHAAAABAAAAAEAAAAAAAAAAAAAAABq2dh3AAAAAAAAAAEAAAAAAAAAGAAAAAEAAAABAAAAAUtFVVIAAAAAwc5b2Yfmj3c56Tc3HCSF5KQGbSlx1vL1XAINgpC2g7MAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAGAAAAAZKkCHebaHyEuMLYaQwW8Uetjl2gbYYEWiCwWV9kNKVvAAAAFAAAAAEAAqieAAAAAAAAAdwAAAAAAAd7RQAAAAGQtoOzAAAAQEdZlPmQvEmWVAGhqFj/HukMuNOcANkSNujqjeGPTXnkr2s0OKW98n6WVSv5yGLF1rpgL3Ib8kiHULsISruIFQw=", + "resultMetaXdr": "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" +} \ No newline at end of file diff --git a/indexer/src/fixtures/failed-invoke.json b/indexer/src/fixtures/failed-invoke.json new file mode 100644 index 0000000..2969469 --- /dev/null +++ b/indexer/src/fixtures/failed-invoke.json @@ -0,0 +1,8 @@ +{ + "description": "Failed Soroban contract invocation (price-oracle write rejected)", + "hash": "8f527bd2ce8718396693a37d4eca9954464f7fe1e542e3588cbebac3936adbe1", + "ledger": 5327511, + "status": "FAILED", + "envelopeXdr": "AAAAAgAAAADlZzTxyoiwBA0iKIY1yoJR4PUrFI9tOwzP+bKJ+zDG4ACYv6IAAAOEAAO/DQAAAAAAAAAAAAAAAQAAAAEAAAAAa94GgIBKCXrIio1I3uJl7AWfjsBFgn+1CeLkrIpPFuwAAAAYAAAAAAAAAAH4oodbFBaefih5JVDOHOcj/rPQqTNF2uc5cYzP8paqawAAAAx3cml0ZV9wcmljZXMAAAADAAAAEgAAAAAAAAAAa94GgIBKCXrIio1I3uJl7AWfjsBFgn+1CeLkrIpPFuwAAAAQAAAAAQAAAAEAAAAOAAAAA0JUQwAAAAANAAABT0JUQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbecplsIBoWLuIoAAAAAgAAABGVF+ZyxIUP2d0cdXOvt2AW3LuHn/SmbqgperuWWUkbYZtmdl4K3mQT7ptaZ9G1W9yQRQ/jGGuXKsDY2rBfbFDhtCVEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB23pJdf+AaFi7iKAAAAAIAAAATgwUqXmnAtZUEW357300NrYK/ruEXqQOMyY1yFaKwHnXbY164gfPNTXUiOKOPPQp5QEbAZsJLmmMXNT25p7trAcAAIxNzkyNjYxMTM3NDg2IzAuMS4wI3N0ZWxsYXItY29ubmVjdG9yAAAlAAAC7VcBHgAAAAAAAAEAAAAAAAAAAAAAAAH4oodbFBaefih5JVDOHOcj/rPQqTNF2uc5cYzP8paqawAAAAx3cml0ZV9wcmljZXMAAAADAAAAEgAAAAAAAAAAa94GgIBKCXrIio1I3uJl7AWfjsBFgn+1CeLkrIpPFuwAAAAQAAAAAQAAAAEAAAAOAAAAA0JUQwAAAAANAAABT0JUQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbecplsIBoWLuIoAAAAAgAAABGVF+ZyxIUP2d0cdXOvt2AW3LuHn/SmbqgperuWWUkbYZtmdl4K3mQT7ptaZ9G1W9yQRQ/jGGuXKsDY2rBfbFDhtCVEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB23pJdf+AaFi7iKAAAAAIAAAATgwUqXmnAtZUEW357300NrYK/ruEXqQOMyY1yFaKwHnXbY164gfPNTXUiOKOPPQp5QEbAZsJLmmMXNT25p7trAcAAIxNzkyNjYxMTM3NDg2IzAuMS4wI3N0ZWxsYXItY29ubmVjdG9yAAAlAAAC7VcBHgAAAAAAAAAAAAABAAAAAAAAAAMAAAAGAAAAAfiih1sUFp5+KHklUM4c5yP+s9CpM0Xa5zlxjM/ylqprAAAADgAAAANCVEMAAAAAAQAAAAYAAAAB+KKHWxQWnn4oeSVQzhznI/6z0KkzRdrnOXGMz/KWqmsAAAAUAAAAAQAAAAdcsOiapkamvOAdEcmD26lA9+OOyhaSwJQEK4JURjn0/AAAAAAAWnn7AAAAAAAAAAAAAAAAAAApIgAAAAKKTxbsAAAAQJtz87bvz3ThUUL7wo2dTk97LBc0y/UBAOwb3hvWx6fOMjTAcSw3q70OgsuyJ34FG6vUhqsijt0+4FRifIkF8gT7MMbgAAAAQN9sCvroHU3cE3dlMV/VAPbWzbc+zNSD1QmrZK0kxI84ubeFAinoPB6Og3JFPDdn1XTCMWtdo6lVTIt5fmjzvwo=", + "resultMetaXdr": "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" +} \ No newline at end of file diff --git a/indexer/src/fixtures/multi-operation.json b/indexer/src/fixtures/multi-operation.json new file mode 100644 index 0000000..a1e67a3 --- /dev/null +++ b/indexer/src/fixtures/multi-operation.json @@ -0,0 +1,8 @@ +{ + "description": "Successful three-operation sponsorship transaction", + "hash": "b590987e98c79c11ce583a0a13c28948b8f98482c6afc3e4662ee4ed5aaa12f2", + "ledger": 5327576, + "status": "SUCCESS", + "envelopeXdr": "AAAAAgAAAADy3L9yQQ/4Q9CPhoHGelHegyl6SfyEtSvgFGzAWOuUGAAAC7gAUUrUAAAAAgAAAAEAAAAAAAAAAAAAAABq2df2AAAAAAAAAAMAAAABAAAAADH2DThlVDjlzfkKhuGr1DtdFHB1rqE56w/HSniEY4BXAAAAEgAAAAAAAAADAAAAAPLcv3JBD/hD0I+GgcZ6Ud6DKXpJ/IS1K+AUbMBY65QYAAAADFRyYW5zZmVyVGVzdAAAAAEAAAAAwfKfD12El+OBDwbJI6a1O8mNHi4yIP6JdMK6A01GUAwAAAAQAAAAAPLcv3JBD/hD0I+GgcZ6Ud6DKXpJ/IS1K+AUbMBY65QYAAAAAAAAABEAAAAAAAAAA4RjgFcAAABA5k6Jg3AHZQKr/xs4zqMiUSd+sKv7/g0Wgji9sCWw1T7qMn+83SUthlVPgCrgLw/w6IcMrgbUTGvIgiTWJrmPA01GUAwAAABAUJg3+OBooBnH0dfZ4lvqdk7mIAF7dASwktRvDPkFEHu+ynrAL0TF1VhZJIQC9C+I2c5Ej56sDXH+s16n3W3PAVjrlBgAAABAJE7Bqha9TiPN4BDDQhnwsXfa4oA4tiaanhixCugQJ5HF6nBE+EdolzvOX5XpI3thX9VqvNqKZNtgbAPPwuhHAA==", + "resultMetaXdr": "AAAABAAAAAAAAAACAAAAAwBRStgAAAAAAAAAAPLcv3JBD/hD0I+GgcZ6Ud6DKXpJ/IS1K+AUbMBY65QYAAAAF0h25agAUUrUAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAMAAAAAAFFK1gAAAABq2dfRAAAAAAAAAAEAUUrYAAAAAAAAAADy3L9yQQ/4Q9CPhoHGelHegyl6SfyEtSvgFGzAWOuUGAAAABdIduWoAFFK1AAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAADAAAAAABRStgAAAAAatnX2wAAAAAAAAADAAAAAAAAAAYAAAADAFFK2AAAAAAAAAAA8ty/ckEP+EPQj4aBxnpR3oMpekn8hLUr4BRswFjrlBgAAAAXSHblqABRStQAAAACAAAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAwAAAAAAUUrYAAAAAGrZ19sAAAAAAAAAAQBRStgAAAAAAAAAAPLcv3JBD/hD0I+GgcZ6Ud6DKXpJ/IS1K+AUbMBY65QYAAAAF0h25agAUUrUAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAFFK2AAAAABq2dfbAAAAAAAAAAMAUUrWAAAAAAAAAAAx9g04ZVQ45c35Cobhq9Q7XRRwda6hOesPx0p4hGOAVwAAABdIdugAAFFK0gAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAUUrYAAAAAAAAAAAx9g04ZVQ45c35Cobhq9Q7XRRwda6hOesPx0p4hGOAVwAAABdIdugAAFFK0gAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAUUrWAAAAAwAAAADy3L9yQQ/4Q9CPhoHGelHegyl6SfyEtSvgFGzAWOuUGAAAAAxUcmFuc2ZlclRlc3QAAAABQQAAAAAAAAAAAAABAAAAAQAAAAAx9g04ZVQ45c35Cobhq9Q7XRRwda6hOesPx0p4hGOAVwAAAAAAAAABAFFK2AAAAAMAAAAA8ty/ckEP+EPQj4aBxnpR3oMpekn8hLUr4BRswFjrlBgAAAAMVHJhbnNmZXJUZXN0AAAAAUEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAAAQAAAAAAAAACAAAADwAAAANmZWUAAAAAEgAAAAAAAAAA8ty/ckEP+EPQj4aBxnpR3oMpekn8hLUr4BRswFjrlBgAAAAKAAAAAAAAAAAAAAAAAAABLAAAAAA=" +} \ No newline at end of file diff --git a/indexer/src/fixtures/successful-invoke.json b/indexer/src/fixtures/successful-invoke.json new file mode 100644 index 0000000..8c7c597 --- /dev/null +++ b/indexer/src/fixtures/successful-invoke.json @@ -0,0 +1,8 @@ +{ + "description": "Successful Soroban contract invocation (SAC deposit into a lending pool)", + "hash": "ad14f273f5d4742327719664a4ed714dde18d799bbe0ecdc695a12f7b53549e3", + "ledger": 5327579, + "status": "SUCCESS", + "envelopeXdr": "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", + "resultMetaXdr": "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" +} \ No newline at end of file