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
40ff3cac
Commit
40ff3cac
authored
Mar 03, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
53b5a458
6e50a1e9
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
169 additions
and
209 deletions
+169
-209
flags.go
cmd/ethereum/flags.go
+39
-34
main.go
cmd/ethereum/main.go
+20
-15
flags.go
cmd/mist/flags.go
+27
-25
main.go
cmd/mist/main.go
+1
-1
cmd.go
cmd/utils/cmd.go
+2
-2
filter.go
core/filter.go
+26
-9
common.go
ethutil/common.go
+11
-2
types.go
javascript/types.go
+0
-15
miner.go
miner/miner.go
+1
-6
worker.go
miner/worker.go
+14
-0
args.go
rpc/args.go
+14
-4
server.go
rpc/http/server.go
+5
-3
statedb.go
state/statedb.go
+9
-9
filter.go
ui/filter.go
+0
-76
xeth.go
xeth/xeth.go
+0
-8
No files found.
cmd/ethereum/flags.go
View file @
40ff3cac
...
...
@@ -27,6 +27,7 @@ import (
"log"
"os"
"path"
"runtime"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
...
...
@@ -36,40 +37,42 @@ import (
)
var
(
Identifier
string
KeyRing
string
DiffTool
bool
DiffType
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcPort
int
WsPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
LogFormat
string
Dump
bool
DumpHash
string
DumpNumber
int
VmType
int
ImportChain
string
SHH
bool
Dial
bool
PrintVersion
bool
Identifier
string
KeyRing
string
DiffTool
bool
DiffType
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcListenAddress
string
RpcPort
int
WsPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
LogFormat
string
Dump
bool
DumpHash
string
DumpNumber
int
VmType
int
ImportChain
string
SHH
bool
Dial
bool
PrintVersion
bool
MinerThreads
int
)
// flags specific to cli client
...
...
@@ -93,6 +96,7 @@ func Init() {
flag
.
StringVar
(
&
KeyRing
,
"keyring"
,
""
,
"identifier for keyring to use"
)
flag
.
StringVar
(
&
KeyStore
,
"keystore"
,
"db"
,
"system to store keyrings: db|file (db)"
)
flag
.
StringVar
(
&
RpcListenAddress
,
"rpcaddr"
,
"127.0.0.1"
,
"address for json-rpc server to listen on"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
IntVar
(
&
WsPort
,
"wsport"
,
40404
,
"port to start websocket rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
false
,
"start rpc server"
)
...
...
@@ -119,6 +123,7 @@ func Init() {
flag
.
BoolVar
(
&
StartMining
,
"mine"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartJsConsole
,
"js"
,
false
,
"launches javascript console"
)
flag
.
BoolVar
(
&
PrintVersion
,
"version"
,
false
,
"prints version number"
)
flag
.
IntVar
(
&
MinerThreads
,
"minerthreads"
,
runtime
.
NumCPU
(),
"number of miner threads"
)
// Network stuff
var
(
...
...
cmd/ethereum/main.go
View file @
40ff3cac
...
...
@@ -62,20 +62,21 @@ func main() {
utils
.
InitConfig
(
VmType
,
ConfigFile
,
Datadir
,
"ETH"
)
ethereum
,
err
:=
eth
.
New
(
&
eth
.
Config
{
Name
:
p2p
.
MakeName
(
ClientIdentifier
,
Version
),
KeyStore
:
KeyStore
,
DataDir
:
Datadir
,
LogFile
:
LogFile
,
LogLevel
:
LogLevel
,
LogFormat
:
LogFormat
,
MaxPeers
:
MaxPeer
,
Port
:
OutboundPort
,
NAT
:
NAT
,
KeyRing
:
KeyRing
,
Shh
:
true
,
Dial
:
Dial
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
Name
:
p2p
.
MakeName
(
ClientIdentifier
,
Version
),
KeyStore
:
KeyStore
,
DataDir
:
Datadir
,
LogFile
:
LogFile
,
LogLevel
:
LogLevel
,
LogFormat
:
LogFormat
,
MaxPeers
:
MaxPeer
,
Port
:
OutboundPort
,
NAT
:
NAT
,
KeyRing
:
KeyRing
,
Shh
:
true
,
Dial
:
Dial
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
MinerThreads
:
MinerThreads
,
})
if
err
!=
nil
{
...
...
@@ -128,7 +129,7 @@ func main() {
}
if
StartRpc
{
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
Rpc
ListenAddress
,
Rpc
Port
)
}
if
StartWebSockets
{
...
...
@@ -139,6 +140,10 @@ func main() {
fmt
.
Printf
(
"Welcome to the FRONTIER
\n
"
)
if
StartMining
{
ethereum
.
Miner
()
.
Start
()
}
if
StartJsConsole
{
InitJsConsole
(
ethereum
)
}
else
if
len
(
InputFile
)
>
0
{
...
...
cmd/mist/flags.go
View file @
40ff3cac
...
...
@@ -37,31 +37,32 @@ import (
)
var
(
Identifier
string
KeyRing
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcPort
int
WsPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
VmType
int
MinerThreads
int
Identifier
string
KeyRing
string
KeyStore
string
StartRpc
bool
StartWebSockets
bool
RpcListenAddress
string
RpcPort
int
WsPort
int
OutboundPort
string
ShowGenesis
bool
AddPeer
string
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
NAT
nat
.
Interface
SecretFile
string
ExportDir
string
NonInteractive
bool
Datadir
string
LogFile
string
ConfigFile
string
DebugFile
string
LogLevel
int
VmType
int
MinerThreads
int
)
// flags specific to gui client
...
...
@@ -79,6 +80,7 @@ func Init() {
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
(
&
RpcListenAddress
,
"rpcaddr"
,
"127.0.0.1"
,
"address for json-rpc server to listen on"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
IntVar
(
&
WsPort
,
"wsport"
,
40404
,
"port to start websocket rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
true
,
"start rpc server"
)
...
...
cmd/mist/main.go
View file @
40ff3cac
...
...
@@ -73,7 +73,7 @@ func run() error {
utils
.
KeyTasks
(
ethereum
.
KeyManager
(),
KeyRing
,
GenAddr
,
SecretFile
,
ExportDir
,
NonInteractive
)
if
StartRpc
{
utils
.
StartRpc
(
ethereum
,
RpcPort
)
utils
.
StartRpc
(
ethereum
,
Rpc
ListenAddress
,
Rpc
Port
)
}
if
StartWebSockets
{
...
...
cmd/utils/cmd.go
View file @
40ff3cac
...
...
@@ -159,9 +159,9 @@ func KeyTasks(keyManager *crypto.KeyManager, KeyRing string, GenAddr bool, Secre
clilogger
.
Infof
(
"Main address %x
\n
"
,
keyManager
.
Address
())
}
func
StartRpc
(
ethereum
*
eth
.
Ethereum
,
RpcPort
int
)
{
func
StartRpc
(
ethereum
*
eth
.
Ethereum
,
Rpc
ListenAddress
string
,
Rpc
Port
int
)
{
var
err
error
ethereum
.
RpcServer
,
err
=
rpchttp
.
NewRpcHttpServer
(
xeth
.
New
(
ethereum
),
RpcPort
)
ethereum
.
RpcServer
,
err
=
rpchttp
.
NewRpcHttpServer
(
xeth
.
New
(
ethereum
),
Rpc
ListenAddress
,
Rpc
Port
)
if
err
!=
nil
{
clilogger
.
Errorf
(
"Could not start RPC interface (port %v): %v"
,
RpcPort
,
err
)
}
else
{
...
...
core/filter.go
View file @
40ff3cac
...
...
@@ -17,7 +17,7 @@ type FilterOptions struct {
Latest
int64
Address
[][]
byte
Topics
[][]
byte
Topics
[][]
[]
byte
Skip
int
Max
int
...
...
@@ -31,7 +31,7 @@ type Filter struct {
skip
int
address
[][]
byte
max
int
topics
[][]
byte
topics
[][]
[]
byte
BlockCallback
func
(
*
types
.
Block
)
PendingCallback
func
(
*
types
.
Block
)
...
...
@@ -44,6 +44,8 @@ func NewFilter(eth Backend) *Filter {
return
&
Filter
{
eth
:
eth
}
}
// SetOptions copies the filter options to the filter it self. The reason for this "silly" copy
// is simply because named arguments in this case is extremely nice and readable.
func
(
self
*
Filter
)
SetOptions
(
options
FilterOptions
)
{
self
.
earliest
=
options
.
Earliest
self
.
latest
=
options
.
Latest
...
...
@@ -69,7 +71,7 @@ func (self *Filter) SetAddress(addr [][]byte) {
self
.
address
=
addr
}
func
(
self
*
Filter
)
SetTopics
(
topics
[][]
byte
)
{
func
(
self
*
Filter
)
SetTopics
(
topics
[][]
[]
byte
)
{
self
.
topics
=
topics
}
...
...
@@ -149,10 +151,18 @@ Logs:
continue
}
max
:=
int
(
math
.
Min
(
float64
(
len
(
self
.
topics
)),
float64
(
len
(
log
.
Topics
()))))
for
i
:=
0
;
i
<
max
;
i
++
{
if
!
bytes
.
Equal
(
log
.
Topics
()[
i
],
self
.
topics
[
i
])
{
continue
Logs
logTopics
:=
make
([][]
byte
,
len
(
self
.
topics
))
copy
(
logTopics
,
log
.
Topics
())
for
i
,
topics
:=
range
self
.
topics
{
for
_
,
topic
:=
range
topics
{
var
match
bool
if
bytes
.
Equal
(
log
.
Topics
()[
i
],
topic
)
{
match
=
true
}
if
!
match
{
continue
Logs
}
}
}
...
...
@@ -177,8 +187,15 @@ func (self *Filter) bloomFilter(block *types.Block) bool {
}
}
for
_
,
topic
:=
range
self
.
topics
{
if
!
types
.
BloomLookup
(
block
.
Bloom
(),
topic
)
{
for
_
,
sub
:=
range
self
.
topics
{
var
included
bool
for
_
,
topic
:=
range
sub
{
if
types
.
BloomLookup
(
block
.
Bloom
(),
topic
)
{
included
=
true
break
}
}
if
!
included
{
return
false
}
}
...
...
ethutil/common.go
View file @
40ff3cac
...
...
@@ -15,11 +15,13 @@ import (
func
DefaultAssetPath
()
string
{
var
assetPath
string
pwd
,
_
:=
os
.
Getwd
()
srcdir
:=
path
.
Join
(
os
.
Getenv
(
"GOPATH"
),
"src"
,
"github.com"
,
"ethereum"
,
"go-ethereum"
,
"cmd"
,
"mist"
)
// If the current working directory is the go-ethereum dir
// assume a debug build and use the source directory as
// asset directory.
pwd
,
_
:=
os
.
Getwd
()
if
pwd
==
path
.
Join
(
os
.
Getenv
(
"GOPATH"
),
"src"
,
"github.com"
,
"ethereum"
,
"go-ethereum"
,
"cmd"
,
"mist"
)
{
if
pwd
==
srcdir
{
assetPath
=
path
.
Join
(
pwd
,
"assets"
)
}
else
{
switch
runtime
.
GOOS
{
...
...
@@ -35,6 +37,13 @@ func DefaultAssetPath() string {
assetPath
=
"."
}
}
// Check if the assetPath exists. If not, try the source directory
// This happens when binary is run from outside cmd/mist directory
if
_
,
err
:=
os
.
Stat
(
assetPath
);
os
.
IsNotExist
(
err
)
{
assetPath
=
path
.
Join
(
srcdir
,
"assets"
)
}
return
assetPath
}
...
...
javascript/types.go
View file @
40ff3cac
...
...
@@ -6,7 +6,6 @@ import (
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/state"
"github.com/ethereum/go-ethereum/ui"
"github.com/ethereum/go-ethereum/xeth"
"github.com/obscuren/otto"
)
...
...
@@ -96,17 +95,3 @@ func (self *JSEthereum) toVal(v interface{}) otto.Value {
return
result
}
func
(
self
*
JSEthereum
)
Messages
(
object
map
[
string
]
interface
{})
otto
.
Value
{
filter
:=
ui
.
NewFilterFromMap
(
object
,
self
.
ethereum
)
logs
:=
filter
.
Find
()
var
jslogs
[]
JSLog
for
_
,
m
:=
range
logs
{
jslogs
=
append
(
jslogs
,
NewJSLog
(
m
))
}
v
,
_
:=
self
.
vm
.
ToValue
(
jslogs
)
return
v
}
miner/miner.go
View file @
40ff3cac
...
...
@@ -55,10 +55,5 @@ func (self *Miner) Stop() {
}
func
(
self
*
Miner
)
HashRate
()
int64
{
var
tot
int64
for
_
,
agent
:=
range
self
.
worker
.
agents
{
tot
+=
agent
.
Pow
()
.
GetHashrate
()
}
return
tot
return
self
.
worker
.
HashRate
()
}
miner/worker.go
View file @
40ff3cac
...
...
@@ -5,6 +5,7 @@ import (
"math/big"
"sort"
"sync"
"time"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
...
...
@@ -113,6 +114,8 @@ func (self *worker) register(agent Agent) {
func
(
self
*
worker
)
update
()
{
events
:=
self
.
mux
.
Subscribe
(
core
.
ChainEvent
{},
core
.
NewMinedBlockEvent
{})
timer
:=
time
.
NewTicker
(
2
*
time
.
Second
)
out
:
for
{
select
{
...
...
@@ -131,6 +134,8 @@ out:
agent
.
Stop
()
}
break
out
case
<-
timer
.
C
:
minerlogger
.
Debugln
(
"Hash rate:"
,
self
.
HashRate
(),
"Khash"
)
}
}
...
...
@@ -250,3 +255,12 @@ func (self *worker) commitTransaction(tx *types.Transaction) error {
return
nil
}
func
(
self
*
worker
)
HashRate
()
int64
{
var
tot
int64
for
_
,
agent
:=
range
self
.
agents
{
tot
+=
agent
.
Pow
()
.
GetHashrate
()
}
return
tot
}
rpc/args.go
View file @
40ff3cac
...
...
@@ -197,7 +197,7 @@ type FilterOptions struct {
Earliest
int64
Latest
int64
Address
interface
{}
Topic
[]
string
Topic
[]
interface
{}
Skip
int
Max
int
}
...
...
@@ -220,10 +220,20 @@ func toFilterOptions(options *FilterOptions) core.FilterOptions {
opts
.
Earliest
=
options
.
Earliest
opts
.
Latest
=
options
.
Latest
opts
.
Topics
=
make
([][]
byte
,
len
(
options
.
Topic
))
for
i
,
topic
:=
range
options
.
Topic
{
opts
.
Topics
[
i
]
=
fromHex
(
topic
)
topics
:=
make
([][][]
byte
,
len
(
options
.
Topic
))
for
i
,
topicDat
:=
range
options
.
Topic
{
if
slice
,
ok
:=
topicDat
.
([]
interface
{});
ok
{
topics
[
i
]
=
make
([][]
byte
,
len
(
slice
))
for
j
,
topic
:=
range
slice
{
topics
[
i
][
j
]
=
fromHex
(
topic
.
(
string
))
}
}
else
if
str
,
ok
:=
topicDat
.
(
string
);
ok
{
topics
[
i
]
=
make
([][]
byte
,
1
)
topics
[
i
][
0
]
=
fromHex
(
str
)
}
}
opts
.
Topics
=
topics
return
opts
}
...
...
rpc/http/server.go
View file @
40ff3cac
...
...
@@ -29,8 +29,8 @@ import (
var
rpchttplogger
=
logger
.
NewLogger
(
"RPC-HTTP"
)
var
JSON
rpc
.
JsonWrapper
func
NewRpcHttpServer
(
pipe
*
xeth
.
XEth
,
port
int
)
(
*
RpcHttpServer
,
error
)
{
sport
:=
fmt
.
Sprintf
(
"
127.0.0.1:%d"
,
port
)
func
NewRpcHttpServer
(
pipe
*
xeth
.
XEth
,
address
string
,
port
int
)
(
*
RpcHttpServer
,
error
)
{
sport
:=
fmt
.
Sprintf
(
"
%s:%d"
,
address
,
port
)
l
,
err
:=
net
.
Listen
(
"tcp"
,
sport
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -41,6 +41,7 @@ func NewRpcHttpServer(pipe *xeth.XEth, port int) (*RpcHttpServer, error) {
quit
:
make
(
chan
bool
),
pipe
:
pipe
,
port
:
port
,
addr
:
address
,
},
nil
}
...
...
@@ -49,6 +50,7 @@ type RpcHttpServer struct {
listener
net
.
Listener
pipe
*
xeth
.
XEth
port
int
addr
string
}
func
(
s
*
RpcHttpServer
)
exitHandler
()
{
...
...
@@ -69,7 +71,7 @@ func (s *RpcHttpServer) Stop() {
}
func
(
s
*
RpcHttpServer
)
Start
()
{
rpchttplogger
.
Infof
(
"Starting RPC-HTTP server on
port %d"
,
s
.
port
)
rpchttplogger
.
Infof
(
"Starting RPC-HTTP server on
%s:%d"
,
s
.
addr
,
s
.
port
)
go
s
.
exitHandler
()
api
:=
rpc
.
NewEthereumApi
(
s
.
pipe
)
...
...
state/statedb.go
View file @
40ff3cac
...
...
@@ -54,7 +54,7 @@ func (self *StateDB) Refund(addr []byte, gas *big.Int) {
// Retrieve the balance from the given address or 0 if object not found
func
(
self
*
StateDB
)
GetBalance
(
addr
[]
byte
)
*
big
.
Int
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
return
stateObject
.
balance
}
...
...
@@ -63,14 +63,14 @@ func (self *StateDB) GetBalance(addr []byte) *big.Int {
}
func
(
self
*
StateDB
)
AddBalance
(
addr
[]
byte
,
amount
*
big
.
Int
)
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
stateObject
.
AddBalance
(
amount
)
}
}
func
(
self
*
StateDB
)
GetNonce
(
addr
[]
byte
)
uint64
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
return
stateObject
.
nonce
}
...
...
@@ -79,7 +79,7 @@ func (self *StateDB) GetNonce(addr []byte) uint64 {
}
func
(
self
*
StateDB
)
GetCode
(
addr
[]
byte
)
[]
byte
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
return
stateObject
.
code
}
...
...
@@ -88,7 +88,7 @@ func (self *StateDB) GetCode(addr []byte) []byte {
}
func
(
self
*
StateDB
)
GetState
(
a
,
b
[]
byte
)
[]
byte
{
stateObject
:=
self
.
GetStateObject
(
a
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
a
)
if
stateObject
!=
nil
{
return
stateObject
.
GetState
(
b
)
.
Bytes
()
}
...
...
@@ -97,28 +97,28 @@ func (self *StateDB) GetState(a, b []byte) []byte {
}
func
(
self
*
StateDB
)
SetNonce
(
addr
[]
byte
,
nonce
uint64
)
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
stateObject
.
SetNonce
(
nonce
)
}
}
func
(
self
*
StateDB
)
SetCode
(
addr
,
code
[]
byte
)
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
stateObject
.
SetCode
(
code
)
}
}
func
(
self
*
StateDB
)
SetState
(
addr
,
key
[]
byte
,
value
interface
{})
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
stateObject
.
SetState
(
key
,
ethutil
.
NewValue
(
value
))
}
}
func
(
self
*
StateDB
)
Delete
(
addr
[]
byte
)
bool
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
Get
OrNew
StateObject
(
addr
)
if
stateObject
!=
nil
{
stateObject
.
MarkForDeletion
()
...
...
ui/filter.go
View file @
40ff3cac
package
ui
import
(
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/ethutil"
)
func
fromHex
(
s
string
)
[]
byte
{
if
len
(
s
)
>
1
{
if
s
[
0
:
2
]
==
"0x"
{
s
=
s
[
2
:
]
}
return
ethutil
.
Hex2Bytes
(
s
)
}
return
nil
}
func
NewFilterFromMap
(
object
map
[
string
]
interface
{},
eth
core
.
Backend
)
*
core
.
Filter
{
filter
:=
core
.
NewFilter
(
eth
)
if
object
[
"earliest"
]
!=
nil
{
val
:=
ethutil
.
NewValue
(
object
[
"earliest"
])
filter
.
SetEarliestBlock
(
val
.
Int
())
}
if
object
[
"latest"
]
!=
nil
{
val
:=
ethutil
.
NewValue
(
object
[
"latest"
])
filter
.
SetLatestBlock
(
val
.
Int
())
}
if
object
[
"address"
]
!=
nil
{
//val := ethutil.NewValue(object["address"])
//filter.SetAddress(fromHex(val.Str()))
}
if
object
[
"max"
]
!=
nil
{
val
:=
ethutil
.
NewValue
(
object
[
"max"
])
filter
.
SetMax
(
int
(
val
.
Uint
()))
}
if
object
[
"skip"
]
!=
nil
{
val
:=
ethutil
.
NewValue
(
object
[
"skip"
])
filter
.
SetSkip
(
int
(
val
.
Uint
()))
}
if
object
[
"topics"
]
!=
nil
{
filter
.
SetTopics
(
MakeTopics
(
object
[
"topics"
]))
}
return
filter
}
// Conversion methodn
func
mapToAccountChange
(
m
map
[
string
]
interface
{})
(
d
core
.
AccountChange
)
{
if
str
,
ok
:=
m
[
"id"
]
.
(
string
);
ok
{
d
.
Address
=
fromHex
(
str
)
}
if
str
,
ok
:=
m
[
"at"
]
.
(
string
);
ok
{
d
.
StateAddress
=
fromHex
(
str
)
}
return
}
// data can come in in the following formats:
// ["aabbccdd", {id: "ccddee", at: "11223344"}], "aabbcc", {id: "ccddee", at: "1122"}
func
MakeTopics
(
v
interface
{})
(
d
[][]
byte
)
{
if
str
,
ok
:=
v
.
(
string
);
ok
{
d
=
append
(
d
,
fromHex
(
str
))
}
else
if
slice
,
ok
:=
v
.
([]
string
);
ok
{
for
_
,
item
:=
range
slice
{
d
=
append
(
d
,
fromHex
(
item
))
}
}
return
}
xeth/xeth.go
View file @
40ff3cac
...
...
@@ -300,14 +300,6 @@ func (self *XEth) Transact(toStr, valueStr, gasStr, gasPriceStr, codeStr string)
tx
.
SetNonce
(
nonce
)
tx
.
Sign
(
key
.
PrivateKey
)
//fmt.Printf("create tx: %x %v\n", tx.Hash()[:4], tx.Nonce())
// Do some pre processing for our "pre" events and hooks
//block := self.chainManager.NewBlock(key.Address())
//coinbase := state.GetOrNewStateObject(key.Address())
//coinbase.SetGasPool(block.GasLimit())
//self.blockProcessor.ApplyTransactions(coinbase, state, block, types.Transactions{tx}, true)
err
=
self
.
eth
.
TxPool
()
.
Add
(
tx
)
if
err
!=
nil
{
return
""
,
err
...
...
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