From 852e0bf1b721cc2c98001a68c50bef13555cfcd4 Mon Sep 17 00:00:00 2001 From: Rafael Cardenas Date: Wed, 3 Jan 2024 22:50:51 -0600 Subject: [PATCH 1/3] fix: new schema --- package-lock.json | 14 ++--- package.json | 2 +- src/pg/helpers.ts | 3 +- src/pg/types.ts | 1 + tests/brc20.test.ts | 3 + tests/cache.test.ts | 35 ++++++++--- tests/helpers.ts | 5 +- tests/inscriptions.test.ts | 116 ++++++++++++++++++------------------- tests/sats.test.ts | 6 +- tests/server.test.ts | 24 ++++---- tests/stats.test.ts | 2 +- tests/status.test.ts | 4 +- 12 files changed, 122 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index 60ed95e5..3c147abe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@fastify/swagger": "^8.3.1", "@fastify/type-provider-typebox": "^3.2.0", "@hirosystems/api-toolkit": "^1.3.1", - "@hirosystems/chainhook-client": "^1.4.2", + "@hirosystems/chainhook-client": "^1.5.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", "@semantic-release/git": "^10.0.1", @@ -1299,9 +1299,9 @@ } }, "node_modules/@hirosystems/chainhook-client": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@hirosystems/chainhook-client/-/chainhook-client-1.4.2.tgz", - "integrity": "sha512-cz92ikNHwWi/ypwnitk4anOvuL7KoHLKRSQidDYyM8Pnar0yinir3GZm4q7/QCoDij0PIMg50aE7KCCzLrEhjA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@hirosystems/chainhook-client/-/chainhook-client-1.5.0.tgz", + "integrity": "sha512-iAhY3848Y64wiNhNx9PpntlxXGjdVPaxX1JfoivRh5S73Vo2BBEWrwYrcpyJrlYM0PnRNOry7/OUHGN33xwO3Q==", "dependencies": { "@fastify/type-provider-typebox": "^3.2.0", "fastify": "^4.15.0", @@ -19743,9 +19743,9 @@ } }, "@hirosystems/chainhook-client": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@hirosystems/chainhook-client/-/chainhook-client-1.4.2.tgz", - "integrity": "sha512-cz92ikNHwWi/ypwnitk4anOvuL7KoHLKRSQidDYyM8Pnar0yinir3GZm4q7/QCoDij0PIMg50aE7KCCzLrEhjA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@hirosystems/chainhook-client/-/chainhook-client-1.5.0.tgz", + "integrity": "sha512-iAhY3848Y64wiNhNx9PpntlxXGjdVPaxX1JfoivRh5S73Vo2BBEWrwYrcpyJrlYM0PnRNOry7/OUHGN33xwO3Q==", "requires": { "@fastify/type-provider-typebox": "^3.2.0", "fastify": "^4.15.0", diff --git a/package.json b/package.json index e9abf85d..67adef79 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@fastify/swagger": "^8.3.1", "@fastify/type-provider-typebox": "^3.2.0", "@hirosystems/api-toolkit": "^1.3.1", - "@hirosystems/chainhook-client": "^1.4.2", + "@hirosystems/chainhook-client": "^1.5.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", "@semantic-release/git": "^10.0.1", diff --git a/src/pg/helpers.ts b/src/pg/helpers.ts index 6bd678fe..8704135b 100644 --- a/src/pg/helpers.ts +++ b/src/pg/helpers.ts @@ -100,7 +100,8 @@ function revealInsertFromOrdhookInscriptionRevealed(args: { mime_type: contentType.split(';')[0], content_type: contentType, content_length: args.reveal.content_length, - number: args.reveal.inscription_number, + number: args.reveal.inscription_number.jubilee, + classic_number: args.reveal.inscription_number.classic, content: removeNullBytes(args.reveal.content_bytes), fee: args.reveal.inscription_fee.toString(), curse_type: args.reveal.curse_type ? JSON.stringify(args.reveal.curse_type) : null, diff --git a/src/pg/types.ts b/src/pg/types.ts index c0e11ff4..a418cfa3 100644 --- a/src/pg/types.ts +++ b/src/pg/types.ts @@ -137,6 +137,7 @@ export const LOCATIONS_COLUMNS = [ export type DbInscriptionInsert = { genesis_id: string; number: number; + classic_number: number; mime_type: string; content_type: string; content_length: number; diff --git a/tests/brc20.test.ts b/tests/brc20.test.ts index 8f51852d..c07c59a8 100644 --- a/tests/brc20.test.ts +++ b/tests/brc20.test.ts @@ -89,6 +89,7 @@ describe('BRC-20', () => { const insert: DbInscriptionInsert = { genesis_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', number: 0, + classic_number: 0, mime_type: 'application/json', content_type: 'application/json', content_length: content.length, @@ -116,6 +117,7 @@ describe('BRC-20', () => { const insert: DbInscriptionInsert = { genesis_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', number: 0, + classic_number: 0, mime_type: 'foo/bar', content_type: 'foo/bar;x=1', content_length: content.length, @@ -144,6 +146,7 @@ describe('BRC-20', () => { const insert: DbInscriptionInsert = { genesis_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', number: 0, + classic_number: 0, mime_type: 'application/json', content_type: 'application/json', content_length: content.length, diff --git a/tests/cache.test.ts b/tests/cache.test.ts index c188683f..a8a78039 100644 --- a/tests/cache.test.ts +++ b/tests/cache.test.ts @@ -28,7 +28,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { + classic: 0, + jubilee: 0, + }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -160,7 +163,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain', content_length: 5, - inscription_number: 0, + inscription_number: { + classic: 0, + jubilee: 0, + }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -185,7 +191,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { + classic: 1, + jubilee: 1, + }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -257,7 +266,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain', content_length: 5, - inscription_number: 0, + inscription_number: { + classic: 0, + jubilee: 0, + }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -301,7 +313,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { + classic: 1, + jubilee: 1, + }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -337,7 +352,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain', content_length: 5, - inscription_number: 0, + inscription_number: { + classic: 0, + jubilee: 0, + }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -381,7 +399,10 @@ describe('ETag cache', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { + classic: 1, + jubilee: 1, + }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, diff --git a/tests/helpers.ts b/tests/helpers.ts index fe26f3e9..09cb1801 100644 --- a/tests/helpers.ts +++ b/tests/helpers.ts @@ -119,7 +119,10 @@ export function brc20Reveal(args: { content_bytes: `0x${content.toString('hex')}`, content_type: 'text/plain;charset=utf-8', content_length: content.length, - inscription_number: args.number, + inscription_number: { + classic: args.number, + jubilee: args.number, + }, inscription_fee: 2000, inscription_id: `${args.tx_id}i0`, inscription_output_value: 10000, diff --git a/tests/inscriptions.test.ts b/tests/inscriptions.test.ts index 4e0cc04c..e89a8b36 100644 --- a/tests/inscriptions.test.ts +++ b/tests/inscriptions.test.ts @@ -40,7 +40,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -72,7 +72,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -149,7 +149,7 @@ describe('/inscriptions', () => { content_bytes: `0x${Buffer.from('World').toString('hex')}`, content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -171,7 +171,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: 'f351d86c6e6cae3c64e297e7463095732f216875bcc1f3c03f950a492bb25421i0', inscription_output_value: 10000, @@ -209,7 +209,7 @@ describe('/inscriptions', () => { ).toString('hex')}`, content_type: 'image/png', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -289,7 +289,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -366,7 +366,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: -7, + inscription_number: { classic: -7, jubilee: -7 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -443,7 +443,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -588,7 +588,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 9000, @@ -693,7 +693,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: -7, + inscription_number: { classic: -7, jubilee: -7 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -840,7 +840,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1004,7 +1004,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1026,7 +1026,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '7ac73ecd01b9da4a7eab904655416dbfe8e03f193e091761b5a63ad0963570cdi0', inscription_output_value: 10000, @@ -1356,7 +1356,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1388,7 +1388,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1486,7 +1486,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1518,7 +1518,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1633,7 +1633,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1665,7 +1665,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1726,7 +1726,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1758,7 +1758,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1823,7 +1823,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1855,7 +1855,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -1916,7 +1916,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -1948,7 +1948,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2011,7 +2011,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 705, inscription_id: '25b372de3de0cb6fcc52c89a8bc3fb78eec596521ba20de16e53c1585be7c3fci0', inscription_output_value: 10000, @@ -2056,7 +2056,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2088,7 +2088,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2135,7 +2135,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2167,7 +2167,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2222,7 +2222,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2254,7 +2254,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2309,7 +2309,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2341,7 +2341,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2396,7 +2396,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2428,7 +2428,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2482,7 +2482,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2514,7 +2514,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2549,7 +2549,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2593,7 +2593,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2752,7 +2752,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2786,7 +2786,7 @@ describe('/inscriptions', () => { ).toString('hex')}`, content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2845,7 +2845,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2879,7 +2879,7 @@ describe('/inscriptions', () => { ).toString('hex')}`, content_type: 'image/png', content_length: 5, - inscription_number: -100, + inscription_number: { classic: -100, jubilee: -100 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -2938,7 +2938,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -2969,7 +2969,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -3038,7 +3038,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -3070,7 +3070,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -3102,7 +3102,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 2805, inscription_id: '567c7605439dfdc3a289d13fd2132237852f4a56e784b9364ba94499d5f9baf1i0', inscription_output_value: 10000, @@ -3159,7 +3159,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -3191,7 +3191,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -3223,7 +3223,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 2805, inscription_id: '567c7605439dfdc3a289d13fd2132237852f4a56e784b9364ba94499d5f9baf1i0', inscription_output_value: 10000, @@ -3280,7 +3280,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -3312,7 +3312,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -3344,7 +3344,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 2805, inscription_id: '567c7605439dfdc3a289d13fd2132237852f4a56e784b9364ba94499d5f9baf1i0', inscription_output_value: 10000, @@ -3401,7 +3401,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -3433,7 +3433,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -3465,7 +3465,7 @@ describe('/inscriptions', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 2805, inscription_id: '567c7605439dfdc3a289d13fd2132237852f4a56e784b9364ba94499d5f9baf1i0', inscription_output_value: 10000, diff --git a/tests/sats.test.ts b/tests/sats.test.ts index 4d422c76..81c95d58 100644 --- a/tests/sats.test.ts +++ b/tests/sats.test.ts @@ -49,7 +49,7 @@ describe('/sats', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -86,7 +86,7 @@ describe('/sats', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: -7, + inscription_number: { classic: -7, jubilee: -7 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -118,7 +118,7 @@ describe('/sats', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: -1, + inscription_number: { classic: -1, jubilee: -1 }, inscription_fee: 2805, inscription_id: 'b9cd9489fe30b81d007f753663d12766f1368721a87f4c69056c8215caa57993i0', inscription_output_value: 10000, diff --git a/tests/server.test.ts b/tests/server.test.ts index 9ac5dc6d..a8554cb0 100644 --- a/tests/server.test.ts +++ b/tests/server.test.ts @@ -37,7 +37,7 @@ describe('EventServer', () => { content_bytes: '0x303030303030303030303030', content_type: 'text/plain;charset=utf-8', content_length: 12, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 3425, inscription_output_value: 10000, inscription_id: '0268dd9743c862d80ab02cb1d0228036cfe172522850eb96be60cfee14b31fb8i0', @@ -155,7 +155,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -292,7 +292,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '6046f17804eb8396285567a20c09598ae1273b6f744b23700ba95593c380ce02i0', inscription_output_value: 10000, @@ -349,7 +349,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -380,7 +380,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 5, // Gap at 5 + inscription_number: { classic: 5, jubilee: 5 }, // Gap at 5 inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -422,7 +422,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -453,7 +453,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -475,7 +475,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 4, // Gap + inscription_number: { classic: 4, jubilee: 4 }, // Gap inscription_fee: 705, inscription_id: '6891d374a17ba85f6b5514f2f7edc301c1c860284dff5a5c6e88ab3a20fcd8a5o0', inscription_output_value: 10000, @@ -517,7 +517,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, @@ -548,7 +548,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 2, + inscription_number: { classic: 2, jubilee: 2 }, inscription_fee: 705, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -570,7 +570,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 1, + inscription_number: { classic: 1, jubilee: 1 }, inscription_fee: 705, inscription_id: '6891d374a17ba85f6b5514f2f7edc301c1c860284dff5a5c6e88ab3a20fcd8a5o0', inscription_output_value: 10000, @@ -606,7 +606,7 @@ describe('EventServer', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 705, inscription_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0', inscription_output_value: 10000, diff --git a/tests/stats.test.ts b/tests/stats.test.ts index f4850c17..c1716a3b 100644 --- a/tests/stats.test.ts +++ b/tests/stats.test.ts @@ -211,7 +211,7 @@ function testRevealApply(blockHeight: number, numbers: number[]) { content_bytes: '0x48656C6C6F', content_type: 'image/png', content_length: 5, - inscription_number: number, + inscription_number: { classic: number, jubilee: number }, inscription_fee: 2805, inscription_id: `${randomHex}i0`, inscription_output_value: 10000, diff --git a/tests/status.test.ts b/tests/status.test.ts index 18d5fcb0..52f61237 100644 --- a/tests/status.test.ts +++ b/tests/status.test.ts @@ -42,7 +42,7 @@ describe('Status', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: 0, + inscription_number: { classic: 0, jubilee: 0 }, inscription_fee: 2805, inscription_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0', inscription_output_value: 10000, @@ -68,7 +68,7 @@ describe('Status', () => { content_bytes: '0x48656C6C6F', content_type: 'text/plain;charset=utf-8', content_length: 5, - inscription_number: -2, + inscription_number: { classic: -2, jubilee: -2 }, inscription_fee: 2805, inscription_id: 'a98d7055a77fa0b96cc31e30bb8bacf777382d1b67f1b7eca6f2014e961591c8i0', inscription_output_value: 10000, From ec5ed8e1ae259f78180ba574a356f8528e7105f9 Mon Sep 17 00:00:00 2001 From: Rafael Cardenas Date: Wed, 3 Jan 2024 22:51:06 -0600 Subject: [PATCH 2/3] fix: new column --- migrations/1704341578275_jubilee-numbers.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 migrations/1704341578275_jubilee-numbers.ts diff --git a/migrations/1704341578275_jubilee-numbers.ts b/migrations/1704341578275_jubilee-numbers.ts new file mode 100644 index 00000000..c36b52d4 --- /dev/null +++ b/migrations/1704341578275_jubilee-numbers.ts @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { MigrationBuilder, ColumnDefinitions } from 'node-pg-migrate'; + +export const shorthands: ColumnDefinitions | undefined = undefined; + +export function up(pgm: MigrationBuilder): void { + pgm.addColumn('inscriptions', { + classic_number: { + type: 'bigint', + }, + }); + pgm.sql(`UPDATE inscriptions SET classic_number = number`); + pgm.alterColumn('inscriptions', 'classic_number', { notNull: true }); +} + +export function down(pgm: MigrationBuilder): void { + pgm.dropColumn('inscriptions', 'classic_number'); +} From 2e24a6acde49269c0bcef7e9da9333674ae616cc Mon Sep 17 00:00:00 2001 From: Rafael Cardenas Date: Wed, 3 Jan 2024 23:36:26 -0600 Subject: [PATCH 3/3] fix: ignore classic cursed --- src/pg/brc20/brc20-pg-store.ts | 7 ++++++- tests/brc20.test.ts | 37 ++++++++++++++++++++++++++++++++++ tests/helpers.ts | 3 ++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/pg/brc20/brc20-pg-store.ts b/src/pg/brc20/brc20-pg-store.ts index c2ba0969..96690704 100644 --- a/src/pg/brc20/brc20-pg-store.ts +++ b/src/pg/brc20/brc20-pg-store.ts @@ -46,7 +46,12 @@ export class Brc20PgStore extends BasePgStoreModule { const pointer = args.pointers[i]; if (parseInt(pointer.block_height) < BRC20_GENESIS_BLOCK) continue; if (reveal.inscription) { - if (reveal.location.transfer_type != DbLocationTransferType.transferred) continue; + if ( + reveal.inscription.classic_number < 0 || + reveal.inscription.number < 0 || + reveal.location.transfer_type != DbLocationTransferType.transferred + ) + continue; const brc20 = brc20FromInscriptionContent( hexToBuffer(reveal.inscription.content as string).toString('utf-8') ); diff --git a/tests/brc20.test.ts b/tests/brc20.test.ts index c07c59a8..2b3302fe 100644 --- a/tests/brc20.test.ts +++ b/tests/brc20.test.ts @@ -698,6 +698,43 @@ describe('BRC-20', () => { }, ]); }); + + test('ignores deploy from classic cursed inscription', async () => { + await db.updateInscriptions( + new TestChainhookPayloadBuilder() + .apply() + .block({ + height: BRC20_GENESIS_BLOCK, + hash: '00000000000000000002a90330a99f67e3f01eb2ce070b45930581e82fb7a91d', + }) + .transaction({ + hash: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc', + }) + .inscriptionRevealed( + brc20Reveal({ + json: { + p: 'brc-20', + op: 'deploy', + tick: 'PEPE', + max: '21000000', + }, + number: 0, + classic_number: -1, + tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc', + address: 'bc1p3cyx5e2hgh53w7kpxcvm8s4kkega9gv5wfw7c4qxsvxl0u8x834qf0u2td', + }) + ) + .build() + ); + const response1 = await fastify.inject({ + method: 'GET', + url: `/ordinals/brc-20/tokens?ticker=PEPE`, + }); + expect(response1.statusCode).toBe(200); + const responseJson1 = response1.json(); + expect(responseJson1.total).toBe(0); + expect(responseJson1.results).toHaveLength(0); + }); }); describe('mint', () => { diff --git a/tests/helpers.ts b/tests/helpers.ts index 09cb1801..569b6ed6 100644 --- a/tests/helpers.ts +++ b/tests/helpers.ts @@ -111,6 +111,7 @@ export function rollBack(payload: Payload) { export function brc20Reveal(args: { json: Brc20; number: number; + classic_number?: number; address: string; tx_id: string; }): BitcoinInscriptionRevealed { @@ -120,8 +121,8 @@ export function brc20Reveal(args: { content_type: 'text/plain;charset=utf-8', content_length: content.length, inscription_number: { - classic: args.number, jubilee: args.number, + classic: args.classic_number ?? args.number, }, inscription_fee: 2000, inscription_id: `${args.tx_id}i0`,