Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix pruning of transactions upon receiving a ReqSn with localTxs #1559

Merged
merged 2 commits into from
Aug 15, 2024

Conversation

ch1bo
Copy link
Member

@ch1bo ch1bo commented Aug 12, 2024

Summary: Before, the node would re-apply local transactions in the wrong order which would throw away local state even though the transaction would still apply.


This issue was discovered when we issued very long "transaction chains" in the https://github.com/cardano-scaling/hydra-doom project:

Scenario: A web client creates many transactions rapidly which are "re-spending" the previous transaction's output right away. i.e. given transaction with id 17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3, the next transaction constructed and submitted spends from input 17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3#0

First failing tx: 639ea19954e8f57bf140545d515e228cc16d983253409c4887587fcba5415a5c

Client sends

13:09:35.450 game.ts:283 submitted 17c6bd63..., took 1ms
13:09:35.481 game.ts:283 submitted 54abc2a6..., took 2ms
13:09:35.508 game.ts:283 submitted 8297f936..., took 1ms
13:09:35.536 game.ts:283 submitted 3223df50..., took 1ms
13:09:35.564 game.ts:283 submitted 639ea199..., took 2ms <- this will become invalid

Node receives

{"timestamp":"2024-08-12T11:09:35.46737916Z" ,"txId":"17c6bd63..."}
{"timestamp":"2024-08-12T11:09:35.516919949Z","txId":"54abc2a6..."}
{"timestamp":"2024-08-12T11:09:35.526386377Z","txId":"8297f936..."}
{"timestamp":"2024-08-12T11:09:35.551407292Z","txId":"3223df50..."}
{"timestamp":"2024-08-12T11:09:35.586009755Z","txId":"639ea199..."} <- this will become invalid

Node processes reqtxs

{"timestamp":"2024-08-12T11:09:35.521115774Z","txId":"17c6bd63...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.557502063Z","txId":"54abc2a6...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.592634676Z","txId":"8297f936...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.595302086Z","txId":"3223df50...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.627579538Z","txId":"639ea199...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.634671782Z","txId":"c75c0708...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.660128198Z","txId":"938e7ffe...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.673727236Z","txId":"3863025f...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.70360761Z" ,"txId":"a16a6474...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.728790712Z","txId":"639ea199...","ttl":4} <- decreasing ttl
{"timestamp":"2024-08-12T11:09:35.760812152Z","txId":"c75c0708...","ttl":4}
{"timestamp":"2024-08-12T11:09:35.761502492Z","txId":"146337ee...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.761960011Z","txId":"3b6b8750...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.762388959Z","txId":"938e7ffe...","ttl":4}
{"timestamp":"2024-08-12T11:09:35.775322674Z","txId":"3863025f...","ttl":4}
{"timestamp":"2024-08-12T11:09:35.78333375Z" ,"txId":"e85bc68a...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.804484088Z","txId":"a16a6474...","ttl":4}
{"timestamp":"2024-08-12T11:09:35.818515435Z","txId":"29d6d07e...","ttl":5}
{"timestamp":"2024-08-12T11:09:35.829558308Z","txId":"639ea199...","ttl":3} <- decreasing ttl

Node logic sequence

  • ReqTx 7cc9dede4649686c65e660639ea37498a64fec975ef624d504276f8c89c17d57
  • ReqTx 17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3
  • ReqSn 8317 [7cc9dede4649686c65e660639ea37498a64fec975ef624d504276f8c89c17d57]
  • ReqTx 54abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309
    • Outcome: TransactionReceived, TransactionAppliedToLocalUTxO, TxValid (eff)
  • AckSn 8317`
  • ReqTx 3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb`
    • Outcome: TransactionReceived, TransactionAppliedToLocalUTxO, TxValid (eff)
  • NewTx 639ea19954e8f57bf140545d515e228cc16d983253409c4887587fcba5415a5c
    • ReqTx
  • ReqSn 8318 ["17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3","54abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309"]
    • Outcome: AckSn (eff), SnapshotRequested
    • newLocalUTxO of state change SnapshotRequested does NOT include 3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb#0!
  • ReqTx 639ea19954e8f57bf140545d515e228cc16d983253409c4887587fcba5415a5c
    • Outcome: Wait WaitOnNotApplicable
  • AckSn 8318
  • ReqTx c75c070850e0e05af96b16f52017285e138f020297f7a2cf78f55ced9c5cad41

Hypothesis:

After seeing NewTx of 639ea19954e8f57bf140545d515e228cc16d983253409c4887587fcba5415a5c and before processing it in a ReqTx we have localTxs (reconstructed):

  • 17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3
  • 54abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309
  • 8297f936753fe330b661d7cd37907f292c75fe4319e0661a0408eb6954b9eafe
  • 3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb

and newLocalUTxO:

