mirror of
https://github.com/alexgo-io/stacks-blockchain-api.git
synced 2026-01-12 08:34:40 +08:00
feat: update to latest TenureChange tx payload (#1767)
This commit is contained in:
@@ -12,8 +12,20 @@
|
||||
"tenure_change_payload": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["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", "signature", "signers"],
|
||||
"properties": {
|
||||
"tenure_consensus_hash": {
|
||||
"type": "string",
|
||||
"description": "Consensus hash of this tenure. Corresponds to the sortition in which the miner of this block was chosen."
|
||||
},
|
||||
"prev_tenure_consensus_hash": {
|
||||
"type": "string",
|
||||
"description": "Consensus hash of the previous tenure. Corresponds to the sortition of the previous winning block-commit."
|
||||
},
|
||||
"burn_view_consensus_hash": {
|
||||
"type": "string",
|
||||
"description": "Current consensus hash on the underlying burnchain. Corresponds to the last-seen sortition."
|
||||
},
|
||||
"previous_tenure_end": {
|
||||
"type": "string",
|
||||
"description": "(Hex string) Stacks Block hash"
|
||||
@@ -24,7 +36,7 @@
|
||||
},
|
||||
"cause": {
|
||||
"type": "string",
|
||||
"enum": ["block_found", "no_block_found", "null_miner"],
|
||||
"enum": ["block_found", "extended"],
|
||||
"description": "Cause of change in mining tenure. Depending on cause, tenure can be ended or extended."
|
||||
},
|
||||
"pubkey_hash": {
|
||||
|
||||
14
docs/generated.d.ts
vendored
14
docs/generated.d.ts
vendored
@@ -1132,6 +1132,18 @@ export interface CoinbaseTransactionMetadata {
|
||||
export interface TenureChangeTransactionMetadata {
|
||||
tx_type: "tenure_change";
|
||||
tenure_change_payload?: {
|
||||
/**
|
||||
* Consensus hash of this tenure. Corresponds to the sortition in which the miner of this block was chosen.
|
||||
*/
|
||||
tenure_consensus_hash: string;
|
||||
/**
|
||||
* Consensus hash of the previous tenure. Corresponds to the sortition of the previous winning block-commit.
|
||||
*/
|
||||
prev_tenure_consensus_hash: string;
|
||||
/**
|
||||
* Current consensus hash on the underlying burnchain. Corresponds to the last-seen sortition.
|
||||
*/
|
||||
burn_view_consensus_hash: string;
|
||||
/**
|
||||
* (Hex string) Stacks Block hash
|
||||
*/
|
||||
@@ -1143,7 +1155,7 @@ export interface TenureChangeTransactionMetadata {
|
||||
/**
|
||||
* Cause of change in mining tenure. Depending on cause, tenure can be ended or extended.
|
||||
*/
|
||||
cause: "block_found" | "no_block_found" | "null_miner";
|
||||
cause: "block_found" | "extended";
|
||||
/**
|
||||
* (Hex string) The ECDSA public key hash of the current tenure.
|
||||
*/
|
||||
|
||||
@@ -13,6 +13,9 @@ exports.up = pgm => {
|
||||
coinbase_vrf_proof: 'bytea',
|
||||
|
||||
// `tenure-change` tx types
|
||||
tenure_change_tenure_consensus_hash: 'bytea',
|
||||
tenure_change_prev_tenure_consensus_hash: 'bytea',
|
||||
tenure_change_burn_view_consensus_hash: 'bytea',
|
||||
tenure_change_previous_tenure_end: 'bytea',
|
||||
tenure_change_previous_tenure_blocks: 'integer',
|
||||
tenure_change_cause: 'smallint',
|
||||
@@ -26,6 +29,9 @@ exports.up = pgm => {
|
||||
coinbase_vrf_proof: 'bytea',
|
||||
|
||||
// `tenure-change` tx types
|
||||
tenure_change_tenure_consensus_hash: 'bytea',
|
||||
tenure_change_prev_tenure_consensus_hash: 'bytea',
|
||||
tenure_change_burn_view_consensus_hash: 'bytea',
|
||||
tenure_change_previous_tenure_end: 'bytea',
|
||||
tenure_change_previous_tenure_blocks: 'integer',
|
||||
tenure_change_cause: 'smallint',
|
||||
@@ -35,7 +41,7 @@ exports.up = pgm => {
|
||||
});
|
||||
|
||||
pgm.addConstraint('txs', 'valid_tenure-change', `CHECK (type_id != 7 OR (
|
||||
NOT (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
|
||||
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.addConstraint('txs', 'valid_nakamoto-coinbase', `CHECK (type_id != 8 OR (
|
||||
@@ -43,7 +49,7 @@ exports.up = pgm => {
|
||||
))`);
|
||||
|
||||
pgm.addConstraint('mempool_txs', 'valid_tenure-change', `CHECK (type_id != 7 OR (
|
||||
NOT (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
|
||||
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.addConstraint('mempool_txs', 'valid_nakamoto-coinbase', `CHECK (type_id != 8 OR (
|
||||
|
||||
8
package-lock.json
generated
8
package-lock.json
generated
@@ -62,7 +62,7 @@
|
||||
"socket.io": "4.6.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"split2": "3.2.2",
|
||||
"stacks-encoding-native-js": "1.1.0-beta.3",
|
||||
"stacks-encoding-native-js": "1.1.0-beta.4",
|
||||
"strict-event-emitter-types": "2.0.0",
|
||||
"tiny-secp256k1": "2.2.1",
|
||||
"ts-unused-exports": "7.0.3",
|
||||
@@ -12825,9 +12825,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stacks-encoding-native-js": {
|
||||
"version": "1.1.0-beta.3",
|
||||
"resolved": "https://registry.npmjs.org/stacks-encoding-native-js/-/stacks-encoding-native-js-1.1.0-beta.3.tgz",
|
||||
"integrity": "sha512-A9Fh/hAs0CK8XTv/F5fyLAcoH2ONTPuHoQO19qfwgvpgJcbsdVKrrdaf/N5604YWilA1SK80bXFV7va5+aBiFw==",
|
||||
"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==",
|
||||
"dependencies": {
|
||||
"@types/node": "^16.11.26",
|
||||
"detect-libc": "^2.0.1"
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
"socket.io": "4.6.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"split2": "3.2.2",
|
||||
"stacks-encoding-native-js": "1.1.0-beta.3",
|
||||
"stacks-encoding-native-js": "1.1.0-beta.4",
|
||||
"strict-event-emitter-types": "2.0.0",
|
||||
"tiny-secp256k1": "2.2.1",
|
||||
"ts-unused-exports": "7.0.3",
|
||||
|
||||
@@ -121,9 +121,7 @@ function getTxTenureChangeCauseString(cause: number) {
|
||||
case 0:
|
||||
return 'block_found';
|
||||
case 1:
|
||||
return 'no_block_found';
|
||||
case 2:
|
||||
return 'null_miner';
|
||||
return 'extended';
|
||||
default:
|
||||
throw new Error(`Unexpected tenure change cause value ${cause}`);
|
||||
}
|
||||
@@ -968,6 +966,18 @@ function parseDbTxTypeMetadata(dbTx: DbTx | DbMempoolTx): TransactionMetadata {
|
||||
const metadata: TenureChangeTransactionMetadata = {
|
||||
tx_type: 'tenure_change',
|
||||
tenure_change_payload: {
|
||||
tenure_consensus_hash: unwrapOptional(
|
||||
dbTx.tenure_change_tenure_consensus_hash,
|
||||
() => 'Unexpected nullish tenure_change_tenure_consensus_hash'
|
||||
),
|
||||
prev_tenure_consensus_hash: unwrapOptional(
|
||||
dbTx.tenure_change_prev_tenure_consensus_hash,
|
||||
() => 'Unexpected nullish tenure_change_prev_tenure_consensus_hash'
|
||||
),
|
||||
burn_view_consensus_hash: unwrapOptional(
|
||||
dbTx.tenure_change_burn_view_consensus_hash,
|
||||
() => 'Unexpected nullish tenure_change_burn_view_consensus_hash'
|
||||
),
|
||||
previous_tenure_end: unwrapOptional(
|
||||
dbTx.tenure_change_previous_tenure_end,
|
||||
() => 'Unexpected nullish tenure_change_previous_tenure_end'
|
||||
|
||||
@@ -150,6 +150,9 @@ export interface BaseTx {
|
||||
abi?: string;
|
||||
|
||||
/** Only valid for `tenure-change` tx types. */
|
||||
tenure_change_tenure_consensus_hash?: string;
|
||||
tenure_change_prev_tenure_consensus_hash?: string;
|
||||
tenure_change_burn_view_consensus_hash?: string;
|
||||
tenure_change_previous_tenure_end?: string;
|
||||
tenure_change_previous_tenure_blocks?: number;
|
||||
tenure_change_cause?: number;
|
||||
@@ -868,6 +871,9 @@ export interface MempoolTxQueryResult {
|
||||
coinbase_vrf_proof?: string;
|
||||
|
||||
// `tenure-change` tx types
|
||||
tenure_change_tenure_consensus_hash?: string;
|
||||
tenure_change_prev_tenure_consensus_hash?: string;
|
||||
tenure_change_burn_view_consensus_hash?: string;
|
||||
tenure_change_previous_tenure_end?: string;
|
||||
tenure_change_previous_tenure_blocks?: number;
|
||||
tenure_change_cause?: number;
|
||||
@@ -939,6 +945,9 @@ export interface TxQueryResult {
|
||||
coinbase_vrf_proof?: string;
|
||||
|
||||
// `tenure-change` tx types
|
||||
tenure_change_tenure_consensus_hash?: string;
|
||||
tenure_change_prev_tenure_consensus_hash?: string;
|
||||
tenure_change_burn_view_consensus_hash?: string;
|
||||
tenure_change_previous_tenure_end?: string;
|
||||
tenure_change_previous_tenure_blocks?: number;
|
||||
tenure_change_cause?: number;
|
||||
@@ -1071,6 +1080,9 @@ export interface TxInsertValues {
|
||||
coinbase_payload: PgBytea | null;
|
||||
coinbase_alt_recipient: string | null;
|
||||
coinbase_vrf_proof: string | null;
|
||||
tenure_change_tenure_consensus_hash: string | null;
|
||||
tenure_change_prev_tenure_consensus_hash: string | null;
|
||||
tenure_change_burn_view_consensus_hash: string | null;
|
||||
tenure_change_previous_tenure_end: string | null;
|
||||
tenure_change_previous_tenure_blocks: number | null;
|
||||
tenure_change_cause: number | null;
|
||||
@@ -1117,6 +1129,9 @@ export interface MempoolTxInsertValues {
|
||||
coinbase_payload: PgBytea | null;
|
||||
coinbase_alt_recipient: string | null;
|
||||
coinbase_vrf_proof: string | null;
|
||||
tenure_change_tenure_consensus_hash: string | null;
|
||||
tenure_change_prev_tenure_consensus_hash: string | null;
|
||||
tenure_change_burn_view_consensus_hash: string | null;
|
||||
tenure_change_previous_tenure_end: string | null;
|
||||
tenure_change_previous_tenure_blocks: number | null;
|
||||
tenure_change_cause: number | null;
|
||||
|
||||
@@ -104,6 +104,9 @@ export const TX_COLUMNS = [
|
||||
'coinbase_payload',
|
||||
'coinbase_alt_recipient',
|
||||
'coinbase_vrf_proof',
|
||||
'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',
|
||||
@@ -149,6 +152,9 @@ export const MEMPOOL_TX_COLUMNS = [
|
||||
'coinbase_payload',
|
||||
'coinbase_alt_recipient',
|
||||
'coinbase_vrf_proof',
|
||||
'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',
|
||||
@@ -391,6 +397,10 @@ function parseTxTypeSpecificQueryResult(
|
||||
}
|
||||
target.coinbase_vrf_proof = result.coinbase_vrf_proof;
|
||||
} else if (target.type_id === DbTxTypeId.TenureChange) {
|
||||
target.tenure_change_tenure_consensus_hash = result.tenure_change_tenure_consensus_hash;
|
||||
target.tenure_change_prev_tenure_consensus_hash =
|
||||
result.tenure_change_prev_tenure_consensus_hash;
|
||||
target.tenure_change_burn_view_consensus_hash = result.tenure_change_burn_view_consensus_hash;
|
||||
target.tenure_change_previous_tenure_end = result.tenure_change_previous_tenure_end;
|
||||
target.tenure_change_previous_tenure_blocks = result.tenure_change_previous_tenure_blocks;
|
||||
target.tenure_change_cause = result.tenure_change_cause;
|
||||
@@ -1047,6 +1057,9 @@ function extractTransactionPayload(txData: DecodedTxResult, dbTx: DbTx | DbMempo
|
||||
break;
|
||||
}
|
||||
case TxPayloadTypeID.TenureChange: {
|
||||
dbTx.tenure_change_tenure_consensus_hash = txData.payload.tenure_consensus_hash;
|
||||
dbTx.tenure_change_prev_tenure_consensus_hash = txData.payload.prev_tenure_consensus_hash;
|
||||
dbTx.tenure_change_burn_view_consensus_hash = txData.payload.burn_view_consensus_hash;
|
||||
dbTx.tenure_change_previous_tenure_end = txData.payload.previous_tenure_end;
|
||||
dbTx.tenure_change_previous_tenure_blocks = txData.payload.previous_tenure_blocks;
|
||||
dbTx.tenure_change_cause = txData.payload.cause;
|
||||
|
||||
@@ -1617,6 +1617,9 @@ export class PgWriteStore extends PgStore {
|
||||
coinbase_payload: tx.coinbase_payload ?? null,
|
||||
coinbase_alt_recipient: tx.coinbase_alt_recipient ?? null,
|
||||
coinbase_vrf_proof: tx.coinbase_vrf_proof ?? null,
|
||||
tenure_change_tenure_consensus_hash: tx.tenure_change_tenure_consensus_hash ?? null,
|
||||
tenure_change_prev_tenure_consensus_hash: tx.tenure_change_prev_tenure_consensus_hash ?? null,
|
||||
tenure_change_burn_view_consensus_hash: tx.tenure_change_burn_view_consensus_hash ?? null,
|
||||
tenure_change_previous_tenure_end: tx.tenure_change_previous_tenure_end ?? null,
|
||||
tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null,
|
||||
tenure_change_cause: tx.tenure_change_cause ?? null,
|
||||
@@ -1674,6 +1677,9 @@ export class PgWriteStore extends PgStore {
|
||||
coinbase_payload: tx.coinbase_payload ?? null,
|
||||
coinbase_alt_recipient: tx.coinbase_alt_recipient ?? null,
|
||||
coinbase_vrf_proof: tx.coinbase_vrf_proof ?? null,
|
||||
tenure_change_tenure_consensus_hash: tx.tenure_change_tenure_consensus_hash ?? null,
|
||||
tenure_change_prev_tenure_consensus_hash: tx.tenure_change_prev_tenure_consensus_hash ?? null,
|
||||
tenure_change_burn_view_consensus_hash: tx.tenure_change_burn_view_consensus_hash ?? null,
|
||||
tenure_change_previous_tenure_end: tx.tenure_change_previous_tenure_end ?? null,
|
||||
tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null,
|
||||
tenure_change_cause: tx.tenure_change_cause ?? null,
|
||||
@@ -3009,6 +3015,9 @@ export class PgWriteStore extends PgStore {
|
||||
coinbase_payload: tx.coinbase_payload ?? null,
|
||||
coinbase_alt_recipient: tx.coinbase_alt_recipient ?? null,
|
||||
coinbase_vrf_proof: tx.coinbase_vrf_proof ?? null,
|
||||
tenure_change_tenure_consensus_hash: tx.tenure_change_tenure_consensus_hash ?? null,
|
||||
tenure_change_prev_tenure_consensus_hash: tx.tenure_change_prev_tenure_consensus_hash ?? null,
|
||||
tenure_change_burn_view_consensus_hash: tx.tenure_change_burn_view_consensus_hash ?? null,
|
||||
tenure_change_previous_tenure_end: tx.tenure_change_previous_tenure_end ?? null,
|
||||
tenure_change_previous_tenure_blocks: tx.tenure_change_previous_tenure_blocks ?? null,
|
||||
tenure_change_cause: tx.tenure_change_cause ?? null,
|
||||
|
||||
Reference in New Issue
Block a user