updated tests

This commit is contained in:
obscuren 2015-01-12 13:49:47 +01:00
parent 35fe4313d5
commit 00348756bc
8 changed files with 186 additions and 26 deletions

View File

@ -6384,25 +6384,33 @@
"out" : "0x", "out" : "0x",
"post" : { "post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : { "095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "1000000000000100000", "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060036017f0600055", "code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060036017f0600055",
"nonce" : "0", "nonce" : "1",
"storage" : { "storage" : {
"0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
} }
}, },
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
"balance" : "10000", "balance" : "908",
"code" : "0x", "code" : "0x",
"nonce" : "0", "nonce" : "0",
"storage" : { "storage" : {
} }
}, },
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "999999999999890000", "balance" : "999999999999899092",
"code" : "0x", "code" : "0x",
"nonce" : "1", "nonce" : "1",
"storage" : { "storage" : {
} }
},
"d2571607e241ecf590ed94b12d87c94babe36db6" : {
"balance" : "23",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
} }
}, },
"pre" : { "pre" : {
@ -6445,25 +6453,33 @@
"out" : "0x", "out" : "0x",
"post" : { "post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : { "095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "1000000000000100000", "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b6020356000355560005260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6017f0600055", "code" : "0x7c601080600c6000396000f3006000355415600957005b6020356000355560005260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6017f0600055",
"nonce" : "0", "nonce" : "1",
"storage" : { "storage" : {
"0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
} }
}, },
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
"balance" : "10000", "balance" : "908",
"code" : "0x", "code" : "0x",
"nonce" : "0", "nonce" : "0",
"storage" : { "storage" : {
} }
}, },
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "999999999999890000", "balance" : "999999999999899092",
"code" : "0x", "code" : "0x",
"nonce" : "1", "nonce" : "1",
"storage" : { "storage" : {
} }
},
"d2571607e241ecf590ed94b12d87c94babe36db6" : {
"balance" : "23",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
} }
}, },
"pre" : { "pre" : {
@ -6506,25 +6522,33 @@
"out" : "0x", "out" : "0x",
"post" : { "post" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : { "095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "1000000000000100000", "balance" : "1000000000000099977",
"code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060006017f0600055", "code" : "0x7c601080600c6000396000f3006000355415600957005b60203560003555600052600060006017f0600055",
"nonce" : "0", "nonce" : "1",
"storage" : { "storage" : {
"0x" : "0xd2571607e241ecf590ed94b12d87c94babe36db6"
} }
}, },
"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : {
"balance" : "10000", "balance" : "908",
"code" : "0x", "code" : "0x",
"nonce" : "0", "nonce" : "0",
"storage" : { "storage" : {
} }
}, },
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "999999999999890000", "balance" : "999999999999899092",
"code" : "0x", "code" : "0x",
"nonce" : "1", "nonce" : "1",
"storage" : { "storage" : {
} }
},
"d2571607e241ecf590ed94b12d87c94babe36db6" : {
"balance" : "23",
"code" : "0x",
"nonce" : "0",
"storage" : {
}
} }
}, },
"pre" : { "pre" : {

View File

@ -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" : {
}
}
}
}
}

View File

@ -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" : {
}
}
}
}
}

View File

@ -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" : {
}
}
}
}
}

View File

@ -11,7 +11,7 @@
"exec" : { "exec" : {
"address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", "address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "cd1722f3947def4cf144679da39c4c32bdc35681", "caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x583438f0", "code" : "0x6303376d4056f107",
"data" : "0x", "data" : "0x",
"gas" : "10000", "gas" : "10000",
"gasPrice" : "100000000000000", "gasPrice" : "100000000000000",
@ -21,7 +21,7 @@
"pre" : { "pre" : {
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "1000000000000000000", "balance" : "1000000000000000000",
"code" : "0x583438f0", "code" : "0x6303376d4056f107",
"nonce" : "0", "nonce" : "0",
"storage" : { "storage" : {
} }

View File

@ -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) State() *state.StateDB { return self.state }
func (self *Env) GasLimit() *big.Int { return self.gasLimit } func (self *Env) GasLimit() *big.Int { return self.gasLimit }
func (self *Env) GetHash(n uint64) []byte { 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) { func (self *Env) AddLog(log state.Log) {
self.logs = append(self.logs, log) self.logs = append(self.logs, log)

View File

@ -61,6 +61,13 @@ func (c *Context) GetRangeValue(x, size uint64) []byte {
return ethutil.LeftPadBytes(c.Code[x:y], int(size)) 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 { func (c *Context) Return(ret []byte) []byte {
// Return the remaining gas to the caller // Return the remaining gas to the caller
c.caller.ReturnGas(c.Gas, c.Price) c.caller.ReturnGas(c.Gas, c.Price)

View File

@ -2,7 +2,6 @@ package vm
import ( import (
"fmt" "fmt"
"math"
"math/big" "math/big"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
@ -491,21 +490,13 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price *
} else { } else {
code = context.Code code = context.Code
} }
context := NewContext(nil, nil, code, ethutil.Big0, ethutil.Big0)
var ( var (
size = uint64(len(code))
mOff = stack.Pop().Uint64() mOff = stack.Pop().Uint64()
cOff = stack.Pop().Uint64() cOff = stack.Pop().Uint64()
l = stack.Pop().Uint64() l = stack.Pop().Uint64()
) )
codeCopy := context.GetCode(cOff, l)
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]
mem.Set(mOff, l, codeCopy) mem.Set(mOff, l, codeCopy)