Removed the "Get" part

This commit is contained in:
obscuren 2014-08-18 10:17:45 +02:00
parent 793e666f36
commit b0ae61c652
6 changed files with 83 additions and 21 deletions

@ -216,6 +216,7 @@ func (self *StateTransition) TransitionState() (err error) {
Input: self.tx.Data, Input: self.tx.Data,
Origin: sender.Address(), Origin: sender.Address(),
Block: self.block.Hash(), Timestamp: self.block.Time, Coinbase: self.block.Coinbase, Number: self.block.Number, Block: self.block.Hash(), Timestamp: self.block.Time, Coinbase: self.block.Coinbase, Number: self.block.Number,
Value: self.value,
}) })
// Process the init code and create 'valid' contract // Process the init code and create 'valid' contract

@ -17,28 +17,28 @@ func NewJSPipe(eth ethchain.EthManager) *JSPipe {
return &JSPipe{New(eth)} return &JSPipe{New(eth)}
} }
func (self *JSPipe) GetBlockByHash(strHash string) *JSBlock { func (self *JSPipe) BlockByHash(strHash string) *JSBlock {
hash := ethutil.Hex2Bytes(strHash) hash := ethutil.Hex2Bytes(strHash)
block := self.obj.BlockChain().GetBlock(hash) block := self.obj.BlockChain().GetBlock(hash)
return NewJSBlock(block) return NewJSBlock(block)
} }
func (self *JSPipe) GetKey() *JSKey { func (self *JSPipe) Key() *JSKey {
return NewJSKey(self.obj.KeyManager().KeyPair()) return NewJSKey(self.obj.KeyManager().KeyPair())
} }
func (self *JSPipe) GetStateObject(addr string) *JSObject { func (self *JSPipe) StateObject(addr string) *JSObject {
object := &Object{self.World().safeGet(ethutil.Hex2Bytes(addr))} object := &Object{self.World().safeGet(ethutil.Hex2Bytes(addr))}
return NewJSObject(object) return NewJSObject(object)
} }
func (self *JSPipe) GetPeerCount() int { func (self *JSPipe) PeerCount() int {
return self.obj.PeerCount() return self.obj.PeerCount()
} }
func (self *JSPipe) GetPeers() []JSPeer { func (self *JSPipe) Peers() []JSPeer {
var peers []JSPeer var peers []JSPeer
for peer := self.obj.Peers().Front(); peer != nil; peer = peer.Next() { for peer := self.obj.Peers().Front(); peer != nil; peer = peer.Next() {
p := peer.Value.(ethchain.Peer) p := peer.Value.(ethchain.Peer)
@ -51,23 +51,33 @@ func (self *JSPipe) GetPeers() []JSPeer {
return peers return peers
} }
func (self *JSPipe) GetIsMining() bool { func (self *JSPipe) IsMining() bool {
return self.obj.IsMining() return self.obj.IsMining()
} }
func (self *JSPipe) GetIsListening() bool { func (self *JSPipe) IsListening() bool {
return self.obj.IsListening() return self.obj.IsListening()
} }
func (self *JSPipe) GetCoinBase() string { func (self *JSPipe) CoinBase() string {
return ethutil.Bytes2Hex(self.obj.KeyManager().Address()) return ethutil.Bytes2Hex(self.obj.KeyManager().Address())
} }
func (self *JSPipe) GetStorage(addr, storageAddr string) string { func (self *JSPipe) BalanceAt(addr string) string {
return self.World().SafeGet(ethutil.Hex2Bytes(addr)).Balance.String()
}
func (self *JSPipe) NumberToHuman(balance string) string {
b := ethutil.Big(balance)
return ethutil.CurrencyToString(b)
}
func (self *JSPipe) StorageAt(addr, storageAddr string) string {
return self.World().SafeGet(ethutil.Hex2Bytes(addr)).Storage(ethutil.Hex2Bytes(storageAddr)).Str() return self.World().SafeGet(ethutil.Hex2Bytes(addr)).Storage(ethutil.Hex2Bytes(storageAddr)).Str()
} }
func (self *JSPipe) GetTxCountAt(address string) int { func (self *JSPipe) TxCountAt(address string) int {
return int(self.World().SafeGet(ethutil.Hex2Bytes(address)).Nonce) return int(self.World().SafeGet(ethutil.Hex2Bytes(address)).Nonce)
} }
@ -89,7 +99,7 @@ type KeyVal struct {
Value string `json:"value"` Value string `json:"value"`
} }
func (self *JSPipe) GetEachStorage(addr string) string { func (self *JSPipe) EachStorage(addr string) string {
var values []KeyVal var values []KeyVal
object := self.World().SafeGet(ethutil.Hex2Bytes(addr)) object := self.World().SafeGet(ethutil.Hex2Bytes(addr))
object.EachStorage(func(name string, value *ethutil.Value) { object.EachStorage(func(name string, value *ethutil.Value) {
@ -175,3 +185,20 @@ func (self *JSPipe) CompileMutan(code string) string {
return ethutil.Bytes2Hex(data) return ethutil.Bytes2Hex(data)
} }
func (self *JSPipe) Messages(object map[string]interface{}) string {
filter := ethchain.NewFilterFromMap(object, self.obj)
messages := filter.Find()
var msgs []JSMessage
for _, m := range messages {
msgs = append(msgs, NewJSMessage(m))
}
b, err := json.Marshal(msgs)
if err != nil {
return "{\"error\":" + err.Error() + "}"
}
return string(b)
}

@ -7,6 +7,7 @@ import (
"github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethcrypto" "github.com/ethereum/eth-go/ethcrypto"
"github.com/ethereum/eth-go/ethstate"
"github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethutil"
) )
@ -175,3 +176,33 @@ func NewJSReciept(contractCreation bool, creationAddress, hash, address []byte)
ethutil.Bytes2Hex(address), ethutil.Bytes2Hex(address),
} }
} }
type JSMessage struct {
To string `json:"to"`
From string `json:"from"`
Input string `json:"input"`
Output string `json:"output"`
Path int32 `json:"path"`
Origin string `json:"origin"`
Timestamp int32 `json:"timestamp"`
Coinbase string `json:"coinbase"`
Block string `json:"block"`
Number int32 `json:"number"`
Value string `json:"value"`
}
func NewJSMessage(message *ethstate.Message) JSMessage {
return JSMessage{
To: ethutil.Bytes2Hex(message.To),
From: ethutil.Bytes2Hex(message.From),
Input: ethutil.Bytes2Hex(message.Input),
Output: ethutil.Bytes2Hex(message.Output),
Path: int32(message.Path),
Origin: ethutil.Bytes2Hex(message.Origin),
Timestamp: int32(message.Timestamp),
Coinbase: ethutil.Bytes2Hex(message.Origin),
Block: ethutil.Bytes2Hex(message.Block),
Number: int32(message.Number.Int64()),
Value: message.Value.String(),
}
}

@ -74,7 +74,7 @@ func (p *EthereumApi) GetBlock(args *GetBlockArgs, reply *string) error {
return err return err
} }
block := p.pipe.GetBlockByHash(args.Hash) block := p.pipe.BlockByHash(args.Hash)
*reply = NewSuccessRes(block) *reply = NewSuccessRes(block)
return nil return nil
} }
@ -129,7 +129,7 @@ func (p *EthereumApi) Transact(args *NewTxArgs, reply *string) error {
if err != nil { if err != nil {
return err return err
} }
result, _ := p.pipe.Transact(p.pipe.GetKey().PrivateKey, args.Recipient, args.Value, args.Gas, args.GasPrice, args.Body) result, _ := p.pipe.Transact(p.pipe.Key().PrivateKey, args.Recipient, args.Value, args.Gas, args.GasPrice, args.Body)
*reply = NewSuccessRes(result) *reply = NewSuccessRes(result)
return nil return nil
} }
@ -140,13 +140,13 @@ func (p *EthereumApi) Create(args *NewTxArgs, reply *string) error {
return err return err
} }
result, _ := p.pipe.Transact(p.pipe.GetKey().PrivateKey, "", args.Value, args.Gas, args.GasPrice, args.Body) result, _ := p.pipe.Transact(p.pipe.Key().PrivateKey, "", args.Value, args.Gas, args.GasPrice, args.Body)
*reply = NewSuccessRes(result) *reply = NewSuccessRes(result)
return nil return nil
} }
func (p *EthereumApi) GetKey(args interface{}, reply *string) error { func (p *EthereumApi) GetKey(args interface{}, reply *string) error {
*reply = NewSuccessRes(p.pipe.GetKey()) *reply = NewSuccessRes(p.pipe.Key())
return nil return nil
} }
@ -212,7 +212,7 @@ type GetPeerCountRes struct {
} }
func (p *EthereumApi) GetPeerCount(args *interface{}, reply *string) error { func (p *EthereumApi) GetPeerCount(args *interface{}, reply *string) error {
*reply = NewSuccessRes(GetPeerCountRes{PeerCount: p.pipe.GetPeerCount()}) *reply = NewSuccessRes(GetPeerCountRes{PeerCount: p.pipe.PeerCount()})
return nil return nil
} }
@ -221,7 +221,7 @@ type GetListeningRes struct {
} }
func (p *EthereumApi) GetIsListening(args *interface{}, reply *string) error { func (p *EthereumApi) GetIsListening(args *interface{}, reply *string) error {
*reply = NewSuccessRes(GetListeningRes{IsListening: p.pipe.GetIsListening()}) *reply = NewSuccessRes(GetListeningRes{IsListening: p.pipe.IsListening()})
return nil return nil
} }
@ -230,7 +230,7 @@ type GetCoinbaseRes struct {
} }
func (p *EthereumApi) GetCoinbase(args *interface{}, reply *string) error { func (p *EthereumApi) GetCoinbase(args *interface{}, reply *string) error {
*reply = NewSuccessRes(GetCoinbaseRes{Coinbase: p.pipe.GetCoinBase()}) *reply = NewSuccessRes(GetCoinbaseRes{Coinbase: p.pipe.CoinBase()})
return nil return nil
} }
@ -239,7 +239,7 @@ type GetMiningRes struct {
} }
func (p *EthereumApi) GetIsMining(args *interface{}, reply *string) error { func (p *EthereumApi) GetIsMining(args *interface{}, reply *string) error {
*reply = NewSuccessRes(GetMiningRes{IsMining: p.pipe.GetIsMining()}) *reply = NewSuccessRes(GetMiningRes{IsMining: p.pipe.IsMining()})
return nil return nil
} }
@ -248,7 +248,7 @@ func (p *EthereumApi) GetTxCountAt(args *GetTxCountArgs, reply *string) error {
if err != nil { if err != nil {
return err return err
} }
state := p.pipe.GetTxCountAt(args.Address) state := p.pipe.TxCountAt(args.Address)
*reply = NewSuccessRes(GetTxCountRes{Nonce: state}) *reply = NewSuccessRes(GetTxCountRes{Nonce: state})
return nil return nil
} }

