Moved gas
This commit is contained in:
parent
6aa390abfb
commit
4e181c5764
78
vm/common.go
78
vm/common.go
@ -18,8 +18,23 @@ type Type byte
|
|||||||
const (
|
const (
|
||||||
StdVmTy Type = iota
|
StdVmTy Type = iota
|
||||||
JitVmTy
|
JitVmTy
|
||||||
|
|
||||||
MaxVmTy
|
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 {
|
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 {
|
func calcMemSize(off, l *big.Int) *big.Int {
|
||||||
if l.Cmp(common.Big0) == 0 {
|
if l.Cmp(common.Big0) == 0 {
|
||||||
return common.Big0
|
return common.Big0
|
||||||
|
49
vm/gas.go
49
vm/gas.go
@ -7,6 +7,55 @@ type req struct {
|
|||||||
gas *big.Int
|
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{
|
var _baseCheck = map[OpCode]req{
|
||||||
// Req stack Gas price
|
// Req stack Gas price
|
||||||
ADD: {2, GasFastestStep},
|
ADD: {2, GasFastestStep},
|
||||||
|
4
vm/vm.go
4
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(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)
|
self.env.SetDepth(self.env.Depth() + 1)
|
||||||
|
|
||||||
//context := NewContext(caller, me, code, gas, price)
|
|
||||||
var (
|
var (
|
||||||
caller = context.caller
|
caller = context.caller
|
||||||
code = context.Code
|
code = context.Code
|
||||||
@ -57,7 +54,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
|||||||
ret = context.Return(nil)
|
ret = context.Return(nil)
|
||||||
|
|
||||||
err = fmt.Errorf("%v", r)
|
err = fmt.Errorf("%v", r)
|
||||||
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user