diff --git a/encoding/codecv7_test.go b/encoding/codecv7_test.go index 65a09a9..8c7e0ed 100644 --- a/encoding/codecv7_test.go +++ b/encoding/codecv7_test.go @@ -140,15 +140,15 @@ func TestCodecV7DABatchHashEncodeDecode(t *testing.T) { name: "Batch with 3 blocks, blocktrace 02, 03, 04", batch: &Batch{ InitialL1MessageIndex: 10, - LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1c000000000"), + LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1cc00000000"), Blocks: []*Block{ readBlockFromJSON(t, "testdata/blockTrace_02.json"), readBlockFromJSON(t, "testdata/blockTrace_03.json"), replaceBlockNumber(readBlockFromJSON(t, "testdata/blockTrace_04.json"), 4), }, }, - expectedEncode: "07000000000000000001a81a775d8475e6ad5ae8dfe907d0e8755e968549bce449d1521ac2f1a1ca670000000000000000000000000000000000000000000000000000000000000000", - expectedHash: "0x5b6fe96b62980feb492c511a0fe232cbfdf15a2f7b927142a54680e76cee8ee2", + expectedEncode: "07000000000000000001f6f07ae03e8a6ead4384c206ac3d38cd453c1da0516dad7608713bd35bb92d0000000000000000000000000000000000000000000000000000000000000000", + expectedHash: "0x41c47973d04ecb5d10eca505f0a73964976d7dd4d32f0970d29b006650c85b20", }, } @@ -240,11 +240,11 @@ func TestCodecV7BlobEncodingAndHashing(t *testing.T) { ParentBatchHash: common.Hash{}, InitialL1MessageIndex: 10, InitialL1MessageQueueHash: common.Hash{}, - LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1c000000000"), + LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1cc00000000"), Blocks: []*Block{replaceBlockNumber(readBlockFromJSON(t, "testdata/blockTrace_04.json"), 4)}, }, - expectedBlobEncode: "00070000650120a6050300f40400000a00c7436aaec2cfaf39d5be02a02c6ac200089ab264c3e0fd142db682f1c000040001646b6e137a120000020001df0b8000825dc0941a258d17bf244c4df02d40343a7626a9d321e105808080808006000039066e16790923b039d0f80258", - expectedBlobVersionedHash: "0x01170b69948c60bc987f26402b33a5fc15f10275c830dfb0fafcdae811d18f00", + expectedBlobEncode: "00070000650120a6050300f40400000a00c7436aaec2cfaf39d5be02a02c6ac200089ab264c3e0fd142db682f1cc00040001646b6e137a120000020001df0b8000825dc0941a258d17bf244c4df02d40343a7626a9d321e105808080808006000039066e16790923b039d0f80258", + expectedBlobVersionedHash: "0x017f5ad1717f1e48ed6a01647d0c038f87d075ea1b712129156ae0b0fa8dbb7a", }, { name: "Batch with 3 blocks, blocktrace 02 + 03 + 04", @@ -253,11 +253,11 @@ func TestCodecV7BlobEncodingAndHashing(t *testing.T) { ParentBatchHash: common.Hash{}, InitialL1MessageIndex: 10, InitialL1MessageQueueHash: common.Hash{}, - LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1c000000000"), + LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1cc00000000"), Blocks: []*Block{readBlockFromJSON(t, "testdata/blockTrace_02.json"), readBlockFromJSON(t, "testdata/blockTrace_03.json"), replaceBlockNumber(readBlockFromJSON(t, "testdata/blockTrace_04.json"), 4)}, }, - expectedBlobEncode: "0007000c6801602517156300b49600000a00c7436aaec2cfaf39d5be02a02c6a00c2089ab264c3e0fd142db682f1c00002000363807b2a1de9000355418d1e810084000263807b2d1a2c0003546c3cbb39e50001646b6e137a120000020001f8007180843b9aec2e8307a12094c0c4c8baea3f6acb49b6e1fb9e2adeceeacb0c00a28a152d02c7e14af60000008083019ecea0ab07ae99c67aa78e7ba5cf678100e90cc32b219b1de102513d56548a41e86df514a034cbd19feacd73e8ce64d0000c4d1996b9b5243c578fd7f51bfaec288bbaf42a8bf8710101bae6bf68e9a0003fb2bc0615b1bf0d69ce9411edf039985866d8256f10c1be4f7b2cace28d8f0020bde27e2604393eb095b7f77316a05a3e6e81065f2b4604bcec5bd4aba68400835996fc3f879380aac1c09c6eed32f102f9162d82cf5502843b9b0a1783110097e28080b915d260806040523480156200001157600080fd5b5060405162000014b2380380833981810160405260a08110378151602083015160408085018000519151939592948301929184648211639083019060208201858179825181110082820188101794825250918201929091019080838360005b83c357818101510083820152602001620000a9565b50505050905090810190601f16f1578082030080516001836020036101000a0319168191508051604051939291900115012b0001460175015b01a39081015185519093508592508491620001c891600391850001906200026b565b508051620001de90600490602084506005805461ff00190060ff1990911660121716905550600680546001600160a01b0380881619928300161790925560078054928716929091169190911790556200023081620002550062010000600160b01b03191633021790555062000307915050565b60ff19160060ff929092565b828160011615610100020316600290049060005260206000002090601f016020900481019282601f10620002ae5780518380011785de016000010185558215620002de579182015b8202de5782518255916020019190600100c1565b50620002ec9291f0565b5090565b5b8002ec576000815560010162000002f1565b61119b80620003176000396000f3fe61001004361061010b576000003560e01c80635c975abb116100a257806395d89b411161007114610301578000639dc29fac14610309578063a457c2d714610335578063a9059cbb1461036100578063dd62ed3e1461038d5761010b565b1461029d57806370a0823114610200a55780638456cb59146102cb5780638e50817a146102d3313ce567116100de00571461021d578063395093511461023b5780633f4ba83a146102675780634000c10f191461027106fdde0314610110578063095ea7b31461018d5780631816000ddd146101cd57806323b872e7575b6101186103bb565b6040805160208082005283518183015283519192839290830161015261013a61017f9250508091030090f35b6101b9600480360360408110156101a381351690602001356104519100151582525190819003602001d561046e60fd81169160208101359091169060004074565b6102256104fb60ff90921640025105046f610552565b005b61026f00028705a956610654d520bb3516610662067d56e90135166106d21861075703001f07b856034b085f77c7d5a308db565b6003805420601f600260001961010000600188161502019095169490940493840181900481028201810190925282810052606093909290918301828280156104475780601f1061041c57610100808300540402835291610447565b825b8154815260200180831161042a5782900360001f16820191565b600061046561045e610906565b848461090a565b506001920002548184f6565b6104f18461048d6104ec8560405180606080602861108560002891398a166000908152600160205260408120906104cb81019190915260400001600020549190610b51565b935460ff160511016000610522908116825260002080830193909352604091820120918c168152925290205490610be8565b60000716331461059f5762461bcd60e51b60040b60248201526a1b9bdd08185b1b001bddd95960aa1b604482015290640190fd5b6105a7610c49565b61010090040060ff16156105f9106f14185d5cd8589b194e881c185d5cd9596082600606460006508282610ced909052604006ca0ddd900407260c6b6f6e6c792046616374006f727960a0079283918216179091559390921660041561080808550e65086c002511176025006108968dd491824080832093909416825233831661094f5704000180806020018281038252602401806110f36024913960400191fd821661090094223d60228084166000819487168084529482529182902085905581518581005291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200a00c8c7c3b92592819003a3508316610a3b25ce8216610a80230ff86023610a8b00838383610f61565b610ac881265f60268685808220939093559084168152200054610af7908220409490945580905191937fddf252ad1be2c89b69c2b068fc00378daa952ba7f163c4a11628f55a4df523b3ef929182900300818484111561000be08381815191508051900ba50b8d0bd2fd900300828201610c421b7f53610066654d6174683a206164646974696f6e206f766572666c6f7700610c9c147300621690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd3008aeae4b073aa610cd0a18216610d481f7f45524332303a206d696e7420746f0020746865207a65726f72657373610d546000600254610d610255902054610d008780838393519293910e2d6101001790557f62e78cea01bee320cd4e42027000b5ea74000d11b0c9f74754ebdbfc544b05a2588216610eaa6021ad6021610e00b68260000ef3221b85839020550f199082610fb540805182600091851691910020565b610f6cb07415610fb02a113c602a00610c428383401e7375627472610063815250fe7472616e736665726275726e20616d6f756e742065786365656400732062616c616e6365617070726f7665616c6c6f7766726f6d646563726561007365642062656c6f775061757361626c653a20746f6b656e7768696c652070006175736564a2646970667358221220e96342bec8f6c2bf72815a39998973b6004c3bed57770f402e9a7b7eeda0265d4c64736f6c634300060c00331c5a77d900fa7ef466951b2f01f724bca3a5820b63a0e012095745544820636f696e04c00001a0235c1a8d40e8c347890397f1a92e6eadbd6422cf7c210e3e1737f0553c00633172a02f7c0384ddd06970446e74229cd96216da62196dc62395bda5209500d44b8a9af7df0b80825dc0941a258d17bf244c4df02d40343a7626a9d321e100058080808080814ba8d130a9149a111111110549d2741105c418e61894eb01001240132dcb629c42c818e2c888502022230a0a92a4660ef030c8fc0ddb85e200d215e23516285d6a71d2c1a2a351201ca40faeab44851c1fbf00022ce7407800cf901cb445e0306b08cd4a2ae0724e1a69fa2f7aaa8fd851465eda370fade700ee1a0754a65b8078358317f2b9a460eadb2eb338ac8411a449057b478e3c0a008e0987293e5ce118ae05ccbd6837b82de87a617154940bcebb0b88ffe7152700a9f199051c3311ca647ec728aa797d3ae1518f6aa4e348024239b0a5cb78ba00987e426d486756ee2460452ecaa3d1144d5f81412b92e003774763efe158ac004b52b7a96203be266a9b0232cb47ed216a773ff21a241bbabfc22080979fc200aded1bd0615426425652e36f784c92d96db151ec85cb10329135878563adb60099708967a33656729bf44924e051899c3ab3777f03148f5792a231d948a9de0007c1a68a51ba08e133d2c4db0577f63870f2430af1828b47113227da2e0d100032b92a06a32098f02854be1a42a786eec2e9fb35a97738caf6dd1d57188d3f007d29afe7f90ed912ae39132ffcb9741b8010d4f0f3292f811d01f34eab298800a7589f2030d5ea72f11ea3aa1327a64c4de1727122a0958b27aa7025bbaace0018739ab139fa2c36ec0f45a50f55f369672e65d092da47c48e56db72808bc1006bdb3cf8163c31b92c81d7e15f7ab6ae1b7740b28f67947924ce24fef45eb30017491d54e8e28719eee3946ad529583de2cb11ac09c8a704ec7335f5280e2800e97cc2e7cf7bb9245b1ae02c345dcb73998be05998b0def5f91c591330e65600b1c8bbc266faca3360d72a5d4a6edefc8c3854452460ba4a034b808c385fa800c7967a86a91e7af51660b410b97d40afa4fec3d49e522a995aa5ae6453663c00d46b84fc4ff1520634609db2201a6434008d91f0f1c73e8aa5e9f34056154b0070cd526d386d82fd155bd669540674f0e65aa05d301e9174d2e104a603eac600d1cb417f39838c4716b079e06ca3321aa7336319a40edc4a4cdfdb767a702d0012d526c29611c8d2c10817e39f4bc29d180ce6", - expectedBlobVersionedHash: "0x01a81a775d8475e6ad5ae8dfe907d0e8755e968549bce449d1521ac2f1a1ca67", + expectedBlobEncode: "0007000c6801602517156300b49600000a00c7436aaec2cfaf39d5be02a02c6a00c2089ab264c3e0fd142db682f1cc0002000363807b2a1de9000355418d1e810084000263807b2d1a2c0003546c3cbb39e50001646b6e137a120000020001f8007180843b9aec2e8307a12094c0c4c8baea3f6acb49b6e1fb9e2adeceeacb0c00a28a152d02c7e14af60000008083019ecea0ab07ae99c67aa78e7ba5cf678100e90cc32b219b1de102513d56548a41e86df514a034cbd19feacd73e8ce64d0000c4d1996b9b5243c578fd7f51bfaec288bbaf42a8bf8710101bae6bf68e9a0003fb2bc0615b1bf0d69ce9411edf039985866d8256f10c1be4f7b2cace28d8f0020bde27e2604393eb095b7f77316a05a3e6e81065f2b4604bcec5bd4aba68400835996fc3f879380aac1c09c6eed32f102f9162d82cf5502843b9b0a1783110097e28080b915d260806040523480156200001157600080fd5b5060405162000014b2380380833981810160405260a08110378151602083015160408085018000519151939592948301929184648211639083019060208201858179825181110082820188101794825250918201929091019080838360005b83c357818101510083820152602001620000a9565b50505050905090810190601f16f1578082030080516001836020036101000a0319168191508051604051939291900115012b0001460175015b01a39081015185519093508592508491620001c891600391850001906200026b565b508051620001de90600490602084506005805461ff00190060ff1990911660121716905550600680546001600160a01b0380881619928300161790925560078054928716929091169190911790556200023081620002550062010000600160b01b03191633021790555062000307915050565b60ff19160060ff929092565b828160011615610100020316600290049060005260206000002090601f016020900481019282601f10620002ae5780518380011785de016000010185558215620002de579182015b8202de5782518255916020019190600100c1565b50620002ec9291f0565b5090565b5b8002ec576000815560010162000002f1565b61119b80620003176000396000f3fe61001004361061010b576000003560e01c80635c975abb116100a257806395d89b411161007114610301578000639dc29fac14610309578063a457c2d714610335578063a9059cbb1461036100578063dd62ed3e1461038d5761010b565b1461029d57806370a0823114610200a55780638456cb59146102cb5780638e50817a146102d3313ce567116100de00571461021d578063395093511461023b5780633f4ba83a146102675780634000c10f191461027106fdde0314610110578063095ea7b31461018d5780631816000ddd146101cd57806323b872e7575b6101186103bb565b6040805160208082005283518183015283519192839290830161015261013a61017f9250508091030090f35b6101b9600480360360408110156101a381351690602001356104519100151582525190819003602001d561046e60fd81169160208101359091169060004074565b6102256104fb60ff90921640025105046f610552565b005b61026f00028705a956610654d520bb3516610662067d56e90135166106d21861075703001f07b856034b085f77c7d5a308db565b6003805420601f600260001961010000600188161502019095169490940493840181900481028201810190925282810052606093909290918301828280156104475780601f1061041c57610100808300540402835291610447565b825b8154815260200180831161042a5782900360001f16820191565b600061046561045e610906565b848461090a565b506001920002548184f6565b6104f18461048d6104ec8560405180606080602861108560002891398a166000908152600160205260408120906104cb81019190915260400001600020549190610b51565b935460ff160511016000610522908116825260002080830193909352604091820120918c168152925290205490610be8565b60000716331461059f5762461bcd60e51b60040b60248201526a1b9bdd08185b1b001bddd95960aa1b604482015290640190fd5b6105a7610c49565b61010090040060ff16156105f9106f14185d5cd8589b194e881c185d5cd9596082600606460006508282610ced909052604006ca0ddd900407260c6b6f6e6c792046616374006f727960a0079283918216179091559390921660041561080808550e65086c002511176025006108968dd491824080832093909416825233831661094f5704000180806020018281038252602401806110f36024913960400191fd821661090094223d60228084166000819487168084529482529182902085905581518581005291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200a00c8c7c3b92592819003a3508316610a3b25ce8216610a80230ff86023610a8b00838383610f61565b610ac881265f60268685808220939093559084168152200054610af7908220409490945580905191937fddf252ad1be2c89b69c2b068fc00378daa952ba7f163c4a11628f55a4df523b3ef929182900300818484111561000be08381815191508051900ba50b8d0bd2fd900300828201610c421b7f53610066654d6174683a206164646974696f6e206f766572666c6f7700610c9c147300621690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd3008aeae4b073aa610cd0a18216610d481f7f45524332303a206d696e7420746f0020746865207a65726f72657373610d546000600254610d610255902054610d008780838393519293910e2d6101001790557f62e78cea01bee320cd4e42027000b5ea74000d11b0c9f74754ebdbfc544b05a2588216610eaa6021ad6021610e00b68260000ef3221b85839020550f199082610fb540805182600091851691910020565b610f6cb07415610fb02a113c602a00610c428383401e7375627472610063815250fe7472616e736665726275726e20616d6f756e742065786365656400732062616c616e6365617070726f7665616c6c6f7766726f6d646563726561007365642062656c6f775061757361626c653a20746f6b656e7768696c652070006175736564a2646970667358221220e96342bec8f6c2bf72815a39998973b6004c3bed57770f402e9a7b7eeda0265d4c64736f6c634300060c00331c5a77d900fa7ef466951b2f01f724bca3a5820b63a0e012095745544820636f696e04c00001a0235c1a8d40e8c347890397f1a92e6eadbd6422cf7c210e3e1737f0553c00633172a02f7c0384ddd06970446e74229cd96216da62196dc62395bda5209500d44b8a9af7df0b80825dc0941a258d17bf244c4df02d40343a7626a9d321e100058080808080814ba8d130a9149a111111110549d2741105c418e61894eb01001240132dcb629c42c818e2c888502022230a0a92a4660ef030c8fc0ddb85e200d215e23516285d6a71d2c1a2a351201ca40faeab44851c1fbf00022ce7407800cf901cb445e0306b08cd4a2ae0724e1a69fa2f7aaa8fd851465eda370fade700ee1a0754a65b8078358317f2b9a460eadb2eb338ac8411a449057b478e3c0a008e0987293e5ce118ae05ccbd6837b82de87a617154940bcebb0b88ffe7152700a9f199051c3311ca647ec728aa797d3ae1518f6aa4e348024239b0a5cb78ba00987e426d486756ee2460452ecaa3d1144d5f81412b92e003774763efe158ac004b52b7a96203be266a9b0232cb47ed216a773ff21a241bbabfc22080979fc200aded1bd0615426425652e36f784c92d96db151ec85cb10329135878563adb60099708967a33656729bf44924e051899c3ab3777f03148f5792a231d948a9de0007c1a68a51ba08e133d2c4db0577f63870f2430af1828b47113227da2e0d100032b92a06a32098f02854be1a42a786eec2e9fb35a97738caf6dd1d57188d3f007d29afe7f90ed912ae39132ffcb9741b8010d4f0f3292f811d01f34eab298800a7589f2030d5ea72f11ea3aa1327a64c4de1727122a0958b27aa7025bbaace0018739ab139fa2c36ec0f45a50f55f369672e65d092da47c48e56db72808bc1006bdb3cf8163c31b92c81d7e15f7ab6ae1b7740b28f67947924ce24fef45eb30017491d54e8e28719eee3946ad529583de2cb11ac09c8a704ec7335f5280e2800e97cc2e7cf7bb9245b1ae02c345dcb73998be05998b0def5f91c591330e65600b1c8bbc266faca3360d72a5d4a6edefc8c3854452460ba4a034b808c385fa800c7967a86a91e7af51660b410b97d40afa4fec3d49e522a995aa5ae6453663c00d46b84fc4ff1520634609db2201a6434008d91f0f1c73e8aa5e9f34056154b0070cd526d386d82fd155bd669540674f0e65aa05d301e9174d2e104a603eac600d1cb417f39838c4716b079e06ca3321aa7336319a40edc4a4cdfdb767a702d0012d526c29611c8d2c10817e39f4bc29d180ce6", + expectedBlobVersionedHash: "0x01f6f07ae03e8a6ead4384c206ac3d38cd453c1da0516dad7608713bd35bb92d", }, { name: "Batch with 3 blocks, blocktrace 02 + 05 (L1 messages only) + 03", @@ -266,11 +266,11 @@ func TestCodecV7BlobEncodingAndHashing(t *testing.T) { ParentBatchHash: common.Hash{2}, InitialL1MessageIndex: 37, InitialL1MessageQueueHash: common.Hash{}, - LastL1MessageQueueHash: common.HexToHash("0xb3e7e7f02af64f130535f65b0e7375d4ad3c43c2f05ad3dbe7402ab000000000"), + LastL1MessageQueueHash: common.HexToHash("0x3d35d6b71c2769de1a4eb8f603e20f539c53a10c6764a6f5836cf13100000000"), Blocks: []*Block{readBlockFromJSON(t, "testdata/blockTrace_02.json"), replaceBlockNumber(readBlockFromJSON(t, "testdata/blockTrace_05.json"), 3), replaceBlockNumber(readBlockFromJSON(t, "testdata/blockTrace_03.json"), 4)}, }, - expectedBlobEncode: "0007000c4f016005174d6200049500002500b3e7e7f02af64f130535f65b0e730075d4ad3c43c2f05ad3dbe7402ab00002000363807b2a1de9000355418d1e8100840002646b6ed07a12000005000563807b2d1a2c0003546c3cbb39e50001000000f87180843b9aec2e8307a12094c0c4c8baea3f6acb49b6e1fb9e2adeceea00cb0ca28a152d02c7e14af60000008083019ecea0ab07ae99c67aa78e7ba5cf006781e90cc32b219b1de102513d56548a41e86df514a034cbd19feacd73e8ce0064d00c4d1996b9b5243c578fd7f51bfaec288bbaf42a8bf8710101bae6bf6800e9a03fb2bc0615b1bf0d69ce9411edf039985866d8256f10c1be4f7b2cace2008d8f20bde27e2604393eb095b7f77316a05a3e6e81065f2b4604bcec5bd4ab00a684835996fc3f879380aac1c09c6eed32f102f9162d82cf5502843b9b0a1700831197e28080b915d260806040523480156200001157600080fd5b5060405100620014b2380380833981810160405260a0811037815160208301516040808500018051915193959294830192918464018211639083019060208201858179820051811182820188101794825250918201929091019080838360005b83c357810081015183820152602001620000a9565b50505050905090810190601f16f1570080820380516001836020036101000a031916819150805160405193929190010015012b01460175015b01a39081015185519093508592508491620001c891600003918501906200026b565b508051620001de9060049060208450600580546100ff001960ff1990911660121716905550600680546001600160a01b0380881600199283161790925560078054928716929091169190911790556200023081620000025562010000600160b01b03191633021790555062000307915050565b6000ff191660ff929092565b828160011615610100020316600290049060005260002060002090601f016020900481019282601f10620002ae578051838001178500de0160010185558215620002de579182015b8202de5782518255916020019100906001c1565b50620002ec9291f0565b5090565b5b8002ec576000815560010001620002f1565b61119b80620003176000396000f3fe61001004361061010b005760003560e01c80635c975abb116100a257806395d89b411161007114610300015780639dc29fac14610309578063a457c2d714610335578063a9059cbb1400610361578063dd62ed3e1461038d5761010b565b1461029d57806370a0823100146102a55780638456cb59146102cb5780638e50817a146102d3313ce56711006100de571461021d578063395093511461023b5780633f4ba83a146102675700806340c10f191461027106fdde0314610110578063095ea7b31461018d5780006318160ddd146101cd57806323b872e7575b6101186103bb565b6040805160002080825283518183015283519192839290830161015261013a61017f9250500080910390f35b6101b9600480360360408110156101a381351690602001356100045191151582525190819003602001d561046e60fd81169160208101359091001690604074565b6102256104fb60ff90921640025105046f610552565b005b0061026f028705a956610654d520bb3516610662067d56e90135166106d21861000757031f07b856034b085f77c7d5a308db565b6003805420601f600260001900610100600188161502019095169490940493840181900481028201810190920052828152606093909290918301828280156104475780601f1061041c57610100008083540402835291610447565b825b8154815260200180831161042a5782009003601f16820191565b600061046561045e610906565b848461090a565b500060019202548184f6565b6104f18461048d6104ec8560405180606080602861001085602891398a166000908152600160205260408120906104cb81019190910052604001600020549190610b51565b935460ff160511016000610522908116008252602080830193909352604091820120918c168152925290205490610be800565b600716331461059f5762461bcd60e51b60040b60248201526a1b9bdd0800185b1b1bddd95960aa1b604482015290640190fd5b6105a7610c49565b61010000900460ff16156105f9106f14185d5cd8589b194e881c185d5cd9596082600006064606508282610ced909052604006ca0ddd900407260c6b6f6e6c792046006163746f727960a0079283918216179091559390921660041561080808550e0065086c2511176025006108968dd49182408083209390941682523383166109004f57040180806020018281038252602401806110f36024913960400191fd820016610994223d60228084166000819487168084529482529182902085905581005185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e005b200ac8c7c3b92592819003a3508316610a3b25ce8216610a80230ff8602300610a8b838383610f61565b610ac881265f60268685808220939093559084160081522054610af7908220409490945580905191937fddf252ad1be2c89b69c200b068fc378daa952ba7f163c4a11628f55a4df523b3ef929182900300818484001115610be08381815191508051900ba50b8d0bd2fd900300828201610c421b007f536166654d6174683a206164646974696f6e206f766572666c6f7700610c009c1473621690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e00537bd38aeae4b073aa610cd0a18216610d481f7f45524332303a206d696e740020746f20746865207a65726f72657373610d546000600254610d61025590200054610d8780838393519293910e2d6101001790557f62e78cea01bee320cd4e00420270b5ea74000d11b0c9f74754ebdbfc544b05a2588216610eaa6021ad600021610eb68260000ef3221b85839020550f199082610fb540805182600091850016919120565b610f6cb07415610fb02a113c602a00610c428383401e7375620074726163815250fe7472616e736665726275726e20616d6f756e742065786300656564732062616c616e6365617070726f7665616c6c6f7766726f6d646563007265617365642062656c6f775061757361626c653a20746f6b656e7768696c006520706175736564a2646970667358221220e96342bec8f6c2bf72815a3999008973b64c3bed57770f402e9a7b7eeda0265d4c64736f6c634300060c00330000001c5a77d9fa7ef466951b2f01f724bca3a5820b63a0e01209574554482063006f696e04c001a0235c1a8d40e8c347890397f1a92e6eadbd6422cf7c210e3e001737f0553c633172a02f7c0384ddd06970446e74229cd96216da62196dc6230095bda52095d44b8a9af7814ba8c130a9143223222222122449930e1105c41800e61894eb0112401329cb622042c818e2c888502022330a0a92a4660ef030c800d41b020bd54b2b52d740a07429c5650a708c469770741f38578d8a1c181f160002fcce819dced01cd046489a753bcd9a5460c71c9ed2a85af4562fbba326bf00b460ee14ce7d8f435fa60f80784f8217f378a760e2db08177bbf8461a44971005b468e2a0a4e0987d33d5cf718d505447668371e2db86dd9425494169c23170010ffcb2b4e52e320a370cc6c28fbf4d1a0a8dbfa28c5a316d548c791841fe50040919ef57441fd956d4883596d9d80325c644c9b29277de58e5624800fd81d00edbe8743b12ea14599aa08f8b0a825cace2c1db5bfa87dfdc8a3916c7e25800041282fbf875bcf37b8c348265c565259bf213a49368cc5a0b617de4348dfac001d16fab58e66929018206a034fce4b9f08023628916c86d48a23408b99c73e001a87f64a4d9d1346aa28a58b089f91f2bcd1ba73dc693b18168865563c3291003965bbd440c8b455498c62cc84d342c5d4102035b72e6cdf5ab378c7e624de00dd778ff8f15b8cedf5c9dfc15bc2b59cc912fe5c1a0d40626a18f8e84ba04200c05c72c688c5cbaccf10d84545b9781ba3dd893ca6604de1717123a0158ae700aa7079bb74d102f3ecb18df95908ec8f924a32aa4cdeceeccc603ada6f8821005a68cb001713afcdf0e02d78a0e410040e097fd1b31d6cdc51caae3eefe6ee003993c2a7af90bde0d4c14f17cfcc70e64e29a99d52ee51fc8b4604f43d41a600eaab794791e14ff27b3fc7de5bfa69e9deb3cd7477e9c22e1acde884264d2500e7089aa03137827df80af1e9d2cfb08c8dbb14a2f9c153cc5036495074f55b0096a019f15da8c7957a46a9de77f51860b425b91d40af7cff31df5e5d2aea5b00a5f065b3677cd66bc4a64f115d6e39e0f0b2a01b943280a2919cf06339caba00e944405dd582e0da526dbedf64c5ab86bb80a998beb1bc5a48dd793cba742000e104490784c7b9b7833eee8418b88ccaf441e4370b38239db665ec3b5055990012c1b67be8dd1ae1c0b61e0a64bca0b78bc73730ef4b0d065e", - expectedBlobVersionedHash: "0x01aaa15d8da84ac255b2c5912b9b2565a8888a11f174b7038375824895416c1e", + expectedBlobEncode: "0007000c4f016005174d62000495000025003d35d6b71c2769de1a4eb8f603e2000f539c53a10c6764a6f5836cf1310002000363807b2a1de9000355418d1e8100840002646b6ed07a12000005000563807b2d1a2c0003546c3cbb39e50001000000f87180843b9aec2e8307a12094c0c4c8baea3f6acb49b6e1fb9e2adeceea00cb0ca28a152d02c7e14af60000008083019ecea0ab07ae99c67aa78e7ba5cf006781e90cc32b219b1de102513d56548a41e86df514a034cbd19feacd73e8ce0064d00c4d1996b9b5243c578fd7f51bfaec288bbaf42a8bf8710101bae6bf6800e9a03fb2bc0615b1bf0d69ce9411edf039985866d8256f10c1be4f7b2cace2008d8f20bde27e2604393eb095b7f77316a05a3e6e81065f2b4604bcec5bd4ab00a684835996fc3f879380aac1c09c6eed32f102f9162d82cf5502843b9b0a1700831197e28080b915d260806040523480156200001157600080fd5b5060405100620014b2380380833981810160405260a0811037815160208301516040808500018051915193959294830192918464018211639083019060208201858179820051811182820188101794825250918201929091019080838360005b83c357810081015183820152602001620000a9565b50505050905090810190601f16f1570080820380516001836020036101000a031916819150805160405193929190010015012b01460175015b01a39081015185519093508592508491620001c891600003918501906200026b565b508051620001de9060049060208450600580546100ff001960ff1990911660121716905550600680546001600160a01b0380881600199283161790925560078054928716929091169190911790556200023081620000025562010000600160b01b03191633021790555062000307915050565b6000ff191660ff929092565b828160011615610100020316600290049060005260002060002090601f016020900481019282601f10620002ae578051838001178500de0160010185558215620002de579182015b8202de5782518255916020019100906001c1565b50620002ec9291f0565b5090565b5b8002ec576000815560010001620002f1565b61119b80620003176000396000f3fe61001004361061010b005760003560e01c80635c975abb116100a257806395d89b411161007114610300015780639dc29fac14610309578063a457c2d714610335578063a9059cbb1400610361578063dd62ed3e1461038d5761010b565b1461029d57806370a0823100146102a55780638456cb59146102cb5780638e50817a146102d3313ce56711006100de571461021d578063395093511461023b5780633f4ba83a146102675700806340c10f191461027106fdde0314610110578063095ea7b31461018d5780006318160ddd146101cd57806323b872e7575b6101186103bb565b6040805160002080825283518183015283519192839290830161015261013a61017f9250500080910390f35b6101b9600480360360408110156101a381351690602001356100045191151582525190819003602001d561046e60fd81169160208101359091001690604074565b6102256104fb60ff90921640025105046f610552565b005b0061026f028705a956610654d520bb3516610662067d56e90135166106d21861000757031f07b856034b085f77c7d5a308db565b6003805420601f600260001900610100600188161502019095169490940493840181900481028201810190920052828152606093909290918301828280156104475780601f1061041c57610100008083540402835291610447565b825b8154815260200180831161042a5782009003601f16820191565b600061046561045e610906565b848461090a565b500060019202548184f6565b6104f18461048d6104ec8560405180606080602861001085602891398a166000908152600160205260408120906104cb81019190910052604001600020549190610b51565b935460ff160511016000610522908116008252602080830193909352604091820120918c168152925290205490610be800565b600716331461059f5762461bcd60e51b60040b60248201526a1b9bdd0800185b1b1bddd95960aa1b604482015290640190fd5b6105a7610c49565b61010000900460ff16156105f9106f14185d5cd8589b194e881c185d5cd9596082600006064606508282610ced909052604006ca0ddd900407260c6b6f6e6c792046006163746f727960a0079283918216179091559390921660041561080808550e0065086c2511176025006108968dd49182408083209390941682523383166109004f57040180806020018281038252602401806110f36024913960400191fd820016610994223d60228084166000819487168084529482529182902085905581005185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e005b200ac8c7c3b92592819003a3508316610a3b25ce8216610a80230ff8602300610a8b838383610f61565b610ac881265f60268685808220939093559084160081522054610af7908220409490945580905191937fddf252ad1be2c89b69c200b068fc378daa952ba7f163c4a11628f55a4df523b3ef929182900300818484001115610be08381815191508051900ba50b8d0bd2fd900300828201610c421b007f536166654d6174683a206164646974696f6e206f766572666c6f7700610c009c1473621690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e00537bd38aeae4b073aa610cd0a18216610d481f7f45524332303a206d696e740020746f20746865207a65726f72657373610d546000600254610d61025590200054610d8780838393519293910e2d6101001790557f62e78cea01bee320cd4e00420270b5ea74000d11b0c9f74754ebdbfc544b05a2588216610eaa6021ad600021610eb68260000ef3221b85839020550f199082610fb540805182600091850016919120565b610f6cb07415610fb02a113c602a00610c428383401e7375620074726163815250fe7472616e736665726275726e20616d6f756e742065786300656564732062616c616e6365617070726f7665616c6c6f7766726f6d646563007265617365642062656c6f775061757361626c653a20746f6b656e7768696c006520706175736564a2646970667358221220e96342bec8f6c2bf72815a3999008973b64c3bed57770f402e9a7b7eeda0265d4c64736f6c634300060c00330000001c5a77d9fa7ef466951b2f01f724bca3a5820b63a0e01209574554482063006f696e04c001a0235c1a8d40e8c347890397f1a92e6eadbd6422cf7c210e3e001737f0553c633172a02f7c0384ddd06970446e74229cd96216da62196dc6230095bda52095d44b8a9af7814ba8c130a9143223222222122449930e1105c41800e61894eb0112401329cb622042c818e2c888502022330a0a92a4660ef030c800d41b020bd54b2b52d740a07429c5650a708c469770741f38578d8a1c181f160002fcce819dced01cd046489a753bcd9a5460c71c9ed2a85af4562fbba326bf00b460ee14ce7d8f435fa60f80784f8217f378a760e2db08177bbf8461a44971005b468e2a0a4e0987d33d5cf718d505447668371e2db86dd9425494169c23170010ffcb2b4e52e320a370cc6c28fbf4d1a0a8dbfa28c5a316d548c791841fe50040919ef57441fd956d4883596d9d80325c644c9b29277de58e5624800fd81d00edbe8743b12ea14599aa08f8b0a825cace2c1db5bfa87dfdc8a3916c7e25800041282fbf875bcf37b8c348265c565259bf213a49368cc5a0b617de4348dfac001d16fab58e66929018206a034fce4b9f08023628916c86d48a23408b99c73e001a87f64a4d9d1346aa28a58b089f91f2bcd1ba73dc693b18168865563c3291003965bbd440c8b455498c62cc84d342c5d4102035b72e6cdf5ab378c7e624de00dd778ff8f15b8cedf5c9dfc15bc2b59cc912fe5c1a0d40626a18f8e84ba04200c05c72c688c5cbaccf10d84545b9781ba3dd893ca6604de1717123a0158ae700aa7079bb74d102f3ecb18df95908ec8f924a32aa4cdeceeccc603ada6f8821005a68cb001713afcdf0e02d78a0e410040e097fd1b31d6cdc51caae3eefe6ee003993c2a7af90bde0d4c14f17cfcc70e64e29a99d52ee51fc8b4604f43d41a600eaab794791e14ff27b3fc7de5bfa69e9deb3cd7477e9c22e1acde884264d2500e7089aa03137827df80af1e9d2cfb08c8dbb14a2f9c153cc5036495074f55b0096a019f15da8c7957a46a9de77f51860b425b91d40af7cff31df5e5d2aea5b00a5f065b3677cd66bc4a64f115d6e39e0f0b2a01b943280a2919cf06339caba00e944405dd582e0da526dbedf64c5ab86bb80a998beb1bc5a48dd793cba742000e104490784c7b9b7833eee8418b88ccaf441e4370b38239db665ec3b5055990012c1b67be8dd1ae1c0b61e0a64bca0b78bc73730ef4b0d065e", + expectedBlobVersionedHash: "0x019122a14fdcf36ccab4f507a6d9d45f3a1d17479e108e05ca4b27341b2da98f", }, // test error cases { @@ -702,7 +702,7 @@ func TestCodecV7BatchCompressedDataCompatibilityCheck(t *testing.T) { name: "Single Block 04", batch: &Batch{ InitialL1MessageIndex: 10, - LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1c000000000"), + LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1cc00000000"), Blocks: []*Block{readBlockFromJSON(t, "testdata/blockTrace_04.json")}, }, expectCompatible: true, @@ -711,7 +711,7 @@ func TestCodecV7BatchCompressedDataCompatibilityCheck(t *testing.T) { name: "Single Block 05, only L1 messages", batch: &Batch{ InitialL1MessageIndex: 37, - LastL1MessageQueueHash: common.HexToHash("0xb3e7e7f02af64f130535f65b0e7375d4ad3c43c2f05ad3dbe7402ab000000000"), + LastL1MessageQueueHash: common.HexToHash("0x3d35d6b71c2769de1a4eb8f603e20f539c53a10c6764a6f5836cf13100000000"), Blocks: []*Block{readBlockFromJSON(t, "testdata/blockTrace_05.json")}, }, expectCompatible: true, @@ -736,7 +736,7 @@ func TestCodecV7BatchCompressedDataCompatibilityCheck(t *testing.T) { name: "Multiple Blocks 02, 03, 04", batch: &Batch{ InitialL1MessageIndex: 10, - LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1c000000000"), + LastL1MessageQueueHash: common.HexToHash("0xc7436aaec2cfaf39d5be02a02c6ac2089ab264c3e0fd142db682f1cc00000000"), Blocks: []*Block{ readBlockFromJSON(t, "testdata/blockTrace_02.json"), readBlockFromJSON(t, "testdata/blockTrace_03.json"), diff --git a/encoding/da.go b/encoding/da.go index 4f2b07e..d96ecd6 100644 --- a/encoding/da.go +++ b/encoding/da.go @@ -815,12 +815,7 @@ func messageQueueV2ApplyL1Message(initialQueueHash common.Hash, message *types.L } func messageQueueV2EncodeRollingHash(rollingHash common.Hash) common.Hash { - // clear last 36 bits - - // Clear the lower 4 bits of byte 26 (preserving the upper 4 bits) - rollingHash[27] &= 0xF0 - - // Clear the next 4 bytes (32 bits total) + // clear last 32 bits, i.e. 4 bytes. rollingHash[28] = 0 rollingHash[29] = 0 rollingHash[30] = 0 diff --git a/encoding/da_test.go b/encoding/da_test.go index 08df23c..a36ea2b 100644 --- a/encoding/da_test.go +++ b/encoding/da_test.go @@ -181,7 +181,7 @@ func TestMessageQueueV2EncodeRollingHash(t *testing.T) { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, }, }, @@ -204,14 +204,14 @@ func TestMessageQueueV2EncodeRollingHash(t *testing.T) { 0xCC, 0xDD, 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xAA, 0xB0, + 0x88, 0x99, 0xAA, 0xBB, 0x00, 0x00, 0x00, 0x00, }, }, { "random hash", common.HexToHash("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"), - common.HexToHash("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567000000000"), + common.HexToHash("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567800000000"), }, }