Skip to content

@acala-network/chopsticks-core


@acala-network/chopsticks-core / Blockchain

Class: Blockchain ​

Defined in: packages/core/src/blockchain/index.ts:85

Local blockchain which provides access to blocks, txpool and methods to manipulate the chain such as build blocks, submit extrinsics, xcm and more!

Example ​

ts
const chain = new Blockchain({
 api,
 buildBlockMode: BuildBlockMode.Manual,
 inherentProviders,
 header: {
   hash: blockHash,
   number: Number(header.number),
 },
 mockSignatureHost: true,
 allowUnresolvedImports: true,
 registeredTypes: {},
})
// build a block
chain.newBlock()

Constructors ​

Constructor ​

new Blockchain(options): Blockchain

Defined in: packages/core/src/blockchain/index.ts:138

Parameters ​

options ​

Options

Options for instantiating the blockchain

Returns ​

Blockchain

Properties ​

allowUnresolvedImports ​

readonly allowUnresolvedImports: boolean

Defined in: packages/core/src/blockchain/index.ts:93

Allow wasm unresolved imports.


api ​

readonly api: Api

Defined in: packages/core/src/blockchain/index.ts:87

API instance, for getting on-chain data.


db ​

readonly db: Database | undefined

Defined in: packages/core/src/blockchain/index.ts:89

Datasource for caching storage and blocks data.


headState ​

readonly headState: HeadState

Defined in: packages/core/src/blockchain/index.ts:107

For subscribing and managing the head state.


mockSignatureHost ​

readonly mockSignatureHost: boolean

Defined in: packages/core/src/blockchain/index.ts:91

Enable mock signature. Any signature starts with 0xdeadbeef and filled by 0xcd is considered valid


offchainWorker ​

readonly offchainWorker: OffchainWorker | undefined

Defined in: packages/core/src/blockchain/index.ts:109


processQueuedMessages ​

readonly processQueuedMessages: boolean = true

Defined in: packages/core/src/blockchain/index.ts:111


registeredTypes ​

readonly registeredTypes: RegisteredTypes

Defined in: packages/core/src/blockchain/index.ts:96

Polkadot.js custom types registration.


saveBlocks ​

readonly saveBlocks: boolean

Defined in: packages/core/src/blockchain/index.ts:112

Accessors ​

Get Signature ​

get head(): Block

Defined in: packages/core/src/blockchain/index.ts:189

Returns ​

Block


runtimeLogLevel ​

Get Signature ​

get runtimeLogLevel(): number

Defined in: packages/core/src/blockchain/index.ts:197

Returns ​

number

Set Signature ​

set runtimeLogLevel(level): void

Defined in: packages/core/src/blockchain/index.ts:201

Parameters ​
level ​

number

Returns ​

void


txPool ​

Get Signature ​

get txPool(): TxPool

Defined in: packages/core/src/blockchain/index.ts:193

Returns ​

TxPool

Methods ​

blocksInMemory() ​

blocksInMemory(): Block[]

Defined in: packages/core/src/blockchain/index.ts:322

Get all blocks in memory.

Returns ​

Block[]


buildRegistry() ​

buildRegistry(metadata, version): Promise<TypeRegistry>

Defined in: packages/core/src/blockchain/index.ts:206

Parameters ​

metadata ​

`0x${string}`

version ​

RuntimeVersion

Returns ​

Promise<TypeRegistry>


close() ​

close(): Promise<void>

Defined in: packages/core/src/blockchain/index.ts:573

Close the db and disconnect api.

Returns ​

Promise<void>


dryRunDmp() ​

dryRunDmp(dmp, at?): Promise<[`0x${string}`, `0x${string}` | null][]>

Defined in: packages/core/src/blockchain/index.ts:507

Dry run dmp messages in block at. Return the storage diff.

Parameters ​

dmp ​

DownwardMessage[]

at? ​

`0x${string}`

Returns ​

Promise<[`0x${string}`, `0x${string}` | null][]>


dryRunExtrinsic() ​

dryRunExtrinsic(extrinsic, at?): Promise<{ outcome: ApplyExtrinsicResult; storageDiff: [`0x${string}`, `0x${string}` | null][]; }>

Defined in: packages/core/src/blockchain/index.ts:437

Dry run extrinsic in block at.

Parameters ​

extrinsic ​

`0x${string}` | { address: string; call: `0x${string}`; }

at? ​

`0x${string}`

Returns ​

Promise<{ outcome: ApplyExtrinsicResult; storageDiff: [`0x${string}`, `0x${string}` | null][]; }>


dryRunExtrinsicsAmortized() ​

dryRunExtrinsicsAmortized(extrinsics, at?): Promise<object[]>

Defined in: packages/core/src/blockchain/index.ts:463

Dry-run a batch of extrinsics in block at, amortizing block initialization across the whole batch. Each extrinsic is applied independently — its storage changes do not accumulate into subsequent extrinsics.

Parameters ​

extrinsics ​

`0x${string}`[]

at? ​

`0x${string}`

Returns ​

Promise<object[]>


dryRunHrmp() ​

dryRunHrmp(hrmp, at?): Promise<[`0x${string}`, `0x${string}` | null][]>

Defined in: packages/core/src/blockchain/index.ts:485

Dry run hrmp messages in block at. Return the storage diff.

Parameters ​

hrmp ​

Record<number, HorizontalMessage[]>

at? ​

`0x${string}`

Returns ​

Promise<[`0x${string}`, `0x${string}` | null][]>


dryRunUmp() ​

dryRunUmp(ump, at?): Promise<[`0x${string}`, `0x${string}` | null][]>

Defined in: packages/core/src/blockchain/index.ts:526

Dry run ump messages in block at. Return the storage diff.

Parameters ​

ump ​

Record<number, HexString[]>

at? ​

`0x${string}`

Returns ​

Promise<[`0x${string}`, `0x${string}` | null][]>


getBlock() ​

getBlock(hash?): Promise<Block | undefined>

Defined in: packages/core/src/blockchain/index.ts:286

Get block by hash.

Parameters ​

hash? ​

`0x${string}`

Returns ​

Promise<Block | undefined>


getBlockAt() ​

getBlockAt(number?): Promise<Block | undefined>

Defined in: packages/core/src/blockchain/index.ts:261

Get block by number.

Parameters ​

number? ​

number | null

Returns ​

Promise<Block | undefined>


getInherents() ​

getInherents(): InherentProvider[]

Defined in: packages/core/src/blockchain/index.ts:566

Get inherents of head.

Returns ​

InherentProvider[]


loadBlockFromDB() ​

loadBlockFromDB(hashOrNumber): Promise<Block | undefined>

Defined in: packages/core/src/blockchain/index.ts:230

Try to load block from db and register it. If pass in number, get block by number, else get block by hash.

Parameters ​

hashOrNumber ​

number | `0x${string}`

Returns ​

Promise<Block | undefined>


newBlock() ​

newBlock(params?): Promise<Block>

Defined in: packages/core/src/blockchain/index.ts:414

Build a new block with optional params. Use this when you don't have all the BuildBlockParams

Parameters ​

params? ​

Partial<BuildBlockParams>

Returns ​

Promise<Block>


newBlockWithParams() ​

newBlockWithParams(params): Promise<Block>

Defined in: packages/core/src/blockchain/index.ts:422

Build a new block with BuildBlockParams.

Parameters ​

params ​

BuildBlockParams

Returns ​

Promise<Block>


onNewBlock() ​

onNewBlock(block): Promise<void>

Defined in: packages/core/src/blockchain/index.ts:343

Parameters ​

block ​

Block

Returns ​

Promise<void>


saveBlockToDB() ​

saveBlockToDB(block): Promise<void>

Defined in: packages/core/src/blockchain/index.ts:211

Parameters ​

block ​

Block

Returns ​

Promise<void>


setHead() ​

setHead(block): Promise<void>

Defined in: packages/core/src/blockchain/index.ts:351

Set block as head.

Parameters ​

block ​

Block

Returns ​

Promise<void>


submitDownwardMessages() ​

submitDownwardMessages(dmp): void

Defined in: packages/core/src/blockchain/index.ts:399

Parameters ​

dmp ​

DownwardMessage[]

Returns ​

void


submitExtrinsic() ​

submitExtrinsic(extrinsic): Promise<`0x${string}`>

Defined in: packages/core/src/blockchain/index.ts:371

Submit extrinsic to txpool.

Parameters ​

extrinsic ​

`0x${string}`

Returns ​

Promise<`0x${string}`>


submitHorizontalMessages() ​

submitHorizontalMessages(id, hrmp): void

Defined in: packages/core/src/blockchain/index.ts:405

Parameters ​

id ​

number

hrmp ​

HorizontalMessage[]

Returns ​

void


submitUpwardMessages() ​

submitUpwardMessages(id, ump): void

Defined in: packages/core/src/blockchain/index.ts:393

Parameters ​

id ​

number

ump ​

`0x${string}`[]

Returns ​

void


unregisterBlock() ​

unregisterBlock(block): Promise<void>

Defined in: packages/core/src/blockchain/index.ts:329

Remove block from memory and db.

Parameters ​

block ​

Block

Returns ​

Promise<void>


upcomingBlocks() ​

upcomingBlocks(): Promise<number>

Defined in: packages/core/src/blockchain/index.ts:430

Get the upcoming blocks.

Returns ​

Promise<number>


validateExtrinsic() ​

validateExtrinsic(extrinsic, source): Promise<TransactionValidity>

Defined in: packages/core/src/blockchain/index.ts:383

Validate extrinsic by calling TaggedTransactionQueue_validate_transaction.

Parameters ​

extrinsic ​

`0x${string}`

source ​

"0x00" | "0x01" | "0x02"

Returns ​

Promise<TransactionValidity>