UNPKG

@shyft.to/solana-transaction-parser

Version:

Tool for parsing arbitrary Solana transactions with IDL/custom parsers

210 lines (125 loc) 5.26 kB
[@debridge-finance/solana-transaction-parser](../README.md) / SolanaParser # Class: SolanaParser Class for parsing arbitrary solana transactions in various formats - by txHash - from raw transaction data (base64 encoded or buffer) - @solana/web3.js getTransaction().message object - @solana/web3.js getParsedTransaction().message or Transaction.compileMessage() object - @solana/web3.js TransactionInstruction object ## Table of contents ### Constructors - [constructor](SolanaParser.md#constructor) ### Methods - [addParser](SolanaParser.md#addparser) - [addParserFromIdl](SolanaParser.md#addparserfromidl) - [parseInstruction](SolanaParser.md#parseinstruction) - [parseTransaction](SolanaParser.md#parsetransaction) - [parseTransactionData](SolanaParser.md#parsetransactiondata) - [parseTransactionDump](SolanaParser.md#parsetransactiondump) - [parseTransactionParsedData](SolanaParser.md#parsetransactionparseddata) - [removeParser](SolanaParser.md#removeparser) ## Constructors ### constructor • **new SolanaParser**(`programInfos`, `parsers?`) Initializes parser object `SystemProgram`, `TokenProgram` and `AssociatedTokenProgram` are supported by default but may be overriden by providing custom idl/custom parser #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `programInfos` | [`ProgramInfoType`](../interfaces/ProgramInfoType.md)[] | list of objects which contains programId and corresponding idl | | `parsers?` | [`InstructionParserInfo`](../README.md#instructionparserinfo)[] | list of pairs (programId, custom parser) | ## Methods ### addParser ▸ **addParser**(`programId`, `parser`): `void` Adds (or updates) parser for provided programId #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `programId` | `PublicKey` | program id to add parser for | | `parser` | [`ParserFunction`](../README.md#parserfunction)<`Idl`, `string`\> | parser to parse programId instructions | #### Returns `void` ___ ### addParserFromIdl ▸ **addParserFromIdl**(`programId`, `idl`): `void` Adds (or updates) parser for provided programId #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `programId` | `string` \| `PublicKey` | program id to add parser for | | `idl` | `Idl` | IDL that describes anchor program | #### Returns `void` ___ ### parseInstruction ▸ **parseInstruction**<`I`, `IxName`\>(`instruction`): [`ParsedInstruction`](../README.md#parsedinstruction)<`I`, `IxName`\> Parses instruction #### Type parameters | Name | Type | | :------ | :------ | | `I` | extends `Idl` | | `IxName` | extends `string` | #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `instruction` | `TransactionInstruction` | transaction instruction to parse | #### Returns [`ParsedInstruction`](../README.md#parsedinstruction)<`I`, `IxName`\> parsed transaction instruction or UnknownInstruction ___ ### parseTransaction ▸ **parseTransaction**(`connection`, `txId`, `flatten?`): `Promise`<``null`` \| [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[]\> Fetches tx from blockchain and parses it #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `connection` | `Connection` | `undefined` | web3 Connection | | `txId` | `string` | `undefined` | transaction id | | `flatten` | `boolean` | `false` | true if CPI calls need to be parsed too | #### Returns `Promise`<``null`` \| [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[]\> list of parsed instructions ___ ### parseTransactionData ▸ **parseTransactionData**(`txMessage`): [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] Parses transaction data #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `txMessage` | `Message` | message to parse | #### Returns [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] list of parsed instructions ___ ### parseTransactionDump ▸ **parseTransactionDump**(`txDump`): [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] Parses transaction dump #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `txDump` | `string` \| `Buffer` | base64-encoded string or raw Buffer which contains tx dump | #### Returns [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] list of parsed instructions ___ ### parseTransactionParsedData ▸ **parseTransactionParsedData**(`txParsedMessage`): [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] Parses transaction data retrieved from Connection.getParsedTransaction #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `txParsedMessage` | `ParsedMessage` | message to parse | #### Returns [`ParsedInstruction`](../README.md#parsedinstruction)<`Idl`, `string`\>[] list of parsed instructions ___ ### removeParser ▸ **removeParser**(`programId`): `void` Removes parser for provided program id #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `programId` | `PublicKey` | program id to remove parser for | #### Returns `void`