diff --git a/rpc/api.go b/rpc/api.go index f023709ca..406960fce 100644 --- a/rpc/api.go +++ b/rpc/api.go @@ -252,12 +252,12 @@ func (p *EthereumApi) GetBlock(args *GetBlockArgs, reply *interface{}) error { } func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error { - if len(args.Gas) == 0 { - args.Gas = defaultGas.String() + if args.Gas == ethutil.Big0 { + args.Gas = defaultGas } - if len(args.GasPrice) == 0 { - args.GasPrice = defaultGasPrice.String() + if args.GasPrice == ethutil.Big0 { + args.GasPrice = defaultGasPrice } // TODO if no_private_key then @@ -281,7 +281,10 @@ func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error { p.register[ags.From] = append(p.register[args.From], args) } */ - result, _ := p.xeth().Transact( /* TODO specify account */ args.To, args.Value, args.Gas, args.GasPrice, args.Data) + result, err := p.xeth().Transact( /* TODO specify account */ args.To, args.Value.String(), args.Gas.String(), args.GasPrice.String(), args.Data) + if err != nil { + return err + } *reply = result //} @@ -289,7 +292,7 @@ func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error { } func (p *EthereumApi) Call(args *NewTxArgs, reply *interface{}) error { - result, err := p.xeth().Call( /* TODO specify account */ args.To, args.Value, args.Gas, args.GasPrice, args.Data) + result, err := p.xeth().Call( /* TODO specify account */ args.To, args.Value.String(), args.Gas.String(), args.GasPrice.String(), args.Data) if err != nil { return err } diff --git a/rpc/args.go b/rpc/args.go index e839da8bf..5686cbdec 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -1,8 +1,12 @@ package rpc -import "encoding/json" +import ( + "encoding/json" + "math/big" -import "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/ethutil" +) type GetBlockArgs struct { BlockNumber int32 @@ -23,12 +27,12 @@ func (obj *GetBlockArgs) UnmarshalJSON(b []byte) (err error) { } type NewTxArgs struct { - From string `json:"from"` - To string `json:"to"` - Value string `json:"value"` - Gas string `json:"gas"` - GasPrice string `json:"gasPrice"` - Data string `json:"data"` + From string `json:"from"` + To string `json:"to"` + Value *big.Int `json:"value"` + Gas *big.Int `json:"gas"` + GasPrice *big.Int `json:"gasPrice"` + Data string `json:"data"` } func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) { @@ -40,18 +44,18 @@ func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) { Gas string GasPrice string Data string - Code string + // Code string } if err = json.Unmarshal(b, &ext); err == nil { - if len(ext.Data) == 0 { - ext.Data = ext.Code - } + // if len(ext.Data) == 0 { + // ext.Data = ext.Code + // } obj.From = ext.From obj.To = ext.To - obj.Value = ext.Value - obj.Gas = ext.Gas - obj.GasPrice = ext.GasPrice + obj.Value = ethutil.Big(ext.Value) + obj.Gas = ethutil.Big(ext.Gas) + obj.GasPrice = ethutil.Big(ext.GasPrice) obj.Data = ext.Data return