diff --git a/web-wallet/package-lock.json b/web-wallet/package-lock.json index c5186cbbfc..8ba92628b9 100644 --- a/web-wallet/package-lock.json +++ b/web-wallet/package-lock.json @@ -17,6 +17,7 @@ "@web3modal/wagmi": "5.1.0", "bip39": "3.1.0", "css-doodle": "0.39.2", + "dexie": "4.0.8", "lamb": "0.61.1", "qr-scanner": "1.4.2", "qrcode": "1.5.3", @@ -40,6 +41,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-custom-alias": "1.3.2", "eslint-plugin-svelte": "2.41.0", + "fake-indexeddb": "6.0.0", "jsdom": "24.1.0", "jsdom-worker": "0.3.0", "lamb-types": "0.61.7", @@ -2232,6 +2234,24 @@ "fake-indexeddb": "5.0.1" } }, + "node_modules/@dusk-network/dusk-wallet-js/node_modules/dexie": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", + "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==", + "license": "Apache-2.0", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@dusk-network/dusk-wallet-js/node_modules/fake-indexeddb": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-5.0.1.tgz", + "integrity": "sha512-vxybH29Owtc6khV/Usy47B1g+eKwyhFiX8nwpCC4td320jvwrKQDH6vNtcJZgUzVxmfsSIlHzLKQzT76JMCO7A==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@dusk-network/eslint-config": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@dusk-network/eslint-config/-/eslint-config-3.1.0.tgz", @@ -9880,13 +9900,10 @@ "license": "MIT" }, "node_modules/dexie": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", - "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==", - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" - } + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-4.0.8.tgz", + "integrity": "sha512-1G6cJevS17KMDK847V3OHvK2zei899GwpDiqfEXHP1ASvme6eWJmAp9AU4s1son2TeGkWmC0g3y8ezOBPnalgQ==", + "license": "Apache-2.0" }, "node_modules/diffie-hellman": { "version": "5.0.3", @@ -10972,9 +10989,10 @@ } }, "node_modules/fake-indexeddb": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-5.0.1.tgz", - "integrity": "sha512-vxybH29Owtc6khV/Usy47B1g+eKwyhFiX8nwpCC4td320jvwrKQDH6vNtcJZgUzVxmfsSIlHzLKQzT76JMCO7A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-6.0.0.tgz", + "integrity": "sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18" diff --git a/web-wallet/package.json b/web-wallet/package.json index f363750a79..1dd069754d 100644 --- a/web-wallet/package.json +++ b/web-wallet/package.json @@ -43,6 +43,7 @@ "@web3modal/wagmi": "5.1.0", "bip39": "3.1.0", "css-doodle": "0.39.2", + "dexie": "4.0.8", "lamb": "0.61.1", "qr-scanner": "1.4.2", "qrcode": "1.5.3", @@ -66,6 +67,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-custom-alias": "1.3.2", "eslint-plugin-svelte": "2.41.0", + "fake-indexeddb": "6.0.0", "jsdom": "24.1.0", "jsdom-worker": "0.3.0", "lamb-types": "0.61.7", diff --git a/web-wallet/src/lib/dusk/array/__tests__/arrayMaxByKey.spec.js b/web-wallet/src/lib/dusk/array/__tests__/arrayMaxByKey.spec.js new file mode 100644 index 0000000000..02d41b4cf6 --- /dev/null +++ b/web-wallet/src/lib/dusk/array/__tests__/arrayMaxByKey.spec.js @@ -0,0 +1,26 @@ +import { describe, expect, it } from "vitest"; + +import { arrayMaxByKey } from ".."; + +describe("arrayMaxByKey", () => { + const testArr = [ + { active: true, date: new Date(2024, 1, 2), uid: "id3", value: 6, x: 0 }, + { active: false, date: new Date(2024, 1, 3), uid: "id2", value: 3, x: -0 }, + { active: false, date: new Date(2024, 1, 4), uid: "id1", value: 5, x: -1 }, + ]; + + it("should get the max value of a key holding a comparable value in an array of objects", () => { + expect(arrayMaxByKey("active")(testArr)).toBe(true); + expect(arrayMaxByKey("date")(testArr)).toStrictEqual(new Date(2024, 1, 4)); + expect(arrayMaxByKey("uid")(testArr)).toBe("id3"); + expect(arrayMaxByKey("value")(testArr)).toBe(6); + }); + + it("will use the last encountered value if `0` or `-0` are the max value", () => { + expect(arrayMaxByKey("x")(testArr)).toBe(-0); + }); + + it("should return `undefined` if given an empty array", () => { + expect(arrayMaxByKey("value")([])).toBe(undefined); + }); +}); diff --git a/web-wallet/src/lib/dusk/array/arrayMaxByKey.js b/web-wallet/src/lib/dusk/array/arrayMaxByKey.js new file mode 100644 index 0000000000..77af353828 --- /dev/null +++ b/web-wallet/src/lib/dusk/array/arrayMaxByKey.js @@ -0,0 +1,27 @@ +import { reduce } from "lamb"; + +/** + * Gets the max value of the given key in an array of objects. + * + * + * @example + * const scores = [ + * { score: 7, user: "John" }, + * { score: 9, user: "Jane" }, + * { score: 5, user: "Mario" } + * ]; + * const getMaxScore = arrayMaxByKey("score"); + * + * getMaxScore(scores) // => 9 + * + * @template {string} K + * @template {Record & Record} S + * @param {K} key + * @returns {(array: L) => L extends [] ? undefined : typeof array[number][K]} + */ +const arrayMaxByKey = (key) => (array) => + array.length === 0 + ? undefined + : reduce(array, (r, c) => (r[key] > c[key] ? r : c))[key]; + +export default arrayMaxByKey; diff --git a/web-wallet/src/lib/dusk/array/index.js b/web-wallet/src/lib/dusk/array/index.js index d951bccfd2..d41f57057c 100644 --- a/web-wallet/src/lib/dusk/array/index.js +++ b/web-wallet/src/lib/dusk/array/index.js @@ -1,3 +1,4 @@ export { default as arraysEqual } from "./arraysEqual"; +export { default as arrayMaxByKey } from "./arrayMaxByKey"; export { default as shuffleArray } from "./shuffleArray"; export { default as findFirstNMatches } from "./findFirstNMatches"; diff --git a/web-wallet/src/lib/mock-data/cache-history.js b/web-wallet/src/lib/mock-data/cache-history.js new file mode 100644 index 0000000000..d4a24a3fd3 --- /dev/null +++ b/web-wallet/src/lib/mock-data/cache-history.js @@ -0,0 +1,73 @@ +/* eslint-disable camelcase */ + +/** @type {WalletCacheHistoryEntry[]} */ +export default [ + { + history: [ + { + amount: 400, + block_height: 201605, + direction: "In", + fee: 0.000290986, + id: "678e9430fd8ca2e8b6161dd6ea30e4b923505a446dac77bdbe911ef3f50e450d", + tx_type: "TRANSFER", + }, + { + amount: 5000, + block_height: 201643, + direction: "In", + fee: 0.00030326, + id: "eeeca070ed7650fc2692be43ba36f5d74c0168eca92680debe0de172f64a130b", + tx_type: "TRANSFER", + }, + { + amount: -15.00030345, + block_height: 3504088, + direction: "Out", + fee: 0.00030345, + id: "e3d9b492474d76da6edc415dd04d47d3fc40ecb0b49ee8e1dd087eb3dab0100a", + tx_type: "TRANSFER", + }, + { + amount: -8.000291559, + block_height: 3504122, + direction: "Out", + fee: 0.000291559, + id: "8e435db8584eac07e3a7f69afbdf2d00b8176271695ea1e1b4da79922f3c050c", + tx_type: "TRANSFER", + }, + ], + lastBlockHeight: 3504122, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + history: [ + { + amount: 10, + block_height: 3101148, + direction: "In", + fee: 0.00029775, + id: "5847cc9b96407fdc9ff973c3095f0d34958a47ba7272053f43038ba8e6afaf02", + tx_type: "TRANSFER", + }, + { + amount: -5.000284098, + block_height: 3101191, + direction: "Out", + fee: 0.000284098, + id: "84d0c5727b93c47e9827524a77ea1c7492cc775faf117d26a53df6a97b791309", + tx_type: "TRANSFER", + }, + { + amount: 1, + block_height: 3101764, + direction: "In", + fee: 0.000296467, + id: "4d9bb16589f6b723408305744eada6c05aaa4b27296ec440055c487694ce0a05", + tx_type: "TRANSFER", + }, + ], + lastBlockHeight: 3101764, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, +]; diff --git a/web-wallet/src/lib/mock-data/cache-spent-notes.js b/web-wallet/src/lib/mock-data/cache-spent-notes.js new file mode 100644 index 0000000000..ac2ec32512 --- /dev/null +++ b/web-wallet/src/lib/mock-data/cache-spent-notes.js @@ -0,0 +1,1284 @@ +/* eslint-disable camelcase */ + +/** @type {WalletCacheNote[]} */ +export default [ + { + block_height: 201605, + note: [ + 51, 171, 192, 164, 26, 43, 202, 92, 234, 36, 174, 117, 11, 143, 178, 160, + 141, 175, 101, 175, 205, 48, 210, 87, 1, 22, 34, 191, 95, 72, 173, 72, + 112, 147, 205, 69, 137, 47, 138, 230, 210, 39, 108, 196, 155, 204, 103, + 76, 92, 28, 190, 23, 95, 47, 213, 188, 224, 97, 217, 162, 232, 123, 12, + 107, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 51, + 171, 192, 164, 26, 43, 202, 92, 234, 36, 174, 117, 11, 143, 178, 160, 141, + 175, 101, 175, 205, 48, 210, 87, 1, 22, 34, 191, 95, 72, 173, 72, 112, + 147, 205, 69, 137, 47, 138, 230, 210, 39, 108, 196, 155, 204, 103, 76, 92, + 28, 190, 23, 95, 47, 213, 188, 224, 97, 217, 162, 232, 123, 12, 107, 21, + 32, 98, 156, 86, 67, 196, 13, 179, 202, 4, 132, 12, 16, 104, 54, 20, 15, + 13, 6, 229, 192, 17, 147, 85, 72, 104, 76, 17, 68, 125, 102, 255, 219, 52, + 221, 153, 13, 70, 64, 102, 190, 116, 112, 22, 215, 196, 197, 168, 117, + 246, 175, 26, 23, 119, 82, 57, 71, 63, 212, 134, 194, 85, 76, 110, 105, + 227, 67, 106, 181, 29, 188, 198, 87, 104, 107, 91, 249, 119, 14, 120, 191, + 160, 99, 254, 119, 142, 130, 102, 114, 135, 147, 70, 131, 161, 55, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 255, 219, 52, + 221, 153, 13, 70, 64, 102, 190, 116, 112, 22, 215, 196, 197, 168, 117, + 246, 175, 26, 23, 119, 82, 57, 71, 63, 212, 134, 194, 85, 76, 110, 105, + 227, 67, 106, 181, 29, 188, 198, 87, 104, 107, 91, 249, 119, 14, 120, 191, + 160, 99, 254, 119, 142, 130, 102, 114, 135, 147, 70, 131, 161, 55, 216, + 131, 101, 254, 234, 23, 214, 82, 64, 6, 30, 227, 208, 106, 237, 37, 148, + 127, 35, 0, 197, 81, 118, 55, 184, 29, 19, 127, 2, 53, 241, 18, 205, 246, + 178, 96, 188, 231, 112, 4, 87, 10, 155, 23, 71, 188, 89, 51, 54, 112, 63, + 235, 47, 6, 94, 92, 209, 111, 210, 228, 251, 93, 82, 28, 254, 255, 255, + 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, + 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 216, 131, 101, 254, 234, + 23, 214, 82, 64, 6, 30, 227, 208, 106, 237, 37, 148, 127, 35, 0, 197, 81, + 118, 55, 184, 29, 19, 127, 2, 53, 241, 18, 205, 246, 178, 96, 188, 231, + 112, 4, 87, 10, 155, 23, 71, 188, 89, 51, 54, 112, 63, 235, 47, 6, 94, 92, + 209, 111, 210, 228, 251, 93, 82, 28, 57, 90, 0, 0, 0, 0, 0, 0, 73, 11, + 193, 110, 111, 61, 148, 128, 24, 15, 93, 198, 167, 2, 255, 93, 66, 225, 7, + 28, 248, 73, 240, 128, 126, 249, 3, 254, 121, 174, 237, 96, 204, 38, 27, + 187, 152, 206, 8, 51, 35, 76, 167, 33, 101, 102, 236, 231, 176, 151, 121, + 72, 32, 228, 57, 154, 2, 130, 25, 46, 106, 25, 178, 0, 63, 9, 92, 11, 243, + 70, 53, 58, 109, 244, 216, 100, 123, 39, 230, 140, 76, 40, 28, 180, 182, + 242, 254, 23, 146, 29, 238, 241, 168, 0, 47, 77, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 200, 146, 0, 160, 15, 107, 3, 10, 28, 145, 230, 27, 202, 61, 169, 105, + 108, 181, 255, 169, 37, 11, 45, 206, 66, 102, 191, 9, 12, 187, 77, 11, + ], + pos: 23097, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 201643, + note: [ + 225, 171, 65, 5, 135, 232, 167, 170, 158, 56, 175, 25, 12, 73, 98, 178, + 159, 92, 61, 240, 154, 15, 83, 211, 169, 105, 226, 30, 197, 47, 202, 102, + 240, 149, 161, 230, 159, 239, 109, 193, 87, 86, 169, 145, 154, 39, 51, + 120, 123, 45, 62, 95, 148, 10, 186, 215, 63, 123, 51, 94, 75, 196, 241, + 38, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 225, + 171, 65, 5, 135, 232, 167, 170, 158, 56, 175, 25, 12, 73, 98, 178, 159, + 92, 61, 240, 154, 15, 83, 211, 169, 105, 226, 30, 197, 47, 202, 102, 240, + 149, 161, 230, 159, 239, 109, 193, 87, 86, 169, 145, 154, 39, 51, 120, + 123, 45, 62, 95, 148, 10, 186, 215, 63, 123, 51, 94, 75, 196, 241, 38, + 165, 109, 83, 20, 241, 75, 237, 7, 64, 86, 166, 138, 76, 211, 70, 86, 107, + 225, 89, 110, 193, 135, 86, 104, 201, 124, 79, 223, 141, 165, 88, 112, 91, + 25, 142, 245, 240, 5, 154, 240, 208, 56, 39, 242, 164, 24, 215, 148, 209, + 145, 178, 180, 184, 178, 95, 188, 170, 170, 90, 187, 112, 12, 1, 97, 73, + 221, 204, 201, 249, 184, 235, 166, 189, 211, 199, 240, 33, 67, 72, 244, + 221, 222, 61, 231, 144, 189, 3, 71, 60, 76, 241, 243, 169, 34, 120, 8, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 91, 25, + 142, 245, 240, 5, 154, 240, 208, 56, 39, 242, 164, 24, 215, 148, 209, 145, + 178, 180, 184, 178, 95, 188, 170, 170, 90, 187, 112, 12, 1, 97, 73, 221, + 204, 201, 249, 184, 235, 166, 189, 211, 199, 240, 33, 67, 72, 244, 221, + 222, 61, 231, 144, 189, 3, 71, 60, 76, 241, 243, 169, 34, 120, 8, 140, + 139, 191, 112, 178, 49, 0, 215, 165, 174, 63, 103, 253, 105, 89, 231, 57, + 49, 81, 23, 89, 207, 124, 243, 44, 35, 204, 98, 44, 77, 207, 6, 114, 1, + 174, 89, 122, 193, 221, 19, 150, 48, 150, 170, 254, 145, 207, 53, 157, + 134, 75, 7, 75, 184, 138, 54, 75, 183, 150, 42, 68, 155, 171, 92, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 140, 139, 191, + 112, 178, 49, 0, 215, 165, 174, 63, 103, 253, 105, 89, 231, 57, 49, 81, + 23, 89, 207, 124, 243, 44, 35, 204, 98, 44, 77, 207, 6, 114, 1, 174, 89, + 122, 193, 221, 19, 150, 48, 150, 170, 254, 145, 207, 53, 157, 134, 75, 7, + 75, 184, 138, 54, 75, 183, 150, 42, 68, 155, 171, 92, 72, 90, 0, 0, 0, 0, + 0, 0, 120, 231, 49, 44, 178, 67, 21, 83, 76, 11, 118, 3, 178, 205, 238, + 141, 63, 174, 60, 117, 188, 238, 115, 39, 114, 179, 1, 198, 56, 184, 90, + 89, 158, 198, 102, 1, 189, 202, 174, 22, 43, 177, 157, 136, 218, 30, 129, + 251, 98, 136, 72, 68, 217, 249, 58, 216, 134, 145, 55, 206, 249, 222, 122, + 69, 114, 48, 169, 37, 253, 163, 163, 173, 253, 252, 149, 227, 125, 204, + 252, 173, 98, 245, 162, 131, 240, 94, 19, 53, 106, 247, 74, 201, 239, 237, + 190, 82, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 31, 132, 152, 10, 72, 15, 210, 205, 114, 209, 97, 111, 42, 48, 2, 169, + 165, 139, 117, 35, 60, 32, 12, 70, 207, 125, 186, 9, 16, 77, 146, 106, + ], + pos: 23112, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 197, 147, 144, 49, 75, 238, 7, 95, 65, 60, 248, 17, 191, 135, 104, 77, + 207, 26, 122, 186, 143, 238, 102, 115, 0, 82, 52, 197, 3, 145, 10, 16, 97, + 234, 82, 230, 218, 128, 135, 155, 120, 207, 163, 121, 254, 111, 190, 16, + 129, 106, 122, 149, 148, 18, 62, 31, 87, 196, 43, 175, 117, 255, 49, 80, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 197, 147, + 144, 49, 75, 238, 7, 95, 65, 60, 248, 17, 191, 135, 104, 77, 207, 26, 122, + 186, 143, 238, 102, 115, 0, 82, 52, 197, 3, 145, 10, 16, 97, 234, 82, 230, + 218, 128, 135, 155, 120, 207, 163, 121, 254, 111, 190, 16, 129, 106, 122, + 149, 148, 18, 62, 31, 87, 196, 43, 175, 117, 255, 49, 80, 47, 69, 113, + 114, 18, 3, 19, 215, 135, 25, 241, 41, 22, 39, 69, 146, 202, 255, 119, 54, + 171, 190, 194, 31, 15, 138, 53, 161, 128, 245, 225, 29, 193, 20, 54, 79, + 161, 86, 56, 99, 157, 209, 199, 162, 185, 126, 183, 83, 160, 204, 48, 18, + 4, 175, 107, 132, 91, 84, 50, 11, 134, 25, 80, 89, 8, 159, 90, 60, 208, + 63, 72, 27, 196, 41, 248, 214, 106, 4, 92, 150, 106, 147, 193, 138, 107, + 3, 85, 67, 46, 61, 241, 141, 160, 99, 83, 56, 254, 255, 255, 255, 1, 0, 0, + 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, + 111, 5, 197, 172, 89, 177, 36, 24, 193, 20, 54, 79, 161, 86, 56, 99, 157, + 209, 199, 162, 185, 126, 183, 83, 160, 204, 48, 18, 4, 175, 107, 132, 91, + 84, 50, 11, 134, 25, 80, 89, 8, 159, 90, 60, 208, 63, 72, 27, 196, 41, + 248, 214, 106, 4, 92, 150, 106, 147, 193, 138, 107, 3, 85, 67, 46, 61, + 241, 141, 160, 99, 83, 56, 224, 136, 240, 61, 74, 245, 225, 164, 112, 84, + 93, 178, 105, 138, 153, 116, 184, 98, 10, 88, 45, 7, 86, 116, 171, 161, + 134, 107, 61, 213, 3, 100, 184, 148, 74, 70, 61, 223, 37, 250, 204, 239, + 85, 96, 23, 136, 105, 143, 151, 154, 171, 131, 39, 238, 251, 89, 215, 200, + 67, 170, 16, 175, 84, 61, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, + 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, + 89, 177, 36, 24, 224, 136, 240, 61, 74, 245, 225, 164, 112, 84, 93, 178, + 105, 138, 153, 116, 184, 98, 10, 88, 45, 7, 86, 116, 171, 161, 134, 107, + 61, 213, 3, 100, 184, 148, 74, 70, 61, 223, 37, 250, 204, 239, 85, 96, 23, + 136, 105, 143, 151, 154, 171, 131, 39, 238, 251, 89, 215, 200, 67, 170, + 16, 175, 84, 61, 233, 100, 0, 0, 0, 0, 0, 0, 220, 9, 43, 126, 92, 117, + 209, 119, 242, 8, 211, 55, 138, 24, 232, 240, 108, 38, 83, 106, 183, 50, + 45, 192, 23, 85, 92, 51, 131, 108, 161, 23, 86, 12, 122, 228, 67, 34, 123, + 42, 168, 227, 53, 170, 184, 62, 213, 14, 111, 253, 4, 226, 25, 192, 45, + 108, 90, 34, 228, 41, 101, 124, 250, 32, 120, 30, 255, 152, 181, 156, 119, + 11, 250, 242, 106, 163, 6, 125, 109, 244, 22, 108, 168, 130, 11, 154, 206, + 0, 86, 63, 244, 173, 59, 230, 85, 63, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 49, 211, 180, 9, 212, 28, 198, 80, 117, 140, 77, 53, 202, 131, 115, 57, + 129, 40, 217, 8, 156, 59, 248, 25, 158, 39, 135, 105, 240, 51, 63, 104, + ], + pos: 25833, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 208, 90, 67, 88, 35, 111, 2, 166, 132, 242, 36, 136, 8, 85, 228, 95, 195, + 65, 107, 65, 168, 135, 160, 167, 227, 112, 230, 155, 122, 60, 135, 111, + 155, 115, 143, 122, 164, 212, 36, 161, 95, 44, 252, 51, 155, 217, 144, 54, + 145, 99, 253, 4, 12, 183, 181, 255, 44, 199, 50, 206, 246, 108, 191, 8, + 204, 49, 42, 149, 25, 235, 247, 251, 119, 252, 246, 172, 183, 219, 69, 78, + 101, 137, 208, 241, 174, 90, 186, 85, 202, 180, 104, 186, 104, 184, 145, + 99, 58, 58, 103, 163, 232, 179, 58, 155, 100, 180, 6, 187, 255, 13, 13, + 250, 54, 79, 30, 187, 47, 198, 195, 76, 247, 81, 202, 89, 143, 179, 252, + 106, 49, 141, 86, 76, 187, 153, 104, 181, 150, 49, 239, 0, 52, 241, 162, + 26, 173, 149, 145, 207, 162, 96, 12, 13, 193, 43, 226, 154, 3, 63, 77, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 2, 210, 130, 137, 61, 190, 150, 36, 89, 93, 18, + 176, 155, 132, 116, 24, 132, 169, 62, 173, 170, 204, 77, 245, 104, 142, + 130, 166, 72, 40, 83, 78, 94, 136, 7, 225, 32, 246, 112, 240, 229, 248, + 41, 228, 124, 40, 186, 67, 128, 173, 39, 141, 165, 60, 242, 62, 137, 175, + 208, 198, 34, 233, 64, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, + 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, + 177, 36, 24, 80, 2, 210, 130, 137, 61, 190, 150, 36, 89, 93, 18, 176, 155, + 132, 116, 24, 132, 169, 62, 173, 170, 204, 77, 245, 104, 142, 130, 166, + 72, 40, 83, 78, 94, 136, 7, 225, 32, 246, 112, 240, 229, 248, 41, 228, + 124, 40, 186, 67, 128, 173, 39, 141, 165, 60, 242, 62, 137, 175, 208, 198, + 34, 233, 64, 239, 216, 171, 229, 6, 239, 68, 44, 84, 129, 184, 57, 179, + 189, 125, 27, 153, 158, 142, 136, 143, 12, 208, 47, 80, 101, 31, 241, 255, + 237, 105, 11, 46, 241, 123, 28, 23, 82, 35, 181, 165, 99, 75, 55, 117, 35, + 27, 172, 138, 30, 133, 18, 174, 40, 26, 66, 15, 53, 132, 107, 187, 36, 43, + 45, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 239, + 216, 171, 229, 6, 239, 68, 44, 84, 129, 184, 57, 179, 189, 125, 27, 153, + 158, 142, 136, 143, 12, 208, 47, 80, 101, 31, 241, 255, 237, 105, 11, 46, + 241, 123, 28, 23, 82, 35, 181, 165, 99, 75, 55, 117, 35, 27, 172, 138, 30, + 133, 18, 174, 40, 26, 66, 15, 53, 132, 107, 187, 36, 43, 45, 234, 100, 0, + 0, 0, 0, 0, 0, 176, 60, 93, 130, 78, 195, 162, 125, 81, 3, 18, 134, 48, + 232, 234, 31, 114, 52, 224, 20, 60, 103, 242, 66, 76, 89, 109, 76, 50, + 164, 183, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, + ], + nullifier: [ + 142, 49, 66, 32, 134, 117, 193, 167, 73, 141, 66, 166, 190, 62, 229, 109, + 241, 206, 233, 48, 147, 111, 119, 225, 199, 129, 129, 208, 49, 199, 129, + 97, + ], + pos: 25834, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 131, 208, 215, 198, 170, 51, 213, 145, 172, 98, 24, 243, 75, 127, 15, 208, + 104, 186, 71, 155, 161, 239, 250, 164, 90, 2, 174, 182, 64, 15, 59, 13, + 96, 231, 197, 77, 86, 139, 172, 88, 28, 245, 90, 252, 112, 244, 151, 9, + 12, 161, 29, 203, 225, 9, 235, 200, 112, 115, 252, 17, 108, 129, 28, 63, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 131, 208, + 215, 198, 170, 51, 213, 145, 172, 98, 24, 243, 75, 127, 15, 208, 104, 186, + 71, 155, 161, 239, 250, 164, 90, 2, 174, 182, 64, 15, 59, 13, 96, 231, + 197, 77, 86, 139, 172, 88, 28, 245, 90, 252, 112, 244, 151, 9, 12, 161, + 29, 203, 225, 9, 235, 200, 112, 115, 252, 17, 108, 129, 28, 63, 212, 51, + 7, 146, 229, 226, 203, 201, 241, 194, 185, 128, 116, 119, 31, 178, 91, + 250, 18, 144, 36, 49, 138, 44, 137, 160, 144, 195, 220, 255, 78, 107, 80, + 66, 252, 183, 93, 146, 75, 97, 73, 10, 87, 190, 32, 76, 16, 209, 119, 189, + 92, 4, 24, 189, 180, 80, 121, 99, 119, 127, 80, 52, 79, 85, 1, 80, 82, 33, + 162, 123, 8, 171, 104, 144, 174, 241, 157, 211, 176, 55, 53, 116, 98, 190, + 86, 234, 237, 56, 206, 75, 200, 15, 91, 92, 26, 21, 254, 255, 255, 255, 1, + 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, + 153, 111, 5, 197, 172, 89, 177, 36, 24, 80, 66, 252, 183, 93, 146, 75, 97, + 73, 10, 87, 190, 32, 76, 16, 209, 119, 189, 92, 4, 24, 189, 180, 80, 121, + 99, 119, 127, 80, 52, 79, 85, 1, 80, 82, 33, 162, 123, 8, 171, 104, 144, + 174, 241, 157, 211, 176, 55, 53, 116, 98, 190, 86, 234, 237, 56, 206, 75, + 200, 15, 91, 92, 26, 21, 246, 203, 105, 48, 122, 72, 191, 79, 8, 100, 183, + 95, 176, 115, 173, 116, 103, 252, 82, 37, 222, 178, 213, 183, 220, 107, + 114, 31, 131, 213, 13, 29, 241, 23, 219, 246, 83, 98, 69, 127, 225, 153, + 204, 123, 159, 39, 57, 165, 129, 147, 151, 250, 254, 171, 7, 78, 142, 234, + 69, 16, 222, 33, 149, 77, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, + 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, + 89, 177, 36, 24, 246, 203, 105, 48, 122, 72, 191, 79, 8, 100, 183, 95, + 176, 115, 173, 116, 103, 252, 82, 37, 222, 178, 213, 183, 220, 107, 114, + 31, 131, 213, 13, 29, 241, 23, 219, 246, 83, 98, 69, 127, 225, 153, 204, + 123, 159, 39, 57, 165, 129, 147, 151, 250, 254, 171, 7, 78, 142, 234, 69, + 16, 222, 33, 149, 77, 51, 228, 0, 0, 0, 0, 0, 0, 216, 22, 246, 237, 70, + 48, 213, 237, 67, 73, 31, 170, 255, 211, 48, 242, 55, 74, 209, 217, 8, + 244, 222, 95, 197, 88, 189, 101, 25, 254, 218, 59, 57, 50, 199, 148, 113, + 207, 4, 183, 166, 53, 57, 107, 243, 119, 193, 67, 15, 154, 116, 64, 197, + 19, 31, 155, 118, 220, 145, 13, 218, 85, 87, 71, 0, 118, 195, 91, 184, 50, + 182, 59, 182, 172, 136, 24, 40, 202, 99, 171, 141, 121, 247, 36, 184, 103, + 14, 54, 1, 238, 124, 223, 113, 198, 109, 22, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 79, 127, 106, 144, 74, 135, 127, 239, 162, 191, 245, 144, 146, 184, 208, + 7, 28, 166, 38, 78, 222, 31, 118, 190, 226, 108, 91, 249, 86, 140, 94, 51, + ], + pos: 58419, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 101, 246, 198, 136, 235, 239, 49, 151, 128, 164, 129, 34, 29, 124, 142, + 210, 14, 188, 54, 103, 95, 127, 214, 117, 151, 137, 238, 174, 115, 229, + 249, 67, 125, 208, 237, 164, 64, 166, 93, 48, 220, 12, 188, 145, 131, 77, + 113, 216, 119, 94, 16, 170, 66, 156, 158, 136, 193, 164, 230, 180, 223, + 145, 231, 103, 46, 137, 212, 194, 92, 214, 205, 208, 109, 13, 20, 199, 68, + 239, 205, 105, 183, 224, 167, 60, 211, 136, 131, 125, 35, 79, 82, 111, + 130, 27, 145, 38, 63, 202, 174, 71, 61, 128, 81, 67, 210, 135, 28, 201, + 68, 166, 30, 196, 96, 247, 250, 217, 195, 114, 224, 81, 230, 245, 253, 89, + 202, 144, 90, 88, 150, 127, 136, 11, 34, 101, 186, 7, 185, 106, 54, 207, + 143, 171, 87, 170, 190, 17, 225, 110, 243, 103, 124, 50, 142, 190, 253, + 245, 31, 110, 176, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 25, 138, 21, 1, 141, 207, + 154, 161, 164, 219, 137, 39, 217, 201, 183, 107, 23, 31, 100, 28, 236, 82, + 50, 107, 194, 29, 78, 120, 54, 198, 18, 237, 201, 13, 86, 31, 243, 241, + 12, 188, 114, 171, 43, 251, 76, 107, 2, 61, 53, 192, 146, 115, 148, 120, + 201, 220, 240, 66, 244, 28, 17, 174, 34, 254, 255, 255, 255, 1, 0, 0, 0, + 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, + 5, 197, 172, 89, 177, 36, 24, 88, 25, 138, 21, 1, 141, 207, 154, 161, 164, + 219, 137, 39, 217, 201, 183, 107, 23, 31, 100, 28, 236, 82, 50, 107, 194, + 29, 78, 120, 54, 198, 18, 237, 201, 13, 86, 31, 243, 241, 12, 188, 114, + 171, 43, 251, 76, 107, 2, 61, 53, 192, 146, 115, 148, 120, 201, 220, 240, + 66, 244, 28, 17, 174, 34, 183, 68, 115, 90, 200, 16, 99, 39, 220, 69, 191, + 179, 121, 18, 98, 22, 195, 90, 182, 150, 58, 135, 164, 248, 95, 118, 242, + 163, 135, 224, 188, 63, 92, 22, 244, 131, 172, 251, 100, 7, 77, 134, 235, + 55, 134, 191, 87, 54, 207, 72, 118, 212, 176, 151, 244, 229, 246, 103, 57, + 252, 160, 32, 57, 27, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, + 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, + 177, 36, 24, 183, 68, 115, 90, 200, 16, 99, 39, 220, 69, 191, 179, 121, + 18, 98, 22, 195, 90, 182, 150, 58, 135, 164, 248, 95, 118, 242, 163, 135, + 224, 188, 63, 92, 22, 244, 131, 172, 251, 100, 7, 77, 134, 235, 55, 134, + 191, 87, 54, 207, 72, 118, 212, 176, 151, 244, 229, 246, 103, 57, 252, + 160, 32, 57, 27, 53, 228, 0, 0, 0, 0, 0, 0, 151, 176, 56, 252, 104, 79, + 199, 3, 105, 147, 15, 2, 248, 211, 69, 154, 162, 111, 213, 30, 100, 135, + 63, 29, 21, 214, 4, 25, 40, 131, 193, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 203, 89, 208, 130, 230, 249, 27, 48, 30, 139, 7, 53, 186, 46, 74, 52, 133, + 170, 116, 168, 55, 77, 232, 250, 77, 171, 168, 15, 52, 114, 43, 18, + ], + pos: 58421, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 191, 132, 65, 197, 139, 156, 99, 216, 240, 168, 156, 51, 104, 169, 235, + 21, 181, 161, 59, 79, 38, 23, 151, 158, 107, 50, 200, 140, 207, 112, 150, + 59, 47, 255, 176, 196, 0, 99, 88, 123, 255, 141, 226, 146, 107, 105, 82, + 127, 60, 162, 65, 172, 205, 198, 230, 216, 157, 44, 177, 178, 127, 167, + 194, 10, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 191, 132, 65, 197, 139, 156, 99, 216, 240, 168, 156, 51, 104, 169, 235, + 21, 181, 161, 59, 79, 38, 23, 151, 158, 107, 50, 200, 140, 207, 112, 150, + 59, 47, 255, 176, 196, 0, 99, 88, 123, 255, 141, 226, 146, 107, 105, 82, + 127, 60, 162, 65, 172, 205, 198, 230, 216, 157, 44, 177, 178, 127, 167, + 194, 10, 230, 104, 226, 128, 227, 80, 139, 197, 199, 252, 186, 103, 139, + 31, 41, 182, 43, 3, 129, 233, 215, 230, 134, 39, 160, 237, 100, 213, 3, + 238, 41, 66, 126, 200, 110, 77, 211, 181, 253, 111, 147, 75, 117, 88, 230, + 140, 60, 226, 163, 158, 160, 240, 155, 144, 135, 43, 114, 60, 44, 200, 50, + 66, 183, 3, 23, 199, 192, 189, 120, 134, 251, 83, 30, 51, 16, 212, 168, + 213, 175, 244, 11, 169, 209, 204, 159, 226, 71, 2, 195, 157, 250, 156, 90, + 119, 218, 95, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, + 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, + 24, 126, 200, 110, 77, 211, 181, 253, 111, 147, 75, 117, 88, 230, 140, 60, + 226, 163, 158, 160, 240, 155, 144, 135, 43, 114, 60, 44, 200, 50, 66, 183, + 3, 23, 199, 192, 189, 120, 134, 251, 83, 30, 51, 16, 212, 168, 213, 175, + 244, 11, 169, 209, 204, 159, 226, 71, 2, 195, 157, 250, 156, 90, 119, 218, + 95, 49, 10, 245, 146, 37, 153, 164, 129, 221, 129, 40, 216, 53, 118, 235, + 12, 150, 113, 203, 36, 21, 203, 164, 185, 181, 108, 222, 119, 75, 56, 87, + 105, 100, 173, 221, 176, 68, 228, 98, 227, 139, 34, 204, 78, 245, 108, 45, + 35, 1, 253, 107, 161, 221, 210, 236, 219, 39, 123, 149, 163, 0, 90, 233, + 112, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 49, + 10, 245, 146, 37, 153, 164, 129, 221, 129, 40, 216, 53, 118, 235, 12, 150, + 113, 203, 36, 21, 203, 164, 185, 181, 108, 222, 119, 75, 56, 87, 105, 100, + 173, 221, 176, 68, 228, 98, 227, 139, 34, 204, 78, 245, 108, 45, 35, 1, + 253, 107, 161, 221, 210, 236, 219, 39, 123, 149, 163, 0, 90, 233, 112, 61, + 228, 0, 0, 0, 0, 0, 0, 233, 174, 55, 87, 217, 71, 105, 223, 121, 64, 94, + 131, 56, 138, 185, 10, 133, 157, 160, 126, 191, 57, 143, 116, 131, 19, + 208, 4, 81, 75, 211, 90, 62, 41, 5, 62, 248, 52, 5, 233, 12, 58, 116, 171, + 132, 156, 84, 190, 243, 26, 205, 250, 1, 111, 106, 231, 233, 77, 25, 126, + 75, 234, 126, 97, 91, 137, 162, 253, 115, 188, 204, 212, 129, 90, 145, + 245, 126, 108, 237, 148, 38, 44, 55, 108, 13, 203, 168, 143, 144, 77, 125, + 32, 176, 22, 176, 42, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 250, 250, 183, 23, 62, 202, 218, 49, 96, 47, 29, 52, 136, 96, 171, 209, + 149, 190, 193, 135, 121, 159, 241, 12, 27, 80, 228, 149, 75, 188, 154, 99, + ], + pos: 58429, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 189, 188, 183, 202, 91, 53, 86, 64, 231, 144, 116, 255, 16, 194, 18, 212, + 33, 87, 179, 58, 39, 75, 49, 150, 197, 40, 33, 83, 17, 68, 73, 95, 163, + 251, 103, 23, 10, 115, 145, 140, 112, 92, 91, 42, 58, 241, 55, 180, 246, + 164, 136, 115, 128, 223, 21, 176, 126, 234, 156, 34, 106, 113, 90, 101, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 189, 188, + 183, 202, 91, 53, 86, 64, 231, 144, 116, 255, 16, 194, 18, 212, 33, 87, + 179, 58, 39, 75, 49, 150, 197, 40, 33, 83, 17, 68, 73, 95, 163, 251, 103, + 23, 10, 115, 145, 140, 112, 92, 91, 42, 58, 241, 55, 180, 246, 164, 136, + 115, 128, 223, 21, 176, 126, 234, 156, 34, 106, 113, 90, 101, 237, 136, + 75, 77, 221, 243, 234, 105, 188, 218, 166, 52, 232, 116, 208, 57, 180, + 203, 204, 244, 98, 76, 48, 132, 65, 217, 192, 153, 154, 3, 166, 100, 100, + 134, 176, 242, 103, 96, 227, 138, 32, 24, 10, 48, 64, 148, 46, 98, 139, + 234, 219, 212, 245, 231, 201, 41, 85, 101, 235, 68, 52, 129, 109, 7, 224, + 113, 245, 202, 61, 81, 219, 15, 118, 140, 239, 216, 109, 109, 210, 237, + 114, 227, 148, 213, 83, 115, 72, 128, 48, 125, 236, 235, 116, 69, 62, 15, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 100, 134, + 176, 242, 103, 96, 227, 138, 32, 24, 10, 48, 64, 148, 46, 98, 139, 234, + 219, 212, 245, 231, 201, 41, 85, 101, 235, 68, 52, 129, 109, 7, 224, 113, + 245, 202, 61, 81, 219, 15, 118, 140, 239, 216, 109, 109, 210, 237, 114, + 227, 148, 213, 83, 115, 72, 128, 48, 125, 236, 235, 116, 69, 62, 15, 46, + 95, 36, 47, 70, 198, 18, 104, 206, 124, 243, 196, 208, 74, 11, 115, 113, + 174, 225, 230, 201, 106, 22, 151, 42, 136, 29, 111, 183, 252, 228, 48, 12, + 128, 246, 101, 15, 41, 173, 34, 106, 21, 209, 17, 179, 66, 221, 116, 198, + 168, 240, 245, 35, 225, 124, 90, 58, 133, 76, 44, 184, 100, 70, 52, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 46, 95, 36, 47, + 70, 198, 18, 104, 206, 124, 243, 196, 208, 74, 11, 115, 113, 174, 225, + 230, 201, 106, 22, 151, 42, 136, 29, 111, 183, 252, 228, 48, 12, 128, 246, + 101, 15, 41, 173, 34, 106, 21, 209, 17, 179, 66, 221, 116, 198, 168, 240, + 245, 35, 225, 124, 90, 58, 133, 76, 44, 184, 100, 70, 52, 85, 64, 1, 0, 0, + 0, 0, 0, 142, 65, 68, 120, 191, 85, 89, 209, 21, 201, 119, 138, 74, 252, + 51, 195, 22, 144, 55, 108, 119, 53, 126, 166, 156, 62, 122, 91, 151, 60, + 228, 29, 16, 27, 50, 254, 43, 69, 206, 147, 255, 42, 245, 128, 129, 229, + 173, 237, 23, 206, 178, 188, 250, 16, 37, 112, 49, 127, 169, 138, 141, + 226, 23, 13, 161, 216, 119, 44, 123, 218, 165, 129, 243, 234, 211, 29, + 220, 230, 107, 42, 208, 74, 131, 24, 44, 48, 209, 229, 223, 179, 118, 254, + 90, 196, 122, 76, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 112, 111, 44, 92, 72, 111, 146, 38, 181, 148, 160, 120, 221, 6, 31, 86, + 230, 120, 139, 43, 216, 122, 246, 145, 206, 158, 123, 83, 46, 70, 133, + 105, + ], + pos: 82005, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 25, 55, 4, 32, 45, 12, 100, 11, 66, 104, 76, 41, 37, 69, 177, 151, 134, + 59, 162, 242, 195, 165, 231, 253, 159, 169, 222, 237, 211, 79, 7, 10, 219, + 51, 49, 225, 33, 19, 190, 220, 221, 160, 25, 240, 170, 44, 116, 150, 176, + 122, 56, 192, 44, 38, 44, 72, 139, 130, 155, 254, 112, 157, 203, 68, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 25, 55, 4, 32, + 45, 12, 100, 11, 66, 104, 76, 41, 37, 69, 177, 151, 134, 59, 162, 242, + 195, 165, 231, 253, 159, 169, 222, 237, 211, 79, 7, 10, 219, 51, 49, 225, + 33, 19, 190, 220, 221, 160, 25, 240, 170, 44, 116, 150, 176, 122, 56, 192, + 44, 38, 44, 72, 139, 130, 155, 254, 112, 157, 203, 68, 66, 220, 77, 225, + 141, 127, 215, 122, 212, 127, 181, 86, 170, 248, 116, 141, 54, 94, 11, + 136, 70, 221, 233, 88, 242, 155, 217, 161, 114, 152, 193, 55, 67, 16, 119, + 107, 213, 233, 159, 142, 56, 38, 123, 234, 230, 236, 159, 105, 240, 100, + 66, 95, 7, 195, 120, 195, 174, 118, 3, 114, 199, 167, 117, 35, 147, 13, + 136, 191, 34, 252, 181, 41, 158, 243, 247, 41, 137, 111, 124, 147, 66, + 208, 181, 189, 152, 105, 76, 83, 39, 238, 88, 139, 198, 23, 104, 90, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 67, 16, 119, + 107, 213, 233, 159, 142, 56, 38, 123, 234, 230, 236, 159, 105, 240, 100, + 66, 95, 7, 195, 120, 195, 174, 118, 3, 114, 199, 167, 117, 35, 147, 13, + 136, 191, 34, 252, 181, 41, 158, 243, 247, 41, 137, 111, 124, 147, 66, + 208, 181, 189, 152, 105, 76, 83, 39, 238, 88, 139, 198, 23, 104, 90, 207, + 172, 123, 245, 15, 139, 160, 52, 28, 87, 80, 65, 67, 189, 117, 152, 126, + 36, 31, 71, 59, 244, 68, 175, 144, 171, 100, 133, 127, 244, 147, 88, 141, + 239, 188, 5, 200, 142, 1, 213, 20, 202, 131, 52, 143, 1, 59, 170, 116, 40, + 95, 142, 138, 85, 169, 229, 147, 101, 66, 188, 103, 237, 171, 93, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 207, 172, 123, + 245, 15, 139, 160, 52, 28, 87, 80, 65, 67, 189, 117, 152, 126, 36, 31, 71, + 59, 244, 68, 175, 144, 171, 100, 133, 127, 244, 147, 88, 141, 239, 188, 5, + 200, 142, 1, 213, 20, 202, 131, 52, 143, 1, 59, 170, 116, 40, 95, 142, + 138, 85, 169, 229, 147, 101, 66, 188, 103, 237, 171, 93, 86, 64, 1, 0, 0, + 0, 0, 0, 44, 40, 230, 201, 167, 181, 254, 215, 68, 14, 197, 199, 172, 74, + 197, 95, 140, 141, 60, 55, 22, 150, 11, 46, 225, 248, 119, 43, 16, 3, 89, + 76, 40, 195, 123, 73, 237, 117, 134, 211, 105, 60, 215, 82, 77, 11, 48, + 155, 24, 198, 49, 79, 149, 148, 203, 253, 48, 133, 27, 50, 34, 13, 10, 24, + 88, 83, 119, 7, 183, 197, 211, 58, 55, 89, 44, 26, 221, 200, 119, 48, 18, + 50, 72, 188, 38, 128, 252, 239, 54, 222, 133, 77, 224, 199, 37, 28, 1, 0, + 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 137, 176, 132, 212, 97, 41, 144, 244, 89, 77, 243, 88, 180, 181, 53, 239, + 219, 142, 217, 182, 244, 98, 173, 238, 136, 168, 103, 146, 193, 109, 40, + 51, + ], + pos: 82006, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 157, 172, 185, 41, 133, 187, 5, 66, 186, 59, 185, 26, 229, 220, 38, 26, + 81, 9, 217, 79, 132, 134, 215, 82, 128, 194, 73, 74, 17, 149, 250, 30, 51, + 170, 24, 31, 137, 254, 65, 87, 67, 32, 71, 228, 82, 27, 162, 26, 188, 11, + 223, 166, 177, 238, 26, 98, 230, 143, 167, 98, 76, 47, 155, 35, 169, 186, + 174, 77, 144, 144, 87, 16, 83, 220, 77, 77, 253, 136, 32, 153, 79, 94, + 123, 35, 10, 110, 21, 0, 134, 113, 85, 14, 106, 164, 237, 18, 182, 214, + 217, 188, 156, 149, 98, 221, 121, 144, 213, 50, 62, 200, 121, 49, 157, + 172, 2, 140, 94, 126, 25, 207, 198, 168, 112, 215, 141, 6, 207, 43, 33, + 151, 214, 16, 142, 39, 25, 39, 254, 21, 175, 213, 105, 48, 239, 87, 79, + 100, 182, 99, 104, 188, 5, 141, 66, 20, 221, 31, 15, 208, 78, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 136, 205, 69, 243, 217, 82, 67, 231, 225, 245, 56, 248, 137, + 45, 210, 169, 100, 19, 90, 233, 140, 178, 143, 124, 39, 66, 51, 108, 113, + 120, 198, 18, 170, 201, 179, 136, 41, 53, 49, 244, 239, 35, 68, 89, 221, + 235, 182, 130, 50, 19, 113, 124, 125, 195, 62, 195, 246, 141, 213, 212, + 230, 36, 77, 56, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, + 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, + 36, 24, 136, 205, 69, 243, 217, 82, 67, 231, 225, 245, 56, 248, 137, 45, + 210, 169, 100, 19, 90, 233, 140, 178, 143, 124, 39, 66, 51, 108, 113, 120, + 198, 18, 170, 201, 179, 136, 41, 53, 49, 244, 239, 35, 68, 89, 221, 235, + 182, 130, 50, 19, 113, 124, 125, 195, 62, 195, 246, 141, 213, 212, 230, + 36, 77, 56, 84, 148, 61, 98, 43, 21, 126, 106, 97, 171, 97, 163, 59, 225, + 23, 66, 243, 125, 173, 156, 68, 228, 53, 219, 101, 202, 27, 185, 245, 37, + 88, 107, 123, 87, 102, 125, 101, 135, 210, 127, 142, 150, 107, 144, 177, + 127, 161, 15, 188, 4, 18, 43, 141, 208, 63, 51, 208, 209, 82, 76, 182, + 239, 7, 99, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, + 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, + 24, 84, 148, 61, 98, 43, 21, 126, 106, 97, 171, 97, 163, 59, 225, 23, 66, + 243, 125, 173, 156, 68, 228, 53, 219, 101, 202, 27, 185, 245, 37, 88, 107, + 123, 87, 102, 125, 101, 135, 210, 127, 142, 150, 107, 144, 177, 127, 161, + 15, 188, 4, 18, 43, 141, 208, 63, 51, 208, 209, 82, 76, 182, 239, 7, 99, + 87, 64, 1, 0, 0, 0, 0, 0, 128, 100, 222, 217, 127, 155, 33, 38, 128, 155, + 63, 73, 15, 108, 125, 184, 215, 209, 42, 142, 56, 218, 207, 82, 92, 116, + 125, 248, 82, 62, 247, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 19, 51, 80, 169, 216, 82, 19, 70, 164, 215, 66, 73, 91, 101, 125, 90, 159, + 50, 111, 93, 26, 37, 1, 132, 59, 62, 185, 147, 22, 185, 194, 95, + ], + pos: 82007, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 205, 124, 139, 63, 8, 216, 156, 80, 210, 69, 103, 172, 169, 163, 124, 74, + 161, 137, 157, 107, 219, 70, 231, 32, 206, 166, 18, 64, 225, 244, 6, 65, + 121, 100, 179, 240, 250, 94, 157, 245, 234, 239, 242, 186, 128, 31, 154, + 80, 247, 70, 18, 147, 184, 118, 189, 106, 33, 207, 87, 152, 99, 231, 31, + 35, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 205, + 124, 139, 63, 8, 216, 156, 80, 210, 69, 103, 172, 169, 163, 124, 74, 161, + 137, 157, 107, 219, 70, 231, 32, 206, 166, 18, 64, 225, 244, 6, 65, 121, + 100, 179, 240, 250, 94, 157, 245, 234, 239, 242, 186, 128, 31, 154, 80, + 247, 70, 18, 147, 184, 118, 189, 106, 33, 207, 87, 152, 99, 231, 31, 35, + 12, 68, 129, 248, 142, 225, 19, 223, 213, 40, 102, 129, 73, 37, 99, 167, + 211, 42, 145, 102, 149, 89, 4, 44, 44, 17, 75, 217, 105, 48, 38, 95, 202, + 200, 96, 144, 142, 143, 216, 245, 11, 221, 75, 103, 228, 53, 156, 231, 60, + 226, 151, 39, 38, 210, 219, 148, 137, 12, 117, 204, 6, 5, 134, 50, 223, + 230, 154, 235, 242, 66, 194, 153, 156, 164, 130, 37, 134, 166, 102, 123, + 67, 85, 107, 96, 123, 171, 230, 145, 179, 201, 161, 37, 67, 36, 125, 61, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 202, 200, + 96, 144, 142, 143, 216, 245, 11, 221, 75, 103, 228, 53, 156, 231, 60, 226, + 151, 39, 38, 210, 219, 148, 137, 12, 117, 204, 6, 5, 134, 50, 223, 230, + 154, 235, 242, 66, 194, 153, 156, 164, 130, 37, 134, 166, 102, 123, 67, + 85, 107, 96, 123, 171, 230, 145, 179, 201, 161, 37, 67, 36, 125, 61, 241, + 91, 47, 145, 53, 62, 12, 186, 26, 153, 238, 82, 90, 7, 205, 112, 123, 156, + 186, 51, 212, 7, 78, 186, 197, 200, 58, 192, 0, 210, 142, 48, 45, 174, + 168, 173, 72, 204, 177, 220, 148, 36, 50, 28, 255, 206, 94, 94, 236, 246, + 255, 8, 6, 64, 234, 245, 171, 138, 122, 28, 251, 177, 112, 73, 254, 255, + 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, + 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 241, 91, 47, 145, + 53, 62, 12, 186, 26, 153, 238, 82, 90, 7, 205, 112, 123, 156, 186, 51, + 212, 7, 78, 186, 197, 200, 58, 192, 0, 210, 142, 48, 45, 174, 168, 173, + 72, 204, 177, 220, 148, 36, 50, 28, 255, 206, 94, 94, 236, 246, 255, 8, 6, + 64, 234, 245, 171, 138, 122, 28, 251, 177, 112, 73, 10, 65, 1, 0, 0, 0, 0, + 0, 79, 118, 77, 226, 227, 134, 24, 124, 247, 43, 78, 195, 176, 230, 67, + 83, 156, 249, 144, 36, 226, 168, 198, 187, 9, 151, 142, 175, 66, 60, 87, + 21, 4, 48, 175, 40, 68, 66, 248, 18, 81, 81, 226, 164, 163, 39, 70, 44, + 138, 96, 138, 204, 249, 39, 158, 250, 173, 55, 193, 250, 141, 228, 129, + 107, 232, 143, 49, 115, 81, 89, 31, 74, 79, 29, 3, 30, 225, 110, 133, 159, + 17, 94, 234, 91, 31, 113, 99, 102, 253, 23, 39, 156, 235, 182, 45, 78, 1, + 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 45, 200, 53, 216, 246, 42, 184, 238, 63, 105, 2, 115, 236, 67, 144, 108, + 7, 211, 251, 209, 18, 144, 168, 250, 116, 255, 40, 47, 233, 94, 139, 35, + ], + pos: 82186, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 169, 252, 11, 208, 175, 4, 242, 192, 47, 181, 70, 195, 81, 89, 164, 114, + 17, 217, 194, 109, 130, 33, 114, 80, 211, 224, 252, 67, 162, 61, 13, 52, + 226, 150, 237, 155, 104, 94, 190, 76, 105, 26, 170, 239, 174, 27, 150, 29, + 116, 136, 43, 251, 97, 55, 80, 202, 93, 46, 100, 216, 221, 20, 224, 71, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 169, 252, + 11, 208, 175, 4, 242, 192, 47, 181, 70, 195, 81, 89, 164, 114, 17, 217, + 194, 109, 130, 33, 114, 80, 211, 224, 252, 67, 162, 61, 13, 52, 226, 150, + 237, 155, 104, 94, 190, 76, 105, 26, 170, 239, 174, 27, 150, 29, 116, 136, + 43, 251, 97, 55, 80, 202, 93, 46, 100, 216, 221, 20, 224, 71, 182, 37, + 233, 195, 171, 7, 195, 155, 119, 146, 211, 118, 240, 159, 182, 114, 31, + 50, 116, 248, 84, 47, 62, 102, 138, 86, 151, 153, 215, 149, 159, 100, 214, + 245, 88, 19, 95, 183, 99, 24, 255, 198, 198, 165, 153, 211, 122, 145, 166, + 200, 210, 112, 149, 164, 119, 244, 224, 187, 178, 20, 233, 107, 153, 53, + 17, 88, 32, 249, 49, 196, 21, 116, 244, 204, 68, 73, 198, 199, 237, 107, + 90, 245, 1, 243, 194, 238, 173, 227, 155, 159, 195, 130, 190, 112, 200, + 35, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 214, + 245, 88, 19, 95, 183, 99, 24, 255, 198, 198, 165, 153, 211, 122, 145, 166, + 200, 210, 112, 149, 164, 119, 244, 224, 187, 178, 20, 233, 107, 153, 53, + 17, 88, 32, 249, 49, 196, 21, 116, 244, 204, 68, 73, 198, 199, 237, 107, + 90, 245, 1, 243, 194, 238, 173, 227, 155, 159, 195, 130, 190, 112, 200, + 35, 14, 43, 14, 3, 101, 48, 216, 12, 21, 109, 186, 254, 10, 50, 165, 14, + 187, 239, 1, 91, 223, 155, 32, 103, 119, 203, 198, 128, 204, 224, 85, 71, + 57, 99, 21, 77, 78, 217, 41, 224, 24, 131, 16, 168, 120, 34, 246, 89, 45, + 245, 161, 146, 58, 86, 221, 248, 143, 155, 166, 135, 1, 105, 198, 97, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 14, 43, 14, 3, + 101, 48, 216, 12, 21, 109, 186, 254, 10, 50, 165, 14, 187, 239, 1, 91, + 223, 155, 32, 103, 119, 203, 198, 128, 204, 224, 85, 71, 57, 99, 21, 77, + 78, 217, 41, 224, 24, 131, 16, 168, 120, 34, 246, 89, 45, 245, 161, 146, + 58, 86, 221, 248, 143, 155, 166, 135, 1, 105, 198, 97, 11, 65, 1, 0, 0, 0, + 0, 0, 211, 65, 93, 208, 191, 96, 44, 217, 32, 189, 19, 40, 246, 223, 200, + 203, 39, 50, 231, 117, 133, 51, 185, 106, 137, 67, 184, 30, 116, 60, 254, + 9, 207, 241, 157, 214, 158, 200, 238, 212, 118, 249, 95, 141, 36, 78, 58, + 1, 226, 138, 237, 183, 131, 25, 43, 140, 151, 119, 3, 4, 15, 196, 102, 56, + 114, 68, 150, 249, 208, 60, 151, 189, 199, 7, 129, 12, 38, 59, 182, 216, + 34, 61, 154, 201, 209, 205, 27, 36, 99, 204, 211, 51, 141, 20, 213, 93, 1, + 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 138, 234, 180, 120, 27, 210, 221, 179, 233, 2, 80, 240, 124, 92, 93, 188, + 14, 66, 68, 105, 51, 182, 38, 47, 108, 207, 4, 11, 178, 212, 155, 62, + ], + pos: 82187, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 149, 97, 17, 33, 99, 160, 208, 5, 24, 95, 226, 137, 199, 112, 159, 243, + 217, 175, 162, 160, 144, 133, 31, 99, 159, 169, 34, 1, 49, 219, 240, 101, + 217, 21, 52, 115, 250, 73, 126, 89, 57, 236, 211, 57, 38, 84, 91, 114, 57, + 143, 83, 59, 58, 159, 105, 113, 84, 216, 86, 155, 36, 108, 46, 60, 77, + 211, 14, 168, 185, 110, 2, 39, 170, 188, 132, 203, 13, 58, 34, 185, 44, + 226, 36, 35, 81, 115, 144, 110, 90, 206, 156, 156, 1, 137, 103, 27, 222, + 102, 132, 184, 241, 79, 124, 67, 116, 95, 35, 112, 1, 77, 193, 209, 249, + 198, 4, 232, 144, 71, 213, 110, 196, 127, 5, 252, 167, 166, 230, 100, 171, + 245, 191, 225, 209, 159, 190, 122, 139, 48, 148, 161, 198, 98, 104, 21, + 243, 51, 162, 225, 47, 181, 134, 213, 142, 78, 59, 231, 35, 90, 130, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 37, 182, 93, 163, 249, 35, 67, 51, 172, 175, 14, 234, + 213, 182, 74, 16, 17, 81, 235, 5, 215, 50, 176, 211, 11, 51, 65, 156, 197, + 229, 98, 152, 26, 33, 12, 7, 48, 138, 245, 39, 141, 140, 106, 183, 193, + 126, 129, 202, 39, 185, 99, 65, 11, 34, 219, 156, 37, 132, 110, 192, 29, + 32, 56, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 7, 37, 182, 93, 163, 249, 35, 67, 51, 172, 175, 14, 234, 213, 182, 74, 16, + 17, 81, 235, 5, 215, 50, 176, 211, 11, 51, 65, 156, 197, 229, 98, 152, 26, + 33, 12, 7, 48, 138, 245, 39, 141, 140, 106, 183, 193, 126, 129, 202, 39, + 185, 99, 65, 11, 34, 219, 156, 37, 132, 110, 192, 29, 32, 56, 186, 200, 9, + 29, 111, 252, 163, 109, 145, 24, 26, 243, 39, 10, 157, 156, 189, 186, 29, + 76, 201, 71, 152, 139, 184, 168, 99, 120, 46, 187, 239, 80, 248, 141, 157, + 177, 13, 231, 22, 174, 75, 135, 24, 129, 237, 125, 15, 134, 174, 48, 164, + 156, 63, 222, 163, 29, 95, 214, 176, 186, 118, 5, 31, 114, 254, 255, 255, + 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, + 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 186, 200, 9, 29, 111, + 252, 163, 109, 145, 24, 26, 243, 39, 10, 157, 156, 189, 186, 29, 76, 201, + 71, 152, 139, 184, 168, 99, 120, 46, 187, 239, 80, 248, 141, 157, 177, 13, + 231, 22, 174, 75, 135, 24, 129, 237, 125, 15, 134, 174, 48, 164, 156, 63, + 222, 163, 29, 95, 214, 176, 186, 118, 5, 31, 114, 12, 65, 1, 0, 0, 0, 0, + 0, 236, 87, 222, 217, 19, 168, 33, 38, 20, 120, 226, 93, 83, 118, 42, 107, + 214, 174, 121, 102, 31, 149, 62, 255, 55, 164, 145, 135, 75, 156, 186, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 56, 218, 85, 46, 26, 47, 87, 75, 131, 158, 58, 147, 126, 212, 99, 230, + 226, 117, 181, 192, 124, 212, 8, 26, 193, 194, 143, 80, 233, 112, 100, 31, + ], + pos: 82188, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 69, 33, 207, 203, 155, 14, 157, 252, 173, 96, 34, 56, 137, 243, 11, 241, + 173, 110, 133, 144, 176, 152, 78, 19, 57, 244, 252, 170, 174, 225, 132, + 94, 57, 0, 222, 51, 250, 82, 21, 143, 2, 158, 18, 112, 232, 29, 184, 174, + 120, 65, 118, 205, 80, 220, 220, 67, 206, 140, 105, 132, 23, 167, 188, + 102, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 69, + 33, 207, 203, 155, 14, 157, 252, 173, 96, 34, 56, 137, 243, 11, 241, 173, + 110, 133, 144, 176, 152, 78, 19, 57, 244, 252, 170, 174, 225, 132, 94, 57, + 0, 222, 51, 250, 82, 21, 143, 2, 158, 18, 112, 232, 29, 184, 174, 120, 65, + 118, 205, 80, 220, 220, 67, 206, 140, 105, 132, 23, 167, 188, 102, 175, + 234, 204, 80, 222, 16, 15, 84, 241, 123, 63, 196, 31, 108, 5, 128, 165, + 98, 193, 175, 245, 39, 252, 59, 252, 30, 212, 145, 166, 206, 161, 14, 41, + 45, 172, 21, 36, 246, 128, 181, 19, 235, 220, 119, 207, 218, 85, 12, 86, + 162, 158, 171, 198, 47, 232, 166, 82, 164, 87, 101, 152, 237, 43, 92, 102, + 114, 143, 81, 106, 156, 114, 117, 133, 243, 50, 70, 90, 6, 54, 180, 3, + 131, 23, 95, 86, 159, 67, 236, 225, 248, 50, 239, 185, 13, 61, 11, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 41, 45, 172, + 21, 36, 246, 128, 181, 19, 235, 220, 119, 207, 218, 85, 12, 86, 162, 158, + 171, 198, 47, 232, 166, 82, 164, 87, 101, 152, 237, 43, 92, 102, 114, 143, + 81, 106, 156, 114, 117, 133, 243, 50, 70, 90, 6, 54, 180, 3, 131, 23, 95, + 86, 159, 67, 236, 225, 248, 50, 239, 185, 13, 61, 11, 174, 86, 176, 53, + 92, 19, 67, 141, 72, 208, 180, 55, 130, 229, 152, 45, 217, 30, 60, 80, + 226, 222, 113, 223, 164, 103, 159, 193, 165, 122, 116, 11, 59, 55, 110, + 24, 161, 221, 88, 214, 48, 231, 165, 47, 131, 55, 149, 130, 180, 131, 178, + 93, 157, 199, 50, 41, 61, 36, 120, 40, 195, 140, 47, 4, 254, 255, 255, + 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, + 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 174, 86, 176, 53, 92, 19, + 67, 141, 72, 208, 180, 55, 130, 229, 152, 45, 217, 30, 60, 80, 226, 222, + 113, 223, 164, 103, 159, 193, 165, 122, 116, 11, 59, 55, 110, 24, 161, + 221, 88, 214, 48, 231, 165, 47, 131, 55, 149, 130, 180, 131, 178, 93, 157, + 199, 50, 41, 61, 36, 120, 40, 195, 140, 47, 4, 137, 85, 1, 0, 0, 0, 0, 0, + 187, 196, 86, 116, 212, 213, 221, 186, 13, 98, 126, 98, 160, 147, 132, 50, + 151, 114, 203, 210, 133, 145, 180, 216, 204, 248, 26, 9, 55, 51, 11, 17, + 41, 182, 247, 175, 47, 9, 74, 170, 218, 242, 228, 101, 90, 146, 95, 150, + 218, 15, 111, 196, 182, 136, 231, 156, 100, 234, 180, 112, 127, 99, 112, + 82, 119, 202, 183, 71, 220, 193, 117, 162, 195, 55, 113, 87, 176, 212, + 166, 61, 67, 85, 2, 4, 233, 111, 102, 196, 254, 204, 175, 201, 153, 120, + 68, 113, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 221, 203, 8, 15, 81, 101, 19, 81, 172, 224, 232, 94, 198, 90, 194, 212, + 98, 76, 19, 113, 156, 223, 130, 72, 102, 181, 19, 253, 179, 96, 91, 56, + ], + pos: 87433, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 120, 216, 80, 117, 240, 21, 132, 211, 49, 76, 43, 242, 171, 4, 24, 4, 43, + 161, 146, 193, 142, 146, 172, 42, 58, 7, 103, 123, 180, 31, 18, 82, 63, + 209, 20, 199, 152, 92, 19, 140, 210, 218, 27, 176, 55, 4, 32, 85, 87, 57, + 122, 238, 59, 186, 60, 118, 219, 18, 200, 91, 157, 15, 47, 108, 127, 26, + 40, 158, 166, 85, 164, 23, 48, 196, 78, 199, 49, 192, 19, 180, 200, 76, + 182, 8, 198, 190, 126, 116, 228, 85, 109, 216, 185, 179, 18, 26, 243, 148, + 175, 88, 126, 225, 148, 121, 199, 20, 68, 171, 219, 157, 208, 0, 12, 43, + 2, 146, 196, 12, 136, 245, 182, 30, 137, 55, 46, 21, 117, 73, 179, 247, + 106, 110, 1, 131, 43, 241, 141, 26, 105, 127, 127, 56, 194, 56, 64, 142, + 217, 59, 67, 9, 116, 144, 153, 34, 178, 31, 167, 209, 209, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 67, 97, 110, 24, 135, 131, 232, 79, 28, 240, 118, 252, 61, + 109, 33, 226, 159, 144, 62, 111, 236, 96, 73, 84, 38, 180, 171, 78, 218, + 250, 92, 147, 224, 166, 7, 45, 175, 149, 171, 138, 177, 59, 96, 225, 138, + 122, 88, 209, 11, 205, 109, 115, 158, 161, 31, 208, 5, 168, 79, 120, 60, + 227, 44, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 152, 67, 97, 110, 24, 135, 131, 232, 79, 28, 240, 118, 252, 61, 109, 33, + 226, 159, 144, 62, 111, 236, 96, 73, 84, 38, 180, 171, 78, 218, 250, 92, + 147, 224, 166, 7, 45, 175, 149, 171, 138, 177, 59, 96, 225, 138, 122, 88, + 209, 11, 205, 109, 115, 158, 161, 31, 208, 5, 168, 79, 120, 60, 227, 44, + 83, 202, 229, 66, 55, 46, 32, 24, 71, 213, 100, 166, 27, 189, 122, 166, + 40, 11, 212, 47, 248, 121, 52, 165, 34, 19, 160, 52, 228, 170, 83, 14, + 206, 15, 226, 222, 197, 137, 185, 87, 73, 165, 214, 117, 134, 123, 78, + 149, 9, 219, 174, 149, 30, 106, 139, 132, 37, 25, 223, 101, 129, 167, 222, + 14, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 83, + 202, 229, 66, 55, 46, 32, 24, 71, 213, 100, 166, 27, 189, 122, 166, 40, + 11, 212, 47, 248, 121, 52, 165, 34, 19, 160, 52, 228, 170, 83, 14, 206, + 15, 226, 222, 197, 137, 185, 87, 73, 165, 214, 117, 134, 123, 78, 149, 9, + 219, 174, 149, 30, 106, 139, 132, 37, 25, 223, 101, 129, 167, 222, 14, + 139, 85, 1, 0, 0, 0, 0, 0, 117, 67, 117, 249, 138, 188, 138, 6, 139, 200, + 222, 163, 26, 201, 247, 199, 137, 53, 166, 87, 65, 208, 98, 16, 239, 251, + 92, 133, 115, 243, 70, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 157, 201, 27, 5, 43, 11, 248, 123, 252, 21, 174, 172, 60, 146, 66, 77, + 235, 175, 34, 236, 182, 153, 174, 65, 211, 129, 1, 193, 162, 48, 99, 34, + ], + pos: 87435, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 100, 32, 226, 179, 185, 13, 170, 72, 31, 236, 215, 240, 114, 116, 246, + 158, 128, 9, 21, 51, 74, 40, 161, 165, 215, 239, 105, 248, 25, 229, 249, + 26, 74, 190, 109, 174, 55, 238, 97, 72, 208, 231, 127, 190, 150, 243, 188, + 124, 37, 68, 162, 7, 51, 247, 144, 27, 107, 225, 80, 171, 70, 71, 73, 55, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 100, 32, + 226, 179, 185, 13, 170, 72, 31, 236, 215, 240, 114, 116, 246, 158, 128, 9, + 21, 51, 74, 40, 161, 165, 215, 239, 105, 248, 25, 229, 249, 26, 74, 190, + 109, 174, 55, 238, 97, 72, 208, 231, 127, 190, 150, 243, 188, 124, 37, 68, + 162, 7, 51, 247, 144, 27, 107, 225, 80, 171, 70, 71, 73, 55, 183, 138, 50, + 227, 23, 144, 123, 141, 113, 83, 198, 17, 105, 125, 145, 60, 248, 126, + 139, 138, 211, 192, 42, 223, 117, 166, 129, 61, 121, 183, 4, 72, 97, 115, + 62, 219, 109, 153, 255, 117, 215, 112, 201, 253, 227, 48, 230, 227, 66, + 86, 98, 245, 84, 6, 18, 50, 242, 247, 127, 82, 214, 89, 164, 20, 214, 129, + 197, 41, 170, 31, 38, 17, 21, 171, 105, 24, 122, 99, 123, 0, 113, 87, 20, + 46, 14, 251, 109, 63, 230, 103, 106, 247, 63, 234, 41, 56, 254, 255, 255, + 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, + 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 97, 115, 62, 219, 109, + 153, 255, 117, 215, 112, 201, 253, 227, 48, 230, 227, 66, 86, 98, 245, 84, + 6, 18, 50, 242, 247, 127, 82, 214, 89, 164, 20, 214, 129, 197, 41, 170, + 31, 38, 17, 21, 171, 105, 24, 122, 99, 123, 0, 113, 87, 20, 46, 14, 251, + 109, 63, 230, 103, 106, 247, 63, 234, 41, 56, 102, 236, 143, 147, 203, + 204, 91, 112, 128, 203, 183, 86, 124, 236, 180, 41, 68, 89, 237, 55, 205, + 17, 29, 153, 97, 176, 30, 59, 137, 205, 134, 37, 110, 107, 130, 222, 95, + 230, 216, 149, 25, 198, 131, 67, 41, 184, 30, 145, 1, 3, 84, 26, 124, 162, + 111, 242, 33, 71, 159, 165, 109, 114, 65, 72, 254, 255, 255, 255, 1, 0, 0, + 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, + 111, 5, 197, 172, 89, 177, 36, 24, 102, 236, 143, 147, 203, 204, 91, 112, + 128, 203, 183, 86, 124, 236, 180, 41, 68, 89, 237, 55, 205, 17, 29, 153, + 97, 176, 30, 59, 137, 205, 134, 37, 110, 107, 130, 222, 95, 230, 216, 149, + 25, 198, 131, 67, 41, 184, 30, 145, 1, 3, 84, 26, 124, 162, 111, 242, 33, + 71, 159, 165, 109, 114, 65, 72, 141, 85, 1, 0, 0, 0, 0, 0, 211, 151, 34, + 90, 177, 73, 59, 192, 149, 139, 122, 112, 110, 168, 108, 152, 184, 144, + 233, 91, 30, 237, 86, 195, 15, 186, 64, 115, 186, 171, 233, 91, 136, 239, + 93, 158, 43, 253, 71, 204, 2, 244, 35, 145, 216, 195, 237, 36, 231, 224, + 140, 140, 121, 193, 214, 134, 68, 73, 234, 120, 29, 200, 222, 71, 178, + 136, 196, 165, 183, 76, 210, 226, 23, 154, 214, 75, 96, 95, 28, 30, 253, + 36, 137, 122, 225, 40, 249, 10, 226, 63, 201, 138, 164, 111, 104, 49, 1, + 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 220, 109, 179, 189, 140, 12, 162, 49, 43, 21, 211, 12, 233, 2, 228, 222, + 239, 212, 249, 231, 226, 3, 90, 35, 60, 125, 149, 112, 171, 172, 217, 15, + ], + pos: 87437, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 0, 124, 132, 154, 132, 41, 255, 192, 216, 106, 135, 156, 74, 19, 21, 238, + 242, 116, 5, 236, 206, 225, 216, 253, 5, 110, 162, 153, 87, 254, 66, 75, + 41, 143, 219, 99, 229, 9, 56, 65, 244, 8, 13, 60, 228, 168, 50, 228, 216, + 53, 103, 208, 18, 109, 31, 74, 74, 83, 99, 181, 137, 225, 74, 1, 254, 255, + 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, + 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 0, 124, 132, 154, + 132, 41, 255, 192, 216, 106, 135, 156, 74, 19, 21, 238, 242, 116, 5, 236, + 206, 225, 216, 253, 5, 110, 162, 153, 87, 254, 66, 75, 41, 143, 219, 99, + 229, 9, 56, 65, 244, 8, 13, 60, 228, 168, 50, 228, 216, 53, 103, 208, 18, + 109, 31, 74, 74, 83, 99, 181, 137, 225, 74, 1, 164, 9, 131, 237, 125, 51, + 179, 60, 4, 47, 33, 69, 126, 228, 78, 85, 43, 105, 218, 43, 129, 198, 99, + 57, 204, 40, 163, 193, 35, 158, 182, 35, 64, 104, 108, 71, 19, 54, 159, + 249, 130, 120, 73, 41, 96, 127, 143, 49, 134, 155, 111, 111, 241, 107, 78, + 184, 225, 29, 76, 152, 224, 9, 31, 52, 169, 173, 16, 103, 196, 54, 88, 74, + 221, 114, 228, 120, 234, 138, 25, 83, 1, 180, 103, 172, 118, 159, 211, + 140, 168, 253, 188, 94, 127, 55, 117, 67, 254, 255, 255, 255, 1, 0, 0, 0, + 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, + 5, 197, 172, 89, 177, 36, 24, 64, 104, 108, 71, 19, 54, 159, 249, 130, + 120, 73, 41, 96, 127, 143, 49, 134, 155, 111, 111, 241, 107, 78, 184, 225, + 29, 76, 152, 224, 9, 31, 52, 169, 173, 16, 103, 196, 54, 88, 74, 221, 114, + 228, 120, 234, 138, 25, 83, 1, 180, 103, 172, 118, 159, 211, 140, 168, + 253, 188, 94, 127, 55, 117, 67, 148, 81, 172, 228, 162, 77, 29, 167, 27, + 70, 102, 27, 201, 209, 226, 238, 87, 28, 220, 162, 218, 140, 167, 73, 77, + 225, 178, 87, 77, 52, 16, 8, 105, 195, 215, 64, 106, 180, 169, 82, 172, + 23, 29, 227, 46, 247, 122, 63, 60, 175, 164, 79, 67, 248, 30, 111, 45, + 214, 121, 210, 138, 56, 242, 33, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, + 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, + 172, 89, 177, 36, 24, 148, 81, 172, 228, 162, 77, 29, 167, 27, 70, 102, + 27, 201, 209, 226, 238, 87, 28, 220, 162, 218, 140, 167, 73, 77, 225, 178, + 87, 77, 52, 16, 8, 105, 195, 215, 64, 106, 180, 169, 82, 172, 23, 29, 227, + 46, 247, 122, 63, 60, 175, 164, 79, 67, 248, 30, 111, 45, 214, 121, 210, + 138, 56, 242, 33, 143, 85, 1, 0, 0, 0, 0, 0, 92, 124, 104, 241, 203, 34, + 97, 27, 58, 167, 18, 76, 156, 234, 91, 245, 136, 12, 119, 205, 169, 37, + 51, 114, 247, 211, 184, 33, 59, 138, 49, 65, 105, 37, 219, 129, 119, 95, + 10, 25, 61, 243, 244, 155, 177, 116, 33, 253, 72, 241, 56, 175, 0, 230, + 98, 68, 188, 40, 32, 44, 172, 89, 148, 30, 146, 26, 117, 242, 122, 245, + 173, 114, 59, 136, 116, 58, 39, 232, 55, 187, 153, 127, 26, 65, 164, 37, + 180, 81, 53, 241, 110, 249, 251, 79, 35, 94, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 213, 4, 136, 206, 105, 16, 20, 24, 12, 89, 146, 54, 203, 67, 83, 49, 61, + 43, 23, 55, 35, 218, 218, 186, 161, 248, 222, 23, 73, 123, 89, 104, + ], + pos: 87439, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 90, 243, 228, 243, 4, 246, 73, 86, 218, 48, 85, 88, 185, 41, 77, 197, 212, + 114, 224, 243, 0, 211, 105, 228, 130, 12, 213, 76, 12, 245, 76, 12, 238, + 51, 149, 70, 130, 222, 21, 183, 241, 140, 77, 116, 0, 135, 89, 57, 197, + 145, 30, 207, 134, 105, 229, 127, 239, 79, 49, 178, 29, 122, 216, 17, 194, + 216, 66, 127, 156, 58, 230, 243, 252, 249, 1, 78, 209, 26, 177, 53, 70, + 227, 227, 113, 192, 78, 169, 49, 125, 27, 186, 240, 111, 82, 41, 2, 105, + 18, 54, 79, 149, 88, 9, 140, 61, 220, 135, 174, 210, 75, 196, 248, 29, 22, + 93, 109, 218, 126, 186, 237, 56, 178, 85, 165, 38, 104, 180, 19, 22, 210, + 111, 26, 177, 201, 152, 8, 198, 137, 23, 76, 86, 48, 230, 36, 2, 66, 125, + 254, 162, 37, 9, 200, 207, 176, 118, 177, 46, 105, 37, 43, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 223, 77, 5, 172, 58, 113, 192, 110, 13, 192, 76, 11, 163, 195, + 86, 230, 159, 213, 25, 162, 104, 38, 176, 119, 134, 214, 103, 39, 68, 235, + 59, 108, 47, 22, 24, 177, 195, 87, 127, 98, 61, 141, 100, 247, 196, 129, + 177, 7, 123, 72, 235, 73, 101, 80, 135, 198, 152, 193, 237, 216, 223, 220, + 104, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 15, + 223, 77, 5, 172, 58, 113, 192, 110, 13, 192, 76, 11, 163, 195, 86, 230, + 159, 213, 25, 162, 104, 38, 176, 119, 134, 214, 103, 39, 68, 235, 59, 108, + 47, 22, 24, 177, 195, 87, 127, 98, 61, 141, 100, 247, 196, 129, 177, 7, + 123, 72, 235, 73, 101, 80, 135, 198, 152, 193, 237, 216, 223, 220, 104, + 19, 231, 5, 157, 44, 196, 62, 41, 98, 5, 106, 232, 222, 30, 94, 229, 53, + 63, 64, 48, 48, 31, 120, 113, 60, 103, 71, 133, 191, 162, 74, 2, 213, 29, + 214, 100, 198, 247, 94, 119, 86, 4, 63, 222, 228, 114, 80, 38, 140, 39, + 31, 13, 157, 132, 219, 26, 95, 99, 81, 230, 181, 47, 213, 83, 254, 255, + 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, + 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 19, 231, 5, 157, 44, + 196, 62, 41, 98, 5, 106, 232, 222, 30, 94, 229, 53, 63, 64, 48, 48, 31, + 120, 113, 60, 103, 71, 133, 191, 162, 74, 2, 213, 29, 214, 100, 198, 247, + 94, 119, 86, 4, 63, 222, 228, 114, 80, 38, 140, 39, 31, 13, 157, 132, 219, + 26, 95, 99, 81, 230, 181, 47, 213, 83, 145, 85, 1, 0, 0, 0, 0, 0, 99, 56, + 117, 249, 156, 199, 138, 6, 157, 91, 8, 182, 228, 31, 150, 190, 144, 202, + 252, 181, 70, 71, 9, 250, 167, 18, 232, 211, 208, 156, 96, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 146, 234, 194, 186, 185, 142, 176, 244, 159, 80, 22, 34, 9, 101, 68, 132, + 87, 144, 207, 76, 93, 229, 116, 122, 154, 142, 111, 118, 11, 141, 184, 48, + ], + pos: 87441, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 28, 140, 211, 191, 240, 203, 70, 5, 252, 107, 214, 119, 43, 57, 226, 2, + 58, 252, 247, 149, 241, 58, 245, 237, 183, 190, 185, 240, 142, 59, 125, + 73, 246, 23, 245, 44, 66, 244, 200, 52, 254, 169, 131, 91, 74, 130, 166, + 67, 174, 210, 218, 166, 60, 110, 52, 135, 224, 253, 105, 214, 106, 254, + 154, 109, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 28, 140, 211, 191, 240, 203, 70, 5, 252, 107, 214, 119, 43, 57, 226, 2, + 58, 252, 247, 149, 241, 58, 245, 237, 183, 190, 185, 240, 142, 59, 125, + 73, 246, 23, 245, 44, 66, 244, 200, 52, 254, 169, 131, 91, 74, 130, 166, + 67, 174, 210, 218, 166, 60, 110, 52, 135, 224, 253, 105, 214, 106, 254, + 154, 109, 28, 223, 97, 87, 73, 214, 126, 177, 165, 99, 56, 47, 115, 23, + 235, 0, 47, 107, 107, 211, 64, 23, 77, 232, 92, 47, 162, 233, 163, 104, + 51, 58, 179, 142, 227, 176, 17, 140, 251, 169, 108, 100, 37, 220, 82, 187, + 123, 232, 167, 134, 152, 238, 250, 10, 33, 59, 41, 107, 255, 63, 215, 213, + 54, 67, 242, 159, 220, 116, 254, 46, 105, 136, 202, 3, 158, 30, 91, 11, + 195, 64, 5, 219, 216, 28, 201, 78, 53, 112, 112, 153, 206, 7, 227, 86, + 149, 75, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 179, 142, 227, 176, 17, 140, 251, 169, 108, 100, 37, 220, 82, 187, 123, + 232, 167, 134, 152, 238, 250, 10, 33, 59, 41, 107, 255, 63, 215, 213, 54, + 67, 242, 159, 220, 116, 254, 46, 105, 136, 202, 3, 158, 30, 91, 11, 195, + 64, 5, 219, 216, 28, 201, 78, 53, 112, 112, 153, 206, 7, 227, 86, 149, 75, + 143, 216, 227, 92, 76, 118, 128, 34, 109, 210, 20, 136, 32, 186, 102, 248, + 59, 190, 65, 210, 250, 6, 224, 188, 40, 157, 199, 42, 194, 155, 160, 76, + 88, 169, 68, 165, 53, 9, 169, 41, 114, 46, 129, 189, 246, 178, 248, 167, + 152, 131, 161, 227, 233, 105, 202, 192, 76, 168, 203, 138, 12, 191, 236, + 54, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 143, + 216, 227, 92, 76, 118, 128, 34, 109, 210, 20, 136, 32, 186, 102, 248, 59, + 190, 65, 210, 250, 6, 224, 188, 40, 157, 199, 42, 194, 155, 160, 76, 88, + 169, 68, 165, 53, 9, 169, 41, 114, 46, 129, 189, 246, 178, 248, 167, 152, + 131, 161, 227, 233, 105, 202, 192, 76, 168, 203, 138, 12, 191, 236, 54, 6, + 96, 1, 0, 0, 0, 0, 0, 58, 62, 247, 101, 11, 179, 253, 55, 223, 52, 43, + 183, 129, 242, 252, 174, 237, 58, 155, 113, 87, 197, 198, 19, 111, 76, + 255, 39, 92, 67, 55, 15, 229, 148, 87, 234, 63, 80, 79, 104, 5, 232, 210, + 223, 79, 109, 253, 162, 4, 14, 240, 73, 23, 143, 189, 6, 146, 223, 128, + 93, 223, 65, 250, 11, 12, 56, 99, 75, 105, 171, 219, 155, 131, 0, 158, + 151, 19, 40, 68, 98, 14, 57, 4, 175, 160, 44, 49, 10, 154, 176, 159, 222, + 247, 121, 162, 79, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 40, 75, 138, 96, 111, 56, 9, 115, 222, 122, 73, 157, 64, 0, 213, 169, 108, + 255, 37, 105, 56, 198, 249, 180, 180, 15, 15, 141, 43, 239, 54, 40, + ], + pos: 90118, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 68, 103, 222, 147, 121, 203, 175, 220, 120, 154, 255, 228, 232, 144, 141, + 0, 222, 90, 196, 155, 140, 248, 79, 170, 88, 164, 144, 130, 84, 106, 92, + 11, 40, 110, 145, 246, 19, 220, 253, 82, 154, 129, 176, 211, 33, 144, 52, + 161, 163, 229, 78, 227, 40, 72, 144, 162, 254, 211, 6, 21, 162, 120, 89, + 80, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 68, + 103, 222, 147, 121, 203, 175, 220, 120, 154, 255, 228, 232, 144, 141, 0, + 222, 90, 196, 155, 140, 248, 79, 170, 88, 164, 144, 130, 84, 106, 92, 11, + 40, 110, 145, 246, 19, 220, 253, 82, 154, 129, 176, 211, 33, 144, 52, 161, + 163, 229, 78, 227, 40, 72, 144, 162, 254, 211, 6, 21, 162, 120, 89, 80, + 31, 213, 119, 43, 65, 110, 66, 215, 1, 182, 249, 26, 171, 188, 0, 50, 108, + 186, 21, 46, 175, 10, 195, 53, 12, 66, 203, 40, 45, 149, 232, 61, 230, + 225, 106, 17, 83, 243, 225, 78, 251, 30, 114, 19, 104, 213, 44, 194, 238, + 137, 209, 90, 178, 236, 130, 14, 195, 169, 82, 235, 184, 166, 5, 18, 66, + 42, 251, 221, 39, 223, 45, 204, 91, 8, 213, 174, 229, 218, 116, 186, 11, + 235, 155, 176, 134, 81, 138, 253, 65, 51, 50, 154, 171, 198, 221, 42, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 230, 225, 106, + 17, 83, 243, 225, 78, 251, 30, 114, 19, 104, 213, 44, 194, 238, 137, 209, + 90, 178, 236, 130, 14, 195, 169, 82, 235, 184, 166, 5, 18, 66, 42, 251, + 221, 39, 223, 45, 204, 91, 8, 213, 174, 229, 218, 116, 186, 11, 235, 155, + 176, 134, 81, 138, 253, 65, 51, 50, 154, 171, 198, 221, 42, 58, 246, 81, + 210, 240, 40, 84, 237, 201, 22, 130, 199, 120, 51, 161, 27, 243, 167, 10, + 140, 174, 54, 141, 138, 200, 6, 42, 236, 24, 184, 196, 13, 212, 172, 213, + 88, 225, 102, 115, 24, 155, 91, 53, 132, 164, 173, 122, 69, 198, 160, 254, + 51, 168, 163, 254, 193, 111, 64, 55, 82, 114, 176, 20, 52, 254, 255, 255, + 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, + 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 58, 246, 81, 210, 240, + 40, 84, 237, 201, 22, 130, 199, 120, 51, 161, 27, 243, 167, 10, 140, 174, + 54, 141, 138, 200, 6, 42, 236, 24, 184, 196, 13, 212, 172, 213, 88, 225, + 102, 115, 24, 155, 91, 53, 132, 164, 173, 122, 69, 198, 160, 254, 51, 168, + 163, 254, 193, 111, 64, 55, 82, 114, 176, 20, 52, 9, 96, 1, 0, 0, 0, 0, 0, + 91, 55, 161, 148, 53, 212, 242, 70, 205, 163, 157, 182, 235, 128, 171, + 184, 185, 199, 207, 202, 254, 50, 53, 189, 96, 116, 54, 250, 180, 41, 206, + 60, 27, 156, 254, 3, 109, 128, 194, 250, 19, 114, 87, 112, 28, 49, 215, + 31, 15, 44, 31, 165, 130, 39, 95, 15, 194, 94, 122, 108, 149, 231, 112, + 107, 30, 13, 73, 67, 100, 134, 208, 138, 2, 211, 1, 247, 80, 160, 128, + 224, 198, 169, 160, 18, 92, 251, 166, 150, 229, 153, 244, 244, 37, 117, + 60, 11, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 157, 57, 67, 147, 22, 104, 144, 137, 187, 228, 98, 242, 21, 76, 131, 243, + 164, 249, 234, 166, 98, 206, 152, 19, 92, 153, 49, 116, 96, 42, 86, 105, + ], + pos: 90121, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 3504088, + note: [ + 249, 166, 152, 33, 181, 27, 162, 108, 196, 120, 170, 168, 149, 115, 255, + 69, 22, 188, 2, 133, 192, 182, 211, 14, 234, 251, 211, 63, 185, 197, 46, + 40, 9, 93, 242, 102, 224, 69, 108, 125, 38, 251, 196, 161, 26, 48, 181, + 185, 243, 234, 199, 36, 105, 167, 138, 207, 253, 241, 203, 40, 228, 82, + 22, 16, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 249, 166, 152, 33, 181, 27, 162, 108, 196, 120, 170, 168, 149, 115, 255, + 69, 22, 188, 2, 133, 192, 182, 211, 14, 234, 251, 211, 63, 185, 197, 46, + 40, 9, 93, 242, 102, 224, 69, 108, 125, 38, 251, 196, 161, 26, 48, 181, + 185, 243, 234, 199, 36, 105, 167, 138, 207, 253, 241, 203, 40, 228, 82, + 22, 16, 218, 241, 123, 226, 135, 11, 24, 195, 131, 82, 28, 58, 36, 195, + 223, 252, 177, 224, 38, 247, 118, 190, 58, 52, 146, 201, 253, 123, 14, + 212, 47, 85, 196, 201, 104, 99, 200, 46, 209, 193, 208, 40, 45, 69, 209, + 46, 78, 38, 41, 5, 0, 187, 17, 242, 216, 2, 83, 156, 27, 50, 14, 241, 201, + 115, 146, 50, 228, 201, 92, 149, 73, 70, 176, 216, 233, 133, 109, 14, 67, + 223, 34, 124, 16, 25, 207, 133, 113, 41, 208, 245, 127, 121, 212, 111, + 226, 39, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 196, 201, 104, 99, 200, 46, 209, 193, 208, 40, 45, 69, 209, 46, 78, 38, + 41, 5, 0, 187, 17, 242, 216, 2, 83, 156, 27, 50, 14, 241, 201, 115, 146, + 50, 228, 201, 92, 149, 73, 70, 176, 216, 233, 133, 109, 14, 67, 223, 34, + 124, 16, 25, 207, 133, 113, 41, 208, 245, 127, 121, 212, 111, 226, 39, 73, + 154, 13, 86, 31, 47, 74, 144, 164, 193, 247, 95, 91, 183, 133, 184, 113, + 47, 48, 114, 169, 42, 70, 106, 57, 152, 96, 90, 106, 73, 15, 79, 156, 233, + 145, 84, 176, 254, 34, 158, 139, 103, 116, 21, 124, 248, 158, 161, 201, + 161, 101, 248, 249, 170, 5, 244, 26, 74, 93, 81, 219, 83, 234, 20, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 73, 154, 13, + 86, 31, 47, 74, 144, 164, 193, 247, 95, 91, 183, 133, 184, 113, 47, 48, + 114, 169, 42, 70, 106, 57, 152, 96, 90, 106, 73, 15, 79, 156, 233, 145, + 84, 176, 254, 34, 158, 139, 103, 116, 21, 124, 248, 158, 161, 201, 161, + 101, 248, 249, 170, 5, 244, 26, 74, 93, 81, 219, 83, 234, 20, 14, 96, 1, + 0, 0, 0, 0, 0, 106, 130, 46, 225, 56, 160, 223, 175, 24, 81, 43, 175, 147, + 34, 83, 237, 174, 210, 134, 123, 78, 135, 85, 217, 93, 93, 210, 54, 216, + 53, 224, 79, 163, 111, 67, 28, 119, 13, 72, 173, 231, 65, 56, 252, 135, + 166, 111, 80, 12, 120, 13, 63, 149, 229, 136, 93, 108, 252, 92, 102, 23, + 247, 142, 46, 121, 212, 194, 143, 39, 176, 102, 212, 184, 63, 120, 252, + 226, 210, 211, 50, 93, 134, 57, 73, 96, 107, 244, 108, 222, 34, 27, 115, + 25, 126, 221, 65, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 205, 130, 248, 69, 170, 120, 199, 171, 70, 198, 82, 52, 178, 82, 163, 153, + 96, 146, 223, 1, 228, 201, 53, 192, 151, 58, 159, 237, 167, 196, 58, 15, + ], + pos: 90126, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 3504088, + note: [ + 227, 160, 222, 60, 140, 172, 223, 85, 127, 216, 165, 130, 1, 64, 128, 238, + 40, 164, 36, 166, 24, 230, 235, 150, 29, 60, 122, 246, 246, 1, 205, 42, + 157, 10, 20, 166, 162, 99, 246, 231, 82, 233, 123, 187, 195, 122, 51, 43, + 235, 34, 249, 222, 94, 6, 96, 82, 124, 55, 216, 112, 66, 176, 214, 82, + 189, 245, 199, 164, 17, 3, 77, 141, 89, 28, 58, 159, 99, 185, 38, 84, 105, + 131, 135, 126, 253, 38, 206, 223, 78, 41, 249, 161, 122, 167, 121, 49, + 233, 228, 108, 113, 13, 97, 246, 140, 81, 38, 134, 211, 232, 239, 189, 6, + 1, 205, 236, 143, 108, 11, 85, 53, 115, 229, 5, 129, 83, 233, 116, 112, + 219, 138, 147, 216, 73, 131, 88, 156, 101, 42, 87, 232, 55, 170, 170, 237, + 162, 43, 77, 36, 156, 99, 138, 47, 37, 127, 56, 99, 188, 74, 36, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 34, 96, 134, 9, 234, 126, 61, 65, 2, 178, 144, 33, 249, + 217, 173, 129, 27, 169, 46, 122, 126, 245, 127, 243, 18, 251, 185, 7, 185, + 139, 2, 91, 68, 18, 63, 201, 188, 13, 220, 47, 153, 107, 153, 88, 56, 21, + 50, 92, 63, 34, 215, 206, 79, 99, 7, 114, 169, 49, 212, 25, 102, 192, 68, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 82, 34, + 96, 134, 9, 234, 126, 61, 65, 2, 178, 144, 33, 249, 217, 173, 129, 27, + 169, 46, 122, 126, 245, 127, 243, 18, 251, 185, 7, 185, 139, 2, 91, 68, + 18, 63, 201, 188, 13, 220, 47, 153, 107, 153, 88, 56, 21, 50, 92, 63, 34, + 215, 206, 79, 99, 7, 114, 169, 49, 212, 25, 102, 192, 68, 243, 82, 220, + 19, 111, 35, 161, 227, 181, 114, 141, 63, 74, 113, 185, 20, 190, 91, 60, + 41, 232, 217, 86, 210, 209, 91, 46, 165, 77, 147, 131, 86, 17, 160, 245, + 145, 12, 167, 246, 99, 121, 207, 198, 42, 158, 17, 206, 208, 23, 107, 232, + 112, 190, 127, 172, 171, 125, 48, 26, 244, 248, 187, 107, 110, 254, 255, + 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, + 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 243, 82, 220, 19, + 111, 35, 161, 227, 181, 114, 141, 63, 74, 113, 185, 20, 190, 91, 60, 41, + 232, 217, 86, 210, 209, 91, 46, 165, 77, 147, 131, 86, 17, 160, 245, 145, + 12, 167, 246, 99, 121, 207, 198, 42, 158, 17, 206, 208, 23, 107, 232, 112, + 190, 127, 172, 171, 125, 48, 26, 244, 248, 187, 107, 110, 16, 96, 1, 0, 0, + 0, 0, 0, 160, 116, 117, 249, 95, 139, 138, 6, 96, 11, 52, 83, 155, 232, + 54, 37, 118, 131, 46, 240, 114, 163, 115, 189, 221, 216, 203, 167, 98, + 249, 56, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, + ], + nullifier: [ + 19, 38, 174, 169, 246, 23, 228, 93, 178, 195, 175, 45, 178, 233, 217, 117, + 158, 35, 243, 134, 94, 98, 50, 167, 234, 4, 76, 246, 189, 61, 223, 97, + ], + pos: 90128, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 3101148, + note: [ + 62, 255, 106, 211, 52, 134, 75, 98, 200, 153, 139, 171, 0, 109, 86, 143, + 247, 241, 176, 10, 235, 241, 68, 14, 220, 145, 57, 51, 41, 27, 235, 79, + 129, 0, 123, 189, 138, 121, 205, 33, 122, 143, 156, 139, 81, 28, 193, 71, + 123, 151, 254, 117, 181, 119, 254, 197, 208, 29, 194, 161, 154, 170, 101, + 100, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 62, + 255, 106, 211, 52, 134, 75, 98, 200, 153, 139, 171, 0, 109, 86, 143, 247, + 241, 176, 10, 235, 241, 68, 14, 220, 145, 57, 51, 41, 27, 235, 79, 129, 0, + 123, 189, 138, 121, 205, 33, 122, 143, 156, 139, 81, 28, 193, 71, 123, + 151, 254, 117, 181, 119, 254, 197, 208, 29, 194, 161, 154, 170, 101, 100, + 252, 21, 20, 59, 230, 107, 103, 109, 200, 62, 170, 105, 234, 97, 39, 121, + 58, 186, 145, 194, 26, 185, 80, 26, 28, 142, 242, 238, 113, 242, 189, 85, + 23, 113, 223, 154, 206, 217, 249, 202, 128, 176, 178, 6, 86, 91, 115, 241, + 221, 126, 45, 38, 137, 84, 89, 189, 185, 87, 75, 162, 20, 43, 186, 2, 7, + 156, 248, 251, 180, 168, 205, 194, 205, 189, 43, 249, 151, 161, 125, 65, + 130, 152, 140, 63, 157, 26, 188, 155, 106, 72, 67, 221, 33, 40, 15, 77, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 23, 113, + 223, 154, 206, 217, 249, 202, 128, 176, 178, 6, 86, 91, 115, 241, 221, + 126, 45, 38, 137, 84, 89, 189, 185, 87, 75, 162, 20, 43, 186, 2, 7, 156, + 248, 251, 180, 168, 205, 194, 205, 189, 43, 249, 151, 161, 125, 65, 130, + 152, 140, 63, 157, 26, 188, 155, 106, 72, 67, 221, 33, 40, 15, 77, 164, + 174, 228, 146, 198, 137, 214, 163, 118, 156, 243, 17, 30, 241, 84, 18, + 236, 119, 144, 219, 226, 93, 4, 126, 17, 58, 61, 169, 165, 20, 174, 66, + 187, 17, 150, 19, 99, 201, 5, 216, 104, 224, 136, 65, 189, 208, 109, 71, + 150, 206, 106, 244, 33, 172, 218, 104, 213, 39, 27, 203, 234, 106, 150, + 15, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, + 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 164, + 174, 228, 146, 198, 137, 214, 163, 118, 156, 243, 17, 30, 241, 84, 18, + 236, 119, 144, 219, 226, 93, 4, 126, 17, 58, 61, 169, 165, 20, 174, 66, + 187, 17, 150, 19, 99, 201, 5, 216, 104, 224, 136, 65, 189, 208, 109, 71, + 150, 206, 106, 244, 33, 172, 218, 104, 213, 39, 27, 203, 234, 106, 150, + 15, 138, 85, 1, 0, 0, 0, 0, 0, 171, 198, 238, 238, 219, 185, 162, 48, 126, + 228, 18, 40, 194, 188, 152, 166, 145, 237, 40, 249, 135, 239, 52, 216, + 203, 175, 40, 185, 29, 106, 177, 115, 218, 211, 75, 68, 145, 116, 241, + 161, 239, 184, 194, 252, 140, 106, 229, 92, 21, 24, 114, 131, 171, 241, + 201, 191, 140, 231, 11, 99, 157, 24, 205, 96, 131, 137, 231, 43, 10, 77, + 247, 164, 177, 13, 145, 183, 35, 79, 197, 81, 134, 185, 187, 184, 237, + 182, 3, 36, 215, 20, 155, 86, 8, 213, 39, 16, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 92, 111, 239, 108, 96, 29, 179, 6, 31, 240, 124, 170, 70, 86, 194, 129, + 186, 13, 135, 84, 78, 201, 123, 25, 149, 30, 153, 134, 188, 181, 69, 30, + ], + pos: 87434, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, + { + block_height: 3101191, + note: [ + 86, 116, 53, 63, 150, 243, 182, 175, 237, 103, 63, 73, 54, 95, 84, 147, + 40, 3, 178, 214, 90, 209, 170, 185, 241, 151, 78, 103, 64, 127, 193, 84, + 207, 211, 193, 90, 170, 28, 96, 64, 251, 208, 151, 135, 255, 44, 22, 98, + 181, 13, 235, 38, 64, 140, 62, 223, 88, 1, 59, 128, 213, 151, 112, 66, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 86, 116, + 53, 63, 150, 243, 182, 175, 237, 103, 63, 73, 54, 95, 84, 147, 40, 3, 178, + 214, 90, 209, 170, 185, 241, 151, 78, 103, 64, 127, 193, 84, 207, 211, + 193, 90, 170, 28, 96, 64, 251, 208, 151, 135, 255, 44, 22, 98, 181, 13, + 235, 38, 64, 140, 62, 223, 88, 1, 59, 128, 213, 151, 112, 66, 77, 82, 218, + 193, 246, 105, 223, 62, 221, 129, 97, 172, 89, 218, 126, 157, 206, 115, + 112, 110, 188, 88, 174, 226, 30, 33, 115, 114, 241, 93, 82, 81, 196, 240, + 127, 53, 197, 247, 114, 148, 152, 244, 59, 233, 196, 137, 38, 247, 58, 45, + 94, 223, 255, 102, 138, 90, 14, 183, 140, 119, 81, 150, 24, 107, 188, 125, + 44, 227, 150, 145, 136, 200, 102, 146, 96, 163, 99, 159, 41, 2, 151, 86, + 196, 74, 181, 33, 54, 197, 105, 248, 0, 138, 92, 162, 160, 68, 254, 255, + 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, + 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 196, 240, 127, 53, + 197, 247, 114, 148, 152, 244, 59, 233, 196, 137, 38, 247, 58, 45, 94, 223, + 255, 102, 138, 90, 14, 183, 140, 119, 81, 150, 24, 107, 188, 125, 44, 227, + 150, 145, 136, 200, 102, 146, 96, 163, 99, 159, 41, 2, 151, 86, 196, 74, + 181, 33, 54, 197, 105, 248, 0, 138, 92, 162, 160, 68, 171, 161, 245, 41, + 62, 98, 133, 166, 60, 21, 152, 77, 142, 26, 187, 185, 14, 90, 66, 246, + 177, 186, 214, 26, 3, 108, 0, 135, 231, 3, 189, 46, 38, 214, 213, 177, 16, + 225, 22, 78, 89, 145, 139, 211, 0, 250, 44, 33, 245, 68, 123, 63, 44, 171, + 253, 7, 192, 37, 184, 142, 119, 7, 153, 8, 254, 255, 255, 255, 1, 0, 0, 0, + 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, + 5, 197, 172, 89, 177, 36, 24, 171, 161, 245, 41, 62, 98, 133, 166, 60, 21, + 152, 77, 142, 26, 187, 185, 14, 90, 66, 246, 177, 186, 214, 26, 3, 108, 0, + 135, 231, 3, 189, 46, 38, 214, 213, 177, 16, 225, 22, 78, 89, 145, 139, + 211, 0, 250, 44, 33, 245, 68, 123, 63, 44, 171, 253, 7, 192, 37, 184, 142, + 119, 7, 153, 8, 140, 85, 1, 0, 0, 0, 0, 0, 223, 158, 81, 228, 119, 7, 13, + 97, 154, 91, 100, 215, 132, 43, 56, 4, 39, 67, 154, 117, 163, 130, 233, + 187, 87, 51, 220, 227, 189, 19, 220, 36, 242, 25, 57, 37, 212, 22, 247, + 152, 67, 220, 55, 200, 37, 88, 209, 34, 86, 64, 73, 122, 105, 109, 123, + 137, 68, 220, 113, 43, 232, 23, 105, 59, 219, 116, 175, 196, 157, 200, 74, + 243, 183, 98, 138, 18, 156, 170, 201, 113, 99, 16, 224, 204, 191, 224, + 108, 146, 85, 101, 26, 75, 134, 134, 171, 102, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 34, 10, 11, 218, 23, 248, 6, 38, 146, 71, 223, 117, 26, 183, 57, 213, 191, + 202, 78, 222, 152, 81, 105, 218, 42, 5, 13, 229, 155, 70, 73, 85, + ], + pos: 87436, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, + { + block_height: 3101191, + note: [ + 193, 212, 207, 224, 201, 157, 182, 184, 191, 51, 186, 160, 8, 89, 236, + 123, 129, 192, 17, 73, 196, 4, 28, 32, 179, 19, 166, 100, 66, 96, 1, 93, + 163, 27, 103, 144, 58, 6, 130, 87, 21, 170, 138, 56, 175, 220, 138, 147, + 173, 110, 42, 58, 100, 179, 138, 106, 21, 240, 7, 102, 221, 146, 44, 101, + 25, 213, 152, 219, 189, 0, 152, 31, 90, 23, 75, 80, 71, 27, 186, 143, 251, + 249, 111, 240, 19, 177, 11, 178, 70, 107, 204, 62, 82, 52, 161, 3, 101, + 213, 30, 203, 13, 254, 182, 38, 16, 218, 135, 45, 63, 52, 212, 182, 131, + 160, 183, 30, 76, 34, 13, 77, 213, 174, 212, 142, 37, 109, 39, 0, 222, + 152, 139, 26, 184, 232, 30, 2, 80, 104, 143, 44, 229, 93, 14, 216, 222, + 253, 101, 231, 159, 94, 242, 248, 26, 94, 69, 4, 3, 41, 253, 65, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 154, 34, 73, 128, 10, 159, 37, 175, 227, 3, 107, 173, 74, + 35, 48, 87, 55, 0, 90, 27, 78, 29, 219, 60, 44, 72, 56, 249, 183, 30, 9, + 40, 242, 241, 235, 77, 15, 103, 54, 142, 157, 190, 202, 78, 42, 190, 137, + 231, 171, 216, 231, 91, 235, 183, 45, 141, 94, 79, 150, 31, 204, 58, 62, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 145, 154, + 34, 73, 128, 10, 159, 37, 175, 227, 3, 107, 173, 74, 35, 48, 87, 55, 0, + 90, 27, 78, 29, 219, 60, 44, 72, 56, 249, 183, 30, 9, 40, 242, 241, 235, + 77, 15, 103, 54, 142, 157, 190, 202, 78, 42, 190, 137, 231, 171, 216, 231, + 91, 235, 183, 45, 141, 94, 79, 150, 31, 204, 58, 62, 201, 66, 68, 227, + 248, 136, 125, 255, 213, 141, 82, 164, 87, 13, 202, 83, 225, 33, 4, 218, + 239, 199, 65, 221, 9, 250, 133, 245, 9, 80, 187, 107, 143, 97, 174, 194, + 85, 97, 159, 37, 90, 229, 211, 20, 41, 36, 139, 176, 214, 223, 126, 53, + 70, 92, 168, 214, 166, 195, 78, 133, 158, 7, 16, 23, 254, 255, 255, 255, + 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, + 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 201, 66, 68, 227, 248, 136, + 125, 255, 213, 141, 82, 164, 87, 13, 202, 83, 225, 33, 4, 218, 239, 199, + 65, 221, 9, 250, 133, 245, 9, 80, 187, 107, 143, 97, 174, 194, 85, 97, + 159, 37, 90, 229, 211, 20, 41, 36, 139, 176, 214, 223, 126, 53, 70, 92, + 168, 214, 166, 195, 78, 133, 158, 7, 16, 23, 142, 85, 1, 0, 0, 0, 0, 0, + 177, 205, 116, 249, 78, 50, 139, 6, 79, 206, 20, 101, 207, 215, 208, 254, + 47, 98, 2, 0, 179, 189, 93, 104, 62, 17, 135, 174, 194, 213, 217, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 176, 186, 139, 117, 91, 214, 135, 89, 222, 0, 153, 17, 2, 250, 70, 158, + 112, 141, 216, 22, 208, 34, 50, 8, 219, 136, 154, 233, 234, 4, 251, 5, + ], + pos: 87438, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, + { + block_height: 3101764, + note: [ + 93, 97, 56, 237, 187, 123, 202, 115, 11, 0, 121, 249, 199, 187, 38, 161, + 108, 157, 233, 19, 180, 150, 123, 67, 73, 23, 47, 235, 12, 184, 197, 65, + 191, 145, 203, 239, 61, 223, 196, 149, 78, 73, 156, 186, 70, 116, 244, + 103, 129, 169, 186, 92, 131, 143, 142, 114, 68, 146, 188, 154, 200, 224, + 200, 88, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 93, 97, 56, 237, 187, 123, 202, 115, 11, 0, 121, 249, 199, 187, 38, 161, + 108, 157, 233, 19, 180, 150, 123, 67, 73, 23, 47, 235, 12, 184, 197, 65, + 191, 145, 203, 239, 61, 223, 196, 149, 78, 73, 156, 186, 70, 116, 244, + 103, 129, 169, 186, 92, 131, 143, 142, 114, 68, 146, 188, 154, 200, 224, + 200, 88, 110, 214, 205, 224, 183, 181, 148, 138, 148, 50, 134, 60, 58, 84, + 146, 51, 148, 228, 2, 56, 234, 101, 13, 157, 97, 15, 45, 54, 242, 187, + 237, 49, 172, 181, 59, 223, 31, 231, 206, 155, 126, 28, 150, 115, 125, 34, + 173, 34, 113, 184, 91, 2, 136, 45, 204, 228, 231, 25, 70, 171, 20, 196, + 33, 18, 149, 248, 13, 82, 167, 127, 110, 131, 117, 214, 249, 67, 106, 204, + 236, 212, 52, 45, 72, 72, 110, 218, 23, 235, 100, 111, 139, 44, 173, 135, + 53, 46, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, + 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, + 172, 181, 59, 223, 31, 231, 206, 155, 126, 28, 150, 115, 125, 34, 173, 34, + 113, 184, 91, 2, 136, 45, 204, 228, 231, 25, 70, 171, 20, 196, 33, 18, + 149, 248, 13, 82, 167, 127, 110, 131, 117, 214, 249, 67, 106, 204, 236, + 212, 52, 45, 72, 72, 110, 218, 23, 235, 100, 111, 139, 44, 173, 135, 53, + 46, 141, 56, 37, 54, 94, 202, 58, 179, 39, 175, 119, 80, 211, 59, 98, 158, + 202, 10, 171, 255, 170, 64, 232, 60, 172, 182, 160, 122, 172, 123, 132, + 55, 234, 6, 192, 1, 19, 235, 218, 182, 124, 87, 73, 187, 114, 121, 110, + 91, 6, 176, 46, 238, 26, 49, 27, 36, 150, 249, 80, 58, 98, 112, 188, 106, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 141, 56, + 37, 54, 94, 202, 58, 179, 39, 175, 119, 80, 211, 59, 98, 158, 202, 10, + 171, 255, 170, 64, 232, 60, 172, 182, 160, 122, 172, 123, 132, 55, 234, 6, + 192, 1, 19, 235, 218, 182, 124, 87, 73, 187, 114, 121, 110, 91, 6, 176, + 46, 238, 26, 49, 27, 36, 150, 249, 80, 58, 98, 112, 188, 106, 144, 85, 1, + 0, 0, 0, 0, 0, 96, 197, 248, 129, 134, 9, 83, 177, 33, 239, 49, 211, 223, + 221, 75, 96, 254, 71, 44, 42, 38, 104, 206, 28, 9, 151, 96, 187, 134, 8, + 40, 80, 248, 53, 25, 212, 83, 66, 59, 247, 90, 69, 246, 7, 175, 186, 54, + 173, 212, 211, 15, 177, 184, 168, 6, 19, 23, 197, 142, 198, 63, 32, 102, + 73, 53, 15, 90, 160, 56, 68, 171, 178, 200, 167, 228, 156, 10, 84, 14, + 157, 6, 189, 178, 168, 84, 41, 167, 90, 116, 3, 145, 213, 187, 140, 111, + 96, 1, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 103, 79, 40, 193, 196, 52, 160, 15, 21, 141, 5, 92, 230, 199, 34, 236, + 141, 163, 152, 177, 37, 181, 86, 8, 154, 45, 148, 170, 212, 192, 71, 96, + ], + pos: 87440, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, +]; diff --git a/web-wallet/src/lib/mock-data/cache-unspent-notes.js b/web-wallet/src/lib/mock-data/cache-unspent-notes.js new file mode 100644 index 0000000000..c504edf40f --- /dev/null +++ b/web-wallet/src/lib/mock-data/cache-unspent-notes.js @@ -0,0 +1,200 @@ +/* eslint-disable camelcase */ + +/** @type {WalletCacheNote[]} */ +export default [ + { + block_height: 3504122, + note: [ + 35, 89, 64, 81, 18, 56, 212, 101, 35, 6, 57, 8, 107, 218, 126, 104, 250, + 204, 170, 246, 235, 19, 28, 68, 170, 63, 129, 255, 171, 26, 136, 63, 35, + 83, 23, 138, 129, 90, 10, 190, 233, 121, 50, 175, 27, 216, 116, 60, 147, + 82, 116, 66, 73, 105, 89, 250, 65, 84, 144, 206, 54, 169, 240, 107, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 35, 89, 64, 81, + 18, 56, 212, 101, 35, 6, 57, 8, 107, 218, 126, 104, 250, 204, 170, 246, + 235, 19, 28, 68, 170, 63, 129, 255, 171, 26, 136, 63, 35, 83, 23, 138, + 129, 90, 10, 190, 233, 121, 50, 175, 27, 216, 116, 60, 147, 82, 116, 66, + 73, 105, 89, 250, 65, 84, 144, 206, 54, 169, 240, 107, 235, 11, 149, 36, + 186, 247, 122, 45, 200, 120, 126, 3, 80, 250, 231, 50, 125, 253, 237, 232, + 127, 141, 120, 8, 59, 155, 139, 107, 59, 86, 17, 88, 38, 205, 96, 185, 77, + 99, 126, 135, 39, 100, 41, 194, 196, 235, 60, 185, 190, 94, 66, 238, 119, + 106, 245, 254, 88, 86, 247, 195, 176, 246, 59, 111, 252, 176, 10, 113, 60, + 160, 54, 139, 60, 187, 27, 81, 43, 40, 134, 145, 198, 23, 226, 166, 69, + 183, 180, 151, 28, 187, 134, 138, 15, 195, 115, 53, 254, 255, 255, 255, 1, + 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, + 153, 111, 5, 197, 172, 89, 177, 36, 24, 38, 205, 96, 185, 77, 99, 126, + 135, 39, 100, 41, 194, 196, 235, 60, 185, 190, 94, 66, 238, 119, 106, 245, + 254, 88, 86, 247, 195, 176, 246, 59, 111, 252, 176, 10, 113, 60, 160, 54, + 139, 60, 187, 27, 81, 43, 40, 134, 145, 198, 23, 226, 166, 69, 183, 180, + 151, 28, 187, 134, 138, 15, 195, 115, 53, 52, 217, 108, 15, 84, 136, 235, + 179, 135, 141, 175, 93, 141, 180, 175, 158, 153, 48, 164, 195, 186, 247, + 70, 160, 233, 39, 179, 200, 27, 248, 213, 81, 103, 158, 85, 221, 152, 180, + 244, 14, 144, 187, 56, 237, 61, 162, 226, 40, 82, 61, 8, 245, 59, 1, 133, + 51, 242, 152, 224, 147, 11, 63, 81, 101, 254, 255, 255, 255, 1, 0, 0, 0, + 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, + 5, 197, 172, 89, 177, 36, 24, 52, 217, 108, 15, 84, 136, 235, 179, 135, + 141, 175, 93, 141, 180, 175, 158, 153, 48, 164, 195, 186, 247, 70, 160, + 233, 39, 179, 200, 27, 248, 213, 81, 103, 158, 85, 221, 152, 180, 244, 14, + 144, 187, 56, 237, 61, 162, 226, 40, 82, 61, 8, 245, 59, 1, 133, 51, 242, + 152, 224, 147, 11, 63, 81, 101, 17, 96, 1, 0, 0, 0, 0, 0, 82, 45, 237, 88, + 92, 220, 53, 136, 157, 198, 69, 111, 84, 127, 194, 46, 3, 78, 227, 196, + 222, 192, 163, 148, 113, 76, 114, 142, 242, 22, 106, 15, 204, 131, 239, + 142, 252, 98, 37, 31, 126, 54, 255, 224, 64, 5, 182, 78, 210, 67, 118, + 138, 185, 129, 148, 78, 190, 133, 111, 83, 107, 156, 95, 61, 121, 202, 44, + 137, 234, 159, 8, 71, 19, 85, 92, 249, 42, 217, 120, 14, 151, 65, 143, + 145, 71, 251, 87, 42, 71, 11, 13, 205, 23, 249, 117, 104, 1, 0, 0, 0, 0, + 0, 0, 0, + ], + nullifier: [ + 186, 119, 232, 149, 114, 235, 248, 183, 99, 213, 157, 167, 207, 1, 236, + 184, 6, 120, 224, 188, 180, 208, 101, 81, 214, 133, 78, 241, 171, 35, 15, + 17, + ], + pos: 90129, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 3504122, + note: [ + 139, 19, 12, 26, 182, 157, 54, 150, 185, 158, 165, 98, 249, 228, 26, 71, + 62, 33, 12, 126, 71, 155, 9, 75, 224, 39, 255, 51, 53, 147, 224, 82, 212, + 123, 53, 29, 82, 128, 92, 87, 187, 166, 205, 245, 20, 141, 215, 197, 214, + 35, 155, 203, 43, 80, 240, 230, 250, 14, 133, 247, 136, 29, 207, 98, 48, + 154, 76, 158, 58, 255, 40, 175, 245, 161, 251, 250, 84, 128, 207, 74, 189, + 185, 61, 195, 197, 82, 118, 236, 180, 47, 48, 81, 194, 108, 34, 60, 103, + 29, 192, 22, 186, 99, 14, 243, 47, 222, 111, 151, 84, 59, 62, 124, 84, 38, + 210, 242, 25, 86, 153, 243, 39, 122, 147, 145, 222, 189, 128, 6, 175, 219, + 74, 106, 197, 172, 223, 3, 178, 131, 118, 178, 153, 175, 218, 89, 96, 18, + 27, 156, 186, 99, 187, 137, 46, 156, 49, 82, 203, 149, 219, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 137, 85, 194, 128, 233, 192, 184, 83, 25, 233, 182, 178, + 182, 82, 208, 69, 190, 207, 1, 136, 28, 105, 254, 16, 105, 153, 103, 255, + 30, 60, 71, 198, 212, 191, 83, 58, 111, 58, 117, 173, 57, 21, 227, 184, + 207, 144, 227, 160, 197, 58, 67, 159, 50, 223, 151, 96, 183, 174, 101, 32, + 194, 45, 28, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, + 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, + 24, 32, 137, 85, 194, 128, 233, 192, 184, 83, 25, 233, 182, 178, 182, 82, + 208, 69, 190, 207, 1, 136, 28, 105, 254, 16, 105, 153, 103, 255, 30, 60, + 71, 198, 212, 191, 83, 58, 111, 58, 117, 173, 57, 21, 227, 184, 207, 144, + 227, 160, 197, 58, 67, 159, 50, 223, 151, 96, 183, 174, 101, 32, 194, 45, + 28, 73, 99, 6, 20, 200, 34, 184, 170, 236, 106, 182, 249, 105, 145, 62, + 166, 22, 173, 209, 78, 86, 228, 243, 55, 29, 106, 187, 218, 152, 94, 221, + 51, 7, 105, 254, 138, 240, 75, 18, 226, 9, 4, 247, 12, 22, 71, 254, 16, + 194, 222, 93, 138, 37, 67, 151, 42, 40, 17, 199, 245, 255, 232, 193, 45, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 73, 99, 6, + 20, 200, 34, 184, 170, 236, 106, 182, 249, 105, 145, 62, 166, 22, 173, + 209, 78, 86, 228, 243, 55, 29, 106, 187, 218, 152, 94, 221, 51, 7, 105, + 254, 138, 240, 75, 18, 226, 9, 4, 247, 12, 22, 71, 254, 16, 194, 222, 93, + 138, 37, 67, 151, 42, 40, 17, 199, 245, 255, 232, 193, 45, 19, 96, 1, 0, + 0, 0, 0, 0, 13, 14, 117, 249, 242, 241, 138, 6, 243, 157, 125, 251, 226, + 136, 248, 127, 9, 89, 45, 236, 254, 98, 41, 71, 255, 35, 114, 2, 13, 194, + 22, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 19, 117, 176, 153, 171, 117, 99, 78, 55, 189, 129, 60, 31, 174, 34, 40, + 167, 71, 252, 59, 139, 221, 170, 124, 117, 99, 123, 194, 57, 161, 225, 20, + ], + pos: 90131, + psk: "43UC3K4oy7wNBDQR4AUdkwrT1iB9ucU65GvJ8kkqB6BGwz9fwPEqzwqsJD2Rgc1UYegxXSsJmrqN2zEm2ycHitWG", + }, + { + block_height: 0, + note: [ + 21, 137, 54, 169, 231, 198, 85, 81, 218, 191, 77, 120, 163, 230, 95, 29, + 73, 133, 64, 209, 13, 124, 144, 24, 59, 135, 185, 36, 42, 164, 76, 44, 57, + 210, 101, 96, 222, 179, 229, 84, 15, 157, 79, 142, 142, 179, 109, 124, 8, + 201, 127, 211, 129, 251, 159, 187, 233, 35, 223, 17, 69, 195, 191, 21, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 21, 137, + 54, 169, 231, 198, 85, 81, 218, 191, 77, 120, 163, 230, 95, 29, 73, 133, + 64, 209, 13, 124, 144, 24, 59, 135, 185, 36, 42, 164, 76, 44, 57, 210, + 101, 96, 222, 179, 229, 84, 15, 157, 79, 142, 142, 179, 109, 124, 8, 201, + 127, 211, 129, 251, 159, 187, 233, 35, 223, 17, 69, 195, 191, 21, 184, + 215, 75, 126, 97, 30, 26, 142, 68, 6, 2, 174, 78, 1, 29, 15, 202, 156, + 180, 241, 221, 19, 219, 155, 136, 124, 27, 199, 195, 245, 77, 114, 185, + 101, 192, 76, 122, 65, 117, 170, 236, 66, 128, 129, 197, 32, 255, 83, 171, + 237, 48, 99, 110, 234, 159, 95, 139, 93, 10, 156, 174, 141, 177, 47, 142, + 51, 136, 145, 236, 222, 135, 83, 133, 199, 207, 209, 194, 0, 83, 80, 10, + 220, 184, 154, 110, 182, 70, 214, 22, 21, 219, 9, 107, 185, 55, 45, 254, + 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, + 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 185, 101, 192, + 76, 122, 65, 117, 170, 236, 66, 128, 129, 197, 32, 255, 83, 171, 237, 48, + 99, 110, 234, 159, 95, 139, 93, 10, 156, 174, 141, 177, 47, 142, 51, 136, + 145, 236, 222, 135, 83, 133, 199, 207, 209, 194, 0, 83, 80, 10, 220, 184, + 154, 110, 182, 70, 214, 22, 21, 219, 9, 107, 185, 55, 45, 154, 217, 11, + 49, 242, 161, 18, 120, 178, 34, 153, 195, 181, 52, 104, 61, 29, 252, 142, + 242, 152, 16, 124, 27, 44, 46, 147, 41, 187, 131, 163, 50, 48, 23, 25, 35, + 36, 188, 14, 94, 236, 58, 116, 188, 187, 136, 105, 39, 135, 163, 176, 124, + 121, 6, 38, 244, 149, 139, 138, 159, 107, 21, 90, 48, 254, 255, 255, 255, + 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, 188, 236, 239, 79, + 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 154, 217, 11, 49, 242, 161, + 18, 120, 178, 34, 153, 195, 181, 52, 104, 61, 29, 252, 142, 242, 152, 16, + 124, 27, 44, 46, 147, 41, 187, 131, 163, 50, 48, 23, 25, 35, 36, 188, 14, + 94, 236, 58, 116, 188, 187, 136, 105, 39, 135, 163, 176, 124, 121, 6, 38, + 244, 149, 139, 138, 159, 107, 21, 90, 48, 193, 93, 1, 0, 0, 0, 0, 0, 230, + 95, 91, 97, 79, 247, 181, 152, 53, 234, 234, 114, 42, 7, 4, 162, 52, 201, + 195, 133, 100, 21, 39, 178, 88, 16, 85, 223, 103, 155, 160, 14, 195, 54, + 168, 237, 175, 105, 105, 16, 197, 113, 218, 129, 70, 108, 180, 170, 178, + 39, 56, 75, 87, 49, 121, 52, 30, 11, 21, 224, 159, 12, 212, 69, 222, 14, + 29, 229, 11, 158, 93, 214, 241, 246, 5, 130, 13, 196, 218, 5, 208, 111, + 127, 62, 20, 62, 130, 165, 35, 102, 250, 148, 171, 226, 168, 15, 1, 0, 0, + 0, 0, 0, 0, 0, + ], + nullifier: [ + 53, 211, 22, 217, 252, 230, 146, 144, 105, 69, 71, 4, 203, 54, 76, 236, + 90, 66, 178, 1, 210, 63, 10, 14, 162, 181, 255, 23, 66, 224, 20, 9, + ], + pos: 89537, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, + { + block_height: 0, + note: [ + 139, 195, 208, 136, 103, 175, 45, 63, 224, 83, 141, 74, 102, 47, 77, 40, + 94, 198, 34, 65, 176, 202, 244, 232, 160, 139, 217, 203, 171, 50, 123, + 107, 139, 78, 3, 181, 181, 62, 200, 248, 123, 163, 24, 250, 131, 57, 79, + 102, 101, 17, 16, 169, 231, 45, 151, 188, 11, 232, 225, 221, 41, 14, 210, + 3, 120, 150, 178, 107, 127, 228, 157, 53, 25, 204, 85, 209, 20, 133, 163, + 99, 15, 235, 254, 9, 124, 140, 64, 229, 200, 96, 122, 97, 246, 250, 73, + 93, 86, 90, 232, 70, 60, 110, 107, 238, 164, 145, 167, 137, 26, 21, 103, + 49, 118, 131, 72, 168, 122, 179, 35, 102, 147, 36, 40, 25, 39, 203, 4, 63, + 250, 245, 189, 57, 175, 226, 217, 44, 193, 32, 100, 61, 53, 59, 234, 224, + 254, 158, 0, 76, 129, 225, 69, 252, 205, 188, 88, 50, 140, 123, 118, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 108, 248, 206, 198, 214, 65, 112, 38, 232, 71, + 32, 28, 132, 56, 109, 135, 145, 202, 218, 46, 235, 81, 78, 80, 61, 116, + 186, 14, 123, 235, 63, 175, 85, 165, 38, 26, 229, 214, 66, 114, 224, 196, + 242, 112, 16, 5, 190, 83, 21, 99, 156, 215, 198, 71, 128, 26, 245, 49, 70, + 29, 240, 45, 108, 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, + 132, 88, 245, 79, 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, + 36, 24, 138, 108, 248, 206, 198, 214, 65, 112, 38, 232, 71, 32, 28, 132, + 56, 109, 135, 145, 202, 218, 46, 235, 81, 78, 80, 61, 116, 186, 14, 123, + 235, 63, 175, 85, 165, 38, 26, 229, 214, 66, 114, 224, 196, 242, 112, 16, + 5, 190, 83, 21, 99, 156, 215, 198, 71, 128, 26, 245, 49, 70, 29, 240, 45, + 108, 76, 5, 194, 229, 244, 68, 247, 200, 121, 92, 83, 199, 81, 116, 255, + 119, 123, 70, 27, 200, 228, 229, 112, 77, 118, 56, 128, 152, 198, 9, 82, + 9, 239, 142, 218, 22, 69, 15, 230, 18, 8, 178, 239, 48, 75, 33, 91, 107, + 124, 198, 36, 175, 26, 131, 113, 192, 18, 204, 33, 104, 22, 21, 120, 36, + 254, 255, 255, 255, 1, 0, 0, 0, 2, 72, 3, 0, 250, 183, 132, 88, 245, 79, + 188, 236, 239, 79, 140, 153, 111, 5, 197, 172, 89, 177, 36, 24, 76, 5, + 194, 229, 244, 68, 247, 200, 121, 92, 83, 199, 81, 116, 255, 119, 123, 70, + 27, 200, 228, 229, 112, 77, 118, 56, 128, 152, 198, 9, 82, 9, 239, 142, + 218, 22, 69, 15, 230, 18, 8, 178, 239, 48, 75, 33, 91, 107, 124, 198, 36, + 175, 26, 131, 113, 192, 18, 204, 33, 104, 22, 21, 120, 36, 195, 93, 1, 0, + 0, 0, 0, 0, 40, 45, 117, 249, 215, 210, 138, 6, 216, 50, 117, 200, 51, 50, + 213, 75, 189, 198, 103, 137, 2, 37, 108, 175, 208, 24, 58, 120, 220, 121, + 106, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + nullifier: [ + 54, 128, 104, 90, 154, 211, 167, 40, 32, 81, 156, 0, 159, 58, 112, 239, + 204, 184, 152, 241, 170, 129, 231, 43, 153, 15, 191, 115, 56, 153, 3, 32, + ], + pos: 89539, + psk: "4Vd2cY4XAuqpcpiVFVCtveuZq7o9PV1WhmqqdNNAsZwWEojKwctU3ud7PqciKCpUnJWjZPspudQwbNwYT6Fq8Bzo", + }, +]; diff --git a/web-wallet/src/lib/mock-data/index.js b/web-wallet/src/lib/mock-data/index.js index 8f71c3caab..f6d13efd16 100644 --- a/web-wallet/src/lib/mock-data/index.js +++ b/web-wallet/src/lib/mock-data/index.js @@ -1,4 +1,7 @@ export { default as addresses } from "./addresses"; export { default as apiMarketData } from "./api-market-data.json"; +export { default as cacheHistory } from "./cache-history"; +export { default as cacheSpentNotes } from "./cache-spent-notes"; +export { default as cacheUnspentNotes } from "./cache-unspent-notes"; export { default as stakeInfo } from "./stakeInfo"; export { default as transactions } from "./transactions"; diff --git a/web-wallet/src/lib/transactions/transactions.d.ts b/web-wallet/src/lib/transactions/transactions.d.ts index 86835e95f0..65b7366f4b 100644 --- a/web-wallet/src/lib/transactions/transactions.d.ts +++ b/web-wallet/src/lib/transactions/transactions.d.ts @@ -1,7 +1,7 @@ type Transaction = { amount: number; block_height: number; - direction: string; + direction: "In" | "Out"; fee: number; id: string; tx_type: string; diff --git a/web-wallet/src/lib/wallet-cache/__tests__/index.spec.js b/web-wallet/src/lib/wallet-cache/__tests__/index.spec.js new file mode 100644 index 0000000000..496bdc29e9 --- /dev/null +++ b/web-wallet/src/lib/wallet-cache/__tests__/index.spec.js @@ -0,0 +1,355 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { Dexie } from "dexie"; +import { filterWith, partition, setKey, sortWith } from "lamb"; + +import { + cacheHistory, + cacheSpentNotes, + cacheUnspentNotes, +} from "$lib/mock-data"; +import { arrayMaxByKey } from "$lib/dusk/array"; + +import walletCache from ".."; + +function getDatabase() { + const db = new Dexie("@dusk-network/wallet-cache"); + + db.version(1).stores({ + history: "psk", + spentNotes: "nullifier,&pos,psk", + unspentNotes: "nullifier,&pos,psk", + }); + + return db; +} + +/** @type {(tableName: "history" | "spentNotes" | "unspentNotes") => Promise} */ +async function getTableCount(tableName) { + const db = await getDatabase().open(); + + return db + .table(tableName) + .count() + .finally(() => db.close()); +} + +const getMaxLastBlockHeight = arrayMaxByKey("lastBlockHeight"); +const getMaxPos = arrayMaxByKey("pos"); + +/** + * We need to sort the notes as the database doesn't guarantee + * a sort order. + * + * @type {(notes: WalletCacheNote[]) => WalletCacheNote[]} + */ +const sortNotes = sortWith([ + /** @type {(entry: WalletCacheNote) => string} */ ( + (entry) => entry.nullifier.toString() + ), +]); + +async function fillDatabase() { + const db = getDatabase(); + + await db.open(); + + return db + .transaction("rw", ["history", "spentNotes", "unspentNotes"], async () => { + await db.table("history").bulkPut(cacheHistory); + await db.table("spentNotes").bulkPut(cacheSpentNotes); + await db.table("unspentNotes").bulkPut(cacheUnspentNotes); + }) + .finally(() => { + db.close(); + }); +} + +describe("Wallet cache", () => { + const db = getDatabase(); + + beforeEach(async () => { + await getDatabase().delete(); + await fillDatabase(); + }); + + describe("Reading and clearing the cache", async () => { + const psk = cacheHistory[0].psk; + + /** @type {(entries: Array<{ psk: string }>) => typeof entries} */ + const filterByPsk = filterWith((entry) => entry.psk === psk); + + it("should expose a method to clear the database", async () => { + await db.open(); + await expect(db.table("history").count()).resolves.toBe( + cacheHistory.length + ); + await expect(db.table("spentNotes").count()).resolves.toBe( + cacheSpentNotes.length + ); + await expect(db.table("unspentNotes").count()).resolves.toBe( + cacheUnspentNotes.length + ); + + /** + * Closing the db to suppress the warning about another + * connection wanting to delete the database. + */ + db.close(); + + await walletCache.clear(); + + await db.open(); + + await expect(db.table("history").count()).resolves.toBe(0); + await expect(db.table("spentNotes").count()).resolves.toBe(0); + await expect(db.table("unspentNotes").count()).resolves.toBe(0); + + db.close(); + }); + + it("should expose a method to retrieve all existing notes and optionally filter them by a `psk`", async () => { + const allDbNotes = sortNotes(await walletCache.getAllNotes()); + const allNotes = sortNotes(cacheUnspentNotes.concat(cacheSpentNotes)); + const dbNotesByPsk = sortNotes(await walletCache.getAllNotes(psk)); + const notesByPsk = filterByPsk(allNotes); + + expect(allDbNotes).toStrictEqual(allNotes); + expect(dbNotesByPsk).toStrictEqual(notesByPsk); + await expect(walletCache.getAllNotes("foo")).resolves.toStrictEqual([]); + }); + + it("should expose a method to retrieve the cached history for a specific `psk`", async () => { + const history = filterByPsk(cacheHistory)[0]; + + await expect(walletCache.getHistoryEntry(psk)).resolves.toStrictEqual( + history + ); + await expect(walletCache.getHistoryEntry("foo")).resolves.toBeUndefined(); + }); + + it("should expose a method to retrieve the spent notes and optionally filter them by a `psk`", async () => { + const spentDbNotes = sortNotes(await walletCache.getSpentNotes()); + const spentNotes = sortNotes(cacheSpentNotes); + const spentDbNotesByPsk = sortNotes(await walletCache.getSpentNotes(psk)); + const spentNotesByPsk = filterByPsk(spentNotes); + + expect(spentDbNotes).toStrictEqual(spentNotes); + expect(spentDbNotesByPsk).toStrictEqual(spentNotesByPsk); + await expect(walletCache.getSpentNotes("foo")).resolves.toStrictEqual([]); + }); + + it("should expose a method to retrieve the unspent notes and optionally filter them by a `psk`", async () => { + const unspentDbNotes = sortNotes(await walletCache.getUnspentNotes()); + const unspentNotes = sortNotes(cacheUnspentNotes); + const unspentDbNotesByPsk = sortNotes( + await walletCache.getUnspentNotes(psk) + ); + const unspentNotesByPsk = filterByPsk(unspentNotes); + + expect(unspentDbNotes).toStrictEqual(unspentNotes); + expect(unspentDbNotesByPsk).toStrictEqual(unspentNotesByPsk); + await expect(walletCache.getUnspentNotes("foo")).resolves.toStrictEqual( + [] + ); + }); + }); + + describe("Writing the history", () => { + const newBlockHeight = getMaxLastBlockHeight(cacheHistory) + 1; + + /* eslint-disable camelcase */ + + /** @type {Transaction} */ + const tx = { + amount: 25000, + block_height: newBlockHeight, + direction: "In", + fee: 1876, + id: "some-tx-id", + tx_type: "TRANSFER", + }; + + /* eslint-enable camelcase */ + + const newEntry = { + history: [tx], + lastBlockHeight: newBlockHeight, + psk: "some-new-psk", + }; + + it("should expose a method to set a new cache history entry", async () => { + await walletCache.setHistoryEntry(newEntry); + + await expect( + walletCache.getHistoryEntry(newEntry.psk) + ).resolves.toStrictEqual(newEntry); + + // the other entries are still there + for (const entry of cacheHistory) { + await expect( + walletCache.getHistoryEntry(entry.psk) + ).resolves.toStrictEqual(entry); + } + + await expect(getTableCount("history")).resolves.toBe( + cacheHistory.length + 1 + ); + }); + + it("should replace the old entry, removing duplicate transactions, if the `psk` already exists", async () => { + const psk = cacheHistory[0].psk; + const updatedEntry = { + ...newEntry, + history: [...cacheHistory[0].history, ...newEntry.history], + psk, + }; + + await walletCache.setHistoryEntry(updatedEntry); + + await expect(walletCache.getHistoryEntry(psk)).resolves.toStrictEqual( + updatedEntry + ); + + // the other entry is still there + await expect( + walletCache.getHistoryEntry(cacheHistory[1].psk) + ).resolves.toStrictEqual(cacheHistory[1]); + await expect(getTableCount("history")).resolves.toBe(cacheHistory.length); + }); + + it("should leave the history as it was before if an error occurs during writing", async () => { + await expect( + // @ts-expect-error + walletCache.setHistoryEntry({ history: [] }) + ).rejects.toBeInstanceOf(Error); + + for (const entry of cacheHistory) { + await expect( + walletCache.getHistoryEntry(entry.psk) + ).resolves.toStrictEqual(entry); + } + + await expect(getTableCount("history")).resolves.toBe(cacheHistory.length); + }); + }); + + describe("Adding notes", () => { + const psk = cacheUnspentNotes[0].psk; + + /** @type {(note: WalletCacheNote) => boolean} */ + const hasTestPsk = (note) => note.psk === psk; + + /* eslint-disable camelcase */ + + /** @type {WalletCacheNote} */ + const newNote = { + block_height: getMaxLastBlockHeight(cacheHistory) + 1, + note: [], + nullifier: Array(32).fill(0), + pos: getMaxPos(cacheSpentNotes.concat(cacheUnspentNotes)) + 1, + psk, + }; + + /* eslint-enable camelcase */ + + it("should expose a method to add new notes to the spent list, which also deletes unspent notes that are now spent", async () => { + const [notesBeingSpent, expectedUnspentNotes] = partition( + cacheUnspentNotes, + hasTestPsk + ); + const spentNoteDuplicate = cacheSpentNotes.find(hasTestPsk); + + if (!spentNoteDuplicate) { + throw new Error( + "No suitable spent note found to setup the duplicate test" + ); + } + + /* + * We add some notes from the unspent list to verify that they + * change their state to spent and an existing spent note to + * verify that duplicates aren't being added. + */ + const newNotes = notesBeingSpent.concat(newNote, spentNoteDuplicate); + const expectedSpentNotes = cacheSpentNotes.concat( + newNote, + notesBeingSpent + ); + + await walletCache.addSpentNotes(newNotes); + + await expect( + walletCache.getUnspentNotes().then(sortNotes) + ).resolves.toStrictEqual(sortNotes(expectedUnspentNotes)); + await expect( + walletCache.getSpentNotes().then(sortNotes) + ).resolves.toStrictEqual(sortNotes(expectedSpentNotes)); + await expect(getTableCount("spentNotes")).resolves.toBe( + cacheSpentNotes.length + notesBeingSpent.length + 1 + ); + await expect(getTableCount("unspentNotes")).resolves.toBe( + cacheUnspentNotes.length - notesBeingSpent.length + ); + }); + + it("should leave both the spent and unspent notes as they were if an error occurs during insertion", async () => { + // @ts-expect-error + const newNotes = cacheUnspentNotes.concat({}); + + await expect(walletCache.addSpentNotes(newNotes)).rejects.toBeInstanceOf( + Error + ); + + const allNotes = sortNotes(await walletCache.getAllNotes()); + + expect( + sortNotes(cacheSpentNotes.concat(cacheUnspentNotes)) + ).toStrictEqual(allNotes); + }); + + it("should expose a method to add new notes to the unspent list", async () => { + /* + * We just pick some notes to add from the spent list for the test, + * as we just need to see that they are added. + * Notes can't go from spent to unspent anyway. + */ + const unspentNotesToAdd = cacheSpentNotes.map(setKey("psk", psk)); + + const unspentNoteDuplicate = cacheUnspentNotes.find(hasTestPsk); + + if (!unspentNoteDuplicate) { + throw new Error( + "No suitable unspent note found to setup the duplicate test" + ); + } + + /* As before we pick also a existing unspent note to verify + * that duplicates aren't being added. + */ + const newNotes = unspentNotesToAdd.concat(newNote, unspentNoteDuplicate); + const expectedUnspentNotes = cacheUnspentNotes.concat( + newNote, + unspentNotesToAdd + ); + + await walletCache.addUnspentNotes(newNotes); + + await expect( + walletCache.getUnspentNotes().then(sortNotes) + ).resolves.toStrictEqual(sortNotes(expectedUnspentNotes)); + }); + + it("should leave the unspent notes as they were if an error occurs during insertion", async () => { + // @ts-expect-error + const newNotes = cacheSpentNotes.concat({}); + + await expect(walletCache.addSpentNotes(newNotes)).rejects.toBeInstanceOf( + Error + ); + + expect(sortNotes(cacheUnspentNotes)).toStrictEqual( + sortNotes(await walletCache.getUnspentNotes()) + ); + }); + }); +}); diff --git a/web-wallet/src/lib/wallet-cache/index.js b/web-wallet/src/lib/wallet-cache/index.js new file mode 100644 index 0000000000..053e6d28d7 --- /dev/null +++ b/web-wallet/src/lib/wallet-cache/index.js @@ -0,0 +1,146 @@ +import { Dexie } from "dexie"; +import { getKey, head, pluckFrom, uniquesBy } from "lamb"; + +const uniquesById = uniquesBy(getKey("id")); + +class WalletCache { + /** @type {Dexie} */ + #db; + + /** + * @template {"history" | "spentNotes" | "unspentNotes"} TName + * @param {TName} tableName + * @param {string} [psk] + * @returns {Promise} + */ + async #getEntriesFrom(tableName, psk) { + await this.#db.open(); + + const table = this.#db.table(tableName); + const data = + /** @type {import("dexie").PromiseExtended} */ ( + (psk ? table.where("psk").equals(psk) : table).toArray() + ); + + return data.finally(() => this.#db.close()); + } + + constructor() { + const db = new Dexie("@dusk-network/wallet-cache"); + + db.version(1).stores({ + history: "psk", + spentNotes: "nullifier,&pos,psk", + unspentNotes: "nullifier,&pos,psk", + }); + + this.#db = db; + } + + /** + * @param {WalletCacheNote[]} notes + * @returns {Promise} + */ + async addSpentNotes(notes) { + const keysToRemove = pluckFrom(notes, "nullifier"); + + await this.#db.open(); + + return this.#db + .transaction("rw", ["spentNotes", "unspentNotes"], async () => { + await Promise.all([ + this.#db.table("spentNotes").bulkPut(notes), + this.#db.table("unspentNotes").bulkDelete(keysToRemove), + ]); + }) + .finally(() => this.#db.close()); + } + + /** + * @param {WalletCacheNote[]} notes + * @returns {Promise} + */ + async addUnspentNotes(notes) { + await this.#db.open(); + + return this.#db + .transaction("rw", "unspentNotes", async () => { + await this.#db.table("unspentNotes").bulkPut(notes); + }) + .finally(() => this.#db.close()); + } + + /** @returns {Promise} */ + clear() { + return this.#db.delete({ disableAutoOpen: false }); + } + + /** + * @param {string} [psk] bs58 encoded public spend key to fetch the notes of + * @returns {Promise} + */ + getAllNotes(psk) { + return Promise.all([ + this.getUnspentNotes(psk), + this.getSpentNotes(psk), + ]).then(([unspent, spent]) => unspent.concat(spent)); + } + + /** + * @param {string} psk bs58 encoded public spend key to fetch the tx history of + * @return {Promise} + */ + async getHistoryEntry(psk) { + return this.#getEntriesFrom("history", psk).then(head); + } + + /** + * @param {string} [psk] bs58 encoded public spend key to fetch the spent notes of + * @returns {Promise} + */ + getSpentNotes(psk) { + return this.#getEntriesFrom("spentNotes", psk); + } + + /** + * @param {string} [psk] bs58 encoded public spend key to fetch the unspent notes of + * @returns {Promise} + */ + getUnspentNotes(psk) { + return this.#getEntriesFrom("unspentNotes", psk); + } + + /** + * @param {WalletCacheHistoryEntry} entry + * @returns {Promise} + */ + async setHistoryEntry(entry) { + await this.#db.open(); + + return this.#db + .transaction("rw", "history", async () => { + const { psk } = entry; + + /** + * Typescript here doesn't get the `undefined` case + * so we set the type explicitely. + * + * @type {WalletCacheHistoryEntry | undefined} + */ + const current = await this.#getEntriesFrom("history", psk).then(head); + + await this.#db.table("history").put({ + history: uniquesById( + current ? entry.history.concat(current.history) : entry.history + ), + lastBlockHeight: current + ? Math.max(current.lastBlockHeight, entry.lastBlockHeight) + : entry.lastBlockHeight, + psk, + }); + }) + .finally(() => this.#db.close()); + } +} + +export default new WalletCache(); diff --git a/web-wallet/src/lib/wallet-cache/wallet-cache.d.ts b/web-wallet/src/lib/wallet-cache/wallet-cache.d.ts new file mode 100644 index 0000000000..9e31427f7d --- /dev/null +++ b/web-wallet/src/lib/wallet-cache/wallet-cache.d.ts @@ -0,0 +1,13 @@ +type WalletCacheNote = { + block_height: number; + note: number[]; + nullifier: number[]; + pos: number; + psk: string; +}; + +type WalletCacheHistoryEntry = { + history: Transaction[]; + lastBlockHeight: number; + psk: string; +}; diff --git a/web-wallet/vite-setup.js b/web-wallet/vite-setup.js index 30bb82df0d..95b7d95719 100644 --- a/web-wallet/vite-setup.js +++ b/web-wallet/vite-setup.js @@ -10,6 +10,9 @@ import crypto from "node:crypto"; import "jsdom-worker"; import "vitest-canvas-mock"; +// adds in-memory replacement for IndexedDB +import "fake-indexeddb/auto"; + import { IntersectionObserver } from "./src/lib/dusk/mocks"; import Wallet from "./__mocks__/Wallet.js";