mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-23 04:03:49 +00:00
bd9896bf4b
This request implements the insertion of Bor ephemeral transactions into snapshot indexes. I does this by taking the block hash from the header index and passing it to the transaction indexer to add an additional index entry per block into the transaction hash -> block index. The passed entries are currently contained in an in memory array which is (32 * number of blocks / sprint size) bytes. In addition to the functional code there is also an update to the `dump_test.go` so that it runs `DumpBlocks` to exercise the indexing code. To facilitate this the `InsertChain` method in `mock_sentry` has been modified so that it can process >128 blocks. The code in this request also includes additional bor/consensus code with the following functions: `CalculateSprint` `CalculateSprintCount` The first function is a modification of the code in erigon-lib so that the sprints are numerically rather than lexically ordered. This code should be migrated to erigon-lib and should have its sprint set calculated once from its underlying map rather than this process being repeated every calculation. --------- Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local> Co-authored-by: ledgerwatch <akhounov@gmail.com> Co-authored-by: Enrique Jose Avila Asapche <eavilaasapche@gmail.com> Co-authored-by: Giulio <giulio.rebuffo@gmail.com>
32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package bor
|
|
|
|
import (
|
|
"github.com/ledgerwatch/erigon-lib/chain"
|
|
"github.com/ledgerwatch/erigon/consensus"
|
|
"github.com/ledgerwatch/erigon/consensus/ethash"
|
|
"github.com/ledgerwatch/erigon/core/state"
|
|
"github.com/ledgerwatch/erigon/core/systemcontracts"
|
|
"github.com/ledgerwatch/erigon/core/types"
|
|
"github.com/ledgerwatch/log/v3"
|
|
)
|
|
|
|
type FakeBor struct {
|
|
*ethash.FakeEthash
|
|
}
|
|
|
|
// NewFaker creates a bor consensus engine with a fake FakeEthash +
|
|
// processing of fake bor system contracts
|
|
func NewFaker() *FakeBor {
|
|
return &FakeBor{
|
|
FakeEthash: ethash.NewFaker(),
|
|
}
|
|
}
|
|
|
|
func (f *FakeBor) Finalize(config *chain.Config, header *types.Header, state *state.IntraBlockState,
|
|
txs types.Transactions, uncles []*types.Header, r types.Receipts, withdrawals []*types.Withdrawal,
|
|
chain consensus.ChainHeaderReader, syscall consensus.SystemCall, logger log.Logger,
|
|
) (types.Transactions, types.Receipts, error) {
|
|
systemcontracts.UpgradeBuildInSystemContract(config, header.Number, state, logger)
|
|
return f.FakeEthash.Finalize(config, header, state, txs, uncles, r, withdrawals, chain, syscall, logger)
|
|
}
|