diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | ethereal/assets/muted/index.html | 1 | ||||
-rw-r--r-- | ethereal/assets/samplecoin/samplecoin.html | 4 | ||||
-rw-r--r-- | ethereal/ethereum.go | 15 | ||||
-rw-r--r-- | ethereal/ui/gui.go | 49 | ||||
-rw-r--r-- | ethereal/ui/library.go | 13 | ||||
-rw-r--r-- | ethereal/ui/ui_lib.go | 2 | ||||
-rw-r--r-- | ethereum/dev_console.go | 8 | ||||
-rw-r--r-- | ethereum/ethereum.go | 15 | ||||
-rw-r--r-- | utils/cmd.go | 11 | ||||
-rw-r--r-- | utils/keys.go | 57 |
11 files changed, 106 insertions, 71 deletions
@@ -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). diff --git a/ethereal/assets/muted/index.html b/ethereal/assets/muted/index.html index 84584e373..14949b5ac 100644 --- a/ethereal/assets/muted/index.html +++ b/ethereal/assets/muted/index.html @@ -46,6 +46,7 @@ .CodeMirror { height: 70%; + font-size: 14pt; } </style> </head> diff --git a/ethereal/assets/samplecoin/samplecoin.html b/ethereal/assets/samplecoin/samplecoin.html index 384936780..3f8eacc00 100644 --- a/ethereal/assets/samplecoin/samplecoin.html +++ b/ethereal/assets/samplecoin/samplecoin.html @@ -9,7 +9,7 @@ <script type="text/javascript"> -var jefcoinAddr = "b7cb72c47ec4f31751d0d628b5a33fd6671bbba0" +var jefcoinAddr = "681fd48ffa236549fbcd16bdf9f98bb541a7f742" var mAddr = "" function createTransaction() { @@ -23,8 +23,6 @@ function createTransaction() { } function init() { - eth.set({width: 500}); - eth.getKey(function(sec) { mAddr = sec; eth.getSecretToAddress(sec, function(addr) { diff --git a/ethereal/ethereum.go b/ethereal/ethereum.go index 32c16f64f..63f907571 100644 --- a/ethereal/ethereum.go +++ b/ethereal/ethereum.go @@ -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) } diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go index 7f84272d6..396447a81 100644 --- a/ethereal/ui/gui.go +++ b/ethereal/ui/gui.go @@ -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) @@ -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 @@ -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) diff --git a/ethereal/ui/library.go b/ethereal/ui/library.go index c889efb45..267108195 100644 --- a/ethereal/ui/library.go +++ b/ethereal/ui/library.go @@ -34,10 +34,13 @@ func (lib *EthLib) ImportAndSetPrivKey(privKey string) bool { } func (lib *EthLib) CreateAndSetPrivKey() (string, string, string, string) { - pub, prv := secp256k1.GenerateKeyPair() - pair := ðutil.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) } diff --git a/ethereal/ui/ui_lib.go b/ethereal/ui/ui_lib.go index 6736e79ae..0c43f1675 100644 --- a/ethereal/ui/ui_lib.go +++ b/ethereal/ui/ui_lib.go @@ -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)) diff --git a/ethereum/dev_console.go b/ethereum/dev_console.go index 9bdd58942..5941c03ab 100644 --- a/ethereum/dev_console.go +++ b/ethereum/dev_console.go @@ -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()) @@ -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) diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 207e61c88..b5460ac69 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -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()) diff --git a/utils/cmd.go b/utils/cmd.go index a99fd9eed..654014169 100644 --- a/utils/cmd.go +++ b/utils/cmd.go @@ -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" @@ -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() }() diff --git a/utils/keys.go b/utils/keys.go index 2f39c10b2..1c0f6a9d6 100644 --- a/utils/keys.go +++ b/utils/keys.go @@ -7,6 +7,60 @@ import ( ) 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 { pub, prv := secp256k1.GenerateKeyPair() @@ -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") @@ -49,3 +105,4 @@ pubk: %x `, pair.Address(), key, pub) } +*/ |