{
    "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#1": {"address": "addr_test1vz3dtkx36n9nvzqm68cl9xy5cshvuv7se2ers80utf49kvqsmyn03", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
    "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#2": {"address": "addr_test1vru2drx33ev6dt8gfq245r5k0tmy7ngqe79va69de9dxkrg09c7d3", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": { "lovelace": 100000000 }},
    "22c2ddcafd17b4c20af5847ca53e9e755c4f373433ae98ee14e394ab2afdc9f7#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{ "constructor": 0, "fields": [] }, {"constructor": 0, "fields": [{"bytes": "32f124402bb5dfcd722cfe5b117bea23317362e886d5a7538d268855"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{ "constructor": 0, "fields": [] }, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{ "int": -73792775 }, { "int": 34063727 }, { "int": 1572864 }]}, { "int": 88 }]}, {"constructor": 0, "fields": [{ "int": 29 }, { "int": 3 }, { "int": 12 }]}, {"constructor": 0, "fields": [{ "int": 29 }, { "int": 3 }, { "int": 12 }]}, { "int": 0 }]}, { "list": [] }, { "list": [{ "int": 7967 }, { "int": 512 }] }, {"constructor": 0, "fields": [{ "int": 2 }, { "int": 2 }, { "int": 1 }, { "constructor": 0, "fields": [] }]}]}, "inlineDatumhash": "f2d29a1133e12d1d1d28c6bade45119016232759c8851bed766e2b0ada052dcf", "referenceScript": null, "value": {}},
    "3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{ "constructor": 0, "fields": [] }, {"constructor": 0, "fields": [{"bytes": "a2d5d8d1d4cb36081bd1f1f29894c42ece33d0cab2381dfc5a6a5b30"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{ "constructor": 0, "fields": [] }, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{ "int": 0 }, { "int": 0 }, { "int": 0 }]}, { "int": 100 }]}, {"constructor": 0, "fields": [{ "int": 0 }, { "int": 0 }, { "int": 0 }]}, {"constructor": 0, "fields": [{ "int": 0 }, { "int": 0 }, { "int": 0 }]}, { "int": 0 }]}, { "list": [] }, { "list": [] }, {"constructor": 0, "fields": [{ "int": -1 }, { "int": -1 }, { "int": -1 }, { "constructor": 0, "fields": [] }]}]}, "inlineDatumhash": "f75bcc1e6d65853317490982e31f6f225073e4a26b5613e6cb4e4c118112e44d", "referenceScript": null, "value": {}},
    "601860352803cfeb564e61f196b0a6ce3f74e4003de0bf8a4376411456b5b193#1": {"address": "addr_test1vqe0zfzq9w6alntj9nl9kytmag3nzumzazrdtf6n35ngs4gwpdj00", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
    "f8b5b4eebc36c30d0bc1ce9855ceeb3495914e4de080b659d540f1882807fec2#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": {"script": {"cborHex": "5914d15914ce01000033232323232323232323232322322323232323232323232232322533301453301549010d48656c6c6f2c20576f726c64210013232323232323232533301c3014301e3754016264a66603a602a603e6ea80044cc00800cdd7181198101baa001153301e49013c65787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d2061646d696e0016302230233023301f375402a264a66603a6024603e6ea80204c8c8c8c94ccc084c064c08cdd5000899192999811980d98129baa00113253330243370e900218131baa0011323232323253330293021302b3754002264a666054646464646464646464646464646464646464646464646464646464a66608aa66608a66e21200030473754609601e294454ccc114ccc114cdd78058022504a229444ccc114cdd78068032504a229404cc88c8c94cc12924010a6d61705f6368616e676500153304a30183330490034c0103d87a80004c0103d87980001533304900314a22646464a6660986088609c6ea80044c94cc138c070dd40008a99827180e1ba833704010090266e20004cdc10040241bad3052304f37540022a6609a92013c65787065637420536f6d6528646966666572656e636529203d206d6174682e737172742864785f73717561726564202b2064795f7371756172656429001632533304c3371000290000a60103d87a80001533304c33712002900109817998289ba80014bd7009817998289ba8323330010010023370666e000092002480108894ccc13ccdc48010008801099980180180099b833370000266e0c01000520044bd7019b8033018337026eb4c144004dd69828801240086603066e04dd6982898290009bad3051305200248010c134dd5182818269baa002304c3754609e60986ea8008c138c13cc12cdd50029826982718251baa00b30100293330453375e01000294128982518259825982580118248009824801182380098238011822800982298209baa01930433044304430440023042001304200230400013040002303e001303e0013039375405e600200244a66607400229000099b8048008cc008008c0f4004c0040048894ccc0d4cdc4000a4000290000a99981a98168008a40042a6466606c605c66e1800920041333004004300100333706004900209800999802002180080199b83300800248010dc100111b99330020014881003001001222533333303a00213232323232323300c0020013371491010128000025333036337100069007099b80483c80400c54ccc0d8cdc4001a410004266e00cdc0241002800690068a9981ba4929576861742061726520796f7520646f696e673f204e6f2049206d65616e2c20736572696f75736c792e001653330390011337149101035b5d2900004133714911035b5f2000375c6076607866601000266074980102415d003303a375266e2922010129000044bd70111981e26103422c20003303c375266601001000466e28dd7180c0009bae30100014bd701bac3037002375a606a0026466ec0dd4181a8009ba730360013754004264a66606e002266e292201027b7d00002133714911037b5f2000375c6072607464646600200200644a6660740022006266446607a98103422c20003303d3752666012012607400466e292201023a2000333009009303b002337146eb8c064004dd71808800a5eb80c0f0004cc008008c0f4004cc0e13010342207d0033038375200497ae03756004264a66606e002266e29221025b5d00002133714911035b5f2000375c6072607466600c00266070980102415d0033038375200497ae0223303a4c0103422c20003303a375266600c00c00466e28dd7180b0009bae300e0014bd701bac002133006375a0040022646466e2922102682700001323330010013006371a00466e292201012700003222533303633710004900008008991919199803003180580299b8b33700004a66607266e2000920141481805206e3371666e000054ccc0e4cdc4000a4028290300a40dc00866e18009202033706002901019b8e004002375c0046e0120012223233001001004225333036001100413300330380013300200230390012232330010010032253330303028001133714910101300000315333030337100029000099b8a489012d003300200233702900000089980299b8400148050cdc599b803370a002900a240c00066002002444a66605a66e2400920001001133300300333708004900a19b8b3370066e140092014481800044cc03c0400045281bae302f302c37540022a6605492014665787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d206f6c645f646174756d2e6f776e657200163001302b37540424605c605e00266030002046a66666605a00220022a6604c0442c2a6604c0442c2a6604c0442c2a6604c0442c6054604e6ea800454cc0952412765787065637420496e6c696e65446174756d286461746129203d206f75747075745f646174756d00163029302a302a302637546052604c6ea800454cc09124016a65787065637420536f6d65287363726970745f6f757470757429203d0a202020202020202020206c6973742e66696e64286f7574707574732c20666e286f757470757429207b206f75747075742e61646472657373203d3d207363726970745f61646472657373207d2900163300400923375e6008604c6ea8004008c09cc090dd51813981418121baa3027302437540022a660449214365787065637420536f6d65287363726970745f696e70757429203d207472616e73616374696f6e2e66696e645f696e70757428696e707574732c206f75745f726566290016323300300a23375e6006604a6ea8004008c098c08cdd5005918130009119198008008019129998130008a60103d87a8000132325333024300500213007330290024bd70099802002000981500118140009ba54800054cc0792411f657870656374205370656e64286f75745f72656629203d20707572706f7365001637586044603e6ea802c88c8cc00400400c894ccc08c004528099299981019b8f375c604c00400829444cc00c00c004c098004dd618101810981098109810981098108011bac301f001301f301f0023758603a00260326ea8c070008c06cc070004c05cdd50008a4c2a6602a9211856616c696461746f722072657475726e65642066616c73650013656325333013300b00115333017301637540042930a9980a0088b0a9998099804000899299980c0008a9980a8090b099299980c980e00109924c66010002464a66602e601e60326ea80044c94ccc07000454cc064058584c8c94ccc07800454cc06c060584c8c94ccc08000454cc074068584c8c94ccc08800454cc07c070584c8c94ccc09000454cc084078584c8c94ccc09800454cc08c080584c8c94ccc0a000454cc094088584c8c94ccc0a800454cc09c090584c8c94ccc0b000454cc0a4098584c8c94ccc0b800454cc0ac0a0584c94ccc0bcc0c8008526153302c02916325333333033001153302c02916153302c02916153302c029161375a0022a660580522c6060002606000464a6666660620022a6605404e2c2a6605404e2c2a6605404e2c26eb400454cc0a809c58c0b8004c0b8008c94cccccc0bc00454cc0a00945854cc0a00945854cc0a0094584dd68008a998140128b181600098160011929999998168008a998130118b0a998130118b0a998130118b09bad001153302602316302a001302a00232533333302b0011533024021161533024021161533024021161375a0022a660480422c6050002605000464a6666660520022a6604403e2c2a6604403e2c2a6604403e2c26eb400454cc08807c58c098004c098008c94cccccc09c00454cc0800745854cc0800745854cc080074584dd68008a9981000e8b181200098120011929999998128008a9980f00d8b0a9980f00d8b0a9980f00d8b09bad001153301e01b1630220013022002325333333023001153301c01916153301c01916153301c019161375a0022a660380322c6040002604000464a6666660420022a6603402e2c2a6603402e2c2a6603402e2c26eb400454cc06805c58c078004c068dd50008a9980c00a8b299999980f00088008a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b0098b19299999980e8008a9980b0098b0a9980b0098b09bac001153301601316153301601316301a001301637540042a660280222c60286ea80054cccccc064004400454cc04803c5854cc04803c5854cc04803c5854cc04803c58cc004020038894ccc040c020c048dd5001099299980a8008a998090010b09919299980b8008a9980a0020b09919299980c8008a9980b0030b09919299980d8008a9980c0040b09919299980e8008a9980d0050b09919299980f8008a9980e0060b0991929998108008a9980f0070b09929998111812801099191919191924ca6660466036604a6ea80184c94ccc0a000454cc094054584c8c94ccc0a800454cc09c05c584c8c94ccc0b000454cc0a4064584c8c94ccc0b800454cc0ac06c584c94ccc0bcc0c8008526153302c01c163253333330330011325333030302f0011533302c3021302e00114a22a6660586048605c002294054cc0b40745854cc0b407458dd50008a9981600e0b0a9981600e0b0a9981600e0b0a9981600e0b181800098180011929999998188008a9981500d0b0a9981500d0b0a9981500d0b09bad001153302a01a16302e001302e00232533333302f0011533028018161533028018161533028018161375a0022a660500302c6058002605800464a66666605a0022a6604c02c2c2a6604c02c2c2a6604c02c2c26eb400454cc09805858c0a8004c098dd50030a9981200a0b1980a803929999998158008a9981200a0b0a9981200a0b0a9981200a0b09bad00115330240141633014008233018533333302a00110011533023013161533023013161533023013161533023013160135333020301830223754012264a66604a0022a660440242c26464a66604e0022a660480282c26464a6660520022a6604c02c2c26464a6660560022a660500302c26464a66605a0022a660540342c264a66605c6062004264646464931981200300f1981180380e9981080400e19299981598118008a99981798171baa00a149854cc0b00705854ccc0acc08000454ccc0bcc0b8dd50050a4c2a660580382c2a66605666e1d20040011533302f302e37540142930a9981600e0b0a9981600e0b18161baa009153302b01b16325333333032001153302b01b16153302b01b16153302b01b161375a0022a660560362c605e002605e00464a66666606000220022a660520322c2a660520322c2a660520322c2a660520322c605a002605a00464a66666605c00220022a6604e02e2c2a6604e02e2c2a6604e02e2c2a6604e02e2c6056002605600464a66666605800220022a6604a02a2c2a6604a02a2c2a6604a02a2c2a6604a02a2c6052002605200464a66666605400220022a660460262c2a660460262c2a660460262c2a660460262c604e00260466ea802454cc08404458cc04c028040cc04802c03c54cc07c03c58c94cccccc098004400454cc07c03c5854cc07c03c5854cc07c03c5854cc07c03c58c08c004c08c008c94cccccc09000454cc0740345854cc074034584dd60008a9980e8068b0a9980e8068b181080098108011929999998110008a9980d8058b0a9980d8058b09bac001153301b00b16153301b00b16301f001301f0023253333330200011001153301900916153301900916153301900916153301900916301d001301d00232533333301e0011001153301700716153301700716153301700716153301700716301b001301b00232533333301c00110011533015005161533015005161533015005161533015005163019001301900232533333301a00113253330173016001153330133008301500114a22a6660266016602a002294054cc0500105854cc05001058dd50008a998098018b0a998098018b0a998098018b0a998098018b180b80098099baa00215330110011622323300100100322533301500114984c8cc00c00cc064008c00cc05c00488c94ccc03cc01c0044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54ccc03cc0100044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54cc04000858c040dd50011b8748008894ccc030c010c038dd500109929998088008a998070010b0991929998098008a998080020b099299980a180b80109924ca666020601060246ea800c4c94ccc05400454cc048018584c8c94ccc05c00454cc050020584c8c94ccc06400454cc058028584c94ccc068c074008526153301700b1632533333301e001153301700b16153301700b16153301700b161375a0022a6602e0162c6036002603600464a6666660380022a6602a0122c2a6602a0122c2a6602a0122c26eb400454cc05402458c064004c064008c94cccccc06800454cc04c01c5854cc04c01c5854cc04c01c584dd68008a998098038b180b80098099baa0031533011005161533011005163253333330180011533011005161533011005161533011005161375a0022a6602200a2c602a002602a00464a66666602c00220022a6601e0062c2a6601e0062c2a6601e0062c2a6601e0062c6026002601e6ea800854cc03400458894ccc02cc00cc034dd500109929998080008a998068010b0991929998090008a998078020b09919299980a0008a998088030b099299980a980c0010a4c2a6602400e2c64a6666660320022a6602400e2c2a6602400e2c2a6602400e2c26eb400454cc04801c58c058004c058008c94cccccc05c00454cc0400145854cc0400145854cc040014584dd68008a998080028b180a000980a00119299999980a8008a998070018b0a998070018b0a998070018b09bad001153300e003163012001300e37540042a660180022c6e1d2000533333300f0011001153300800616153300800616153300800616153300800616375a00292121657870656374206e65775f646174756d3a2047616d6544617461203d20646174610049011272656465656d65723a2052656465656d6572004901136f6c645f646174756d3a2047616d6544617461005734ae7155ceaab9e5573eae815d0aba25748981051a00da33600001", "description": "", "type": "PlutusScriptV2"}, "scriptLanguage": "PlutusScriptLanguage PlutusScriptV2"}, "value": {}}
},

The node had previously decided to do a snapshot of
["17c6bd63500a219b5ea55eb6600a91ec5c335e392b6de45e52895533971af7b3", "54abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309"] and when
processing that ReqSn now we end up with a snapshot utxo:

"utxo": {
  "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#1": {"address": "addr_test1vz3dtkx36n9nvzqm68cl9xy5cshvuv7se2ers80utf49kvqsmyn03", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
  "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#2": {"address": "addr_test1vru2drx33ev6dt8gfq245r5k0tmy7ngqe79va69de9dxkrg09c7d3", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {"lovelace": 100000000}},
  "22c2ddcafd17b4c20af5847ca53e9e755c4f373433ae98ee14e394ab2afdc9f7#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"bytes": "32f124402bb5dfcd722cfe5b117bea23317362e886d5a7538d268855"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{"int": -73792775}, {"int": 34063727}, {"int": 1572864}]}, {"int": 88}]}, {"constructor": 0, "fields": [{"int": 29}, {"int": 3}, {"int": 12}]}, {"constructor": 0, "fields": [{"int": 29}, {"int": 3}, {"int": 12}]}, {"int": 0}]}, {"list": []}, {"list": [{"int": 7967}, {"int": 512}]}, {"constructor": 0, "fields": [{"int": 2}, {"int": 2}, {"int": 1}, {"constructor": 0, "fields": []}]}]}, "inlineDatumhash": "f2d29a1133e12d1d1d28c6bade45119016232759c8851bed766e2b0ada052dcf", "referenceScript": null, "value": {}},
  "54abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"bytes": "a2d5d8d1d4cb36081bd1f1f29894c42ece33d0cab2381dfc5a6a5b30"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"int": 100}]}, {"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"int": 0}]}, {"list": []}, {"list": []}, {"constructor": 0, "fields": [{"int": -1}, {"int": -1}, {"int": -1}, {"constructor": 0, "fields": []}]}]}, "inlineDatumhash": "f75bcc1e6d65853317490982e31f6f225073e4a26b5613e6cb4e4c118112e44d", "referenceScript": null, "value": {}},
  "601860352803cfeb564e61f196b0a6ce3f74e4003de0bf8a4376411456b5b193#1": {"address": "addr_test1vqe0zfzq9w6alntj9nl9kytmag3nzumzazrdtf6n35ngs4gwpdj00", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
  "f8b5b4eebc36c30d0bc1ce9855ceeb3495914e4de080b659d540f1882807fec2#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": {"script": {"cborHex": "5914d15914ce01000033232323232323232323232322322323232323232323232232322533301453301549010d48656c6c6f2c20576f726c64210013232323232323232533301c3014301e3754016264a66603a602a603e6ea80044cc00800cdd7181198101baa001153301e49013c65787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d2061646d696e0016302230233023301f375402a264a66603a6024603e6ea80204c8c8c8c94ccc084c064c08cdd5000899192999811980d98129baa00113253330243370e900218131baa0011323232323253330293021302b3754002264a666054646464646464646464646464646464646464646464646464646464a66608aa66608a66e21200030473754609601e294454ccc114ccc114cdd78058022504a229444ccc114cdd78068032504a229404cc88c8c94cc12924010a6d61705f6368616e676500153304a30183330490034c0103d87a80004c0103d87980001533304900314a22646464a6660986088609c6ea80044c94cc138c070dd40008a99827180e1ba833704010090266e20004cdc10040241bad3052304f37540022a6609a92013c65787065637420536f6d6528646966666572656e636529203d206d6174682e737172742864785f73717561726564202b2064795f7371756172656429001632533304c3371000290000a60103d87a80001533304c33712002900109817998289ba80014bd7009817998289ba8323330010010023370666e000092002480108894ccc13ccdc48010008801099980180180099b833370000266e0c01000520044bd7019b8033018337026eb4c144004dd69828801240086603066e04dd6982898290009bad3051305200248010c134dd5182818269baa002304c3754609e60986ea8008c138c13cc12cdd50029826982718251baa00b30100293330453375e01000294128982518259825982580118248009824801182380098238011822800982298209baa01930433044304430440023042001304200230400013040002303e001303e0013039375405e600200244a66607400229000099b8048008cc008008c0f4004c0040048894ccc0d4cdc4000a4000290000a99981a98168008a40042a6466606c605c66e1800920041333004004300100333706004900209800999802002180080199b83300800248010dc100111b99330020014881003001001222533333303a00213232323232323300c0020013371491010128000025333036337100069007099b80483c80400c54ccc0d8cdc4001a410004266e00cdc0241002800690068a9981ba4929576861742061726520796f7520646f696e673f204e6f2049206d65616e2c20736572696f75736c792e001653330390011337149101035b5d2900004133714911035b5f2000375c6076607866601000266074980102415d003303a375266e2922010129000044bd70111981e26103422c20003303c375266601001000466e28dd7180c0009bae30100014bd701bac3037002375a606a0026466ec0dd4181a8009ba730360013754004264a66606e002266e292201027b7d00002133714911037b5f2000375c6072607464646600200200644a6660740022006266446607a98103422c20003303d3752666012012607400466e292201023a2000333009009303b002337146eb8c064004dd71808800a5eb80c0f0004cc008008c0f4004cc0e13010342207d0033038375200497ae03756004264a66606e002266e29221025b5d00002133714911035b5f2000375c6072607466600c00266070980102415d0033038375200497ae0223303a4c0103422c20003303a375266600c00c00466e28dd7180b0009bae300e0014bd701bac002133006375a0040022646466e2922102682700001323330010013006371a00466e292201012700003222533303633710004900008008991919199803003180580299b8b33700004a66607266e2000920141481805206e3371666e000054ccc0e4cdc4000a4028290300a40dc00866e18009202033706002901019b8e004002375c0046e0120012223233001001004225333036001100413300330380013300200230390012232330010010032253330303028001133714910101300000315333030337100029000099b8a489012d003300200233702900000089980299b8400148050cdc599b803370a002900a240c00066002002444a66605a66e2400920001001133300300333708004900a19b8b3370066e140092014481800044cc03c0400045281bae302f302c37540022a6605492014665787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d206f6c645f646174756d2e6f776e657200163001302b37540424605c605e00266030002046a66666605a00220022a6604c0442c2a6604c0442c2a6604c0442c2a6604c0442c6054604e6ea800454cc0952412765787065637420496e6c696e65446174756d286461746129203d206f75747075745f646174756d00163029302a302a302637546052604c6ea800454cc09124016a65787065637420536f6d65287363726970745f6f757470757429203d0a202020202020202020206c6973742e66696e64286f7574707574732c20666e286f757470757429207b206f75747075742e61646472657373203d3d207363726970745f61646472657373207d2900163300400923375e6008604c6ea8004008c09cc090dd51813981418121baa3027302437540022a660449214365787065637420536f6d65287363726970745f696e70757429203d207472616e73616374696f6e2e66696e645f696e70757428696e707574732c206f75745f726566290016323300300a23375e6006604a6ea8004008c098c08cdd5005918130009119198008008019129998130008a60103d87a8000132325333024300500213007330290024bd70099802002000981500118140009ba54800054cc0792411f657870656374205370656e64286f75745f72656629203d20707572706f7365001637586044603e6ea802c88c8cc00400400c894ccc08c004528099299981019b8f375c604c00400829444cc00c00c004c098004dd618101810981098109810981098108011bac301f001301f301f0023758603a00260326ea8c070008c06cc070004c05cdd50008a4c2a6602a9211856616c696461746f722072657475726e65642066616c73650013656325333013300b00115333017301637540042930a9980a0088b0a9998099804000899299980c0008a9980a8090b099299980c980e00109924c66010002464a66602e601e60326ea80044c94ccc07000454cc064058584c8c94ccc07800454cc06c060584c8c94ccc08000454cc074068584c8c94ccc08800454cc07c070584c8c94ccc09000454cc084078584c8c94ccc09800454cc08c080584c8c94ccc0a000454cc094088584c8c94ccc0a800454cc09c090584c8c94ccc0b000454cc0a4098584c8c94ccc0b800454cc0ac0a0584c94ccc0bcc0c8008526153302c02916325333333033001153302c02916153302c02916153302c029161375a0022a660580522c6060002606000464a6666660620022a6605404e2c2a6605404e2c2a6605404e2c26eb400454cc0a809c58c0b8004c0b8008c94cccccc0bc00454cc0a00945854cc0a00945854cc0a0094584dd68008a998140128b181600098160011929999998168008a998130118b0a998130118b0a998130118b09bad001153302602316302a001302a00232533333302b0011533024021161533024021161533024021161375a0022a660480422c6050002605000464a6666660520022a6604403e2c2a6604403e2c2a6604403e2c26eb400454cc08807c58c098004c098008c94cccccc09c00454cc0800745854cc0800745854cc080074584dd68008a9981000e8b181200098120011929999998128008a9980f00d8b0a9980f00d8b0a9980f00d8b09bad001153301e01b1630220013022002325333333023001153301c01916153301c01916153301c019161375a0022a660380322c6040002604000464a6666660420022a6603402e2c2a6603402e2c2a6603402e2c26eb400454cc06805c58c078004c068dd50008a9980c00a8b299999980f00088008a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b0098b19299999980e8008a9980b0098b0a9980b0098b09bac001153301601316153301601316301a001301637540042a660280222c60286ea80054cccccc064004400454cc04803c5854cc04803c5854cc04803c5854cc04803c58cc004020038894ccc040c020c048dd5001099299980a8008a998090010b09919299980b8008a9980a0020b09919299980c8008a9980b0030b09919299980d8008a9980c0040b09919299980e8008a9980d0050b09919299980f8008a9980e0060b0991929998108008a9980f0070b09929998111812801099191919191924ca6660466036604a6ea80184c94ccc0a000454cc094054584c8c94ccc0a800454cc09c05c584c8c94ccc0b000454cc0a4064584c8c94ccc0b800454cc0ac06c584c94ccc0bcc0c8008526153302c01c163253333330330011325333030302f0011533302c3021302e00114a22a6660586048605c002294054cc0b40745854cc0b407458dd50008a9981600e0b0a9981600e0b0a9981600e0b0a9981600e0b181800098180011929999998188008a9981500d0b0a9981500d0b0a9981500d0b09bad001153302a01a16302e001302e00232533333302f0011533028018161533028018161533028018161375a0022a660500302c6058002605800464a66666605a0022a6604c02c2c2a6604c02c2c2a6604c02c2c26eb400454cc09805858c0a8004c098dd50030a9981200a0b1980a803929999998158008a9981200a0b0a9981200a0b0a9981200a0b09bad00115330240141633014008233018533333302a00110011533023013161533023013161533023013161533023013160135333020301830223754012264a66604a0022a660440242c26464a66604e0022a660480282c26464a6660520022a6604c02c2c26464a6660560022a660500302c26464a66605a0022a660540342c264a66605c6062004264646464931981200300f1981180380e9981080400e19299981598118008a99981798171baa00a149854cc0b00705854ccc0acc08000454ccc0bcc0b8dd50050a4c2a660580382c2a66605666e1d20040011533302f302e37540142930a9981600e0b0a9981600e0b18161baa009153302b01b16325333333032001153302b01b16153302b01b16153302b01b161375a0022a660560362c605e002605e00464a66666606000220022a660520322c2a660520322c2a660520322c2a660520322c605a002605a00464a66666605c00220022a6604e02e2c2a6604e02e2c2a6604e02e2c2a6604e02e2c6056002605600464a66666605800220022a6604a02a2c2a6604a02a2c2a6604a02a2c2a6604a02a2c6052002605200464a66666605400220022a660460262c2a660460262c2a660460262c2a660460262c604e00260466ea802454cc08404458cc04c028040cc04802c03c54cc07c03c58c94cccccc098004400454cc07c03c5854cc07c03c5854cc07c03c5854cc07c03c58c08c004c08c008c94cccccc09000454cc0740345854cc074034584dd60008a9980e8068b0a9980e8068b181080098108011929999998110008a9980d8058b0a9980d8058b09bac001153301b00b16153301b00b16301f001301f0023253333330200011001153301900916153301900916153301900916153301900916301d001301d00232533333301e0011001153301700716153301700716153301700716153301700716301b001301b00232533333301c00110011533015005161533015005161533015005161533015005163019001301900232533333301a00113253330173016001153330133008301500114a22a6660266016602a002294054cc0500105854cc05001058dd50008a998098018b0a998098018b0a998098018b0a998098018b180b80098099baa00215330110011622323300100100322533301500114984c8cc00c00cc064008c00cc05c00488c94ccc03cc01c0044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54ccc03cc0100044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54cc04000858c040dd50011b8748008894ccc030c010c038dd500109929998088008a998070010b0991929998098008a998080020b099299980a180b80109924ca666020601060246ea800c4c94ccc05400454cc048018584c8c94ccc05c00454cc050020584c8c94ccc06400454cc058028584c94ccc068c074008526153301700b1632533333301e001153301700b16153301700b16153301700b161375a0022a6602e0162c6036002603600464a6666660380022a6602a0122c2a6602a0122c2a6602a0122c26eb400454cc05402458c064004c064008c94cccccc06800454cc04c01c5854cc04c01c5854cc04c01c584dd68008a998098038b180b80098099baa0031533011005161533011005163253333330180011533011005161533011005161533011005161375a0022a6602200a2c602a002602a00464a66666602c00220022a6601e0062c2a6601e0062c2a6601e0062c2a6601e0062c6026002601e6ea800854cc03400458894ccc02cc00cc034dd500109929998080008a998068010b0991929998090008a998078020b09919299980a0008a998088030b099299980a980c0010a4c2a6602400e2c64a6666660320022a6602400e2c2a6602400e2c2a6602400e2c26eb400454cc04801c58c058004c058008c94cccccc05c00454cc0400145854cc0400145854cc040014584dd68008a998080028b180a000980a00119299999980a8008a998070018b0a998070018b0a998070018b09bad001153300e003163012001300e37540042a660180022c6e1d2000533333300f0011001153300800616153300800616153300800616153300800616375a00292121657870656374206e65775f646174756d3a2047616d6544617461203d20646174610049011272656465656d65723a2052656465656d6572004901136f6c645f646174756d3a2047616d6544617461005734ae7155ceaab9e5573eae815d0aba25748981051a00da33600001", "description": "", "type": "PlutusScriptV2"}, "scriptLanguage": "PlutusScriptLanguage PlutusScriptV2"}, "value": {}}
}

