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
942f552c
Commit
942f552c
authored
May 14, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/poc5-rc6'
parents
809b4ae0
a73ae872
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
195 additions
and
120 deletions
+195
-120
README.md
README.md
+1
-1
index.html
ethereal/assets/muted/index.html
+1
-0
_new_contract.qml
ethereal/assets/qml/newTransaction/_new_contract.qml
+3
-3
_simple_send.qml
ethereal/assets/qml/newTransaction/_simple_send.qml
+2
-1
samplecoin.html
ethereal/assets/samplecoin/samplecoin.html
+1
-3
ethereum.go
ethereal/ethereum.go
+18
-10
gui.go
ethereal/ui/gui.go
+36
-55
library.go
ethereal/ui/library.go
+8
-5
ui_lib.go
ethereal/ui/ui_lib.go
+1
-1
dev_console.go
ethereum/dev_console.go
+4
-4
ethereum.go
ethereum/ethereum.go
+17
-37
cmd.go
utils/cmd.go
+46
-0
keys.go
utils/keys.go
+57
-0
No files found.
README.md
View file @
942f552c
...
@@ -5,7 +5,7 @@ Ethereum
...
@@ -5,7 +5,7 @@ Ethereum
Ethereum Go Client © 2014 Jeffrey Wilcke.
Ethereum Go Client © 2014 Jeffrey Wilcke.
Current state: Proof of Concept 5.0 RC
3
.
Current state: Proof of Concept 5.0 RC
6
.
For the development package please see the
[
eth-go package
](
https://github.com/ethereum/eth-go
)
.
For the development package please see the
[
eth-go package
](
https://github.com/ethereum/eth-go
)
.
...
...
ethereal/assets/muted/index.html
View file @
942f552c
...
@@ -46,6 +46,7 @@
...
@@ -46,6 +46,7 @@
.CodeMirror
{
.CodeMirror
{
height
:
70%
;
height
:
70%
;
font-size
:
14pt
;
}
}
</style>
</style>
</head>
</head>
...
...
ethereal/assets/qml/newTransaction/_new_contract.qml
View file @
942f552c
...
@@ -61,7 +61,7 @@ Component {
...
@@ -61,7 +61,7 @@ Component {
id
:
txValue
id
:
txValue
width
:
200
width
:
200
placeholderText
:
"Amount"
placeholderText
:
"Amount"
validator
:
IntValidator
{
}
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
onTextChanged
:
{
contractFormReady
()
contractFormReady
()
}
}
...
@@ -69,7 +69,7 @@ Component {
...
@@ -69,7 +69,7 @@ Component {
TextField
{
TextField
{
id
:
txGas
id
:
txGas
width
:
200
width
:
200
validator
:
IntValidator
{
}
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
placeholderText
:
"Gas"
placeholderText
:
"Gas"
onTextChanged
:
{
onTextChanged
:
{
contractFormReady
()
contractFormReady
()
...
@@ -79,7 +79,7 @@ Component {
...
@@ -79,7 +79,7 @@ Component {
id
:
txGasPrice
id
:
txGasPrice
width
:
200
width
:
200
placeholderText
:
"Gas price"
placeholderText
:
"Gas price"
validator
:
IntValidator
{
}
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
onTextChanged
:
{
contractFormReady
()
contractFormReady
()
}
}
...
...
ethereal/assets/qml/newTransaction/_simple_send.qml
View file @
942f552c
...
@@ -56,9 +56,10 @@ Component {
...
@@ -56,9 +56,10 @@ Component {
}
}
TextField
{
TextField
{
id
:
txSimpleValue
id
:
txSimpleValue
width
:
200
placeholderText
:
"Amount"
placeholderText
:
"Amount"
anchors.rightMargin
:
5
anchors.rightMargin
:
5
validator
:
IntValidator
{
}
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
checkFormState
()
}
onTextChanged
:
{
checkFormState
()
}
}
}
Button
{
Button
{
...
...
ethereal/assets/samplecoin/samplecoin.html
View file @
942f552c
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
var
jefcoinAddr
=
"
b7cb72c47ec4f31751d0d628b5a33fd6671bbba0
"
var
jefcoinAddr
=
"
681fd48ffa236549fbcd16bdf9f98bb541a7f742
"
var
mAddr
=
""
var
mAddr
=
""
function
createTransaction
()
{
function
createTransaction
()
{
...
@@ -23,8 +23,6 @@ function createTransaction() {
...
@@ -23,8 +23,6 @@ function createTransaction() {
}
}
function
init
()
{
function
init
()
{
eth
.
set
({
width
:
500
});
eth
.
getKey
(
function
(
sec
)
{
eth
.
getKey
(
function
(
sec
)
{
mAddr
=
sec
;
mAddr
=
sec
;
eth
.
getSecretToAddress
(
sec
,
function
(
addr
)
{
eth
.
getSecretToAddress
(
sec
,
function
(
addr
)
{
...
...
ethereal/ethereum.go
View file @
942f552c
...
@@ -4,8 +4,6 @@ import (
...
@@ -4,8 +4,6 @@ import (
"fmt"
"fmt"
"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/ethpub"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/ethereal/ui"
"github.com/ethereum/go-ethereum/ethereal/ui"
"github.com/ethereum/go-ethereum/utils"
"github.com/ethereum/go-ethereum/utils"
...
@@ -89,8 +87,19 @@ func main() {
...
@@ -89,8 +87,19 @@ func main() {
}
}
if
ExportKey
{
if
ExportKey
{
key
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
fmt
.
Printf
(
"%x
\n
"
,
key
.
PrivateKey
)
fmt
.
Printf
(
`
Generating new address and keypair.
Please keep your keys somewhere save.
++++++++++++++++ KeyRing +++++++++++++++++++
addr: %x
prvk: %x
pubk: %x
++++++++++++++++++++++++++++++++++++++++++++
save these words so you can restore your account later: %s
`
,
keyPair
.
Address
(),
keyPair
.
PrivateKey
,
keyPair
.
PublicKey
)
os
.
Exit
(
0
)
os
.
Exit
(
0
)
}
}
...
@@ -99,13 +108,12 @@ func main() {
...
@@ -99,13 +108,12 @@ func main() {
os
.
Exit
(
0
)
os
.
Exit
(
0
)
}
}
if
StartMining
{
utils
.
DoMining
(
ethereum
)
}
if
StartRpc
{
if
StartRpc
{
ethereum
.
RpcServer
,
err
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
),
RpcPort
)
utils
.
DoRpc
(
ethereum
,
RpcPort
)
if
err
!=
nil
{
log
.
Println
(
"Could not start RPC interface:"
,
err
)
}
else
{
go
ethereum
.
RpcServer
.
Start
()
}
}
}
log
.
Printf
(
"Starting Ethereum GUI v%s
\n
"
,
ethutil
.
Config
.
Ver
)
log
.
Printf
(
"Starting Ethereum GUI v%s
\n
"
,
ethutil
.
Config
.
Ver
)
...
...
ethereal/ui/gui.go
View file @
942f552c
...
@@ -42,15 +42,11 @@ func New(ethereum *eth.Ethereum) *Gui {
...
@@ -42,15 +42,11 @@ func New(ethereum *eth.Ethereum) *Gui {
panic
(
err
)
panic
(
err
)
}
}
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
// On first run we won't have any keys yet, so this would crash.
// On first run we won't have any keys yet, so this would crash.
// Therefor we check if we are ready to actually start this process
// Therefor we check if we are ready to actually start this process
var
addr
[]
byte
var
addr
[]
byte
if
len
(
data
)
>
0
{
if
ethutil
.
GetKeyRing
()
.
Len
()
!=
0
{
key
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
addr
=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
.
Address
()
addr
=
key
.
Address
()
//ethereum.StateManager().WatchAddr(addr)
}
}
pub
:=
ethpub
.
NewPEthereum
(
ethereum
)
pub
:=
ethpub
.
NewPEthereum
(
ethereum
)
...
@@ -59,6 +55,8 @@ func New(ethereum *eth.Ethereum) *Gui {
...
@@ -59,6 +55,8 @@ func New(ethereum *eth.Ethereum) *Gui {
}
}
func
(
gui
*
Gui
)
Start
(
assetPath
string
)
{
func
(
gui
*
Gui
)
Start
(
assetPath
string
)
{
const
version
=
"0.5.0 RC6"
defer
gui
.
txDb
.
Close
()
defer
gui
.
txDb
.
Close
()
// Register ethereum functions
// Register ethereum functions
...
@@ -68,7 +66,7 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -68,7 +66,7 @@ func (gui *Gui) Start(assetPath string) {
Init
:
func
(
p
*
ethpub
.
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.5.0 RC4"
))
ethutil
.
Config
.
SetClientString
(
fmt
.
Sprintf
(
"/Ethereal v%s"
,
version
))
ethutil
.
Config
.
Log
.
Infoln
(
"[GUI] Starting GUI"
)
ethutil
.
Config
.
Log
.
Infoln
(
"[GUI] Starting GUI"
)
// Create a new QML engine
// Create a new QML engine
gui
.
engine
=
qml
.
NewEngine
()
gui
.
engine
=
qml
.
NewEngine
()
...
@@ -81,43 +79,6 @@ func (gui *Gui) Start(assetPath string) {
...
@@ -81,43 +79,6 @@ func (gui *Gui) Start(assetPath string) {
// Load the main QML interface
// Load the main QML interface
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
/*
var err error
var component qml.Object
firstRun := len(data) == 0
if firstRun {
component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/first_run.qml"))
} else {
component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/wallet.qml"))
}
if err != nil {
ethutil.Config.Log.Infoln("FATAL: asset not found: you can set an alternative asset path on on the command line using option 'asset_path'")
panic(err)
}
gui.win = component.CreateWindow(nil)
uiLib.win = gui.win
db := &Debugger{gui.win, make(chan bool)}
gui.lib.Db = db
uiLib.Db = db
// Add the ui as a log system so we can log directly to the UGI
ethutil.Config.Log.AddLogSystem(gui)
// Loads previous blocks
if firstRun == false {
go gui.setInitialBlockChain()
go gui.readPreviousTransactions()
go gui.update()
}
gui.win.Show()
gui.win.Wait()
gui.eth.Stop()
*/
var
win
*
qml
.
Window
var
win
*
qml
.
Window
var
err
error
var
err
error
...
@@ -199,8 +160,29 @@ func (gui *Gui) processBlock(block *ethchain.Block) {
...
@@ -199,8 +160,29 @@ func (gui *Gui) processBlock(block *ethchain.Block) {
gui
.
win
.
Root
()
.
Call
(
"addBlock"
,
ethpub
.
NewPBlock
(
block
))
gui
.
win
.
Root
()
.
Call
(
"addBlock"
,
ethpub
.
NewPBlock
(
block
))
}
}
func
(
gui
*
Gui
)
setWalletValue
(
amount
,
unconfirmedFunds
*
big
.
Int
)
{
var
str
string
if
unconfirmedFunds
!=
nil
{
pos
:=
"+"
if
unconfirmedFunds
.
Cmp
(
big
.
NewInt
(
0
))
>=
0
{
pos
=
"-"
}
val
:=
ethutil
.
CurrencyToString
(
new
(
big
.
Int
)
.
Abs
(
ethutil
.
BigCopy
(
unconfirmedFunds
)))
str
=
fmt
.
Sprintf
(
"%v (%s %v)"
,
ethutil
.
CurrencyToString
(
amount
),
pos
,
val
)
}
else
{
str
=
fmt
.
Sprintf
(
"%v"
,
ethutil
.
CurrencyToString
(
amount
))
}
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
str
)
}
// 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
func
(
gui
*
Gui
)
update
()
{
func
(
gui
*
Gui
)
update
()
{
blockChan
:=
make
(
chan
ethutil
.
React
,
1
)
reactor
:=
gui
.
eth
.
Reactor
()
reactor
.
Subscribe
(
"newBlock"
,
blockChan
)
txChan
:=
make
(
chan
ethchain
.
TxMsg
,
1
)
txChan
:=
make
(
chan
ethchain
.
TxMsg
,
1
)
gui
.
eth
.
TxPool
()
.
Subscribe
(
txChan
)
gui
.
eth
.
TxPool
()
.
Subscribe
(
txChan
)
...
@@ -211,6 +193,12 @@ func (gui *Gui) update() {
...
@@ -211,6 +193,12 @@ func (gui *Gui) update() {
for
{
for
{
select
{
select
{
case
b
:=
<-
blockChan
:
block
:=
b
.
Resource
.
(
*
ethchain
.
Block
)
if
bytes
.
Compare
(
block
.
Coinbase
,
gui
.
addr
)
==
0
{
gui
.
setWalletValue
(
gui
.
eth
.
StateManager
()
.
ProcState
()
.
GetAccount
(
gui
.
addr
)
.
Amount
,
nil
)
}
case
txMsg
:=
<-
txChan
:
case
txMsg
:=
<-
txChan
:
tx
:=
txMsg
.
Tx
tx
:=
txMsg
.
Tx
...
@@ -232,14 +220,7 @@ func (gui *Gui) update() {
...
@@ -232,14 +220,7 @@ func (gui *Gui) update() {
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
unconfirmedFunds
.
Add
(
unconfirmedFunds
,
tx
.
Value
)
}
}
pos
:=
"+"
gui
.
setWalletValue
(
object
.
Amount
,
unconfirmedFunds
)
if
unconfirmedFunds
.
Cmp
(
big
.
NewInt
(
0
))
>=
0
{
pos
=
"-"
}
val
:=
ethutil
.
CurrencyToString
(
new
(
big
.
Int
)
.
Abs
(
ethutil
.
BigCopy
(
unconfirmedFunds
)))
str
:=
fmt
.
Sprintf
(
"%v (%s %v)"
,
ethutil
.
CurrencyToString
(
object
.
Amount
),
pos
,
val
)
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
str
)
}
else
{
}
else
{
object
:=
state
.
GetAccount
(
gui
.
addr
)
object
:=
state
.
GetAccount
(
gui
.
addr
)
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
{
if
bytes
.
Compare
(
tx
.
Sender
(),
gui
.
addr
)
==
0
{
...
@@ -248,7 +229,7 @@ func (gui *Gui) update() {
...
@@ -248,7 +229,7 @@ func (gui *Gui) update() {
object
.
AddAmount
(
tx
.
Value
)
object
.
AddAmount
(
tx
.
Value
)
}
}
gui
.
win
.
Root
()
.
Call
(
"setWalletValue"
,
fmt
.
Sprintf
(
"%v"
,
ethutil
.
CurrencyToString
(
object
.
Amount
))
)
gui
.
setWalletValue
(
object
.
Amount
,
nil
)
state
.
SetStateObject
(
object
)
state
.
SetStateObject
(
object
)
}
}
...
@@ -274,13 +255,13 @@ func (gui *Gui) Printf(format string, v ...interface{}) {
...
@@ -274,13 +255,13 @@ func (gui *Gui) Printf(format string, v ...interface{}) {
}
}
func
(
gui
*
Gui
)
Transact
(
recipient
,
value
,
gas
,
gasPrice
,
data
string
)
(
*
ethpub
.
PReceipt
,
error
)
{
func
(
gui
*
Gui
)
Transact
(
recipient
,
value
,
gas
,
gasPrice
,
data
string
)
(
*
ethpub
.
PReceipt
,
error
)
{
keyPair
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
return
gui
.
pub
.
Transact
(
ethutil
.
Hex
(
keyPair
.
PrivateKey
),
recipient
,
value
,
gas
,
gasPrice
,
data
)
return
gui
.
pub
.
Transact
(
ethutil
.
Hex
(
keyPair
.
PrivateKey
),
recipient
,
value
,
gas
,
gasPrice
,
data
)
}
}
func
(
gui
*
Gui
)
Create
(
recipient
,
value
,
gas
,
gasPrice
,
data
string
)
(
*
ethpub
.
PReceipt
,
error
)
{
func
(
gui
*
Gui
)
Create
(
recipient
,
value
,
gas
,
gasPrice
,
data
string
)
(
*
ethpub
.
PReceipt
,
error
)
{
keyPair
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
mainInput
,
initInput
:=
mutan
.
PreParse
(
data
)
mainInput
,
initInput
:=
mutan
.
PreParse
(
data
)
...
...
ethereal/ui/library.go
View file @
942f552c
...
@@ -34,10 +34,13 @@ func (lib *EthLib) ImportAndSetPrivKey(privKey string) bool {
...
@@ -34,10 +34,13 @@ func (lib *EthLib) ImportAndSetPrivKey(privKey string) bool {
}
}
func
(
lib
*
EthLib
)
CreateAndSetPrivKey
()
(
string
,
string
,
string
,
string
)
{
func
(
lib
*
EthLib
)
CreateAndSetPrivKey
()
(
string
,
string
,
string
,
string
)
{
pub
,
prv
:=
secp256k1
.
GenerateKeyPair
()
_
,
prv
:=
secp256k1
.
GenerateKeyPair
()
pair
:=
&
ethutil
.
Key
{
PrivateKey
:
prv
,
PublicKey
:
pub
}
keyPair
,
err
:=
ethutil
.
GetKeyRing
()
.
NewKeyPair
(
prv
)
ethutil
.
Config
.
Db
.
Put
([]
byte
(
"KeyRing"
),
pair
.
RlpEncode
())
if
err
!=
nil
{
mne
:=
ethutil
.
MnemonicEncode
(
ethutil
.
Hex
(
prv
))
panic
(
err
)
}
mne
:=
ethutil
.
MnemonicEncode
(
ethutil
.
Hex
(
keyPair
.
PrivateKey
))
mnemonicString
:=
strings
.
Join
(
mne
,
" "
)
mnemonicString
:=
strings
.
Join
(
mne
,
" "
)
return
mnemonicString
,
fmt
.
Sprintf
(
"%x"
,
pair
.
Address
()),
fmt
.
Sprintf
(
"%x"
,
prv
),
fmt
.
Sprintf
(
"%x"
,
pub
)
return
mnemonicString
,
fmt
.
Sprintf
(
"%x"
,
keyPair
.
Address
()),
ethutil
.
Hex
(
keyPair
.
PrivateKey
),
ethutil
.
Hex
(
keyPair
.
PublicKey
)
}
}
ethereal/ui/ui_lib.go
View file @
942f552c
...
@@ -138,7 +138,7 @@ func (ui *UiLib) DebugTx(recipient, valueStr, gasStr, gasPriceStr, data string)
...
@@ -138,7 +138,7 @@ func (ui *UiLib) DebugTx(recipient, valueStr, gasStr, gasPriceStr, data string)
callerTx
:=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
valueStr
),
ethutil
.
Big
(
gasStr
),
ethutil
.
Big
(
gasPriceStr
),
callerScript
,
nil
)
callerTx
:=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
valueStr
),
ethutil
.
Big
(
gasStr
),
ethutil
.
Big
(
gasPriceStr
),
callerScript
,
nil
)
// Contract addr as test address
// Contract addr as test address
keyPair
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
account
:=
ui
.
eth
.
StateManager
()
.
TransState
()
.
GetStateObject
(
keyPair
.
Address
())
account
:=
ui
.
eth
.
StateManager
()
.
TransState
()
.
GetStateObject
(
keyPair
.
Address
())
c
:=
ethchain
.
MakeContract
(
callerTx
,
state
)
c
:=
ethchain
.
MakeContract
(
callerTx
,
state
)
callerClosure
:=
ethchain
.
NewClosure
(
account
,
c
,
c
.
Script
(),
state
,
ethutil
.
Big
(
gasStr
),
ethutil
.
Big
(
gasPriceStr
))
callerClosure
:=
ethchain
.
NewClosure
(
account
,
c
,
c
.
Script
(),
state
,
ethutil
.
Big
(
gasStr
),
ethutil
.
Big
(
gasPriceStr
))
...
...
ethereum/dev_console.go
View file @
942f552c
...
@@ -173,8 +173,8 @@ func (i *Console) ParseInput(input string) bool {
...
@@ -173,8 +173,8 @@ func (i *Console) ParseInput(input string) bool {
}
else
{
}
else
{
tx
:=
ethchain
.
NewTransactionMessage
(
recipient
,
ethutil
.
Big
(
tokens
[
2
]),
ethutil
.
Big
(
tokens
[
3
]),
ethutil
.
Big
(
tokens
[
4
]),
nil
)
tx
:=
ethchain
.
NewTransactionMessage
(
recipient
,
ethutil
.
Big
(
tokens
[
2
]),
ethutil
.
Big
(
tokens
[
3
]),
ethutil
.
Big
(
tokens
[
4
]),
nil
)
key
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
key
Pair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
tx
.
Sign
(
key
.
PrivateKey
)
tx
.
Sign
(
key
Pair
.
PrivateKey
)
i
.
ethereum
.
TxPool
()
.
QueueTransaction
(
tx
)
i
.
ethereum
.
TxPool
()
.
QueueTransaction
(
tx
)
fmt
.
Printf
(
"%x
\n
"
,
tx
.
Hash
())
fmt
.
Printf
(
"%x
\n
"
,
tx
.
Hash
())
...
@@ -207,8 +207,8 @@ func (i *Console) ParseInput(input string) bool {
...
@@ -207,8 +207,8 @@ func (i *Console) ParseInput(input string) bool {
contract
:=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
tokens
[
0
]),
ethutil
.
Big
(
tokens
[
1
]),
ethutil
.
Big
(
tokens
[
1
]),
mainScript
,
initScript
)
contract
:=
ethchain
.
NewContractCreationTx
(
ethutil
.
Big
(
tokens
[
0
]),
ethutil
.
Big
(
tokens
[
1
]),
ethutil
.
Big
(
tokens
[
1
]),
mainScript
,
initScript
)
key
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
key
Pair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
contract
.
Sign
(
key
.
PrivateKey
)
contract
.
Sign
(
key
Pair
.
PrivateKey
)
i
.
ethereum
.
TxPool
()
.
QueueTransaction
(
contract
)
i
.
ethereum
.
TxPool
()
.
QueueTransaction
(
contract
)
...
...
ethereum/ethereum.go
View file @
942f552c
package
main
package
main
import
(
import
(
"encoding/hex"
"fmt"
"fmt"
"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/ethminer"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/ethereum/go-ethereum/utils"
"log"
"log"
...
@@ -68,10 +64,9 @@ func main() {
...
@@ -68,10 +64,9 @@ func main() {
log
.
SetOutput
(
logfile
)
log
.
SetOutput
(
logfile
)
logSys
=
log
.
New
(
logfile
,
""
,
flags
)
logSys
=
log
.
New
(
logfile
,
""
,
flags
)
logger
.
AddLogSystem
(
logSys
)
logger
.
AddLogSystem
(
logSys
)
}
}
else
{
/*else {
logSys
=
log
.
New
(
os
.
Stdout
,
""
,
flags
)
logSys
=
log
.
New
(
os
.
Stdout
,
""
,
flags
)
}
*/
}
ethchain
.
InitFees
()
ethchain
.
InitFees
()
...
@@ -106,8 +101,19 @@ func main() {
...
@@ -106,8 +101,19 @@ func main() {
}
}
os
.
Exit
(
0
)
os
.
Exit
(
0
)
case
ExportKey
:
case
ExportKey
:
key
:=
ethutil
.
Config
.
Db
.
GetKeys
()[
0
]
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
logSys
.
Println
(
fmt
.
Sprintf
(
"prvk: %x
\n
"
,
key
.
PrivateKey
))
fmt
.
Printf
(
`
Generating new address and keypair.
Please keep your keys somewhere save.
++++++++++++++++ KeyRing +++++++++++++++++++
addr: %x
prvk: %x
pubk: %x
++++++++++++++++++++++++++++++++++++++++++++
save these words so you can restore your account later: %s
`
,
keyPair
.
Address
(),
keyPair
.
PrivateKey
,
keyPair
.
PublicKey
)
os
.
Exit
(
0
)
os
.
Exit
(
0
)
case
ShowGenesis
:
case
ShowGenesis
:
logSys
.
Println
(
ethereum
.
BlockChain
()
.
Genesis
())
logSys
.
Println
(
ethereum
.
BlockChain
()
.
Genesis
())
...
@@ -127,28 +133,7 @@ func main() {
...
@@ -127,28 +133,7 @@ func main() {
ethereum
.
Mining
=
StartMining
ethereum
.
Mining
=
StartMining
if
StartMining
{
if
StartMining
{
logger
.
Infoln
(
"Miner started"
)
utils
.
DoMining
(
ethereum
)
// Fake block mining. It broadcasts a new block every 5 seconds
go
func
()
{
if
StartMining
{
logger
.
Infoln
(
"Miner started"
)
go
func
()
{
data
,
_
:=
ethutil
.
Config
.
Db
.
Get
([]
byte
(
"KeyRing"
))
keyRing
:=
ethutil
.
NewValueFromBytes
(
data
)
addr
:=
keyRing
.
Get
(
1
)
.
Bytes
()
pair
,
_
:=
ethchain
.
NewKeyPairFromSec
(
ethutil
.
FromHex
(
hex
.
EncodeToString
(
addr
)))
miner
:=
ethminer
.
NewDefaultMiner
(
pair
.
Address
(),
ethereum
)
miner
.
Start
()
}()
}
}()
}
}
if
StartConsole
{
if
StartConsole
{
...
@@ -162,12 +147,7 @@ func main() {
...
@@ -162,12 +147,7 @@ func main() {
go
console
.
Start
()
go
console
.
Start
()
}
}
if
StartRpc
{
if
StartRpc
{
ethereum
.
RpcServer
,
err
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
),
RpcPort
)
utils
.
DoRpc
(
ethereum
,
RpcPort
)
if
err
!=
nil
{
logger
.
Infoln
(
"Could not start RPC interface:"
,
err
)
}
else
{
go
ethereum
.
RpcServer
.
Start
()
}
}
}
RegisterInterrupts
(
ethereum
)
RegisterInterrupts
(
ethereum
)
...
...
utils/cmd.go
0 → 100644
View file @
942f552c
package
utils
import
(
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethminer"
"github.com/ethereum/eth-go/ethpub"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
"log"
"time"
)
func
DoRpc
(
ethereum
*
eth
.
Ethereum
,
RpcPort
int
)
{
var
err
error
ethereum
.
RpcServer
,
err
=
ethrpc
.
NewJsonRpcServer
(
ethpub
.
NewPEthereum
(
ethereum
),
RpcPort
)
if
err
!=
nil
{
log
.
Println
(
"Could not start RPC interface:"
,
err
)
}
else
{
go
ethereum
.
RpcServer
.
Start
()
}
}
func
DoMining
(
ethereum
*
eth
.
Ethereum
)
{
// Set Mining status
ethereum
.
Mining
=
true
if
ethutil
.
GetKeyRing
()
.
Len
()
==
0
{
log
.
Println
(
"No address found, can't start mining"
)
return
}
keyPair
:=
ethutil
.
GetKeyRing
()
.
Get
(
0
)
addr
:=
keyPair
.
Address
()
go
func
()
{
// Give it some time to connect with peers
time
.
Sleep
(
3
*
time
.
Second
)
for
ethereum
.
IsUpToDate
()
==
false
{
time
.
Sleep
(
5
*
time
.
Second
)
}
log
.
Println
(
"Miner started"
)
miner
:=
ethminer
.
NewDefaultMiner
(
addr
,
ethereum
)
miner
.
Start
()
}()
}
utils/keys.go
View file @
942f552c
...
@@ -6,6 +6,60 @@ import (
...
@@ -6,6 +6,60 @@ import (
"github.com/obscuren/secp256k1-go"
"github.com/obscuren/secp256k1-go"
)
)
func
CreateKeyPair
(
force
bool
)
{
if
force
{
ethutil
.
GetKeyRing
()
.
Reset
()
fmt
.
Println
(
"resetting"
)
}
if
ethutil
.
GetKeyRing
()
.
Get
(
0
)
==
nil
{
_
,
prv
:=
secp256k1
.
GenerateKeyPair
()
keyPair
,
err
:=
ethutil
.
GetKeyRing
()
.
NewKeyPair
(
prv
)
if
err
!=
nil
{
panic
(
err
)
}
mne
:=
ethutil
.
MnemonicEncode
(
ethutil
.
Hex
(
keyPair
.
PrivateKey
))
fmt
.
Printf
(
`
Generating new address and keypair.
Please keep your keys somewhere save.
++++++++++++++++ KeyRing +++++++++++++++++++
addr: %x
prvk: %x
pubk: %x
++++++++++++++++++++++++++++++++++++++++++++
save these words so you can restore your account later: %s
`
,
keyPair
.
Address
(),
keyPair
.
PrivateKey
,
keyPair
.
PublicKey
,
mne
)
}
}
func
ImportPrivateKey
(
sec
string
)
{
ethutil
.
GetKeyRing
()
.
Reset
()
keyPair
,
err
:=
ethutil
.
GetKeyRing
()
.
NewKeyPair
(
ethutil
.
FromHex
(
sec
))
if
err
!=
nil
{
panic
(
err
)
}
mne
:=
ethutil
.
MnemonicEncode
(
ethutil
.
Hex
(
keyPair
.
PrivateKey
))
fmt
.
Printf
(
`
Generating new address and keypair.
Please keep your keys somewhere save.
++++++++++++++++ KeyRing +++++++++++++++++++
addr: %x
prvk: %x
pubk: %x
++++++++++++++++++++++++++++++++++++++++++++
save these words so you can restore your account later: %s
`
,
keyPair
.
Address
(),
keyPair
.
PrivateKey
,
keyPair
.
PublicKey
,
mne
)
}
/*
func CreateKeyPair(force bool) {
func CreateKeyPair(force bool) {
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
if len(data) == 0 || force {
if len(data) == 0 || force {
...
@@ -28,7 +82,9 @@ save these words so you can restore your account later: %s
...
@@ -28,7 +82,9 @@ save these words so you can restore your account later: %s
}
}
}
}
*/
/*
func ImportPrivateKey(prvKey string) {
func ImportPrivateKey(prvKey string) {
key := ethutil.FromHex(prvKey)
key := ethutil.FromHex(prvKey)
msg := []byte("tmp")
msg := []byte("tmp")
...
@@ -49,3 +105,4 @@ pubk: %x
...
@@ -49,3 +105,4 @@ pubk: %x
`, pair.Address(), key, pub)
`, pair.Address(), key, pub)
}
}
*/
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