diff options
-rw-r--r-- | dev_console.go | 6 | ||||
-rw-r--r-- | ethereum.go | 2 | ||||
-rw-r--r-- | ui/library.go | 28 | ||||
-rw-r--r-- | wallet.qml | 7 |
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) { |