aboutsummaryrefslogtreecommitdiffstats
path: root/dev_console.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-02-28 19:20:47 +0800
committerobscuren <geffobscura@gmail.com>2014-02-28 19:20:47 +0800
commit0adfa489de3fb88c995246d0b70af8bbd06f8db7 (patch)
treeaf34f0c678fc75dda0d186285240beef9aa5b42c /dev_console.go
parent6db8b5d06a41ef573ec43394a11fd0e668372860 (diff)
parent560a7073f457a32c9d053f1a4b20f76d949f519d (diff)
downloadgo-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar.gz
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar.bz2
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar.lz
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar.xz
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.tar.zst
go-tangerine-0adfa489de3fb88c995246d0b70af8bbd06f8db7.zip
Merge branch 'release/0.3.0'0.3.0
Diffstat (limited to 'dev_console.go')
-rw-r--r--dev_console.go51
1 files changed, 43 insertions, 8 deletions
diff --git a/dev_console.go b/dev_console.go
index f2283e341..09e06aa22 100644
--- a/dev_console.go
+++ b/dev_console.go
@@ -2,6 +2,7 @@ package main
import (
"bufio"
+ "bytes"
"encoding/hex"
"errors"
"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() {
root := ethutil.NewValue(i.trie.Root)
if len(root.Bytes()) != 0 {
@@ -136,7 +163,8 @@ func (i *Console) ParseInput(input string) bool {
case "block":
encoded, _ := hex.DecodeString(tokens[1])
block := i.ethereum.BlockManager.BlockChain().GetBlock(encoded)
- fmt.Println(block)
+ info := block.BlockInfo()
+ fmt.Printf("++++++++++ #%d ++++++++++\n%v\n", info.Number, block)
case "say":
i.ethereum.Broadcast(ethwire.MsgTalkTy, []interface{}{tokens[1]})
case "addp":
@@ -151,13 +179,13 @@ func (i *Console) ParseInput(input string) bool {
fmt.Println("recipient err:", err)
} else {
tx := ethchain.NewTransaction(recipient, ethutil.Big(tokens[2]), []string{""})
- data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
- keyRing := ethutil.NewValueFromBytes(data)
- tx.Sign(keyRing.Get(0).Bytes())
- fmt.Printf("%x\n", tx.Hash())
+
+ key := ethutil.Config.Db.GetKeys()[0]
+ tx.Sign(key.PrivateKey)
i.ethereum.TxPool.QueueTransaction(tx)
- }
+ fmt.Printf("%x\n", tx.Hash())
+ }
case "gettx":
addr, _ := hex.DecodeString(tokens[1])
data, _ := ethutil.Config.Db.Get(addr)
@@ -168,10 +196,17 @@ func (i *Console) ParseInput(input string) bool {
fmt.Println("gettx: tx not found")
}
case "contract":
- contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), []string{"PUSH", "1234"})
- fmt.Printf("%x\n", contract.Hash())
+ fmt.Println("Contract editor (Ctrl-D = done)")
+ code := ethchain.Compile(i.Editor())
+
+ contract := ethchain.NewTransaction(ethchain.ContractAddr, ethutil.Big(tokens[1]), code)
+
+ key := ethutil.Config.Db.GetKeys()[0]
+ contract.Sign(key.PrivateKey)
i.ethereum.TxPool.QueueTransaction(contract)
+
+ fmt.Printf("%x\n", contract.Hash()[12:])
case "exit", "quit", "q":
return false
case "help":