Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

bug: compilation of sierra artifact results in error from the program registry #4075

Closed
tarrencev opened this issue Sep 14, 2023 · 1 comment · Fixed by #4083
Closed

bug: compilation of sierra artifact results in error from the program registry #4075

tarrencev opened this issue Sep 14, 2023 · 1 comment · Fixed by #4083
Labels
bug Something isn't working

Comments

@tarrencev
Copy link
Contributor

tarrencev commented Sep 14, 2023

Bug Report

Cairo version:

2.2.0

Current behavior:

Attempting to compute class hash from sierra artifact results in error:

MetadataError(CostError(ProgramRegistryError(TypeAlreadyDeclared(TypeDeclaration { id: ConcreteTypeId { id: 19, debug_name: None }, long_id: ConcreteTypeLongId { generic_id: GenericTypeId("Struct"), generic_args: [UserType(UserTypeId { id: 1664482776371688771722787239564831976986523514291541396668041011492317214772, debug_name: None }), Type(ConcreteTypeId { id: 6, debug_name: None })] }, declared_type_info: Some(DeclaredTypeInfo { storable: true, droppable: true, duplicatable: true, zero_sized: false }) }))))

Expected behavior:

Class hash should be computed successfully

Steps to reproduce:

Attempt to compile the provided artifact with the code below

Related code:

use cairo_lang_starknet::casm_contract_class::CasmContractClass;
use cairo_lang_starknet::contract_class::ContractClass;

...

