Switch sacrifice credits based on chainID

This commit is contained in:
Shane Bammel 2023-05-11 17:53:54 -05:00
parent 93c50d59a5
commit e8ba24e831
5 changed files with 23 additions and 8 deletions

View File

@ -567,7 +567,7 @@ func (ethash *Ethash) Finalize(config *chain.Config, header *types.Header, state
) (types.Transactions, types.Receipts, error) {
// Apply fork changes on PrimordialPulse block
if config.IsPrimordialPulseBlock(header.Number.Uint64()) {
pulse.PrimordialPulseFork(state, config.PulseChain)
pulse.PrimordialPulseFork(state, config.PulseChain, config.ChainID)
}
// Accumulate any block and uncle rewards and commit the final state root

View File

@ -2,12 +2,17 @@
package pulse
import (
"math/big"
"github.com/ledgerwatch/erigon-lib/chain"
"github.com/ledgerwatch/erigon/core/state"
)
var MainnetChainID = big.NewInt(369)
var TestnetV4ChainID = big.NewInt(943)
// PrimordialPulseFork applies the PrimordialPulse fork changes.
func PrimordialPulseFork(state *state.IntraBlockState, pulseChainConfig *chain.PulseChainConfig) {
applySacrificeCredits(state, pulseChainConfig)
func PrimordialPulseFork(state *state.IntraBlockState, pulseChainConfig *chain.PulseChainConfig, chainID *big.Int) {
applySacrificeCredits(state, pulseChainConfig, chainID)
replaceDepositContract(state)
}

View File

@ -4,6 +4,7 @@ import (
_ "embed"
"encoding/hex"
"fmt"
"math/big"
"strings"
"github.com/holiman/uint256"
@ -14,14 +15,23 @@ import (
"github.com/ledgerwatch/erigon/core/state"
)
// The testnet credits are approximate and not final for mainnet
// see https://gitlab.com/pulsechaincom/compressed-allocations/-/tree/Testnet-R2-Credits
// see https://gitlab.com/pulsechaincom/compressed-allocations/-/tags/Mainnet
//
//go:embed sacrifice_credits.bin
var rawCredits []byte
//go:embed sacrifice_credits_mainnet.bin
var mainnetRawCredits []byte
// see https://gitlab.com/pulsechaincom/compressed-allocations/-/tags/Testnet-V4
//
//go:embed sacrifice_credits_testnet_v4.bin
var testnetV4RawCredits []byte
// Applies the sacrifice credits for the PrimordialPulse fork.
func applySacrificeCredits(state *state.IntraBlockState, pulseChainConfig *chain.PulseChainConfig) {
func applySacrificeCredits(state *state.IntraBlockState, pulseChainConfig *chain.PulseChainConfig, chainID *big.Int) {
rawCredits := mainnetRawCredits
if chainID.Cmp(TestnetV4ChainID) == 0 {
rawCredits = testnetV4RawCredits
}
if pulseChainConfig != nil && pulseChainConfig.Treasury != nil {
balance, err := uint256.FromHex(pulseChainConfig.Treasury.Balance)
if err != nil {

Binary file not shown.