chainsdb

package
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2024 License: GPL-3.0, GPL-3.0 Imports: 0 Imported by: 0

README

Atlas multilChain introduce

Multichain databases are used to store data from different chains,Distinguishing different chains with ChainType uint64。The data structure is:

type HeaderChainStore struct {
	chainDb          ethdb.Database
	currentChainType rawdb.ChainType
	Mu               sync.RWMutex // blockchaindb insertion lock
	rand             *mrand.Rand
}

Call through the following function when you want to use multilChainDb. ps:The only identification of the chain is chainType

func GetStoreMgr(chainType rawdb.ChainType) (*HeaderChainStore, error) {
	if storeMgr == nil {
		return nil, error01
	}
	storeMgr.currentChainType = chainType
	return storeMgr, nil
}
for Example:
    hc, error := GetStoreMgr(chainType)
    if error !=nil {
        ....
    }

Building the multilChain db source

When the project starts, the multilChain db is initialized within the makeFullNode() function. ps:【multiChain.NewStoreDb(ctx, &cfg.Eth) 】

Interface function

Write block header information:

name params introduce
WriteHeader header headerInfo (ethereum.Header)

Get block header information with hash and number .

name params introduce return type
ReadHeader Hash hashValue *ethereum.Header
number blockNumber
Insert what you want to deposit
name params introduce
InsertHeaderChain chains Incoming []*ethereum.Header
start time.Time for log

for Example:
   	status, error := hc.InsertHeaderChain(chain, time.Now())
    if error !=nil {
        ....
    }
   	if status != wantStatus {
   		t.Errorf("wrong write status from InsertHeaderChain: got %v, want %v", status, wantStatus)
   	}
ps:
status value
NonStatTyState   WriteStatus = iota // not the Canonical will be ignore
CanonStatTyState                    // the Canonical
SideStatTyState                     // the branch

Get block number with hash .

name params return type
GetBlockNumber hash *uint64

Gets the block height of the current type chain:

name return type
CurrentHeaderNumber uint64

Gets the block lastHash of the current type chain:

name return type
CurrentHeaderHash common.Hash

Get difficulty with hash:

name return type
GetTdByHash *big.Int
Get header information by hash:
name return type
GetHeaderByHash *Header
Get header information for a type of chain through number:
name return type
GetHeaderByNumber *Header

Get the headhash of a type of specification chain through number:

name return type
ReadCanonicalHash common.Hash

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL