@atomiqlabs/chain-starknet
Version:
Starknet specific base implementation
94 lines (93 loc) • 2.91 kB
TypeScript
import { BtcStoredHeader } from "@atomiqlabs/base";
import { StarknetBtcHeader, StarknetBtcHeaderType } from "./StarknetBtcHeader";
import { Buffer } from "buffer";
import { BigNumberish, Uint256 } from "starknet";
export type StarknetBtcStoredHeaderType = {
blockheader: StarknetBtcHeader | StarknetBtcHeaderType;
block_hash: BigNumberish[];
chain_work: BigNumberish | Uint256;
block_height: BigNumberish;
last_diff_adjustment: BigNumberish;
prev_block_timestamps: BigNumberish[];
};
/**
* Representing a bitcoin blockheader struct which has already been saved and committed inside the
* Starknet BTC relay smart contract
*
* @category BTC Relay
*/
export declare class StarknetBtcStoredHeader implements BtcStoredHeader<StarknetBtcHeader> {
private readonly blockheader;
private readonly block_hash;
private readonly chain_work;
private readonly block_height;
private readonly last_diff_adjustment;
private readonly prev_block_timestamps;
/**
* Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
*
* @param obj Struct as returned by the starknet.js
*
* @internal
*/
constructor(obj: StarknetBtcStoredHeaderType);
/**
* @inheritDoc
*/
getBlockheight(): number;
/**
* @inheritDoc
*/
getChainWork(): Buffer;
/**
* @inheritDoc
*/
getHeader(): StarknetBtcHeader;
/**
* @inheritDoc
*/
getLastDiffAdjustment(): number;
/**
* @inheritDoc
*/
getPrevBlockTimestamps(): number[];
/**
* @inheritDoc
*/
getBlockHash(): Buffer;
/**
* Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending
* this block's timestamp to the end
*
* @private
*/
private computeNextBlockTimestamps;
/**
* Computes total chain work after a new header with "nbits" is added to the chain
*
* @param nbits
* @private
*/
private computeNextChainWork;
/**
* Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks
*
* @param headerTimestamp
* @private
*/
private computeNextLastDiffAdjustment;
/**
* @inheritDoc
*/
computeNext(header: StarknetBtcHeader): StarknetBtcStoredHeader;
/**
* Serializes the bitcoin stored blockheader struct to an array of felt252 of length 42
*/
serialize(): BigNumberish[];
/**
* Deserializes the store bitcoin blockheader from its felt252 array representation
*
* @param span felt252 array encoding the stored blockheader, has to be at least 42 felts long
*/
static fromSerializedFeltArray(span: BigNumberish[]): StarknetBtcStoredHeader;
}