From 4142708d9d30a38c3071b895b2c42f8723830fb1 Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Tue, 24 Feb 2015 08:51:58 +0100
Subject: [PATCH 1/3] Convert gas values to integers

Fixes #370
---
 rpc/packages.go | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/rpc/packages.go b/rpc/packages.go
index b51bde7ce..4056494de 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -25,11 +25,6 @@ import (
 	"github.com/ethereum/go-ethereum/xeth"
 )
 
-const (
-	defaultGasPrice = "10000000000000"
-	defaultGas      = "10000"
-)
-
 type EthereumApi struct {
 	xeth          *xeth.XEth
 	quit          chan struct{}
@@ -45,17 +40,22 @@ type EthereumApi struct {
 	register map[string][]*NewTxArgs
 
 	db ethutil.Database
+
+	defaultGasPrice *big.Int
+	defaultGas      *big.Int
 }
 
 func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
 	db, _ := ethdb.NewLDBDatabase("dapps")
 	api := &EthereumApi{
-		xeth:          eth,
-		quit:          make(chan struct{}),
-		filterManager: filter.NewFilterManager(eth.Backend().EventMux()),
-		logs:          make(map[int]*logFilter),
-		messages:      make(map[int]*whisperFilter),
-		db:            db,
+		xeth:            eth,
+		quit:            make(chan struct{}),
+		filterManager:   filter.NewFilterManager(eth.Backend().EventMux()),
+		logs:            make(map[int]*logFilter),
+		messages:        make(map[int]*whisperFilter),
+		db:              db,
+		defaultGasPrice: big.NewInt(10000000000000),
+		defaultGas:      big.NewInt(10000),
 	}
 	go api.filterManager.Start()
 	go api.start()
@@ -192,11 +192,11 @@ 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
+		args.Gas = p.defaultGas.String()
 	}
 
 	if len(args.GasPrice) == 0 {
-		args.GasPrice = defaultGasPrice
+		args.GasPrice = p.defaultGasPrice.String()
 	}
 
 	// TODO if no_private_key then
@@ -525,7 +525,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		}
 		return p.AllLogs(args, reply)
 	case "eth_gasPrice":
-		*reply = defaultGasPrice
+		*reply = "0x" + toHex(p.defaultGasPrice.Bytes())
 		return nil
 	case "eth_register":
 		args, err := req.ToRegisterArgs()

From 2a7ca69a8260b887a309e1c43a74b4e644c391fa Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Tue, 24 Feb 2015 16:46:43 +0100
Subject: [PATCH 2/3] Fix duplicate leading 0x

---
 rpc/packages.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rpc/packages.go b/rpc/packages.go
index 4056494de..e48005d89 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -525,7 +525,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		}
 		return p.AllLogs(args, reply)
 	case "eth_gasPrice":
-		*reply = "0x" + toHex(p.defaultGasPrice.Bytes())
+		*reply = toHex(p.defaultGasPrice.Bytes())
 		return nil
 	case "eth_register":
 		args, err := req.ToRegisterArgs()

From 1e919a5e977f81b746568e50604b63d1dd393a6b Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Tue, 24 Feb 2015 17:32:11 +0100
Subject: [PATCH 3/3] Move amounts to global vars

---
 rpc/packages.go | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/rpc/packages.go b/rpc/packages.go
index e48005d89..bf75d1ddb 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -25,6 +25,11 @@ import (
 	"github.com/ethereum/go-ethereum/xeth"
 )
 
+var (
+	defaultGasPrice = big.NewInt(10000000000000)
+	defaultGas      = big.NewInt(10000)
+)
+
 type EthereumApi struct {
 	xeth          *xeth.XEth
 	quit          chan struct{}
@@ -40,22 +45,17 @@ type EthereumApi struct {
 	register map[string][]*NewTxArgs
 
 	db ethutil.Database
-
-	defaultGasPrice *big.Int
-	defaultGas      *big.Int
 }
 
 func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
 	db, _ := ethdb.NewLDBDatabase("dapps")
 	api := &EthereumApi{
-		xeth:            eth,
-		quit:            make(chan struct{}),
-		filterManager:   filter.NewFilterManager(eth.Backend().EventMux()),
-		logs:            make(map[int]*logFilter),
-		messages:        make(map[int]*whisperFilter),
-		db:              db,
-		defaultGasPrice: big.NewInt(10000000000000),
-		defaultGas:      big.NewInt(10000),
+		xeth:          eth,
+		quit:          make(chan struct{}),
+		filterManager: filter.NewFilterManager(eth.Backend().EventMux()),
+		logs:          make(map[int]*logFilter),
+		messages:      make(map[int]*whisperFilter),
+		db:            db,
 	}
 	go api.filterManager.Start()
 	go api.start()
@@ -192,11 +192,11 @@ 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 = p.defaultGas.String()
+		args.Gas = defaultGas.String()
 	}
 
 	if len(args.GasPrice) == 0 {
-		args.GasPrice = p.defaultGasPrice.String()
+		args.GasPrice = defaultGasPrice.String()
 	}
 
 	// TODO if no_private_key then
@@ -525,7 +525,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		}
 		return p.AllLogs(args, reply)
 	case "eth_gasPrice":
-		*reply = toHex(p.defaultGasPrice.Bytes())
+		*reply = toHex(defaultGasPrice.Bytes())
 		return nil
 	case "eth_register":
 		args, err := req.ToRegisterArgs()