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
2ac292dc
Commit
2ac292dc
authored
May 15, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/otto' into develop
parents
3a2bddc1
6a78e080
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
122 additions
and
2 deletions
+122
-2
ethereum.go
ethereal/ethereum.go
+1
-1
config.go
ethereum/config.go
+2
-0
ethereum.go
ethereum/ethereum.go
+11
-1
javascript_console.go
ethereum/javascript_console.go
+108
-0
No files found.
ethereal/ethereum.go
View file @
2ac292dc
...
...
@@ -39,7 +39,7 @@ func main() {
runtime
.
GOMAXPROCS
(
runtime
.
NumCPU
())
ethchain
.
InitFees
()
ethutil
.
ReadConfig
(
DataDir
)
ethutil
.
ReadConfig
(
DataDir
,
ethutil
.
LogFile
|
ethutil
.
LogStd
)
// Instantiated a eth stack
ethereum
,
err
:=
eth
.
New
(
eth
.
CapDefault
,
UseUPnP
)
...
...
ethereum/config.go
View file @
2ac292dc
...
...
@@ -20,6 +20,7 @@ var ExportKey bool
var
LogFile
string
var
DataDir
string
var
NonInteractive
bool
var
StartJsConsole
bool
func
Init
()
{
flag
.
BoolVar
(
&
StartConsole
,
"c"
,
false
,
"debug and testing console"
)
...
...
@@ -38,6 +39,7 @@ func Init() {
flag
.
StringVar
(
&
DataDir
,
"dir"
,
".ethereum"
,
"ethereum data directory"
)
flag
.
StringVar
(
&
ImportKey
,
"import"
,
""
,
"imports the given private key (hex)"
)
flag
.
IntVar
(
&
MaxPeer
,
"x"
,
5
,
"maximum desired peers"
)
flag
.
BoolVar
(
&
StartJsConsole
,
"js"
,
false
,
"exp"
)
flag
.
Parse
()
}
ethereum/ethereum.go
View file @
2ac292dc
...
...
@@ -52,7 +52,12 @@ func main() {
var
logSys
*
log
.
Logger
flags
:=
log
.
LstdFlags
ethutil
.
ReadConfig
(
DataDir
)
if
StartJsConsole
{
ethutil
.
ReadConfig
(
DataDir
,
ethutil
.
LogFile
)
}
else
{
ethutil
.
ReadConfig
(
DataDir
,
ethutil
.
LogFile
|
ethutil
.
LogStd
)
}
logger
:=
ethutil
.
Config
.
Log
if
LogFile
!=
""
{
...
...
@@ -145,7 +150,12 @@ save these words so you can restore your account later: %s
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
else
if
StartJsConsole
{
c
:=
NewJSConsole
(
ethereum
)
go
c
.
Start
()
}
if
StartRpc
{
utils
.
DoRpc
(
ethereum
,
RpcPort
)
}
...
...
ethereum/javascript_console.go
0 → 100644
View file @
2ac292dc
package
main
import
(
"bufio"
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethpub"
"github.com/robertkrimen/otto"
"os"
)
type
JSConsole
struct
{
vm
*
otto
.
Otto
lib
*
ethpub
.
PEthereum
}
func
NewJSConsole
(
ethereum
*
eth
.
Ethereum
)
*
JSConsole
{
return
&
JSConsole
{
vm
:
otto
.
New
(),
lib
:
ethpub
.
NewPEthereum
(
ethereum
)}
}
func
(
self
*
JSConsole
)
Start
()
{
self
.
initBindings
()
fmt
.
Println
(
"Eth JavaScript console"
)
reader
:=
bufio
.
NewReader
(
os
.
Stdin
)
for
{
fmt
.
Printf
(
"eth >>> "
)
str
,
_
,
err
:=
reader
.
ReadLine
()
if
err
!=
nil
{
fmt
.
Println
(
"Error reading input"
,
err
)
}
else
{
self
.
ParseInput
(
string
(
str
))
}
}
}
func
(
self
*
JSConsole
)
ParseInput
(
code
string
)
{
defer
func
()
{
if
r
:=
recover
();
r
!=
nil
{
fmt
.
Println
(
"[native] error"
,
r
)
}
}()
value
,
err
:=
self
.
vm
.
Run
(
code
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
}
fmt
.
Println
(
value
)
}
func
(
self
*
JSConsole
)
initBindings
()
{
t
:=
&
JSWrapper
{
self
.
lib
,
self
.
vm
}
self
.
vm
.
Set
(
"eth"
,
t
)
}
// The JS wrapper attempts to wrap the PEthereum object and returns
// proper javascript objects
type
JSWrapper
struct
{
*
ethpub
.
PEthereum
vm
*
otto
.
Otto
}
func
(
self
*
JSWrapper
)
GetKey
()
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetKey
())
}
func
(
self
*
JSWrapper
)
GetStateObject
(
addr
string
)
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetStateObject
(
addr
))
}
func
(
self
*
JSWrapper
)
Transact
(
key
,
recipient
,
valueStr
,
gasStr
,
gasPriceStr
,
dataStr
string
)
otto
.
Value
{
r
,
err
:=
self
.
PEthereum
.
Transact
(
key
,
recipient
,
valueStr
,
gasStr
,
gasPriceStr
,
dataStr
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
otto
.
UndefinedValue
()
}
return
self
.
toVal
(
r
)
}
func
(
self
*
JSWrapper
)
Create
(
key
,
valueStr
,
gasStr
,
gasPriceStr
,
initStr
,
bodyStr
string
)
otto
.
Value
{
r
,
err
:=
self
.
PEthereum
.
Create
(
key
,
valueStr
,
gasStr
,
gasPriceStr
,
initStr
,
bodyStr
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
otto
.
UndefinedValue
()
}
return
self
.
toVal
(
r
)
}
// Wrapper function
func
(
self
*
JSWrapper
)
toVal
(
v
interface
{})
otto
.
Value
{
result
,
err
:=
self
.
vm
.
ToValue
(
v
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
otto
.
UndefinedValue
()
}
return
result
}
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