Skip to content

Commit

Permalink
add GasPriceMarginFactor and MaxGasPrice to eth-tx-manager (#2360)
Browse files Browse the repository at this point in the history
* add GasPriceMarginFactor and MaxGasPrice to eth-tx-manager

* add logs, fix config

* update config file documentation

---------

Co-authored-by: joanestebanr <[email protected]>
  • Loading branch information
tclemos and joanestebanr authored Aug 3, 2023
1 parent 2298c8f commit 24cbf1a
Show file tree
Hide file tree
Showing 8 changed files with 242 additions and 11 deletions.
8 changes: 8 additions & 0 deletions config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,14 @@ func Test_Defaults(t *testing.T) {
path: "EthTxManager.ForcedGas",
expectedValue: uint64(0),
},
{
path: "EthTxManager.GasPriceMarginFactor",
expectedValue: float64(1),
},
{
path: "EthTxManager.MaxGasPriceLimit",
expectedValue: uint64(0),
},
{
path: "L2GasPriceSuggester.DefaultGasPriceWei",
expectedValue: uint64(2000000000),
Expand Down
2 changes: 2 additions & 0 deletions config/default.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ MultiGasProvider = false
FrequencyToMonitorTxs = "1s"
WaitTxToBeMined = "2m"
ForcedGas = 0
GasPriceMarginFactor = 1
MaxGasPriceLimit = 0
[RPC]
Host = "0.0.0.0"
Expand Down
2 changes: 1 addition & 1 deletion docs/config-file/node-config-doc.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
</pre></div> </div><div id=EthTxManager_FrequencyToMonitorTxs_ex2 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;300ms&quot;</span>
</pre></div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.WaitTxToBeMined onclick="anchorLink('EthTxManager.WaitTxToBeMined')">EthTxManager.WaitTxToBeMined=</a> </div> <span class="badge badge-success default-value">Default: "2m0s"</span><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>WaitTxToBeMined time to wait after transaction was sent to the ethereum</p> </span> <br> <div class="badge badge-secondary">Examples:</div> <br><div id=EthTxManager_WaitTxToBeMined_ex1 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;1m&quot;</span>
</pre></div> </div><div id=EthTxManager_WaitTxToBeMined_ex2 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;300ms&quot;</span>
</pre></div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.PrivateKeys onclick="anchorLink('EthTxManager.PrivateKeys')">EthTxManager.PrivateKeys=</a> </div><span class="badge badge-dark value-type">Type: array of object</span><br> <span class=description><p>PrivateKeys defines all the key store files that are going<br> to be read in order to provide the private keys to sign the L1 txs</p> </span> <h4>Each item of this array must be:</h4> <div class=card> <div class="card-body items-definition" id=EthTxManager_PrivateKeys_items> <div class=breadcrumbs> <!-- None --><!-- None --><!-- None --><!-- None --><a href="#EthTxManager.PrivateKeys.PrivateKeys items.Path" onclick="anchorLink('EthTxManager.PrivateKeys.PrivateKeys items.Path')">EthTxManager.PrivateKeys.PrivateKeys items.Path=</a> </div><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>Path is the file path for the key store file</p> </span> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><!-- None --><!-- None --><a href="#EthTxManager.PrivateKeys.PrivateKeys items.Password" onclick="anchorLink('EthTxManager.PrivateKeys.PrivateKeys items.Password')">EthTxManager.PrivateKeys.PrivateKeys items.Password=</a> </div><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>Password is the password to decrypt the key store file</p> </span> <hr> </div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.ForcedGas onclick="anchorLink('EthTxManager.ForcedGas')">EthTxManager.ForcedGas=</a> </div> <span class="badge badge-success default-value">Default: 0</span><span class="badge badge-dark value-type">Type: integer</span><br> <span class=description><p>ForcedGas is the amount of gas to be forced in case of gas estimation error</p> </span> <hr> </div> </div> </div> </div> <div class=accordion id=accordionPool> <div class=card> <div class=card-header id=headingPool> <h2 class=mb-0> <button class="btn btn-link property-name-button" type=button data-toggle=collapse data-target=#Pool aria-expanded aria-controls=Pool onclick="setAnchor('#Pool')"><span class=property-name> <div class=breadcrumbs>[<a href=#Pool onclick="anchorLink('Pool')">Pool</a>] </div></span></button> </h2> Pool service configuration </div> <div id=Pool class="collapse property-definition-div" aria-labelledby=headingPool data-parent=#accordionPool> <div class="card-body pl-5"> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#Pool.IntervalToRefreshBlockedAddresses onclick="anchorLink('Pool.IntervalToRefreshBlockedAddresses')">Pool.IntervalToRefreshBlockedAddresses=</a> </div> <span class="badge badge-success default-value">Default: "5m0s"</span><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>IntervalToRefreshBlockedAddresses is the time it takes to sync the<br> blocked address list from db to memory</p> </span> <br> <div class="badge badge-secondary">Examples:</div> <br><div id=Pool_IntervalToRefreshBlockedAddresses_ex1 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;1m&quot;</span>
</pre></div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.PrivateKeys onclick="anchorLink('EthTxManager.PrivateKeys')">EthTxManager.PrivateKeys=</a> </div><span class="badge badge-dark value-type">Type: array of object</span><br> <span class=description><p>PrivateKeys defines all the key store files that are going<br> to be read in order to provide the private keys to sign the L1 txs</p> </span> <h4>Each item of this array must be:</h4> <div class=card> <div class="card-body items-definition" id=EthTxManager_PrivateKeys_items> <div class=breadcrumbs> <!-- None --><!-- None --><!-- None --><!-- None --><a href="#EthTxManager.PrivateKeys.PrivateKeys items.Path" onclick="anchorLink('EthTxManager.PrivateKeys.PrivateKeys items.Path')">EthTxManager.PrivateKeys.PrivateKeys items.Path=</a> </div><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>Path is the file path for the key store file</p> </span> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><!-- None --><!-- None --><a href="#EthTxManager.PrivateKeys.PrivateKeys items.Password" onclick="anchorLink('EthTxManager.PrivateKeys.PrivateKeys items.Password')">EthTxManager.PrivateKeys.PrivateKeys items.Password=</a> </div><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>Password is the password to decrypt the key store file</p> </span> <hr> </div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.ForcedGas onclick="anchorLink('EthTxManager.ForcedGas')">EthTxManager.ForcedGas=</a> </div> <span class="badge badge-success default-value">Default: 0</span><span class="badge badge-dark value-type">Type: integer</span><br> <span class=description><p>ForcedGas is the amount of gas to be forced in case of gas estimation error</p> </span> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.GasPriceMarginFactor onclick="anchorLink('EthTxManager.GasPriceMarginFactor')">EthTxManager.GasPriceMarginFactor=</a> </div> <span class="badge badge-success default-value">Default: 1</span><span class="badge badge-dark value-type">Type: number</span><br> <div class="description collapse" id=collapseDescription_EthTxManager_GasPriceMarginFactor> <p>GasPriceMarginFactor is used to multiply the suggested gas price provided by the network<br> in order to allow a different gas price to be set for all the transactions and making it<br> easier to have the txs prioritized in the pool, default value is 1.</p> <p>ex:<br> suggested gas price: 100<br> GasPriceMarginFactor: 1<br> gas price = 100</p> <p>suggested gas price: 100<br> GasPriceMarginFactor: 1.1<br> gas price = 110</p> </div> <div> <a class="collapse-description-link collapsed" data-toggle=collapse href=#collapseDescription_EthTxManager_GasPriceMarginFactor aria-expanded=false aria-controls=collapseDescriptionEthTxManager_GasPriceMarginFactor></a> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#EthTxManager.MaxGasPriceLimit onclick="anchorLink('EthTxManager.MaxGasPriceLimit')">EthTxManager.MaxGasPriceLimit=</a> </div> <span class="badge badge-success default-value">Default: 0</span><span class="badge badge-dark value-type">Type: integer</span><br> <div class="description collapse" id=collapseDescription_EthTxManager_MaxGasPriceLimit> <p>MaxGasPriceLimit helps avoiding transactions to be sent over an specified<br> gas price amount, default value is 0, which means no limit.<br> If the gas price provided by the network and adjusted by the GasPriceMarginFactor<br> is greater than this configuration, transaction will have its gas price set to<br> the value configured in this config as the limit.</p> <p>ex:</p> <p>suggested gas price: 100<br> gas price margin factor: 20%<br> max gas price limit: 150<br> tx gas price = 120</p> <p>suggested gas price: 100<br> gas price margin factor: 20%<br> max gas price limit: 110<br> tx gas price = 110</p> </div> <div> <a class="collapse-description-link collapsed" data-toggle=collapse href=#collapseDescription_EthTxManager_MaxGasPriceLimit aria-expanded=false aria-controls=collapseDescriptionEthTxManager_MaxGasPriceLimit></a> </div> <hr> </div> </div> </div> </div> <div class=accordion id=accordionPool> <div class=card> <div class=card-header id=headingPool> <h2 class=mb-0> <button class="btn btn-link property-name-button" type=button data-toggle=collapse data-target=#Pool aria-expanded aria-controls=Pool onclick="setAnchor('#Pool')"><span class=property-name> <div class=breadcrumbs>[<a href=#Pool onclick="anchorLink('Pool')">Pool</a>] </div></span></button> </h2> Pool service configuration </div> <div id=Pool class="collapse property-definition-div" aria-labelledby=headingPool data-parent=#accordionPool> <div class="card-body pl-5"> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#Pool.IntervalToRefreshBlockedAddresses onclick="anchorLink('Pool.IntervalToRefreshBlockedAddresses')">Pool.IntervalToRefreshBlockedAddresses=</a> </div> <span class="badge badge-success default-value">Default: "5m0s"</span><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>IntervalToRefreshBlockedAddresses is the time it takes to sync the<br> blocked address list from db to memory</p> </span> <br> <div class="badge badge-secondary">Examples:</div> <br><div id=Pool_IntervalToRefreshBlockedAddresses_ex1 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;1m&quot;</span>
</pre></div> </div><div id=Pool_IntervalToRefreshBlockedAddresses_ex2 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;300ms&quot;</span>
</pre></div> </div> <hr> <div class=breadcrumbs> <!-- None --><!-- None --><a href=#Pool.IntervalToRefreshGasPrices onclick="anchorLink('Pool.IntervalToRefreshGasPrices')">Pool.IntervalToRefreshGasPrices=</a> </div> <span class="badge badge-success default-value">Default: "5s"</span><span class="badge badge-dark value-type">Type: string</span><br> <span class=description><p>IntervalToRefreshGasPrices is the time to wait to refresh the gas prices</p> </span> <br> <div class="badge badge-secondary">Examples:</div> <br><div id=Pool_IntervalToRefreshGasPrices_ex1 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;1m&quot;</span>
</pre></div> </div><div id=Pool_IntervalToRefreshGasPrices_ex2 class="jumbotron examples"><div class=highlight><pre><span></span><span class=s2>&quot;300ms&quot;</span>
Expand Down
Loading

0 comments on commit 24cbf1a

Please sign in to comment.