Global variables
Gas price and oracleβ
Gas price (given in Mwei per gas unit) is a key parameter of Mangrove that determines the bounty of takers for removing a failing offer from an offer list. In order to make sure takers are consistently over-compensated for the gas used, it should be kept well above average tx.gasprice
.
Gas price can be read from an outside Monitor Contract. When the governance wishes to do so, it must enable this feature by letting the monitor (if any) act as a gas price oracle. This can be done using the governance restricted function setUseOracle
of Mangrove.
If monitoring the gas price is not enabled, or if the value returned by the monitor is ill formed, Mangrove will use its global gasprice
parameter as fallback.
- Signature
- Events
// Sets whether Mangrove uses the monitor as oracle for `gasprice` and `density` values.
function setUseOracle(bool useOracle) external;
// Sets the gasprice (in Mwei, 26 bits).
function setGasprice(uint gasprice) external;
// Sets the monitor/oracle. The `monitor/oracle` can provide real-time values for `gasprice` and `density` to Mangrove. It can also receive liquidity event notifications.
function setMonitor(address monitor) external;
event SetGasprice(uint value); // Emitted when gas price is updated.
event SetMonitor(address value); // Emitted when a new monitor is set.
event SetUseOracle(bool value); // Logs `true` if Mangrove is set to use an external monitor to read gasprice. Logs `false` otherwise.
If allowing the monitor to act as a gas price Oracle, Governance must have previously deployed a Monitor Contract and set its address in Mangrove's configuration.
Other governance controlled settersβ
- Signature
// Sets the gasmax for Mangrove, the maximum amount of gas an offer can require to execute.
function setGasmax(uint gasmax) external;
// Sets a new governance address.
function setGovernance(address governanceAddress) external;
// Sets whether Mangrove notifies the Monitor when and offer is taken.
function setNotify(bool notify) external;
// Sets the maximum number of times a market order can recursively execute offers. This is a protection against stack overflows.
function setMaxRecursionDepth(uint maxRecursionDepth) external;
// Sets the maximum cumulative `gasreq` for failing offers during a market order before doing a partial fill.
function setMaxGasreqForFailingOffers(uint maxGasreqForFailingOffers) external;
// Kills the Mangrove instance. A dead instance cannot have offers executed or funds received, but offers can be retracted and funds can be withdrawn.
function kill() external;