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
a05adb11
Commit
a05adb11
authored
May 20, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactored file structure
parent
dfc3cb44
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
101 deletions
+124
-101
samplecoin.html
ethereal/assets/samplecoin/samplecoin.html
+1
-1
javascript_runtime.go
ethereum/javascript_runtime.go
+26
-100
repl.go
ethereum/repl.go
+97
-0
No files found.
ethereal/assets/samplecoin/samplecoin.html
View file @
a05adb11
...
...
@@ -9,7 +9,7 @@
<script
type=
"text/javascript"
>
var
jefcoinAddr
=
"
681fd48ffa236549fbcd16bdf9f98bb541a7f742
"
var
jefcoinAddr
=
"
739105c31705038744d190332e3a07c8fea8a9eb
"
var
mAddr
=
""
function
createTransaction
()
{
...
...
ethereum/javascript_
consol
e.go
→
ethereum/javascript_
runtim
e.go
View file @
a05adb11
...
...
@@ -9,11 +9,6 @@ import (
"github.com/robertkrimen/otto"
)
type
Repl
interface
{
Start
()
Stop
()
}
type
JSRE
struct
{
ethereum
*
eth
.
Ethereum
vm
*
otto
.
Otto
...
...
@@ -44,20 +39,18 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE {
go
re
.
mainLoop
()
re
.
Bind
(
"eth"
,
&
JSEthereum
{
re
.
lib
,
re
.
vm
})
t
,
_
:=
re
.
vm
.
Get
(
"eth"
)
t
.
Object
()
.
Set
(
"watch"
,
func
(
call
otto
.
FunctionCall
)
otto
.
Value
{
addr
,
_
:=
call
.
Argument
(
0
)
.
ToString
()
cb
:=
call
.
Argument
(
1
)
re
.
objectCb
[
addr
]
=
append
(
re
.
objectCb
[
addr
],
cb
)
re
.
initStdFuncs
(
)
event
:=
"object:"
+
string
(
ethutil
.
FromHex
(
addr
))
ethereum
.
Reactor
()
.
Subscribe
(
event
,
re
.
changeChan
)
return
re
}
return
otto
.
UndefinedValue
()
})
func
(
self
*
JSRE
)
Bind
(
name
string
,
v
interface
{})
{
self
.
vm
.
Set
(
name
,
v
)
}
return
re
func
(
self
*
JSRE
)
Run
(
code
string
)
(
otto
.
Value
,
error
)
{
return
self
.
vm
.
Run
(
code
)
}
func
(
self
*
JSRE
)
Stop
()
{
...
...
@@ -95,94 +88,27 @@ out:
}
}
func
(
self
*
JSRE
)
Bind
(
name
string
,
v
interface
{})
{
self
.
vm
.
Set
(
name
,
v
)
}
func
(
self
*
JSRE
)
Run
(
code
string
)
(
otto
.
Value
,
error
)
{
return
self
.
vm
.
Run
(
code
)
}
type
JSRepl
struct
{
re
*
JSRE
prompt
string
}
func
NewJSRepl
(
ethereum
*
eth
.
Ethereum
)
*
JSRepl
{
return
&
JSRepl
{
re
:
NewJSRE
(
ethereum
),
prompt
:
"> "
}
}
func
(
self
*
JSRepl
)
Start
()
{
self
.
read
()
}
func
(
self
*
JSRepl
)
Stop
()
{
self
.
re
.
Stop
()
}
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
)
}
// The JSEthereum object attempts to wrap the PEthereum object and returns
// meaningful javascript objects
type
JSEthereum
struct
{
*
ethpub
.
PEthereum
vm
*
otto
.
Otto
}
func
(
self
*
JSEthereum
)
GetKey
()
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetKey
())
}
func
(
self
*
JSEthereum
)
GetStateObject
(
addr
string
)
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetStateObject
(
addr
))
}
func
(
self
*
JSEthereum
)
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
*
JSEthereum
)
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
*
JSRE
)
initStdFuncs
()
{
t
,
_
:=
self
.
vm
.
Get
(
"eth"
)
eth
:=
t
.
Object
()
eth
.
Set
(
"watch"
,
func
(
call
otto
.
FunctionCall
)
otto
.
Value
{
addr
,
_
:=
call
.
Argument
(
0
)
.
ToString
()
cb
:=
call
.
Argument
(
1
)
func
(
self
*
JSEthereum
)
toVal
(
v
interface
{})
otto
.
Value
{
result
,
err
:=
self
.
vm
.
ToValue
(
v
)
self
.
objectCb
[
addr
]
=
append
(
self
.
objectCb
[
addr
],
cb
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
event
:=
"object:"
+
string
(
ethutil
.
FromHex
(
addr
))
self
.
ethereum
.
Reactor
()
.
Subscribe
(
event
,
self
.
changeChan
)
return
otto
.
UndefinedValue
()
}
})
eth
.
Set
(
"addPeer"
,
func
(
call
otto
.
FunctionCall
)
otto
.
Value
{
host
,
err
:=
call
.
Argument
(
0
)
.
ToString
()
if
err
!=
nil
{
return
otto
.
FalseValue
()
}
self
.
ethereum
.
ConnectToPeer
(
host
)
return
result
return
otto
.
TrueValue
()
})
}
ethereum/repl.go
0 → 100644
View file @
a05adb11
package
main
import
(
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethpub"
"github.com/robertkrimen/otto"
)
type
Repl
interface
{
Start
()
Stop
()
}
type
JSRepl
struct
{
re
*
JSRE
prompt
string
}
func
NewJSRepl
(
ethereum
*
eth
.
Ethereum
)
*
JSRepl
{
return
&
JSRepl
{
re
:
NewJSRE
(
ethereum
),
prompt
:
"> "
}
}
func
(
self
*
JSRepl
)
Start
()
{
self
.
read
()
}
func
(
self
*
JSRepl
)
Stop
()
{
self
.
re
.
Stop
()
}
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
)
}
// The JSEthereum object attempts to wrap the PEthereum object and returns
// meaningful javascript objects
type
JSEthereum
struct
{
*
ethpub
.
PEthereum
vm
*
otto
.
Otto
}
func
(
self
*
JSEthereum
)
GetKey
()
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetKey
())
}
func
(
self
*
JSEthereum
)
GetStateObject
(
addr
string
)
otto
.
Value
{
return
self
.
toVal
(
self
.
PEthereum
.
GetStateObject
(
addr
))
}
func
(
self
*
JSEthereum
)
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
*
JSEthereum
)
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
*
JSEthereum
)
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