|
|
|
@ -30,6 +30,7 @@ var ( |
|
|
|
|
PreStakingEpoch: EpochTBD, |
|
|
|
|
EIP155Epoch: big.NewInt(28), |
|
|
|
|
S3Epoch: big.NewInt(28), |
|
|
|
|
ReceiptLogEpoch: big.NewInt(101), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TestnetChainConfig contains the chain parameters to run a node on the harmony test network.
|
|
|
|
@ -41,6 +42,7 @@ var ( |
|
|
|
|
PreStakingEpoch: big.NewInt(2), |
|
|
|
|
EIP155Epoch: big.NewInt(0), |
|
|
|
|
S3Epoch: big.NewInt(0), |
|
|
|
|
ReceiptLogEpoch: big.NewInt(0), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// PangaeaChainConfig contains the chain parameters for the Pangaea network.
|
|
|
|
@ -53,6 +55,7 @@ var ( |
|
|
|
|
PreStakingEpoch: big.NewInt(0), |
|
|
|
|
EIP155Epoch: big.NewInt(0), |
|
|
|
|
S3Epoch: big.NewInt(0), |
|
|
|
|
ReceiptLogEpoch: big.NewInt(0), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// LocalnetChainConfig contains the chain parameters to run for local development.
|
|
|
|
@ -64,6 +67,7 @@ var ( |
|
|
|
|
PreStakingEpoch: big.NewInt(2), |
|
|
|
|
EIP155Epoch: big.NewInt(0), |
|
|
|
|
S3Epoch: big.NewInt(0), |
|
|
|
|
ReceiptLogEpoch: big.NewInt(0), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// AllProtocolChanges ...
|
|
|
|
@ -77,6 +81,7 @@ var ( |
|
|
|
|
big.NewInt(0), // PreStakingEpoch
|
|
|
|
|
big.NewInt(0), // EIP155Epoch
|
|
|
|
|
big.NewInt(0), // S3Epoch
|
|
|
|
|
big.NewInt(0), // ReceiptLogEpoch
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TestChainConfig ...
|
|
|
|
@ -90,6 +95,7 @@ var ( |
|
|
|
|
big.NewInt(0), // PreStakingEpoch
|
|
|
|
|
big.NewInt(0), // EIP155Epoch
|
|
|
|
|
big.NewInt(0), // S3Epoch
|
|
|
|
|
big.NewInt(0), // ReceiptLogEpoch
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TestRules ...
|
|
|
|
@ -136,16 +142,20 @@ type ChainConfig struct { |
|
|
|
|
|
|
|
|
|
// S3 epoch is the first epoch containing S3 mainnet and all ethereum update up to Constantinople
|
|
|
|
|
S3Epoch *big.Int `json:"s3-epoch,omitempty"` |
|
|
|
|
|
|
|
|
|
// ReceiptLogEpoch is the first epoch support receiptlog
|
|
|
|
|
ReceiptLogEpoch *big.Int `json:"receipt-log-epoch,omitempty"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// String implements the fmt.Stringer interface.
|
|
|
|
|
func (c *ChainConfig) String() string { |
|
|
|
|
return fmt.Sprintf("{ChainID: %v EIP155: %v CrossTx: %v Staking: %v CrossLink: %v}", |
|
|
|
|
return fmt.Sprintf("{ChainID: %v EIP155: %v CrossTx: %v Staking: %v CrossLink: %v ReceiptLog: %v}", |
|
|
|
|
c.ChainID, |
|
|
|
|
c.EIP155Epoch, |
|
|
|
|
c.CrossTxEpoch, |
|
|
|
|
c.StakingEpoch, |
|
|
|
|
c.CrossLinkEpoch, |
|
|
|
|
c.ReceiptLogEpoch, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -194,6 +204,11 @@ func (c *ChainConfig) IsS3(epoch *big.Int) bool { |
|
|
|
|
return isForked(c.S3Epoch, epoch) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// IsReceiptLog returns whether epoch is either equal to the ReceiptLog fork epoch or greater.
|
|
|
|
|
func (c *ChainConfig) IsReceiptLog(epoch *big.Int) bool { |
|
|
|
|
return isForked(c.ReceiptLogEpoch, epoch) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GasTable returns the gas table corresponding to the current phase (homestead or homestead reprice).
|
|
|
|
|
//
|
|
|
|
|
// The returned GasTable's fields shouldn't, under any circumstances, be changed.
|
|
|
|
@ -302,8 +317,8 @@ func (err *ConfigCompatError) Error() string { |
|
|
|
|
// Rules is a one time interface meaning that it shouldn't be used in between transition
|
|
|
|
|
// phases.
|
|
|
|
|
type Rules struct { |
|
|
|
|
ChainID *big.Int |
|
|
|
|
IsCrossLink, IsEIP155, IsS3 bool |
|
|
|
|
ChainID *big.Int |
|
|
|
|
IsCrossLink, IsEIP155, IsS3, IsReceiptLog bool |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Rules ensures c's ChainID is not nil.
|
|
|
|
@ -313,9 +328,10 @@ func (c *ChainConfig) Rules(epoch *big.Int) Rules { |
|
|
|
|
chainID = new(big.Int) |
|
|
|
|
} |
|
|
|
|
return Rules{ |
|
|
|
|
ChainID: new(big.Int).Set(chainID), |
|
|
|
|
IsCrossLink: c.IsCrossLink(epoch), |
|
|
|
|
IsEIP155: c.IsEIP155(epoch), |
|
|
|
|
IsS3: c.IsS3(epoch), |
|
|
|
|
ChainID: new(big.Int).Set(chainID), |
|
|
|
|
IsCrossLink: c.IsCrossLink(epoch), |
|
|
|
|
IsEIP155: c.IsEIP155(epoch), |
|
|
|
|
IsS3: c.IsS3(epoch), |
|
|
|
|
IsReceiptLog: c.IsReceiptLog(epoch), |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|