aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/ui/library.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-03-22 08:02:24 +0800
committerobscuren <geffobscura@gmail.com>2014-03-22 08:02:24 +0800
commit1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c (patch)
treed8be2c7b97a86f2b9949c4b4dc14ab2c2a34dc2e /ethereal/ui/library.go
parent22b4e9b6173437b28045d69e8fd0b468e526e559 (diff)
downloaddexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.gz
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.bz2
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.lz
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.xz
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.zst
dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.zip
Major re-organisation.
The Ethereum node and Gui are now separated.
Diffstat (limited to 'ethereal/ui/library.go')
-rw-r--r--ethereal/ui/library.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/ethereal/ui/library.go b/ethereal/ui/library.go
new file mode 100644
index 000000000..05fffd579
--- /dev/null
+++ b/ethereal/ui/library.go
@@ -0,0 +1,60 @@
+package ethui
+
+import (
+ "encoding/hex"
+ "fmt"
+ "github.com/ethereum/eth-go/ethchain"
+ "github.com/ethereum/eth-go/ethutil"
+ "strings"
+)
+
+type EthLib struct {
+ stateManager *ethchain.StateManager
+ blockChain *ethchain.BlockChain
+ txPool *ethchain.TxPool
+}
+
+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()
+ }
+ }
+
+ k, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
+ keyPair := ethutil.NewKeyFromBytes(k)
+
+ amount := ethutil.Big(a)
+ code := ethchain.Compile(strings.Split(data, "\n"))
+ tx := ethchain.NewTransaction(hash, amount, code)
+ tx.Nonce = lib.stateManager.GetAddrState(keyPair.Address()).Nonce
+
+ tx.Sign(keyPair.PrivateKey)
+
+ lib.txPool.QueueTransaction(tx)
+
+ if len(receiver) == 0 {
+ ethutil.Config.Log.Infof("Contract addr %x", tx.Hash()[12:])
+ } else {
+ ethutil.Config.Log.Infof("Tx hash %x", tx.Hash())
+ }
+
+ return ethutil.Hex(tx.Hash())
+}
+
+func (lib *EthLib) GetBlock(hexHash string) *Block {
+ hash, err := hex.DecodeString(hexHash)
+ if err != nil {
+ return nil
+ }
+
+ block := lib.blockChain.GetBlock(hash)
+ fmt.Println(block)
+
+ return &Block{Number: int(block.BlockInfo().Number), Hash: ethutil.Hex(block.Hash())}
+}