aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-03-21 08:37:33 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:58 +0800
commit9ad0e05b15f8b36f38f19cc1b24dc8b93e845844 (patch)
tree8dd2847c1003a1de9757990ebb53a8322cba333b /core/vm
parent86eb10fc5f853507baafde992b81647d41f2a587 (diff)
downloaddexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar.gz
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar.bz2
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar.lz
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar.xz
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.tar.zst
dexon-9ad0e05b15f8b36f38f19cc1b24dc8b93e845844.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.go16
-rw-r--r--core/vm/oracle_contracts.go102
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
}