forked from cerc-io/plugeth
		
	Minor fixes and sample coin "improvements"
This commit is contained in:
		
							parent
							
								
									43f1214f97
								
							
						
					
					
						commit
						bb72347acf
					
				| @ -5,6 +5,10 @@ function postData(data, cb) { | ||||
| 		eth._callbacks[data._seed] = cb; | ||||
| 	} | ||||
| 
 | ||||
| 	if(data.args === undefined) { | ||||
| 		data.args = [] | ||||
| 	} | ||||
| 
 | ||||
| 	navigator.qt.postMessage(JSON.stringify(data)); | ||||
| } | ||||
| 
 | ||||
| @ -34,6 +38,14 @@ window.eth = { | ||||
| 	createTx: function(recipient, value, gas, gasPrice, data, cb) { | ||||
| 		postData({call: "createTx", args: [recipient, value, gas, gasPrice, data]}, cb) | ||||
| 	}, | ||||
| 
 | ||||
| 	getStorage: function(address, storageAddress, cb) { | ||||
| 		postData({call: "getStorage", args: [address, storageAddress]}, cb) | ||||
| 	}, | ||||
| 
 | ||||
| 	getKey: function(cb) { | ||||
| 		postData({call: "getKey"}, cb) | ||||
| 	}, | ||||
| } | ||||
| window.eth._callbacks = {} | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								ethereal/assets/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ethereal/assets/icon.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 85 KiB | 
| @ -25,12 +25,15 @@ ApplicationWindow { | ||||
|                 WebView { | ||||
|                         objectName: "webView" | ||||
|                         id: webview | ||||
| 			anchors.fill: parent | ||||
| 			/* | ||||
|                         anchors { | ||||
|                                 left: parent.left | ||||
|                                 right: parent.right | ||||
|                                 bottom: sizeGrip.top | ||||
|                                 top: parent.top | ||||
|                         } | ||||
| 			*/ | ||||
| 
 | ||||
|                         onTitleChanged: { window.title = title } | ||||
|                         experimental.preferences.javascriptEnabled: true | ||||
| @ -38,7 +41,7 @@ ApplicationWindow { | ||||
|                         experimental.preferences.developerExtrasEnabled: true | ||||
|                         experimental.userScripts: [ui.assetPath("ethereum.js")] | ||||
|                         experimental.onMessageReceived: { | ||||
|                                 console.log("[onMessageReceived]: ", message.data) | ||||
|                                 //console.log("[onMessageReceived]: ", message.data) | ||||
|                                 var data = JSON.parse(message.data) | ||||
| 
 | ||||
| 				switch(data.call) { | ||||
| @ -57,6 +60,20 @@ ApplicationWindow { | ||||
| 						var tx = eth.createTx(data.args[0], data.args[1],data.args[2],data.args[3],data.args[4]) | ||||
| 						postData(data._seed, tx) | ||||
| 					} | ||||
| 					break | ||||
| 				case "getStorage": | ||||
| 					if(data.args.length < 2) { | ||||
| 						postData(data._seed, null) | ||||
| 					} else { | ||||
| 						var stateObject = eth.getStateObject(data.args[0]) | ||||
| 						var storage = stateObject.getStorage(data.args[1]) | ||||
| 						postData(data._seed, storage) | ||||
| 					} | ||||
| 					break | ||||
| 				case "getKey": | ||||
| 					var keys = eth.getKey() | ||||
| 					postData(data._seed, keys) | ||||
| 					break | ||||
| 				} | ||||
|                         } | ||||
| 			function postData(seed, data) { | ||||
| @ -67,7 +84,7 @@ ApplicationWindow { | ||||
|                 Rectangle { | ||||
|                         id: sizeGrip | ||||
|                         color: "gray" | ||||
|                         visible: true | ||||
|                         visible: false | ||||
|                         height: 10 | ||||
|                         anchors { | ||||
|                                 left: root.left | ||||
| @ -86,7 +103,7 @@ ApplicationWindow { | ||||
| 
 | ||||
|                 WebView { | ||||
|                         id: inspector | ||||
|                         visible: true | ||||
|                         visible: false | ||||
|                         url: webview.experimental.remoteInspectorUrl | ||||
|                         anchors { | ||||
|                                 left: root.left | ||||
|  | ||||
| @ -1,10 +1,48 @@ | ||||
| <html> | ||||
| <head> | ||||
| <title>jeffcoin</title> | ||||
| <body> | ||||
| <script type="text/javascript"> | ||||
| var jefcoinAddr = "3dff537f51350239abc95c76a5864aa605259e7d" | ||||
| 
 | ||||
| function createTransaction() { | ||||
| 	var addr = document.querySelector("#addr").value; | ||||
| 	var amount = document.querySelector("#amount").value; | ||||
| 
 | ||||
| 	var data = "0x" + addr + "\n" + amount | ||||
| 	eth.createTx(jefcoinAddr, 0, "10000000", "250", data, function(tx) { | ||||
| 		debug("received tx hash:", tx) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| // Any test related actions here please | ||||
| function tests() { | ||||
| 	eth.getKey(function(keys) { | ||||
| 		debug(keys) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| function init() { | ||||
| 	eth.getKey(function(key) { | ||||
| 			eth.getStorage(jefcoinAddr, key, function(storage) { | ||||
| 				debug("Currently in storage: ", storage); | ||||
| 				document.querySelector("#currentAmount").innerHTML = "Amount: " + storage; | ||||
| 			}) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
| <style type="text/css"> | ||||
| input[type="text"] { | ||||
| 	width: 300px; | ||||
| } | ||||
| </style> | ||||
| </head> | ||||
| 
 | ||||
| <body onload="init();"> | ||||
| <h1>Jeff Coin</h1> | ||||
| 
 | ||||
| <img src="file:///Users/jeffrey/Desktop/iconnew.png"> | ||||
| <img src="icon.png"> | ||||
| <div id="currentAmount"></div> | ||||
| 
 | ||||
| <div id="transactions"> | ||||
| 	<input id="addr" type="text" placeholder="Receiver address"></input><br> | ||||
| @ -12,26 +50,8 @@ | ||||
| 	<button onclick="createTransaction();">Send Tx</button> | ||||
| </div> | ||||
| 
 | ||||
| <div><button onclick="test();">Tests</button></div> | ||||
| <div><button onclick="tests();">Tests</button></div> | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| function createTransaction() { | ||||
| 	debug("test") | ||||
| 	var addr = document.querySelector("#addr").value; | ||||
| 	var amount = document.querySelector("#amount").value; | ||||
| 
 | ||||
| 	eth.createTx(addr, amount, "100", "250", "", function(tx) { | ||||
| 		debug("received tx hash:", tx) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| // Any test related actions here please | ||||
| function tests() { | ||||
| 	eth.getBlock(1, function(block) { | ||||
| 		debug("queried block:", block)				 | ||||
| 	}) | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <div id="debug" style="border: 1px solid block"></div> | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,7 @@ import ( | ||||
| 	"github.com/ethereum/eth-go/ethutil" | ||||
| 	"github.com/ethereum/go-ethereum/ethereal/ui" | ||||
| 	"github.com/ethereum/go-ethereum/utils" | ||||
| 	"github.com/niemeyer/qml" | ||||
| 	"github.com/go-qml/qml" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"os/signal" | ||||
|  | ||||
| @ -8,7 +8,7 @@ import ( | ||||
| 	"github.com/ethereum/eth-go/ethchain" | ||||
| 	"github.com/ethereum/eth-go/ethdb" | ||||
| 	"github.com/ethereum/eth-go/ethutil" | ||||
| 	"github.com/niemeyer/qml" | ||||
| 	"github.com/go-qml/qml" | ||||
| 	"math/big" | ||||
| 	"strings" | ||||
| ) | ||||
| @ -24,6 +24,18 @@ type Tx struct { | ||||
| 	Contract             bool | ||||
| } | ||||
| 
 | ||||
| type Key struct { | ||||
| 	Address string | ||||
| } | ||||
| 
 | ||||
| type KeyRing struct { | ||||
| 	Keys []interface{} | ||||
| } | ||||
| 
 | ||||
| func NewKeyRing(keys []interface{}) *KeyRing { | ||||
| 	return &KeyRing{Keys: keys} | ||||
| } | ||||
| 
 | ||||
| func NewTxFromTransaction(tx *ethchain.Transaction) *Tx { | ||||
| 	hash := hex.EncodeToString(tx.Hash()) | ||||
| 	sender := hex.EncodeToString(tx.Recipient) | ||||
|  | ||||
| @ -10,6 +10,20 @@ import ( | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| type Contract struct { | ||||
| 	object *ethchain.StateObject | ||||
| } | ||||
| 
 | ||||
| func NewContract(object *ethchain.StateObject) *Contract { | ||||
| 	return &Contract{object: object} | ||||
| } | ||||
| 
 | ||||
| func (c *Contract) GetStorage(address string) string { | ||||
| 	val := c.object.GetMem(ethutil.Big("0x" + address)) | ||||
| 
 | ||||
| 	return val.BigInt().String() | ||||
| } | ||||
| 
 | ||||
| type EthLib struct { | ||||
| 	stateManager *ethchain.StateManager | ||||
| 	blockChain   *ethchain.BlockChain | ||||
| @ -43,6 +57,16 @@ func (lib *EthLib) CreateAndSetPrivKey() (string, string, string, string) { | ||||
| 	return mnemonicString, fmt.Sprintf("%x", pair.Address()), fmt.Sprintf("%x", prv), fmt.Sprintf("%x", pub) | ||||
| } | ||||
| 
 | ||||
| func (lib *EthLib) GetKey() string { | ||||
| 	return ethutil.Hex(ethutil.Config.Db.GetKeys()[0].Address()) | ||||
| } | ||||
| 
 | ||||
| func (lib *EthLib) GetStateObject(address string) *Contract { | ||||
| 	stateObject := lib.stateManager.ProcState().GetContract(ethutil.FromHex(address)) | ||||
| 
 | ||||
| 	return NewContract(stateObject) | ||||
| } | ||||
| 
 | ||||
| func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) { | ||||
| 	var hash []byte | ||||
| 	var contractCreation bool | ||||
|  | ||||
| @ -7,7 +7,7 @@ import ( | ||||
| 	"github.com/ethereum/eth-go/ethchain" | ||||
| 	"github.com/ethereum/eth-go/ethutil" | ||||
| 	"github.com/ethereum/go-ethereum/utils" | ||||
| 	"github.com/niemeyer/qml" | ||||
| 	"github.com/go-qml/qml" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"path/filepath" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user