Skip to content

Commit

Permalink
Switched to new keyring methods
Browse files Browse the repository at this point in the history
  • Loading branch information
obscuren committed May 14, 2014
1 parent e8147cf commit f18ec51
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 71 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Ethereum

Ethereum Go Client © 2014 Jeffrey Wilcke.

Current state: Proof of Concept 5.0 RC3.
Current state: Proof of Concept 5.0 RC4.

For the development package please see the [eth-go package](https://github.com/ethereum/eth-go).

Expand Down
1 change: 1 addition & 0 deletions ethereal/assets/muted/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@

.CodeMirror {
height: 70%;
font-size: 14pt;
}
</style>
</head>
Expand Down
4 changes: 1 addition & 3 deletions ethereal/assets/samplecoin/samplecoin.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<script type="text/javascript">

var jefcoinAddr = "b7cb72c47ec4f31751d0d628b5a33fd6671bbba0"
var jefcoinAddr = "681fd48ffa236549fbcd16bdf9f98bb541a7f742"
var mAddr = ""

function createTransaction() {
Expand All @@ -23,8 +23,6 @@
}

function init() {
eth.set({width: 500});

eth.getKey(function(sec) {
mAddr = sec;
eth.getSecretToAddress(sec, function(addr) {
Expand Down
15 changes: 13 additions & 2 deletions ethereal/ethereum.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,19 @@ func main() {
}

if ExportKey {
key := ethutil.Config.Db.GetKeys()[0]
fmt.Printf("%x\n", key.PrivateKey)
keyPair := ethutil.GetKeyRing().Get(0)
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)
}

Expand Down
49 changes: 4 additions & 45 deletions ethereal/ui/gui.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,11 @@ func New(ethereum *eth.Ethereum) *Gui {
panic(err)
}

data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
// 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
var addr []byte
if len(data) > 0 {
key := ethutil.Config.Db.GetKeys()[0]
addr = key.Address()

//ethereum.StateManager().WatchAddr(addr)
if ethutil.GetKeyRing().Len() != 0 {
addr = ethutil.GetKeyRing().Get(0).Address()
}

pub := ethpub.NewPEthereum(ethereum)
Expand Down Expand Up @@ -81,43 +77,6 @@ func (gui *Gui) Start(assetPath string) {

// Load the main QML interface
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 err error
Expand Down Expand Up @@ -274,13 +233,13 @@ func (gui *Gui) Printf(format string, v ...interface{}) {
}

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)
}

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)

Expand Down
13 changes: 8 additions & 5 deletions ethereal/ui/library.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,13 @@ func (lib *EthLib) ImportAndSetPrivKey(privKey string) bool {
}

func (lib *EthLib) CreateAndSetPrivKey() (string, string, string, string) {
pub, prv := secp256k1.GenerateKeyPair()
pair := &ethutil.Key{PrivateKey: prv, PublicKey: pub}
ethutil.Config.Db.Put([]byte("KeyRing"), pair.RlpEncode())
mne := ethutil.MnemonicEncode(ethutil.Hex(prv))
_, prv := secp256k1.GenerateKeyPair()
keyPair, err := ethutil.GetKeyRing().NewKeyPair(prv)
if err != nil {
panic(err)
}

mne := ethutil.MnemonicEncode(ethutil.Hex(keyPair.PrivateKey))
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)
}
2 changes: 1 addition & 1 deletion ethereal/ui/ui_lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

// Contract addr as test address
keyPair := ethutil.Config.Db.GetKeys()[0]
keyPair := ethutil.GetKeyRing().Get(0)
account := ui.eth.StateManager().TransState().GetStateObject(keyPair.Address())
c := ethchain.MakeContract(callerTx, state)
callerClosure := ethchain.NewClosure(account, c, c.Script(), state, ethutil.Big(gasStr), ethutil.Big(gasPriceStr))
Expand Down
8 changes: 4 additions & 4 deletions ethereum/dev_console.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,8 @@ func (i *Console) ParseInput(input string) bool {
} else {
tx := ethchain.NewTransactionMessage(recipient, ethutil.Big(tokens[2]), ethutil.Big(tokens[3]), ethutil.Big(tokens[4]), nil)

key := ethutil.Config.Db.GetKeys()[0]
tx.Sign(key.PrivateKey)
keyPair := ethutil.GetKeyRing().Get(0)
tx.Sign(keyPair.PrivateKey)
i.ethereum.TxPool().QueueTransaction(tx)

fmt.Printf("%x\n", tx.Hash())
Expand Down Expand Up @@ -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)

key := ethutil.Config.Db.GetKeys()[0]
contract.Sign(key.PrivateKey)
keyPair := ethutil.GetKeyRing().Get(0)
contract.Sign(keyPair.PrivateKey)

i.ethereum.TxPool().QueueTransaction(contract)

Expand Down
15 changes: 13 additions & 2 deletions ethereum/ethereum.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,19 @@ func main() {
}
os.Exit(0)
case ExportKey:
key := ethutil.Config.Db.GetKeys()[0]
logSys.Println(fmt.Sprintf("prvk: %x\n", key.PrivateKey))
keyPair := ethutil.GetKeyRing().Get(0)
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)
case ShowGenesis:
logSys.Println(ethereum.BlockChain().Genesis())
Expand Down
11 changes: 3 additions & 8 deletions utils/cmd.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package utils

import (
"encoding/hex"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethminer"
_ "github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
Expand All @@ -18,13 +16,10 @@ func DoMining(ethereum *eth.Ethereum) {

// Fake block mining. It broadcasts a new block every 5 seconds
go func() {
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
keyRing := ethutil.NewValueFromBytes(data)
addr := keyRing.Get(0).Bytes()
keyPair := ethutil.GetKeyRing().Get(0)
addr := keyPair.Address()

pair, _ := ethchain.NewKeyPairFromSec(ethutil.FromHex(hex.EncodeToString(addr)))

miner := ethminer.NewDefaultMiner(pair.Address(), ethereum)
miner := ethminer.NewDefaultMiner(addr, ethereum)
miner.Start()

}()
Expand Down
57 changes: 57 additions & 0 deletions utils/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,60 @@ import (
"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) {
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
if len(data) == 0 || force {
Expand All @@ -28,7 +82,9 @@ save these words so you can restore your account later: %s
}
}
*/

/*
func ImportPrivateKey(prvKey string) {
key := ethutil.FromHex(prvKey)
msg := []byte("tmp")
Expand All @@ -49,3 +105,4 @@ pubk: %x
`, pair.Address(), key, pub)
}
*/

0 comments on commit f18ec51

Please sign in to comment.