Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
0ef7f637
Commit
0ef7f637
authored
May 20, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed old console in favor of the new JS REPL
parent
a05adb11
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1 addition
and
272 deletions
+1
-272
config.go
ethereum/config.go
+0
-3
dev_console.go
ethereum/dev_console.go
+0
-259
ethereum.go
ethereum/ethereum.go
+1
-10
No files found.
ethereum/config.go
View file @
0ef7f637
...
...
@@ -4,7 +4,6 @@ import (
"flag"
)
var
StartConsole
bool
var
StartMining
bool
var
StartRpc
bool
var
RpcPort
int
...
...
@@ -24,10 +23,8 @@ var StartJsConsole bool
var
InputFile
string
func
Init
()
{
flag
.
BoolVar
(
&
StartConsole
,
"c"
,
false
,
"debug and testing console"
)
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
flag
.
BoolVar
(
&
StartRpc
,
"r"
,
false
,
"start rpc server"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8080
,
"port to start json-rpc server on"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
...
...
ethereum/dev_console.go
deleted
100644 → 0
View file @
a05adb11
package
main
import
(
"bufio"
"bytes"
"encoding/hex"
"errors"
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethdb"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethwire"
"github.com/ethereum/go-ethereum/utils"
"github.com/obscuren/mutan"
"os"
"strings"
)
type
Console
struct
{
db
*
ethdb
.
MemDatabase
trie
*
ethutil
.
Trie
ethereum
*
eth
.
Ethereum
}
func
NewConsole
(
s
*
eth
.
Ethereum
)
*
Console
{
db
,
_
:=
ethdb
.
NewMemDatabase
()
trie
:=
ethutil
.
NewTrie
(
db
,
""
)
return
&
Console
{
db
:
db
,
trie
:
trie
,
ethereum
:
s
}
}
func
(
i
*
Console
)
ValidateInput
(
action
string
,
argumentLength
int
)
error
{
err
:=
false
var
expArgCount
int
switch
{
case
action
==
"update"
&&
argumentLength
!=
2
:
err
=
true
expArgCount
=
2
case
action
==
"get"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"dag"
&&
argumentLength
!=
2
:
err
=
true
expArgCount
=
2
case
action
==
"decode"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"encode"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"gettx"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"tx"
&&
argumentLength
!=
4
:
err
=
true
expArgCount
=
4
case
action
==
"getaddr"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"contract"
&&
argumentLength
!=
2
:
err
=
true
expArgCount
=
2
case
action
==
"say"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"addp"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"block"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
}
if
err
{
return
errors
.
New
(
fmt
.
Sprintf
(
"'%s' requires %d args, got %d"
,
action
,
expArgCount
,
argumentLength
))
}
else
{
return
nil
}
}
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
}
}
return
buff
.
String
()
}
func
(
i
*
Console
)
PrintRoot
()
{
root
:=
ethutil
.
NewValue
(
i
.
trie
.
Root
)
if
len
(
root
.
Bytes
())
!=
0
{
fmt
.
Println
(
hex
.
EncodeToString
(
root
.
Bytes
()))
}
else
{
fmt
.
Println
(
i
.
trie
.
Root
)
}
}
func
(
i
*
Console
)
ParseInput
(
input
string
)
bool
{
scanner
:=
bufio
.
NewScanner
(
strings
.
NewReader
(
input
))
scanner
.
Split
(
bufio
.
ScanWords
)
count
:=
0
var
tokens
[]
string
for
scanner
.
Scan
()
{
count
++
tokens
=
append
(
tokens
,
scanner
.
Text
())
}
if
err
:=
scanner
.
Err
();
err
!=
nil
{
fmt
.
Fprintln
(
os
.
Stderr
,
"reading input:"
,
err
)
}
if
len
(
tokens
)
==
0
{
return
true
}
err
:=
i
.
ValidateInput
(
tokens
[
0
],
count
-
1
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
}
else
{
switch
tokens
[
0
]
{
case
"update"
:
i
.
trie
.
Update
(
tokens
[
1
],
tokens
[
2
])
i
.
PrintRoot
()
case
"get"
:
fmt
.
Println
(
i
.
trie
.
Get
(
tokens
[
1
]))
case
"root"
:
i
.
PrintRoot
()
case
"rawroot"
:
fmt
.
Println
(
i
.
trie
.
Root
)
case
"print"
:
i
.
db
.
Print
()
case
"dag"
:
fmt
.
Println
(
ethchain
.
DaggerVerify
(
ethutil
.
Big
(
tokens
[
1
]),
// hash
ethutil
.
BigPow
(
2
,
36
),
// diff
ethutil
.
Big
(
tokens
[
2
])))
// nonce
case
"decode"
:
value
:=
ethutil
.
NewValueFromBytes
([]
byte
(
tokens
[
1
]))
fmt
.
Println
(
value
)
case
"getaddr"
:
encoded
,
_
:=
hex
.
DecodeString
(
tokens
[
1
])
addr
:=
i
.
ethereum
.
BlockChain
()
.
CurrentBlock
.
State
()
.
GetAccount
(
encoded
)
fmt
.
Println
(
"addr:"
,
addr
)
case
"block"
:
encoded
,
_
:=
hex
.
DecodeString
(
tokens
[
1
])
block
:=
i
.
ethereum
.
BlockChain
()
.
GetBlock
(
encoded
)
info
:=
block
.
BlockInfo
()
fmt
.
Printf
(
"++++++++++ #%d ++++++++++
\n
%v
\n
"
,
info
.
Number
,
block
)
case
"say"
:
i
.
ethereum
.
Broadcast
(
ethwire
.
MsgTalkTy
,
[]
interface
{}{
tokens
[
1
]})
case
"addp"
:
i
.
ethereum
.
ConnectToPeer
(
tokens
[
1
])
case
"pcount"
:
fmt
.
Println
(
"peers:"
,
i
.
ethereum
.
Peers
()
.
Len
())
case
"encode"
:
fmt
.
Printf
(
"%q
\n
"
,
ethutil
.
Encode
(
tokens
[
1
]))
case
"tx"
:
recipient
,
err
:=
hex
.
DecodeString
(
tokens
[
1
])
if
err
!=
nil
{
fmt
.
Println
(
"recipient err:"
,
err
)
}
else
{
tx
:=
ethchain
.
NewTransactionMessage
(
recipient
,
ethutil
.
Big
(
tokens
[
2
]),
ethutil
.
Big
(
tokens
[
3
]),
ethutil
.
Big
(
tokens
[
4
]),
nil
)
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
tx
.
Sign
(
keyPair
.
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
)
if
len
(
data
)
!=
0
{
decoder
:=
ethutil
.
NewValueFromBytes
(
data
)
fmt
.
Println
(
decoder
)
}
else
{
fmt
.
Println
(
"gettx: tx not found"
)
}
case
"contract"
:
fmt
.
Println
(
"Contract editor (Ctrl-D = done)"
)
mainInput
,
initInput
:=
mutan
.
PreParse
(
i
.
Editor
())
mainScript
,
err
:=
utils
.
Compile
(
mainInput
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
break
}
initScript
,
err
:=
utils
.
Compile
(
initInput
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
break
}
contract
:=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
tokens
[
0
]),
ethutil
.
Big
(
tokens
[
1
]),
ethutil
.
Big
(
tokens
[
1
]),
mainScript
,
initScript
)
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
contract
.
Sign
(
keyPair
.
PrivateKey
)
i
.
ethereum
.
TxPool
()
.
QueueTransaction
(
contract
)
fmt
.
Printf
(
"%x
\n
"
,
contract
.
Hash
()[
12
:
])
case
"exit"
,
"quit"
,
"q"
:
return
false
case
"help"
:
fmt
.
Printf
(
"COMMANDS:
\n
"
+
"
\0
33[1m= DB =
\0
33[0m
\n
"
+
"update KEY VALUE - Updates/Creates a new value for the given key
\n
"
+
"get KEY - Retrieves the given key
\n
"
+
"root - Prints the hex encoded merkle root
\n
"
+
"rawroot - Prints the raw merkle root
\n
"
+
"block HASH - Prints the block
\n
"
+
"getaddr ADDR - Prints the account associated with the address
\n
"
+
"
\0
33[1m= Dagger =
\0
33[0m
\n
"
+
"dag HASH NONCE - Verifies a nonce with the given hash with dagger
\n
"
+
"
\0
33[1m= Encoding =
\0
33[0m
\n
"
+
"decode STR
\n
"
+
"encode STR
\n
"
+
"
\0
33[1m= Other =
\0
33[0m
\n
"
+
"addp HOST:PORT
\n
"
+
"tx TO AMOUNT
\n
"
+
"contract AMOUNT
\n
"
)
default
:
fmt
.
Println
(
"Unknown command:"
,
tokens
[
0
])
}
}
return
true
}
func
(
i
*
Console
)
Start
()
{
fmt
.
Printf
(
"Eth Console. Type (help) for help
\n
"
)
reader
:=
bufio
.
NewReader
(
os
.
Stdin
)
for
{
fmt
.
Printf
(
"eth >>> "
)
str
,
_
,
err
:=
reader
.
ReadLine
()
if
err
!=
nil
{
fmt
.
Println
(
"Error reading input"
,
err
)
}
else
{
if
!
i
.
ParseInput
(
string
(
str
))
{
return
}
}
}
}
ethereum/ethereum.go
View file @
0ef7f637
...
...
@@ -141,16 +141,7 @@ save these words so you can restore your account later: %s
utils
.
DoMining
(
ethereum
)
}
if
StartConsole
{
err
:=
os
.
Mkdir
(
ethutil
.
Config
.
ExecPath
,
os
.
ModePerm
)
// Error is OK if the error is ErrExist
if
err
!=
nil
&&
!
os
.
IsExist
(
err
)
{
log
.
Panic
(
"Unable to create EXECPATH:"
,
err
)
}
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
else
if
StartJsConsole
{
if
StartJsConsole
{
repl
:=
NewJSRepl
(
ethereum
)
go
repl
.
Start
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment