cardano-scaling / hydra

Implementation of the Hydra Head protocol
https://hydra.family/head-protocol/
Apache License 2.0
274 stars 84 forks source link

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

Closed ch1bo closed 4 weeks ago

ch1bo commented 1 month ago

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

Hypothesis:

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

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.


github-actions[bot] commented 1 month ago

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
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
github-actions[bot] commented 1 month ago

Test Results

469 tests  +1   462 :white_check_mark: +1   19m 41s :stopwatch: + 2m 17s 150 suites +1     7 :zzz: ±0    5 files   ±0     0 :x: ±0 

Results for commit 419fe95b. ± Comparison against base commit e0cc2c13.

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 ```

:recycle: This comment has been updated with latest results.

noonio commented 4 weeks ago

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 commented 4 weeks ago

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 commented 4 weeks ago

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.