Then, pruning local txs results in:

"newLocalUTxO": {
  "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#1": {"address": "addr_test1vz3dtkx36n9nvzqm68cl9xy5cshvuv7se2ers80utf49kvqsmyn03", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
  "1e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19#2": {"address": "addr_test1vru2drx33ev6dt8gfq245r5k0tmy7ngqe79va69de9dxkrg09c7d3", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {"lovelace": 100000000}},
  "22c2ddcafd17b4c20af5847ca53e9e755c4f373433ae98ee14e394ab2afdc9f7#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"bytes": "32f124402bb5dfcd722cfe5b117bea23317362e886d5a7538d268855"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{"int": -73792775}, {"int": 34063727}, {"int": 1572864}]}, {"int": 88}]}, {"constructor": 0, "fields": [{"int": 29}, {"int": 3}, {"int": 12}]}, {"constructor": 0, "fields": [{"int": 29}, {"int": 3}, {"int": 12}]}, {"int": 0}]}, {"list": []}, {"list": [{"int": 7967}, {"int": 512}]}, {"constructor": 0, "fields": [{"int": 2}, {"int": 2}, {"int": 1}, {"constructor": 0, "fields": []}]}]}, "inlineDatumhash": "f2d29a1133e12d1d1d28c6bade45119016232759c8851bed766e2b0ada052dcf", "referenceScript": null, "value": {}},
  "601860352803cfeb564e61f196b0a6ce3f74e4003de0bf8a4376411456b5b193#1": {"address": "addr_test1vqe0zfzq9w6alntj9nl9kytmag3nzumzazrdtf6n35ngs4gwpdj00", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": null, "value": {}},
  "8297f936753fe330b661d7cd37907f292c75fe4319e0661a0408eb6954b9eafe#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "inlineDatum": {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"bytes": "a2d5d8d1d4cb36081bd1f1f29894c42ece33d0cab2381dfc5a6a5b30"}]}, {"constructor": 0, "fields": [{"bytes": "f8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0d"}]}, {"constructor": 0, "fields": [{"constructor": 0, "fields": []}, {"constructor": 0, "fields": [{"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"int": 100}]}, {"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"constructor": 0, "fields": [{"int": 0}, {"int": 0}, {"int": 0}]}, {"int": 0}]}, {"list": []}, {"list": []}, {"constructor": 0, "fields": [{"int": -1}, {"int": -1}, {"int": -1}, {"constructor": 0, "fields": []}]}]}, "inlineDatumhash": "f75bcc1e6d65853317490982e31f6f225073e4a26b5613e6cb4e4c118112e44d", "referenceScript": null, "value": {}},
  "f8b5b4eebc36c30d0bc1ce9855ceeb3495914e4de080b659d540f1882807fec2#0": {"address": "addr_test1wzsnjc7cyustpvx9mcaw02dxgtlgxsvsm42cffq97mu8rasx0yy8u", "datum": null, "datumhash": null, "inlineDatum": null, "referenceScript": {"script": {"cborHex": "5914d15914ce01000033232323232323232323232322322323232323232323232232322533301453301549010d48656c6c6f2c20576f726c64210013232323232323232533301c3014301e3754016264a66603a602a603e6ea80044cc00800cdd7181198101baa001153301e49013c65787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d2061646d696e0016302230233023301f375402a264a66603a6024603e6ea80204c8c8c8c94ccc084c064c08cdd5000899192999811980d98129baa00113253330243370e900218131baa0011323232323253330293021302b3754002264a666054646464646464646464646464646464646464646464646464646464a66608aa66608a66e21200030473754609601e294454ccc114ccc114cdd78058022504a229444ccc114cdd78068032504a229404cc88c8c94cc12924010a6d61705f6368616e676500153304a30183330490034c0103d87a80004c0103d87980001533304900314a22646464a6660986088609c6ea80044c94cc138c070dd40008a99827180e1ba833704010090266e20004cdc10040241bad3052304f37540022a6609a92013c65787065637420536f6d6528646966666572656e636529203d206d6174682e737172742864785f73717561726564202b2064795f7371756172656429001632533304c3371000290000a60103d87a80001533304c33712002900109817998289ba80014bd7009817998289ba8323330010010023370666e000092002480108894ccc13ccdc48010008801099980180180099b833370000266e0c01000520044bd7019b8033018337026eb4c144004dd69828801240086603066e04dd6982898290009bad3051305200248010c134dd5182818269baa002304c3754609e60986ea8008c138c13cc12cdd50029826982718251baa00b30100293330453375e01000294128982518259825982580118248009824801182380098238011822800982298209baa01930433044304430440023042001304200230400013040002303e001303e0013039375405e600200244a66607400229000099b8048008cc008008c0f4004c0040048894ccc0d4cdc4000a4000290000a99981a98168008a40042a6466606c605c66e1800920041333004004300100333706004900209800999802002180080199b83300800248010dc100111b99330020014881003001001222533333303a00213232323232323300c0020013371491010128000025333036337100069007099b80483c80400c54ccc0d8cdc4001a410004266e00cdc0241002800690068a9981ba4929576861742061726520796f7520646f696e673f204e6f2049206d65616e2c20736572696f75736c792e001653330390011337149101035b5d2900004133714911035b5f2000375c6076607866601000266074980102415d003303a375266e2922010129000044bd70111981e26103422c20003303c375266601001000466e28dd7180c0009bae30100014bd701bac3037002375a606a0026466ec0dd4181a8009ba730360013754004264a66606e002266e292201027b7d00002133714911037b5f2000375c6072607464646600200200644a6660740022006266446607a98103422c20003303d3752666012012607400466e292201023a2000333009009303b002337146eb8c064004dd71808800a5eb80c0f0004cc008008c0f4004cc0e13010342207d0033038375200497ae03756004264a66606e002266e29221025b5d00002133714911035b5f2000375c6072607466600c00266070980102415d0033038375200497ae0223303a4c0103422c20003303a375266600c00c00466e28dd7180b0009bae300e0014bd701bac002133006375a0040022646466e2922102682700001323330010013006371a00466e292201012700003222533303633710004900008008991919199803003180580299b8b33700004a66607266e2000920141481805206e3371666e000054ccc0e4cdc4000a4028290300a40dc00866e18009202033706002901019b8e004002375c0046e0120012223233001001004225333036001100413300330380013300200230390012232330010010032253330303028001133714910101300000315333030337100029000099b8a489012d003300200233702900000089980299b8400148050cdc599b803370a002900a240c00066002002444a66605a66e2400920001001133300300333708004900a19b8b3370066e140092014481800044cc03c0400045281bae302f302c37540022a6605492014665787065637420566572696669636174696f6e4b657943726564656e7469616c287061796d656e745f63726564656e7469616c29203d206f6c645f646174756d2e6f776e657200163001302b37540424605c605e00266030002046a66666605a00220022a6604c0442c2a6604c0442c2a6604c0442c2a6604c0442c6054604e6ea800454cc0952412765787065637420496e6c696e65446174756d286461746129203d206f75747075745f646174756d00163029302a302a302637546052604c6ea800454cc09124016a65787065637420536f6d65287363726970745f6f757470757429203d0a202020202020202020206c6973742e66696e64286f7574707574732c20666e286f757470757429207b206f75747075742e61646472657373203d3d207363726970745f61646472657373207d2900163300400923375e6008604c6ea8004008c09cc090dd51813981418121baa3027302437540022a660449214365787065637420536f6d65287363726970745f696e70757429203d207472616e73616374696f6e2e66696e645f696e70757428696e707574732c206f75745f726566290016323300300a23375e6006604a6ea8004008c098c08cdd5005918130009119198008008019129998130008a60103d87a8000132325333024300500213007330290024bd70099802002000981500118140009ba54800054cc0792411f657870656374205370656e64286f75745f72656629203d20707572706f7365001637586044603e6ea802c88c8cc00400400c894ccc08c004528099299981019b8f375c604c00400829444cc00c00c004c098004dd618101810981098109810981098108011bac301f001301f301f0023758603a00260326ea8c070008c06cc070004c05cdd50008a4c2a6602a9211856616c696461746f722072657475726e65642066616c73650013656325333013300b00115333017301637540042930a9980a0088b0a9998099804000899299980c0008a9980a8090b099299980c980e00109924c66010002464a66602e601e60326ea80044c94ccc07000454cc064058584c8c94ccc07800454cc06c060584c8c94ccc08000454cc074068584c8c94ccc08800454cc07c070584c8c94ccc09000454cc084078584c8c94ccc09800454cc08c080584c8c94ccc0a000454cc094088584c8c94ccc0a800454cc09c090584c8c94ccc0b000454cc0a4098584c8c94ccc0b800454cc0ac0a0584c94ccc0bcc0c8008526153302c02916325333333033001153302c02916153302c02916153302c029161375a0022a660580522c6060002606000464a6666660620022a6605404e2c2a6605404e2c2a6605404e2c26eb400454cc0a809c58c0b8004c0b8008c94cccccc0bc00454cc0a00945854cc0a00945854cc0a0094584dd68008a998140128b181600098160011929999998168008a998130118b0a998130118b0a998130118b09bad001153302602316302a001302a00232533333302b0011533024021161533024021161533024021161375a0022a660480422c6050002605000464a6666660520022a6604403e2c2a6604403e2c2a6604403e2c26eb400454cc08807c58c098004c098008c94cccccc09c00454cc0800745854cc0800745854cc080074584dd68008a9981000e8b181200098120011929999998128008a9980f00d8b0a9980f00d8b0a9980f00d8b09bad001153301e01b1630220013022002325333333023001153301c01916153301c01916153301c019161375a0022a660380322c6040002604000464a6666660420022a6603402e2c2a6603402e2c2a6603402e2c26eb400454cc06805c58c078004c068dd50008a9980c00a8b299999980f00088008a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b80a0b0a9980b0098b19299999980e8008a9980b0098b0a9980b0098b09bac001153301601316153301601316301a001301637540042a660280222c60286ea80054cccccc064004400454cc04803c5854cc04803c5854cc04803c5854cc04803c58cc004020038894ccc040c020c048dd5001099299980a8008a998090010b09919299980b8008a9980a0020b09919299980c8008a9980b0030b09919299980d8008a9980c0040b09919299980e8008a9980d0050b09919299980f8008a9980e0060b0991929998108008a9980f0070b09929998111812801099191919191924ca6660466036604a6ea80184c94ccc0a000454cc094054584c8c94ccc0a800454cc09c05c584c8c94ccc0b000454cc0a4064584c8c94ccc0b800454cc0ac06c584c94ccc0bcc0c8008526153302c01c163253333330330011325333030302f0011533302c3021302e00114a22a6660586048605c002294054cc0b40745854cc0b407458dd50008a9981600e0b0a9981600e0b0a9981600e0b0a9981600e0b181800098180011929999998188008a9981500d0b0a9981500d0b0a9981500d0b09bad001153302a01a16302e001302e00232533333302f0011533028018161533028018161533028018161375a0022a660500302c6058002605800464a66666605a0022a6604c02c2c2a6604c02c2c2a6604c02c2c26eb400454cc09805858c0a8004c098dd50030a9981200a0b1980a803929999998158008a9981200a0b0a9981200a0b0a9981200a0b09bad00115330240141633014008233018533333302a00110011533023013161533023013161533023013161533023013160135333020301830223754012264a66604a0022a660440242c26464a66604e0022a660480282c26464a6660520022a6604c02c2c26464a6660560022a660500302c26464a66605a0022a660540342c264a66605c6062004264646464931981200300f1981180380e9981080400e19299981598118008a99981798171baa00a149854cc0b00705854ccc0acc08000454ccc0bcc0b8dd50050a4c2a660580382c2a66605666e1d20040011533302f302e37540142930a9981600e0b0a9981600e0b18161baa009153302b01b16325333333032001153302b01b16153302b01b16153302b01b161375a0022a660560362c605e002605e00464a66666606000220022a660520322c2a660520322c2a660520322c2a660520322c605a002605a00464a66666605c00220022a6604e02e2c2a6604e02e2c2a6604e02e2c2a6604e02e2c6056002605600464a66666605800220022a6604a02a2c2a6604a02a2c2a6604a02a2c2a6604a02a2c6052002605200464a66666605400220022a660460262c2a660460262c2a660460262c2a660460262c604e00260466ea802454cc08404458cc04c028040cc04802c03c54cc07c03c58c94cccccc098004400454cc07c03c5854cc07c03c5854cc07c03c5854cc07c03c58c08c004c08c008c94cccccc09000454cc0740345854cc074034584dd60008a9980e8068b0a9980e8068b181080098108011929999998110008a9980d8058b0a9980d8058b09bac001153301b00b16153301b00b16301f001301f0023253333330200011001153301900916153301900916153301900916153301900916301d001301d00232533333301e0011001153301700716153301700716153301700716153301700716301b001301b00232533333301c00110011533015005161533015005161533015005161533015005163019001301900232533333301a00113253330173016001153330133008301500114a22a6660266016602a002294054cc0500105854cc05001058dd50008a998098018b0a998098018b0a998098018b0a998098018b180b80098099baa00215330110011622323300100100322533301500114984c8cc00c00cc064008c00cc05c00488c94ccc03cc01c0044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54ccc03cc0100044c94ccc05000454cc04400c584c94ccc054c0600085261533012004163253333330190011533012004161533012004161533012004161533012004161375c002602c00260246ea800c54cc04000858c040dd50011b8748008894ccc030c010c038dd500109929998088008a998070010b0991929998098008a998080020b099299980a180b80109924ca666020601060246ea800c4c94ccc05400454cc048018584c8c94ccc05c00454cc050020584c8c94ccc06400454cc058028584c94ccc068c074008526153301700b1632533333301e001153301700b16153301700b16153301700b161375a0022a6602e0162c6036002603600464a6666660380022a6602a0122c2a6602a0122c2a6602a0122c26eb400454cc05402458c064004c064008c94cccccc06800454cc04c01c5854cc04c01c5854cc04c01c584dd68008a998098038b180b80098099baa0031533011005161533011005163253333330180011533011005161533011005161533011005161375a0022a6602200a2c602a002602a00464a66666602c00220022a6601e0062c2a6601e0062c2a6601e0062c2a6601e0062c6026002601e6ea800854cc03400458894ccc02cc00cc034dd500109929998080008a998068010b0991929998090008a998078020b09919299980a0008a998088030b099299980a980c0010a4c2a6602400e2c64a6666660320022a6602400e2c2a6602400e2c2a6602400e2c26eb400454cc04801c58c058004c058008c94cccccc05c00454cc0400145854cc0400145854cc040014584dd68008a998080028b180a000980a00119299999980a8008a998070018b0a998070018b0a998070018b09bad001153300e003163012001300e37540042a660180022c6e1d2000533333300f0011001153300800616153300800616153300800616153300800616375a00292121657870656374206e65775f646174756d3a2047616d6544617461203d20646174610049011272656465656d65723a2052656465656d6572004901136f6c645f646174756d3a2047616d6544617461005734ae7155ceaab9e5573eae815d0aba25748981051a00da33600001", "description": "", "type": "PlutusScriptV2"}, "scriptLanguage": "PlutusScriptLanguage PlutusScriptV2"}, "value": {}}
},
"newLocalTxs": [
    {
        "cborHex": "84a7008182582054abc2a6339ca21650580d7064adf0a67501f38c1f9534609244a7e965e7f309000181a300581d70a13963d82720b0b0c5de3ae7a9a642fe834190dd5584a405f6f871f6018200a0028201d818587ad8799fd87980d8799f581ca2d5d8d1d4cb36081bd1f1f29894c42ece33d0cab2381dfc5a6a5b30ffd8799f581cf8a68cd18e59a6ace848155a0e967af64f4d00cf8acee8adc95a6b0dffd8799fd87980d8799fd8799f000000ff1864ffd8799f000000ffd8799f000000ff00ff8080d8799f202020d87980ffff02000b5820993831c9a42957736d89da26ab56c91b55be11a9ae9616394ec711ff67ca0de00d818258201e6543a8e1e471b99820930ac218df030d76e75f11cc2155c3335a79b58cef19010e81581ca2d5d8d1d4cb36081bd1f1f29894c42ece33d0cab2381dfc5a6a5b301281825820f8b5b4eebc36c30d0bc1ce9855ceeb3495914e4de080b659d540f1882807fec200a20081825820d27fed380fdfd253e39594b7a37d217b2dbf749b86c1eb3b8ee34d29bc0fc39758407bd20f3ecfdd3a402648a0e303db631229d159466c1050de603c73bcbc52a3039ae4c58d43c04527bc46f169f2335ed094701e14672f21b516129946f92846080581840000d87a9f9fd8799f18320038ff00010000000000ffffff821a00d59f801b00000002540be400f5f6",
        "description": "",
        "txId": "8297f936753fe330b661d7cd37907f292c75fe4319e0661a0408eb6954b9eafe",
        "type": "Witnessed Tx BabbageEra"
    }
],

