aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-04-11 06:14:19 +0800
committerobscuren <geffobscura@gmail.com>2014-04-11 06:14:19 +0800
commit891f7259091cba0fe5e8c9370e7b0b1055b56683 (patch)
tree216326e73f2c3c893b942ed7c016d2327c1367e2
parent969e748dce5562fc543990b6911d53ab699e393e (diff)
downloaddexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar.gz
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar.bz2
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar.lz
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar.xz
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.tar.zst
dexon-891f7259091cba0fe5e8c9370e7b0b1055b56683.zip
Added better address format
-rw-r--r--ethchain/stack.go1
-rw-r--r--ethchain/vm.go11
-rw-r--r--ethchain/vm_test.go5
-rw-r--r--ethutil/parsing.go5
4 files changed, 18 insertions, 4 deletions
diff --git a/ethchain/stack.go b/ethchain/stack.go
index e3fc4b684..0dadd15e5 100644
--- a/ethchain/stack.go
+++ b/ethchain/stack.go
@@ -55,6 +55,7 @@ const (
// 0x50 range - 'storage' and execution
oPUSH = 0x50
+ oPUSH20 = 0x80
oPOP = 0x51
oDUP = 0x52
oSWAP = 0x53
diff --git a/ethchain/vm.go b/ethchain/vm.go
index f94425d2d..dd99ee790 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -301,7 +301,6 @@ func (vm *Vm) RunClosure(closure *Closure) []byte {
// 0x50 range
case oPUSH: // Push PC+1 on to the stack
pc.Add(pc, ethutil.Big1)
- //val := closure.GetMem(pc).BigInt()
data := closure.Gets(pc, big.NewInt(32))
val := ethutil.BigD(data.Bytes())
@@ -309,6 +308,16 @@ func (vm *Vm) RunClosure(closure *Closure) []byte {
stack.Push(val)
pc.Add(pc, big.NewInt(31))
+ case oPUSH20:
+ pc.Add(pc, ethutil.Big1)
+ data := closure.Gets(pc, big.NewInt(20))
+ val := ethutil.BigD(data.Bytes())
+
+ // Push value to stack
+ stack.Push(val)
+
+ pc.Add(pc, big.NewInt(19))
+
case oPOP:
stack.Pop()
case oDUP:
diff --git a/ethchain/vm_test.go b/ethchain/vm_test.go
index dc74422cc..923d3526c 100644
--- a/ethchain/vm_test.go
+++ b/ethchain/vm_test.go
@@ -114,12 +114,13 @@ func TestRun4(t *testing.T) {
int8 ret = 0
int8 arg = 10
- call(938726394128221156290138488023434115948430767407, 0, 100000000, arg, ret)
+ addr address = "a46df28529eb8aa8b8c025b0b413c5f4b688352f"
+ call(address, 0, 100000000, arg, ret)
`), false)
if err != nil {
fmt.Println(err)
}
- asm = append(asm, "LOG")
+ //asm = append(asm, "LOG")
fmt.Println(asm)
callerScript := ethutil.Assemble(asm...)
diff --git a/ethutil/parsing.go b/ethutil/parsing.go
index 0de396654..278414982 100644
--- a/ethutil/parsing.go
+++ b/ethutil/parsing.go
@@ -51,7 +51,10 @@ var OpCodes = map[string]byte{
"GASLIMIT": 0x45,
// 0x50 range - 'storage' and execution
- "PUSH": 0x50,
+ "PUSH": 0x50,
+
+ "PUSH20": 0x80,
+
"POP": 0x51,
"DUP": 0x52,
"SWAP": 0x53,