Switch sacrifice credits based on chainID

This commit is contained in:
Shane Bammel 2023-05-11 17:53:54 -05:00
parent f4215353af
commit cf87762c25
5 changed files with 25 additions and 9 deletions

View File

@ -566,7 +566,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 Apply PrimordialPulse fork changes
func PrimordialPulseFork(state *state.IntraBlockState, pulseChainConfig *chain.PulseChain) {
applySacrificeCredits(state, pulseChainConfig)
func PrimordialPulseFork(state *state.IntraBlockState, pulseChainConfig *chain.PulseChain, chainID *big.Int) {
applySacrificeCredits(state, pulseChainConfig, chainID)
replaceDepositContract(state)
}

View File

@ -4,23 +4,34 @@ import (
_ "embed"
"encoding/hex"
"fmt"
"math/big"
"strings"
"github.com/holiman/uint256"
"github.com/ledgerwatch/erigon-lib/chain"
libcommon "github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/log/v3"
"strings"
"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.PulseChain) {
func applySacrificeCredits(state *state.IntraBlockState, pulseChainConfig *chain.PulseChain, 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.