which is notably missing 3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb#0 and 3223df5097b97a628f014a99faa8eb52d6081db1f89b50d8177756fa68c87fdb respectively!

This can happen if the pending localTxs are applied in wrong sequence to the local utxo state, especially as we are swallowing any validation errors in th pruneTransactions function in Hydra.HeadLogic.


  • CHANGELOG updated
  • Documentation update not needed
  • Haddocks update not needed
  • No new TODOs introduced

Copy link

github-actions bot commented Aug 12, 2024

Transaction costs

Sizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using arbitrary values and results are not fully deterministic and comparable to previous runs.

Metadata
Generated at 2024-08-15 16:19:16.846805438 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial 2fac819a1f4f14e29639d1414220d2a18b6abd6b8e444d88d0dda8ff 3799
νCommit 2043a9f1a685bcf491413a5f139ee42e335157c8c6bc8d9e4018669d 1743
νHead bd9fad235c871fb7f837c767593018a84be3083ff80f9dab5f1c55f9 10194
μHead c8038945816586c4d38926ee63bba67821eb863794220ebbd0bf79ee* 4607
  • The minting policy hash is only usable for comparison. As the script is parameterized, the actual script is unique per head.

Init transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 5190 5.81 2.30 0.44
2 5387 7.13 2.82 0.47
3 5590 8.59 3.40 0.49
5 5995 11.32 4.48 0.54
10 6996 18.02 7.12 0.66
56 16244 81.53 32.25 1.76

Commit transaction costs

This uses ada-only outputs for better comparability.

UTxO Tx size % max Mem % max CPU Min fee ₳
1 556 10.52 4.15 0.29
2 745 13.86 5.65 0.34
3 933 17.33 7.20 0.38
5 1313 24.65 10.44 0.48
10 2248 45.22 19.36 0.75
20 4125 95.99 40.76 1.40

CollectCom transaction costs

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 57 549 22.14 8.66 0.42
2 114 659 33.03 13.08 0.54
3 170 769 45.15 18.08 0.68
4 228 879 58.49 23.65 0.83
5 284 989 75.61 30.75 1.03
6 337 1100 98.45 40.06 1.28

Cost of Decrement Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 626 17.71 7.79 0.38
2 759 19.11 9.07 0.40
3 976 21.67 10.78 0.45
5 1182 22.80 12.64 0.48
10 2098 33.30 20.31 0.66
47 7603 96.83 72.05 1.79

Close transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 634 20.98 9.39 0.42
2 787 22.49 10.82 0.44
3 933 23.92 12.21 0.47
5 1244 27.08 15.28 0.53
10 2077 35.91 23.58 0.70
50 7919 98.54 83.35 1.90

Contest transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 662 27.16 11.67 0.48
2 805 28.94 13.18 0.51
3 936 30.66 14.67 0.54
5 1329 35.03 18.39 0.62
10 2038 43.89 26.13 0.78
38 6454 97.81 72.58 1.75

