Skip to content

Exchanger

Description

Performs all the heavy lifting internally of exchange and settle functionality.

Source: contracts/Exchanger.sol

Architecture

Exchanger architture graph

Variables

CONTRACT_NAME

Source

Type: bytes32

Constructor

constructor

Source

Details

Signature

constructor(address _owner, address _resolver)

Visibility

public

State Mutability

``

Views

calculateAmountAfterSettlement

Source

Details

Signature

calculateAmountAfterSettlement(address from, bytes32 currencyKey, uint256 amount, uint256 refunded) view returns (uint256 amountAfterSettlement)

Visibility

public

State Mutability

view

dynamicFeeRateForExchange

Source

Details

Signature

dynamicFeeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) view returns (uint256 feeRate, bool tooVolatile)

Visibility

external

State Mutability

view

feeRateForExchange

Source

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

Source

Details

Signature

getAmountsForExchange(uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) view returns (uint256 amountReceived, uint256 fee, uint256 exchangeFeeRate)

Visibility

external

State Mutability

view

Requires

hasWaitingPeriodOrSettlementOwing

Source

Details

Signature

hasWaitingPeriodOrSettlementOwing(address account, bytes32 currencyKey) view returns (bool)

Visibility

external

State Mutability

view

isSynthRateInvalid

Source

Details

Signature

isSynthRateInvalid(bytes32 currencyKey) view returns (bool)

Visibility

external

State Mutability

view

lastExchangeRate

Source

Type: mapping(bytes32 => uint256)

Details

Signature

lastExchangeRate(bytes32 currencyKey) view returns (uint256)

Visibility

external

State Mutability

view

maxSecsLeftInWaitingPeriod

Source

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

Source

Type: uint256

Details

Signature

priceDeviationThresholdFactor() view returns (uint256)

Visibility

external

State Mutability

view

resolverAddressesRequired

Source

Details

Signature

resolverAddressesRequired() view returns (bytes32[] addresses)

Visibility

public

State Mutability

view

settlementOwing

Source

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

Source

Details

Signature

tradingRewardsEnabled() view returns (bool)

Visibility

external

State Mutability

view

waitingPeriodSecs

Source

Type: uint256

Details

Signature

waitingPeriodSecs() view returns (uint256)

Visibility

external

State Mutability

view

Restricted Functions

exchange

Source

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

Source

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

Source

Details

Signature

_createVirtualSynth(contract IERC20, address, uint256, bytes32) returns (contract IVirtualSynth)

Visibility

internal

State Mutability

``

_dynamicFeeCalculation

Source

Details

Signature

_dynamicFeeCalculation(uint256[] prices, uint256 threshold, uint256 weightDecay) pure returns (uint256)

Visibility

internal

State Mutability

pure

_dynamicFeeRateForCurrency

Source

Details

Signature

_dynamicFeeRateForCurrency(struct IDirectIntegrationManager.ParameterIntegrationSettings settings) view returns (uint256 dynamicFee, bool tooVolatile)

Visibility

internal

State Mutability

view

_dynamicFeeRateForCurrencyRound

Source

Details

Signature

_dynamicFeeRateForCurrencyRound(struct IDirectIntegrationManager.ParameterIntegrationSettings settings, uint256 roundId) view returns (uint256 dynamicFee, bool tooVolatile)

Visibility

internal

State Mutability

view

_dynamicFeeRateForExchange

Source

Details

Signature

_dynamicFeeRateForExchange(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings) view returns (uint256 dynamicFee, bool tooVolatile)

Visibility

internal

State Mutability

view

_dynamicFeeRateForExchangeAtRounds

Source

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

Source

Details

Signature

_emitTrackingEvent(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount, uint256 fee)

Visibility

internal

State Mutability

``

_ensureCanExchange

Source

Details

Signature

_ensureCanExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey, uint256 sourceAmount) returns (bool)

Visibility

internal

State Mutability

``

Requires

_ensureCanExchangeAtRound

Source

Details

Signature

_ensureCanExchangeAtRound(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey, uint256 roundIdForSrc, uint256 roundIdForDest) view

