good morning!!!!

Skip to content
Snippets Groups Projects
Commit 6d012f62 authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

implement transact

parent ec854586
No related branches found
No related tags found
No related merge requests found
......@@ -550,9 +550,6 @@ var contract = function (address, desc) {
result[displayName][typeName] = impl;
});
console.log("call:")
console.log(result.call)
console.log(JSON.stringify(result));
return result;
};
......
......@@ -45,8 +45,8 @@ ApplicationWindow {
mainSplit.setView(wallet.view, wallet.menuItem);
console.log("starting browser")
newBrowserTab("http://etherian.io");
//newBrowserTab("http://etherian.io");
newBrowserTab("file:///users/jeffrey/test.html");
// Command setup
gui.sendCommand(0)
......
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"`
}
......
......@@ -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)
}
......@@ -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 {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment