Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Base network #7684

Merged
merged 1 commit into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ android {
resValue "string", "arbiscanApiKey", "Z43JN5434XVNA5D73UGPWKF26G5D9MGDPZ"
resValue "string", "gnosisscanApiKey", "V2J8YU15ZX9S1W3GTUV2HXM11TP2TUBRW4"
resValue "string", "ftmscanApiKey", "57YQ2GIRAZNV6M5HIJYYG3XQGGNIPVV8MF"
resValue "string", "basescanApiKey", "AKEWS351FN9P9E2CFPWRWQVGHYUP7W8SUF"
resValue "string", "is_release", "false"
resValue "string", "guidesUrl", "https://raw.githubusercontent.com/horizontalsystems/blockchain-crypto-guides/develop/index.json"
resValue "string", "faqUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/master/src/faq.json"
Expand Down Expand Up @@ -113,6 +114,7 @@ android {
resValue "string", "arbiscanApiKey", "4QWW522BV13BJCZMXH1JIB2ESJ7MZTSJYI"
resValue "string", "gnosisscanApiKey", "KEXFAQKDUENZ5U9CW3ZKYJEJ84ZIHH9QTY"
resValue "string", "ftmscanApiKey", "JAWRPW27KEMVXMJJ9UKY63CVPH3X5V9SMP"
resValue "string", "basescanApiKey", "QU4RJVJXQCW812J3234EW9EV815TA6XC55"
resValue "string", "is_release", "true"
resValue "string", "guidesUrl", "https://raw.githubusercontent.com/horizontalsystems/blockchain-crypto-guides/v1.2/index.json"
resValue "string", "faqUrl", "https://raw.githubusercontent.com/horizontalsystems/Unstoppable-Wallet-Website/v1.3/src/faq.json"
Expand Down Expand Up @@ -277,10 +279,10 @@ dependencies {
// Wallet kits
implementation 'com.github.horizontalsystems:ton-kit-android:e907480'
implementation 'com.github.horizontalsystems:bitcoin-kit-android:47db768'
implementation 'com.github.horizontalsystems:ethereum-kit-android:3d83900'
implementation 'com.github.horizontalsystems:ethereum-kit-android:a30cc3a71'
implementation 'com.github.horizontalsystems:blockchain-fee-rate-kit-android:1d3bd49'
implementation 'com.github.horizontalsystems:binance-chain-kit-android:c1509a2'
implementation 'com.github.horizontalsystems:market-kit-android:55dde9c'
implementation 'com.github.horizontalsystems:market-kit-android:5fe87c2'
implementation 'com.github.horizontalsystems:solana-kit-android:ce738d8'
implementation 'com.github.horizontalsystems:tron-kit-android:dc3dca7'
// Zcash SDK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ val Token.swappable: Boolean
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> true
Expand Down Expand Up @@ -149,6 +150,7 @@ val TokenQuery.isSupported: Boolean
BlockchainType.BinanceSmartChain,
BlockchainType.Polygon,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom,
Expand Down Expand Up @@ -184,6 +186,7 @@ val Blockchain.description: String
BlockchainType.Polygon -> "MATIC, ERC20 tokens"
BlockchainType.Avalanche -> "AVAX, ERC20 tokens"
BlockchainType.Optimism -> "L2 chain"
BlockchainType.Base -> "L2 chain"
BlockchainType.ArbitrumOne -> "L2 chain"
BlockchainType.Solana -> "SOL, SPL tokens"
BlockchainType.Gnosis -> "xDAI, ERC20 tokens"
Expand Down Expand Up @@ -218,6 +221,7 @@ private val blockchainOrderMap: Map<BlockchainType, Int> by lazy {
BlockchainType.Ton,
BlockchainType.Solana,
BlockchainType.Polygon,
BlockchainType.Base,
BlockchainType.Avalanche,
BlockchainType.Zcash,
BlockchainType.BitcoinCash,
Expand Down Expand Up @@ -246,6 +250,7 @@ val BlockchainType.tokenIconPlaceholder: Int
BlockchainType.Avalanche -> R.drawable.avalanche_erc20
BlockchainType.Polygon -> R.drawable.polygon_erc20
BlockchainType.Optimism -> R.drawable.optimism_erc20
BlockchainType.Base -> R.drawable.base_erc20
BlockchainType.ArbitrumOne -> R.drawable.arbitrum_erc20
BlockchainType.Gnosis -> R.drawable.gnosis_erc20
BlockchainType.Fantom -> R.drawable.fantom_erc20
Expand All @@ -269,6 +274,7 @@ val BlockchainType.title: String
BlockchainType.ArbitrumOne -> "ArbitrumOne"
BlockchainType.BinanceChain -> "BNB Beacon Coin"
BlockchainType.Optimism -> "Optimism"
BlockchainType.Base -> "Base"
BlockchainType.Solana -> "Solana"
BlockchainType.Gnosis -> "Gnosis"
BlockchainType.Fantom -> "Fantom"
Expand All @@ -294,6 +300,7 @@ val BlockchainType.brandColor: Color?
BlockchainType.Polygon -> Color(0xFF8247E5)
BlockchainType.Avalanche -> Color(0xFFD74F49)
BlockchainType.Optimism -> Color(0xFFEB3431)
BlockchainType.Base -> Color(0xFF2759F6)
BlockchainType.ArbitrumOne -> Color(0xFF96BEDC)
else -> null
}
Expand Down Expand Up @@ -329,6 +336,7 @@ fun BlockchainType.supports(accountType: AccountType): Boolean {
|| this == BlockchainType.Polygon
|| this == BlockchainType.Avalanche
|| this == BlockchainType.Optimism
|| this == BlockchainType.Base
|| this == BlockchainType.ArbitrumOne
|| this == BlockchainType.Gnosis
|| this == BlockchainType.Fantom
Expand All @@ -338,6 +346,7 @@ fun BlockchainType.supports(accountType: AccountType): Boolean {
|| this == BlockchainType.Polygon
|| this == BlockchainType.Avalanche
|| this == BlockchainType.Optimism
|| this == BlockchainType.Base
|| this == BlockchainType.ArbitrumOne
|| this == BlockchainType.Gnosis
|| this == BlockchainType.Fantom
Expand Down Expand Up @@ -572,6 +581,7 @@ val BlockchainType.Companion.supported: List<BlockchainType>
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ class AdapterFactory(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down Expand Up @@ -230,6 +231,7 @@ class AdapterFactory(
BlockchainType.BinanceSmartChain,
BlockchainType.Polygon,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne -> {
val evmKitManager = evmBlockchainManager.getEvmKitManager(blockchainType)
evmKitManager.unlink(wallet.account)
Expand All @@ -256,6 +258,7 @@ class AdapterFactory(
BlockchainType.BinanceSmartChain,
BlockchainType.Polygon,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne -> {
val evmKitManager = evmBlockchainManager.getEvmKitManager(blockchainType)
evmKitManager.unlink(transactionSource.account)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class EvmBlockchainManager(
BlockchainType.Polygon -> Chain.Polygon
BlockchainType.Avalanche -> Chain.Avalanche
BlockchainType.Optimism -> Chain.Optimism
BlockchainType.Base -> Chain.Base
BlockchainType.ArbitrumOne -> Chain.ArbitrumOne
BlockchainType.Gnosis -> Chain.Gnosis
BlockchainType.Fantom -> Chain.Fantom
Expand Down Expand Up @@ -80,6 +81,7 @@ class EvmBlockchainManager(
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.Base,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class EvmSyncSourceManager(
BlockchainType.ArbitrumOne -> TransactionSource.arbiscan(appConfigProvider.arbiscanApiKey)
BlockchainType.Gnosis -> TransactionSource.gnosis(appConfigProvider.gnosisscanApiKey)
BlockchainType.Fantom -> TransactionSource.fantom(appConfigProvider.ftmscanApiKey)
BlockchainType.Base -> TransactionSource.basescan(appConfigProvider.basescanApiKey)
else -> throw Exception("Non-supported EVM blockchain")
}
}
Expand Down Expand Up @@ -131,6 +132,33 @@ class EvmSyncSourceManager(
)
)

BlockchainType.Base -> listOf(
evmSyncSource(
blockchainType,
"Base",
RpcSource.baseRpcHttp(),
defaultTransactionSource(blockchainType)
),
evmSyncSource(
blockchainType,
"LlamaNodes",
RpcSource.Http(
listOf(URI("https://base.llamarpc.com")),
null
),
defaultTransactionSource(blockchainType)
),
evmSyncSource(
blockchainType,
"Omnia",
RpcSource.Http(
listOf(URI("https://endpoints.omniatech.io/v1/base/mainnet/public")),
null
),
defaultTransactionSource(blockchainType)
)
)

BlockchainType.ArbitrumOne -> listOf(
evmSyncSource(
blockchainType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class TransactionAdapterManager(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ class AppConfigProvider(localStorage: ILocalStorage) {
val ftmscanApiKey by lazy {
Translator.getString(R.string.ftmscanApiKey)
}
val basescanApiKey by lazy {
Translator.getString(R.string.basescanApiKey)
}
val guidesUrl by lazy {
Translator.getString(R.string.guidesUrl)
}
Expand Down Expand Up @@ -138,6 +141,7 @@ class AppConfigProvider(localStorage: ILocalStorage) {
BlockchainType.Polygon to "0x731352dcF66014156B1560B832B56069e7b38ab1",
BlockchainType.Avalanche to "0x731352dcF66014156B1560B832B56069e7b38ab1",
BlockchainType.Optimism to "0x731352dcF66014156B1560B832B56069e7b38ab1",
BlockchainType.Base to "0x731352dcF66014156B1560B832B56069e7b38ab1",
BlockchainType.ArbitrumOne to "0x731352dcF66014156B1560B832B56069e7b38ab1",
BlockchainType.Solana to "ELFQmFXqdS6C1zVqZifs7WAmLKovdEPbWSnqomhZoK3B",
BlockchainType.Gnosis to "0x731352dcF66014156B1560B832B56069e7b38ab1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ val BitcoinAddress.tokenType: TokenType
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Solana,
BlockchainType.Gnosis,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class AddressHandlerFactory(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down Expand Up @@ -92,6 +93,7 @@ class AddressHandlerFactory(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ object AddressInputModule {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down Expand Up @@ -83,6 +84,7 @@ object AddressInputModule {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class AddressHandlerUdn(
BlockchainType.BinanceChain,
BlockchainType.Polygon,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Avalanche,
BlockchainType.Gnosis,
BlockchainType.Fantom,
Expand Down Expand Up @@ -138,6 +139,7 @@ class AddressHandlerUdn(
BlockchainType.Avalanche -> "AVAX"
BlockchainType.Ethereum,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom -> "ERC20"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class AddTokenService(
BlockchainType.Fantom,
BlockchainType.ArbitrumOne,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Solana
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class BalanceViewItemFactory {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Solana,
BlockchainType.Gnosis,
BlockchainType.Fantom,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class MarketFiltersService(
BlockchainType.Unsupported("moonriver"),
BlockchainType.Unsupported("okex-chain"),
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Polygon,
BlockchainType.Unsupported("solana"),
BlockchainType.Unsupported("sora"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ abstract class BaseUniswapV3Provider(dexType: DexType) : EvmSwapProvider() {
BlockchainType.BinanceSmartChain,
BlockchainType.Polygon,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne -> uniswapV3Kit.etherToken(chain)
else -> throw Exception("Invalid coin for swap: $token")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ object OneInchProvider : EvmSwapProvider() {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ object UniswapV3Provider : BaseUniswapV3Provider(DexType.Uniswap) {
BlockchainType.ArbitrumOne,
// BlockchainType.Optimism,
BlockchainType.Polygon,
BlockchainType.BinanceSmartChain
BlockchainType.BinanceSmartChain,
BlockchainType.Base,
-> true
else -> false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ object SendTransactionServiceFactory {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom -> SendTransactionServiceEvm(blockchainType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ class SendFragment : BaseFragment() {
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.Gnosis,
BlockchainType.Fantom,
BlockchainType.ArbitrumOne -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,6 @@ data class TransactionInfoItem(
val BlockchainType.resendable: Boolean
get() =
when (this) {
BlockchainType.Optimism, BlockchainType.ArbitrumOne -> false
BlockchainType.Optimism, BlockchainType.Base, BlockchainType.ArbitrumOne -> false
else -> true
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class TransactionRecordRepository(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ data class TransactionViewItem(
BlockchainType.Polygon -> R.drawable.logo_chain_polygon_trx_24
BlockchainType.Avalanche -> R.drawable.logo_chain_avalanche_trx_24
BlockchainType.Optimism -> R.drawable.logo_chain_optimism_trx_24
BlockchainType.Base -> R.drawable.logo_chain_base_trx_24
BlockchainType.ArbitrumOne -> R.drawable.logo_chain_arbitrum_one_trx_24
BlockchainType.Gnosis -> R.drawable.logo_chain_gnosis_trx_32
BlockchainType.Fantom -> R.drawable.logo_chain_fantom_trx_32
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ class WatchAddressViewModel(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne,
BlockchainType.Gnosis,
BlockchainType.Fantom -> Type.EvmAddress
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,7 @@ private fun openTransactionOptionsModule(
BlockchainType.Polygon,
BlockchainType.Avalanche,
BlockchainType.Optimism,
BlockchainType.Base,
BlockchainType.ArbitrumOne -> {
navController.slideFromRight(
R.id.transactionSpeedUpCancelFragment,
Expand Down
Loading
Loading