#[test]
fn compile_moves() {
    let file = File::open(&PathBuf::from(<path to artifact>))
        .unwrap();
    let casm_contract_class: ContractClass = serde_json::from_reader(file).unwrap();
    let _ = CasmContractClass::from_contract_class(casm_contract_class, true).unwrap();
}
{
  "sierra_program": [
    "0x1",
    "0x3",
    "0x0",
    "0x2",
    "0x2",
    "0x0",
    "0x132",
    "0xce",
    "0x28",
    "0x52616e6765436865636b",
    "0x800000000000000100000000000000000000000000000000",
    "0x426f78",
    "0x800000000000000700000000000000000000000000000001",
    "0x1",
    "0x4",
    "0x537472756374",
    "0x800000000000000f00000000000000000000000000000001",
    "0x0",
    "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3",
    "0x456e756d",
    "0x800000000000000700000000000000000000000000000003",
    "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7",
    "0x2",
    "0x66656c74323532",
    "0x800000000000000700000000000000000000000000000000",
    "0x4172726179",
    "0x800000000000000300000000000000000000000000000001",
    "0x1a",
    "0x536e617073686f74",
    "0x5",
    "0x800000000000000700000000000000000000000000000002",
    "0x3ae105984b00ef08b70ad8c565e9ae9eea85c849d082e67eb51cb64c4b6b834",
    "0x6",
    "0x8",
    "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62",
    "0x9",
    "0x800000000000000700000000000000000000000000000004",
    "0x25c8bb4b398a2e41ac21b26d250eb9b85781e00ecbf5005156389af3714a091",
    "0x7",
    "0xa",
    "0xa2c227f22e9c86e4829c8628c58655811696b336cb0cb0fcc9cca848ed2779",
    "0xb",
    "0xc",
    "0x3d45685d2c273d40fdab3b6caf3abe97ae22b98c1b8febfec553ca7348d940",
    "0xd",
    "0x556e696e697469616c697a6564",
    "0x800000000000000200000000000000000000000000000001",
    "0x16",
    "0x53ab85eada0a6ea028c03d62be3bee85e33846f2cb70861f36156d3c342647",
    "0x11",
    "0x14",
    "0x7538",
    "0x753332",
    "0x39a088813bcc109470bd475058810a7465bd632650a449e0ab3aee56f2e4e69",
    "0x17",
    "0x800000000000000300000000000000000000000000000003",
    "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672",
    "0x1c",
    "0x74584e9f10ffb1a40aa5a3582e203f6758defc4a497d1a2d5a89f274a320e9",
    "0x1b",
    "0x1d",
    "0x34c1a4ee6ef3ec231b7e21635f0ab0f5e73f747e42beb02d65fc54c8e0e0575",
    "0x15",
    "0x1b3baebb030b265ddf70e46c08a27f92044121d1af54f99ee947e60b9b685d8",
    "0x3ab802bcce3a9ca953b0e1f31a5b29eb27a9b727c891e24300e1b5cc57387ba",
    "0x21",
    "0x4275696c74696e436f737473",
    "0x53797374656d",
    "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6",
    "0x23",
    "0x4761734275696c74696e",
    "0xa5",
    "0x7265766f6b655f61705f747261636b696e67",
    "0x77697468647261775f676173",
    "0x6272616e63685f616c69676e",
    "0x7374727563745f6465636f6e737472756374",
    "0x61727261795f6c656e",
    "0x736e617073686f745f74616b65",
    "0x64726f70",
    "0x7533325f636f6e7374",
    "0x72656e616d65",
    "0x73746f72655f74656d70",
    "0x7533325f6571",
    "0x61727261795f6e6577",
    "0x66656c743235325f636f6e7374",
    "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473",
    "0x61727261795f617070656e64",
    "0x7374727563745f636f6e737472756374",
    "0x656e756d5f696e6974",
    "0x26",
    "0x27",
    "0x25",
    "0x6765745f6275696c74696e5f636f737473",
    "0x24",
    "0x77697468647261775f6761735f616c6c",
    "0x4d6f766573",
    "0x66756e6374696f6e5f63616c6c",
    "0x3",
    "0x4f7574206f6620676173",
    "0x656e756d5f6d61746368",
    "0x22",
    "0x20",
    "0x1f",
    "0x1e",
    "0x6b6579",
    "0x706c61796572",
    "0x436f6e747261637441646472657373",
    "0x72656d61696e696e67",
    "0x446972656374696f6e",
    "0x6c6173745f646972656374696f6e",
    "0x7533325f6f766572666c6f77696e675f616464",
    "0x18",
    "0x6a756d70",
    "0x7533325f616464204f766572666c6f77",
    "0x7533325f746f5f66656c74323532",
    "0x75385f636f6e7374",
    "0x64697361626c655f61705f747261636b696e67",
    "0x647570",
    "0x19",
    "0x13",
    "0x61727261795f736e617073686f745f706f705f66726f6e74",
    "0x12",
    "0x756e626f78",
    "0xe",
    "0xf",
    "0x10",
    "0x75385f746f5f66656c74323532",
    "0x616c6c6f635f6c6f63616c",
    "0x66696e616c697a655f6c6f63616c73",
    "0x73746f72655f6c6f63616c",
    "0x3d1",
    "0xffffffffffffffff",
    "0x40",
    "0x33",
    "0x29",
    "0x2a",
    "0x2b",
    "0x2c",
    "0x2d",
    "0x2e",
    "0x2f",
    "0x30",
    "0x31",
    "0x32",
    "0x34",
    "0x35",
    "0x36",
    "0x37",
    "0x38",
    "0x39",
    "0x3a",
    "0x3b",
    "0x3c",
    "0x3d",
    "0x3e",
    "0x3f",
    "0x41",
    "0x42",
    "0x43",
    "0x44",
    "0x9d",
    "0x6a",
    "0x90",
    "0x89",
    "0x45",
    "0x46",
    "0x47",
    "0x48",
    "0x49",
    "0x4a",
    "0x4b",
    "0x4c",
    "0x4d",
    "0x4e",
    "0x4f",
    "0x50",
    "0x51",
    "0x52",
    "0xfb",
    "0xc7",
    "0xee",
    "0xe7",
    "0x53",
    "0x54",
    "0x18a",
    "0x125",
    "0x17d",
    "0x57",
    "0x58",
    "0x59",
    "0x5a",
    "0x55",
    "0x56",
    "0x5b",
    "0x176",
    "0x5c",
    "0x5d",
    "0x5e",
    "0x5f",
    "0x60",
    "0x61",
    "0x62",
    "0x63",
    "0x64",
    "0x65",
    "0x66",
    "0x67",
    "0x68",
    "0x69",
    "0x6b",
    "0x6c",
    "0x6d",
    "0x6e",
    "0x6f",
    "0x70",
    "0x71",
    "0x72",
    "0x73",
    "0x74",
    "0x75",
    "0x76",
    "0x77",
    "0x78",
    "0x79",
    "0x7a",
    "0x7b",
    "0x7c",
    "0x7d",
    "0x7e",
    "0x7f",
    "0x80",
    "0x1a4",
    "0x1a8",
    "0x1b4",
    "0x1ec",
    "0x245",
    "0x209",
    "0x224",
    "0x238",
    "0x21e",
    "0x23f",
    "0x25a",
    "0x29e",
    "0x26f",
    "0x274",
    "0x290",
    "0x28a",
    "0x297",
    "0x81",
    "0x82",
    "0x83",
    "0x84",
    "0x2c7",
    "0x85",
    "0x86",
    "0x87",
    "0x2e7",
    "0x88",
    "0x8a",
    "0x8b",
    "0x343",
    "0x8c",
    "0x307",
    "0x8d",
    "0x8e",
    "0x8f",
    "0x30c",
    "0x91",
    "0x92",
    "0x335",
    "0x93",
    "0x94",
    "0x95",
    "0x32e",
    "0x328",
    "0x33c",
    "0x96",
    "0x97",
    "0x98",
    "0x38e",
    "0x99",
    "0x35f",
    "0x9a",
    "0x9b",
    "0x9c",
    "0x364",
    "0x9e",
    "0x380",
    "0x9f",
    "0x37a",
    "0x387",
    "0xa0",
    "0xa1",
    "0xa2",
    "0xa3",
    "0x3ca",
    "0x3c4",
    "0xa4",
    "0xab",
    "0x109",
    "0x198",
    "0x19e",
    "0x1b9",
    "0x1c5",
    "0x1d2",
    "0x1f2",
    "0x253",
    "0x263",
    "0x2ad",
    "0x2cd",
    "0x2ed",
    "0x2f9",
    "0x353",
    "0x39d",
    "0x223f",
    "0x102813028482210078380a0502834120c058281208038180a04018080200",
    "0x143a090e02c36050d0242c070c81408140301424110c0142e090b01c2a05",
    "0x380a240288c120c058880a040187c0a21028180a20048700e1f028780a06",
    "0x4430050b8242c0707014520514024180b1381408030c0144c25098140803",
    "0x780a0602874121c058b80a2e028b4120c058405810158a80a040a09c0a12",
    "0x245e07180241007070143205050245e070f81442050301440090e01c3e05",
    "0x281216038dc1208038d80a35048580e34028cc0a32048bc1619028c40a0a",
    "0x147a051e0245e0b010ec203a0f81414090b01c68051c81470091782c5c05",
    "0x11c5c05029185c05029140c05029103e050290c12420490412401f8087c34",
    "0x14924d070149806028149609250240a05248b80a05248b80a05240241c05",
    "0x140a49290140a4902838a2050714068050293c62050293c0c05029380c05",
    "0x149206028148c06028148a570701498092b1540a0524824a851028149253",
    "0x1407a050293c3e050293c3205029183205029141c05029180c59029603205",
    "0x14865c02814b6152c814b005070148e1f028148c5a070149809071440a0e",
    "0x1143c5902960ba0502924ba0502918ba0502914ba050293c3059029607205",
    "0x4c0a05258cc0a052197c0a052d864b2052c1780a05249780a05231780a05",
    "0x13826050292426050293c120e108141c50310380a4c308380a4c300380a4c",
    "0x148a6507014980e070840a0e281901c05260ac1c052618c1c052604c0a05",
    "0x140a49108140a46108140a45028384205071403c050293c2a05029182a05",
    "0x1492090719c0a0e28024cc0e02814920e028149e0602814901b2c814b021",
    "0x14072050293c3e5902960ce0502920d20e029300a0e338141c50049a0ce05",
    "0x14921907014d627028149609350141c5c02838a05c028149209071700a0e",
    "0x140a482f0140a6d049b0bc050293c5405029185405029144e05029384e05",
    "0x17c0a05248241c5f02838a033028149e212c814b02702814885e02814865e",
    "0x130445902960de05029240a0e02930120e02930dc050296c0a0e2f8141c50",
    "0x1c40a0e2809c0a053819c0a052d9b80a0523090b2052c07c0a05248381c05",
    "0x1640a58138140a72388140a5b02838e20507140e205029246c0502924120e",
    "0x14b01e02814921302814881e02814866f02814906f02814da36028148c73",
    "0x1c012780c0140a77049d84e0502920ea59029603e05029203e05029b4e859",
    "0x600a053c8141c7302838a073028149218028149209071cc0a0e2804c0a05",
    "0x140a463a8140a460c0140a46149640a58110140a49110140a72398140a5b",
    "0x14b605071640a0e281640a052486c0a05248241c5902838a00602814e01e",
    "0x1e8440502918dc050292444050290c4405029b43605029180c05029c8b205",
    "0x24127b028241c090f0601c7c0a8181c7b07014120e02824127b028241209",
    "0x1430091087c1c7b0286c0a150486c0a7b028640a06048640a7b029640a59",
    "0x24f605120143009398901c7b028880a15048880a7b028243c09049ec0a1f",
    "0x143e093a014f6053a01436093a814f6053981432093a014f605108143209",
    "0x14f6050488812093d814120e0482462093d838ea74070841206029ec0a06",
    "0x1d4126f029ec0a7114838e80938814f60538814e60938814f605048901229",
    "0x140c050f8244e053d8146c05388246c053d814de2a070a4122a029ec0a09",
    "0x4c0a7b0289c0a36049b80a7b028380a2a0499c0a7b028540a6f048b80a7b",
    "0xcc0a7b028cc0a2e048cc0a7b028244e09049ec0a0907024266e338b80c05",
    "0x14f6050488812093d814120e04978be0e3e8d0620e3d838661503164ce09",
    "0x14e609049ec0a5c028cc123d2e038f6051c81426091c814f605049b8125d",
    "0x14c0a5f0494caa0e3d814a451070d01252029ec0a5d028c41251029ec0a3d",
    "0x1fc0a7b029f80a3904824f60500014ba093f0001c7b029540a5e04824f605",
    "0x14de0941014f605188143e0940814f605400147a0940014f6053f814b809",
    "0x2150883410180a85029ec0a81028d81284029ec0a0e028a81283029ec0a34",
    "0x14f60543814e60943814f605049541286029ec0a0911024127b028241c09",
    "0x2512053d814fa88070a41288029ec0a093a824fa053d8150e86071d01287",
    "0x380a2a04a300a7b029780a6f04a2c0a7b0297c0a1f04a280a7b02a240a71",
    "0x14a609049ec0a09070251c8d4622c0c0547014f605450146c0946814f605",
    "0x2520053d81520053982520053d814125504a3c0a7b028244409049ec0a59",
    "0x14e20949814f60548a481c2904a480a7b02824ea0948814f6054823c1c74",
    "0x1ec0a0e028a81295029ec0a1e029bc1294029ec0a180287c127c029ec0a93",
    "0x14120e02824127b0282412094ba592a94030152e053d814f8051b0252c05",
    "0x640a06048640a7b029640a5904824f60504838121e0c039301503038f60e",
    "0x880a7b028243c09049ec0a1f0286012210f838f6050d8142a090d814f605",
    "0x1432093a014f605108143209049ec0a2402860127312038f605110142a09",
    "0x38ea74070841206029ec0a060287c1274029ec0a740286c1275029ec0a73",
    "0x14e60938814f605048901229029ec0a0911024127b028241c0904a64127b",
    "0x14de2a070a4122a029ec0a093a824de053d814e229071d01271029ec0a71",
    "0x19c0a7b028540a6f048b80a7b028180a1f0489c0a7b028d80a71048d80a7b",
    "0x1ec0a0907024266e338b80c0509814f605138146c0937014f605070145409",
    "0xd0620e3d838661503164ce0919814f605198145c0919814f6050489c1209",
    "0x143e091c814f60504944125d029ec0a0928824127b028241c092f17c1c9a",
    "0x144a6552c9481251029ec0a390286c1253029ec0a5d0286c1255029ec0a31",
    "0x1ec0a0911024127b028241c09000153652029ec1c3d02800123d2e038f605",
    "0x24127b02a000a1804a05000e3d814fe050a824fe053d814a4053f024fc05",
    "0x17c128341038f60542a101c7f04a140a7b029f80a3104a100a7b02a040a1b",
    "0x1ec0a87028e412093d8150c052e8250e86071ec0a820297812093d8150605",
    "0x2514053d814b8050f82512053d81510051e82510053d814fa052e024fa05",
    "0x22d140602a340a7b02a240a3604a300a7b028380a2a04a2c0a7b028d00a6f",
    "0x14de0947814f6052e0143e0947014f60500014e209049ec0a09070251a8c",
    "0x2492290478180a92029ec0a8e028d81291029ec0a0e028a81290029ec0a34",
    "0x14f6053e014e6093e014f605049541293029ec0a0911024127b028241c09",
    "0x252c053d8152895070a41295029ec0a093a82528053d814f893071d0127c",
    "0x380a2a04a740a7b029780a6f04a700a7b0297c0a1f04a5c0a7b02a580a71",
    "0x14a609049ec0a09070253e9e4ea700c054f814f6054b8146c094f014f605",
    "0x2542053d81542053982542053d814125504a800a7b028244409049ec0a59",
    "0x14e20952014f6055128c1c2904a8c0a7b02824ea0951014f60550a801c74",
    "0x1ec0a0e028a812a7029ec0a1e029bc12a6029ec0a180287c12a5029ec0aa4",
    "0x14120e02824127b02824120954aa14ea60301552053d8154a051b0255005",
    "0x640a06048640a7b029640a5904824f60504838121e0c039541503038f60e",
    "0x880a7b028243c09049ec0a1f0286012210f838f6050d8142a090d814f605",
    "0x1432093a014f605108143209049ec0a2402860127312038f605110142a09",
    "0x38ea74070841206029ec0a060287c1274029ec0a740286c1275029ec0a73",
    "0x14e60938814f605048901229029ec0a0911024127b028241c0904aac127b",
    "0x14de2a070a4122a029ec0a093a824de053d814e229071d01271029ec0a71",
    "0x19c0a7b028540a6f048b80a7b028180a1f0489c0a7b028d80a71048d80a7b",
    "0x1ec0a0907024266e338b80c0509814f605138146c0937014f605070145409",
    "0xd0620e3d838661503164ce0919814f605198145c0919814f6050489c1209",
    "0x24b839071ec0a5d02a04125d029ec0a0940024127b028241c092f17c1cac",
    "0x1ec0a09110247a053d814aa0542024aa053d814b80541824127b028e40a82",
    "0x2500053d81462050f824127b029440a8604948a20e3d8147a0542824a605",
    "0x2000c7d04a0c0a7b0294c0a3104a080a7b029480a8704a040a7b028d00a6f",
    "0x24127b028241c09428155a84029ec1c7f02a20127f3f000b27b02a0d0481",
    "0x14ba09441f41c7b02a180a5e04824f60543814be0943a181c7b02a100a89",
    "0x14f605450147a0945014f60544814b80944814f605440147209049ec0a7d",
    "0xd8128e029ec0a0e028a8128d029ec0a7e029bc128c029ec0a000287c128b",
    "0x2520053d8150a0538824127b028241c0947a391a8c030151e053d8151605",
    "0x2400a3604a4c0a7b028380a2a04a480a7b029f80a6f04a440a7b028000a1f",
    "0x14125504a500a7b028244409049ec0a0907024f893492440c053e014f605",
    "0x25c0a7b02824ea094b014f6054aa501c7404a540a7b02a540a7304a540a7b",
    "0x1bc129e029ec0a5f0287c129d029ec0a9c029c4129c029ec0a964b8385209",
    "0x2813e9e0301542053d8153a051b02540053d8141c05150253e053d814bc05",
    "0x14f6050495412a2029ec0a0911024127b029640a5304824f6050483812a1",
    "0xa412a5029ec0a093a82548053d81546a2071d012a3029ec0aa3029cc12a3",
    "0x780a6f04aa00a7b028600a1f04a9c0a7b02a980a7104a980a7b02a914a0e",
    "0x255eae54aa00c0557814f605538146c0957014f60507014540954814f605",
    "0x16412093d814120e04878300e580540c0e3d8380a090701412093d8141209",
    "0x7c0a18048843e0e3d81436050a82436053d81432050302432053d814b205",
    "0x24127b028900a18049cc480e3d81444050a82444053d814121e04824f605",
    "0x180a1f049d00a7b029d00a1b049d40a7b029cc0a19049d00a7b028840a19",
    "0xa40a7b028244409049ec0a090702412b1049ec1c753a038420903014f605",
    "0x24ea0937814f605388a41c74049c40a7b029c40a73049c40a7b028244809",
    "0x1ec0a060287c1227029ec0a36029c41236029ec0a6f15038520915014f605",
    "0x1426053d8144e051b024dc053d8141c0515024ce053d8142a05378245c05",
    "0x2466053d81466051702466053d814122704824f6050483812133719c5c06",
    "0x1740a7b028251409049ec0a0907024bc5f072c86831071ec1c330a818b267",
    "0x170720e3a024b8053d814b80539824b8053d814128b048e40a7b028244409",
    "0x24a2053d814a60547024a6053d814128d049540a7b0282518091e814f605",
    "0x154b28f049f80a7b028000a3904824f60529014ba09001481c7b028f40a5e",
    "0x14122204a000a7b029fcba0e48824fe053d814fe0548024fe053d814fc51",
    "0x1781284029ec0a8302a381283029ec0a094982504053d814129204a040a7b",
    "0x2110459478250e053d8150c051c824127b02a140a5d04a190a0e3d8150205",
    "0x1ec0a094502510053d814fa8007244127d029ec0a7d02a40127d029ec0a87",
    "0x2280a5e04a300a7b02824f80945814f60504888128a029ec0a09110251205",
    "0x14f60547815280947814f605470147209049ec0a8d02974128e46838f605",
    "0x23c1293029ec0a92028e412093d81522052e8252491071ec0a8b029781290",
    "0x881294029ec0a7c4483922093e014f6053e01520093e014f60549a411859",
    "0x1ec0a9702a5c129c4b838f6054a0152c094b014f60504a541295029ec0a09",
    "0x25409f071ec0a9502978129e029ec0a9d02a74129d029ec0a9c02a701209",
    "0x15200951014f60550a792c594782542053d81540051c824127b02a7c0a5d",
    "0x1ec0aa302a5812a4029ec0a091102546053d81544880724412a2029ec0aa2",
    "0x2550053d8154e054e8254e053d8154c054e024127b02a940a9704a994a0e",
    "0xd00a6f04acc0a7b028c40a1f04824f605548153e09572a41c7b02aa00a9e",
    "0x2d96ab45981942095b014f6055201462095a814f6055701540095a014f605",
    "0x2e40a8904824f6050483812bb02ae972053d83970054402570b757964f605",
    "0x1ec0abe0297412bf5f038f6055e014bc09049ec0abd0297c12bd5e038f605",
    "0x7c12c2029ec0ac1028f412c1029ec0ac00297012c0029ec0abf028e41209",
    "0x1584051b0258a053d8141c051502588053d8156e053782586053d8155e05",
    "0x2bc0a1f04b1c0a7b02aec0a7104824f6050483812c662b11860602b180a7b",
    "0x14f605638146c0964814f6050701454094c814f6055b814de0964014f605",
    "0x3300a7b02824aa0965814f6050488812093d814120e04b299299640180aca",
    "0x38520967014f605049d412cd029ec0acc65838e80966014f60566014e609",
    "0x14bc0537825a2053d814be050f825a0053d8159e05388259e053d8159ace",
    "0x3812d469b49a20602b500a7b02b400a3604b4c0a7b028380a2a04b480a7b",
    "0x1cc12d6029ec0a092a825aa053d814122204824f6052c814a609049ec0a09",
    "0x35db00e14825b0053d814127504b5c0a7b02b59aa0e3a025ac053d815ac05",
    "0x14f6050f014de096d814f6050c0143e096d014f6056c814e2096c814f605",
    "0x240aa204b79badc6d8180ade029ec0ada028d812dd029ec0a0e028a812dc",
    "0x14f6052c814620903014f60504a8c1259029ec0a0e02838e80907014f605",
    "0x541cdf031641c7b070380a092ca9412180a8380a18029ec0a0602a901215",
    "0x780aa7048640a7b029640a1f048780a7b028180aa604824f605048381218",
    "0x143e090f814f6050c0155209049ec0a090702412e00282550090d814f605",
    "0x14f6050d8155e0910814f60504ab8121b029ec0a1f02a9c1219029ec0a15",
    "0x384e8053d83844050002444053d814e624072dc1273029ec0a21029cc1224",
    "0x15660938814f60514815700914814f6053a014fc09049ec0a0907024ea05",
    "0x381236150380a36029ec0a6f02ad0122a029ec0a190287c126f029ec0a71",
    "0x14f60513815680917014f6050c8143e0913814f6053a8156a09049ec0a09",
    "0x1ec0a590284c1259029ec0a0e02ad8120e029ec0a09028641267170380a67",
    "0x2436053d8140a051882432053d8142a0539824127b028180a33048540c0e",
    "0x600a310487c0a7b028254609049ec0a1e0297c121e0c038f6050d8641c34",
    "0x1412b904824f605048150409110841c0511014f6050f815480910814f605",
    "0x1640a7b028380a0e5e8241c053d8141c055e0241c053d81412bb048140a7b",
    "0x157c090a814f605031641cbd048180a7b028180abc048180a7b028257609",
    "0x1ec0a1902a1c1219029ec0a1e02b0012093d81430055f8243c18071ec0a15",
    "0x14f605030158609030381c7b028380ac204824f60504b04121b028143605",
    "0x243619071ec0a1e02854121e029ec0a1802b141218029ec0a1502b101215",
    "0x90440e3f82448053d814b2051882444053d81436050d824127b028640a18",
    "0x14f605048143e0939814f605070158609049ec0a210297c12210f838f605",
    "0x3181236029ec0a1f028c4122a029ec0a7302a1c126f029ec0a05029bc1271",
    "0x1ec0a09070245c057109c0a7b070a40a88048a4ea742c9ec0a36151bce206",
    "0xcc0a7b0284c0ac80484c0a7b029b8ce0e63824dc67071ec0a2702a241209",
    "0xc4b2052f814f6051981532091a014f6053a814de0918814f6053a0143e09",
    "0x14de092e814f6053a0143e092f014f605170159209049ec0a0907024be34",
    "0x244e09049ec0a0960824b8392e9640a5c029ec0a5e02a641239029ec0a75",
    "0x643c0e718602a0e3d8380c0504964ce0903014f605030145c0903014f605",
    "0x15ca1f02b9036053d9641c05650242a053d8142a050f824127b028241c09",
    "0x900a33049cc480e3d81444050982444053d81412cb04824f605048381221",
    "0x38f605388a41c34049c40a7b029640a31048a40a7b029cc0a7304824f605",
    "0xd01227029ec0a74028c41236029ec0a1b029cc12093d814ea052f824ea74",
    "0x600a6f048b80a7b028540a1f04824f60515014be09151bc1c7b0289c6c0e",
    "0x259809049ec0a090702412e602825500937014f60537814620933814f605",
    "0x14f60518814e609049ec0a33028cc123119838f60509814260909814f605",
    "0x24127b0297c0a5f0497c680e3d814ba5e070d0125d029ec0a59028c4125e",
    "0xd00a31049440a7b0287c0acd0494c0a7b028600a6f049540a7b028540a1f",
    "0x15ce00029ec1c3d02a20123d2e0e4b27b02948a2532a8199c0929014f605",
    "0xe40a1f04824f60540014be09401fc1c7b028000a8904824f60504838127e",
    "0x2412e602825500937014f6053f814620933814f6052e014de0917014f605",
    "0x1ec0a5c029bc1282029ec0a390287c1281029ec0a7e02b2412093d814120e",
    "0x14f60504b3c12093d814120e04a1106822c81508053d81502054c8250605",
    "0xc41289029ec0a87029cc12093d8150c05198250e86071ec0a850284c1285",
    "0x540a1f04824f60544014be09441f41c7b02a29120e1a02514053d814b205",
    "0x14f6053e814620948014f60510815a00947814f6050c014de0947014f605",
    "0x38129302ba124053d8391a05440251a8c45964f60548a411e8e033441291",
    "0x14f605458143e09049ec0a940297c12943e038f605490151209049ec0a09",
    "0x398e094a814f60504a8c126e029ec0a7c028c41267029ec0a8c029bc122e",
    "0x14ce053782538053d8145c050f8252e053d8152c05640252c053d8152a6e",
    "0x15260564824127b028241c094f275385902a780a7b02a5c0a9904a740a7b",
    "0x2880a7b02a7c0a9904a840a7b02a300a6f04a800a7b02a2c0a1f04a7c0a7b",
    "0x8812093d8141c0569024127b029640a5d04824f6050483812a250a80b205",
    "0x1ec0aa451838e80952014f60552014e60952014f6050495412a3029ec0a09",
    "0x2550053d8154e05648254e053d8154aa6070a412a6029ec0a093a8254a05",
    "0x2b9525902abc0a7b02aa00a9904ab80a7b028640a6f04aa40a7b028780a1f",
    "0x2e012093d8140a0519824127b028241c092c815d20e029ec1c0902b4c12af",
    "0x3812180281430053d8142a055a0242a053d8140c05598240c053d8141c05",
    "0x640a7b028143c0e3a0243c053d814122204824f6052c8143009049ec0a09",
    "0x15680910814f6050f8156a090f814f6050c86c1c290486c0a7b02824ea09",
    "0x24b267048180a7b028180a2e048180a7b028244e09110140a22029ec0a21",
    "0x7c121b029ec0a0e02b1012093d814120e048643c0e750602a0e3d8380c05",
    "0x15aa09049ec0a09070244405758843e0e3d83836056a0242a053d8142a05",
    "0x25d80504aa01274029ec0a2402b5c1273029ec0a1f02b581224029ec0a21",
    "0x1ec0a2202b581229029ec0a7502b601275029ec0a0951824127b028241c09",
    "0x24f60504838126f02bb4e2053d838e8056c824e8053d81452056b824e605",
    "0x14b205188245c053d81454055e02454053d814e2056d024127b028258209",
    "0x14f605398158009049ec0a270297c12271b038f605338b81cdb0499c0a7b",
    "0xc4125e029ec0a6e02a1c125f029ec0a18029bc1234029ec0a150287c126e",
    "0xe40a7b070c40a88048c466132c9ec0a5d2f17c680663024ba053d8146c05",
    "0x7c12093d814aa052f824aa3d071ec0a3902a2412093d814120e049700aee",
    "0x3bc0a0954024a4053d8147a0518824a2053d814660537824a6053d8142605",
    "0xcc0a6f049f80a7b0284c0a1f048000a7b029700ac904824f605048381209",
    "0x1412c104824f6050483812803f9f8b20540014f6050001532093f814f605",
    "0x14de0929814f6050a8143e09049ec0a7302b7012093d814de052f824127b",
    "0x1ec0a81290398e0940814f60504a8c1252029ec0a59028c41251029ec0a18",
    "0x250a053d814a2053782508053d814a6050f82506053d8150405640250405",
    "0x14ba09049ec0a0960824127b028241c0943215085902a180a7b02a0c0a99",
    "0x1cc127d029ec0a092a8250e053d814122204824f605070150c09049ec0a59",
    "0x221120e1482512053d814127504a200a7b029f50e0e3a024fa053d814fa05",
    "0x14f6050c814de0946014f6050f0143e0945814f60545015920945014f605",
    "0x38f60507015ba09049ec0a09608251c8d461640a8e029ec0a8b02a64128d",
    "0x243c053d81430057882430053d8142a05780242a053d8140c056f0240c0e",
    "0x1640a31048880a7b0286c0a1b04824f6050c81430090d8641c7b028780a15",
    "0x1ec0a0e02b7812093d81442052f824421f071ec0a2411038fe0912014f605",
    "0x2454053d814e60579024de053d8140a0537824e2053d81412050f824e605",
    "0x14f60e148151009149d4e8593d8146c2a379c40cf3048d80a7b0287c0a31",
    "0x14f6053719c1cc7049b8ce0e3d8144e0544824127b028241c0917015e827",
    "0x2641234029ec0a75029bc1231029ec0a740287c1233029ec0a1302b201213",
    "0x7c125e029ec0a2e02b2412093d814120e0497c68312c814be053d8146605",
    "0x170725d2c814b8053d814bc054c82472053d814ea0537824ba053d814e805",
    "0x540a59048540a7b028180af6048181c0e3d8141c057a824127b028258209",
    "0x1ec0a1902860121b0c838f6050f0142a090f014f6050c0140c090c014f605",
    "0x843e0e3d8144822071fc1224029ec0a59028c41222029ec0a1b0286c1209",
    "0x140a6f049c40a7b028240a1f049cc0a7b028380af604824f60510814be09",
    "0xd8546f38819ee091b014f6050f814620915014f60539815a00937814f605",
    "0x9c0a8904824f60504838122e02be04e053d83852054402452753a164f605",
    "0x14e8050f82466053d81426056402426053d814dc670731c126e33838f605",
    "0x241c092f8d062590297c0a7b028cc0a99048d00a7b029d40a6f048c40a7b",
    "0xe40a7b029d40a6f049740a7b029d00a1f049780a7b028b80ac904824f605",
    "0x1ec0a0e02a6c120e029ec0a0902be4125c1c974b2052e014f6052f0153209",
    "0x2432053d8142a0539824127b028180a33048540c0e3d814b20509824b205",
    "0x254609049ec0a1e0297c121e0c038f6050d8641c340486c0a7b028140a31",
    "0x25f409110841c0511014f6050f815480910814f6050c01462090f814f605",
    "0x19c1218029ec0a18028b81218029ec0a0913824127b02825f6090a814f605",
    "0x840a7b028380af004824f60504838121f0d839f8190f038f60e0c0141259",
    "0x24127b028241c0939815fc2411038f60e10815fa090f014f6050f0143e09",
    "0x1412a8049d40a7b029d00b01048180a7b028880b00049d00a7b028900aff",
    "0x1cc0b00049c40a7b028a40a9a048a40a7b028254609049ec0a09070241302",
    "0x1ec1c7502c101206029ec0a060a83a06093a814f60538816020903014f605",
    "0x7c1236029ec0a6f02c1812093d81412c104824f60504838122a02c14de05",
    "0x14b2051882466053d8146c058382426053d814320537824dc053d8143c05",
    "0x17c0b091a014f60e338151009338b84e593d8146233099b80d08048c40a7b",
    "0xe40a5f048e4ba0e3d814680544824bc053d8140c054e024127b028241c09",
    "0x1480a7b029780af2049440a7b028b80a6f0494c0a7b0289c0a1f04824f605",
    "0x1ec1c5502a2012551e970b27b02800a45129819e60900014f6052e8146209",
    "0x24f60540814be0940a001c7b029f80a8904824f60504838127f02c28fc05",
    "0x25500942014f60540014620941814f6051e814de0941014f6052e0143e09",
    "0x1bc1286029ec0a5c0287c1285029ec0a7f02b2412093d814120e048261605",
    "0x43012093d814120e049f50e862c814fa053d8150a054c8250e053d8147a05",
    "0x1ec0a2e029bc1289029ec0a270287c1288029ec0a5f02b2412093d8140c05",
    "0x24f60504b0412093d814120e04a2d14892c81516053d81510054c8251405",
    "0x1432053782504053d8143c050f824127b028180b0c04824f60515014be09",
    "0x2340a7b02a31080e6382518053d81412a304a100a7b029640a3104a0c0a7b",
    "0x15320948014f60541814de0947814f605410143e0947014f605468159009",
    "0x142a0586824127b028258209049ec0a09070252290479640a91029ec0a8e",
    "0x14125504a480a7b028244409049ec0a0e02c3812093d814b2052e824127b",
    "0x2500a7b02824ea093e014f60549a481c7404a4c0a7b02a4c0a7304a4c0a7b",
    "0x1bc1297029ec0a1b0287c1296029ec0a9502b241295029ec0a7c4a0385209",
    "0x240c053d814122704a7538972c8153a053d8152c054c82538053d8143e05",
    "0x1ec0a0907024321e0743c3015071ec1c0602824b267048180a7b028180a2e",
    "0x444421f071ec1c1b02c401215029ec0a150287c121b029ec0a0e029641209",
    "0x16280939814f6050f816260912014f605108162409049ec0a09070244405",
    "0x1530093a814f60504a8c12093d814120e048262a0504aa01274029ec0a24",
    "0x1ec1c7402c581274029ec0a2902c501273029ec0a2202c4c1229029ec0a75",
    "0x1cc122a029ec0a7102c6012093d81412c104824f60504838126f02c5ce205",
    "0x14be09138d81c7b0299c5c0e1a024ce053d814b205188245c053d8145405",
    "0x14f6050c014de091a014f6050a8143e0937014f605398147209049ec0a27",
    "0x164f6052e978be34033dc125d029ec0a36028c4125e029ec0a6e02b40125f",
    "0x38f6051c8151209049ec0a0907024b8058c8e40a7b070c40a88048c46613",
    "0xc41251029ec0a33029bc1253029ec0a130287c12093d814aa052f824aa3d",
    "0x2400053d814b80564824127b028241c0904c680a0954024a4053d8147a05",
    "0x1fcfc5902a000a7b028000a99049fc0a7b028cc0a6f049f80a7b0284c0a1f",
    "0x24f605398163609049ec0a6f0297c12093d81412c104824f605048381280",
    "0x25460929014f6052c814620928814f6050c014de0929814f6050a8143e09",
    "0x1ec0a530287c1283029ec0a8202b201282029ec0a81290398e0940814f605",
    "0x14120e04a190a842c8150c053d81506054c8250a053d814a205378250805",
    "0x1ec0a0911024127b028380a5304824f6052c814ba09049ec0a0960824127b",
    "0x2510053d814fa87071d0127d029ec0a7d029cc127d029ec0a092a8250e05",
    "0x780a1f04a2c0a7b02a280ac904a280a7b02a21120e1482512053d8141275",
    "0x304128e46a30b20547014f60545815320946814f6050c814de0946014f605",
    "0x600ad20487830152c9ec0a0602c74120607038f605070163809049ec0a09",
    "0x2442053d814b205188243e053d8142a0539824127b028780a5304824f605",
    "0x474122207038f605070163809049ec0a1b0297c121b0c838f6051087c1c34",
    "0x1412050f824127b029d00a5304824f6051201466093a1cc48593d8144405",
    "0x9c0a7b028640a31048d80a7b029cc0b1e048a80a7b028140a6f049bc0a7b",
    "0x241c09338163e2e029ec1c7102a201271149d4b27b0289c6c2a378194209",
    "0xccb27b028380b1d04824f60509814be09099b81c7b028b80a8904824f605",
    "0x14de091c814f6053a8143e09049ec0a3102b4812093d8146605198246831",
    "0xf4b839033441255029ec0a6e028c4123d029ec0a3402b40125c029ec0a29",
    "0x151209049ec0a0907024a2059014c0a7b071740a8804974bc5f2c9ec0a55",
    "0x17c0a1f049fc0a7b029f80ac8049f80a7b02800a40e638240052071ec0a53",
    "0x38128240a00b20541014f6053f815320940814f6052f014de0940014f605",
    "0x14f6052f014de0942014f6052f8143e0941814f605288159209049ec0a09",
    "0x24f605070164209049ec0a09070250c85421640a86029ec0a8302a641285",
    "0x15320944014f60514814de093e814f6053a8143e0943814f605338159209",
    "0x1812590701412512994812060f94ca409031c512883e9640a89029ec0a87",
    "0x380a092894ca4090307ca652048194a590701412512994812060f94ca409",
    "0x166480504838320e0c8181d232c8380a092894ca4090307ca6520481a4459",
    "0x240d27049780a5d02c980a09070641c191703a4a0e02824b809070b85c09",
    "0x3a525907014125f29024b219371481206941641c050497ca4092c864bc52",
    "0x164326f290240d2b2c8380a092f94812590c978a409034a80a092e0140c67",
    "0x641c191383a5a5907014125f29024b2190f9481206961641c050497ca409",
    "0x17ca4092c8643e520481a5e5907014125f29024b2190f148120697014120e",
    "0x4c4b20e02824be52049643222290240d302c8380a09"
  ],
  "sierra_program_debug_info": {
    "type_names": [
      [
        0,
        "RangeCheck"
      ],
      [
        1,
        "Box<felt252>"
      ],
      [
        2,
        "Unit"
      ],
      [
        3,
        "core::option::Option::<core::box::Box::<@core::felt252>>"
      ],
      [
        4,
        "felt252"
      ],
      [
        5,
        "Array<dojo::database::schema::Member>"
      ],
      [
        6,
        "Snapshot<Array<dojo::database::schema::Member>>"
      ],
      [
        7,
        "core::array::Span::<dojo::database::schema::Member>"
      ],
      [
        8,
        "Array<felt252>"
      ],
      [
        9,
        "Snapshot<Array<felt252>>"
      ],
      [
        10,
        "core::array::Span::<core::felt252>"
      ],
      [
        11,
        "dojo::database::schema::MemberType"
      ],
      [
        12,
        "dojo::database::schema::Member"
      ],
      [
        13,
        "Box<dojo::database::schema::Member>"
      ],
      [
        14,
        "core::option::Option::<core::box::Box::<@dojo::database::schema::Member>>"
      ],
      [
        15,
        "Box<dojo::database::schema::Member>"
      ],
      [
        16,
        "Uninitialized<Snapshot<Array<dojo::database::schema::Member>>>"
      ],
      [
        17,
        "Box<u8>"
      ],
      [
        18,
        "core::option::Option::<core::box::Box::<@core::integer::u8>>"
      ],
      [
        19,
        "core::array::Span::<dojo::database::schema::Member>"
      ],
      [
        20,
        "Array<u8>"
      ],
      [
        21,
        "Snapshot<Array<u8>>"
      ],
      [
        22,
        "u8"
      ],
      [
        23,
        "u32"
      ],
      [
        24,
        "core::result::Result::<core::integer::u32, core::integer::u32>"
      ],
      [
        25,
        "dojo::database::schema::MemberType"
      ],
      [
        26,
        "dojo::database::schema::Member"
      ],
      [
        27,
        "Tuple<Array<felt252>, Unit>"
      ],
      [
        28,
        "core::panics::Panic"
      ],
      [
        29,
        "Tuple<core::panics::Panic, Array<felt252>>"
      ],
      [
        30,
        "core::panics::PanicResult::<(core::array::Array::<core::felt252>, ())>"
      ],
      [
        31,
        "core::array::Span::<core::integer::u8>"
      ],
      [
        32,
        "dojo_examples::components::moves::ContractState"
      ],
      [
        33,
        "Tuple<u32>"
      ],
      [
        34,
        "core::panics::PanicResult::<(core::integer::u32,)>"
      ],
      [
        35,
        "Tuple<core::array::Span::<core::felt252>>"
      ],
      [
        36,
        "BuiltinCosts"
      ],
      [
        37,
        "System"
      ],
      [
        38,
        "core::panics::PanicResult::<(core::array::Span::<core::felt252>,)>"
      ],
      [
        39,
        "GasBuiltin"
      ]
    ],
    "libfunc_names": [
      [
        0,
        "revoke_ap_tracking"
      ],
      [
        1,
        "withdraw_gas"
      ],
      [
        2,
        "branch_align"
      ],
      [
        3,
        "struct_deconstruct<core::array::Span::<core::felt252>>"
      ],
      [
        4,
        "array_len<felt252>"
      ],
      [
        5,
        "snapshot_take<u32>"
      ],
      [
        6,
        "drop<u32>"
      ],
      [
        7,
        "u32_const<0>"
      ],
      [
        8,
        "rename<u32>"
      ],
      [
        9,
        "store_temp<u32>"
      ],
      [
        10,
        "store_temp<RangeCheck>"
      ],
      [
        11,
        "u32_eq"
      ],
      [
        12,
        "array_new<felt252>"
      ],
      [
        13,
        "felt252_const<7733229381460288120802334208475838166080759535023995805565484692595>"
      ],
      [
        14,
        "store_temp<felt252>"
      ],
      [
        15,
        "array_append<felt252>"
      ],
      [
        16,
        "struct_construct<core::panics::Panic>"
      ],
      [
        17,
        "struct_construct<Tuple<core::panics::Panic, Array<felt252>>>"
      ],
      [
        18,
        "enum_init<core::panics::PanicResult::<(core::array::Span::<core::felt252>,)>, 1>"
      ],
      [
        19,
        "store_temp<GasBuiltin>"
      ],
      [
        20,
        "store_temp<System>"
      ],
      [
        21,
        "store_temp<core::panics::PanicResult::<(core::array::Span::<core::felt252>,)>>"
      ],
      [
        22,
        "get_builtin_costs"
      ],
      [
        23,
        "store_temp<BuiltinCosts>"
      ],
      [
        24,
        "withdraw_gas_all"
      ],
      [
        25,
        "felt252_const<332582511987>"
      ],
      [
        26,
        "snapshot_take<felt252>"
      ],
      [
        27,
        "drop<felt252>"
      ],
      [
        28,
        "store_temp<Array<felt252>>"
      ],
      [
        29,
        "function_call<user@core::Felt252Serde::serialize>"
      ],
      [
        30,
        "drop<Unit>"
      ],
      [
        31,
        "snapshot_take<Array<felt252>>"
      ],
      [
        32,
        "drop<Array<felt252>>"
      ],
      [
        33,
        "struct_construct<core::array::Span::<core::felt252>>"
      ],
      [
        34,
        "struct_construct<Tuple<core::array::Span::<core::felt252>>>"
      ],
      [
        35,
        "enum_init<core::panics::PanicResult::<(core::array::Span::<core::felt252>,)>, 0>"
      ],
      [
        36,
        "felt252_const<375233589013918064796019>"
      ],
      [
        37,
        "drop<core::array::Span::<core::felt252>>"
      ],
      [
        38,
        "u32_const<1>"
      ],
      [
        39,
        "function_call<user@core::integer::U32Add::add>"
      ],
      [
        40,
        "enum_match<core::panics::PanicResult::<(core::integer::u32,)>>"
      ],
      [
        41,
        "struct_deconstruct<Tuple<u32>>"
      ],
      [
        42,
        "function_call<user@core::integer::U32Serde::serialize>"
      ],
      [
        43,
        "struct_construct<dojo_examples::components::moves::ContractState>"
      ],
      [
        44,
        "snapshot_take<dojo_examples::components::moves::ContractState>"
      ],
      [
        45,
        "drop<dojo_examples::components::moves::ContractState>"
      ],
      [
        46,
        "store_temp<dojo_examples::components::moves::ContractState>"
      ],
      [
        47,
        "function_call<user@dojo_examples::components::moves::layout>"
      ],
      [
        48,
        "snapshot_take<core::array::Span::<core::integer::u8>>"
      ],
      [
        49,
        "drop<core::array::Span::<core::integer::u8>>"
      ],
      [
        50,
        "store_temp<core::array::Span::<core::integer::u8>>"
      ],
      [
        51,
        "function_call<user@core::array::SpanSerde::<core::integer::u8, core::integer::U8Serde, core::integer::u8Drop>::serialize>"
      ],
      [
        52,
        "enum_match<core::panics::PanicResult::<(core::array::Array::<core::felt252>, ())>>"
      ],
      [
        53,
        "struct_deconstruct<Tuple<Array<felt252>, Unit>>"
      ],
      [
        54,
        "array_new<dojo::database::schema::Member>"
      ],
      [
        55,
        "felt252_const<7038329>"
      ],
      [
        56,
        "felt252_const<123610794124658>"
      ],
      [
        57,
        "felt252_const<350143988124253942471421204072067955>"
      ],
      [
        58,
        "enum_init<dojo::database::schema::MemberType, 0>"
      ],
      [
        59,
        "struct_construct<dojo::database::schema::Member>"
      ],
      [
        60,
        "store_temp<dojo::database::schema::Member>"
      ],
      [
        61,
        "array_append<dojo::database::schema::Member>"
      ],
      [
        62,
        "felt252_const<2110237429278632930919>"
      ],
      [
        63,
        "felt252_const<30008>"
      ],
      [
        64,
        "felt252_const<1261976844011406192494>"
      ],
      [
        65,
        "enum_init<dojo::database::schema::MemberType, 2>"
      ],
      [
        66,
        "felt252_const<2198221100420265665039750924955502>"
      ],
      [
        67,
        "snapshot_take<Array<dojo::database::schema::Member>>"
      ],
      [
        68,
        "drop<Array<dojo::database::schema::Member>>"
      ],
      [
        69,
        "struct_construct<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        70,
        "enum_init<dojo::database::schema::MemberType, 1>"
      ],
      [
        71,
        "snapshot_take<dojo::database::schema::MemberType>"
      ],
      [
        72,
        "drop<dojo::database::schema::MemberType>"
      ],
      [
        73,
        "store_temp<dojo::database::schema::MemberType>"
      ],
      [
        74,
        "function_call<user@dojo::database::schema::MemberTypeSerde::serialize>"
      ],
      [
        75,
        "rename<felt252>"
      ],
      [
        76,
        "struct_construct<Unit>"
      ],
      [
        77,
        "store_temp<Unit>"
      ],
      [
        78,
        "u32_overflowing_add"
      ],
      [
        79,
        "enum_init<core::result::Result::<core::integer::u32, core::integer::u32>, 0>"
      ],
      [
        80,
        "store_temp<core::result::Result::<core::integer::u32, core::integer::u32>>"
      ],
      [
        81,
        "jump"
      ],
      [
        82,
        "enum_init<core::result::Result::<core::integer::u32, core::integer::u32>, 1>"
      ],
      [
        83,
        "felt252_const<155785504323917466144735657540098748279>"
      ],
      [
        84,
        "rename<core::result::Result::<core::integer::u32, core::integer::u32>>"
      ],
      [
        85,
        "function_call<user@core::result::ResultTraitImpl::<core::integer::u32, core::integer::u32>::expect::<core::integer::u32Drop>>"
      ],
      [
        86,
        "struct_construct<Tuple<u32>>"
      ],
      [
        87,
        "enum_init<core::panics::PanicResult::<(core::integer::u32,)>, 0>"
      ],
      [
        88,
        "store_temp<core::panics::PanicResult::<(core::integer::u32,)>>"
      ],
      [
        89,
        "enum_init<core::panics::PanicResult::<(core::integer::u32,)>, 1>"
      ],
      [
        90,
        "u32_to_felt252"
      ],
      [
        91,
        "array_new<u8>"
      ],
      [
        92,
        "u8_const<8>"
      ],
      [
        93,
        "store_temp<u8>"
      ],
      [
        94,
        "array_append<u8>"
      ],
      [
        95,
        "snapshot_take<Array<u8>>"
      ],
      [
        96,
        "drop<Array<u8>>"
      ],
      [
        97,
        "struct_construct<core::array::Span::<core::integer::u8>>"
      ],
      [
        98,
        "disable_ap_tracking"
      ],
      [
        99,
        "dup<core::array::Span::<core::integer::u8>>"
      ],
      [
        100,
        "rename<core::array::Span::<core::integer::u8>>"
      ],
      [
        101,
        "struct_deconstruct<core::array::Span::<core::integer::u8>>"
      ],
      [
        102,
        "array_len<u8>"
      ],
      [
        103,
        "function_call<user@core::array::serialize_array_helper::<core::integer::u8, core::integer::U8Serde, core::integer::u8Drop>>"
      ],
      [
        104,
        "struct_construct<Tuple<Array<felt252>, Unit>>"
      ],
      [
        105,
        "enum_init<core::panics::PanicResult::<(core::array::Array::<core::felt252>, ())>, 0>"
      ],
      [
        106,
        "store_temp<core::panics::PanicResult::<(core::array::Array::<core::felt252>, ())>>"
      ],
      [
        107,
        "enum_init<core::panics::PanicResult::<(core::array::Array::<core::felt252>, ())>, 1>"
      ],
      [
        108,
        "enum_match<dojo::database::schema::MemberType>"
      ],
      [
        109,
        "felt252_const<0>"
      ],
      [
        110,
        "felt252_const<1>"
      ],
      [
        111,
        "store_temp<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        112,
        "function_call<user@core::array::SpanSerde::<dojo::database::schema::Member, dojo::database::schema::MemberSerde, dojo::database::schema::MemberDrop>::serialize>"
      ],
      [
        113,
        "felt252_const<2>"
      ],
      [
        114,
        "store_temp<core::array::Span::<core::felt252>>"
      ],
      [
        115,
        "function_call<user@core::array::SpanSerde::<core::felt252, core::Felt252Serde, core::felt252Drop>::serialize>"
      ],
      [
        116,
        "drop<dojo::database::schema::MemberType>"
      ],
      [
        117,
        "enum_match<core::result::Result::<core::integer::u32, core::integer::u32>>"
      ],
      [
        118,
        "array_snapshot_pop_front<u8>"
      ],
      [
        119,
        "enum_init<core::option::Option::<core::box::Box::<@core::integer::u8>>, 0>"
      ],
      [
        120,
        "store_temp<Snapshot<Array<u8>>>"
      ],
      [
        121,
        "store_temp<core::option::Option::<core::box::Box::<@core::integer::u8>>>"
      ],
      [
        122,
        "enum_init<core::option::Option::<core::box::Box::<@core::integer::u8>>, 1>"
      ],
      [
        123,
        "enum_match<core::option::Option::<core::box::Box::<@core::integer::u8>>>"
      ],
      [
        124,
        "unbox<u8>"
      ],
      [
        125,
        "function_call<user@core::integer::U8Serde::serialize>"
      ],
      [
        126,
        "drop<Snapshot<Array<u8>>>"
      ],
      [
        127,
        "dup<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        128,
        "rename<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        129,
        "struct_deconstruct<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        130,
        "array_len<dojo::database::schema::Member>"
      ],
      [
        131,
        "store_temp<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        132,
        "function_call<user@core::array::serialize_array_helper::<dojo::database::schema::Member, dojo::database::schema::MemberSerde, dojo::database::schema::MemberDrop>>"
      ],
      [
        133,
        "dup<core::array::Span::<core::felt252>>"
      ],
      [
        134,
        "rename<core::array::Span::<core::felt252>>"
      ],
      [
        135,
        "function_call<user@core::array::serialize_array_helper::<core::felt252, core::Felt252Serde, core::felt252Drop>>"
      ],
      [
        136,
        "rename<u8>"
      ],
      [
        137,
        "u8_to_felt252"
      ],
      [
        138,
        "alloc_local<Snapshot<Array<dojo::database::schema::Member>>>"
      ],
      [
        139,
        "finalize_locals"
      ],
      [
        140,
        "array_snapshot_pop_front<dojo::database::schema::Member>"
      ],
      [
        141,
        "enum_init<core::option::Option::<core::box::Box::<@dojo::database::schema::Member>>, 0>"
      ],
      [
        142,
        "store_temp<Snapshot<Array<dojo::database::schema::Member>>>"
      ],
      [
        143,
        "store_temp<core::option::Option::<core::box::Box::<@dojo::database::schema::Member>>>"
      ],
      [
        144,
        "enum_init<core::option::Option::<core::box::Box::<@dojo::database::schema::Member>>, 1>"
      ],
      [
        145,
        "store_local<Snapshot<Array<dojo::database::schema::Member>>>"
      ],
      [
        146,
        "enum_match<core::option::Option::<core::box::Box::<@dojo::database::schema::Member>>>"
      ],
      [
        147,
        "unbox<dojo::database::schema::Member>"
      ],
      [
        148,
        "store_temp<dojo::database::schema::Member>"
      ],
      [
        149,
        "function_call<user@dojo::database::schema::MemberSerde::serialize>"
      ],
      [
        150,
        "drop<Snapshot<Array<dojo::database::schema::Member>>>"
      ],
      [
        151,
        "drop<Uninitialized<Snapshot<Array<dojo::database::schema::Member>>>>"
      ],
      [
        152,
        "drop<core::array::Span::<dojo::database::schema::Member>>"
      ],
      [
        153,
        "array_snapshot_pop_front<felt252>"
      ],
      [
        154,
        "enum_init<core::option::Option::<core::box::Box::<@core::felt252>>, 0>"
      ],
      [
        155,
        "store_temp<Snapshot<Array<felt252>>>"
      ],
      [
        156,
        "store_temp<core::option::Option::<core::box::Box::<@core::felt252>>>"
      ],
      [
        157,
        "enum_init<core::option::Option::<core::box::Box::<@core::felt252>>, 1>"
      ],
      [
        158,
        "enum_match<core::option::Option::<core::box::Box::<@core::felt252>>>"
      ],
      [
        159,
        "unbox<felt252>"
      ],
      [
        160,
        "drop<Snapshot<Array<felt252>>>"
      ],
      [
        161,
        "dup<dojo::database::schema::Member>"
      ],
      [
        162,
        "struct_deconstruct<dojo::database::schema::Member>"
      ],
      [
        163,
        "store_temp<dojo::database::schema::MemberType>"
      ],
      [
        164,
        "drop<dojo::database::schema::Member>"
      ]
    ],
    "user_func_names": [
      [
        0,
        "dojo_examples::components::moves::__wrapper_name"
      ],
      [
        1,
        "dojo_examples::components::moves::__wrapper_size"
      ],
      [
        2,
        "dojo_examples::components::moves::__wrapper_layout"
      ],
      [
        3,
        "dojo_examples::components::moves::__wrapper_schema"
      ],
      [
        4,
        "core::Felt252Serde::serialize"
      ],
      [
        5,
        "core::integer::U32Add::add"
      ],
      [
        6,
        "core::integer::U32Serde::serialize"
      ],
      [
        7,
        "dojo_examples::components::moves::layout"
      ],
      [
        8,
        "core::array::SpanSerde::<core::integer::u8, core::integer::U8Serde, core::integer::u8Drop>::serialize"
      ],
      [
        9,
        "dojo::database::schema::MemberTypeSerde::serialize"
      ],
      [
        10,
        "core::result::ResultTraitImpl::<core::integer::u32, core::integer::u32>::expect::<core::integer::u32Drop>"
      ],
      [
        11,
        "core::array::serialize_array_helper::<core::integer::u8, core::integer::U8Serde, core::integer::u8Drop>"
      ],
      [
        12,
        "core::array::SpanSerde::<dojo::database::schema::Member, dojo::database::schema::MemberSerde, dojo::database::schema::MemberDrop>::serialize"
      ],
      [
        13,
        "core::array::SpanSerde::<core::felt252, core::Felt252Serde, core::felt252Drop>::serialize"
      ],
      [
        14,
        "core::integer::U8Serde::serialize"
      ],
      [
        15,
        "core::array::serialize_array_helper::<dojo::database::schema::Member, dojo::database::schema::MemberSerde, dojo::database::schema::MemberDrop>"
      ],
      [
        16,
        "core::array::serialize_array_helper::<core::felt252, core::Felt252Serde, core::felt252Drop>"
      ],
      [
        17,
        "dojo::database::schema::MemberSerde::serialize"
      ]
    ]
  },
  "contract_class_version": "0.1.0",
  "entry_points_by_type": {
    "EXTERNAL": [
      {
        "selector": "0xdea85a028ad086e64e60d66d1b2f359e0873ac03939f3d9979946eba52838c",
        "function_idx": 1
      },
      {
        "selector": "0x11efd13169e3bceace525b23b7f968b3cc611248271e35f04c5c917311fc7f7",
        "function_idx": 3
      },
      {
        "selector": "0x35d4fbd9980b1d2fbb4ecd1486945d1519587f22b699c5dc9b2d024982a1219",
        "function_idx": 2
      },
      {
        "selector": "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60",
        "function_idx": 0
      }
    ],
    "L1_HANDLER": [],
    "CONSTRUCTOR": []
  },
  "abi": [
    {
      "type": "function",
      "name": "name",
      "inputs": [],
      "outputs": [
        {
          "type": "core::felt252"
        }
      ],
      "state_mutability": "view"
    },
    {
      "type": "function",
      "name": "size",
      "inputs": [],
      "outputs": [
        {
          "type": "core::integer::u32"
        }
      ],
      "state_mutability": "view"
    },
    {
      "type": "struct",
      "name": "core::array::Span::<core::integer::u8>",
      "members": [
        {
          "name": "snapshot",
          "type": "@core::array::Array::<core::integer::u8>"
        }
      ]
    },
    {
      "type": "function",
      "name": "layout",
      "inputs": [],
      "outputs": [
        {
          "type": "core::array::Span::<core::integer::u8>"
        }
      ],
      "state_mutability": "view"
    },
    {
      "type": "struct",
      "name": "core::array::Span::<core::felt252>",
      "members": [
        {
          "name": "snapshot",
          "type": "@core::array::Array::<core::felt252>"
        }
      ]
    },
    {
      "type": "struct",
      "name": "dojo::database::schema::Member",
      "members": [
        {
          "name": "name",
          "type": "core::felt252"
        },
        {
          "name": "ty",
          "type": "dojo::database::schema::MemberType"
        },
        {
          "name": "attrs",
          "type": "core::array::Span::<core::felt252>"
        }
      ]
    },
    {
      "type": "struct",
      "name": "core::array::Span::<dojo::database::schema::Member>",
      "members": [
        {
          "name": "snapshot",
          "type": "@core::array::Array::<dojo::database::schema::Member>"
        }
      ]
    },
    {
      "type": "enum",
      "name": "dojo::database::schema::MemberType",
      "variants": [
        {
          "name": "Simple",
          "type": "core::felt252"
        },
        {
          "name": "Complex",
          "type": "core::array::Span::<dojo::database::schema::Member>"
        },
        {
          "name": "Enum",
          "type": "core::array::Span::<core::felt252>"
        }
      ]
    },
    {
      "type": "function",
      "name": "schema",
      "inputs": [],
      "outputs": [
        {
          "type": "dojo::database::schema::MemberType"
        }
      ],
      "state_mutability": "view"
    },
    {
      "type": "event",
      "name": "dojo_examples::components::moves::Event",
      "kind": "enum",
      "variants": []
    }
  ]
}
@tarrencev tarrencev added the bug Something isn't working label Sep 14, 2023
@tarrencev
Copy link
Contributor Author

Here is a minimal reproduction:

...
#[starknet::contract]
mod reproduce {
    #[storage]
    struct Storage {}

    #[derive(Copy, Drop, Serde)]
    enum MemberType {
        Simple: felt252,
        Complex: Span<Member>,
    }

    #[derive(Copy, Drop, Serde)]
    struct Member {
        name: felt252,
        ty: MemberType,
    }

    trait SchemaIntrospection<T> {
        fn ty() -> MemberType;
    }

    struct Position {
        x: felt252,
    }

    impl PositionSchemaIntrospection of SchemaIntrospection<Position> {
        #[inline(always)]
        fn ty() -> MemberType {
            MemberType::Simple('ty')
        }
    }

    #[external(v0)]
    fn schema(self: @ContractState) -> MemberType {
        SchemaIntrospection::<Position>::ty()
    }
}

If we modify MemberType to remove Complex it works

@orizi orizi linked a pull request Sep 18, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant