Merge pull request #2195 from obscuren/gpo-rpc
eth: Added GPO to suggest default gas prices
This commit is contained in:
commit
537774e049
27
eth/api.go
27
eth/api.go
|
@ -47,10 +47,7 @@ import (
|
||||||
"gopkg.in/fatih/set.v0"
|
"gopkg.in/fatih/set.v0"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const defaultGas = uint64(90000)
|
||||||
defaultGasPrice = uint64(10000000000000)
|
|
||||||
defaultGas = uint64(90000)
|
|
||||||
)
|
|
||||||
|
|
||||||
// blockByNumber is a commonly used helper function which retrieves and returns
|
// blockByNumber is a commonly used helper function which retrieves and returns
|
||||||
// the block for the given block number, capable of handling two special blocks:
|
// the block for the given block number, capable of handling two special blocks:
|
||||||
|
@ -820,6 +817,7 @@ func newRPCTransaction(b *types.Block, txHash common.Hash) (*RPCTransaction, err
|
||||||
type PublicTransactionPoolAPI struct {
|
type PublicTransactionPoolAPI struct {
|
||||||
eventMux *event.TypeMux
|
eventMux *event.TypeMux
|
||||||
chainDb ethdb.Database
|
chainDb ethdb.Database
|
||||||
|
gpo *GasPriceOracle
|
||||||
bc *core.BlockChain
|
bc *core.BlockChain
|
||||||
miner *miner.Miner
|
miner *miner.Miner
|
||||||
am *accounts.Manager
|
am *accounts.Manager
|
||||||
|
@ -828,14 +826,15 @@ type PublicTransactionPoolAPI struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPublicTransactionPoolAPI creates a new RPC service with methods specific for the transaction pool.
|
// NewPublicTransactionPoolAPI creates a new RPC service with methods specific for the transaction pool.
|
||||||
func NewPublicTransactionPoolAPI(txPool *core.TxPool, m *miner.Miner, chainDb ethdb.Database, eventMux *event.TypeMux, bc *core.BlockChain, am *accounts.Manager) *PublicTransactionPoolAPI {
|
func NewPublicTransactionPoolAPI(e *Ethereum) *PublicTransactionPoolAPI {
|
||||||
return &PublicTransactionPoolAPI{
|
return &PublicTransactionPoolAPI{
|
||||||
eventMux: eventMux,
|
eventMux: e.EventMux(),
|
||||||
chainDb: chainDb,
|
gpo: NewGasPriceOracle(e),
|
||||||
bc: bc,
|
chainDb: e.ChainDb(),
|
||||||
am: am,
|
bc: e.BlockChain(),
|
||||||
txPool: txPool,
|
am: e.AccountManager(),
|
||||||
miner: m,
|
txPool: e.TxPool(),
|
||||||
|
miner: e.Miner(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1028,7 +1027,7 @@ func (s *PublicTransactionPoolAPI) SendTransaction(args SendTxArgs) (common.Hash
|
||||||
args.Gas = rpc.NewHexNumber(defaultGas)
|
args.Gas = rpc.NewHexNumber(defaultGas)
|
||||||
}
|
}
|
||||||
if args.GasPrice == nil {
|
if args.GasPrice == nil {
|
||||||
args.GasPrice = rpc.NewHexNumber(defaultGasPrice)
|
args.GasPrice = rpc.NewHexNumber(s.gpo.SuggestPrice())
|
||||||
}
|
}
|
||||||
if args.Value == nil {
|
if args.Value == nil {
|
||||||
args.Value = rpc.NewHexNumber(0)
|
args.Value = rpc.NewHexNumber(0)
|
||||||
|
@ -1169,7 +1168,7 @@ func (tx *Tx) UnmarshalJSON(b []byte) (err error) {
|
||||||
tx.GasLimit = rpc.NewHexNumber(0)
|
tx.GasLimit = rpc.NewHexNumber(0)
|
||||||
}
|
}
|
||||||
if tx.GasPrice == nil {
|
if tx.GasPrice == nil {
|
||||||
tx.GasPrice = rpc.NewHexNumber(defaultGasPrice)
|
tx.GasPrice = rpc.NewHexNumber(int64(50000000000))
|
||||||
}
|
}
|
||||||
|
|
||||||
if contractCreation {
|
if contractCreation {
|
||||||
|
@ -1212,7 +1211,7 @@ func (s *PublicTransactionPoolAPI) SignTransaction(args *SignTransactionArgs) (*
|
||||||
args.Gas = rpc.NewHexNumber(defaultGas)
|
args.Gas = rpc.NewHexNumber(defaultGas)
|
||||||
}
|
}
|
||||||
if args.GasPrice == nil {
|
if args.GasPrice == nil {
|
||||||
args.GasPrice = rpc.NewHexNumber(defaultGasPrice)
|
args.GasPrice = rpc.NewHexNumber(s.gpo.SuggestPrice())
|
||||||
}
|
}
|
||||||
if args.Value == nil {
|
if args.Value == nil {
|
||||||
args.Value = rpc.NewHexNumber(0)
|
args.Value = rpc.NewHexNumber(0)
|
||||||
|
|
|
@ -269,7 +269,7 @@ func (s *Ethereum) APIs() []rpc.API {
|
||||||
}, {
|
}, {
|
||||||
Namespace: "eth",
|
Namespace: "eth",
|
||||||
Version: "1.0",
|
Version: "1.0",
|
||||||
Service: NewPublicTransactionPoolAPI(s.TxPool(), s.Miner(), s.ChainDb(), s.EventMux(), s.BlockChain(), s.AccountManager()),
|
Service: NewPublicTransactionPoolAPI(s),
|
||||||
Public: true,
|
Public: true,
|
||||||
}, {
|
}, {
|
||||||
Namespace: "eth",
|
Namespace: "eth",
|
||||||
|
|
Loading…
Reference in New Issue