Abort transaction costs

There is some variation due to the random mixture of initial and already committed outputs.

Parties Tx size % max Mem % max CPU Min fee ₳
1 5060 17.40 7.57 0.57
2 5176 28.47 12.47 0.70
3 5376 42.54 18.84 0.87
4 5358 55.52 24.49 1.01
5 5479 72.65 32.15 1.21
6 5664 90.72 40.25 1.42

FanOut transaction costs

Involves spending head output and burning head tokens. Uses ada-only UTxO for better comparability.

Parties UTxO UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
5 0 0 5022 7.75 3.28 0.46
5 1 57 5056 9.08 4.08 0.48
5 5 284 5192 13.41 6.84 0.54
5 10 570 5362 19.06 10.39 0.62
5 20 1134 5696 30.19 17.43 0.77
5 30 1708 6042 41.70 24.63 0.93
5 40 2279 6384 53.23 31.84 1.09
5 50 2846 6721 64.56 38.97 1.25
5 81 4611 7772 99.73 61.10 1.74

End-to-end benchmark results

This page is intended to collect the latest end-to-end benchmark results produced by Hydra's continuous integration (CI) system from the latest master code.

Please note that these results are approximate as they are currently produced from limited cloud VMs and not controlled hardware. Rather than focusing on the absolute results, the emphasis should be on relative results, such as how the timings for a scenario evolve as the code changes.

