diff options
Diffstat (limited to 'ethereal')
-rw-r--r-- | ethereal/assets/ethereum.js | 12 | ||||
-rw-r--r-- | ethereal/assets/icon.png | bin | 0 -> 86700 bytes | |||
-rw-r--r-- | ethereal/assets/qml/webapp.qml | 23 | ||||
-rw-r--r-- | ethereal/assets/test.html | 54 | ||||
-rw-r--r-- | ethereal/ethereum.go | 2 | ||||
-rw-r--r-- | ethereal/ui/gui.go | 14 | ||||
-rw-r--r-- | ethereal/ui/library.go | 24 | ||||
-rw-r--r-- | ethereal/ui/ui_lib.go | 2 |
8 files changed, 108 insertions, 23 deletions
diff --git a/ethereal/assets/ethereum.js b/ethereal/assets/ethereum.js index 173eaff22..74f851936 100644 --- a/ethereal/assets/ethereum.js +++ b/ethereal/assets/ethereum.js @@ -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 = {} diff --git a/ethereal/assets/icon.png b/ethereal/assets/icon.png Binary files differnew file mode 100644 index 000000000..73e0ceb75 --- /dev/null +++ b/ethereal/assets/icon.png diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml index 496beb65a..ee7dea0ca 100644 --- a/ethereal/assets/qml/webapp.qml +++ b/ethereal/assets/qml/webapp.qml @@ -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 diff --git a/ethereal/assets/test.html b/ethereal/assets/test.html index eb55bf667..1cfcad6bb 100644 --- a/ethereal/assets/test.html +++ b/ethereal/assets/test.html @@ -1,37 +1,57 @@ <html> <head> <title>jeffcoin</title> -<body> -<h1>Jeff Coin</h1> - -<img src="file:///Users/jeffrey/Desktop/iconnew.png"> - -<div id="transactions"> - <input id="addr" type="text" placeholder="Receiver address"></input><br> - <input id="amount" type="text" placeholder="Amount"></input><br> - <button onclick="createTransaction();">Send Tx</button> -</div> - -<div><button onclick="test();">Tests</button></div> - <script type="text/javascript"> +var jefcoinAddr = "3dff537f51350239abc95c76a5864aa605259e7d" + function createTransaction() { - debug("test") var addr = document.querySelector("#addr").value; var amount = document.querySelector("#amount").value; - eth.createTx(addr, amount, "100", "250", "", function(tx) { + 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.getBlock(1, function(block) { - debug("queried block:", block) + 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="icon.png"> +<div id="currentAmount"></div> + +<div id="transactions"> + <input id="addr" type="text" placeholder="Receiver address"></input><br> + <input id="amount" type="text" placeholder="Amount"></input><br> + <button onclick="createTransaction();">Send Tx</button> +</div> + +<div><button onclick="tests();">Tests</button></div> + <div id="debug" style="border: 1px solid block"></div> diff --git a/ethereal/ethereum.go b/ethereal/ethereum.go index 9cc52039d..0adb9f151 100644 --- a/ethereal/ethereum.go +++ b/ethereal/ethereum.go @@ -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" diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go index 0e5d57c93..80498d718 100644 --- a/ethereal/ui/gui.go +++ b/ethereal/ui/gui.go @@ -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) diff --git a/ethereal/ui/library.go b/ethereal/ui/library.go index 537cfa994..5ca2b4273 100644 --- a/ethereal/ui/library.go +++ b/ethereal/ui/library.go @@ -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 diff --git a/ethereal/ui/ui_lib.go b/ethereal/ui/ui_lib.go index 09f81c67e..9191e5ea9 100644 --- a/ethereal/ui/ui_lib.go +++ b/ethereal/ui/ui_lib.go @@ -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" |