aboutsummaryrefslogtreecommitdiffstats
path: root/xeth
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-29 01:35:49 +0800
committerobscuren <geffobscura@gmail.com>2015-01-29 01:36:23 +0800
commit872b2497114209119becf2e8a4d4a5818e2084ee (patch)
treefa20b37eca386628f4b3bb54e248704d5b742b6f /xeth
parent1146f25015b6d84072b71c490aba246e3010bd87 (diff)
downloaddexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar.gz
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar.bz2
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar.lz
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar.xz
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.tar.zst
dexon-872b2497114209119becf2e8a4d4a5818e2084ee.zip
further cleaned up xeth interface
Diffstat (limited to 'xeth')
-rw-r--r--xeth/object.go26
-rw-r--r--xeth/types.go (renamed from xeth/js_types.go)86
-rw-r--r--xeth/world.go4
-rw-r--r--xeth/xeth.go68
4 files changed, 87 insertions, 97 deletions
diff --git a/xeth/object.go b/xeth/object.go
deleted file mode 100644
index a4ac41e89..000000000
--- a/xeth/object.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package xeth
-
-import (
- "github.com/ethereum/go-ethereum/ethutil"
- "github.com/ethereum/go-ethereum/state"
-)
-
-type Object struct {
- *state.StateObject
-}
-
-func (self *Object) StorageString(str string) *ethutil.Value {
- if ethutil.IsHex(str) {
- return self.Storage(ethutil.Hex2Bytes(str[2:]))
- } else {
- return self.Storage(ethutil.RightPadBytes([]byte(str), 32))
- }
-}
-
-func (self *Object) StorageValue(addr *ethutil.Value) *ethutil.Value {
- return self.Storage(addr.Bytes())
-}
-
-func (self *Object) Storage(addr []byte) *ethutil.Value {
- return self.StateObject.GetStorage(ethutil.BigD(addr))
-}
diff --git a/xeth/js_types.go b/xeth/types.go
index a0be996ff..4d8543eb1 100644
--- a/xeth/js_types.go
+++ b/xeth/types.go
@@ -25,8 +25,32 @@ func fromHex(s string) []byte {
return nil
}
+type Object struct {
+ *state.StateObject
+}
+
+func NewObject(state *state.StateObject) *Object {
+ return &Object{state}
+}
+
+func (self *Object) StorageString(str string) *ethutil.Value {
+ if ethutil.IsHex(str) {
+ return self.Storage(ethutil.Hex2Bytes(str[2:]))
+ } else {
+ return self.Storage(ethutil.RightPadBytes([]byte(str), 32))
+ }
+}
+
+func (self *Object) StorageValue(addr *ethutil.Value) *ethutil.Value {
+ return self.Storage(addr.Bytes())
+}
+
+func (self *Object) Storage(addr []byte) *ethutil.Value {
+ return self.StateObject.GetStorage(ethutil.BigD(addr))
+}
+
// Block interface exposed to QML
-type JSBlock struct {
+type Block struct {
//Transactions string `json:"transactions"`
ref *types.Block
Size string `json:"size"`
@@ -45,24 +69,24 @@ type JSBlock struct {
}
// Creates a new QML Block from a chain block
-func NewJSBlock(block *types.Block) *JSBlock {
+func NewBlock(block *types.Block) *Block {
if block == nil {
- return &JSBlock{}
+ return &Block{}
}
- ptxs := make([]*JSTransaction, len(block.Transactions()))
+ ptxs := make([]*Transaction, len(block.Transactions()))
for i, tx := range block.Transactions() {
- ptxs[i] = NewJSTx(tx)
+ ptxs[i] = NewTx(tx)
}
txlist := ethutil.NewList(ptxs)
- puncles := make([]*JSBlock, len(block.Uncles()))
+ puncles := make([]*Block, len(block.Uncles()))
for i, uncle := range block.Uncles() {
- puncles[i] = NewJSBlock(types.NewBlockWithHeader(uncle))
+ puncles[i] = NewBlock(types.NewBlockWithHeader(uncle))
}
ulist := ethutil.NewList(puncles)
- return &JSBlock{
+ return &Block{
ref: block, Size: block.Size().String(),
Number: int(block.NumberU64()), GasUsed: block.GasUsed().String(),
GasLimit: block.GasLimit().String(), Hash: toHex(block.Hash()),
@@ -75,7 +99,7 @@ func NewJSBlock(block *types.Block) *JSBlock {
}
}
-func (self *JSBlock) ToString() string {
+func (self *Block) ToString() string {
if self.ref != nil {
return self.ref.String()
}
@@ -83,16 +107,16 @@ func (self *JSBlock) ToString() string {
return ""
}
-func (self *JSBlock) GetTransaction(hash string) *JSTransaction {
+func (self *Block) GetTransaction(hash string) *Transaction {
tx := self.ref.Transaction(fromHex(hash))
if tx == nil {
return nil
}
- return NewJSTx(tx)
+ return NewTx(tx)
}
-type JSTransaction struct {
+type Transaction struct {
ref *types.Transaction
Value string `json:"value"`
@@ -108,7 +132,7 @@ type JSTransaction struct {
Confirmations int `json:"confirmations"`
}
-func NewJSTx(tx *types.Transaction) *JSTransaction {
+func NewTx(tx *types.Transaction) *Transaction {
hash := toHex(tx.Hash())
receiver := toHex(tx.To())
if receiver == "0000000000000000000000000000000000000000" {
@@ -124,29 +148,21 @@ func NewJSTx(tx *types.Transaction) *JSTransaction {
data = toHex(tx.Data())
}
- return &JSTransaction{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value()), Address: receiver, Contract: createsContract, Gas: tx.Gas().String(), GasPrice: tx.GasPrice().String(), Data: data, Sender: sender, CreatesContract: createsContract, RawData: toHex(tx.Data())}
+ return &Transaction{ref: tx, Hash: hash, Value: ethutil.CurrencyToString(tx.Value()), Address: receiver, Contract: createsContract, Gas: tx.Gas().String(), GasPrice: tx.GasPrice().String(), Data: data, Sender: sender, CreatesContract: createsContract, RawData: toHex(tx.Data())}
}
-func (self *JSTransaction) ToString() string {
+func (self *Transaction) ToString() string {
return self.ref.String()
}
-type JSKey struct {
+type Key struct {
Address string `json:"address"`
PrivateKey string `json:"privateKey"`
PublicKey string `json:"publicKey"`
}
-func NewJSKey(key *crypto.KeyPair) *JSKey {
- return &JSKey{toHex(key.Address()), toHex(key.PrivateKey), toHex(key.PublicKey)}
-}
-
-type JSObject struct {
- *Object
-}
-
-func NewJSObject(object *Object) *JSObject {
- return &JSObject{object}
+func NewKey(key *crypto.KeyPair) *Key {
+ return &Key{toHex(key.Address()), toHex(key.PrivateKey), toHex(key.PublicKey)}
}
type PReceipt struct {
@@ -167,20 +183,20 @@ func NewPReciept(contractCreation bool, creationAddress, hash, address []byte) *
// Peer interface exposed to QML
-type JSPeer struct {
+type Peer struct {
ref *p2p.Peer
Ip string `json:"ip"`
Version string `json:"version"`
Caps string `json:"caps"`
}
-func NewJSPeer(peer *p2p.Peer) *JSPeer {
+func NewPeer(peer *p2p.Peer) *Peer {
var caps []string
for _, cap := range peer.Caps() {
caps = append(caps, fmt.Sprintf("%s/%d", cap.Name, cap.Version))
}
- return &JSPeer{
+ return &Peer{
ref: peer,
Ip: fmt.Sprintf("%v", peer.RemoteAddr()),
Version: fmt.Sprintf("%v", peer.Identity()),
@@ -188,15 +204,15 @@ func NewJSPeer(peer *p2p.Peer) *JSPeer {
}
}
-type JSReceipt struct {
+type Receipt struct {
CreatedContract bool `json:"createdContract"`
Address string `json:"address"`
Hash string `json:"hash"`
Sender string `json:"sender"`
}
-func NewJSReciept(contractCreation bool, creationAddress, hash, address []byte) *JSReceipt {
- return &JSReceipt{
+func NewReciept(contractCreation bool, creationAddress, hash, address []byte) *Receipt {
+ return &Receipt{
contractCreation,
toHex(creationAddress),
toHex(hash),
@@ -204,7 +220,7 @@ func NewJSReciept(contractCreation bool, creationAddress, hash, address []byte)
}
}
-type JSMessage struct {
+type Message struct {
To string `json:"to"`
From string `json:"from"`
Input string `json:"input"`
@@ -218,8 +234,8 @@ type JSMessage struct {
Value string `json:"value"`
}
-func NewJSMessage(message *state.Message) JSMessage {
- return JSMessage{
+func NewMessage(message *state.Message) Message {
+ return Message{
To: toHex(message.To),
From: toHex(message.From),
Input: toHex(message.Input),
diff --git a/xeth/world.go b/xeth/world.go
index 60d4bbb57..cdceec50d 100644
--- a/xeth/world.go
+++ b/xeth/world.go
@@ -3,10 +3,10 @@ package xeth
import "github.com/ethereum/go-ethereum/state"
type State struct {
- xeth *JSXEth
+ xeth *XEth
}
-func NewState(xeth *JSXEth) *State {
+func NewState(xeth *XEth) *State {
return &State{xeth}
}
diff --git a/xeth/xeth.go b/xeth/xeth.go
index 6b491b0fe..96e545b35 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -31,15 +31,15 @@ type Backend interface {
TxPool() *core.TxPool
}
-type JSXEth struct {
+type XEth struct {
eth Backend
blockProcessor *core.BlockProcessor
chainManager *core.ChainManager
world *State
}
-func NewJSXEth(eth Backend) *JSXEth {
- xeth := &JSXEth{
+func New(eth Backend) *XEth {
+ xeth := &XEth{
eth: eth,
blockProcessor: eth.BlockProcessor(),
chainManager: eth.ChainManager(),
@@ -49,24 +49,24 @@ func NewJSXEth(eth Backend) *JSXEth {
return xeth
}
-func (self *JSXEth) State() *State { return self.world }
+func (self *XEth) State() *State { return self.world }
-func (self *JSXEth) BlockByHash(strHash string) *JSBlock {
+func (self *XEth) BlockByHash(strHash string) *Block {
hash := fromHex(strHash)
block := self.chainManager.GetBlock(hash)
- return NewJSBlock(block)
+ return NewBlock(block)
}
-func (self *JSXEth) BlockByNumber(num int32) *JSBlock {
+func (self *XEth) BlockByNumber(num int32) *Block {
if num == -1 {
- return NewJSBlock(self.chainManager.CurrentBlock())
+ return NewBlock(self.chainManager.CurrentBlock())
}
- return NewJSBlock(self.chainManager.GetBlockByNumber(uint64(num)))
+ return NewBlock(self.chainManager.GetBlockByNumber(uint64(num)))
}
-func (self *JSXEth) Block(v interface{}) *JSBlock {
+func (self *XEth) Block(v interface{}) *Block {
if n, ok := v.(int32); ok {
return self.BlockByNumber(n)
} else if str, ok := v.(string); ok {
@@ -78,63 +78,63 @@ func (self *JSXEth) Block(v interface{}) *JSBlock {
return nil
}
-func (self *JSXEth) Accounts() []string {
+func (self *XEth) Accounts() []string {
return []string{toHex(self.eth.KeyManager().Address())}
}
/*
-func (self *JSXEth) StateObject(addr string) *JSObject {
+func (self *XEth) StateObject(addr string) *Object {
object := &Object{self.State().safeGet(fromHex(addr))}
- return NewJSObject(object)
+ return NewObject(object)
}
*/
-func (self *JSXEth) PeerCount() int {
+func (self *XEth) PeerCount() int {
return self.eth.PeerCount()
}
-func (self *JSXEth) IsMining() bool {
+func (self *XEth) IsMining() bool {
return self.eth.IsMining()
}
-func (self *JSXEth) IsListening() bool {
+func (self *XEth) IsListening() bool {
return self.eth.IsListening()
}
-func (self *JSXEth) Coinbase() string {
+func (self *XEth) Coinbase() string {
return toHex(self.eth.KeyManager().Address())
}
-func (self *JSXEth) NumberToHuman(balance string) string {
+func (self *XEth) NumberToHuman(balance string) string {
b := ethutil.Big(balance)
return ethutil.CurrencyToString(b)
}
-func (self *JSXEth) StorageAt(addr, storageAddr string) string {
+func (self *XEth) StorageAt(addr, storageAddr string) string {
storage := self.State().SafeGet(addr).StorageString(storageAddr)
return toHex(storage.Bytes())
}
-func (self *JSXEth) BalanceAt(addr string) string {
+func (self *XEth) BalanceAt(addr string) string {
return self.State().SafeGet(addr).Balance().String()
}
-func (self *JSXEth) TxCountAt(address string) int {
+func (self *XEth) TxCountAt(address string) int {
return int(self.State().SafeGet(address).Nonce)
}
-func (self *JSXEth) CodeAt(address string) string {
+func (self *XEth) CodeAt(address string) string {
return toHex(self.State().SafeGet(address).Code)
}
-func (self *JSXEth) IsContract(address string) bool {
+func (self *XEth) IsContract(address string) bool {
return len(self.State().SafeGet(address).Code) > 0
}
-func (self *JSXEth) SecretToAddress(key string) string {
+func (self *XEth) SecretToAddress(key string) string {
pair, err := crypto.NewKeyPairFromSec(fromHex(key))
if err != nil {
return ""
@@ -143,7 +143,7 @@ func (self *JSXEth) SecretToAddress(key string) string {
return toHex(pair.Address())
}
-func (self *JSXEth) Execute(addr, value, gas, price, data string) (string, error) {
+func (self *XEth) Execute(addr, value, gas, price, data string) (string, error) {
return "", nil
}
@@ -152,7 +152,7 @@ type KeyVal struct {
Value string `json:"value"`
}
-func (self *JSXEth) EachStorage(addr string) string {
+func (self *XEth) EachStorage(addr string) string {
var values []KeyVal
object := self.State().SafeGet(addr)
it := object.Trie().Iterator()
@@ -168,13 +168,13 @@ func (self *JSXEth) EachStorage(addr string) string {
return string(valuesJson)
}
-func (self *JSXEth) ToAscii(str string) string {
+func (self *XEth) ToAscii(str string) string {
padded := ethutil.RightPadBytes([]byte(str), 32)
return "0x" + toHex(padded)
}
-func (self *JSXEth) FromAscii(str string) string {
+func (self *XEth) FromAscii(str string) string {
if ethutil.IsHex(str) {
str = str[2:]
}
@@ -182,7 +182,7 @@ func (self *JSXEth) FromAscii(str string) string {
return string(bytes.Trim(fromHex(str), "\x00"))
}
-func (self *JSXEth) FromNumber(str string) string {
+func (self *XEth) FromNumber(str string) string {
if ethutil.IsHex(str) {
str = str[2:]
}
@@ -190,20 +190,20 @@ func (self *JSXEth) FromNumber(str string) string {
return ethutil.BigD(fromHex(str)).String()
}
-func (self *JSXEth) Transact(key, toStr, valueStr, gasStr, gasPriceStr, codeStr string) (string, error) {
+func (self *XEth) Transact(key, toStr, valueStr, gasStr, gasPriceStr, codeStr string) (string, error) {
return "", nil
}
-func ToJSMessages(messages state.Messages) *ethutil.List {
- var msgs []JSMessage
+func ToMessages(messages state.Messages) *ethutil.List {
+ var msgs []Message
for _, m := range messages {
- msgs = append(msgs, NewJSMessage(m))
+ msgs = append(msgs, NewMessage(m))
}
return ethutil.NewList(msgs)
}
-func (self *JSXEth) PushTx(encodedTx string) (string, error) {
+func (self *XEth) PushTx(encodedTx string) (string, error) {
tx := types.NewTransactionFromBytes(fromHex(encodedTx))
err := self.eth.TxPool().Add(tx)
if err != nil {