For all other pairs of token <> ETH, on-chain oracles from Kyber are used.
In case no price can be fetched from Kyber, we check Uniswap V2, Sushiswap, Uniswap V1, in that order.
In case the above checks fail, there is a custom implementation to used to get prices specifically for LP tokens from Uniswap V2 pools, Balancer, Mooniswap and Curve as well as Yearn vault tokens.
In case still no fiat price could be found, the Coingecko is queried. If that fails as well, the asset won't have a fiat price on the Safe interface.
Ethereum Testnet (Rinkeby)
The ETH <> USD price is fetched from Kraken just like for mainnet.
Uniswap and Kyber on Rinkeby are used in a similar fashion like on mainnet.
Please note that Uniswap and Kyber have no real liquidity on Rinkeby, hence the final fiat value of assets can be very volatile.
Currently, only the native token (xDai) has a fiat value. The Kraken DAI <> USD oracle is used for this one. If this request fails, we fall back to 1 DAI = 1 USD.