Added editor for contracts
This commit is contained in:
parent
ab7dc92404
commit
6736c03711
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"bytes"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -78,6 +79,32 @@ func (i *Console) ValidateInput(action string, argumentLength int) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *Console) Editor() []string {
|
||||||
|
var buff bytes.Buffer
|
||||||
|
for {
|
||||||
|
reader := bufio.NewReader(os.Stdin)
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if len(str) > 0 {
|
||||||
|
buff.Write(str)
|
||||||
|
buff.WriteString("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil && err.Error() == "EOF" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(strings.NewReader(buff.String()))
|
||||||
|
scanner.Split(bufio.ScanLines)
|
||||||
|
|
||||||
|
var lines []string
|
||||||
|
for scanner.Scan() {
|
||||||
|
lines = append(lines, scanner.Text())
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines
|
||||||
|
}
|
||||||
|
|
||||||
func (i *Console) PrintRoot() {
|
func (i *Console) PrintRoot() {
|
||||||
root := ethutil.NewValue(i.trie.Root)
|
root := ethutil.NewValue(i.trie.Root)
|
||||||
if len(root.Bytes()) != 0 {
|
if len(root.Bytes()) != 0 {
|
||||||
@ -169,10 +196,17 @@ func (i *Console) ParseInput(input string) bool {
|
|||||||
fmt.Println("gettx: tx not found")
|
fmt.Println("gettx: tx not found")
|
||||||
}
|
}
|
||||||
case "contract":
|
case "contract":
|
||||||
contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), []string{"PUSH", "1234"})
|
fmt.Println("Contract editor (Ctrl-D = done)")
|
||||||
fmt.Printf("%x\n", contract.Hash())
|
code := i.Editor()
|
||||||
|
|
||||||
|
contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), code)
|
||||||
|
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
|
||||||
|
keyRing := ethutil.NewValueFromBytes(data)
|
||||||
|
contract.Sign(keyRing.Get(0).Bytes())
|
||||||
|
|
||||||
i.ethereum.TxPool.QueueTransaction(contract)
|
i.ethereum.TxPool.QueueTransaction(contract)
|
||||||
|
|
||||||
|
fmt.Printf("%x\n", contract.Hash())
|
||||||
case "exit", "quit", "q":
|
case "exit", "quit", "q":
|
||||||
return false
|
return false
|
||||||
case "help":
|
case "help":
|
||||||
|
Loading…
Reference in New Issue
Block a user