aboutsummaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-01-29 19:01:51 +0800
committerobscuren <geffobscura@gmail.com>2015-01-29 19:01:51 +0800
commit6d012f628bbfc22b2587828968eff513dfeb4d8e (patch)
tree54ee7aa44e667a62bea049f5c58cacf4fe571e3f /rpc
parentec85458612e1d5374767f87005dd0ad5934f74d5 (diff)
downloadgo-tangerine-6d012f628bbfc22b2587828968eff513dfeb4d8e.tar.gz
go-tangerine-6d012f628bbfc22b2587828968eff513dfeb4d8e.tar.zst
go-tangerine-6d012f628bbfc22b2587828968eff513dfeb4d8e.zip
implement transact
Diffstat (limited to 'rpc')
-rw-r--r--rpc/args.go37
-rw-r--r--rpc/message.go17
-rw-r--r--rpc/packages.go11
3 files changed, 22 insertions, 43 deletions
diff --git a/rpc/args.go b/rpc/args.go
index bebd79eb9..0c3087151 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -1,8 +1,6 @@
package rpc
-import (
- "encoding/json"
-)
+import "encoding/json"
type GetBlockArgs struct {
BlockNumber int32
@@ -30,33 +28,18 @@ func (obj *GetBlockArgs) requirements() error {
}
type NewTxArgs struct {
- Sec string `json:"sec"`
Recipient string `json:"recipient"`
Value string `json:"value"`
Gas string `json:"gas"`
GasPrice string `json:"gasprice"`
- Init string `json:"init"`
- Body string `json:"body"`
+ Data string `json:"data"`
}
// type TxResponse struct {
// Hash string
// }
-func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
- if err = json.Unmarshal(b, obj); err == nil {
- return
- }
- return NewErrorResponse(ErrorDecodeArgs)
-}
-
func (a *NewTxArgs) requirements() error {
- if a.Recipient == "" {
- return NewErrorResponse("Transact requires a 'recipient' address as argument")
- }
- if a.Value == "" {
- return NewErrorResponse("Transact requires a 'value' as argument")
- }
if a.Gas == "" {
return NewErrorResponse("Transact requires a 'gas' value as argument")
}
@@ -66,22 +49,6 @@ func (a *NewTxArgs) requirements() error {
return nil
}
-func (a *NewTxArgs) requirementsContract() error {
- if a.Value == "" {
- return NewErrorResponse("Create requires a 'value' as argument")
- }
- if a.Gas == "" {
- return NewErrorResponse("Create requires a 'gas' value as argument")
- }
- if a.GasPrice == "" {
- return NewErrorResponse("Create requires a 'gasprice' value as argument")
- }
- if a.Body == "" {
- return NewErrorResponse("Create requires a 'body' value as argument")
- }
- return nil
-}
-
type PushTxArgs struct {
Tx string `json:"tx"`
}
diff --git a/rpc/message.go b/rpc/message.go
index 5785fcc87..e9f47634f 100644
--- a/rpc/message.go
+++ b/rpc/message.go
@@ -20,6 +20,7 @@ import (
"bytes"
"encoding/json"
"errors"
+ "fmt"
)
const (
@@ -56,6 +57,14 @@ type RpcRequest struct {
Params []json.RawMessage `json:"params"`
}
+func NewErrorResponse(msg string) error {
+ return errors.New(msg)
+}
+
+func NewErrorResponseWithError(msg string, err error) error {
+ return fmt.Errorf("%s: %v", msg, err)
+}
+
func (req *RpcRequest) ToSha3Args() (*Sha3Args, error) {
if len(req.Params) < 1 {
return nil, NewErrorResponse(ErrorArguments)
@@ -86,7 +95,7 @@ func (req *RpcRequest) ToGetBlockArgs() (*GetBlockArgs, error) {
}
func (req *RpcRequest) ToNewTxArgs() (*NewTxArgs, error) {
- if len(req.Params) < 7 {
+ if len(req.Params) < 1 {
return nil, NewErrorResponse(ErrorArguments)
}
@@ -94,7 +103,7 @@ func (req *RpcRequest) ToNewTxArgs() (*NewTxArgs, error) {
r := bytes.NewReader(req.Params[0])
err := json.NewDecoder(r).Decode(args)
if err != nil {
- return nil, NewErrorResponse(ErrorDecodeArgs)
+ return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
}
rpclogger.DebugDetailf("%T %v", args, args)
return args, nil
@@ -175,7 +184,3 @@ func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
rpclogger.DebugDetailf("%T %v", args, args)
return args, nil
}
-
-func NewErrorResponse(msg string) error {
- return errors.New(msg)
-}
diff --git a/rpc/packages.go b/rpc/packages.go
index 2c5fbf6be..11a172bd6 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -67,7 +67,8 @@ func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error {
if err != nil {
return err
}
- result, _ := p.xeth.Transact( /* TODO specify account */ args.Recipient, args.Value, args.Gas, args.GasPrice, args.Body)
+ result, _ := p.xeth.Transact( /* TODO specify account */ args.Recipient, args.Value, args.Gas, args.GasPrice, args.Data)
+ fmt.Println("result:", result)
*reply = result
return nil
}
@@ -78,7 +79,7 @@ func (p *EthereumApi) Create(args *NewTxArgs, reply *interface{}) error {
return err
}
- result, _ := p.xeth.Transact( /* TODO specify account */ "", args.Value, args.Gas, args.GasPrice, args.Body)
+ result, _ := p.xeth.Transact( /* TODO specify account */ "", args.Value, args.Gas, args.GasPrice, args.Data)
*reply = result
return nil
}
@@ -210,6 +211,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return err
}
return p.GetBlock(args, reply)
+ case "eth_transact":
+ args, err := req.ToNewTxArgs()
+ if err != nil {
+ return err
+ }
+ return p.Transact(args, reply)
case "web3_sha3":
args, err := req.ToSha3Args()
if err != nil {