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
0a034841
Commit
0a034841
authored
May 15, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented JavaScript console
parent
cbce882f
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
18 deletions
+53
-18
ethereum.go
ethereum/ethereum.go
+7
-4
javascript_console.go
ethereum/javascript_console.go
+46
-14
No files found.
ethereum/ethereum.go
View file @
0a034841
...
...
@@ -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,9 +150,7 @@ save these words so you can restore your account later: %s
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
if
StartExp
{
}
else
if
StartJsConsole
{
c
:=
NewJSConsole
(
ethereum
)
go
c
.
Start
()
...
...
ethereum/javascript_console.go
View file @
0a034841
...
...
@@ -21,7 +21,7 @@ func NewJSConsole(ethereum *eth.Ethereum) *JSConsole {
func
(
self
*
JSConsole
)
Start
()
{
self
.
initBindings
()
fmt
.
Println
(
"Eth J
S C
onsole"
)
fmt
.
Println
(
"Eth J
avaScript c
onsole"
)
reader
:=
bufio
.
NewReader
(
os
.
Stdin
)
for
{
fmt
.
Printf
(
"eth >>> "
)
...
...
@@ -29,16 +29,18 @@ func (self *JSConsole) Start() {
if
err
!=
nil
{
fmt
.
Println
(
"Error reading input"
,
err
)
}
else
{
if
string
(
str
)
==
"quit"
{
return
}
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
)
...
...
@@ -48,29 +50,59 @@ func (self *JSConsole) ParseInput(code string) {
fmt
.
Println
(
value
)
}
type
OtherStruct
struct
{
Test
string
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
{
pub
*
ethpub
.
PEthereum
*
ethpub
.
PEthereum
vm
*
otto
.
Otto
}
func
(
self
*
JSWrapper
)
GetKey
()
otto
.
Value
{
result
,
err
:=
self
.
vm
.
ToValue
(
self
.
pub
.
GetKey
())
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
result
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
)
}
func
(
self
*
JSConsole
)
initBindings
()
{
t
:=
&
JSWrapper
{
self
.
lib
,
self
.
vm
}
// Wrapper function
func
(
self
*
JSWrapper
)
toVal
(
v
interface
{})
otto
.
Value
{
result
,
err
:=
self
.
vm
.
ToValue
(
v
)
self
.
vm
.
Set
(
"eth"
,
t
)
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