Removed all old code
This commit is contained in:
parent
f2a1260294
commit
b20c0b1d59
|
@ -1,95 +1,88 @@
|
||||||
package ethutil
|
package ethutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"math/big"
|
"math/big"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Op codes
|
// Op codes
|
||||||
var OpCodes = map[string]string{
|
var OpCodes = map[string]byte{
|
||||||
"STOP": "0",
|
"STOP": 0,
|
||||||
"ADD": "1",
|
"ADD": 1,
|
||||||
"MUL": "2",
|
"MUL": 2,
|
||||||
"SUB": "3",
|
"SUB": 3,
|
||||||
"DIV": "4",
|
"DIV": 4,
|
||||||
"SDIV": "5",
|
"SDIV": 5,
|
||||||
"MOD": "6",
|
"MOD": 6,
|
||||||
"SMOD": "7",
|
"SMOD": 7,
|
||||||
"EXP": "8",
|
"EXP": 8,
|
||||||
"NEG": "9",
|
"NEG": 9,
|
||||||
"LT": "10",
|
"LT": 10,
|
||||||
"LE": "11",
|
"LE": 11,
|
||||||
"GT": "12",
|
"GT": 12,
|
||||||
"GE": "13",
|
"GE": 13,
|
||||||
"EQ": "14",
|
"EQ": 14,
|
||||||
"NOT": "15",
|
"NOT": 15,
|
||||||
"MYADDRESS": "16",
|
"MYADDRESS": 16,
|
||||||
"TXSENDER": "17",
|
"TXSENDER": 17,
|
||||||
|
"TXVALUE": 18,
|
||||||
"PUSH": "48",
|
"TXFEE": 19,
|
||||||
"POP": "49",
|
"TXDATAN": 20,
|
||||||
"LOAD": "54",
|
"TXDATA": 21,
|
||||||
|
"BLK_PREVHASH": 22,
|
||||||
|
"BLK_COINBASE": 23,
|
||||||
|
"BLK_TIMESTAMP": 24,
|
||||||
|
"BLK_NUMBER": 25,
|
||||||
|
"BLK_DIFFICULTY": 26,
|
||||||
|
"BASEFEE": 27,
|
||||||
|
"SHA256": 32,
|
||||||
|
"RIPEMD160": 33,
|
||||||
|
"ECMUL": 34,
|
||||||
|
"ECADD": 35,
|
||||||
|
"ECSIGN": 36,
|
||||||
|
"ECRECOVER": 37,
|
||||||
|
"ECVALID": 38,
|
||||||
|
"SHA3": 39,
|
||||||
|
"PUSH": 48,
|
||||||
|
"POP": 49,
|
||||||
|
"DUP": 50,
|
||||||
|
"SWAP": 51,
|
||||||
|
"MLOAD": 52,
|
||||||
|
"MSTORE": 53,
|
||||||
|
"SLOAD": 54,
|
||||||
|
"SSTORE": 55,
|
||||||
|
"JMP": 56,
|
||||||
|
"JMPI": 57,
|
||||||
|
"IND": 58,
|
||||||
|
"EXTRO": 59,
|
||||||
|
"BALANCE": 60,
|
||||||
|
"MKTX": 61,
|
||||||
|
"SUICIDE": 62,
|
||||||
}
|
}
|
||||||
|
|
||||||
func CompileInstr(s string) (string, error) {
|
func IsOpCode(s string) bool {
|
||||||
tokens := strings.Split(s, " ")
|
for key, _ := range OpCodes {
|
||||||
if OpCodes[tokens[0]] == "" {
|
if key == s {
|
||||||
return s, errors.New(fmt.Sprintf("OP not found: %s", tokens[0]))
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func CompileInstr(s string) ([]byte, error) {
|
||||||
|
isOp := IsOpCode(s)
|
||||||
|
if isOp {
|
||||||
|
return []byte{OpCodes[s]}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
code := OpCodes[tokens[0]] // Replace op codes with the proper numerical equivalent
|
num := new(big.Int)
|
||||||
op := new(big.Int)
|
num.SetString(s, 0)
|
||||||
op.SetString(code, 0)
|
|
||||||
|
|
||||||
args := make([]*big.Int, 6)
|
return num.Bytes(), nil
|
||||||
for i, val := range tokens[1:len(tokens)] {
|
|
||||||
num := new(big.Int)
|
|
||||||
num.SetString(val, 0)
|
|
||||||
args[i] = num
|
|
||||||
}
|
|
||||||
|
|
||||||
// Big int equation = op + x * 256 + y * 256**2 + z * 256**3 + a * 256**4 + b * 256**5 + c * 256**6
|
|
||||||
base := new(big.Int)
|
|
||||||
x := new(big.Int)
|
|
||||||
y := new(big.Int)
|
|
||||||
z := new(big.Int)
|
|
||||||
a := new(big.Int)
|
|
||||||
b := new(big.Int)
|
|
||||||
c := new(big.Int)
|
|
||||||
|
|
||||||
if args[0] != nil {
|
|
||||||
x.Mul(args[0], big.NewInt(256))
|
|
||||||
}
|
|
||||||
if args[1] != nil {
|
|
||||||
y.Mul(args[1], BigPow(256, 2))
|
|
||||||
}
|
|
||||||
if args[2] != nil {
|
|
||||||
z.Mul(args[2], BigPow(256, 3))
|
|
||||||
}
|
|
||||||
if args[3] != nil {
|
|
||||||
a.Mul(args[3], BigPow(256, 4))
|
|
||||||
}
|
|
||||||
if args[4] != nil {
|
|
||||||
b.Mul(args[4], BigPow(256, 5))
|
|
||||||
}
|
|
||||||
if args[5] != nil {
|
|
||||||
c.Mul(args[5], BigPow(256, 6))
|
|
||||||
}
|
|
||||||
|
|
||||||
base.Add(op, x)
|
|
||||||
base.Add(base, y)
|
|
||||||
base.Add(base, z)
|
|
||||||
base.Add(base, a)
|
|
||||||
base.Add(base, b)
|
|
||||||
base.Add(base, c)
|
|
||||||
|
|
||||||
return base.String(), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Instr(instr string) (int, []string, error) {
|
func Instr(instr string) (int, []string, error) {
|
||||||
|
|
||||||
base := new(big.Int)
|
base := new(big.Int)
|
||||||
base.SetString(instr, 0)
|
base.SetString(instr, 0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue