aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dev_console.go6
-rw-r--r--ethereum.go2
-rw-r--r--ui/library.go28
-rw-r--r--wallet.qml7
4 files changed, 30 insertions, 13 deletions
diff --git a/dev_console.go b/dev_console.go
index 2e6b385df..696493cdd 100644
--- a/dev_console.go
+++ b/dev_console.go
@@ -197,16 +197,16 @@ func (i *Console) ParseInput(input string) bool {
}
case "contract":
fmt.Println("Contract editor (Ctrl-D = done)")
- code := i.Editor()
+ code := ethchain.Compile(i.Editor())
- contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), code)
+ contract := ethchain.NewTransaction(ethchain.ContractAddr, ethutil.Big(tokens[1]), code)
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
keyRing := ethutil.NewValueFromBytes(data)
contract.Sign(keyRing.Get(0).Bytes())
i.ethereum.TxPool.QueueTransaction(contract)
- fmt.Printf("%x\n", contract.Hash())
+ fmt.Printf("%x\n", contract.Hash()[12:])
case "exit", "quit", "q":
return false
case "help":
diff --git a/ethereum.go b/ethereum.go
index 384b22748..0b941dce3 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -5,6 +5,7 @@ import (
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
+ "github.com/ethereum/eth-go/ethwire"
"github.com/ethereum/go-ethereum/ui"
"github.com/niemeyer/qml"
"github.com/obscuren/secp256k1-go"
@@ -195,6 +196,7 @@ func main() {
// Search the nonce
block.Nonce = pow.Search(block)
+ ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{block.Value().Val})
err := ethereum.BlockManager.ProcessBlock(block)
if err != nil {
log.Println(err)
diff --git a/ui/library.go b/ui/library.go
index 0dfb10ac7..c9273e8c5 100644
--- a/ui/library.go
+++ b/ui/library.go
@@ -5,6 +5,7 @@ import (
"fmt"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
+ "strings"
)
type EthLib struct {
@@ -13,22 +14,34 @@ type EthLib struct {
txPool *ethchain.TxPool
}
-func (lib *EthLib) CreateTx(receiver, a string) string {
- hash, err := hex.DecodeString(receiver)
- if err != nil {
- return err.Error()
+func (lib *EthLib) CreateTx(receiver, a, data string) string {
+ var hash []byte
+ if len(receiver) == 0 {
+ hash = ethchain.ContractAddr
+ } else {
+ var err error
+ hash, err = hex.DecodeString(receiver)
+ if err != nil {
+ return err.Error()
+ }
}
- data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
- keyRing := ethutil.NewValueFromBytes(data)
+
+ k, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
+ keyRing := ethutil.NewValueFromBytes(k)
amount := ethutil.Big(a)
- tx := ethchain.NewTransaction(hash, amount, []string{""})
+ code := ethchain.Compile(strings.Split(data, "\n"))
+ tx := ethchain.NewTransaction(hash, amount, code)
tx.Nonce = lib.blockManager.GetAddrState(keyRing.Get(1).Bytes()).Nonce
tx.Sign(keyRing.Get(0).Bytes())
lib.txPool.QueueTransaction(tx)
+ if len(receiver) == 0 {
+ ethutil.Config.Log.Infof("Contract addr %x", tx.Hash()[12:])
+ }
+
return ethutil.Hex(tx.Hash())
}
@@ -40,5 +53,6 @@ func (lib *EthLib) GetBlock(hexHash string) *Block {
block := lib.blockChain.GetBlock(hash)
fmt.Println(block)
+
return &Block{Number: int(block.BlockInfo().Number), Hash: ethutil.Hex(block.Hash())}
}
diff --git a/wallet.qml b/wallet.qml
index 6ee6ff110..e7145cef3 100644
--- a/wallet.qml
+++ b/wallet.qml
@@ -23,7 +23,7 @@ ApplicationWindow {
Button {
text: "Send"
onClicked: {
- console.log(eth.createTx(txReceiver.text, txAmount.text))
+ console.log(eth.createTx(txReceiver.text, txAmount.text, codeView.text))
}
}
@@ -300,8 +300,9 @@ ApplicationWindow {
}
function addLog(str) {
- console.log(str)
- logModel.insert(0, {description: str})
+ if(str.len != 0) {
+ logModel.append({description: str})
+ }
}
function setPeers(text) {