Generated at 2024-08-15 16:21:36.359856432 UTC

Baseline Scenario

Number of nodes 1
Number of txs 3000
Avg. Confirmation Time (ms) 4.127247796
P99 7.150475669999984ms
P95 5.024426099999995ms
P50 3.9332425ms
Number of Invalid txs 0

Three local nodes

Number of nodes 3
Number of txs 9000
Avg. Confirmation Time (ms) 23.531029503
P99 116.73508501000002ms
P95 32.838504549999996ms
P50 20.6449925ms
Number of Invalid txs 0

Copy link

github-actions bot commented Aug 12, 2024

Test Results

469 tests  +1   462 ✅ +1   19m 41s ⏱️ + 2m 17s
150 suites +1     7 💤 ±0 
  5 files   ±0     0 ❌ ±0 

Results for commit 419fe95. ± Comparison against base commit e0cc2c1.

This pull request removes 1 and adds 2 tests. Note that renamed tests count towards both.
Hydra.HeadLogic/Coordinated Head Protocol ‑ waits if we receive a snapshot with transaction not applicable on previous snapshot
Hydra.HeadLogic/Coordinated Head Protocol ‑ rejects snapshot request with transaction not applicable to previous snapshot
Hydra.HeadLogic/Coordinated Head Protocol/ReqSn ‑ prunes local txs in order

