diff --git a/ledger/babbage/block_test.go b/ledger/babbage/block_test.go index d99a5b56..5535863b 100644 --- a/ledger/babbage/block_test.go +++ b/ledger/babbage/block_test.go @@ -1,10 +1,26 @@ +// Copyright 2025 Blink Labs Software +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package babbage_test import ( "bytes" "encoding/hex" + "strings" "testing" + "github.com/blinklabs-io/gouroboros/cbor" "github.com/blinklabs-io/gouroboros/ledger/babbage" ) @@ -14,7 +30,67 @@ import ( //hash:db19fcfaba30607e363113b0a13616e6a9da5aa48b86ec2c033786f0a2e13f7d var babbageBlockHex = "85828a1a0079c8a71a048acbb8582062304d8672d2f7cede894d32f48e8ae06b589d58bccdbec5a042e97f89e1e8905820c28264eedc90b7bc299b6c8ff675e583327f7ad5e00bcb95c525c093e68436ad58209a117213fbb51458275c9d9316780057ca9f8ea4004452a26c55201d94ce213782584083bbe54c131e0154efc7861611d29331d56ce588cab57c76507cc5e5aeba4241583161a2ec4fd5c99b9316e01941dee01cf0bbcf5bf018fdfc1433dcbdc734aa585085fbb0c776a83c54e840c42942beddeb22674c193dd942c50ad1ea64acf5480096a68085722273413d98ceff0e1b5bba13db0a34227042e8b5bac6a4903931df25d889632bc5d949c94f4e7fa6d4a20d1942bb5820e138830408d117043754ade30b35f0ef98c74f78f77d28067aae744d9fe01e3c84582001e39b5d1da225105cabeb15a076a5040229639d802cc2ca2de267b2c28f71500819021e5840596a50ae6e40675f7c25b3fa48bbd410c75825326f25a72fb3549c83ef4e20a0940ff826076edd47b0191570e74028bcf2753aba674f953f718b7e239389cb0d8207005901c039ae63b2479c9e8c65bb8cd887b826351073b601b91cd646d2e8b66c7757c94e060d14813587a95bbe154183298ec60c1145608472162a20de2718acd6fd0c01d31754e8b537813d7bb2bdcf0789099963f4ebf1239b6c5555814123eaa882ce1f8363895fdedd1ba48e7806ccafbdecf50d5e4149d46bdd8dce5edfe61270799440ca36b4d365d38b911910923fa00c715c309fd0a6d7d6a0320741a451657575b741e451e271c886ba46b4cb308067fbb994c99e30a15efae167d3726b6d9a85377b0568655346d0f20be9cdae14ce98b82c5ac0573a901aa3291f7f1e58ae89592da9a4564d326563e54f510eaa0a6f2e265b3bc64fa8bcfaedea86c1dcd2c25a6db0fd7c1770c7cdde18d5a56b4bdc24915203a21be03c6a9f01f3d34b75f6b37260d5325feda1e8de5d8c38948f7a01b85aed6c01e58e12414d1ba66bd47860abfd4a5d6a5cda48aeb2c1c93ce4c2daf29af3af8a8d67b95533f9dac1f3597a1263a277eff95cecbcf2a8c5b8f187a6b46478a1d0ba42b23b4b4d95a9d60c9c0a2ef515d1544117916d1466b0c26e9e373799e2c5a288c1deba7b850d6bfdd42621e2a9e6c19e822714fa72af251a5383af3f03aa0f58701b2ec0f4f0c08ea40084825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e02825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e03825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e04825820db73666a95f672028c92fcfb8e59c17ea0bf585778f55cf89a365db520a10bdd01018483581d71a65ca58a4e9c755fa830173d2a5caed458ac0c73f97db7faae2e7e3b1a819bde1858205ad3e0713e3b1b1e789e8da37bfa679cda9cef2346f0a1b71fdacd3b2910a82f825839013a28cdd189cc574938c0b19160d12c4bb6544c6bde7fe67685dbba6a650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d821a001e8480a1581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1b0000000ba43b740082583901223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d1ab0a1553482583901b816fab02229f7f4e80523b3ccb6548d619170f0861dbb0e7dd32d43650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d821a003dedc2a1581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1b0000000e2e2b342f021a0003330d0b5820912df7bc22c1f7bfd23930a72695416d059609ad4de9e2cd4a3e30818f6e09fda70081825820610a374a41a14261b0b4a0b6526341afaee728e42ac81f83fd3301829bc42d5c010182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a00150b80a1581c702cbdb06a81ef2fa4f85f9e32159c03f502539d762a71194fc11eb3a15819416476656e74757265724f665468696f6c64656e3133363734015820f6c87da37e98ee4196f241a03f5141003040d3036518294df63a68c82cbd91ad82583901d24caba5d7c0211a276823f337c582150e57000aa3172ecb682d6b76035559f36857c99ae41471b68df4b054899396e46ab7837e04ab69b8821a01c4b3a1a4581c702cbdb06a81ef2fa4f85f9e32159c03f502539d762a71194fc11eb3b83957416476656e74757265724f665468696f6c64656e383638015818416476656e74757265724f665468696f6c64656e32313634015818416476656e74757265724f665468696f6c64656e32353132015818416476656e74757265724f665468696f6c64656e33343437015818416476656e74757265724f665468696f6c64656e33363735015818416476656e74757265724f665468696f6c64656e34303834015818416476656e74757265724f665468696f6c64656e34363636015818416476656e74757265724f665468696f6c64656e35383636015818416476656e74757265724f665468696f6c64656e37313330015818416476656e74757265724f665468696f6c64656e37323335015818416476656e74757265724f665468696f6c64656e38303034015818416476656e74757265724f665468696f6c64656e38313835015818416476656e74757265724f665468696f6c64656e38333831015819416476656e74757265724f665468696f6c64656e3130353433015819416476656e74757265724f665468696f6c64656e3130363438015819416476656e74757265724f665468696f6c64656e3130363732015819416476656e74757265724f665468696f6c64656e3131383436015819416476656e74757265724f665468696f6c64656e3132303038015819416476656e74757265724f665468696f6c64656e3132323934015819416476656e74757265724f665468696f6c64656e3132333232015819416476656e74757265724f665468696f6c64656e3132393238015819416476656e74757265724f665468696f6c64656e3133303234015819416476656e74757265724f665468696f6c64656e3133343132015819416476656e74757265724f665468696f6c64656e3134323933015819416476656e74757265724f665468696f6c64656e3134383235015819416476656e74757265724f665468696f6c64656e3135313233015819416476656e74757265724f665468696f6c64656e3135383235015819416476656e74757265724f665468696f6c64656e3135393135015819416476656e74757265724f665468696f6c64656e3136303438015819416476656e74757265724f665468696f6c64656e3136343833015819416476656e74757265724f665468696f6c64656e3136353835015819416476656e74757265724f665468696f6c64656e3136363730015819416476656e74757265724f665468696f6c64656e3136373435015819416476656e74757265724f665468696f6c64656e3136383134015819416476656e74757265724f665468696f6c64656e3136393234015819416476656e74757265724f665468696f6c64656e3137323538015819416476656e74757265724f665468696f6c64656e3137333935015819416476656e74757265724f665468696f6c64656e3137343235015819416476656e74757265724f665468696f6c64656e3137353234015819416476656e74757265724f665468696f6c64656e3137373537015819416476656e74757265724f665468696f6c64656e3137383735015819416476656e74757265724f665468696f6c64656e3138333333015819416476656e74757265724f665468696f6c64656e3138363432015819416476656e74757265724f665468696f6c64656e3138393335015819416476656e74757265724f665468696f6c64656e3139323738015819416476656e74757265724f665468696f6c64656e3230303636015819416476656e74757265724f665468696f6c64656e3230333632015819416476656e74757265724f665468696f6c64656e3230353036015819416476656e74757265724f665468696f6c64656e3230393832015819416476656e74757265724f665468696f6c64656e3232383237015819416476656e74757265724f665468696f6c64656e3233313036015819416476656e74757265724f665468696f6c64656e3233383333015819416476656e74757265724f665468696f6c64656e3234303130015819416476656e74757265724f665468696f6c64656e3234313430015819416476656e74757265724f665468696f6c64656e3234313738015819416476656e74757265724f665468696f6c64656e3234353632015819416476656e74757265724f665468696f6c64656e323436373301581c95d9a98c2f7999a3d5e0f4d795cb1333837c09eb0f24835cd2ce954cb258184772616e646d6173746572416476656e74757265723434370158184772616e646d6173746572416476656e74757265723732310158194772616e646d6173746572416476656e7475726572323330380158194772616e646d6173746572416476656e7475726572323334330158194772616e646d6173746572416476656e7475726572323431320158194772616e646d6173746572416476656e7475726572323638310158194772616e646d6173746572416476656e7475726572323734300158194772616e646d6173746572416476656e7475726572333133310158194772616e646d6173746572416476656e7475726572333437360158194772616e646d6173746572416476656e7475726572343237370158194772616e646d6173746572416476656e7475726572353534380158194772616e646d6173746572416476656e7475726572363035300158194772616e646d6173746572416476656e7475726572363237340158194772616e646d6173746572416476656e7475726572363733310158194772616e646d6173746572416476656e7475726572363831300158194772616e646d6173746572416476656e7475726572373036350158194772616e646d6173746572416476656e7475726572383637360158194772616e646d6173746572416476656e74757265723836383101581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14c647261676f6e77616c6c657401581cf4988f549728dc76b58d7677849443caf6e5385dc67e6c25f6aa901ea44a506978656c54696c6531014b506978656c54696c653432024b506978656c54696c653537014b506978656c54696c65353801021a0004ad01031a048ad587075820edba043597fd64b8cf24db36d4fedc81ea6638fb0071af61c0d49a3034bfddb4081a048acafb0e81581cd24caba5d7c0211a276823f337c582150e57000aa3172ecb682d6b76a40081825820d9ad2a3f32db78fcbb392a205a363194376f50add9e09a58246c5bf9647c445d02018283581d71ba158766c1bae60e2117ee8987621441fac66a5e0fb9c7aca58cf20a1a1daade8958208561a991a09051589d8c8399c2d5cb2c89d2f1c8beea7f8da8a9bd9cf3cb584482583901206a54629f155d28a5db2cfd7f337b852cfcc1c4c52e8681282eb4e6650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d1ad8d6586c021a0002b1a10b5820ea824d166eaee5f622181e2eb41beaed21183f5b91d4cf2527025b3743ebcbddaa00828258205aa66d833962fdc02ade26e4ea42756062e6c6140fa98d12ba15de09877b3453038258206b9697665132a2f949fd97f6e937b85f12bf03eb1f75cb777eb990b8c0dc09b7000182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0013ed4aa1581c2a04f5c8bc3d3aab127092181750eefb3a8c7363d5190e2b77445d96a1494465656431333639390158202b1b19cb5c16e08bf5ea9eb6af55eecbe3257bb3bae9d897ea2360aaba9880d78258390186a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b405432f9b6fc9b2ea7dbf540f1b8cf86cd59c15dc84f0cb8d9da7c2f3381a0309f36c021a00048932031a048ad587075820b4b3d23f1d036bb0abe5ba12a6951b07df66ee36c7abeaac35a5aa43b9fe125d081a048acafb0b582086b6b6c397365c1b6b1bbf726a7e458609c38e9a3655d6bbd5d6d067ec77294d0d8182582083953dd59fa255b986419d56e9f3c61a8fe9c08cef8ea932de6a8bc18dda621b000e81581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b40512818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a40082825820ad5f8e5de5438d4db9b0c770aca35858267de3474ca1c5fdb7f6db2d9bb2806a0282582027e48d0108615bd7bbd1b571b7465dc1035be0df619a504902e486cf4246ae0e01018282583901cfabb98e9a371aaa24337ce37696d97e911e517657a96cbd0d2366a501b0d96ad6d361d1766e4cb26ad274a3353526ef58263bc777d7f7671a05f5e10082583901036e735ee499824b87baee5e2789ef7d47afd81e36fe816f9d4e902fc6be284cb693b5105972d96836513ca205c3e3e6303202c77b7fcfb01a09855e28021a000297ad031a048b1f5ba4008182582065bcedd143b5642919ccab3083e54d1fa64b74cf477d0735d5c212807f4d391901018282581d6131ec74a9f86884e7a16f8fc30840f7f409c08b91e93d2be3a43774421a004c4b4082583901cf8c0a037ecee4657bc953058412acedd978cfbe96b0b07e948e6c5d1504fa2622d7fb4281d233b00400732137312a63f701c76f16fa4df51a04c43477021a00028cad031a048af5d0a50081825820438e038d985fe9b570b4da715e7cb45a8fc6937a2cc7108022186c814358d949010182a200581d6124d274bfd913b241a8cca20c6977775718fddb8f3763f1d365c85445011a001e8480a2005839010e2f66bc953ab54f124150d389e77e512a4732be749e1fc17d0616c74a52cfb4899e29a8f46c27ffbcaab3a5cfaede5de53c90b1693269db011ab36ba898021a0002a885031a048ae7c705a1581de14a52cfb4899e29a8f46c27ffbcaab3a5cfaede5de53c90b1693269db1a1aa449e3a400838258202f598d9c36aecd1989b96a79391eaeab807dd943e0e2120b90f2d55599410315018258204c65fe251508c0541e47c0344118fc5a660467db9d201d68eee918ca058df92e018258206ae4955a08774d408a016a39c61629b03cf97384cbff5129332eedf31aa6beed04018282581d61aaaee3c027ea14f958d0c8145226620f6548c1739636510500ff60fa1a0d693a4082583901de2df9808b7fb0b42278a0ef80800ecbdcaba9805dbb4f466d84347c5f23a3349b6923cee1fa6414e9cf29cc29fa54924680dc4d4ff9f93b1a01ed9e5e021a0002990d031a048af5d2aa0082825820121f9e0f7c6182bcf638be8d6ae79bae0ae8873b6f6da420726b3a19a9365dc9028258203f968c86a9e249f5d97f9381dcc123e353eff0c923a1facbfbf0095e2cef5224000182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0014a67ca1581c13e3f9964fe386930ec178d12a43c96a7f5841270c2146fc509a9f3ea154436c61794e6174696f6e50697463683138363735015820b678cc8c0f77c5d36d119a42c449ba8cff4101ae751f33acc3bf01ade5922e5982583901709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090de74a327674876a8ca2981170c1acbc8952c825c6e02e3b21c026af061a01dba8c6021a00049c72031a048ad5870758204ce3f7839707168434bac87e365e308029485a136a29a5bff86249b9a1451b13081a048acafb0b58205189e62c285ae72c513ec09ea72d685fc5dbb3b2a17c42b8aa70fa2e06fe87f00d81825820fe8c06c2a995c0faa3b728f64e5f55e12faf5d6cf97a7213ec59571f4e35e75a040e81581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090d12818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00aa00838258202d853757111193d5d6807259623d725616fcc79e40065d60297df2eb1810b9150282582089735f61c491b1b4a190ae34ce8feeb0ebb59163e3e2d505535cfbb9b503bde000825820d8a47e1c3d5c3db6e4c6380cbcc99f4d0af290a278da835cd51cc2928b04e633050182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0013fe20a1581c062b1da3d344c1e6208ef908b2d308201e7ff6bcfddf0f606249817fa14a4f52454d4f4239383533015820efd5e998245eaf355779df42c9fe901fe84aa0abf87ecfd235cfdb8d530a2bb7825839015b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b0086f85b63375562f9119792fd4ee1ddfc09063d9591705c5110b7e615821a004a6c8cab581c062b1da3d344c1e6208ef908b2d308201e7ff6bcfddf0f606249817fb14a4f52454d4f4235333935014a4f52454d4f4235363737014a4f52454d4f4236343132014a4f52454d4f4236353533014a4f52454d4f4236363637014a4f52454d4f4236373439014a4f52454d4f4236383132014a4f52454d4f4236383134014a4f52454d4f4236393833014a4f52454d4f4237303231014a4f52454d4f4237303934014a4f52454d4f4237313930014a4f52454d4f4237323534014a4f52454d4f4237323537014a4f52454d4f4237363332014a4f52454d4f4238313638014a4f52454d4f423833323001581c14a3455f71c435a04ea1fdb50a3ef4c1cab0e79fb1565627ac66a575a144524156451a0003ff97581c86ec26a91051e4d42df00b023202e177a0027dca4294a20a0326a116a24e617175616661726d657231363030014e617175616661726d65723234353901581cdca54ecf37b0e3af2fdfd336e1d21fadcc45b3261b0f73a095631dfea144444f45581864581ce25f63ead710e65dfe69fbbb9945df9b2eb06b4694e765743ea71d43a34d4368616d616c69656e32333831014d4368616d616c69656e32373338014d4368616d616c69656e3431363601581ce2ed73b580344b69642683be7e807de1221462174c806d25164f72c4a14f4143524f4e594d4c4c414d4130323301581ce4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d86a15820b949e41cc27351bd18d8f4a42409175152ab966838ea0576dd5b396278fb6b701a000fd6eb581cee9c9c1568de2c9c00a7b0bd862a5ab96f488c8c731519178dca121ca147446567656e323001581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa5446d7974680145616e696d65014563726f737301487365637265746871014a6161726f6e63726f737301581cf2fe9aafd2e5b3b00e2949a96d44a84d9f4d818d63945010a466a4aea14541554449541864581cf43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc535a144414749581b000000746a528800021a0005f0f8031a048ad5870758203f2c7f19c7d18f8e7ee7d03ca15eb1206ff3142864de5ce3ba5bf671012754bd081a048acafb0b5820312456cd3e7d6017f86007585a7672a120c6fa88f0d3348e93a73b9cfe935f1e0d81825820f81bf292d60d614e796f5ebd5c843490a30ee56a34f1fe7b145a6fca36bd2e7c030e81581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b0012818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a40082825820a6645a4e7dce33c28681a30c35ef38f46cb6067831e3376d6b79286bb86e5fad03825820c86bcdb2fe925009e52a44fd66faaa5a9083b6c02e1c8f953ca4bfe242b7d7a50001858258390120e41a6a85074ed4882c33f527eeda67939aded16fb204b7e4f8ffe396d5e0a2ec705777e76ffb4d15c5beba712ce5aa5f6af1305a83b375821a00989680a1581c372b988d54c5ae6468daf62a72d24837495ea92dc0a6e57f9e518101a14a48616c69656e343631300182583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0647064482583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0324e39982583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0324e39982583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a004c4b40021a0002c0ed031a048af5b6a5008282582014082fa60b6b2013f13014bbb24a4e847d0a7d00a736f4270d8dce10797568340082582014082fa60b6b2013f13014bbb24a4e847d0a7d00a736f4270d8dce1079756834010182825839014b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac24b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a000f4240825839014b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac24b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a022cc260021a0003917e031a05f5e10005a1581de14b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a001df2e6a900828258205477eec55b285bda9ce39cfaa9517143b3b332c6890db73d1b9df2f06956387c008258205477eec55b285bda9ce39cfaa9517143b3b332c6890db73d1b9df2f06956387c01018282583901ed95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9a5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900fe1a03473bc082583901ed95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9a5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900fe1a04f1c21a021a0003f9a9031a048ad587081a048acafb0b5820abaee9e437b93b02f9f1db924f5f49e8f7d6e50ee3ec747947defcc2d0955aaa0d8182582059f121845027638f775d5e154cd1cb1f99c49037765f2b070a342f1a7e2de056000e81581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e912818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a70082825820dbd42a658a7d0d24e7b34e09f839d47673869860d2bdb9ffe6d0359c51d42b8d01825820dbd42a658a7d0d24e7b34e09f839d47673869860d2bdb9ffe6d0359c51d42b8d020182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a001495a6a1581c988e147ccf378c24315bc68e72441059713e1667f3850b31aecf38d0a153526164696f61637469766559657469313936360158202674a98b9031549fc641b37b4688fb4fc902b7d2e0cff7b88681ddb1c241b18482583901b6290a826eecff64ce3a47e0dba5a9ece0f9fb6e66531521df8ab7be420a097f57b7f992bbb57672ba2b907cbb010b4444ecc16b197d918e821a0147ef12b6581c07f019ce45fb638353258bda4316ce5eb3d0f76a3fb739c451740849a14553414c54591b00000001cf8b9a40581c141b1e54e3cef46e357102e811c9d0d72ff3b0a0b6e93f3bbc382306a74e47656e746c656d616e2031353734014e47656e746c656d616e2032353836014e47656e746c656d616e2034333531014e47656e746c656d616e2034383133014e47656e746c656d616e2036323231014e47656e746c656d616e2036323433014e47656e746c656d616e203632353301581c1f9c0c14d211117b82a61602f98f18274bc5086ad1231614715923d0a14c5068616e746f6d4b6579343001581c258945167d9e2d6a56997e2763ab2e73002d05ddae39989939ecae39a2475754443133393301475754443331383001581c3f75c1332868430e28e156f6309836de8df19b620ab604c166741836a1505468654d616e6472696c6c7a3736323301581c5329a9b87459e1df8e86ce56bae4b3770862c0969011e6faf474b65fa1544169726d616e4a61676765724861756b6c616e6401581c5a2cdc6e3aa9612fe4676672f443e7efd39c309d45e7919a4bf27750a1581c426f7373506c616e657444697374726963745468726565313337393501581c705c14c3e8364ffd602ac954f6955b106fdf058e233c72e3aa2b088fa44f53706163654f747465723030383535014f53706163654f747465723032363639014f53706163654f747465723033353636014f53706163654f74746572303336363301581c76d51276ff5d4616fa87fe5e398f09110e9f085a26b44f07130b57a9a24e46616c736549646f6c7330303139014e46616c736549646f6c733031313601581c7b302af5758319058e3a282c424bf19adda9481372cf6e45fd33d0aaa14d54686541706544616f3132313101581c7b957fa45d75fed7b534df39f4f0686af890589697662f0b8a9602f6a1494c6f6d696e3130353601581c86b116d8cfd880445825208b4a355b7715b63763d6d8f3d37338d211a147657465726e616c190243581c8eb261bd0b2afee56783022059967d9ca1de66bfaf98ce215f7d8a35a34d4164616c616e74697333323830014d4164616c616e74697333353339014d4164616c616e7469733938303601581c988e147ccf378c24315bc68e72441059713e1667f3850b31aecf38d0a153526164696f616374697665596574693132383301581ca8c68ff1e130c79cd0cad73357670b3b4fd11a0708319a99be14e860a154426f7373506c616e6574566f784361743232303901581cb70962ff89093b9bdfda0883f10c8cea59bd1b908a5f184e375fb947a14d4375727365644974656d32333401581cdf44bef5a988e0b135145c505d734130f545dc959e764ac14c9ce983a4581a576f726c646f6643617264616e6f50617263656c30303136373801581a576f726c646f6643617264616e6f50617263656c30303436373001581a576f726c646f6643617264616e6f50617263656c30303539383001581a576f726c646f6643617264616e6f50617263656c30303637353201581ce25f63ead710e65dfe69fbbb9945df9b2eb06b4694e765743ea71d43a34c4368616d616c69656e313137014c4368616d616c69656e313731014d4368616d616c69656e3337353301581ce614d5074d8a879a8dc9b7d0da77114913245e055c2faa9be042a156ae4e446561646c7953696e2023313734014e446561646c7953696e2023343234014e446561646c7953696e2023343339014f446561646c7953696e202332313832014f446561646c7953696e202332323237014f446561646c7953696e202332363835014f446561646c7953696e202332373038014f446561646c7953696e202333343932014f446561646c7953696e202334323431014f446561646c7953696e202335303439014f446561646c7953696e202335333337014f446561646c7953696e202335343035014f446561646c7953696e202336323732014f446561646c7953696e20233634383001581ce78c8f1b194a38b783b1fbf56f7aba05c4b10ae13d8ce746c041366aa14c5468655068616e746f6d333401581ceaa972045049185981aca9f4aaad38bc307776c593e4a849d3802a87a14d536d6f6f74685965746934303001581cfae630fc793b5bb14735616b6f28cfae6d81a82ec05ecca98da3aedca1435441441910ad021a00043b39031a048ad58707582004fdd739bdba00b1e6b8c8d69bca76bc12db809e1f02a554cf76a0288ef85013081a048acafb0e81581cb6290a826eecff64ce3a47e0dba5a9ece0f9fb6e66531521df8ab7be8ea200848258205360587752a1225859aef8250cc9b4535bada5a9fc070300bad6b1afbb502241584028ed06d9fe5569b775f9f2c0c9ea5ddb6443a6e48f4dc247114606965ab1ed8321586c728eadc44a7c96f52be0ec3ae70fdf5f4f837e35c1029958c67406370682582089f130033c3f167baebd55184cfc8b6b3e064fa2ec6fa1fb6dda5c5dfa05986958408b88d8a9cb51813892bea49d1f896e788d32a0f1d136ee66d684ad8267467434a928150da152127791752cf217135049121f7c44fa8c1529ddac2fc9f5f4310f8258206e5a25761aefd9f365fb807356fa2103e2447fc83758535db2fc854dfbddf0565840f229e2ab396cae6281097cc86e584a4015556eafa588a76b678c83ae6c3c6c2de666a8e1282545e37a8f1a2f87cfc23ea1710d1b5d34b2ff0cfaf847f86b5c0982582021d58977115baa8017d6a3d6ae921ed76397d8a490d20cd3a43c16f545bca9715840393c9d107e6b61818ff2e41c872045be4d0f96598e1789b7865f527e3962927feb7ca78151d29986f8f016e56f889ff2c6ec6a55755db6234670d2ae7c23600e049fd8799fd8799fd8799f581c223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd8799fd8799f581c223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd87a80d8799fd8799f581cf43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc5354441474958ff1b0000015467fe03faff1a0016e3601a001e8480ffffa10081825820200a12e8283f5eb9c592157e6a43b1648714da96e399223a2e07448b293be9395840a64482e2e262c675a62ed8ce83e04d21252967ce494c8356ba36a7fb8783516f4c213d8c9a86cf676e3c595328f6ce735cb89229dc340480e1cf3e17af9cbc0ea20081825820b87eb467a0b6908857a720981ac0e547dfb0b901504883daf1236719491fdcc35840f2282f780907177b3e1cbea1e58502834442aee6c4ca312c3d1259a1494fa00d02b96703d00d3105e344ecd5f04f9b31134a1520a18ce40b703aafc10c637e07049fd8799f42df02d8799fd8799fd8799fd8799f581c206a54629f155d28a5db2cfd7f337b852cfcc1c4c52e8681282eb4e6ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd87a80ffd87a80ff1a002625a0d8799fd879801a1d663469d8799f1b0000004de1043a2fffffffffa30081825820ab28a6427f8a130fe51203def9d6da0fc50eb3ddf8159f3a3eabd0d976dd10d8584006d24d765a3b5af1409bb57b9838c14108211dc19c97749909e52eb91e1bd8feefc42d2d390de1c7e3a318de4384aaef5469a79d618057ee759b9be93960190b049fd8799f581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b4059fd8799fd8799fd8799f581c881614f4fa425081c473f18b5054ce9246575f82fdfb6472fd3bf98bffd8799fd8799fd8799f581c722578fdf29d210c4b7a172ec49e06950de9ab26cc954e7660db14a7ffffffffa140d8799f00a1401a00467ee0ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a002191c0ffffd8799fd8799fd8799f581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b405ffd8799fd8799fd8799f581c432f9b6fc9b2ea7dbf540f1b8cf86cd59c15dc84f0cb8d9da7c2f338ffffffffa140d8799f00a1401a062666e0ffffffffff0581840001d87980821a000d12c01a10c5e199a100818258202c5205c7685d015a531ae03f59d3eb51f45a66d5b8060913ae060f8fb7dc16a25840ec6b7fe03ffaf8f4610d844b870ca82ef9743ad2fc076d29b849984768506a43246d5fc08498cba17787e4a1d2079b54fae9fe1b730be872242d7532a4247a03a10081825820ca1652e23e6d1556258cb05692e05397df8d8df7cab0e8b5f1f326d474d8826a5840858b14ddcb4a88be4ff987f98698d3441c2b071d675d5a7b596fb17148b0e0964e7f497d2bc09b011f153ec52d04d5bf8745928e05dbb7a350731d4f5606c502a100828258206ed4d893bf46519d280e8d9da3ff28807effc769abc64bfdc1b702a2bae85d1158407a2fb7509541935c79d0181b96caa09b98eda13aaf154bc30625eca8815e678f8dc70efd7d7aa489a8e598867ecc9ceededd2c0bd3a817db5d9ee1b031ed6004825820d48339712c5828962a644cf5992560882b5ad71fb9f57c836483e63233fd7a545840d42b9fdb8a64fc421c44d188cb56d26f23d71a8647fcb286306855f67cc799b50e67c89b85537b527bedf431b58a14154f54750b34e4140ade5f076a468db80ba100818258203236ab744071a1ebc12230acd65319f9c74fc69e035a28a3db6ede7610f22d6758405200f1d5deb93e2852c37fdf787e6b4b849d0008a3e171c1fb588130ff123cf7f05acbd28e9d8ed26289971c366ee0b6e45431879109d273e367f45c93904905a3008282582073a89a4c9e945459c734b2e465b0ad43e4e50abf867cf4ccfec2fc67fbe0115e58401345043c071a3b71b29ed209bb0675eacfc93c0f96b99fbee56cbed331766cf9c206dfc254f49ad36865bf9a1f34453919e8282bea607317631b7fab8a093a0d8258202ffc18633e7ce5c7d3c2eb63f2aec767dff84207db45cace148440095a8e360358406dca735501d6103b7e4395ed3bed14b513cea89e796106cf4eeda2388a9a2cd33e70426d34d0144bb4d5950fc17574a10d02f7d5e08f315c23c46f4885a4270d049fd8799f581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090d9fd8799fd8799fd8799f581cedc3c2961976efd921beb80be2a7169ecb2b6a57dc2ad62dd7f846f6ffd8799fd8799fd8799f581ce8e57d406e11c6b3fe6565e0ab944597cb8dd3b169dcd407a13a6280ffffffffa140d8799f00a1401a0083d600ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a0057e400ffffd8799fd8799fd8799f581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090dffd8799fd8799fd8799f581ce74a327674876a8ca2981170c1acbc8952c825c6e02e3b21c026af06ffffffffa140d8799f00a1401a104ece00ffffffffff0581840001d87980821a000d12c01a10c5e199a3008282582080a619e25c5193c59dfbc991bde24baf3539e921a5db89662960b223fc1619a25840f40ee7c77a90b80509569655bf65dca83fb9601649dcb3d6952361a1a3b1bee03429f3c3d951339014901051ffa451207f50c9d9b67e736be5d9a1c6c8073b0b825820c29ab9e15b9736c66eea06fcde8aae3809fba0a9b93a6c2dc6b8b559586229775840955d9ee7b60bd35abd165e4ca5276d6e05e0aaeff2d7e726e38bef497b09ab80bb42418fd025f0d7ea2f35cf99755ad839f1aed0a6b82023bbd72cc071f51307049fd8799f581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b009fd8799fd8799fd8799f581c32a2c49166c95be42552495b9a786255fc4bad14591b2cc2fde5a77bffd8799fd8799fd8799f581ceaee221c93e8b88672ae3f0d5310ed2ede01827cce2a675ca58175bdffffffffa140d8799f00a1401a19bfcc00ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a08954400ffffd8799fd8799fd8799f581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b00ffd8799fd8799fd8799f581c86f85b63375562f9119792fd4ee1ddfc09063d9591705c5110b7e615ffffffffa140d8799f00a1401b000000018ad23800ffffffffff0581840001d87980821a0016e3361a1cbb5525a100818258203744585b228e2529c0670d82c878df88715cca79106ab83eef84556cb40efb5258409e2f2431037ded4c5b11987bc7c66d3dae26a13bf7bb59bfac62b0f1f18d48e0b5a7dd9c94a2cfb1e683295c2277b080c31ee4d5e6d5f3091b5fecb7cf4f1b06a10083825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90f825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90f825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90fa3008182582089a11758ef06dc94ba31c6c3f48983caaadabdc63099f0d984ceb71930a6b1e7584038dd182cb56158f65f55d2b346dfec22dbd104dd23eff0235a4f40cd2e19575179fc7bdd0d834a5f20394a68c433a27699e2be5b3a6f771d5b58ac92db73fd04049fd8799f581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e99fd8799fd8799fd8799f581c881614f4fa425081c473f18b5054ce9246575f82fdfb6472fd3bf98bffd8799fd8799fd8799f581c722578fdf29d210c4b7a172ec49e06950de9ab26cc954e7660db14a7ffffffffa140d8799f00a1401a00233f70ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a0010c8e0ffffd8799fd8799fd8799f581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9ffd8799fd8799fd8799f581ca5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900feffffffffa1581ceaa972045049185981aca9f4aaad38bc307776c593e4a849d3802a87d8799f00a14e536d6f6f7468596574693331323601ffffffffff0581840000d87980821a000c83921a10270770a100818258209dcd2cba94db4d7ab5d68da45a657c4859ded3e5498b8aac2b2756864e8a0edb5840560152a0312d3b56feeb20e4f5d6e71c9c7038a6bcbd6123089374f2c91cc2310cdeeb0b02c236910d31862ffda77300a86d1a14a6c1043f77bd23e6afa79706a501ac007840643837393966353831636432346361626135643763303231316132373638323366333337633538323135306535373030306161333137326563623638326436620178403736396664383739396664383739396664383739396635383163316365373761343034343732383763333832643033666232633137363162373364386665343502784034613735313166666463643862393534336266666438373939666438373939666438373939663538316339316565653263663238306636303937646136663633037840633365376631613863393331613061346430663266363430333537653836646165656666666666666666613134306438373939663030613134303161303031360478406533363066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030306631623330666666666438373939666438373939666438373939663538316364323463616261356437633032313161323736383233663333376335383208784031353065353730303061613331373265636236383264366237366666643837393966643837393966643837393966353831633033353535396633363835376339097840396165343134373162363864663462303534383939333936653436616237383337653034616236396238666666666666666661313430643837393966303061310a743430316130316133633466306666666666666666181e613403ac007840643837393966353831633836613138666537363731376337666539666461623239623734613231666436663162396639633038663231656633663266653062340178403035396664383739396664383739396664383739396635383163383831363134663466613432353038316334373366313862353035346365393234363537356602784038326664666236343732666433626639386266666438373939666438373939666438373939663538316337323235373866646632396432313063346237613137037840326563343965303639353064653961623236636339353465373636306462313461376666666666666666613134306438373939663030613134303161303036360478403861303066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030333064343030666666666438373939666438373939666438373939663538316338366131386665373637313763376665396664616232396237346132316608784064366631623966396330386632316566336632666530623430356666643837393966643837393966643837393966353831633433326639623666633962326561097840376462663534306631623863663836636435396331356463383466306362386439646137633266333338666666666666666661313430643837393966303061310a743430316130386632306130306666666666666666181e613408ac007840643837393966353831633730396366303466663362653036653137383763393235373535626239386336373030333733623536653064323362643937613130390178403064396664383739396664383739396664383739396635383163656463336332393631393736656664393231626562383062653261373136396563623262366102784035376463326164363264643766383436663666666438373939666438373939666438373939663538316365386535376434303665313163366233666536353635037840653061623934343539376362386464336231363964636434303761313361363238306666666666666666613134306438373939663030613134303161303037360478403866393066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030346630613630666666666438373939666438373939666438373939663538316337303963663034666633626530366531373837633932353735356262393808784063363730303337336235366530643233626439376131303930646666643837393966643837393966643837393966353831636537346133323736373438373661097840386361323938313137306331616362633839353263383235633665303265336232316330323661663036666666666666666661313430643837393966303061310a743430316130656161366364306666666666666666181e613409ac007840643837393966353831633562346635633266313262623235346463303764613631306531613232653237653165346430353162386138323263646665373630620178403030396664383739396664383739396664383739396635383163333261326334393136366339356265343235353234393562396137383632353566633462616402784031343539316232636332666465356137376266666438373939666438373939666438373939663538316365616565323231633933653862383836373261653366037840306435333130656432656465303138323763636532613637356361353831373562646666666666666666613134306438373939663030613134303161316238390478403866383066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403039326464613830666666666438373939666438373939666438373939663538316335623466356332663132626232353464633037646136313065316132326508784032376531653464303531623861383232636466653736306230306666643837393966643837393966643837393966353831633836663835623633333735353632097840663931313937393266643465653164646663303930363364393539313730356335313130623765363135666666666666666661313430643837393966303061310a781c34303162303030303030303161363364343330306666666666666666181e61340dac007840643837393966353831636236323930613832366565636666363463653361343765306462613561396563653066396662366536363533313532316466386162370178406265396664383739396664383739396664383739396635383163373638313138303030313436393937323139393039353861316437623132633362346636666402784063386633323536666134646331373164316266666438373939666438373939666438373939663538316337323235373866646632396432313063346237613137037840326563343965303639353064653961623236636339353465373636306462313461376666666666666666613134306438373939663030613134303161303237370478406236633066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030623731623030666666666438373939666438373939666438373939663538316362363239306138323665656366663634636533613437653064626135613908784065636530663966623665363635333135323164663861623762656666643837393966643837393966643837393966353831633432306130393766353762376639097840393262626235373637326261326239303763626230313062343434346563633136623139376439313865666666666666666661313430643837393966303061310a743430316132303934373434306666666666666666181e613480" -func TestBabbageBlockUtxorpc(t *testing.T) { +func TestBabbageBlock_CborRoundTrip_UsingCborEncode(t *testing.T) { + hexStr := strings.TrimSpace(babbageBlockHex) + + // Decode the hex string into CBOR bytes + dataBytes, err := hex.DecodeString(hexStr) + if err != nil { + t.Fatalf( + "Failed to decode Babbage block hex string into CBOR bytes: %v", + err, + ) + } + + // Deserialize CBOR bytes into BabbageBlock struct + var block babbage.BabbageBlock + err = block.UnmarshalCBOR(dataBytes) + if err != nil { + t.Fatalf("Failed to unmarshal CBOR data into BabbageBlock: %v", err) + } + + // Re-encode using the cbor Encode function + encoded, err := cbor.Encode(block) + if err != nil { + t.Fatalf( + "Failed to marshal BabbageBlock using custom encode function: %v", + err, + ) + } + if encoded == nil || len(encoded) == 0 { + t.Fatal("Custom encoded CBOR from BabbageBlock is nil or empty") + } + + // Ensure the original and re-encoded CBOR bytes are identical + if !bytes.Equal(dataBytes, encoded) { + t.Errorf( + "Custom CBOR round-trip mismatch for Babbage block\nOriginal CBOR (hex): %x\nCustom Encoded CBOR (hex): %x", + dataBytes, + encoded, + ) + + // Check from which byte it differs + diffIndex := -1 + for i := 0; i < len(dataBytes) && i < len(encoded); i++ { + if dataBytes[i] != encoded[i] { + diffIndex = i + break + } + } + if diffIndex != -1 { + t.Logf("First mismatch at byte index: %d", diffIndex) + t.Logf( + "Original byte: 0x%02x, Re-encoded byte: 0x%02x", + dataBytes[diffIndex], + encoded[diffIndex], + ) + } else { + t.Logf("Length mismatch: original length = %d, re-encoded length = %d", len(dataBytes), len(encoded)) + } + } +} + +func TestBabbageBlock_Utxorpc(t *testing.T) { // Decode the test block CBOR blockCbor, err := hex.DecodeString(babbageBlockHex) if err != nil {