Implemented value()

This commit is contained in:
Maran 2014-05-07 11:05:49 +02:00
parent 050684450b
commit 45ce820b11
2 changed files with 5 additions and 2 deletions

View File

@ -331,6 +331,7 @@ func (sm *StateManager) EvalScript(script []byte, object *StateObject, tx *Trans
Coinbase: block.Coinbase, Coinbase: block.Coinbase,
Time: block.Time, Time: block.Time,
Diff: block.Difficulty, Diff: block.Difficulty,
Value: tx.Value,
//Price: tx.GasPrice, //Price: tx.GasPrice,
}) })
closure.Call(vm, tx.Data, nil) closure.Call(vm, tx.Data, nil)

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethutil"
_ "github.com/obscuren/secp256k1-go" _ "github.com/obscuren/secp256k1-go"
"log"
_ "math" _ "math"
"math/big" "math/big"
) )
@ -53,6 +54,7 @@ type RuntimeVars struct {
Time int64 Time int64
Diff *big.Int Diff *big.Int
TxData []string TxData []string
Value *big.Int
} }
func NewVm(state *State, stateManager *StateManager, vars RuntimeVars) *Vm { func NewVm(state *State, stateManager *StateManager, vars RuntimeVars) *Vm {
@ -324,8 +326,8 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
case oCALLER: case oCALLER:
stack.Push(ethutil.BigD(closure.Callee().Address())) stack.Push(ethutil.BigD(closure.Callee().Address()))
case oCALLVALUE: case oCALLVALUE:
// FIXME: Original value of the call, not the current value log.Println("Value:", vm.vars.Value)
stack.Push(closure.Value) stack.Push(vm.vars.Value)
case oCALLDATALOAD: case oCALLDATALOAD:
require(1) require(1)
offset := stack.Pop().Int64() offset := stack.Pop().Int64()