Visibility

internal

State Mutability

view

Requires

_exchange

Source

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

Source

Details

Signature

_exchangeSettings(address from, bytes32 currencyKey) view returns (struct IDirectIntegrationManager.ParameterIntegrationSettings settings)

Visibility

internal

State Mutability

view

_feeRateForExchange

Source

Details

Signature

_feeRateForExchange(struct IDirectIntegrationManager.ParameterIntegrationSettings sourceSettings, struct IDirectIntegrationManager.ParameterIntegrationSettings destinationSettings) view returns (uint256 feeRate, bool tooVolatile)

Visibility

internal

State Mutability

view

_feeRateForExchangeAtRounds

Source

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

Source

Details

Signature

_notImplemented() pure

Visibility

internal

State Mutability

pure

_processTradingRewards

Source

Details

Signature

_processTradingRewards(uint256 fee, address rewardAddress)

Visibility

internal

State Mutability

``

_settleAndCalcSourceAmountRemaining

Source

Details

Signature

_settleAndCalcSourceAmountRemaining(uint256 sourceAmount, address from, bytes32 sourceCurrencyKey) returns (uint256 sourceAmountAfterSettlement)

Visibility

internal

State Mutability

``

_thresholdedAbsDeviationRatio

Source

Details

Signature

_thresholdedAbsDeviationRatio(uint256 price, uint256 previousPrice, uint256 threshold) pure returns (uint256)

Visibility

internal

State Mutability

pure

_updateSNXIssuedDebtOnExchange

Source

Details

Signature

_updateSNXIssuedDebtOnExchange(bytes32[2] currencyKeys, uint256[2] currencyRates)

Visibility

internal

State Mutability

``

circuitBreaker

Source

Details

Signature

circuitBreaker() view returns (contract ICircuitBreaker)

Visibility

internal

State Mutability

view

debtCache

Source

Details

Signature

debtCache() view returns (contract IExchangerInternalDebtCache)

Visibility

internal

State Mutability

view

delegateApprovals

Source

Details

Signature

delegateApprovals() view returns (contract IDelegateApprovals)

Visibility

internal

State Mutability

view

directIntegrationManager

Source

Details

Signature

directIntegrationManager() view returns (contract IDirectIntegrationManager)

Visibility

internal

State Mutability

view

exchangeRates

Source

Details

Signature

exchangeRates() view returns (contract IExchangeRates)

Visibility

internal

State Mutability

view

exchangeState

Source

Details

Signature

exchangeState() view returns (contract IExchangeState)

Visibility

internal

State Mutability

view

feePool

Source

Details

Signature

feePool() view returns (contract IFeePool)

Visibility

internal

State Mutability

view

issuer

Source

Details

Signature

issuer() view returns (contract IIssuer)

Visibility

internal

State Mutability

view

resolvedAddresses

Source

Details

Signature

resolvedAddresses() view returns (struct ExchangeSettlementLib.ResolvedAddresses)

Visibility

internal

State Mutability

view

synthetix

Source

Details

Signature

synthetix() view returns (contract ISynthetix)

Visibility

internal

State Mutability

view

systemStatus

Source

Details

Signature

systemStatus() view returns (contract ISystemStatus)

Visibility

internal

State Mutability

view

tradingRewards

Source

Details

Signature

tradingRewards() view returns (contract ITradingRewards)

Visibility

internal

State Mutability

view

External Functions

exchangeAtomically

Source

Details

Signature

exchangeAtomically(address, bytes32, uint256, bytes32, address, bytes32, uint256) returns (uint256)

Visibility

external

State Mutability

``

settle

Source

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

Source

Events

ExchangeEntryAppended

Source

Signature: ExchangeEntryAppended(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate, uint256 roundIdForSrc, uint256 roundIdForDest)

ExchangeEntrySettled

Source

Signature: ExchangeEntrySettled(address from, bytes32 src, uint256 amount, bytes32 dest, uint256 reclaim, uint256 rebate, uint256 srcRoundIdAtPeriodEnd, uint256 destRoundIdAtPeriodEnd, uint256 exchangeTimestamp)