{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":694088907,"defaultBranch":"main","name":"miden-crypto","ownerLogin":"reilabs","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2023-09-20T10:02:48.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/98026622?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726160455.0","currentOid":""},"activityList":{"items":[{"before":"8cab3237ddf3f54b7000bd9dba4f9306997813c6","after":null,"ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-12T17:00:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"}},{"before":"46af31799d36fc48c2f2e4ddc040a4cc287ae1e6","after":"8cab3237ddf3f54b7000bd9dba4f9306997813c6","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-09-11T22:21:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"chore(smt): refactor empty node construction to helper function","shortMessageHtmlLink":"chore(smt): refactor empty node construction to helper function"}},{"before":"46af31799d36fc48c2f2e4ddc040a4cc287ae1e6","after":"8cab3237ddf3f54b7000bd9dba4f9306997813c6","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-11T22:20:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"chore(smt): refactor empty node construction to helper function","shortMessageHtmlLink":"chore(smt): refactor empty node construction to helper function"}},{"before":"31f593d9a828ad5c074c1f97d6b55ed1ccb19924","after":"46af31799d36fc48c2f2e4ddc040a4cc287ae1e6","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-09-11T17:42:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"chore(smt): refactor empty node construction to helper function","shortMessageHtmlLink":"chore(smt): refactor empty node construction to helper function"}},{"before":"31f593d9a828ad5c074c1f97d6b55ed1ccb19924","after":"46af31799d36fc48c2f2e4ddc040a4cc287ae1e6","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-11T17:42:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"chore(smt): refactor empty node construction to helper function","shortMessageHtmlLink":"chore(smt): refactor empty node construction to helper function"}},{"before":"2da19e7d9c5f7aa41e1681fa4662447213e69cba","after":"31f593d9a828ad5c074c1f97d6b55ed1ccb19924","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-10T17:21:56.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"2da19e7d9c5f7aa41e1681fa4662447213e69cba","after":"31f593d9a828ad5c074c1f97d6b55ed1ccb19924","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-09-10T17:21:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"f0eaf046e20e7721dad3a75dc54b5df1b9595fab","after":"2da19e7d9c5f7aa41e1681fa4662447213e69cba","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-09-10T17:10:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"8611b6d31dc0ec4397ea09addb2b98e94a65b6ed","after":"2da19e7d9c5f7aa41e1681fa4662447213e69cba","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-09T23:23:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"254014a479793def233562430eaca8c6c3d371ca","after":"8611b6d31dc0ec4397ea09addb2b98e94a65b6ed","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-09T23:21:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"d182138844a7bc61ed67545def929da1c6b87ad2","after":"254014a479793def233562430eaca8c6c3d371ca","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-09T23:19:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"f0eaf046e20e7721dad3a75dc54b5df1b9595fab","after":"d182138844a7bc61ed67545def929da1c6b87ad2","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-09T23:11:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds two methods to SparseMerkleTree: compute_mutations()\nand apply_mutations(), which respectively create and consume a new\nMutationSet type. This type represents as set of changes to a\nSparseMerkleTree that haven't happened yet, and can be queried on to\nensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"032e14c0ca8bd6883ef8be1b28ac9fb074777321","after":"f0eaf046e20e7721dad3a75dc54b5df1b9595fab","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-09-05T21:54:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"a979414a11d14d4a230ecb889da76011ff5d4004","after":"f0eaf046e20e7721dad3a75dc54b5df1b9595fab","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-05T21:40:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"965c3f3c1656b0531996070c8171ff9c91c0993a","after":"a979414a11d14d4a230ecb889da76011ff5d4004","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-05T20:22:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"d7f50821f182f9690f29cd55581543bf39914171","after":"965c3f3c1656b0531996070c8171ff9c91c0993a","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-05T20:13:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"8f8ab4eef5154eb3e84a11016eaa7c9455ee0c04","after":"d7f50821f182f9690f29cd55581543bf39914171","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-05T20:08:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":null,"after":"f4a9d5b027a671dfef1c81590675e14bcc8ab326","ref":"refs/heads/next","pushedAt":"2024-09-05T15:16:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"Merge pull request #323 from 0xPolygonMiden/phklive-consistent-ci\n\nUpdate `Makefile` and `CI`","shortMessageHtmlLink":"Merge pull request 0xPolygonMiden#323 from 0xPolygonMiden/phklive-con…"}},{"before":"a3f6f3c24f654fabee68a5840b8b13db7d308838","after":"8f8ab4eef5154eb3e84a11016eaa7c9455ee0c04","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-04T23:47:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"feat(smt): implement generic prospective insertions"}},{"before":"2d9317ead1ca5b469fcfbb3479919c5476c69e00","after":"a3f6f3c24f654fabee68a5840b8b13db7d308838","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-04T21:59:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"WIP: feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"WIP: feat(smt): implement generic prospective insertions"}},{"before":null,"after":"2d9317ead1ca5b469fcfbb3479919c5476c69e00","ref":"refs/heads/wip/qyriad/checked-insertion","pushedAt":"2024-09-04T21:27:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"WIP: feat(smt): implement generic prospective insertions\n\nThis commit adds a type, MutationSet, which represents a set of changes\nto a SparseMerkleTree that haven't happened yet, and can be queried on\nto ensure a set of insertions result in the correct tree root before\nfinalizing and committing the mutation.\n\nThis is a direct step towards issue 222, and will directly enable\nremoving Merkle tree clones in miden-node InnerState::apply_block().\n\nAs part of this change, SparseMerkleTree now requires its Key to be Ord\nand its Leaf to be Clone (both bounds which were already met by existing\nimplementations). The Ord bound could instead be changed to Eq + Hash,\nif MutationSet were changed to use a HashMap instead of a BTreeMap.\n\nAdditionally, as MutationSet is a generic type\nwhich works on any type that implements SparseMerkleTree, but is\nintended for public API use, the SparseMerkleTree trait and InnerNode\ntype have been made public so MutationSet can be used outside of this\ncrate.","shortMessageHtmlLink":"WIP: feat(smt): implement generic prospective insertions"}},{"before":"31da24fff3c615a61c2489ada8559b515086011c","after":"032e14c0ca8bd6883ef8be1b28ac9fb074777321","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-27T23:38:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"da2856af6c98cc585a79ca8374f6a4fe0472a4d1","after":"31da24fff3c615a61c2489ada8559b515086011c","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-27T23:36:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"ce12a36009a873ef8f9bc16ae88af28ef76c7b09","after":"da2856af6c98cc585a79ca8374f6a4fe0472a4d1","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-27T23:34:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"5a0a9b1b8f456df011761288877b86a940e8ca71","after":"ce12a36009a873ef8f9bc16ae88af28ef76c7b09","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-23T01:00:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"af34e930c810b9d1ed5fe2ad4cdc7176641973c2","after":"5a0a9b1b8f456df011761288877b86a940e8ca71","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-23T00:57:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"accda40e4bd3a4bc6305eb9d7880e5ee5138f6d4","after":"af34e930c810b9d1ed5fe2ad4cdc7176641973c2","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-23T00:30:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat(smt): implement root-checked insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat(smt): implement root-checked insertion"}},{"before":"accda40e4bd3a4bc6305eb9d7880e5ee5138f6d4","after":null,"ref":"refs/heads/wip/qyriad/checked-insert","pushedAt":"2024-08-23T00:23:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"}},{"before":null,"after":"accda40e4bd3a4bc6305eb9d7880e5ee5138f6d4","ref":"refs/heads/qyriad/checked-insertion","pushedAt":"2024-08-23T00:21:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat: implement root-checked Merkle tree insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat: implement root-checked Merkle tree insertion"}},{"before":"4d1f33ab6775297ae617e353acbe8388e1c36fc8","after":"accda40e4bd3a4bc6305eb9d7880e5ee5138f6d4","ref":"refs/heads/wip/qyriad/checked-insert","pushedAt":"2024-08-23T00:19:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Qyriad","name":"Qyriad","path":"/Qyriad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1542224?s=80&v=4"},"commit":{"message":"feat: implement root-checked Merkle tree insertion\n\nThis commit implements SparseMerkleTree::insert_ensure_root(), a version\nof SparseMerkleTree::insert() that prevents modification of the tree if\nthe insert turns out to not result in the correct tree root (i.e., the\ntransaction is not valid).\n\nThis is an initial step towards issue 222.\n\nAs a logical next step, generalizing this to validation of inserting\nmultiple values at once will directly enable removing Merkle tree clones\nin miden-node InnerState::apply_block().\n\nFor further work, as we generalize pre-validation for mutations we will\nwant a separate type to represent an arbitrary set of prospective\nmutations on the Merkle tree and their validity, like the `ChangeSet`\ntype suggested in the issue.","shortMessageHtmlLink":"feat: implement root-checked Merkle tree insertion"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxNzowMDo1NS4wMDAwMDBazwAAAAS0pX_h","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxNzowMDo1NS4wMDAwMDBazwAAAAS0pX_h","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yM1QwMDoxOToyMS4wMDAwMDBazwAAAASh1OWW"}},"title":"Activity · reilabs/miden-crypto"}