Closed dnadales closed 1 year ago
Example:
Cardano
Examples roundtrip
Block
Byron_regular: FAIL (0.02s)
*** Failed! Falsified (after 1 test):
HardForkBlock
{ getHardForkBlock = Z
( I
( ByronBlock
{ byronBlockRaw = ABOBBlock
( ABlock
{ blockHeader = AHeader
{ aHeaderProtocolMagicId = Annotated
{ unAnnotated = ProtocolMagicId
{ unProtocolMagicId = 55550001 }
, annotation = "\x1a\x3O 1"
}
, aHeaderPrevHash = Annotated
{ unAnnotated = 88900fba40903da0b4a38d06a3d2bdadff6d49a8a6b804efe1b4522890e3b82c
, annotation = "X \x88\x90\xfº@\x90= ´£\x8d\x6£Ò½\xadÿmI¨¦¸\x4ïá´R(\x90ã¸,"
}
, aHeaderSlot = Annotated
{ unAnnotated = SlotNumber
{ unSlotNumber = 1 }
, annotation = "\x82\x0\x1"
}
, aHeaderDifficulty = Annotated
{ unAnnotated = ChainDifficulty
{ unChainDifficulty = 1 }
, annotation = "\x81\x1"
}
, headerProtocolVersion = 1.1.1
, headerSoftwareVersion = Golden:99
, aHeaderProof = Annotated
{ unAnnotated = Proof
{ proofUTxO = TxProof
{ txpNumber = 1
, txpRoot = MerkleRoot
{ getMerkleRoot = 5e46ceb20538afeeb45cb8f7030512af34b4ff363a8c7e94d441a257500ffab7 }
, txpWitnessesHash = e32c9549bc3acbe0e848b2d7ad26331b7d8497580364cb2bc6c8bda9aa0975b8
}
, proofSsc = SscProof
, proofDelegation = afc0da64183bf2664f3d4eec7238d524ba607faeeab24fc100eb861dba69971b
, proofUpdate = 4e66280cd94d591072349bec0a3090a53aa945562efb6d08d56e53654b0e4098
}
, annotation = "\x84\x83\x1X ^Fβ\x58¯î´\¸÷\x3\x5\x12¯4´ÿ6:\x8c~\x94ÔA¢WP\xfú·X ã,\x95I¼:ËàèH²×\xad&3\x1b}\x84\x97X\x3dË+ÆȽ©ª\x9u¸\x82\x3X Ój&\x19¦rIF\x4á\x1b´GËÏR1éòº%Â\x16\x91wíÉA½P\xadlX ¯ÀÚd\x18;òfO=Nìr8Õ$º`\x7f®ê²OÁ\x0ë\x86\x1dºi\x97\x1bX Nf(\xcÙMY\x10r4\x9bì
0\x90¥:©EV.ûm\x8ÕnSeK\xe@\x98"
}
, headerGenesisKey = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88ê"
, xpubChaincode = ChainCode "b`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe"
}
}
, headerSignature = ABlockSignature
{ delegationCertificate = UnsafeACertificate
{ aEpoch = Annotated
{ unAnnotated = EpochNumber
{ getEpochNumber = 0 }
, annotation = "\x0"
}
, issuerVK = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88ê"
, xpubChaincode = ChainCode "b`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe"
}
}
, delegateVK = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "ë\x9f\x9ê1£\xf\x81\x0\x14Ù\x9a¬äQk4&ìx=éá^\xfÕ\x1f\x89«þÞØ"
, xpubChaincode = ChainCode "3\x13í\xadv#\x9f\x1b°6Q1:\x2að*ö\xad/Ä\x8Ð\x9f\x89÷\xe0g[\x1f\x1"
}
}
, signature = Signature
( XSignature
{ unXSignature = ",°c\x8a\x92U\x92\x1e\x14D\x804\x93A2\x93ëì!A\x16¬Á\x9c!\x4\x1e3½\x1dá_ÈÎ\x85>VϬÐú\x16M\x8a¢\x8f\x9e`\x9bW¥\x9d%\x98[FEQ\x88Û_Åë\x7" }
)
, annotation = "\x84\x0X@£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88êb`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbeX@ë\x9f\x9ê1£\xf\x81\x0\x14Ù\x9a¬äQk4&ìx=éá^\xfÕ\x1f\x89«þÞØ3\x13í\xadv#\x9f\x1b°6Q1:\x2að*ö\xad/Ä\x8Ð\x9f\x89÷\xe0g[\x1f\x1X@,°c\x8a\x92U\x92\x1e\x14D\x804\x93A2\x93ëì!A\x16¬Á\x9c!\x4\x1e3½\x1dá_ÈÎ\x85>VϬÐú\x16M\x8a¢\x8f\x9e`\x9bW¥\x9d%\x98[FEQ\x88Û_Åë\x7"
}
, signature = Signature
( XSignature
{ unXSignature = "Ô8rRX\x8f¯º^å\x8c#åAaow¦»bÆYJDc¤§\Fë8\x9e±\xd\x6H\x93xÜáiÎùQ®\x8ú¬^.cÈ\x84\x1fUÆÌGÕøÒOî\x6" }
)
}
, headerAnnotation = "\x85\x1a\x3O 1X \x88\x90\xfº@\x90= ´£\x8d\x6£Ò½\xadÿmI¨¦¸\x4ïá´R(\x90ã¸,\x84\x83\x1X ^Fβ\x58¯î´\¸÷\x3\x5\x12¯4´ÿ6:\x8c~\x94ÔA¢WP\xfú·X ã,\x95I¼:ËàèH²×\xad&3\x1b}\x84\x97X\x3dË+ÆȽ©ª\x9u¸\x82\x3X Ój&\x19¦rIF\x4á\x1b´GËÏR1éòº%Â\x16\x91wíÉA½P\xadlX ¯ÀÚd\x18;òfO=Nìr8Õ$º`\x7f®ê²OÁ\x0ë\x86\x1dºi\x97\x1bX Nf(\xcÙMY\x10r4\x9bì
0\x90¥:©EV.ûm\x8ÕnSeK\xe@\x98\x84\x82\x0\x1X@£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88êb`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe\x81\x1\x82\x2\x82\x84\x0X@£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88êb`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbeX@ë\x9f\x9ê1£\xf\x81\x0\x14Ù\x9a¬äQk4&ìx=éá^\xfÕ\x1f\x89«þÞØ3\x13í\xadv#\x9f\x1b°6Q1:\x2að*ö\xad/Ä\x8Ð\x9f\x89÷\xe0g[\x1f\x1X@,°c\x8a\x92U\x92\x1e\x14D\x804\x93A2\x93ëì!A\x16¬Á\x9c!\x4\x1e3½\x1dá_ÈÎ\x85>VϬÐú\x16M\x8a¢\x8f\x9e`\x9bW¥\x9d%\x98[FEQ\x88Û_Åë\x7X@Ô8rRX\x8f¯º^å\x8c#åAaow¦»bÆYJDc¤§\Fë8\x9e±\xd\x6H\x93xÜáiÎùQ®\x8ú¬^.cÈ\x84\x1fUÆÌGÕøÒOî\x6\x84\x83\x1\x1\x1\x82fGolden\x18c X K©*£ Æ
Ì\x9a×¹¦O.ÚUÄÒì(æ\x4úñ\x86p\x8bO\xcN\x8eß"
, headerExtraAnnotation = "\x84\x83\x1\x1\x1\x82fGolden\x18c X K©*£ Æ
Ì\x9a×¹¦O.ÚUÄÒì(æ\x4úñ\x86p\x8bO\xcN\x8eß"
}
, blockBody = ABody
{ bodyTxPayload = ATxPayload
{ aUnTxPayload =
[ ATxAux
{ aTaTx = Annotated
{ unAnnotated = UnsafeTx
{ txInputs = TxInUtxo 4ba839c420b3d2bd439530f891cae9a5d4c4d812044630dac72e8e0962feeecc 47 :| []
, txOutputs = TxOut
{ txOutAddress = Address
{ addrRoot = aa5372095aaa680d19d4ca496983a145709c3be18b0d4c83cb7bdc5e
, addrAttributes = Attributes
{ data_ = AddrAttributes
{ aaVKDerivationPath = Nothing
, aaNetworkMagic = NetworkMainOrStage
}
}
, addrType = ATVerKey
}
, txOutValue = Lovelace 47
} :| []
, txAttributes = Attributes
{ data_ = () }
}
, annotation = "\x83\x9f\x82\x0Ø\x18X%\x82X K¨9Ä ³Ò½C\x950ø\x91Êé¥ÔÄØ\x12\x4F0ÚÇ.\x8e\x9bþîÌ\x18/ÿ\x9f\x82\x82Ø\x18X!\x83X\x1cªSr\x9Zªh\xd\x19ÔÊIi\x83¡Ep\x9c;á\x8b\xdL\x83Ë{Ü^ \x0\x1a2Ü\x98\x8e\x18/ÿ "
}
, aTaWitness = Annotated
{ unAnnotated =
[ VKWitness
( VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3"
, xpubChaincode = ChainCode "tG4ja0kFjO8qzai26ZMPUEJfEy15ox5k"
}
}
)
( Signature
( XSignature
{ unXSignature = "h\x8a\xad\x85{Çÿ0ühbÚ\x1bâ\x81ô ÆRq·j±\x97\x82ÿ@â\x95Zø\x88\x19Ã\x8e\y\x13\x8f(\x7:ºáRÈ\x82%\x8bD ÁÉýÒl\x98\x81&\x97ü>\x0" }
)
)
]
, annotation = "\x81\x82\x0Ø\x18X\x85\x82X@Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3tG4ja0kFjO8qzai26ZMPUEJfEy15ox5kX@h\x8a\xad\x85{Çÿ0ühbÚ\x1bâ\x81ô ÆRq·j±\x97\x82ÿ@â\x95Zø\x88\x19Ã\x8e\y\x13\x8f(\x7:ºáRÈ\x82%\x8bD ÁÉýÒl\x98\x81&\x97ü>\x0"
}
, aTaAnnotation = "\x82\x83\x9f\x82\x0Ø\x18X%\x82X K¨9Ä ³Ò½C\x950ø\x91Êé¥ÔÄØ\x12\x4F0ÚÇ.\x8e\x9bþîÌ\x18/ÿ\x9f\x82\x82Ø\x18X!\x83X\x1cªSr\x9Zªh\xd\x19ÔÊIi\x83¡Ep\x9c;á\x8b\xdL\x83Ë{Ü^ \x0\x1a2Ü\x98\x8e\x18/ÿ \x81\x82\x0Ø\x18X\x85\x82X@Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3tG4ja0kFjO8qzai26ZMPUEJfEy15ox5kX@h\x8a\xad\x85{Çÿ0ühbÚ\x1bâ\x81ô ÆRq·j±\x97\x82ÿ@â\x95Zø\x88\x19Ã\x8e\y\x13\x8f(\x7:ºáRÈ\x82%\x8bD ÁÉýÒl\x98\x81&\x97ü>\x0"
}
]
}
, bodySscPayload = SscPayload
, bodyDlgPayload = UnsafeAPayload
{ getPayload = []
, getAnnotation = "\x9fÿ"
}
, bodyUpdatePayload = APayload
{ payloadProposal = Nothing
, payloadVotes = []
, payloadAnnotation = "\x82\x80\x9fÿ"
}
}
, blockAnnotation = "\x83\x85\x1a\x3O 1X \x88\x90\xfº@\x90= ´£\x8d\x6£Ò½\xadÿmI¨¦¸\x4ïá´R(\x90ã¸,\x84\x83\x1X ^Fβ\x58¯î´\¸÷\x3\x5\x12¯4´ÿ6:\x8c~\x94ÔA¢WP\xfú·X ã,\x95I¼:ËàèH²×\xad&3\x1b}\x84\x97X\x3dË+ÆȽ©ª\x9u¸\x82\x3X Ój&\x19¦rIF\x4á\x1b´GËÏR1éòº%Â\x16\x91wíÉA½P\xadlX ¯ÀÚd\x18;òfO=Nìr8Õ$º`\x7f®ê²OÁ\x0ë\x86\x1dºi\x97\x1bX Nf(\xcÙMY\x10r4\x9bì
0\x90¥:©EV.ûm\x8ÕnSeK\xe@\x98\x84\x82\x0\x1X@£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88êb`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe\x81\x1\x82\x2\x82\x84\x0X@£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88êb`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbeX@ë\x9f\x9ê1£\xf\x81\x0\x14Ù\x9a¬äQk4&ìx=éá^\xfÕ\x1f\x89«þÞØ3\x13í\xadv#\x9f\x1b°6Q1:\x2að*ö\xad/Ä\x8Ð\x9f\x89÷\xe0g[\x1f\x1X@,°c\x8a\x92U\x92\x1e\x14D\x804\x93A2\x93ëì!A\x16¬Á\x9c!\x4\x1e3½\x1dá_ÈÎ\x85>VϬÐú\x16M\x8a¢\x8f\x9e`\x9bW¥\x9d%\x98[FEQ\x88Û_Åë\x7X@Ô8rRX\x8f¯º^å\x8c#åAaow¦»bÆYJDc¤§\Fë8\x9e±\xd\x6H\x93xÜáiÎùQ®\x8ú¬^.cÈ\x84\x1fUÆÌGÕøÒOî\x6\x84\x83\x1\x1\x1\x82fGolden\x18c X K©*£ Æ
Ì\x9a×¹¦O.ÚUÄÒì(æ\x4úñ\x86p\x8bO\xcN\x8eß\x84\x9f\x82\x83\x9f\x82\x0Ø\x18X%\x82X K¨9Ä ³Ò½C\x950ø\x91Êé¥ÔÄØ\x12\x4F0ÚÇ.\x8e\x9bþîÌ\x18/ÿ\x9f\x82\x82Ø\x18X!\x83X\x1cªSr\x9Zªh\xd\x19ÔÊIi\x83¡Ep\x9c;á\x8b\xdL\x83Ë{Ü^ \x0\x1a2Ü\x98\x8e\x18/ÿ \x81\x82\x0Ø\x18X\x85\x82X@Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3tG4ja0kFjO8qzai26ZMPUEJfEy15ox5kX@h\x8a\xad\x85{Çÿ0ühbÚ\x1bâ\x81ô ÆRq·j±\x97\x82ÿ@â\x95Zø\x88\x19Ã\x8e\y\x13\x8f(\x7:ºáRÈ\x82%\x8bD ÁÉýÒl\x98\x81&\x97ü>\x0ÿ\x82\x3Ù\x1\x2\x80\x9fÿ\x82\x80\x9fÿ\x81 "
}
)
, byronBlockSlotNo = SlotNo 1
, byronBlockHash = ByronHash
{ unByronHash = 93e9c624e615f90e7a78fb8eb12c4520befc1a3379ad98b8218833cc77b9c26f }
}
)
)
}
/=
HardForkBlock
{ getHardForkBlock = Z
( I
( ByronBlock
{ byronBlockRaw = ABOBBlock
( ABlock
{ blockHeader = AHeader
{ aHeaderProtocolMagicId = Annotated
{ unAnnotated = ProtocolMagicId
{ unProtocolMagicId = 55550001 }
, annotation = ""
}
, aHeaderPrevHash = Annotated
{ unAnnotated = 88900fba40903da0b4a38d06a3d2bdadff6d49a8a6b804efe1b4522890e3b82c
, annotation = ""
}
, aHeaderSlot = Annotated
{ unAnnotated = SlotNumber
{ unSlotNumber = 1 }
, annotation = ""
}
, aHeaderDifficulty = Annotated
{ unAnnotated = ChainDifficulty
{ unChainDifficulty = 1 }
, annotation = ""
}
, headerProtocolVersion = 1.1.1
, headerSoftwareVersion = Golden:99
, aHeaderProof = Annotated
{ unAnnotated = Proof
{ proofUTxO = TxProof
{ txpNumber = 1
, txpRoot = MerkleRoot
{ getMerkleRoot = 5e46ceb20538afeeb45cb8f7030512af34b4ff363a8c7e94d441a257500ffab7 }
, txpWitnessesHash = e32c9549bc3acbe0e848b2d7ad26331b7d8497580364cb2bc6c8bda9aa0975b8
}
, proofSsc = SscProof
, proofDelegation = afc0da64183bf2664f3d4eec7238d524ba607faeeab24fc100eb861dba69971b
, proofUpdate = 4e66280cd94d591072349bec0a3090a53aa945562efb6d08d56e53654b0e4098
}
, annotation = ""
}
, headerGenesisKey = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88ê"
, xpubChaincode = ChainCode "b`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe"
}
}
, headerSignature = ABlockSignature
{ delegationCertificate = UnsafeACertificate
{ aEpoch = Annotated
{ unAnnotated = EpochNumber
{ getEpochNumber = 0 }
, annotation = ""
}
, issuerVK = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "£KÛ;»\x80Í7M´é˨°\x7ú\x90IÈð;¿@A|c\x97íÈä\x88ê"
, xpubChaincode = ChainCode "b`ð\x9å7É\x99\x89\x1e\x8a\x9fÝçò㦸\xe\x82Ó·ß°*\x17nÀ\x9a¦\xbe"
}
}
, delegateVK = VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "ë\x9f\x9ê1£\xf\x81\x0\x14Ù\x9a¬äQk4&ìx=éá^\xfÕ\x1f\x89«þÞØ"
, xpubChaincode = ChainCode "3\x13í\xadv#\x9f\x1b°6Q1:\x2að*ö\xad/Ä\x8Ð\x9f\x89÷\xe0g[\x1f\x1"
}
}
, signature = Signature
( XSignature
{ unXSignature = ",°c\x8a\x92U\x92\x1e\x14D\x804\x93A2\x93ëì!A\x16¬Á\x9c!\x4\x1e3½\x1dá_ÈÎ\x85>VϬÐú\x16M\x8a¢\x8f\x9e`\x9bW¥\x9d%\x98[FEQ\x88Û_Åë\x7" }
)
, annotation = ""
}
, signature = Signature
( XSignature
{ unXSignature = "Ô8rRX\x8f¯º^å\x8c#åAaow¦»bÆYJDc¤§\Fë8\x9e±\xd\x6H\x93xÜáiÎùQ®\x8ú¬^.cÈ\x84\x1fUÆÌGÕøÒOî\x6" }
)
}
, headerAnnotation = ""
, headerExtraAnnotation = ""
}
, blockBody = ABody
{ bodyTxPayload = ATxPayload
{ aUnTxPayload =
[ ATxAux
{ aTaTx = Annotated
{ unAnnotated = UnsafeTx
{ txInputs = TxInUtxo 4ba839c420b3d2bd439530f891cae9a5d4c4d812044630dac72e8e0962feeecc 47 :| []
, txOutputs = TxOut
{ txOutAddress = Address
{ addrRoot = aa5372095aaa680d19d4ca496983a145709c3be18b0d4c83cb7bdc5e
, addrAttributes = Attributes
{ data_ = AddrAttributes
{ aaVKDerivationPath = Nothing
, aaNetworkMagic = NetworkMainOrStage
}
}
, addrType = ATVerKey
}
, txOutValue = Lovelace 47
} :| []
, txAttributes = Attributes
{ data_ = () }
}
, annotation = ""
}
, aTaWitness = Annotated
{ unAnnotated =
[ VKWitness
( VerificationKey
{ unVerificationKey = XPub
{ xpubPublicKey = "Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3"
, xpubChaincode = ChainCode "tG4ja0kFjO8qzai26ZMPUEJfEy15ox5k"
}
}
)
( Signature
( XSignature
{ unXSignature = "h\x8a\xad\x85{Çÿ0ühbÚ\x1bâ\x81ô ÆRq·j±\x97\x82ÿ@â\x95Zø\x88\x19Ã\x8e\y\x13\x8f(\x7:ºáRÈ\x82%\x8bD ÁÉýÒl\x98\x81&\x97ü>\x0" }
)
)
]
, annotation = ""
}
, aTaAnnotation = ""
}
]
}
, bodySscPayload = SscPayload
, bodyDlgPayload = UnsafeAPayload
{ getPayload = []
, getAnnotation = ""
}
, bodyUpdatePayload = APayload
{ payloadProposal = Nothing
, payloadVotes = []
, payloadAnnotation = ""
}
}
, blockAnnotation = ""
}
)
, byronBlockSlotNo = SlotNo 1
, byronBlockHash = ByronHash
{ unByronHash = 59e6235dd03caf0d130c676cd91b330f5c931b25d9173c4f35d845b8d3bbdb8e }
}
)
)
}
Use --quickcheck-replay=564486 to reproduce.
Use -p '/Example/&&/Byron_regular/' to rerun this test only.
blockAnnotation
is Byron specific. There is nothing we can do about Byron serialization.
If you think I am wrong, please reopen the issue and we can discuss it.
Alright. We'll see what we can do on the Consensus side. Thank you @lehins
When testing the roundtrip property for the Cardano examples, all Cardano blocks fail to roundtrip via
FlatTerm
.By inspecting the input it seems that some fields such as "blockAnnotation" are not preserved.
The failure can be reproduced by running: