diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-03-21 08:37:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-21 08:37:33 +0800 |
commit | acc1494299427a2461956307a2586192ad0a5d83 (patch) | |
tree | 69a90b6effbd3aeea07819d6c0efafc8187e3747 /core/vm | |
parent | a13464c2482971712350fe41a58ea8b30ec0c361 (diff) | |
download | dexon-acc1494299427a2461956307a2586192ad0a5d83.tar dexon-acc1494299427a2461956307a2586192ad0a5d83.tar.gz dexon-acc1494299427a2461956307a2586192ad0a5d83.tar.bz2 dexon-acc1494299427a2461956307a2586192ad0a5d83.tar.lz dexon-acc1494299427a2461956307a2586192ad0a5d83.tar.xz dexon-acc1494299427a2461956307a2586192ad0a5d83.tar.zst dexon-acc1494299427a2461956307a2586192ad0a5d83.zip |
core/vm: remove round from addDKG functions (#279)
* vendor: sync to latest core
* core/vm: remove addDKG functions
* core: fix conflict
Diffstat (limited to 'core/vm')
-rw-r--r-- | core/vm/oracle_contract_abi.go | 16 | ||||
-rw-r--r-- | core/vm/oracle_contracts.go | 102 |
2 files changed, 45 insertions, 73 deletions
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 @@ -957,10 +957,6 @@ const GovernanceABIJSON = ` "constant": false, "inputs": [ { - "name": "Round", - "type": "uint256" - }, - { "name": "Complaint", "type": "bytes" } @@ -975,10 +971,6 @@ const GovernanceABIJSON = ` "constant": false, "inputs": [ { - "name": "Round", - "type": "uint256" - }, - { "name": "PublicKey", "type": "bytes" } @@ -993,10 +985,6 @@ const GovernanceABIJSON = ` "constant": false, "inputs": [ { - "name": "Round", - "type": "uint256" - }, - { "name": "MPKReady", "type": "bytes" } @@ -1011,10 +999,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 } |