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
ed64434d
Commit
ed64434d
authored
May 02, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved public interface
parent
f1da6f05
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
19 additions
and
219 deletions
+19
-219
ext_app.go
ethereal/ui/ext_app.go
+3
-3
gui.go
ethereal/ui/gui.go
+7
-7
html_container.go
ethereal/ui/html_container.go
+3
-3
library.go
ethereal/ui/library.go
+6
-5
ethereum.go
utils/ethereum.go
+0
-110
types.go
utils/types.go
+0
-91
No files found.
ethereal/ui/ext_app.go
View file @
ed64434d
...
@@ -3,8 +3,8 @@ package ethui
...
@@ -3,8 +3,8 @@ package ethui
import
(
import
(
"fmt"
"fmt"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/go-qml/qml"
"github.com/go-qml/qml"
"math/big"
"math/big"
)
)
...
@@ -22,7 +22,7 @@ type AppContainer interface {
...
@@ -22,7 +22,7 @@ type AppContainer interface {
}
}
type
ExtApplication
struct
{
type
ExtApplication
struct
{
*
utils
.
PEthereum
*
ethpub
.
PEthereum
blockChan
chan
ethutil
.
React
blockChan
chan
ethutil
.
React
changeChan
chan
ethutil
.
React
changeChan
chan
ethutil
.
React
...
@@ -35,7 +35,7 @@ type ExtApplication struct {
...
@@ -35,7 +35,7 @@ type ExtApplication struct {
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
ExtApplication
{
func
NewExtApplication
(
container
AppContainer
,
lib
*
UiLib
)
*
ExtApplication
{
app
:=
&
ExtApplication
{
app
:=
&
ExtApplication
{
utils
.
NewPEthereum
(
lib
.
eth
),
ethpub
.
NewPEthereum
(
lib
.
eth
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
ethutil
.
React
,
1
),
make
(
chan
bool
),
make
(
chan
bool
),
...
...
ethereal/ui/gui.go
View file @
ed64434d
...
@@ -6,8 +6,8 @@ import (
...
@@ -6,8 +6,8 @@ import (
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethdb"
"github.com/ethereum/eth-go/ethdb"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/go-qml/qml"
"github.com/go-qml/qml"
"math/big"
"math/big"
"strings"
"strings"
...
@@ -57,9 +57,9 @@ func (ui *Gui) Start(assetPath string) {
...
@@ -57,9 +57,9 @@ func (ui *Gui) Start(assetPath string) {
// Register ethereum functions
// Register ethereum functions
qml
.
RegisterTypes
(
"Ethereum"
,
1
,
0
,
[]
qml
.
TypeSpec
{{
qml
.
RegisterTypes
(
"Ethereum"
,
1
,
0
,
[]
qml
.
TypeSpec
{{
Init
:
func
(
p
*
utils
.
PBlock
,
obj
qml
.
Object
)
{
p
.
Number
=
0
;
p
.
Hash
=
""
},
Init
:
func
(
p
*
ethpub
.
PBlock
,
obj
qml
.
Object
)
{
p
.
Number
=
0
;
p
.
Hash
=
""
},
},
{
},
{
Init
:
func
(
p
*
utils
.
PTx
,
obj
qml
.
Object
)
{
p
.
Value
=
""
;
p
.
Hash
=
""
;
p
.
Address
=
""
},
Init
:
func
(
p
*
ethpub
.
PTx
,
obj
qml
.
Object
)
{
p
.
Value
=
""
;
p
.
Hash
=
""
;
p
.
Address
=
""
},
}})
}})
ethutil
.
Config
.
SetClientString
(
fmt
.
Sprintf
(
"/Ethereal v%s"
,
"0.2"
))
ethutil
.
Config
.
SetClientString
(
fmt
.
Sprintf
(
"/Ethereal v%s"
,
"0.2"
))
...
@@ -130,13 +130,13 @@ func (ui *Gui) readPreviousTransactions() {
...
@@ -130,13 +130,13 @@ func (ui *Gui) readPreviousTransactions() {
for
it
.
Next
()
{
for
it
.
Next
()
{
tx
:=
ethchain
.
NewTransactionFromBytes
(
it
.
Value
())
tx
:=
ethchain
.
NewTransactionFromBytes
(
it
.
Value
())
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
utils
.
NewPTx
(
tx
))
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
}
}
it
.
Release
()
it
.
Release
()
}
}
func
(
ui
*
Gui
)
ProcessBlock
(
block
*
ethchain
.
Block
)
{
func
(
ui
*
Gui
)
ProcessBlock
(
block
*
ethchain
.
Block
)
{
ui
.
win
.
Root
()
.
Call
(
"addBlock"
,
utils
.
NewPBlock
(
block
))
ui
.
win
.
Root
()
.
Call
(
"addBlock"
,
ethpub
.
NewPBlock
(
block
))
}
}
// Simple go routine function that updates the list of peers in the GUI
// Simple go routine function that updates the list of peers in the GUI
...
@@ -157,13 +157,13 @@ func (ui *Gui) update() {
...
@@ -157,13 +157,13 @@ func (ui *Gui) update() {
if
txMsg
.
Type
==
ethchain
.
TxPre
{
if
txMsg
.
Type
==
ethchain
.
TxPre
{
if
bytes
.
Compare
(
tx
.
Sender
(),
ui
.
addr
)
==
0
&&
addrState
.
Nonce
<=
tx
.
Nonce
{
if
bytes
.
Compare
(
tx
.
Sender
(),
ui
.
addr
)
==
0
&&
addrState
.
Nonce
<=
tx
.
Nonce
{
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
utils
.
NewPTx
(
tx
))
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
ui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
ui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
addrState
.
Nonce
+=
1
addrState
.
Nonce
+=
1
unconfirmedFunds
.
Sub
(
unconfirmedFunds
,
tx
.
Value
)
unconfirmedFunds
.
Sub
(
unconfirmedFunds
,
tx
.
Value
)
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
ui
.
addr
)
==
0
{
}
else
if
bytes
.
Compare
(
tx
.
Recipient
,
ui
.
addr
)
==
0
{
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
utils
.
NewPTx
(
tx
))
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
ethpub
.
NewPTx
(
tx
))
ui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
ui
.
txDb
.
Put
(
tx
.
Hash
(),
tx
.
RlpEncode
())
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
...
...
ethereal/ui/html_container.go
View file @
ed64434d
...
@@ -3,8 +3,8 @@ package ethui
...
@@ -3,8 +3,8 @@ package ethui
import
(
import
(
"errors"
"errors"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/go-qml/qml"
"github.com/go-qml/qml"
"math/big"
"math/big"
"path/filepath"
"path/filepath"
...
@@ -57,12 +57,12 @@ func (app *HtmlApplication) Window() *qml.Window {
...
@@ -57,12 +57,12 @@ func (app *HtmlApplication) Window() *qml.Window {
}
}
func
(
app
*
HtmlApplication
)
NewBlock
(
block
*
ethchain
.
Block
)
{
func
(
app
*
HtmlApplication
)
NewBlock
(
block
*
ethchain
.
Block
)
{
b
:=
&
utils
.
PBlock
{
Number
:
int
(
block
.
BlockInfo
()
.
Number
),
Hash
:
ethutil
.
Hex
(
block
.
Hash
())}
b
:=
&
ethpub
.
PBlock
{
Number
:
int
(
block
.
BlockInfo
()
.
Number
),
Hash
:
ethutil
.
Hex
(
block
.
Hash
())}
app
.
webView
.
Call
(
"onNewBlockCb"
,
b
)
app
.
webView
.
Call
(
"onNewBlockCb"
,
b
)
}
}
func
(
app
*
HtmlApplication
)
ObjectChanged
(
stateObject
*
ethchain
.
StateObject
)
{
func
(
app
*
HtmlApplication
)
ObjectChanged
(
stateObject
*
ethchain
.
StateObject
)
{
app
.
webView
.
Call
(
"onObjectChangeCb"
,
utils
.
NewPStateObject
(
stateObject
))
app
.
webView
.
Call
(
"onObjectChangeCb"
,
ethpub
.
NewPStateObject
(
stateObject
))
}
}
func
(
app
*
HtmlApplication
)
StorageChanged
(
stateObject
*
ethchain
.
StateObject
,
addr
[]
byte
,
value
*
big
.
Int
)
{
func
(
app
*
HtmlApplication
)
StorageChanged
(
stateObject
*
ethchain
.
StateObject
,
addr
[]
byte
,
value
*
big
.
Int
)
{
...
...
ethereal/ui/library.go
View file @
ed64434d
...
@@ -4,6 +4,7 @@ import (
...
@@ -4,6 +4,7 @@ import (
"encoding/hex"
"encoding/hex"
"fmt"
"fmt"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/ethereum/go-ethereum/utils"
"github.com/obscuren/secp256k1-go"
"github.com/obscuren/secp256k1-go"
...
@@ -47,14 +48,14 @@ func (lib *EthLib) GetKey() string {
...
@@ -47,14 +48,14 @@ func (lib *EthLib) GetKey() string {
return
ethutil
.
Hex
(
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
.
Address
())
return
ethutil
.
Hex
(
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
.
Address
())
}
}
func
(
lib
*
EthLib
)
GetStateObject
(
address
string
)
*
utils
.
PStateObject
{
func
(
lib
*
EthLib
)
GetStateObject
(
address
string
)
*
ethpub
.
PStateObject
{
stateObject
:=
lib
.
stateManager
.
ProcState
()
.
GetContract
(
ethutil
.
FromHex
(
address
))
stateObject
:=
lib
.
stateManager
.
ProcState
()
.
GetContract
(
ethutil
.
FromHex
(
address
))
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
return
utils
.
NewPStateObject
(
stateObject
)
return
ethpub
.
NewPStateObject
(
stateObject
)
}
}
// See GetStorage for explanation on "nil"
// See GetStorage for explanation on "nil"
return
utils
.
NewPStateObject
(
nil
)
return
ethpub
.
NewPStateObject
(
nil
)
}
}
func
(
lib
*
EthLib
)
Watch
(
addr
,
storageAddr
string
)
{
func
(
lib
*
EthLib
)
Watch
(
addr
,
storageAddr
string
)
{
...
@@ -115,7 +116,7 @@ func (lib *EthLib) Transact(recipient, valueStr, gasStr, gasPriceStr, dataStr st
...
@@ -115,7 +116,7 @@ func (lib *EthLib) Transact(recipient, valueStr, gasStr, gasPriceStr, dataStr st
return
ethutil
.
Hex
(
tx
.
Hash
()),
nil
return
ethutil
.
Hex
(
tx
.
Hash
()),
nil
}
}
func
(
lib
*
EthLib
)
GetBlock
(
hexHash
string
)
*
utils
.
PBlock
{
func
(
lib
*
EthLib
)
GetBlock
(
hexHash
string
)
*
ethpub
.
PBlock
{
hash
,
err
:=
hex
.
DecodeString
(
hexHash
)
hash
,
err
:=
hex
.
DecodeString
(
hexHash
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
return
nil
...
@@ -123,5 +124,5 @@ func (lib *EthLib) GetBlock(hexHash string) *utils.PBlock {
...
@@ -123,5 +124,5 @@ func (lib *EthLib) GetBlock(hexHash string) *utils.PBlock {
block
:=
lib
.
blockChain
.
GetBlock
(
hash
)
block
:=
lib
.
blockChain
.
GetBlock
(
hash
)
return
&
utils
.
PBlock
{
Number
:
int
(
block
.
BlockInfo
()
.
Number
),
Hash
:
ethutil
.
Hex
(
block
.
Hash
())}
return
&
ethpub
.
PBlock
{
Number
:
int
(
block
.
BlockInfo
()
.
Number
),
Hash
:
ethutil
.
Hex
(
block
.
Hash
())}
}
}
utils/ethereum.go
deleted
100644 → 0
View file @
f1da6f05
package
utils
import
(
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
)
type
PEthereum
struct
{
stateManager
*
ethchain
.
StateManager
blockChain
*
ethchain
.
BlockChain
txPool
*
ethchain
.
TxPool
}
func
NewPEthereum
(
eth
*
eth
.
Ethereum
)
*
PEthereum
{
return
&
PEthereum
{
eth
.
StateManager
(),
eth
.
BlockChain
(),
eth
.
TxPool
(),
}
}
func
(
lib
*
PEthereum
)
GetBlock
(
hexHash
string
)
*
PBlock
{
hash
:=
ethutil
.
FromHex
(
hexHash
)
block
:=
lib
.
blockChain
.
GetBlock
(
hash
)
return
&
PBlock
{
Number
:
int
(
block
.
BlockInfo
()
.
Number
),
Hash
:
ethutil
.
Hex
(
block
.
Hash
())}
}
func
(
lib
*
PEthereum
)
GetKey
()
*
PKey
{
keyPair
,
err
:=
ethchain
.
NewKeyPairFromSec
(
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
.
PrivateKey
)
if
err
!=
nil
{
return
nil
}
return
NewPKey
(
keyPair
)
}
func
(
lib
*
PEthereum
)
GetStateObject
(
address
string
)
*
PStateObject
{
stateObject
:=
lib
.
stateManager
.
ProcState
()
.
GetContract
(
ethutil
.
FromHex
(
address
))
if
stateObject
!=
nil
{
return
NewPStateObject
(
stateObject
)
}
// See GetStorage for explanation on "nil"
return
NewPStateObject
(
nil
)
}
func
(
lib
*
PEthereum
)
Transact
(
key
,
recipient
,
valueStr
,
gasStr
,
gasPriceStr
,
dataStr
string
)
(
string
,
error
)
{
return
lib
.
createTx
(
key
,
recipient
,
valueStr
,
gasStr
,
gasPriceStr
,
dataStr
,
""
)
}
func
(
lib
*
PEthereum
)
Create
(
key
,
valueStr
,
gasStr
,
gasPriceStr
,
initStr
,
bodyStr
string
)
(
string
,
error
)
{
return
lib
.
createTx
(
key
,
""
,
valueStr
,
gasStr
,
gasPriceStr
,
initStr
,
bodyStr
)
}
func
(
lib
*
PEthereum
)
createTx
(
key
,
recipient
,
valueStr
,
gasStr
,
gasPriceStr
,
initStr
,
scriptStr
string
)
(
string
,
error
)
{
var
hash
[]
byte
var
contractCreation
bool
if
len
(
recipient
)
==
0
{
contractCreation
=
true
}
else
{
hash
=
ethutil
.
FromHex
(
recipient
)
}
keyPair
,
err
:=
ethchain
.
NewKeyPairFromSec
([]
byte
(
ethutil
.
FromHex
(
key
)))
if
err
!=
nil
{
return
""
,
err
}
value
:=
ethutil
.
Big
(
valueStr
)
gas
:=
ethutil
.
Big
(
gasStr
)
gasPrice
:=
ethutil
.
Big
(
gasPriceStr
)
var
tx
*
ethchain
.
Transaction
// Compile and assemble the given data
if
contractCreation
{
initScript
,
err
:=
Compile
(
initStr
)
if
err
!=
nil
{
return
""
,
err
}
mainScript
,
err
:=
Compile
(
scriptStr
)
if
err
!=
nil
{
return
""
,
err
}
tx
=
ethchain
.
NewContractCreationTx
(
value
,
gas
,
gasPrice
,
mainScript
,
initScript
)
}
else
{
// Just in case it was submitted as a 0x prefixed string
if
initStr
[
0
:
2
]
==
"0x"
{
initStr
=
initStr
[
2
:
len
(
initStr
)]
}
fmt
.
Println
(
"DATA:"
,
initStr
)
tx
=
ethchain
.
NewTransactionMessage
(
hash
,
value
,
gas
,
gasPrice
,
ethutil
.
FromHex
(
initStr
))
}
acc
:=
lib
.
stateManager
.
GetAddrState
(
keyPair
.
Address
())
tx
.
Nonce
=
acc
.
Nonce
tx
.
Sign
(
keyPair
.
PrivateKey
)
lib
.
txPool
.
QueueTransaction
(
tx
)
if
contractCreation
{
ethutil
.
Config
.
Log
.
Infof
(
"Contract addr %x"
,
tx
.
Hash
()[
12
:
])
}
else
{
ethutil
.
Config
.
Log
.
Infof
(
"Tx hash %x"
,
tx
.
Hash
())
}
return
ethutil
.
Hex
(
tx
.
Hash
()),
nil
}
utils/types.go
deleted
100644 → 0
View file @
f1da6f05
package
utils
import
(
"encoding/hex"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
)
// Block interface exposed to QML
type
PBlock
struct
{
Number
int
Hash
string
}
// Creates a new QML Block from a chain block
func
NewPBlock
(
block
*
ethchain
.
Block
)
*
PBlock
{
info
:=
block
.
BlockInfo
()
hash
:=
hex
.
EncodeToString
(
block
.
Hash
())
return
&
PBlock
{
Number
:
int
(
info
.
Number
),
Hash
:
hash
}
}
type
PTx
struct
{
Value
,
Hash
,
Address
string
Contract
bool
}
func
NewPTx
(
tx
*
ethchain
.
Transaction
)
*
PTx
{
hash
:=
hex
.
EncodeToString
(
tx
.
Hash
())
sender
:=
hex
.
EncodeToString
(
tx
.
Recipient
)
isContract
:=
len
(
tx
.
Data
)
>
0
return
&
PTx
{
Hash
:
hash
,
Value
:
ethutil
.
CurrencyToString
(
tx
.
Value
),
Address
:
sender
,
Contract
:
isContract
}
}
type
PKey
struct
{
Address
string
PrivateKey
string
PublicKey
string
}
func
NewPKey
(
key
*
ethchain
.
KeyPair
)
*
PKey
{
return
&
PKey
{
ethutil
.
Hex
(
key
.
Address
()),
ethutil
.
Hex
(
key
.
PrivateKey
),
ethutil
.
Hex
(
key
.
PublicKey
)}
}
/*
type PKeyRing struct {
Keys []interface{}
}
func NewPKeyRing(keys []interface{}) *PKeyRing {
return &PKeyRing{Keys: keys}
}
*/
type
PStateObject
struct
{
object
*
ethchain
.
StateObject
}
func
NewPStateObject
(
object
*
ethchain
.
StateObject
)
*
PStateObject
{
return
&
PStateObject
{
object
:
object
}
}
func
(
c
*
PStateObject
)
GetStorage
(
address
string
)
string
{
// Because somehow, even if you return nil to QML it
// still has some magical object so we can't rely on
// undefined or null at the QML side
if
c
.
object
!=
nil
{
val
:=
c
.
object
.
GetMem
(
ethutil
.
Big
(
"0x"
+
address
))
return
val
.
BigInt
()
.
String
()
}
return
""
}
func
(
c
*
PStateObject
)
Value
()
string
{
if
c
.
object
!=
nil
{
return
c
.
object
.
Amount
.
String
()
}
return
""
}
func
(
c
*
PStateObject
)
Address
()
string
{
if
c
.
object
!=
nil
{
return
ethutil
.
Hex
(
c
.
object
.
Address
())
}
return
""
}
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