mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
cmd/puppeth: add blake2f for parity
This commit is contained in:
parent
4dbfd63c9e
commit
fc1296a639
2 changed files with 41 additions and 43 deletions
|
|
@ -181,9 +181,6 @@ func newAlethGenesisSpec(network string, genesis *core.Genesis) (*alethGenesisSp
|
||||||
spec.setPrecompile(8, &alethGenesisSpecBuiltin{Name: "alt_bn128_pairing_product",
|
spec.setPrecompile(8, &alethGenesisSpecBuiltin{Name: "alt_bn128_pairing_product",
|
||||||
StartingBlock: (hexutil.Uint64)(genesis.Config.ByzantiumBlock.Uint64())})
|
StartingBlock: (hexutil.Uint64)(genesis.Config.ByzantiumBlock.Uint64())})
|
||||||
}
|
}
|
||||||
// todo
|
|
||||||
if genesis.Config.IstanbulBlock != nil {
|
|
||||||
}
|
|
||||||
return spec, nil
|
return spec, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -232,35 +229,33 @@ type parityChainSpec struct {
|
||||||
} `json:"engine"`
|
} `json:"engine"`
|
||||||
|
|
||||||
Params struct {
|
Params struct {
|
||||||
AccountStartNonce hexutil.Uint64 `json:"accountStartNonce"`
|
AccountStartNonce hexutil.Uint64 `json:"accountStartNonce"`
|
||||||
MaximumExtraDataSize hexutil.Uint64 `json:"maximumExtraDataSize"`
|
MaximumExtraDataSize hexutil.Uint64 `json:"maximumExtraDataSize"`
|
||||||
MinGasLimit hexutil.Uint64 `json:"minGasLimit"`
|
MinGasLimit hexutil.Uint64 `json:"minGasLimit"`
|
||||||
GasLimitBoundDivisor math2.HexOrDecimal64 `json:"gasLimitBoundDivisor"`
|
GasLimitBoundDivisor math2.HexOrDecimal64 `json:"gasLimitBoundDivisor"`
|
||||||
NetworkID hexutil.Uint64 `json:"networkID"`
|
NetworkID hexutil.Uint64 `json:"networkID"`
|
||||||
ChainID hexutil.Uint64 `json:"chainID"`
|
ChainID hexutil.Uint64 `json:"chainID"`
|
||||||
MaxCodeSize hexutil.Uint64 `json:"maxCodeSize"`
|
MaxCodeSize hexutil.Uint64 `json:"maxCodeSize"`
|
||||||
MaxCodeSizeTransition hexutil.Uint64 `json:"maxCodeSizeTransition"`
|
MaxCodeSizeTransition hexutil.Uint64 `json:"maxCodeSizeTransition"`
|
||||||
EIP98Transition hexutil.Uint64 `json:"eip98Transition"`
|
EIP98Transition hexutil.Uint64 `json:"eip98Transition"`
|
||||||
EIP150Transition hexutil.Uint64 `json:"eip150Transition"`
|
EIP150Transition hexutil.Uint64 `json:"eip150Transition"`
|
||||||
// EIP152Transition hexutil.Uint64 `json:"eip152Transition"`
|
EIP160Transition hexutil.Uint64 `json:"eip160Transition"`
|
||||||
EIP160Transition hexutil.Uint64 `json:"eip160Transition"`
|
EIP161abcTransition hexutil.Uint64 `json:"eip161abcTransition"`
|
||||||
EIP161abcTransition hexutil.Uint64 `json:"eip161abcTransition"`
|
EIP161dTransition hexutil.Uint64 `json:"eip161dTransition"`
|
||||||
EIP161dTransition hexutil.Uint64 `json:"eip161dTransition"`
|
EIP155Transition hexutil.Uint64 `json:"eip155Transition"`
|
||||||
EIP155Transition hexutil.Uint64 `json:"eip155Transition"`
|
EIP140Transition hexutil.Uint64 `json:"eip140Transition"`
|
||||||
EIP140Transition hexutil.Uint64 `json:"eip140Transition"`
|
EIP211Transition hexutil.Uint64 `json:"eip211Transition"`
|
||||||
EIP211Transition hexutil.Uint64 `json:"eip211Transition"`
|
EIP214Transition hexutil.Uint64 `json:"eip214Transition"`
|
||||||
EIP214Transition hexutil.Uint64 `json:"eip214Transition"`
|
EIP658Transition hexutil.Uint64 `json:"eip658Transition"`
|
||||||
EIP658Transition hexutil.Uint64 `json:"eip658Transition"`
|
EIP145Transition hexutil.Uint64 `json:"eip145Transition"`
|
||||||
EIP145Transition hexutil.Uint64 `json:"eip145Transition"`
|
EIP1014Transition hexutil.Uint64 `json:"eip1014Transition"`
|
||||||
EIP1014Transition hexutil.Uint64 `json:"eip1014Transition"`
|
EIP1052Transition hexutil.Uint64 `json:"eip1052Transition"`
|
||||||
EIP1052Transition hexutil.Uint64 `json:"eip1052Transition"`
|
EIP1283Transition hexutil.Uint64 `json:"eip1283Transition"`
|
||||||
// EIP1108Transition hexutil.Uint64 `json:"eip1108Transition"`
|
EIP1283DisableTransition hexutil.Uint64 `json:"eip1283DisableTransition"`
|
||||||
EIP1283Transition hexutil.Uint64 `json:"eip1283Transition"`
|
EIP1283ReenableTransition hexutil.Uint64 `json:"eip1283ReenableTransition"`
|
||||||
EIP1283DisableTransition hexutil.Uint64 `json:"eip1283DisableTransition"`
|
EIP1344Transition hexutil.Uint64 `json:"eip1344Transition"`
|
||||||
EIP1283ReenableTransition hexutil.Uint64 `json:"eip1283ReenableTransition"`
|
EIP1884Transition hexutil.Uint64 `json:"eip1884Transition"`
|
||||||
EIP1344Transition hexutil.Uint64 `json:"eip1344Transition"`
|
EIP2028Transition hexutil.Uint64 `json:"eip2028Transition"`
|
||||||
EIP1884Transition hexutil.Uint64 `json:"eip1884Transition"`
|
|
||||||
EIP2028Transition hexutil.Uint64 `json:"eip2028Transition"`
|
|
||||||
} `json:"params"`
|
} `json:"params"`
|
||||||
|
|
||||||
Genesis struct {
|
Genesis struct {
|
||||||
|
|
@ -293,10 +288,10 @@ type parityChainSpecAccount struct {
|
||||||
|
|
||||||
// parityChainSpecBuiltin is the precompiled contract definition.
|
// parityChainSpecBuiltin is the precompiled contract definition.
|
||||||
type parityChainSpecBuiltin struct {
|
type parityChainSpecBuiltin struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name"` // Each builtin should has it own name
|
||||||
ActivateAt math2.HexOrDecimal64 `json:"activate_at,omitempty"`
|
ActivateAt math2.HexOrDecimal64 `json:"activate_at"` // ActivateAt can't be omitted if empty, default means no fork
|
||||||
Pricing *parityChainSpecPricing `json:"pricing,omitempty"`
|
Pricing *parityChainSpecPricing `json:"pricing"` // Each builtin should has it own price strategy
|
||||||
EIP1108Transition math2.HexOrDecimal64 `json:"eip1108_transition,omitempty"`
|
EIP1108Transition math2.HexOrDecimal64 `json:"eip1108_transition"` // EIP1108Transition can't be omitted if empty, default means no fork
|
||||||
}
|
}
|
||||||
|
|
||||||
// parityChainSpecPricing represents the different pricing models that builtin
|
// parityChainSpecPricing represents the different pricing models that builtin
|
||||||
|
|
@ -306,7 +301,9 @@ type parityChainSpecPricing struct {
|
||||||
ModExp *parityChainSpecModExpPricing `json:"modexp,omitempty"`
|
ModExp *parityChainSpecModExpPricing `json:"modexp,omitempty"`
|
||||||
AltBnPairing *parityChainSpecAltBnPairingPricing `json:"alt_bn128_pairing,omitempty"`
|
AltBnPairing *parityChainSpecAltBnPairingPricing `json:"alt_bn128_pairing,omitempty"`
|
||||||
AltBnConstOperation *parityChainSpecAltBnConstOperationPricing `json:"alt_bn128_const_operations,omitempty"`
|
AltBnConstOperation *parityChainSpecAltBnConstOperationPricing `json:"alt_bn128_const_operations,omitempty"`
|
||||||
Blake2F *parityChainSpecBlake2F `json:"blake2_f,omitempty"`
|
|
||||||
|
// Blake2F is the price per round of Blake2 compression
|
||||||
|
Blake2F uint64 `json:"blake2_f,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type parityChainSpecLinearPricing struct {
|
type parityChainSpecLinearPricing struct {
|
||||||
|
|
@ -320,18 +317,16 @@ type parityChainSpecModExpPricing struct {
|
||||||
|
|
||||||
type parityChainSpecAltBnConstOperationPricing struct {
|
type parityChainSpecAltBnConstOperationPricing struct {
|
||||||
Price uint64 `json:"price"`
|
Price uint64 `json:"price"`
|
||||||
EIP1108TransitionPrice uint64 `json:"eip1108_transition_price,omitempty"`
|
EIP1108TransitionPrice uint64 `json:"eip1108_transition_price,omitempty"` // Before Istanbul fork, this field is nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type parityChainSpecAltBnPairingPricing struct {
|
type parityChainSpecAltBnPairingPricing struct {
|
||||||
Base uint64 `json:"base"`
|
Base uint64 `json:"base"`
|
||||||
Pair uint64 `json:"pair"`
|
Pair uint64 `json:"pair"`
|
||||||
EIP1108TransitionBase uint64 `json:"eip1108_transition_base,omitempty"`
|
EIP1108TransitionBase uint64 `json:"eip1108_transition_base,omitempty"` // Before Istanbul fork, this field is nil
|
||||||
EIP1108TransitionPair uint64 `json:"eip1108_transition_pair,omitempty"`
|
EIP1108TransitionPair uint64 `json:"eip1108_transition_pair,omitempty"` // Before Istanbul fork, this field is nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type parityChainSpecBlake2F uint64 // Price per round of Blake2 compression.
|
|
||||||
|
|
||||||
// newParityChainSpec converts a go-ethereum genesis block into a Parity specific
|
// newParityChainSpec converts a go-ethereum genesis block into a Parity specific
|
||||||
// chain specification format.
|
// chain specification format.
|
||||||
func newParityChainSpec(network string, genesis *core.Genesis, bootnodes []string) (*parityChainSpec, error) {
|
func newParityChainSpec(network string, genesis *core.Genesis, bootnodes []string) (*parityChainSpec, error) {
|
||||||
|
|
@ -457,6 +452,9 @@ func newParityChainSpec(network string, genesis *core.Genesis, bootnodes []strin
|
||||||
spec.setPrecompile(8, &parityChainSpecBuiltin{
|
spec.setPrecompile(8, &parityChainSpecBuiltin{
|
||||||
Name: "alt_bn128_pairing", ActivateAt: byzantiumNumber, EIP1108Transition: istanbulNumber, Pricing: &parityChainSpecPricing{AltBnPairing: &parityChainSpecAltBnPairingPricing{Base: 100000, Pair: 80000, EIP1108TransitionBase: 45000, EIP1108TransitionPair: 34000}},
|
Name: "alt_bn128_pairing", ActivateAt: byzantiumNumber, EIP1108Transition: istanbulNumber, Pricing: &parityChainSpecPricing{AltBnPairing: &parityChainSpecAltBnPairingPricing{Base: 100000, Pair: 80000, EIP1108TransitionBase: 45000, EIP1108TransitionPair: 34000}},
|
||||||
})
|
})
|
||||||
|
spec.setPrecompile(9, &parityChainSpecBuiltin{
|
||||||
|
Name: "blake2_f", ActivateAt: istanbulNumber, Pricing: &parityChainSpecPricing{Blake2F: 1},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return spec, nil
|
return spec, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -296,7 +296,7 @@ func (w *wizard) manageGenesis() {
|
||||||
func saveGenesis(folder, network, client string, spec interface{}) {
|
func saveGenesis(folder, network, client string, spec interface{}) {
|
||||||
path := filepath.Join(folder, fmt.Sprintf("%s-%s.json", network, client))
|
path := filepath.Join(folder, fmt.Sprintf("%s-%s.json", network, client))
|
||||||
|
|
||||||
out, _ := json.Marshal(spec)
|
out, _ := json.MarshalIndent(spec, "", " ")
|
||||||
if err := ioutil.WriteFile(path, out, 0644); err != nil {
|
if err := ioutil.WriteFile(path, out, 0644); err != nil {
|
||||||
log.Error("Failed to save genesis file", "client", client, "err", err)
|
log.Error("Failed to save genesis file", "client", client, "err", err)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue