Exchanger¶
Description¶
Performs all the heavy lifting internally of exchange
and settle
functionality.
Source: contracts/Exchanger.sol
Architecture¶
Related Contracts¶
Variables¶
CONTRACT_NAME
¶
Type: bytes32
Constructor¶
constructor
¶
Details
Signature
constructor(address _owner, address _resolver)
Visibility
public
State Mutability
``
Views¶
calculateAmountAfterSettlement
¶
Details
Signature
calculateAmountAfterSettlement(address from, bytes32 currencyKey, uint256 amount, uint256 refunded) view returns (uint256 amountAfterSettlement)
Visibility
public
State Mutability
view
dynamicFeeRateForExchange
¶
Details
Signature
dynamicFeeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) view returns (uint256 feeRate, bool tooVolatile)
Visibility
external
State Mutability
view
feeRateForExchange
¶
Determine the effective fee rate for the exchange, taking into considering swing trading.
Details
Signature
feeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) view returns (uint256)
Visibility
external
State Mutability
view
Requires
getAmountsForExchange
¶
Details
Signature
getAmountsForExchange(uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) view returns (uint256 amountReceived, uint256 fee, uint256 exchangeFeeRate)
Visibility
external
State Mutability
view
Requires
hasWaitingPeriodOrSettlementOwing
¶
Details
Signature
hasWaitingPeriodOrSettlementOwing(address account, bytes32 currencyKey) view returns (bool)
Visibility
external
State Mutability
view
isSynthRateInvalid
¶
Details
Signature
isSynthRateInvalid(bytes32 currencyKey) view returns (bool)
Visibility
external
State Mutability
view
lastExchangeRate
¶
Type: mapping(bytes32 => uint256)
Details
Signature
lastExchangeRate(bytes32 currencyKey) view returns (uint256)
Visibility
external
State Mutability
view
maxSecsLeftInWaitingPeriod
¶
Returns the maximum number of seconds remaining in the waiting period for all exchanges into the given synth (currencyKey
) by the account.
This number must be 0
in order for settle()
to succeed.
Details
Signature
maxSecsLeftInWaitingPeriod(address account, bytes32 currencyKey) view returns (uint256)
Visibility
public
State Mutability
view
priceDeviationThresholdFactor
¶
Type: uint256
Details
Signature
priceDeviationThresholdFactor() view returns (uint256)
Visibility
external
State Mutability
view
resolverAddressesRequired
¶
Details
Signature
resolverAddressesRequired() view returns (bytes32[] addresses)
Visibility
public
State Mutability
view
settlementOwing
¶
Returns the total amount to be reclaimed or rebated for the given account and synth (currencyKey
). Note: this function can be called at any time, even while the waiting period has not expired.
Details
Signature
settlementOwing(address account, bytes32 currencyKey) view returns (uint256 reclaimAmount, uint256 rebateAmount, uint256 numEntries)
Visibility
public
State Mutability
view
tradingRewardsEnabled
¶
Details
Signature
tradingRewardsEnabled() view returns (bool)
Visibility
external
State Mutability
view
waitingPeriodSecs
¶
Type: uint256
Details
Signature
waitingPeriodSecs() view returns (uint256)
Visibility
external
State Mutability
view
Restricted Functions¶
exchange
¶
Details
Signature
exchange(address exchangeForAddress, address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, bool virtualSynth, address rewardAddress, bytes32 trackingCode) returns (uint256 amountReceived, contract IVirtualSynth vSynth)
Visibility
external
State Mutability
``
Modifiers
Internal Functions¶
_convert
¶
Details
Signature
_convert(bytes32 sourceCurrencyKey, address from, uint256 sourceAmountAfterSettlement, bytes32 destinationCurrencyKey, uint256 amountReceived, address recipient, bool virtualSynth) returns (contract IVirtualSynth vSynth)
Visibility
internal
State Mutability
``
_createVirtualSynth
¶
Details
Signature
_createVirtualSynth(contract IERC20, address, uint256, bytes32) returns (contract IVirtualSynth)
Visibility
internal
State Mutability
``
_dynamicFeeCalculation
¶
Details
Signature
_dynamicFeeCalculation(uint256[] prices, uint256 threshold, uint256 weightDecay) pure returns (uint256)
Visibility
internal
State Mutability
pure
_dynamicFeeRateForCurrency
¶
Details
Signature
_dynamicFeeRateForCurrency(struct IDirectIntegrationManager.ParameterIntegrationSettings settings) view returns (uint256 dynamicFee, bool tooVolatile)
Visibility
internal
State Mutability
view
_dynamicFeeRateForCurrencyRound
¶
Details
Signature
_dynamicFeeRateForCurrencyRound(struct IDirectIntegrationManager.ParameterIntegrationSettings settings, uint256 roundId) view returns (uint256 dynamicFee, bool tooVolatile)
Visibility
internal
State Mutability
view
_dynamicFeeRateForExchange
¶
Details
Signature
_dynamicFeeRateForExchange(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings) view returns (uint256 dynamicFee, bool tooVolatile)
Visibility
internal
State Mutability
view
_dynamicFeeRateForExchangeAtRounds
¶
Details
Signature
_dynamicFeeRateForExchangeAtRounds(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings, uint256 roundIdForSrc, uint256 roundIdForDest) view returns (uint256 dynamicFee, bool tooVolatile)
Visibility
internal
State Mutability
view
_emitTrackingEvent
¶
Details
Signature
_emitTrackingEvent(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount, uint256 fee)
Visibility
internal
State Mutability
``
_ensureCanExchange
¶
Details
Signature
_ensureCanExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey, uint256 sourceAmount) returns (bool)
Visibility
internal
State Mutability
``
Requires
_ensureCanExchangeAtRound
¶
Details
Signature
_ensureCanExchangeAtRound(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey, uint256 roundIdForSrc, uint256 roundIdForDest) view
Visibility
internal
State Mutability
view
Requires
_exchange
¶
Details
Signature
_exchange(address from, struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, uint256 sourceAmount, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings, address destinationAddress, bool virtualSynth) returns (uint256 amountReceived, uint256 fee, contract IVirtualSynth vSynth)
Visibility
internal
State Mutability
``
_exchangeSettings
¶
Details
Signature
_exchangeSettings(address from, bytes32 currencyKey) view returns (struct IDirectIntegrationManager.ParameterIntegrationSettings settings)
Visibility
internal
State Mutability
view
_feeRateForExchange
¶
Details
Signature
_feeRateForExchange(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings) view returns (uint256 feeRate, bool tooVolatile)
Visibility
internal
State Mutability
view
_feeRateForExchangeAtRounds
¶
Details
Signature
_feeRateForExchangeAtRounds(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings, uint256 roundIdForSrc, uint256 roundIdForDest) view returns (uint256 feeRate, bool tooVolatile)
Visibility
internal
State Mutability
view
_notImplemented
¶
Details
Signature
_notImplemented() pure
Visibility
internal
State Mutability
pure
_processTradingRewards
¶
Details
Signature
_processTradingRewards(uint256 fee, address rewardAddress)
Visibility
internal
State Mutability
``
_settleAndCalcSourceAmountRemaining
¶
Details
Signature
_settleAndCalcSourceAmountRemaining(uint256 sourceAmount, address from, bytes32 sourceCurrencyKey) returns (uint256 sourceAmountAfterSettlement)
Visibility
internal
State Mutability
``
_thresholdedAbsDeviationRatio
¶
Details
Signature
_thresholdedAbsDeviationRatio(uint256 price, uint256 previousPrice, uint256 threshold) pure returns (uint256)
Visibility
internal
State Mutability
pure
_updateSNXIssuedDebtOnExchange
¶
Details
Signature
_updateSNXIssuedDebtOnExchange(bytes32[2] currencyKeys, uint256[2] currencyRates)
Visibility
internal
State Mutability
``
circuitBreaker
¶
Details
Signature
circuitBreaker() view returns (contract ICircuitBreaker)
Visibility
internal
State Mutability
view
debtCache
¶
Details
Signature
debtCache() view returns (contract IExchangerInternalDebtCache)
Visibility
internal
State Mutability
view
delegateApprovals
¶
Details
Signature
delegateApprovals() view returns (contract IDelegateApprovals)
Visibility
internal
State Mutability
view
directIntegrationManager
¶
Details
Signature
directIntegrationManager() view returns (contract IDirectIntegrationManager)
Visibility
internal
State Mutability
view
exchangeRates
¶
Details
Signature
exchangeRates() view returns (contract IExchangeRates)
Visibility
internal
State Mutability
view
exchangeState
¶
Details
Signature
exchangeState() view returns (contract IExchangeState)
Visibility
internal
State Mutability
view
feePool
¶
Details
Signature
feePool() view returns (contract IFeePool)
Visibility
internal
State Mutability
view
issuer
¶
Details
Signature
issuer() view returns (contract IIssuer)
Visibility
internal
State Mutability
view
resolvedAddresses
¶
Details
Signature
resolvedAddresses() view returns (struct ExchangeSettlementLib.ResolvedAddresses)
Visibility
internal
State Mutability
view
synthetix
¶
Details
Signature
synthetix() view returns (contract ISynthetix)
Visibility
internal
State Mutability
view
systemStatus
¶
Details
Signature
systemStatus() view returns (contract ISystemStatus)
Visibility
internal
State Mutability
view
tradingRewards
¶
Details
Signature
tradingRewards() view returns (contract ITradingRewards)
Visibility
internal
State Mutability
view
External Functions¶
exchangeAtomically
¶
Details
Signature
exchangeAtomically(address, bytes32, uint256, bytes32, address, bytes32, uint256) returns (uint256)
Visibility
external
State Mutability
``
settle
¶
Settle processes all exchanges into the given synth, calculating any reclaimed
or refunded
amounts via settlementOwing
and burning any reclaim and issuing any refund. This function may be called by anyone - the msg.sender
is irrelevant.
Details
Signature
settle(address from, bytes32 currencyKey) returns (uint256 reclaimed, uint256 refunded, uint256 numEntriesSettled)
Visibility
external
State Mutability
``
Modifiers¶
onlySynthetixorSynth
¶
Events¶
ExchangeEntryAppended
¶
Signature: ExchangeEntryAppended(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate, uint256 roundIdForSrc, uint256 roundIdForDest)
ExchangeEntrySettled
¶
Signature: ExchangeEntrySettled(address from, bytes32 src, uint256 amount, bytes32 dest, uint256 reclaim, uint256 rebate, uint256 srcRoundIdAtPeriodEnd, uint256 destRoundIdAtPeriodEnd, uint256 exchangeTimestamp)