Explorar o código

Merge pull request #1502 from ethereum/canaryFix

Fixed canary to require 2+ nonzero, not sum 2+
Jeffrey Wilcke %!s(int64=10) %!d(string=hai) anos
pai
achega
f1daed65b1
Modificáronse 1 ficheiros con 14 adicións e 7 borrados
  1. 14 7
      core/canary.go

+ 14 - 7
core/canary.go

@@ -34,11 +34,18 @@ var (
 // If two or more are set to anything other than a 0 the canary
 // dies a horrible death.
 func Canary(statedb *state.StateDB) bool {
-	r := new(big.Int)
-	r.Add(r, statedb.GetState(jeff, common.Hash{}).Big())
-	r.Add(r, statedb.GetState(vitalik, common.Hash{}).Big())
-	r.Add(r, statedb.GetState(christoph, common.Hash{}).Big())
-	r.Add(r, statedb.GetState(gav, common.Hash{}).Big())
-
-	return r.Cmp(big.NewInt(1)) > 0
+	var r int
+	if (statedb.GetState(jeff, common.Hash{}).Big().Cmp(big.NewInt(0)) > 0) {
+		r++
+	}
+	if (statedb.GetState(gav, common.Hash{}).Big().Cmp(big.NewInt(0)) > 0) {
+		r++
+	}
+	if (statedb.GetState(christoph, common.Hash{}).Big().Cmp(big.NewInt(0)) > 0) {
+		r++
+	}
+	if (statedb.GetState(vitalik, common.Hash{}).Big().Cmp(big.NewInt(0)) > 0) {
+		r++
+	}
+	return r > 1
 }