From 9ad0e05b15f8b36f38f19cc1b24dc8b93e845844 Mon Sep 17 00:00:00 2001 From: Jimmy Hu Date: Thu, 21 Mar 2019 08:37:33 +0800 Subject: core/vm: remove round from addDKG functions (#279) * vendor: sync to latest core * core/vm: remove addDKG functions * core: fix conflict --- core/vm/oracle_contract_abi.go | 16 ------- core/vm/oracle_contracts.go | 102 ++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 73 deletions(-) (limited to 'core/vm') diff --git a/core/vm/oracle_contract_abi.go b/core/vm/oracle_contract_abi.go index cd037b068..e42e9266f 100644 --- a/core/vm/oracle_contract_abi.go +++ b/core/vm/oracle_contract_abi.go @@ -956,10 +956,6 @@ const GovernanceABIJSON = ` { "constant": false, "inputs": [ - { - "name": "Round", - "type": "uint256" - }, { "name": "Complaint", "type": "bytes" @@ -974,10 +970,6 @@ const GovernanceABIJSON = ` { "constant": false, "inputs": [ - { - "name": "Round", - "type": "uint256" - }, { "name": "PublicKey", "type": "bytes" @@ -992,10 +984,6 @@ const GovernanceABIJSON = ` { "constant": false, "inputs": [ - { - "name": "Round", - "type": "uint256" - }, { "name": "MPKReady", "type": "bytes" @@ -1010,10 +998,6 @@ const GovernanceABIJSON = ` { "constant": false, "inputs": [ - { - "name": "Round", - "type": "uint256" - }, { "name": "Finalize", "type": "bytes" diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go index f999cc6b1..8c10a98e8 100644 --- a/core/vm/oracle_contracts.go +++ b/core/vm/oracle_contracts.go @@ -1359,11 +1359,7 @@ func (g *GovernanceContract) clearDKG() { g.state.ResetDKGFinalizedsCount() } -func (g *GovernanceContract) addDKGComplaint(round *big.Int, comp []byte) ([]byte, error) { - if round.Uint64() != g.evm.Round.Uint64()+1 { - return nil, errExecutionReverted - } - +func (g *GovernanceContract) addDKGComplaint(comp []byte) ([]byte, error) { caller := g.contract.Caller() offset := g.state.NodesOffsetByNodeKeyAddress(caller) @@ -1395,6 +1391,10 @@ func (g *GovernanceContract) addDKGComplaint(round *big.Int, comp []byte) ([]byt if g.state.DKGComplaintProposed(getDKGComplaintID(&dkgComplaint)) { return nil, errExecutionReverted } + round := big.NewInt(int64(dkgComplaint.Round)) + if round.Uint64() != g.evm.Round.Uint64()+1 { + return nil, errExecutionReverted + } if dkgComplaint.Reset != g.state.DKGResetCount(round).Uint64() { return nil, errExecutionReverted @@ -1443,7 +1443,12 @@ func (g *GovernanceContract) addDKGComplaint(round *big.Int, comp []byte) ([]byt return g.useGas(GovernanceActionGasCost) } -func (g *GovernanceContract) addDKGMasterPublicKey(round *big.Int, mpk []byte) ([]byte, error) { +func (g *GovernanceContract) addDKGMasterPublicKey(mpk []byte) ([]byte, error) { + var dkgMasterPK dkgTypes.MasterPublicKey + if err := rlp.DecodeBytes(mpk, &dkgMasterPK); err != nil { + return nil, errExecutionReverted + } + round := big.NewInt(int64(dkgMasterPK.Round)) if round.Uint64() != g.evm.Round.Uint64()+1 { return nil, errExecutionReverted } @@ -1454,6 +1459,10 @@ func (g *GovernanceContract) addDKGMasterPublicKey(round *big.Int, mpk []byte) ( g.state.SetDKGRound(round) } + if g.state.DKGMasterPublicKeyProposed(getDKGMasterPublicKeyID(&dkgMasterPK)) { + return nil, errExecutionReverted + } + caller := g.contract.Caller() offset := g.state.NodesOffsetByNodeKeyAddress(caller) @@ -1477,15 +1486,6 @@ func (g *GovernanceContract) addDKGMasterPublicKey(round *big.Int, mpk []byte) ( return nil, errExecutionReverted } - var dkgMasterPK dkgTypes.MasterPublicKey - if err := rlp.DecodeBytes(mpk, &dkgMasterPK); err != nil { - return nil, errExecutionReverted - } - - if g.state.DKGMasterPublicKeyProposed(getDKGMasterPublicKeyID(&dkgMasterPK)) { - return nil, errExecutionReverted - } - if dkgMasterPK.Reset != g.state.DKGResetCount(round).Uint64() { return nil, errExecutionReverted } @@ -1505,17 +1505,17 @@ func (g *GovernanceContract) addDKGMasterPublicKey(round *big.Int, mpk []byte) ( return g.useGas(GovernanceActionGasCost) } -func (g *GovernanceContract) addDKGMPKReady(round *big.Int, ready []byte) ([]byte, error) { - if round.Uint64() != g.evm.Round.Uint64()+1 { - return nil, errExecutionReverted - } - +func (g *GovernanceContract) addDKGMPKReady(ready []byte) ([]byte, error) { caller := g.contract.Caller() var dkgReady dkgTypes.MPKReady if err := rlp.DecodeBytes(ready, &dkgReady); err != nil { return nil, errExecutionReverted } + round := big.NewInt(int64(dkgReady.Round)) + if round.Uint64() != g.evm.Round.Uint64()+1 { + return nil, errExecutionReverted + } if dkgReady.Reset != g.state.DKGResetCount(round).Uint64() { return nil, errExecutionReverted @@ -1539,17 +1539,17 @@ func (g *GovernanceContract) addDKGMPKReady(round *big.Int, ready []byte) ([]byt return g.useGas(GovernanceActionGasCost) } -func (g *GovernanceContract) addDKGFinalize(round *big.Int, finalize []byte) ([]byte, error) { - if round.Uint64() != g.evm.Round.Uint64()+1 { - return nil, errExecutionReverted - } - +func (g *GovernanceContract) addDKGFinalize(finalize []byte) ([]byte, error) { caller := g.contract.Caller() var dkgFinalize dkgTypes.Finalize if err := rlp.DecodeBytes(finalize, &dkgFinalize); err != nil { return nil, errExecutionReverted } + round := big.NewInt(int64(dkgFinalize.Round)) + if round.Uint64() != g.evm.Round.Uint64()+1 { + return nil, errExecutionReverted + } if dkgFinalize.Reset != g.state.DKGResetCount(round).Uint64() { return nil, errExecutionReverted @@ -2040,41 +2040,29 @@ func (g *GovernanceContract) Run(evm *EVM, input []byte, contract *Contract) (re // Dispatch method call. switch method.Name { case "addDKGComplaint": - args := struct { - Round *big.Int - Complaint []byte - }{} - if err := method.Inputs.Unpack(&args, arguments); err != nil { + var Complaint []byte + if err := method.Inputs.Unpack(&Complaint, arguments); err != nil { return nil, errExecutionReverted } - return g.addDKGComplaint(args.Round, args.Complaint) + return g.addDKGComplaint(Complaint) case "addDKGMasterPublicKey": - args := struct { - Round *big.Int - PublicKey []byte - }{} - if err := method.Inputs.Unpack(&args, arguments); err != nil { + var PublicKey []byte + if err := method.Inputs.Unpack(&PublicKey, arguments); err != nil { return nil, errExecutionReverted } - return g.addDKGMasterPublicKey(args.Round, args.PublicKey) + return g.addDKGMasterPublicKey(PublicKey) case "addDKGMPKReady": - args := struct { - Round *big.Int - MPKReady []byte - }{} - if err := method.Inputs.Unpack(&args, arguments); err != nil { + var MPKReady []byte + if err := method.Inputs.Unpack(&MPKReady, arguments); err != nil { return nil, errExecutionReverted } - return g.addDKGMPKReady(args.Round, args.MPKReady) + return g.addDKGMPKReady(MPKReady) case "addDKGFinalize": - args := struct { - Round *big.Int - Finalize []byte - }{} - if err := method.Inputs.Unpack(&args, arguments); err != nil { + var Finalize []byte + if err := method.Inputs.Unpack(&Finalize, arguments); err != nil { return nil, errExecutionReverted } - return g.addDKGFinalize(args.Round, args.Finalize) + return g.addDKGFinalize(Finalize) case "nodesLength": res, err := method.Outputs.Pack(g.state.LenNodes()) if err != nil { @@ -2473,13 +2461,13 @@ func PackProposeCRS(round uint64, signedCRS []byte) ([]byte, error) { return data, nil } -func PackAddDKGMasterPublicKey(round uint64, mpk *dkgTypes.MasterPublicKey) ([]byte, error) { +func PackAddDKGMasterPublicKey(mpk *dkgTypes.MasterPublicKey) ([]byte, error) { method := GovernanceABI.Name2Method["addDKGMasterPublicKey"] encoded, err := rlp.EncodeToBytes(mpk) if err != nil { return nil, err } - res, err := method.Inputs.Pack(big.NewInt(int64(round)), encoded) + res, err := method.Inputs.Pack(encoded) if err != nil { return nil, err } @@ -2487,13 +2475,13 @@ func PackAddDKGMasterPublicKey(round uint64, mpk *dkgTypes.MasterPublicKey) ([]b return data, nil } -func PackAddDKGMPKReady(round uint64, ready *dkgTypes.MPKReady) ([]byte, error) { +func PackAddDKGMPKReady(ready *dkgTypes.MPKReady) ([]byte, error) { method := GovernanceABI.Name2Method["addDKGMPKReady"] encoded, err := rlp.EncodeToBytes(ready) if err != nil { return nil, err } - res, err := method.Inputs.Pack(big.NewInt(int64(round)), encoded) + res, err := method.Inputs.Pack(encoded) if err != nil { return nil, err } @@ -2501,14 +2489,14 @@ func PackAddDKGMPKReady(round uint64, ready *dkgTypes.MPKReady) ([]byte, error) return data, nil } -func PackAddDKGComplaint(round uint64, complaint *dkgTypes.Complaint) ([]byte, error) { +func PackAddDKGComplaint(complaint *dkgTypes.Complaint) ([]byte, error) { method := GovernanceABI.Name2Method["addDKGComplaint"] encoded, err := rlp.EncodeToBytes(complaint) if err != nil { return nil, err } - res, err := method.Inputs.Pack(big.NewInt(int64(round)), encoded) + res, err := method.Inputs.Pack(encoded) if err != nil { return nil, err } @@ -2516,14 +2504,14 @@ func PackAddDKGComplaint(round uint64, complaint *dkgTypes.Complaint) ([]byte, e return data, nil } -func PackAddDKGFinalize(round uint64, final *dkgTypes.Finalize) ([]byte, error) { +func PackAddDKGFinalize(final *dkgTypes.Finalize) ([]byte, error) { method := GovernanceABI.Name2Method["addDKGFinalize"] encoded, err := rlp.EncodeToBytes(final) if err != nil { return nil, err } - res, err := method.Inputs.Pack(big.NewInt(int64(round)), encoded) + res, err := method.Inputs.Pack(encoded) if err != nil { return nil, err } -- cgit v1.2.3