aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-12 20:49:47 +0800
committerobscuren <geffobscura@gmail.com>2015-01-12 20:49:47 +0800
commit00348756bce00c2d19f16ce8df5eff7a62f5cfc6 (patch)
treef1512c49e5cc23b390d71a4b5e2df4bd5ad7ee05
parent35fe4313d57e1df6c3c8af0bc0b530bd7033e21b (diff)
downloaddexon-00348756bce00c2d19f16ce8df5eff7a62f5cfc6.tar.gz
dexon-00348756bce00c2d19f16ce8df5eff7a62f5cfc6.tar.zst
dexon-00348756bce00c2d19f16ce8df5eff7a62f5cfc6.zip
updated tests
-rw-r--r--tests/files/StateTests/stSystemOperationsTest.json48
-rw-r--r--tests/files/VMTests/RandomTests/201501091831.json46
-rw-r--r--tests/files/VMTests/RandomTests/201501110744GO.json46
-rw-r--r--tests/files/VMTests/RandomTests/201501120415GO.json46
-rw-r--r--tests/files/VMTests/RandomTests/201501120933PYTHON.json (renamed from tests/files/VMTests/RandomTests/201501091727.json)4
-rw-r--r--tests/helper/vm.go2
-rw-r--r--vm/context.go7
-rw-r--r--vm/vm_debug.go13
8 files changed, 186 insertions, 26 deletions
diff --git a/tests/files/StateTests/stSystemOperationsTest.json b/tests/files/StateTests/stSystemOperationsTest.json
index 4989c10f9..d519d375d 100644
--- a/tests/files/StateTests/stSystemOperationsTest.json
+++ b/tests/files/StateTests/stSystemOperationsTest.json
@@ -6384,25 +6384,33 @@
"out" : "0x",
"post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
- "balance" : "1000000000000100000",
+ "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060036017f0600055",
- "nonce" : "0",
+ "nonce" : "1",
"storage" : {
+ "0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
}
},
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
- "balance" : "10000",
+ "balance" : "908",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
},
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
- "balance" : "999999999999890000",
+ "balance" : "999999999999899092",
"code" : "0x",
"nonce" : "1",
"storage" : {
}
+ },
+ "d2571607e241ecf590ed94b12d87c94babe36db6" : {
+ "balance" : "23",
+ "code" : "0x",
+ "nonce" : "0",
+ "storage" : {
+ }
}
},
"pre" : {
@@ -6445,25 +6453,33 @@
"out" : "0x",
"post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
- "balance" : "1000000000000100000",
+ "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b6020356000355560005260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6017f0600055",
- "nonce" : "0",
+ "nonce" : "1",
"storage" : {
+ "0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
}
},
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
- "balance" : "10000",
+ "balance" : "908",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
},
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
- "balance" : "999999999999890000",
+ "balance" : "999999999999899092",
"code" : "0x",
"nonce" : "1",
"storage" : {
}
+ },
+ "d2571607e241ecf590ed94b12d87c94babe36db6" : {
+ "balance" : "23",
+ "code" : "0x",
+ "nonce" : "0",
+ "storage" : {
+ }
}
},
"pre" : {
@@ -6506,25 +6522,33 @@
"out" : "0x",
"post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
- "balance" : "1000000000000100000",
+ "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060006017f0600055",
- "nonce" : "0",
+ "nonce" : "1",
"storage" : {
+ "0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
}
},
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
- "balance" : "10000",
+ "balance" : "908",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
},
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
- "balance" : "999999999999890000",
+ "balance" : "999999999999899092",
"code" : "0x",
"nonce" : "1",
"storage" : {
}
+ },
+ "d2571607e241ecf590ed94b12d87c94babe36db6" : {
+ "balance" : "23",
+ "code" : "0x",
+ "nonce" : "0",
+ "storage" : {
+ }
}
},
"pre" : {
diff --git a/tests/files/VMTests/RandomTests/201501091831.json b/tests/files/VMTests/RandomTests/201501091831.json
new file mode 100644
index 000000000..75906c8d6
--- /dev/null
+++ b/tests/files/VMTests/RandomTests/201501091831.json
@@ -0,0 +1,46 @@
+{
+ "randomVMtest" : {
+ "callcreates" : [
+ ],
+ "env" : {
+ "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+ "currentDifficulty" : "256",
+ "currentGasLimit" : "1000000",
+ "currentNumber" : "0",
+ "currentTimestamp" : "1",
+ "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
+ },
+ "exec" : {
+ "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+ "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "code" : "0x596b0768335591598873a0325111f337",
+ "data" : "0x",
+ "gas" : "10000",
+ "gasPrice" : "100000000000000",
+ "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "value" : "1000000000000000000"
+ },
+ "gas" : "9997",
+ "logs" : [
+ ],
+ "out" : "0x",
+ "post" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x596b0768335591598873a0325111f337",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x596b0768335591598873a0325111f337",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ }
+ }
+}
diff --git a/tests/files/VMTests/RandomTests/201501110744GO.json b/tests/files/VMTests/RandomTests/201501110744GO.json
new file mode 100644
index 000000000..83b0a1dc9
--- /dev/null
+++ b/tests/files/VMTests/RandomTests/201501110744GO.json
@@ -0,0 +1,46 @@
+{
+ "randomVMtest" : {
+ "callcreates" : [
+ ],
+ "env" : {
+ "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+ "currentDifficulty" : "256",
+ "currentGasLimit" : "1000000",
+ "currentNumber" : "0",
+ "currentTimestamp" : "1",
+ "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
+ },
+ "exec" : {
+ "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+ "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "code" : "0x3858423938447a730a049901951a0a1a",
+ "data" : "0x",
+ "gas" : "10000",
+ "gasPrice" : "100000000000000",
+ "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "value" : "1000000000000000000"
+ },
+ "gas" : "9991",
+ "logs" : [
+ ],
+ "out" : "0x",
+ "post" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x3858423938447a730a049901951a0a1a",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x3858423938447a730a049901951a0a1a",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ }
+ }
+}
diff --git a/tests/files/VMTests/RandomTests/201501120415GO.json b/tests/files/VMTests/RandomTests/201501120415GO.json
new file mode 100644
index 000000000..eabfba179
--- /dev/null
+++ b/tests/files/VMTests/RandomTests/201501120415GO.json
@@ -0,0 +1,46 @@
+{
+ "randomVMtest" : {
+ "callcreates" : [
+ ],
+ "env" : {
+ "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+ "currentDifficulty" : "256",
+ "currentGasLimit" : "1000000",
+ "currentNumber" : "0",
+ "currentTimestamp" : "1",
+ "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
+ },
+ "exec" : {
+ "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+ "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "code" : "0x619f9a423639",
+ "data" : "0x",
+ "gas" : "10000",
+ "gasPrice" : "100000000000000",
+ "origin" : "cd1722f3947def4cf144679da39c4c32bdc35681",
+ "value" : "1000000000000000000"
+ },
+ "gas" : "7442",
+ "logs" : [
+ ],
+ "out" : "0x",
+ "post" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x619f9a423639",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ },
+ "pre" : {
+ "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "1000000000000000000",
+ "code" : "0x619f9a423639",
+ "nonce" : "0",
+ "storage" : {
+ }
+ }
+ }
+ }
+}
diff --git a/tests/files/VMTests/RandomTests/201501091727.json b/tests/files/VMTests/RandomTests/201501120933PYTHON.json
index 619ce4a3d..04d232ba3 100644
--- a/tests/files/VMTests/RandomTests/201501091727.json
+++ b/tests/files/VMTests/RandomTests/201501120933PYTHON.json
@@ -11,7 +11,7 @@
"exec" : {
"address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
- "code" : "0x583438f0",
+ "code" : "0x6303376d4056f107",
"data" : "0x",
"gas" : "10000",
"gasPrice" : "100000000000000",
@@ -21,7 +21,7 @@
"pre" : {
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "1000000000000000000",
- "code" : "0x583438f0",
+ "code" : "0x6303376d4056f107",
"nonce" : "0",
"storage" : {
}
diff --git a/tests/helper/vm.go b/tests/helper/vm.go
index 123003faa..dac279753 100644
--- a/tests/helper/vm.go
+++ b/tests/helper/vm.go
@@ -58,7 +58,7 @@ func (self *Env) Difficulty() *big.Int { return self.difficulty }
func (self *Env) State() *state.StateDB { return self.state }
func (self *Env) GasLimit() *big.Int { return self.gasLimit }
func (self *Env) GetHash(n uint64) []byte {
- return nil
+ return crypto.Sha3([]byte(big.NewInt(int64(n)).String()))
}
func (self *Env) AddLog(log state.Log) {
self.logs = append(self.logs, log)
diff --git a/vm/context.go b/vm/context.go
index d14df1aa7..b48f1a657 100644
--- a/vm/context.go
+++ b/vm/context.go
@@ -61,6 +61,13 @@ func (c *Context) GetRangeValue(x, size uint64) []byte {
return ethutil.LeftPadBytes(c.Code[x:y], int(size))
}
+func (c *Context) GetCode(x, size uint64) []byte {
+ x = uint64(math.Min(float64(x), float64(len(c.Code))))
+ y := uint64(math.Min(float64(x+size), float64(len(c.Code))))
+
+ return ethutil.RightPadBytes(c.Code[x:y], int(size))
+}
+
func (c *Context) Return(ret []byte) []byte {
// Return the remaining gas to the caller
c.caller.ReturnGas(c.Gas, c.Price)
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index 04ba8190d..eec8c518f 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -2,7 +2,6 @@ package vm
import (
"fmt"
- "math"
"math/big"
"github.com/ethereum/go-ethereum/crypto"
@@ -491,21 +490,13 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
} else {
code = context.Code
}
-
+ context := NewContext(nil, nil, code, ethutil.Big0, ethutil.Big0)
var (
- size = uint64(len(code))
mOff = stack.Pop().Uint64()
cOff = stack.Pop().Uint64()
l = stack.Pop().Uint64()
)
-
- if cOff > size {
- cOff = 0
- l = 0
- } else if cOff+l > size {
- l = uint64(math.Min(float64(cOff+l), float64(size)))
- }
- codeCopy := code[cOff : cOff+l]
+ codeCopy := context.GetCode(cOff, l)
mem.Set(mOff, l, codeCopy)