From 8ec726b05531abb7787d035d21f7afc276574b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20C=C3=A1rdenas?= Date: Fri, 26 Jan 2024 06:15:59 -0600 Subject: [PATCH] fix: remove signer columns from tenure-change transactions (#1845) --- ...ction-7-tenure-change-metadata.schema.json | 10 +---- docs/generated.d.ts | 8 ---- ...6115578711_remove-tenure-change-signers.js | 37 +++++++++++++++++++ package-lock.json | 8 ++-- package.json | 2 +- src/api/controllers/db-controller.ts | 9 ----- src/datastore/common.ts | 10 ----- src/datastore/helpers.ts | 8 ---- src/datastore/pg-write-store.ts | 6 --- src/event-stream/reader.ts | 2 +- 10 files changed, 44 insertions(+), 56 deletions(-) create mode 100644 migrations/1706115578711_remove-tenure-change-signers.js diff --git a/docs/entities/transactions/transaction-7-tenure-change-metadata.schema.json b/docs/entities/transactions/transaction-7-tenure-change-metadata.schema.json index 7087a7915e..f6fe5ff833 100644 --- a/docs/entities/transactions/transaction-7-tenure-change-metadata.schema.json +++ b/docs/entities/transactions/transaction-7-tenure-change-metadata.schema.json @@ -12,7 +12,7 @@ "tenure_change_payload": { "type": "object", "additionalProperties": false, - "required": ["tenure_consensus_hash", "prev_tenure_consensus_hash", "burn_view_consensus_hash", "previous_tenure_end", "previous_tenure_blocks", "cause", "pubkey_hash", "signature", "signers"], + "required": ["tenure_consensus_hash", "prev_tenure_consensus_hash", "burn_view_consensus_hash", "previous_tenure_end", "previous_tenure_blocks", "cause", "pubkey_hash"], "properties": { "tenure_consensus_hash": { "type": "string", @@ -42,14 +42,6 @@ "pubkey_hash": { "type": "string", "description": "(Hex string) The ECDSA public key hash of the current tenure." - }, - "signature": { - "type": "string", - "description": "(Hex string) A Schnorr signature from the Stackers." - }, - "signers": { - "type": "string", - "description": "(Hex string) A bitmap of which Stackers signed." } } } diff --git a/docs/generated.d.ts b/docs/generated.d.ts index 081bdefc38..9d3aa0f796 100644 --- a/docs/generated.d.ts +++ b/docs/generated.d.ts @@ -1134,14 +1134,6 @@ export interface TenureChangeTransactionMetadata { * (Hex string) The ECDSA public key hash of the current tenure. */ pubkey_hash: string; - /** - * (Hex string) A Schnorr signature from the Stackers. - */ - signature: string; - /** - * (Hex string) A bitmap of which Stackers signed. - */ - signers: string; }; } /** diff --git a/migrations/1706115578711_remove-tenure-change-signers.js b/migrations/1706115578711_remove-tenure-change-signers.js new file mode 100644 index 0000000000..6ef7f28354 --- /dev/null +++ b/migrations/1706115578711_remove-tenure-change-signers.js @@ -0,0 +1,37 @@ +/* eslint-disable camelcase */ + +exports.shorthands = undefined; + +exports.up = pgm => { + pgm.dropConstraint('txs', 'valid_tenure-change'); + pgm.dropColumns('txs', ['tenure_change_signature', 'tenure_change_signers']); + pgm.addConstraint('txs', 'valid_tenure-change', `CHECK (type_id != 7 OR ( + NOT (tenure_change_tenure_consensus_hash, tenure_change_prev_tenure_consensus_hash, tenure_change_burn_view_consensus_hash, tenure_change_previous_tenure_end, tenure_change_previous_tenure_blocks, tenure_change_cause, tenure_change_pubkey_hash) IS NULL + ))`); + + pgm.dropConstraint('mempool_txs', 'valid_tenure-change'); + pgm.dropColumns('mempool_txs', ['tenure_change_signature', 'tenure_change_signers']); + pgm.addConstraint('mempool_txs', 'valid_tenure-change', `CHECK (type_id != 7 OR ( + NOT (tenure_change_tenure_consensus_hash, tenure_change_prev_tenure_consensus_hash, tenure_change_burn_view_consensus_hash, tenure_change_previous_tenure_end, tenure_change_previous_tenure_blocks, tenure_change_cause, tenure_change_pubkey_hash) IS NULL + ))`); +}; + +exports.down = pgm => { + pgm.dropConstraint('txs', 'valid_tenure-change'); + pgm.addColumns('txs', { + tenure_change_signature: 'bytea', + tenure_change_signers: 'bytea', + }); + pgm.addConstraint('txs', 'valid_tenure-change', `CHECK (type_id != 7 OR ( + NOT (tenure_change_tenure_consensus_hash, tenure_change_prev_tenure_consensus_hash, tenure_change_burn_view_consensus_hash, tenure_change_previous_tenure_end, tenure_change_previous_tenure_blocks, tenure_change_cause, tenure_change_pubkey_hash, tenure_change_signature, tenure_change_signers) IS NULL + ))`); + + pgm.dropConstraint('mempool_txs', 'valid_tenure-change'); + pgm.addColumns('mempool_txs', { + tenure_change_signature: 'bytea', + tenure_change_signers: 'bytea', + }); + pgm.addConstraint('mempool_txs', 'valid_tenure-change', `CHECK (type_id != 7 OR ( + NOT (tenure_change_tenure_consensus_hash, tenure_change_prev_tenure_consensus_hash, tenure_change_burn_view_consensus_hash, tenure_change_previous_tenure_end, tenure_change_previous_tenure_blocks, tenure_change_cause, tenure_change_pubkey_hash, tenure_change_signature, tenure_change_signers) IS NULL + ))`); +}; diff --git a/package-lock.json b/package-lock.json index a99ea25b09..c52a21ab0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,7 +63,7 @@ "socket.io": "4.6.1", "source-map-support": "0.5.21", "split2": "3.2.2", - "stacks-encoding-native-js": "1.1.0-beta.4", + "stacks-encoding-native-js": "1.1.0-beta.5", "strict-event-emitter-types": "2.0.0", "tiny-secp256k1": "2.2.1", "ts-unused-exports": "7.0.3", @@ -12828,9 +12828,9 @@ "dev": true }, "node_modules/stacks-encoding-native-js": { - "version": "1.1.0-beta.4", - "resolved": "https://registry.npmjs.org/stacks-encoding-native-js/-/stacks-encoding-native-js-1.1.0-beta.4.tgz", - "integrity": "sha512-YpkLNhamcjn2TzPJ6OQAxqAK2XDFKXGGIBEBOAs5F0zfTDvY6ruL3zb6YjLAqtgtNMuaQZvIErGBXZTh0zgaOA==", + "version": "1.1.0-beta.5", + "resolved": "https://registry.npmjs.org/stacks-encoding-native-js/-/stacks-encoding-native-js-1.1.0-beta.5.tgz", + "integrity": "sha512-0q01OpgTTTix1YWHM2rE0KG81OyfESga3+EZWkI/8/XZjeFdModMiDLk8X/jzgpbNFpd2F3bBw3wVlhabki+RA==", "dependencies": { "@types/node": "^16.11.26", "detect-libc": "^2.0.1" diff --git a/package.json b/package.json index 2a31983303..cb757841bd 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "socket.io": "4.6.1", "source-map-support": "0.5.21", "split2": "3.2.2", - "stacks-encoding-native-js": "1.1.0-beta.4", + "stacks-encoding-native-js": "1.1.0-beta.5", "strict-event-emitter-types": "2.0.0", "tiny-secp256k1": "2.2.1", "ts-unused-exports": "7.0.3", diff --git a/src/api/controllers/db-controller.ts b/src/api/controllers/db-controller.ts index 34a2d7d834..78c65e6ff5 100644 --- a/src/api/controllers/db-controller.ts +++ b/src/api/controllers/db-controller.ts @@ -16,7 +16,6 @@ import { AbstractTransaction, BaseTransaction, Block, - BurnBlock, CoinbaseTransactionMetadata, ContractCallTransactionMetadata, MempoolTransaction, @@ -972,14 +971,6 @@ function parseDbTxTypeMetadata(dbTx: DbTx | DbMempoolTx): TransactionMetadata { dbTx.tenure_change_pubkey_hash, () => 'Unexpected nullish tenure_change_pubkey_hash' ), - signature: unwrapOptional( - dbTx.tenure_change_signature, - () => 'Unexpected nullish tenure_change_signature' - ), - signers: unwrapOptional( - dbTx.tenure_change_signers, - () => 'Unexpected nullish tenure_change_signers' - ), }, }; return metadata; diff --git a/src/datastore/common.ts b/src/datastore/common.ts index 19cae1d747..ab381517e7 100644 --- a/src/datastore/common.ts +++ b/src/datastore/common.ts @@ -160,8 +160,6 @@ export interface BaseTx { tenure_change_previous_tenure_blocks?: number; tenure_change_cause?: number; tenure_change_pubkey_hash?: string; - tenure_change_signature?: string; - tenure_change_signers?: string; } export interface DbTx extends BaseTx { @@ -881,8 +879,6 @@ export interface MempoolTxQueryResult { tenure_change_previous_tenure_blocks?: number; tenure_change_cause?: number; tenure_change_pubkey_hash: string; - tenure_change_signature?: string; - tenure_change_signers?: string; // sending abi in case tx is contract call abi: unknown | null; @@ -955,8 +951,6 @@ export interface TxQueryResult { tenure_change_previous_tenure_blocks?: number; tenure_change_cause?: number; tenure_change_pubkey_hash: string; - tenure_change_signature?: string; - tenure_change_signers?: string; // events count event_count: number; @@ -1084,8 +1078,6 @@ export interface TxInsertValues { tenure_change_previous_tenure_blocks: number | null; tenure_change_cause: number | null; tenure_change_pubkey_hash: string | null; - tenure_change_signature: string | null; - tenure_change_signers: string | null; raw_result: PgBytea; event_count: number; execution_cost_read_count: number; @@ -1133,8 +1125,6 @@ export interface MempoolTxInsertValues { tenure_change_previous_tenure_blocks: number | null; tenure_change_cause: number | null; tenure_change_pubkey_hash: string | null; - tenure_change_signature: string | null; - tenure_change_signers: string | null; } export interface BlockInsertValues { diff --git a/src/datastore/helpers.ts b/src/datastore/helpers.ts index bcc488afa6..486b87f139 100644 --- a/src/datastore/helpers.ts +++ b/src/datastore/helpers.ts @@ -114,8 +114,6 @@ export const TX_COLUMNS = [ 'tenure_change_previous_tenure_blocks', 'tenure_change_cause', 'tenure_change_pubkey_hash', - 'tenure_change_signature', - 'tenure_change_signers', 'raw_result', 'event_count', 'execution_cost_read_count', @@ -162,8 +160,6 @@ export const MEMPOOL_TX_COLUMNS = [ 'tenure_change_previous_tenure_blocks', 'tenure_change_cause', 'tenure_change_pubkey_hash', - 'tenure_change_signature', - 'tenure_change_signers', ]; export const BLOCK_COLUMNS = [ @@ -409,8 +405,6 @@ function parseTxTypeSpecificQueryResult( target.tenure_change_previous_tenure_blocks = result.tenure_change_previous_tenure_blocks; target.tenure_change_cause = result.tenure_change_cause; target.tenure_change_pubkey_hash = result.tenure_change_pubkey_hash; - target.tenure_change_signature = result.tenure_change_signature; - target.tenure_change_signers = result.tenure_change_signers; } else { throw new Error(`Received unexpected tx type_id from db query: ${target.type_id}`); } @@ -1069,8 +1063,6 @@ function extractTransactionPayload(txData: DecodedTxResult, dbTx: DbTx | DbMempo dbTx.tenure_change_previous_tenure_blocks = txData.payload.previous_tenure_blocks; dbTx.tenure_change_cause = txData.payload.cause; dbTx.tenure_change_pubkey_hash = txData.payload.pubkey_hash; - dbTx.tenure_change_signature = txData.payload.signature; - dbTx.tenure_change_signers = txData.payload.signers; break; } default: diff --git a/src/datastore/pg-write-store.ts b/src/datastore/pg-write-store.ts index dbffe6b522..1b78e62cf8 100644 --- a/src/datastore/pg-write-store.ts +++ b/src/datastore/pg-write-store.ts @@ -1616,8 +1616,6 @@ export class PgWriteStore extends PgStore { tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null, tenure_change_cause: tx.tenure_change_cause ?? null, tenure_change_pubkey_hash: tx.tenure_change_pubkey_hash ?? null, - tenure_change_signature: tx.tenure_change_signature ?? null, - tenure_change_signers: tx.tenure_change_signers ?? null, raw_result: tx.raw_result, event_count: tx.event_count, execution_cost_read_count: tx.execution_cost_read_count, @@ -1684,8 +1682,6 @@ export class PgWriteStore extends PgStore { tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null, tenure_change_cause: tx.tenure_change_cause ?? null, tenure_change_pubkey_hash: tx.tenure_change_pubkey_hash ?? null, - tenure_change_signature: tx.tenure_change_signature ?? null, - tenure_change_signers: tx.tenure_change_signers ?? null, })); // Revive mempool txs that were previously dropped @@ -2996,8 +2992,6 @@ export class PgWriteStore extends PgStore { tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null, tenure_change_cause: tx.tenure_change_cause ?? null, tenure_change_pubkey_hash: tx.tenure_change_pubkey_hash ?? null, - tenure_change_signature: tx.tenure_change_signature ?? null, - tenure_change_signers: tx.tenure_change_signers ?? null, raw_result: tx.raw_result, event_count: tx.event_count, execution_cost_read_count: tx.execution_cost_read_count, diff --git a/src/event-stream/reader.ts b/src/event-stream/reader.ts index 7ebb922b3e..f0e2581725 100644 --- a/src/event-stream/reader.ts +++ b/src/event-stream/reader.ts @@ -823,7 +823,7 @@ export function parseMessageTransaction( } case TxPayloadTypeID.TenureChange: { logger.debug( - `Tenure change: cause=${payload.cause}, prev_tenure_blocks=${payload.previous_tenure_blocks}, prev_tenure_block=${payload.previous_tenure_end}, signers=${payload.signers},` + `Tenure change: cause=${payload.cause}, prev_tenure_blocks=${payload.previous_tenure_blocks}, prev_tenure_block=${payload.previous_tenure_end},` ); break; }