♻️ This comment has been updated with latest results.

@ch1bo ch1bo self-assigned this Aug 12, 2024
@ch1bo ch1bo reopened this Aug 12, 2024
@ch1bo ch1bo added the bug 🐛 Something isn't working label Aug 13, 2024
@ch1bo ch1bo force-pushed the fix-reqsn-tx-prune branch from 1b0111f to b273e2a Compare August 14, 2024 13:19
@ch1bo ch1bo requested a review from a team August 14, 2024 13:36
@ch1bo ch1bo removed their assignment Aug 14, 2024
@noonio
Copy link
Contributor

noonio commented Aug 15, 2024

I think I get what is happened here, at least partly, and it seems fine for the solution to be foldl (maybe the comment should say foldl is required instead of foldr here; the commit shows this context but the comment alone doesn't) instead of foldr ; but I wonder if there's something ever so slightly more explicit, and explicitly order localTxs first, so it doesn't depend on details of how that list is built up?

@ch1bo
Copy link
Member Author

ch1bo commented Aug 15, 2024

I think I get what is happened here, at least partly, and it seems fine for the solution to be foldl (maybe the comment should say foldl is required instead of foldr here; the commit shows this context but the comment alone doesn't) instead of foldr ; but I wonder if there's something ever so slightly more explicit, and explicitly order localTxs first, so it doesn't depend on details of how that list is built up?

Thanks. I'll try to improve the comment on the code. Regarding ordering localTxs: A topological order would be doable, but the way the localTxs are updated, that is only after applying it to the local seen ledger localUTxO, it must be a valid order always. The pruning then only re-validates it. Also, sorting would kill performance here.

@noonio
Copy link
Contributor

noonio commented Aug 15, 2024

Also, sorting would kill performance here.

Fine.

I was hoping it would be possible to have some kind of type-error that would align the requirement of a <> [b] and foldl, but I'm okay if it's a bit too much to ask for at the moment; and fair enough if we don't want to always sort.

@ch1bo ch1bo force-pushed the fix-reqsn-tx-prune branch 2 times, most recently from 39852b4 to 42f4ff1 Compare August 15, 2024 16:11
ch1bo added 2 commits August 15, 2024 18:13
Before, the node would re-apply local transactions in the wrong order
which would throw away local state even though the transaction would
still apply.
@ch1bo ch1bo force-pushed the fix-reqsn-tx-prune branch from 42f4ff1 to 40580fd Compare August 15, 2024 16:13
@ch1bo ch1bo enabled auto-merge August 15, 2024 16:18
@ch1bo ch1bo merged commit 3b4c803 into master Aug 15, 2024
18 of 19 checks passed
@ch1bo ch1bo deleted the fix-reqsn-tx-prune branch August 15, 2024 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐛 Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants