0.1.0
This commit is contained in:
266
migration/khadhroony-bot2-reference/docs/SPL_MEMO_MATRIX.json
Normal file
266
migration/khadhroony-bot2-reference/docs/SPL_MEMO_MATRIX.json
Normal file
@@ -0,0 +1,266 @@
|
||||
{
|
||||
"file": "docs/SPL_MEMO_MATRIX.json",
|
||||
"version": 8,
|
||||
"matrixVersion": 4,
|
||||
"scope": "SPL Memo v1, v3 et v4",
|
||||
"interface": {
|
||||
"crate": "spl-memo-interface",
|
||||
"requestedVersion": "^2.1",
|
||||
"auditedPublishedVersion": "2.1.0",
|
||||
"lockfilePresentInInputArchive": false,
|
||||
"builder": "spl_memo_interface::instruction::build_memo",
|
||||
"builderAcceptsExplicitProgramId": true,
|
||||
"wire": "octets exacts du message, sans préfixe ni discriminator",
|
||||
"accountMetas": "ordre fourni, readonly, signer=true"
|
||||
},
|
||||
"generations": [
|
||||
{
|
||||
"generation": "v1",
|
||||
"programId": "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo",
|
||||
"surfaceCode": "spl_memo_v1",
|
||||
"status": "historique immuable",
|
||||
"instructionData": "octets UTF-8 bruts",
|
||||
"emptyPayload": "accepte",
|
||||
"accounts": "acceptes mais ignores par le runtime v1",
|
||||
"signerRequirement": "aucune",
|
||||
"accountOrder": "sans effet runtime mais conserve par le decodeur",
|
||||
"duplicateAccounts": "sans effet runtime mais conserves par le decodeur",
|
||||
"runtimeLogs": [],
|
||||
"utf8Failure": "InvalidInstructionData",
|
||||
"builderOfficial": "builder generique 2.1.0 avec program ID v1 explicite",
|
||||
"currentInvocation": {
|
||||
"mainnet": "transactions reelles observees et rejouees; aucun envoi execute dans cette tranche",
|
||||
"devnet": "non verifie",
|
||||
"localnet": "binaire historique non embarque"
|
||||
},
|
||||
"realCorpusSignatures": [
|
||||
"imGSCgR83S3tFPTcZPqWLWRcL1piFX1vkYMRVsRdJeBM4p7viDb4V6Hq2x51ovTmbMgGBMdn8kyeNiAg9Ph6MfE",
|
||||
"65J2cmiZAB5h7B3kyzhponNZQzMCbbxVn1A8cydvKKq1FYxYLEarG7ydjuuxFatXCG7Foju21XMUdRkT96jYBS3C"
|
||||
]
|
||||
},
|
||||
{
|
||||
"generation": "v3",
|
||||
"programId": "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr",
|
||||
"surfaceCode": "spl_memo_v3",
|
||||
"status": "historique encore largement observe",
|
||||
"instructionData": "octets UTF-8 bruts",
|
||||
"emptyPayload": "accepte",
|
||||
"accounts": "zero ou plusieurs; chaque compte fourni doit etre signer",
|
||||
"signerRequirement": "tous les comptes fournis",
|
||||
"accountOrder": "ordre de parcours et de logs conserve",
|
||||
"duplicateAccounts": "parcourus et journalises dans leur ordre; aucun rejet dedie",
|
||||
"runtimeLogs": [
|
||||
"Signed by <pubkey> pour chaque compte signer",
|
||||
"Invalid UTF-8, from byte <offset> en cas d'erreur",
|
||||
"Memo (len <octets>): <texte> en cas de succes"
|
||||
],
|
||||
"utf8Failure": "InvalidInstructionData",
|
||||
"missingSignerFailure": "MissingRequiredSignature avant validation UTF-8",
|
||||
"builderOfficial": "builder generique 2.1.0 avec program ID v3 explicite",
|
||||
"currentInvocation": {
|
||||
"mainnet": "transactions reelles observees et rejouees; aucun envoi execute dans cette tranche",
|
||||
"devnet": "non verifie",
|
||||
"localnet": "possible avec binaire officiel, non execute"
|
||||
},
|
||||
"realCorpusSignatures": [
|
||||
"2DkiJJVAyJ1aJHn2ff8JhKA5C8wbakw76LZvgxmcQ1qtHNDprGvA6TntXXK5FSAeRMZyrDt8ujAkGMgBVcEhjsmT",
|
||||
"3G18ZUSP29Aw12NwnAYRYgix87fa559nMzaBa3LSkCQZjJ5AYEjSDnQHLbgU3QZax2efmeJHdxu1LamSCxCJzg37"
|
||||
]
|
||||
},
|
||||
{
|
||||
"generation": "v4",
|
||||
"programId": "Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH",
|
||||
"surfaceCode": "spl_memo_v4",
|
||||
"status": "generation courante publiee avec implementation Pinocchio",
|
||||
"instructionData": "octets UTF-8 bruts",
|
||||
"emptyPayload": "accepte",
|
||||
"accounts": "zero ou plusieurs; chaque compte fourni doit etre signer",
|
||||
"signerRequirement": "tous les comptes fournis",
|
||||
"accountOrder": "ordre de parcours et de logs conserve",
|
||||
"duplicateAccounts": "aucun rejet dedie prouve; ordre et doublons conserves",
|
||||
"runtimeLogs": [
|
||||
"signataires puis diagnostic UTF-8 ou memo selon l'implementation officielle"
|
||||
],
|
||||
"utf8Failure": "InvalidInstructionData",
|
||||
"missingSignerFailure": "MissingRequiredSignature avant validation UTF-8",
|
||||
"builderOfficial": "builder generique 2.1.0 avec program ID v4 explicite",
|
||||
"currentInvocation": {
|
||||
"mainnet": "transactions reelles observees et rejouees; aucun envoi execute dans cette tranche",
|
||||
"devnet": "simulation et trois executions v4 confirmees avec post-validation complete le 2026-07-15",
|
||||
"localnet": "binaire officiel disponible, non execute"
|
||||
},
|
||||
"realCorpusSignatures": [
|
||||
"2vgR56q2NR6ehu1uNnpt3te3RqhX2sXryXi4SpBHKUyVaeERr1HLYSLvDFRzd3eDeNejjLX9hVZJZ5GvtsTtBr1c",
|
||||
"53aHhj6rt77hCkadHedpWS7GstdER5XqQrHDutZ7gAQrDvAxcDcktrUtwxZcCbTV2FnLzELqfwoJgvabjdLPWkQ5",
|
||||
"3NxmPdF9W3GBiD8qF2VzvUhEDrTM48EEkaosTtzVceRhQc4sGEojDFppBsXYgqK9GCrCUo4wzAWciprsqZEmRyee",
|
||||
"2njzDJUBar6TTPPcuwEDdkiW8kVLUsZXfdvUQNP7TC6La44E4kZtLFfdJ1Q8nPNJbKa9Vuby4TtiuLX2rQQTa65C"
|
||||
]
|
||||
}
|
||||
],
|
||||
"decoderContract": {
|
||||
"maximumRetainedPayloadBytes": 4096,
|
||||
"diagnosticHexPrefixBytes": 32,
|
||||
"completeTextRetainedWhenUtf8Valid": true,
|
||||
"failedTransactionRuntimeValidation": "not_proven_transaction_failed",
|
||||
"failedTransactionCommitted": false,
|
||||
"unknownProgramProducesObservation": false
|
||||
},
|
||||
"materializationContract": {
|
||||
"crate": "kb_materializer_transaction_annotations",
|
||||
"processorName": "transaction_annotations",
|
||||
"materializedFamily": "transaction_annotation",
|
||||
"acceptedEntries": ["add_memo", "memo_intent", "invalid_memo_attempt"],
|
||||
"projectedEntry": "add_memo",
|
||||
"transactionPolicy": "SuccessfulCommittedOnly",
|
||||
"failedOrUncommittedOutput": false,
|
||||
"store": "kb_sol_mat_events",
|
||||
"newMigrationRequired": false,
|
||||
"idempotence": "ledger processor/version/input hash plus deterministic output key",
|
||||
"readModel": {
|
||||
"contract": "DecodePipelineStore.list_materialized_events",
|
||||
"demo": "demo_decode_replay transaction annotation journal",
|
||||
"boundedMaximumRows": 500,
|
||||
"filters": ["processor exact", "family exact", "partial signature"],
|
||||
"visualization": "table journal, not OHLC"
|
||||
},
|
||||
"decodedOnlyFields": [
|
||||
"complete accounts and writable flags",
|
||||
"payload hex diagnostic prefix",
|
||||
"UTF-8 error offset",
|
||||
"transaction error",
|
||||
"decoder proof"
|
||||
]
|
||||
},
|
||||
"executorContract": {
|
||||
"crate": "kb_executor_spl_memo",
|
||||
"operationCode": "spl_memo.add_memo",
|
||||
"typedIntent": "SplMemoExecutionIntent",
|
||||
"officialBuilder": "spl_memo_interface::instruction::build_memo",
|
||||
"supportedGenerations": ["v4"],
|
||||
"decodeOnlyGenerations": ["v1", "v3"],
|
||||
"maximumMessageBytes": 566,
|
||||
"maximumSignerOccurrences": 32,
|
||||
"preserveSignerOrderAndDuplicates": true,
|
||||
"inventWritableAccounts": false,
|
||||
"requestedSpendLamports": 0,
|
||||
"simulationRequired": true,
|
||||
"dryRunDefault": true,
|
||||
"allClustersConstructible": true,
|
||||
"historicalGenerationSendEnabled": false,
|
||||
"mainnetSendGovernedByCommonPolicy": true,
|
||||
"clusterAvailabilityProvenBySimulation": true,
|
||||
"demoCluster": "devnet",
|
||||
"demoGeneration": "v4",
|
||||
"postExecutionValidation": [
|
||||
"canonical_insert",
|
||||
"core_extraction",
|
||||
"memo_decode_replay",
|
||||
"transaction_annotation_materialization"
|
||||
]
|
||||
},
|
||||
"requiredCorpusCases": [
|
||||
"empty_payload",
|
||||
"ascii",
|
||||
"unicode_multibyte",
|
||||
"near_practical_transaction_limit",
|
||||
"invalid_utf8",
|
||||
"zero_signer",
|
||||
"one_signer",
|
||||
"multiple_signers",
|
||||
"non_signer_account",
|
||||
"duplicate_accounts",
|
||||
"additional_writable_account",
|
||||
"outer_instruction",
|
||||
"inner_instruction",
|
||||
"successful_transaction",
|
||||
"failed_transaction",
|
||||
"malformed_base64",
|
||||
"payload_over_decoder_limit"
|
||||
],
|
||||
"mainnetReplayValidation": {
|
||||
"date": "2026-07-14",
|
||||
"acquisition": {
|
||||
"programCampaigns": 3,
|
||||
"canonicalTransactionsInserted": 300,
|
||||
"missingTransactions": 0
|
||||
},
|
||||
"coreExtraction": {
|
||||
"selected": 300,
|
||||
"extracted": 300,
|
||||
"failed": 0
|
||||
},
|
||||
"generations": [
|
||||
{
|
||||
"generation": "v1",
|
||||
"decodedInstructions": 102,
|
||||
"materializedAnnotations": 69,
|
||||
"refusedUncommittedIntents": 33
|
||||
},
|
||||
{
|
||||
"generation": "v3",
|
||||
"decodedInstructions": 439,
|
||||
"materializedAnnotations": 422,
|
||||
"refusedUncommittedIntents": 17,
|
||||
"secondNonForcedReplaySelected": 0
|
||||
},
|
||||
{
|
||||
"generation": "v4",
|
||||
"decodedInstructions": 100,
|
||||
"materializedAnnotations": 100,
|
||||
"refusedUncommittedIntents": 0
|
||||
}
|
||||
],
|
||||
"decodeFailures": 0,
|
||||
"unmatchedInstructions": 0,
|
||||
"operationalErrorLogEntries": 0
|
||||
},
|
||||
"devnetExecutionValidation": {
|
||||
"date": "2026-07-15",
|
||||
"generation": "v4",
|
||||
"programId": "Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH",
|
||||
"simulationOnlyValidated": true,
|
||||
"submittedTransactions": 3,
|
||||
"confirmedTransactions": 3,
|
||||
"canonicalTransactionsInserted": 3,
|
||||
"coreTransactionsExtracted": 3,
|
||||
"decodedInstructions": 3,
|
||||
"materializedAnnotations": 3,
|
||||
"annotationPayloadLengthBytes": 34,
|
||||
"secondReplaySkipped": 3,
|
||||
"secondReplayNewMaterializedOutputs": 0,
|
||||
"decodeFailures": 0,
|
||||
"materializationRefusals": 0,
|
||||
"signatures": [
|
||||
"53aHhj6rt77hCkadHedpWS7GstdER5XqQrHDutZ7gAQrDvAxcDcktrUtwxZcCbTV2FnLzELqfwoJgvabjdLPWkQ5",
|
||||
"3NxmPdF9W3GBiD8qF2VzvUhEDrTM48EEkaosTtzVceRhQc4sGEojDFppBsXYgqK9GCrCUo4wzAWciprsqZEmRyee",
|
||||
"2njzDJUBar6TTPPcuwEDdkiW8kVLUsZXfdvUQNP7TC6La44E4kZtLFfdJ1Q8nPNJbKa9Vuby4TtiuLX2rQQTa65C"
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"kind": "official_interface_source",
|
||||
"url": "https://docs.rs/spl-memo-interface/2.1.0/src/spl_memo_interface/instruction.rs.html"
|
||||
},
|
||||
{
|
||||
"kind": "official_interface_ids",
|
||||
"url": "https://docs.rs/spl-memo-interface/2.1.0/src/spl_memo_interface/lib.rs.html"
|
||||
},
|
||||
{
|
||||
"kind": "official_v1_historical_source",
|
||||
"url": "https://github.com/solana-program/memo/commit/479839141a99b7d0c3a35bc648c0fa1e4704ea3e"
|
||||
},
|
||||
{
|
||||
"kind": "official_v3_published_source",
|
||||
"url": "https://docs.rs/spl-memo/3.0.0/src/spl_memo/processor.rs.html"
|
||||
},
|
||||
{
|
||||
"kind": "official_current_source",
|
||||
"url": "https://github.com/solana-program/memo/blob/main/program/src/processor.rs"
|
||||
}
|
||||
],
|
||||
"documentedLimitations": [
|
||||
"v1 et v3 restent decodees depuis un corpus Mainnet reel et leur wire officiel reste audite, mais l'executeur les classe decode-only et ne construit que v4",
|
||||
"l'invocabilite Localnet depend du deploiement explicite du binaire de generation demande",
|
||||
"les differences de cout v3/v4 ne sont pas transformees en garantie statique; chaque plan reste soumis a la simulation et au plafond de frais"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user