aboutsummaryrefslogtreecommitdiffstats
path: root/ethereum
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-20 09:34:12 +0800
committerobscuren <geffobscura@gmail.com>2014-12-20 09:34:12 +0800
commit3983dd2428137211f84f299f9ce8690c22f50afd (patch)
tree3a2dc53b365e6f377fc82a3514150d1297fe549c /ethereum
parent7daa8c2f6eb25511c6a54ad420709af911fc6748 (diff)
parent0a9dc1536c5d776844d6947a0090ff7e1a7c6ab4 (diff)
downloadgo-tangerine-3983dd2428137211f84f299f9ce8690c22f50afd.tar.gz
go-tangerine-3983dd2428137211f84f299f9ce8690c22f50afd.tar.zst
go-tangerine-3983dd2428137211f84f299f9ce8690c22f50afd.zip
Merge branch 'release/v0.7.10'vv0.7.10
Diffstat (limited to 'ethereum')
-rw-r--r--ethereum/cmd.go35
-rw-r--r--ethereum/flags.go95
-rw-r--r--ethereum/main.go115
-rw-r--r--ethereum/repl/repl.go85
-rw-r--r--ethereum/repl/repl_darwin.go123
l---------ethereum/repl/repl_linux.go1
-rw-r--r--ethereum/repl/repl_windows.go24
7 files changed, 0 insertions, 478 deletions
diff --git a/ethereum/cmd.go b/ethereum/cmd.go
deleted file mode 100644
index 5ddc91619..000000000
--- a/ethereum/cmd.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package main
-
-import (
- "io/ioutil"
- "os"
-
- "github.com/ethereum/eth-go"
- "github.com/ethereum/go-ethereum/ethereum/repl"
- "github.com/ethereum/go-ethereum/javascript"
- "github.com/ethereum/go-ethereum/utils"
-)
-
-func InitJsConsole(ethereum *eth.Ethereum) {
- repl := ethrepl.NewJSRepl(ethereum)
- go repl.Start()
- utils.RegisterInterrupt(func(os.Signal) {
- repl.Stop()
- })
-}
-
-func ExecJsFile(ethereum *eth.Ethereum, InputFile string) {
- file, err := os.Open(InputFile)
- if err != nil {
- logger.Fatalln(err)
- }
- content, err := ioutil.ReadAll(file)
- if err != nil {
- logger.Fatalln(err)
- }
- re := javascript.NewJSRE(ethereum)
- utils.RegisterInterrupt(func(os.Signal) {
- re.Stop()
- })
- re.Run(string(content))
-}
diff --git a/ethereum/flags.go b/ethereum/flags.go
deleted file mode 100644
index 58220f4e6..000000000
--- a/ethereum/flags.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package main
-
-import (
- "flag"
- "fmt"
- "os"
- "os/user"
- "path"
-
- "github.com/ethereum/eth-go/ethlog"
-)
-
-var (
- Identifier string
- KeyRing string
- DiffTool bool
- DiffType string
- KeyStore string
- StartRpc bool
- StartWebSockets bool
- RpcPort int
- UseUPnP bool
- OutboundPort string
- ShowGenesis bool
- AddPeer string
- MaxPeer int
- GenAddr bool
- UseSeed bool
- SecretFile string
- ExportDir string
- NonInteractive bool
- Datadir string
- LogFile string
- ConfigFile string
- DebugFile string
- LogLevel int
- Dump bool
- DumpHash string
- DumpNumber int
-)
-
-// flags specific to cli client
-var (
- StartMining bool
- StartJsConsole bool
- InputFile string
-)
-
-func defaultDataDir() string {
- usr, _ := user.Current()
- return path.Join(usr.HomeDir, ".ethereum")
-}
-
-var defaultConfigFile = path.Join(defaultDataDir(), "conf.ini")
-
-func Init() {
- flag.Usage = func() {
- fmt.Fprintf(os.Stderr, "%s [options] [filename]:\noptions precedence: default < config file < environment variables < command line\n", os.Args[0])
- flag.PrintDefaults()
- }
-
- flag.StringVar(&Identifier, "id", "", "Custom client identifier")
- flag.StringVar(&KeyRing, "keyring", "", "identifier for keyring to use")
- flag.StringVar(&KeyStore, "keystore", "db", "system to store keyrings: db|file (db)")
- flag.StringVar(&OutboundPort, "port", "30303", "listening port")
- flag.BoolVar(&UseUPnP, "upnp", false, "enable UPnP support")
- flag.IntVar(&MaxPeer, "maxpeer", 10, "maximum desired peers")
- flag.IntVar(&RpcPort, "rpcport", 8080, "port to start json-rpc server on")
- flag.BoolVar(&StartRpc, "rpc", false, "start rpc server")
- flag.BoolVar(&StartWebSockets, "ws", false, "start websocket server")
- flag.BoolVar(&NonInteractive, "y", false, "non-interactive mode (say yes to confirmations)")
- flag.BoolVar(&UseSeed, "seed", true, "seed peers")
- flag.BoolVar(&GenAddr, "genaddr", false, "create a new priv/pub key")
- flag.StringVar(&SecretFile, "import", "", "imports the file given (hex or mnemonic formats)")
- flag.StringVar(&ExportDir, "export", "", "exports the session keyring to files in the directory given")
- flag.StringVar(&LogFile, "logfile", "", "log file (defaults to standard output)")
- flag.StringVar(&Datadir, "datadir", defaultDataDir(), "specifies the datadir to use")
- flag.StringVar(&ConfigFile, "conf", defaultConfigFile, "config file")
- flag.StringVar(&DebugFile, "debug", "", "debug file (no debugging if not set)")
- flag.IntVar(&LogLevel, "loglevel", int(ethlog.InfoLevel), "loglevel: 0-5: silent,error,warn,info,debug,debug detail)")
- flag.BoolVar(&DiffTool, "difftool", false, "creates output for diff'ing. Sets LogLevel=0")
- flag.StringVar(&DiffType, "diff", "all", "sets the level of diff output [vm, all]. Has no effect if difftool=false")
- flag.BoolVar(&ShowGenesis, "genesis", false, "Dump the genesis block")
-
- flag.BoolVar(&Dump, "dump", false, "output the ethereum state in JSON format. Sub args [number, hash]")
- flag.StringVar(&DumpHash, "hash", "", "specify arg in hex")
- flag.IntVar(&DumpNumber, "number", -1, "specify arg in number")
-
- flag.BoolVar(&StartMining, "mine", false, "start dagger mining")
- flag.BoolVar(&StartJsConsole, "js", false, "launches javascript console")
-
- flag.Parse()
-
- InputFile = flag.Arg(0)
-}
diff --git a/ethereum/main.go b/ethereum/main.go
deleted file mode 100644
index 0f0df20bb..000000000
--- a/ethereum/main.go
+++ /dev/null
@@ -1,115 +0,0 @@
-package main
-
-import (
- "fmt"
- "os"
- "runtime"
-
- "github.com/ethereum/eth-go/ethchain"
- "github.com/ethereum/eth-go/ethlog"
- "github.com/ethereum/eth-go/ethutil"
- "github.com/ethereum/go-ethereum/utils"
-)
-
-const (
- ClientIdentifier = "Ethereum(G)"
- Version = "0.6.7"
-)
-
-var logger = ethlog.NewLogger("CLI")
-
-func main() {
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- utils.HandleInterrupt()
-
- // precedence: code-internal flag default < config file < environment variables < command line
- Init() // parsing command line
-
- // If the difftool option is selected ignore all other log output
- if DiffTool || Dump {
- LogLevel = 0
- }
-
- utils.InitConfig(ConfigFile, Datadir, "ETH")
- ethutil.Config.Diff = DiffTool
- ethutil.Config.DiffType = DiffType
-
- utils.InitDataDir(Datadir)
-
- utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile)
-
- db := utils.NewDatabase()
- err := utils.DBSanityCheck(db)
- if err != nil {
- logger.Errorln(err)
-
- os.Exit(1)
- }
-
- keyManager := utils.NewKeyManager(KeyStore, Datadir, db)
-
- // create, import, export keys
- utils.KeyTasks(keyManager, KeyRing, GenAddr, SecretFile, ExportDir, NonInteractive)
-
- clientIdentity := utils.NewClientIdentity(ClientIdentifier, Version, Identifier)
-
- ethereum := utils.NewEthereum(db, clientIdentity, keyManager, UseUPnP, OutboundPort, MaxPeer)
-
- if Dump {
- var block *ethchain.Block
-
- if len(DumpHash) == 0 && DumpNumber == -1 {
- block = ethereum.BlockChain().CurrentBlock
- } else if len(DumpHash) > 0 {
- block = ethereum.BlockChain().GetBlock(ethutil.Hex2Bytes(DumpHash))
- } else {
- block = ethereum.BlockChain().GetBlockByNumber(uint64(DumpNumber))
- }
-
- if block == nil {
- fmt.Fprintln(os.Stderr, "block not found")
-
- // We want to output valid JSON
- fmt.Println("{}")
-
- os.Exit(1)
- }
-
- fmt.Printf("RLP: %x\nstate: %x\nhash: %x\n", ethutil.Rlp(block), block.GetRoot(), block.Hash())
-
- // Leave the Println. This needs clean output for piping
- fmt.Printf("%s\n", block.State().Dump())
-
- os.Exit(0)
- }
-
- if ShowGenesis {
- utils.ShowGenesis(ethereum)
- }
-
- if StartMining {
- utils.StartMining(ethereum)
- }
-
- // better reworked as cases
- if StartJsConsole {
- InitJsConsole(ethereum)
- } else if len(InputFile) > 0 {
- ExecJsFile(ethereum, InputFile)
- }
-
- if StartRpc {
- utils.StartRpc(ethereum, RpcPort)
- }
-
- if StartWebSockets {
- utils.StartWebSockets(ethereum)
- }
-
- utils.StartEthereum(ethereum, UseSeed)
-
- // this blocks the thread
- ethereum.WaitForShutdown()
- ethlog.Flush()
-}
diff --git a/ethereum/repl/repl.go b/ethereum/repl/repl.go
deleted file mode 100644
index d08feb7b4..000000000
--- a/ethereum/repl/repl.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package ethrepl
-
-import (
- "bufio"
- "fmt"
- "io"
- "os"
- "path"
-
- "github.com/ethereum/eth-go"
- "github.com/ethereum/eth-go/ethlog"
- "github.com/ethereum/eth-go/ethutil"
- "github.com/ethereum/go-ethereum/javascript"
-)
-
-var logger = ethlog.NewLogger("REPL")
-
-type Repl interface {
- Start()
- Stop()
-}
-
-type JSRepl struct {
- re *javascript.JSRE
-
- prompt string
-
- history *os.File
-
- running bool
-}
-
-func NewJSRepl(ethereum *eth.Ethereum) *JSRepl {
- hist, err := os.OpenFile(path.Join(ethutil.Config.ExecPath, "history"), os.O_RDWR|os.O_CREATE, os.ModePerm)
- if err != nil {
- panic(err)
- }
-
- return &JSRepl{re: javascript.NewJSRE(ethereum), prompt: "> ", history: hist}
-}
-
-func (self *JSRepl) Start() {
- if !self.running {
- self.running = true
- logger.Infoln("init JS Console")
- reader := bufio.NewReader(self.history)
- for {
- line, err := reader.ReadString('\n')
- if err != nil && err == io.EOF {
- break
- } else if err != nil {
- fmt.Println("error reading history", err)
- break
- }
-
- addHistory(line[:len(line)-1])
- }
- self.read()
- }
-}
-
-func (self *JSRepl) Stop() {
- if self.running {
- self.running = false
- self.re.Stop()
- logger.Infoln("exit JS Console")
- self.history.Close()
- }
-}
-
-func (self *JSRepl) parseInput(code string) {
- defer func() {
- if r := recover(); r != nil {
- fmt.Println("[native] error", r)
- }
- }()
-
- value, err := self.re.Run(code)
- if err != nil {
- fmt.Println(err)
- return
- }
-
- self.PrintValue(value)
-}
diff --git a/ethereum/repl/repl_darwin.go b/ethereum/repl/repl_darwin.go
deleted file mode 100644
index 4c07280f7..000000000
--- a/ethereum/repl/repl_darwin.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package ethrepl
-
-// #cgo darwin CFLAGS: -I/usr/local/opt/readline/include
-// #cgo darwin LDFLAGS: -L/usr/local/opt/readline/lib
-// #cgo LDFLAGS: -lreadline
-// #include <stdio.h>
-// #include <stdlib.h>
-// #include <readline/readline.h>
-// #include <readline/history.h>
-import "C"
-import (
- "os"
- "os/signal"
- "strings"
- "syscall"
- "unsafe"
-)
-
-func initReadLine() {
- C.rl_catch_sigwinch = 0
- C.rl_catch_signals = 0
- c := make(chan os.Signal, 1)
- signal.Notify(c, syscall.SIGWINCH)
- signal.Notify(c, os.Interrupt)
- go func() {
- for sig := range c {
- switch sig {
- case syscall.SIGWINCH:
- C.rl_resize_terminal()
-
- case os.Interrupt:
- C.rl_cleanup_after_signal()
- default:
-
- }
- }
- }()
-}
-
-func readLine(prompt *string) *string {
- var p *C.char
-
- //readline allows an empty prompt(NULL)
- if prompt != nil {
- p = C.CString(*prompt)
- }
-
- ret := C.readline(p)
-
- if p != nil {
- C.free(unsafe.Pointer(p))
- }
-
- if ret == nil {
- return nil
- } //EOF
-
- s := C.GoString(ret)
- C.free(unsafe.Pointer(ret))
- return &s
-}
-
-func addHistory(s string) {
- p := C.CString(s)
- C.add_history(p)
- C.free(unsafe.Pointer(p))
-}
-
-var indentCount = 0
-var str = ""
-
-func (self *JSRepl) setIndent() {
- open := strings.Count(str, "{")
- open += strings.Count(str, "(")
- closed := strings.Count(str, "}")
- closed += strings.Count(str, ")")
- indentCount = open - closed
- if indentCount <= 0 {
- self.prompt = "> "
- } else {
- self.prompt = strings.Join(make([]string, indentCount*2), "..")
- self.prompt += " "
- }
-}
-
-func (self *JSRepl) read() {
- initReadLine()
-L:
- for {
- switch result := readLine(&self.prompt); true {
- case result == nil:
- break L
-
- case *result != "":
- str += *result + "\n"
-
- self.setIndent()
-
- if indentCount <= 0 {
- if *result == "exit" {
- self.Stop()
- break L
- }
-
- hist := str[:len(str)-1]
- addHistory(hist) //allow user to recall this line
- self.history.WriteString(str)
-
- self.parseInput(str)
-
- str = ""
- }
- }
- }
-}
-
-func (self *JSRepl) PrintValue(v interface{}) {
- method, _ := self.re.Vm.Get("prettyPrint")
- v, err := self.re.Vm.ToValue(v)
- if err == nil {
- method.Call(method, v)
- }
-}
diff --git a/ethereum/repl/repl_linux.go b/ethereum/repl/repl_linux.go
deleted file mode 120000
index 276f135d7..000000000
--- a/ethereum/repl/repl_linux.go
+++ /dev/null
@@ -1 +0,0 @@
-repl_darwin.go \ No newline at end of file
diff --git a/ethereum/repl/repl_windows.go b/ethereum/repl/repl_windows.go
deleted file mode 100644
index 4106c89bc..000000000
--- a/ethereum/repl/repl_windows.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package ethrepl
-
-import (
- "bufio"
- "fmt"
- "os"
-)
-
-func (self *JSRepl) read() {
- reader := bufio.NewReader(os.Stdin)
- for {
- fmt.Printf(self.prompt)
- str, _, err := reader.ReadLine()
- if err != nil {
- fmt.Println("Error reading input", err)
- } else {
- self.parseInput(string(str))
- }
- }
-}
-
-func (self *JSRepl) PrintValue(value otto.Value) {
- fmt.Println(value)
-}