Switched to new keyring methods
This commit is contained in:
		
							parent
							
								
									e8147cf7c6
								
							
						
					
					
						commit
						f18ec51cb3
					
				| @ -5,7 +5,7 @@ Ethereum | |||||||
| 
 | 
 | ||||||
| Ethereum Go Client © 2014 Jeffrey Wilcke. | 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). | For the development package please see the [eth-go package](https://github.com/ethereum/eth-go). | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -46,6 +46,7 @@ | |||||||
| 
 | 
 | ||||||
|     .CodeMirror { |     .CodeMirror { | ||||||
|         height: 70%; |         height: 70%; | ||||||
|  | 	font-size: 14pt; | ||||||
|     } |     } | ||||||
| </style> | </style> | ||||||
| </head> | </head> | ||||||
|  | |||||||
| @ -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() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 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) { | ||||||
|  | |||||||
| @ -89,8 +89,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) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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) | ||||||
| @ -81,43 +77,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 | ||||||
| @ -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) { | 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) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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 := ðutil.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) | ||||||
| } | } | ||||||
|  | |||||||
| @ -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)) | ||||||
|  | |||||||
| @ -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] | 				keyPair := ethutil.GetKeyRing().Get(0) | ||||||
| 				tx.Sign(key.PrivateKey) | 				tx.Sign(keyPair.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 { | |||||||
| 
 | 
 | ||||||
| 			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] | 			keyPair := ethutil.GetKeyRing().Get(0) | ||||||
| 			contract.Sign(key.PrivateKey) | 			contract.Sign(keyPair.PrivateKey) | ||||||
| 
 | 
 | ||||||
| 			i.ethereum.TxPool().QueueTransaction(contract) | 			i.ethereum.TxPool().QueueTransaction(contract) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -104,8 +104,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()) | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								utils/cmd.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								utils/cmd.go
									
									
									
									
									
								
							| @ -1,9 +1,7 @@ | |||||||
| package utils | package utils | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/hex" |  | ||||||
| 	"github.com/ethereum/eth-go" | 	"github.com/ethereum/eth-go" | ||||||
| 	"github.com/ethereum/eth-go/ethchain" |  | ||||||
| 	"github.com/ethereum/eth-go/ethminer" | 	"github.com/ethereum/eth-go/ethminer" | ||||||
| 	_ "github.com/ethereum/eth-go/ethrpc" | 	_ "github.com/ethereum/eth-go/ethrpc" | ||||||
| 	"github.com/ethereum/eth-go/ethutil" | 	"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
 | 	// Fake block mining. It broadcasts a new block every 5 seconds
 | ||||||
| 	go func() { | 	go func() { | ||||||
| 		data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) | 		keyPair := ethutil.GetKeyRing().Get(0) | ||||||
| 		keyRing := ethutil.NewValueFromBytes(data) | 		addr := keyPair.Address() | ||||||
| 		addr := keyRing.Get(0).Bytes() |  | ||||||
| 
 | 
 | ||||||
| 		pair, _ := ethchain.NewKeyPairFromSec(ethutil.FromHex(hex.EncodeToString(addr))) | 		miner := ethminer.NewDefaultMiner(addr, ethereum) | ||||||
| 
 |  | ||||||
| 		miner := ethminer.NewDefaultMiner(pair.Address(), ethereum) |  | ||||||
| 		miner.Start() | 		miner.Start() | ||||||
| 
 | 
 | ||||||
| 	}() | 	}() | ||||||
|  | |||||||
| @ -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 | |||||||
| 
 | 
 | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | */ | ||||||
| 
 | 
 | ||||||
|  | /* | ||||||
| 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 | |||||||
| 
 | 
 | ||||||
| `, pair.Address(), key, pub) | `, pair.Address(), key, pub) | ||||||
| } | } | ||||||
|  | */ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user