Skip to content

Commit 7d2c0b6

Browse files
committed
add gas price config and set feeAmount when broadcast Tx
1 parent 23a99a8 commit 7d2c0b6

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

price-feeder/cmd/price-feeder.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ func priceFeederCmdHandler(cmd *cobra.Command, args []string) error {
141141
cfg.Account.Validator,
142142
cfg.RPC.GRPCEndpoint,
143143
cfg.GasAdjustment,
144+
cfg.GasPrice,
144145
)
145146
if err != nil {
146147
return err

price-feeder/config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
gas_adjustment = 1.5
22
provider_min_override = true
3-
3+
gas_price = "0.0001stake"
44
[server]
55
listen_addr = "0.0.0.0:7171"
66
read_timeout = "20s"
@@ -80,9 +80,9 @@ providers = [
8080
quote = "USDT"
8181

8282
[account]
83-
address = "juno15x87cdlt9ed0xhgtsdutdec3njg42q3a9vw7fn"
83+
address = "juno1dykyy8sqfw78frjt9th6k2s0c64q3nqwdy7eh7"
8484
chain_id = "test-1"
85-
validator = "junovaloper15x87cdlt9ed0xhgtsdutdec3njg42q3a63c3j2"
85+
validator = "junovaloper1dykyy8sqfw78frjt9th6k2s0c64q3nqwjegkv8"
8686
prefix = "juno"
8787

8888
[keyring]

price-feeder/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ type (
7777
ProviderTimeout string `mapstructure:"provider_timeout"`
7878
ProviderMinOverride bool `mapstructure:"provider_min_override"`
7979
ProviderEndpoints []provider.Endpoint `mapstructure:"provider_endpoints" validate:"dive"`
80+
GasPrice string `mapstructure:"gas_price"`
8081
}
8182

8283
// Server defines the API server configuration.

price-feeder/oracle/client/client.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func NewOracleClient(
6666
validatorAddrString string,
6767
grpcEndpoint string,
6868
gasAdjustment float64,
69+
gasPrice string,
6970
) (OracleClient, error) {
7071

7172
oracleAddr, err := sdk.AccAddressFromBech32(oracleAddrString)
@@ -87,6 +88,7 @@ func NewOracleClient(
8788
Encoding: junoapp.MakeEncodingConfig(),
8889
GasAdjustment: gasAdjustment,
8990
GRPCEndpoint: grpcEndpoint,
91+
GasPrices: gasPrice,
9092
}
9193

9294
clientCtx, err := oracleClient.CreateClientContext()
@@ -163,7 +165,7 @@ func (oc OracleClient) BroadcastTx(nextBlockHeight, timeoutHeight int64, msgs ..
163165
// set last check height to latest block height
164166
lastCheckHeight = latestBlockHeight
165167

166-
resp, err := BroadcastTx(clientCtx, factory, msgs...)
168+
resp, err := BroadcastTx(clientCtx, factory, oc.GasPrices, msgs...)
167169
if resp != nil && resp.Code != 0 {
168170
telemetry.IncrCounter(1, "failure", "tx", "code")
169171
err = fmt.Errorf("invalid response code from tx: %d", resp.Code)

price-feeder/oracle/client/tx.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
// Note, BroadcastTx is copied from the SDK except it removes a few unnecessary
1414
// things like prompting for confirmation and printing the response. Instead,
1515
// we return the TxResponse.
16-
func BroadcastTx(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) (*sdk.TxResponse, error) {
16+
func BroadcastTx(clientCtx client.Context, txf tx.Factory, gasPrice string, msgs ...sdk.Msg) (*sdk.TxResponse, error) {
1717
txf, err := prepareFactory(clientCtx, txf)
1818
if err != nil {
1919
return nil, err
@@ -31,6 +31,9 @@ func BroadcastTx(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) (*sd
3131
return nil, err
3232
}
3333

34+
feeAmount, err := calculateFeeAmount(gasPrice, adjusted)
35+
unsignedTx.SetFeeAmount(feeAmount)
36+
3437
unsignedTx.SetFeeGranter(clientCtx.GetFeeGranterAddress())
3538
// unsignedTx.SetFeePayer(clientCtx.GetFeePayerAddress())
3639

@@ -75,3 +78,19 @@ func prepareFactory(clientCtx client.Context, txf tx.Factory) (tx.Factory, error
7578

7679
return txf, nil
7780
}
81+
82+
func calculateFeeAmount(gasPrice string, gas uint64) (sdk.Coins, error) {
83+
var feeAmount sdk.Coins
84+
coins, err := sdk.ParseDecCoins(gasPrice)
85+
if err != nil {
86+
return nil, err
87+
}
88+
89+
for _, coin := range coins {
90+
intGas := sdk.NewIntFromUint64(gas)
91+
amount := coin.Amount.Mul(sdk.NewDecFromInt(intGas)).Ceil().TruncateInt()
92+
93+
feeAmount = append(feeAmount, sdk.NewCoin(coin.Denom, amount))
94+
}
95+
return feeAmount, nil
96+
}

0 commit comments

Comments
 (0)