@ -41,6 +41,7 @@ type Message struct {
Coinbase []byte Coinbase []byte
Block []byte Block []byte
Number *big.Int Number *big.Int
Value *big.Int
ChangedAddresses [][]byte ChangedAddresses [][]byte
} }
@ -50,5 +51,5 @@ func (self *Message) AddStorageChange(addr []byte) {
} }
func (self *Message) String() string { func (self *Message) String() string {
return fmt.Sprintf("Message{to: %x from: %x input: %x output: %x origin: %x coinbase: %x block: %x number: %v timestamp: %d path: %d", self.To, self.From, self.Input, self.Output, self.Origin, self.Coinbase, self.Block, self.Number, self.Timestamp, self.Path) return fmt.Sprintf("Message{to: %x from: %x input: %x output: %x origin: %x coinbase: %x block: %x number: %v timestamp: %d path: %d value: %v", self.To, self.From, self.Input, self.Output, self.Origin, self.Coinbase, self.Block, self.Number, self.Timestamp, self.Path, self.Value)
} }

@ -700,6 +700,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
To: addr, From: closure.Address(), To: addr, From: closure.Address(),
Origin: self.env.Origin(), Origin: self.env.Origin(),
Block: self.env.BlockHash(), Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(), Block: self.env.BlockHash(), Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(),
Value: value,
}) })
// Create a new contract // Create a new contract
@ -765,6 +766,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
Input: args, Input: args,
Origin: self.env.Origin(), Origin: self.env.Origin(),
Block: self.env.BlockHash(), Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(), Block: self.env.BlockHash(), Timestamp: self.env.Time(), Coinbase: self.env.Coinbase(), Number: self.env.BlockNumber(),
Value: value,
}) })
if closure.object.Balance.Cmp(value) < 0 { if closure.object.Balance.Cmp(value) < 0 {