From ba6ee0430f9ef63b8869c56e0f4ba8e7741e6f91 Mon Sep 17 00:00:00 2001 From: arkpar Date: Tue, 8 Oct 2024 14:43:05 +0200 Subject: [PATCH] Reverse trie key bit ordering --- trie/merkle.py | 8 ++++---- trie/trie.json | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/trie/merkle.py b/trie/merkle.py index abfe9577..c6acd549 100755 --- a/trie/merkle.py +++ b/trie/merkle.py @@ -15,19 +15,19 @@ def hash(data): def branch(l, r): assert len(l) == 32 assert len(r) == 32 - head = l[0] & 0xfe + head = l[0] & 0x7f return bytes([head]) + l[1:] + r # GP (287) def leaf(k, v): if len(v) <= 32: - head = 0b01 | (len(v) << 2) + head = 0b10000000 | len(v) return bytes([head]) + k[:-1] + v + ((32 - len(v)) * b'\0') - head = 0b11 + head = 0b11000000 return bytes([head]) + k[:-1] + hash(v) def bit(k, i): - return (k[i >> 3] & (1 << (i & 7))) != 0 + return (k[i >> 3] & (1 << (7 - i & 7))) != 0 # GP (289) def merkle(kvs, i=0): diff --git a/trie/trie.json b/trie/trie.json index 8975266e..2a8d33c2 100644 --- a/trie/trie.json +++ b/trie/trie.json @@ -7,52 +7,52 @@ "input": { "16c72e0c2e0b78157e3a116d86d90461a199e439325317aea160b30347adb8ec": "" }, - "output": "17d7a1c738dfa055bc810110004585ca79be323586764e14179ee20e54376592" + "output": "99ecb1509d2cbc16bab389714e5933932977e742472fcd9277d67f45699e076a" }, { "input": { "645eece27fdce6fd3852790131a50dc5b2dd655a855421b88700e6eb43279ad9": "72" }, - "output": "75978696ab7bd70492c2abbecf26fd03eb2c41e0d83daf968f45c20f566b9a9b" + "output": "e9a89ab2f10d45a46d47127110e8353d6443b635b08e989a743c27bb82740d7d" }, { "input": { "3dbc5f775f6156957139100c343bb5ae6589af7398db694ab6c60630a9ed0fcd": "4227b4a465084852cd87d8f23bec0db6fa7766b9685ab5e095ef9cda9e15e49d" }, - "output": "9ea1799e255f9b5edb960cf6640aa42ec2fac24a199be8155853ddcce9b896c4" + "output": "5fd68f074c914741601931d64c6c772c18ab8a4cd0cd3a4fff0611a5d97ecc94" }, { "input": { "d44438ec54b3f4d9771a43ed435f21b53a4f1f42be4c34b5d998bb9d53adc517": "2bdea5ab5a70d42dbd29c5944a90aa6f1774815854a21d9af07a9ca98d936150c0" }, - "output": "de6ffcbc0c3c6e3e5b6ef8f7ba875b77707f502228db0b6b9173b3f659b8edb6" + "output": "fb982161f7deefc8b66af5814a01396fba3cb78b6c826feedef9433fdd234666" }, { "input": { "d484d55a6f532466b844c01500e503cafad33b4f4f1493a2da0b3b1377bd383b": "fd3b2d4981a80d6a3a2b500dd3516b9f6891b0a2b93af8dc1285af7c3ebbdbf18a8d2615c5a26fd00c46d64112603bbfb765cfa460c1dac87de5790b" }, - "output": "720f6a3acf7c3de97febd9508c7a9e4d0a12fb65283588f596aeb4e2423d3bda" + "output": "ef11722d05e21b20e7a37e355c685df020a4dcf22fb888f10b0138c7cd162461" }, { "input": { "f2a9fcaf8ae0ff770b0908ebdee1daf8457c0ef5e1106c89ad364236333c5fb3": "22c62f84ee5775d1e75ba6519f6dfae571eb1888768f2a203281579656b6a29097f7c7e2cf44e38da9a541d9b4c773db8b71e1d3", "f3a9fcaf8ae0ff770b0908ebdee1daf8457c0ef5e1106c89ad364236333c5fb3": "44d0b26211d9d4a44e375207" }, - "output": "b9c99f66e5784879a178795b63ae178f8a49ee113652a122cd4b3b2a321418c1" + "output": "fb4bc560e0c314b09a29fc3f83a7f063ec118ff3fc1fba4430fcc0fbea09a207" }, { "input": { "27a30d678b05b75bd7c5ce723d7dbe919c9ee57d03f687c6097228ae37d7db81": "ec568a22939875f3aba1c9d5751a8bf1114716dc12ca18389e30cca648d490c9f23817bb54135c12", "27a20d678b05b75bd7c5ce723d7dbe919c9ee57d03f687c6097228ae37d7db81": "e8a9e5097a500730bc63cb" }, - "output": "846fd6a4c1913db012ee6bf3184b85db4b9d9c3f429305c9c60ae610f6bd2d0b" + "output": "8b2d0ec28b64cad96370853a51ba61ba6af904bf7964ea60ca5f939e3ff9b24d" }, { "input": { "8e758c6d2b87bd72bb121e82801a212717d730343ed555bd8757f3f976eb5476": "74e30dd46bb8dcae80e82f7585a5d652e00cbf1b43a8873f6977b7891cbca312aaac17b7c6ab", "80542dacde2838f3383f47eca425ca657d4bb7814368be746cf57ea6df2f7da1": "384905461e004f92366ceb267347688aa01e9f8cd362" }, - "output": "e79ee404bb7caf984f99f7a5d997200a306b0302fa08262b380662562d693313" + "output": "5a2b3aad444bc24514076cb876b20eeed158b81dc07f52369433862e3cdadf33" }, { "input": { @@ -62,7 +62,7 @@ "15207c233b055f921701fc62b41a440d01dfa488016a97cc653a84afb5f94fd5": "157b6c821169dacabcf26690df", "b05ff8a05bb23c0d7b177d47ce466ee58fd55c6a0351a3040cf3cbf5225aab19": "6a208734106f38b73880684b" }, - "output": "55634c70b9dca56f2f40b343f750a5c9744798370cbf3f669e29ebe0b8d64ceb" + "output": "f6ac87ea6258a68bd3288cf73ac9d03419b548858c5466b1927b796f29db13fc" }, { "input": { @@ -77,6 +77,6 @@ "9e78a15cc0b45c83c83218efadd234cbac22dbffb24a76e2eb5f6a81d32df616": "e8256c6b5a9623cf2b293090f78f8fbceea6fc3991ac5f872400608f14d2a8b3d494fcda1c51d93b9904e3242cdeaa4b227c68cea89cca05ab6b5296edf105", "03345958f90731bce89d07c2722dc693425a541b5230f99a6867882993576a23": "cd759a8d88edb46dda489a45ba6e48a42ce7efd36f1ca31d3bdfa40d2091f27740c5ec5de746d90d9841b986f575d545d0fb642398914eaab5" }, - "output": "0120dd8239fdc65ef0485215493b6de1b4b31b96d9bae99617afb6178e4d43e3" + "output": "7d874bf70ea045e278f5cd2eafb28b74cdaee9c225ca884dee82532caa7bad0f" } ] \ No newline at end of file