aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ethchain/asm.go4
-rw-r--r--ethchain/types.go333
2 files changed, 165 insertions, 172 deletions
diff --git a/ethchain/asm.go b/ethchain/asm.go
index 492be0999..430a89450 100644
--- a/ethchain/asm.go
+++ b/ethchain/asm.go
@@ -21,9 +21,9 @@ func Disassemble(script []byte) (asm []string) {
asm = append(asm, fmt.Sprintf("%v", op))
switch op {
- case oPUSH1, oPUSH2, oPUSH3, oPUSH4, oPUSH5, oPUSH6, oPUSH7, oPUSH8, oPUSH9, oPUSH10, oPUSH11, oPUSH12, oPUSH13, oPUSH14, oPUSH15, oPUSH16, oPUSH17, oPUSH18, oPUSH19, oPUSH20, oPUSH21, oPUSH22, oPUSH23, oPUSH24, oPUSH25, oPUSH26, oPUSH27, oPUSH28, oPUSH29, oPUSH30, oPUSH31, oPUSH32:
+ case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32:
pc.Add(pc, ethutil.Big1)
- a := int64(op) - int64(oPUSH1) + 1
+ a := int64(op) - int64(PUSH1) + 1
data := script[pc.Int64() : pc.Int64()+a]
val := ethutil.BigD(data)
diff --git a/ethchain/types.go b/ethchain/types.go
index e0fdd5191..293871143 100644
--- a/ethchain/types.go
+++ b/ethchain/types.go
@@ -5,206 +5,206 @@ type OpCode int
// Op codes
const (
// 0x0 range - arithmetic ops
- oSTOP = 0x00
- oADD = 0x01
- oMUL = 0x02
- oSUB = 0x03
- oDIV = 0x04
- oSDIV = 0x05
- oMOD = 0x06
- oSMOD = 0x07
- oEXP = 0x08
- oNEG = 0x09
- oLT = 0x0a
- oGT = 0x0b
- oEQ = 0x0c
- oNOT = 0x0d
+ STOP = 0x00
+ ADD = 0x01
+ MUL = 0x02
+ SUB = 0x03
+ DIV = 0x04
+ SDIV = 0x05
+ MOD = 0x06
+ SMOD = 0x07
+ EXP = 0x08
+ NEG = 0x09
+ LT = 0x0a
+ GT = 0x0b
+ EQ = 0x0c
+ NOT = 0x0d
// 0x10 range - bit ops
- oAND = 0x10
- oOR = 0x11
- oXOR = 0x12
- oBYTE = 0x13
+ AND = 0x10
+ OR = 0x11
+ XOR = 0x12
+ BYTE = 0x13
// 0x20 range - crypto
- oSHA3 = 0x20
+ SHA3 = 0x20
// 0x30 range - closure state
- oADDRESS = 0x30
- oBALANCE = 0x31
- oORIGIN = 0x32
- oCALLER = 0x33
- oCALLVALUE = 0x34
- oCALLDATALOAD = 0x35
- oCALLDATASIZE = 0x36
- oGASPRICE = 0x37
+ ADDRESS = 0x30
+ BALANCE = 0x31
+ ORIGIN = 0x32
+ CALLER = 0x33
+ CALLVALUE = 0x34
+ CALLDATALOAD = 0x35
+ CALLDATASIZE = 0x36
+ GASPRICE = 0x37
// 0x40 range - block operations
- oPREVHASH = 0x40
- oCOINBASE = 0x41
- oTIMESTAMP = 0x42
- oNUMBER = 0x43
- oDIFFICULTY = 0x44
- oGASLIMIT = 0x45
+ PREVHASH = 0x40
+ COINBASE = 0x41
+ TIMESTAMP = 0x42
+ NUMBER = 0x43
+ DIFFICULTY = 0x44
+ GASLIMIT = 0x45
// 0x50 range - 'storage' and execution
- oPOP = 0x51
- oDUP = 0x52
- oSWAP = 0x53
- oMLOAD = 0x54
- oMSTORE = 0x55
- oMSTORE8 = 0x56
- oSLOAD = 0x57
- oSSTORE = 0x58
- oJUMP = 0x59
- oJUMPI = 0x5a
- oPC = 0x5b
- oMSIZE = 0x5c
+ POP = 0x51
+ DUP = 0x52
+ SWAP = 0x53
+ MLOAD = 0x54
+ MSTORE = 0x55
+ MSTORE8 = 0x56
+ SLOAD = 0x57
+ SSTORE = 0x58
+ JUMP = 0x59
+ JUMPI = 0x5a
+ PC = 0x5b
+ MSIZE = 0x5c
// 0x60 range
- oPUSH1 = 0x60
- oPUSH2 = 0x61
- oPUSH3 = 0x62
- oPUSH4 = 0x63
- oPUSH5 = 0x64
- oPUSH6 = 0x65
- oPUSH7 = 0x66
- oPUSH8 = 0x67
- oPUSH9 = 0x68
- oPUSH10 = 0x69
- oPUSH11 = 0x6a
- oPUSH12 = 0x6b
- oPUSH13 = 0x6c
- oPUSH14 = 0x6d
- oPUSH15 = 0x6e
- oPUSH16 = 0x6f
- oPUSH17 = 0x70
- oPUSH18 = 0x71
- oPUSH19 = 0x72
- oPUSH20 = 0x73
- oPUSH21 = 0x74
- oPUSH22 = 0x75
- oPUSH23 = 0x76
- oPUSH24 = 0x77
- oPUSH25 = 0x78
- oPUSH26 = 0x79
- oPUSH27 = 0x7a
- oPUSH28 = 0x7b
- oPUSH29 = 0x7c
- oPUSH30 = 0x7d
- oPUSH31 = 0x7e
- oPUSH32 = 0x7f
+ PUSH1 = 0x60
+ PUSH2 = 0x61
+ PUSH3 = 0x62
+ PUSH4 = 0x63
+ PUSH5 = 0x64
+ PUSH6 = 0x65
+ PUSH7 = 0x66
+ PUSH8 = 0x67
+ PUSH9 = 0x68
+ PUSH10 = 0x69
+ PUSH11 = 0x6a
+ PUSH12 = 0x6b
+ PUSH13 = 0x6c
+ PUSH14 = 0x6d
+ PUSH15 = 0x6e
+ PUSH16 = 0x6f
+ PUSH17 = 0x70
+ PUSH18 = 0x71
+ PUSH19 = 0x72
+ PUSH20 = 0x73
+ PUSH21 = 0x74
+ PUSH22 = 0x75
+ PUSH23 = 0x76
+ PUSH24 = 0x77
+ PUSH25 = 0x78
+ PUSH26 = 0x79
+ PUSH27 = 0x7a
+ PUSH28 = 0x7b
+ PUSH29 = 0x7c
+ PUSH30 = 0x7d
+ PUSH31 = 0x7e
+ PUSH32 = 0x7f
// 0xf0 range - closures
- oCREATE = 0xf0
- oCALL = 0xf1
- oRETURN = 0xf2
+ CREATE = 0xf0
+ CALL = 0xf1
+ RETURN = 0xf2
// 0x70 range - other
- oLOG = 0xfe // XXX Unofficial
- oSUICIDE = 0xff
+ LOG = 0xfe // XXX Unofficial
+ SUICIDE = 0xff
)
// Since the opcodes aren't all in order we can't use a regular slice
var opCodeToString = map[OpCode]string{
// 0x0 range - arithmetic ops
- oSTOP: "STOP",
- oADD: "ADD",
- oMUL: "MUL",
- oSUB: "SUB",
- oDIV: "DIV",
- oSDIV: "SDIV",
- oMOD: "MOD",
- oSMOD: "SMOD",
- oEXP: "EXP",
- oNEG: "NEG",
- oLT: "LT",
- oGT: "GT",
- oEQ: "EQ",
- oNOT: "NOT",
+ STOP: "STOP",
+ ADD: "ADD",
+ MUL: "MUL",
+ SUB: "SUB",
+ DIV: "DIV",
+ SDIV: "SDIV",
+ MOD: "MOD",
+ SMOD: "SMOD",
+ EXP: "EXP",
+ NEG: "NEG",
+ LT: "LT",
+ GT: "GT",
+ EQ: "EQ",
+ NOT: "NOT",
// 0x10 range - bit ops
- oAND: "AND",
- oOR: "OR",
- oXOR: "XOR",
- oBYTE: "BYTE",
+ AND: "AND",
+ OR: "OR",
+ XOR: "XOR",
+ BYTE: "BYTE",
// 0x20 range - crypto
- oSHA3: "SHA3",
+ SHA3: "SHA3",
// 0x30 range - closure state
- oADDRESS: "ADDRESS",
- oBALANCE: "BALANCE",
- oORIGIN: "ORIGIN",
- oCALLER: "CALLER",
- oCALLVALUE: "CALLVALUE",
- oCALLDATALOAD: "CALLDATALOAD",
- oCALLDATASIZE: "CALLDATASIZE",
- oGASPRICE: "TXGASPRICE",
+ ADDRESS: "ADDRESS",
+ BALANCE: "BALANCE",
+ ORIGIN: "ORIGIN",
+ CALLER: "CALLER",
+ CALLVALUE: "CALLVALUE",
+ CALLDATALOAD: "CALLDATALOAD",
+ CALLDATASIZE: "CALLDATASIZE",
+ GASPRICE: "TXGASPRICE",
// 0x40 range - block operations
- oPREVHASH: "PREVHASH",
- oCOINBASE: "COINBASE",
- oTIMESTAMP: "TIMESTAMP",
- oNUMBER: "NUMBER",
- oDIFFICULTY: "DIFFICULTY",
- oGASLIMIT: "GASLIMIT",
+ PREVHASH: "PREVHASH",
+ COINBASE: "COINBASE",
+ TIMESTAMP: "TIMESTAMP",
+ NUMBER: "NUMBER",
+ DIFFICULTY: "DIFFICULTY",
+ GASLIMIT: "GASLIMIT",
// 0x50 range - 'storage' and execution
- oDUP: "DUP",
- oSWAP: "SWAP",
- oMLOAD: "MLOAD",
- oMSTORE: "MSTORE",
- oMSTORE8: "MSTORE8",
- oSLOAD: "SLOAD",
- oSSTORE: "SSTORE",
- oJUMP: "JUMP",
- oJUMPI: "JUMPI",
- oPC: "PC",
- oMSIZE: "MSIZE",
+ DUP: "DUP",
+ SWAP: "SWAP",
+ MLOAD: "MLOAD",
+ MSTORE: "MSTORE",
+ MSTORE8: "MSTORE8",
+ SLOAD: "SLOAD",
+ SSTORE: "SSTORE",
+ JUMP: "JUMP",
+ JUMPI: "JUMPI",
+ PC: "PC",
+ MSIZE: "MSIZE",
// 0x60 range - push
- oPUSH1: "PUSH1",
- oPUSH2: "PUSH2",
- oPUSH3: "PUSH3",
- oPUSH4: "PUSH4",
- oPUSH5: "PUSH5",
- oPUSH6: "PUSH6",
- oPUSH7: "PUSH7",
- oPUSH8: "PUSH8",
- oPUSH9: "PUSH9",
- oPUSH10: "PUSH10",
- oPUSH11: "PUSH11",
- oPUSH12: "PUSH12",
- oPUSH13: "PUSH13",
- oPUSH14: "PUSH14",
- oPUSH15: "PUSH15",
- oPUSH16: "PUSH16",
- oPUSH17: "PUSH17",
- oPUSH18: "PUSH18",
- oPUSH19: "PUSH19",
- oPUSH20: "PUSH20",
- oPUSH21: "PUSH21",
- oPUSH22: "PUSH22",
- oPUSH23: "PUSH23",
- oPUSH24: "PUSH24",
- oPUSH25: "PUSH25",
- oPUSH26: "PUSH26",
- oPUSH27: "PUSH27",
- oPUSH28: "PUSH28",
- oPUSH29: "PUSH29",
- oPUSH30: "PUSH30",
- oPUSH31: "PUSH31",
- oPUSH32: "PUSH32",
+ PUSH1: "PUSH1",
+ PUSH2: "PUSH2",
+ PUSH3: "PUSH3",
+ PUSH4: "PUSH4",
+ PUSH5: "PUSH5",
+ PUSH6: "PUSH6",
+ PUSH7: "PUSH7",
+ PUSH8: "PUSH8",
+ PUSH9: "PUSH9",
+ PUSH10: "PUSH10",
+ PUSH11: "PUSH11",
+ PUSH12: "PUSH12",
+ PUSH13: "PUSH13",
+ PUSH14: "PUSH14",
+ PUSH15: "PUSH15",
+ PUSH16: "PUSH16",
+ PUSH17: "PUSH17",
+ PUSH18: "PUSH18",
+ PUSH19: "PUSH19",
+ PUSH20: "PUSH20",
+ PUSH21: "PUSH21",
+ PUSH22: "PUSH22",
+ PUSH23: "PUSH23",
+ PUSH24: "PUSH24",
+ PUSH25: "PUSH25",
+ PUSH26: "PUSH26",
+ PUSH27: "PUSH27",
+ PUSH28: "PUSH28",
+ PUSH29: "PUSH29",
+ PUSH30: "PUSH30",
+ PUSH31: "PUSH31",
+ PUSH32: "PUSH32",
// 0xf0 range
- oCREATE: "CREATE",
- oCALL: "CALL",
- oRETURN: "RETURN",
+ CREATE: "CREATE",
+ CALL: "CALL",
+ RETURN: "RETURN",
// 0x70 range - other
- oLOG: "LOG",
- oSUICIDE: "SUICIDE",
+ LOG: "LOG",
+ SUICIDE: "SUICIDE",
}
func (o OpCode) String() string {
@@ -322,10 +322,3 @@ func IsOpCode(s string) bool {
}
return false
}
-
-func AppendScript(init, script []byte) []byte {
- s := append(init, byte(oRETURN))
- s = append(s, script...)
-
- return s
-}