cmd/puppeth: add blake2f for parity

This commit is contained in:
rjl493456442 2019-09-20 13:04:09 +08:00
parent 4dbfd63c9e
commit fc1296a639
2 changed files with 41 additions and 43 deletions

View file

@ -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
} }
@ -242,7 +239,6 @@ type parityChainSpec struct {
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"`
@ -254,7 +250,6 @@ type parityChainSpec struct {
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"`
// EIP1108Transition hexutil.Uint64 `json:"eip1108Transition"`
EIP1283Transition hexutil.Uint64 `json:"eip1283Transition"` EIP1283Transition hexutil.Uint64 `json:"eip1283Transition"`
EIP1283DisableTransition hexutil.Uint64 `json:"eip1283DisableTransition"` EIP1283DisableTransition hexutil.Uint64 `json:"eip1283DisableTransition"`
EIP1283ReenableTransition hexutil.Uint64 `json:"eip1283ReenableTransition"` EIP1283ReenableTransition hexutil.Uint64 `json:"eip1283ReenableTransition"`
@ -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
} }

View file

@ -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