aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-17 04:46:47 +0800
committerobscuren <geffobscura@gmail.com>2015-03-17 04:46:47 +0800
commit4e181c5764b78193705f91d3220710bb63b8962f (patch)
treef07b42336b6099b20585e24cef147dc4280e9555
parent6aa390abfb8553c3cbbd5fa658f7f3788d3c262c (diff)
downloaddexon-4e181c5764b78193705f91d3220710bb63b8962f.tar
dexon-4e181c5764b78193705f91d3220710bb63b8962f.tar.gz
dexon-4e181c5764b78193705f91d3220710bb63b8962f.tar.bz2
dexon-4e181c5764b78193705f91d3220710bb63b8962f.tar.lz
dexon-4e181c5764b78193705f91d3220710bb63b8962f.tar.xz
dexon-4e181c5764b78193705f91d3220710bb63b8962f.tar.zst
dexon-4e181c5764b78193705f91d3220710bb63b8962f.zip
Moved gas
-rw-r--r--vm/common.go78
-rw-r--r--vm/gas.go49
-rw-r--r--vm/vm.go4
3 files changed, 65 insertions, 66 deletions
diff --git a/vm/common.go b/vm/common.go
index 1f07ec8a2..cedc0f309 100644
--- a/vm/common.go
+++ b/vm/common.go
@@ -18,8 +18,23 @@ type Type byte
const (
StdVmTy Type = iota
JitVmTy
-
MaxVmTy
+
+ MaxCallDepth = 1025
+
+ LogTyPretty byte = 0x1
+ LogTyDiff byte = 0x2
+)
+
+var (
+ Pow256 = common.BigPow(2, 256)
+
+ U256 = common.U256
+ S256 = common.S256
+
+ Zero = common.Big0
+
+ max = big.NewInt(math.MaxInt64)
)
func NewVm(env Environment) VirtualMachine {
@@ -34,67 +49,6 @@ func NewVm(env Environment) VirtualMachine {
}
}
-var (
- GasQuickStep = big.NewInt(2)
- GasFastestStep = big.NewInt(3)
- GasFastStep = big.NewInt(5)
- GasMidStep = big.NewInt(8)
- GasSlowStep = big.NewInt(10)
- GasExtStep = big.NewInt(20)
-
- GasStorageGet = big.NewInt(50)
- GasStorageAdd = big.NewInt(20000)
- GasStorageMod = big.NewInt(5000)
- GasLogBase = big.NewInt(375)
- GasLogTopic = big.NewInt(375)
- GasLogByte = big.NewInt(8)
- GasCreate = big.NewInt(32000)
- GasCreateByte = big.NewInt(200)
- GasCall = big.NewInt(40)
- GasCallValueTransfer = big.NewInt(9000)
- GasStipend = big.NewInt(2300)
- GasCallNewAccount = big.NewInt(25000)
- GasReturn = big.NewInt(0)
- GasStop = big.NewInt(0)
- GasJumpDest = big.NewInt(1)
-
- RefundStorage = big.NewInt(15000)
- RefundSuicide = big.NewInt(24000)
-
- GasMemWord = big.NewInt(3)
- GasQuadCoeffDenom = big.NewInt(512)
- GasContractByte = big.NewInt(200)
- GasTransaction = big.NewInt(21000)
- GasTxDataNonzeroByte = big.NewInt(68)
- GasTxDataZeroByte = big.NewInt(4)
- GasTx = big.NewInt(21000)
- GasExp = big.NewInt(10)
- GasExpByte = big.NewInt(10)
-
- GasSha3Base = big.NewInt(30)
- GasSha3Word = big.NewInt(6)
- GasSha256Base = big.NewInt(60)
- GasSha256Word = big.NewInt(12)
- GasRipemdBase = big.NewInt(600)
- GasRipemdWord = big.NewInt(12)
- GasEcrecover = big.NewInt(3000)
- GasIdentityBase = big.NewInt(15)
- GasIdentityWord = big.NewInt(3)
- GasCopyWord = big.NewInt(3)
-
- Pow256 = common.BigPow(2, 256)
-
- LogTyPretty byte = 0x1
- LogTyDiff byte = 0x2
-
- U256 = common.U256
- S256 = common.S256
-
- Zero = common.Big0
-)
-
-const MaxCallDepth = 1025
-
func calcMemSize(off, l *big.Int) *big.Int {
if l.Cmp(common.Big0) == 0 {
return common.Big0
diff --git a/vm/gas.go b/vm/gas.go
index a19afeb67..c4d5e4c4e 100644
--- a/vm/gas.go
+++ b/vm/gas.go
@@ -7,6 +7,55 @@ type req struct {
gas *big.Int
}
+var (
+ GasQuickStep = big.NewInt(2)
+ GasFastestStep = big.NewInt(3)
+ GasFastStep = big.NewInt(5)
+ GasMidStep = big.NewInt(8)
+ GasSlowStep = big.NewInt(10)
+ GasExtStep = big.NewInt(20)
+
+ GasStorageGet = big.NewInt(50)
+ GasStorageAdd = big.NewInt(20000)
+ GasStorageMod = big.NewInt(5000)
+ GasLogBase = big.NewInt(375)
+ GasLogTopic = big.NewInt(375)
+ GasLogByte = big.NewInt(8)
+ GasCreate = big.NewInt(32000)
+ GasCreateByte = big.NewInt(200)
+ GasCall = big.NewInt(40)
+ GasCallValueTransfer = big.NewInt(9000)
+ GasStipend = big.NewInt(2300)
+ GasCallNewAccount = big.NewInt(25000)
+ GasReturn = big.NewInt(0)
+ GasStop = big.NewInt(0)
+ GasJumpDest = big.NewInt(1)
+
+ RefundStorage = big.NewInt(15000)
+ RefundSuicide = big.NewInt(24000)
+
+ GasMemWord = big.NewInt(3)
+ GasQuadCoeffDenom = big.NewInt(512)
+ GasContractByte = big.NewInt(200)
+ GasTransaction = big.NewInt(21000)
+ GasTxDataNonzeroByte = big.NewInt(68)
+ GasTxDataZeroByte = big.NewInt(4)
+ GasTx = big.NewInt(21000)
+ GasExp = big.NewInt(10)
+ GasExpByte = big.NewInt(10)
+
+ GasSha3Base = big.NewInt(30)
+ GasSha3Word = big.NewInt(6)
+ GasSha256Base = big.NewInt(60)
+ GasSha256Word = big.NewInt(12)
+ GasRipemdBase = big.NewInt(600)
+ GasRipemdWord = big.NewInt(12)
+ GasEcrecover = big.NewInt(3000)
+ GasIdentityBase = big.NewInt(15)
+ GasIdentityWord = big.NewInt(3)
+ GasCopyWord = big.NewInt(3)
+)
+
var _baseCheck = map[OpCode]req{
// Req stack Gas price
ADD: {2, GasFastestStep},
diff --git a/vm/vm.go b/vm/vm.go
index 5043babcd..4ef888e36 100644
--- a/vm/vm.go
+++ b/vm/vm.go
@@ -33,10 +33,7 @@ func New(env Environment) *Vm {
}
func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
- //func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) {
self.env.SetDepth(self.env.Depth() + 1)
-
- //context := NewContext(caller, me, code, gas, price)
var (
caller = context.caller
code = context.Code
@@ -57,7 +54,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
ret = context.Return(nil)
err = fmt.Errorf("%v", r)
-
}
}()
}