import BigNumber from 'bignumber.js'; import { Transaction } from './transaction'; import { CID } from 'multiformats/cid'; import { SKDB } from '../lib/ipfs/ipfs.interface'; export interface createBlockOpt { transactions: Transaction[]; } export interface BlockHeaderData { parent: string; stateRoot: string; transactionsRoot: string; receiptsRoot: string; logsBloom: Uint8Array; difficulty: BigNumber; number: BigNumber; cuLimit: BigNumber; cuUsed: BigNumber; ts: number; slice: [number, number]; extraData?: { [key: string]: unknown; }; body: string; } export interface BlockBodyData { transactions: Transaction['hash'][]; } export declare class Block { constructor(header: Omit); hash: string; header: BlockHeaderData; body?: BlockBodyData; /** * 创建一个新的块 */ /** * 从已有cid,读取一个区块,只包含块头,但不解析body */ static fromCidOnlyHeader: (cid: string, db: SKDB) => Promise>; /** * 从已有cid,读取一个区块,包含块头、body */ static fromCid: (cid: string, db: SKDB) => Promise; genHash: (db: SKDB) => Promise; /** * 将区块数据保存,落文件 */ commit: (db: SKDB) => Promise; }