diff --git a/README.md b/README.md index f830993e1..d6e840ea5 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,6 @@ This repository contains a collection of Android apps built on top of [IPv8](htt ## Apps -### TrustChain Explorer - -**TrustChain Explorer** allows to browse the TrustChain blocks stored locally on the device and crawl chains of other connected peers. It also demonstrates how to interact with `TrustChainCommunity`. It defines its own `DemoCommunity` to ensure that all users using the app are able to discover each other easily. The content of the app is split into several tabs: - -- **Peers:** A list of discovered peers in `DemoCommunity`. For each peer, there is a time since the last sent and received message, and an average ping latency. After clicking on the peer item, a list of mutual blocks in TrustChain is shown. It is possible to create and send a new proposal block by clicking on the plus icon. A crawl request send be sent by clicking on the refresh button. -- **Chains:** A list of discovered chains in `TrustChainCommunity`, ordered by their length. After clicking on the item, the list of stored blocks is shown. -- **All Blocks:** A stream of all received blocks, updated in real-time as new blocks are received from the network. -- **My Chain:** A list of blocks in which the current user is participating either as a sender or a receiver. It is possible to create a new self-signed block by clicking on the plus icon. It is posible to sign received blocks if they are not defined to be signed automatically. - - - ### PeerChat PeerChat implements a fully functional prototype of a distributed messaging app. First, the users have to exchange the public keys by scanning each other's QR code, or by copy-pasting the hexadecimal public keys. This guarantees authenticity of all messages which are signed by their author. It prevents man-in-the-middle and impersonation attacks. @@ -25,9 +14,6 @@ An online indicator and the last message is shown for each contact. Users can ex -### DeToks -**Decentralised TikTok** skeleton app for the CS4160 Blockchain Engineering (2022/23) course. - ### Digital Euro The Superapp is connected to the European IBAN Euro system. @@ -67,36 +53,6 @@ Zooming into the actual mechanism of QR-Codes (Creative Commons CC0 license - sh -### AI trading bot -The AI trading bot is a zero-server AI, which ultimately can understand markets, limit orderbooks, bid/ask pairs and global stock patterns using only smartphones for computing power and connection. -Built on top of Trustchain, the app provides a small decentralized market for trading, providing safe and verifiable transaction for any arbitrary change of goods. - -**AI trading bot** consist of two parts. -1. An AI trading bot using a Naive Bayes Classifier which buys or sells Bitcoins in a decentralized market. -2. Sending and receiving money to and from other peers. - -**Trading** -The AI trading bot app is visible upon opening the superapp. It receives bids and asks from other peers that want to buy or sell Bitcoins for Dymbe Dollars. -Upon receiving a bid or ask, it decides to either execute the offer or not. -The bot can be toggled on and off using the toggle on the home screen. - -**Send/Receive** -In the sending/receiving money tab one can send money to, or receive money from a different peer. -There are two ways to find a public key: -1. The receiving peer presses the send/receive toggle. His public key will be shown as a QR-code. Now pressing the "scan" button on the sender's device allows you can scan the QR code of the receiver. -2. As a sender, go to the "Peers" fragment in the app, and press the public key of the receiver. - -
-[More about AI trading bot](trustchain-trader/readme.md) - -### Market Bot - -The market bot app can generate bids and asks which are received by the peers in the market community. -The bid and asks can either be generated automatically or manually. Those bids and asks will be sent as IPv8 messages. - -
-[More about Market Bot](trustchain-payloadgenerator/readme.md) - ### Luxury Socialism {_recent events have turned this into_ **really bad naming**} We build a DAO for a better world. Luxury socialism is an Android application built on top of [IPv8](https://github.com/Tribler/kotlin-ipv8) and [Trustchain](https://github.com/Tribler/kotlin-ipv8/blob/master/doc/TrustChainCommunity.md), and is integrated into the [Trustchain Superapp](https://github.com/Tribler/trustchain-superapp). It is a proof-of-concept implementation of a DAO system using Trustchain and Bitcoin. Trustchain is used for communication and bookkeeping while the Bitcoin blockchain is used to have collective multi-signature wallets for each DAO. The content of the app is split up in several tabs: * **First Time Launch**: The first time the app is launched, the user must setup his bitcoin wallet. Afterwhich the chain will sync and he is routed to the main screens. @@ -123,14 +79,6 @@ https://user-images.githubusercontent.com/23526224/116259903-85efd900-a776-11eb- [More about Luxury Socialism](currencyii/README.md) -### TrustChain Voter -The TrustChain Voter can be used to create a proposal on which the community can vote. The functionality has been split up in two parts: a Voting API, which provides the core voting functionality, and a TrustChain Voter submodule, which serves to demonstrate the capabilities of the voting API. Below, the process of creating a proposal (left) and casting a vote (right) can be seen. - -- [More about the Voting API](common/README.md#votinghelper) -- [More about the TrustChain Voter submodule](trustchain-voter/README.md) - - - ### Freedom-of-Computing App Freedom-of-Computing provides users with the ability to freely distribute and execute code in the form of APK applications on the trustchain superapp. In order to facilitate the sharing of applications, Freedom-of-Computing contains a gossiping mechanism which periodically shares local applications to other users and downloads unseen applications from other users. This sharing is conducted through a torrent peer-to-peer (P2P) network and uses the EVA Protocol as a fallback. Once the application has been downloaded by the users, they can dynamically load and execute it. The application, apart from being an .APK file, needs to have a specific format for the execution to work, the requirements/constraints are listed inside [the documentation](freedomOfComputing/README.md). @@ -141,13 +89,6 @@ The left demo shows the upload procedure, while the right demo shows the downloa [More about Freedom-of-Computing App](freedomOfComputing/README.md) -### Distributed AI app -The distributed AI app is a proof-of-concept of distributed, server less, machine learning. - -- [More about the Distributed AI app](distributedai/docs/README.md) - - - ### MusicDAO In short, the MusicDAO is an IPv8 app where users can share and discover tracks on the trustchain. Track streaming, downloading, and seeking interactions are done using JLibtorrent. @@ -172,31 +113,6 @@ Every time a user opens MusicDAO, they are asked to reload the page in order to The feature-based models are gossiped along random walks through the network. At each peer they are merged and re-trained on peer's local data. The matrix factorization model seeks to learn a factorization of the user-song matrix. This means that one of the two factors contains only information on how users generally rate each song. This matrix can then be gossiped around the network while a user's personal vector as well as their listening history are kept private. - [More about federated machine learning using gossiping for music recommendations](gossipML/README.md) -### Atomic Swap - -AtomicSwap app allows two users to exchange different cryptocurrencies without the involvement of a third party and without having to trust each other. This is achieved by implementing the Atomic Swap protocol. - -User can create trade offers by sending Ipv8 messages indicating that they wish to trade to the Swap community. Others can then accept the offer by sending another Ipv8 message. The swap procedure starts when the initiator receives an accept message for their trade offer. - -Below is a video demo that shows the steps to do an atomic swap. - -Alternate Text - -[More about The Atomic Swap app](atomic-swap/README.md) - -### Literature Dao - -LiteratureDao app aims to be a decentralized scientific literature repository, proving: -Sharing, storing, and searching of scientific publications through the p2p ipv8 network. - -![local_upload](https://user-images.githubusercontent.com/33283063/167591620-a9547f63-e778-4ea9-a594-a7d1d9a4f169.gif) -![peers](https://user-images.githubusercontent.com/33283063/167591634-6e0b8aaf-11c8-4ee7-b36d-616255fa5347.PNG) -![search_in_keywords](https://user-images.githubusercontent.com/33283063/167591635-a68c0d2c-16de-4a44-ba73-fc52688252eb.gif) -![url_upload](https://user-images.githubusercontent.com/33283063/167591643-75a305ae-2098-4138-9f60-14818f63000e.gif) - - -[More about literature dao app](literaturedao/README.md) - ### Do you want to add your own app? - [Adding your own app to the TrustChain Super App](doc/AppTutorial.md) diff --git a/app/build.gradle b/app/build.gradle index b60ec42e3..c69939a44 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -111,21 +111,12 @@ allprojects { } dependencies { - implementation project(':trustchain-voter') - implementation project(':trustchain-explorer') - implementation project(':trustchain-trader') - implementation project(':trustchain-payloadgenerator') implementation project(':debug') - implementation project(':distributedai') implementation project(':freedomOfComputing') implementation project(':peerchat') implementation project(':eurotoken') implementation project(':ig-ssi') - implementation project(':liquidity-pool') implementation project(':valuetransfer') - implementation project(':atomic-swap') - implementation project(':literaturedao') - implementation project(':detoks') api(project(':common')) { exclude group: 'net.java.dev.jna' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 21c59701f..71798a343 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,10 +60,6 @@ android:name=".ui.dashboard.DashboardSelectorActivity" android:parentActivityName=".ui.dashboard.DashboardActivity" /> - - - - - - - - @@ -110,23 +94,6 @@ android:parentActivityName=".ui.dashboard.DashboardActivity" tools:ignore="InnerclassSeparator" /> - - - - - - - - - - - - - - - @@ -186,11 +139,6 @@ android:enabled="true" android:exported="false" /> - - diff --git a/app/src/main/java/nl/tudelft/trustchain/app/AppDefinition.kt b/app/src/main/java/nl/tudelft/trustchain/app/AppDefinition.kt index 1942e953c..9e0af2248 100644 --- a/app/src/main/java/nl/tudelft/trustchain/app/AppDefinition.kt +++ b/app/src/main/java/nl/tudelft/trustchain/app/AppDefinition.kt @@ -5,22 +5,13 @@ import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import nl.tudelft.trustchain.musicdao.MusicActivity import nl.tudelft.trustchain.FOC.MainActivityFOC -import nl.tudelft.trustchain.atomicswap.AtomicSwapActivity import nl.tudelft.trustchain.common.R -import nl.tudelft.trustchain.explorer.ui.TrustChainExplorerActivity import nl.tudelft.trustchain.currencyii.CurrencyIIMainActivity import nl.tudelft.trustchain.debug.DebugActivity -import nl.tudelft.trustchain.distributedAI.DistributedActivity import nl.tudelft.trustchain.eurotoken.EuroTokenMainActivity import nl.tudelft.trustchain.ssi.SSIMainActivity -import nl.tudelft.trustchain.liquidity.LiquidityPoolMainActivity -import nl.tudelft.trustchain.literaturedao.LiteratureDaoActivity -import nl.tudelft.trustchain.payloadgenerator.ui.TrustChainPayloadGeneratorActivity import nl.tudelft.trustchain.peerchat.PeerChatActivity -import nl.tudelft.trustchain.trader.ui.TrustChainTraderActivity import nl.tudelft.trustchain.valuetransfer.ValueTransferMainActivity -import nl.tudelft.trustchain.voting.VotingActivity -import nl.tudelft.trustchain.detoks.DeToksActivity enum class AppDefinition( @DrawableRes val icon: Int, @@ -29,13 +20,6 @@ enum class AppDefinition( val activity: Class, val disableImageTint: Boolean = false, ) { - DETOKS( - R.drawable.ic_detox_logo, - "DeToks", - R.color.black, - DeToksActivity::class.java, - true, - ), EIGHTEEN_PLUS( R.drawable.ic_18_plus, "18+", @@ -49,12 +33,6 @@ enum class AppDefinition( R.color.purple, PeerChatActivity::class.java ), - TRUSTCHAIN_EXPLORER( - R.drawable.ic_device_hub_black_24dp, - "TrustChain Explorer", - R.color.red, - TrustChainExplorerActivity::class.java - ), DEBUG( R.drawable.ic_bug_report_black_24dp, "Debug", @@ -67,36 +45,12 @@ enum class AppDefinition( R.color.metallic_gold, CurrencyIIMainActivity::class.java ), - TRUSTCHAIN_TRADER( - R.drawable.ic_device_hub_black_24dp, - "AI trading bot", - R.color.blue, - TrustChainTraderActivity::class.java - ), - TRUSTCHAIN_PAYLOADGENERATOR( - R.drawable.ic_add_black_24dp, - "Market Bot", - R.color.black, - TrustChainPayloadGeneratorActivity::class.java - ), FREEDOM_OF_COMPUTING( R.drawable.ic_naruto, "Freedom of Computing", R.color.blue, MainActivityFOC::class.java ), - DNA( - R.drawable.ic_bug_report_black_24dp, - "Distributed AI", - R.color.red, - DistributedActivity::class.java - ), - VOTING( - R.drawable.abc_ic_voice_search_api_material, - "Voter", - R.color.android_green, - VotingActivity::class.java - ), MUSIC_DAO( android.R.drawable.ic_media_play, "MusicDAO", @@ -109,12 +63,6 @@ enum class AppDefinition( R.color.metallic_gold, EuroTokenMainActivity::class.java ), - LIQUIDITY( - R.drawable.ic_pool, - "Liquidity Pool", - R.color.blue, - LiquidityPoolMainActivity::class.java - ), VALUETRANSFER( R.drawable.ic_idelft_logo, "IDelft", @@ -122,16 +70,4 @@ enum class AppDefinition( ValueTransferMainActivity::class.java, true, ), - ATOMIC_SWAP( - R.drawable.ic_atomic_swap_24dp, - "Atomic Swap", - R.color.blue, - AtomicSwapActivity::class.java - ), - LITERATUREDAO( - R.drawable.ic_book_hover_over_hand, - "LiteratureDao", - R.color.green, - LiteratureDaoActivity::class.java - ), } diff --git a/app/src/main/java/nl/tudelft/trustchain/app/AppLoader.kt b/app/src/main/java/nl/tudelft/trustchain/app/AppLoader.kt index b32703fcf..06003aa11 100644 --- a/app/src/main/java/nl/tudelft/trustchain/app/AppLoader.kt +++ b/app/src/main/java/nl/tudelft/trustchain/app/AppLoader.kt @@ -72,7 +72,6 @@ class AppLoader( companion object { val PREFERRED_APPS = stringSetPreferencesKey("preferred_apps") val DEFAULT_APPS = setOf( - AppDefinition.DETOKS.appName, AppDefinition.VALUETRANSFER.appName, AppDefinition.MUSIC_DAO.appName, AppDefinition.EIGHTEEN_PLUS.appName diff --git a/app/src/main/java/nl/tudelft/trustchain/app/TrustChainApplication.kt b/app/src/main/java/nl/tudelft/trustchain/app/TrustChainApplication.kt index a36465999..fb0efaa8d 100644 --- a/app/src/main/java/nl/tudelft/trustchain/app/TrustChainApplication.kt +++ b/app/src/main/java/nl/tudelft/trustchain/app/TrustChainApplication.kt @@ -6,6 +6,7 @@ import android.bluetooth.BluetoothManager import android.content.Context import android.os.Build import android.util.Log +import androidx.annotation.RequiresApi import androidx.core.content.getSystemService import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences @@ -53,26 +54,20 @@ import nl.tudelft.ipv8.util.hexToBytes import nl.tudelft.ipv8.util.toHex import nl.tudelft.trustchain.FOC.community.FOCCommunity import nl.tudelft.trustchain.app.service.TrustChainService -import nl.tudelft.trustchain.atomicswap.AtomicSwapCommunity -import nl.tudelft.trustchain.atomicswap.AtomicSwapTrustchainConstants -import nl.tudelft.trustchain.atomicswap.ui.swap.LOG import nl.tudelft.trustchain.common.DemoCommunity import nl.tudelft.trustchain.common.MarketCommunity import nl.tudelft.trustchain.common.bitcoin.WalletService import nl.tudelft.trustchain.common.eurotoken.GatewayStore import nl.tudelft.trustchain.common.eurotoken.TransactionRepository import nl.tudelft.trustchain.currencyii.CoinCommunity -import nl.tudelft.trustchain.detoks.DeToksCommunity import nl.tudelft.trustchain.eurotoken.community.EuroTokenCommunity import nl.tudelft.trustchain.eurotoken.db.TrustStore import nl.tudelft.trustchain.gossipML.RecommenderCommunity import nl.tudelft.trustchain.gossipML.db.RecommenderStore -import nl.tudelft.trustchain.literaturedao.ipv8.LiteratureCommunity import nl.tudelft.trustchain.peerchat.community.PeerChatCommunity import nl.tudelft.trustchain.peerchat.db.PeerChatStore import nl.tudelft.trustchain.valuetransfer.community.IdentityCommunity import nl.tudelft.trustchain.valuetransfer.db.IdentityStore -import nl.tudelft.trustchain.voting.VotingCommunity import nl.tudelft.gossipML.sqldelight.Database as MLDatabase val Context.dataStore: DataStore by preferencesDataStore(name = "settings") @@ -85,6 +80,7 @@ class TrustChainApplication : Application() { var isFirstRun: Boolean = false lateinit var appLoader: AppLoader + @RequiresApi(Build.VERSION_CODES.M) override fun onCreate() = runBlocking { super.onCreate() launch { @@ -99,6 +95,7 @@ class TrustChainApplication : Application() { } } + @RequiresApi(Build.VERSION_CODES.M) fun initIPv8() { val config = IPv8Configuration( overlays = listOf( @@ -109,17 +106,13 @@ class TrustChainApplication : Application() { createTFTPCommunity(), createDemoCommunity(), createWalletCommunity(), - createAtomicSwapCommunity(), createMarketCommunity(), createCoinCommunity(), createDaoCommunity(), - createVotingCommunity(), createMusicCommunity(), - createLiteratureCommunity(), createRecommenderCommunity(), createIdentityCommunity(), createFOCCommunity(), - createDeToksCommunity() ), walkerInterval = 5.0 ) @@ -215,52 +208,6 @@ class TrustChainApplication : Application() { } } ) - - trustchain.registerTransactionValidator( - AtomicSwapTrustchainConstants.ATOMIC_SWAP_COMPLETED_BLOCK, - object : TransactionValidator { - override fun validate( - block: TrustChainBlock, - database: TrustChainStore - ): ValidationResult { - if (( - block.transaction[AtomicSwapTrustchainConstants.TRANSACTION_FROM_COIN] != null && - block.transaction[AtomicSwapTrustchainConstants.TRANSACTION_TO_COIN] != null && - block.transaction[AtomicSwapTrustchainConstants.TRANSACTION_FROM_AMOUNT] != null && - block.transaction[AtomicSwapTrustchainConstants.TRANSACTION_TO_AMOUNT] != null && - block.transaction[AtomicSwapTrustchainConstants.TRANSACTION_OFFER_ID] != null - ) || - block.isAgreement - ) { - return ValidationResult.Valid - } else { - return ValidationResult.Invalid(listOf("Proposal invalid")) - } - } - } - ) - - trustchain.registerBlockSigner( - AtomicSwapTrustchainConstants.ATOMIC_SWAP_COMPLETED_BLOCK, - object : BlockSigner { - override fun onSignatureRequest(block: TrustChainBlock) { - trustchain.createAgreementBlock(block, mapOf()) - Log.d(LOG, "Bob created a trustchain agreement block") - } - } - ) - - trustchain.addListener( - AtomicSwapTrustchainConstants.ATOMIC_SWAP_COMPLETED_BLOCK, - object : BlockListener { - override fun onBlockReceived(block: TrustChainBlock) { - Log.d( - "AtomicSwap", - "onBlockReceived: ${block.blockId} ${block.transaction}" - ) - } - } - ) } private fun createWalletCommunity(): OverlayConfiguration { @@ -275,14 +222,6 @@ class TrustChainApplication : Application() { ) } - private fun createAtomicSwapCommunity(): OverlayConfiguration { - val randomWalk = RandomWalk.Factory() - return OverlayConfiguration( - Overlay.Factory(AtomicSwapCommunity::class.java), - listOf(randomWalk) - ) - } - private fun createDiscoveryCommunity(): OverlayConfiguration { val randomWalk = RandomWalk.Factory() val randomChurn = RandomChurn.Factory() @@ -388,17 +327,6 @@ class TrustChainApplication : Application() { ) } - private fun createVotingCommunity(): OverlayConfiguration { - val settings = TrustChainSettings() - val driver = AndroidSqliteDriver(Database.Schema, this, "voting.db") - val store = TrustChainSQLiteStore(Database(driver)) - val randomWalk = RandomWalk.Factory() - return OverlayConfiguration( - VotingCommunity.Factory(settings, store), - listOf(randomWalk) - ) - } - private fun createMusicCommunity(): OverlayConfiguration { val settings = TrustChainSettings() // TODO: Re-concile this community with Reccomender Community @@ -411,19 +339,6 @@ class TrustChainApplication : Application() { ) } - // TODO: Fix for older Android versions. - @SuppressLint("NewApi") - private fun createLiteratureCommunity(): OverlayConfiguration { - val settings = TrustChainSettings() - val driver = AndroidSqliteDriver(Database.Schema, this, "music.db") - val store = TrustChainSQLiteStore(Database(driver)) - val randomWalk = RandomWalk.Factory() - return OverlayConfiguration( - LiteratureCommunity.Factory(this, settings, store), - listOf(randomWalk) - ) - } - @OptIn(DelicateCoroutinesApi::class) // TODO: Verify whether usage is correct. private fun createRecommenderCommunity(): OverlayConfiguration { val settings = TrustChainSettings() @@ -449,14 +364,6 @@ class TrustChainApplication : Application() { ) } - private fun createDeToksCommunity(): OverlayConfiguration { - val randomWalk = RandomWalk.Factory() - return OverlayConfiguration( - DeToksCommunity.Factory(this), - listOf(randomWalk) - ) - } - private fun getIdAlgorithmKey(idFormat: String): BonehPrivateKey { val prefs = PreferenceManager.getDefaultSharedPreferences(this) val privateKey = prefs.getString(idFormat, null) diff --git a/app/src/main/java/nl/tudelft/trustchain/app/service/TrustChainService.kt b/app/src/main/java/nl/tudelft/trustchain/app/service/TrustChainService.kt index 103970f8a..dd4af6e29 100644 --- a/app/src/main/java/nl/tudelft/trustchain/app/service/TrustChainService.kt +++ b/app/src/main/java/nl/tudelft/trustchain/app/service/TrustChainService.kt @@ -5,19 +5,21 @@ import android.content.Intent import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.TaskStackBuilder +import androidx.annotation.RequiresApi import nl.tudelft.ipv8.android.service.IPv8Service import nl.tudelft.trustchain.app.R -import nl.tudelft.trustchain.explorer.ui.TrustChainExplorerActivity +import nl.tudelft.trustchain.app.ui.dashboard.DashboardActivity +@RequiresApi(Build.VERSION_CODES.M) class TrustChainService : IPv8Service() { override fun createNotification(): NotificationCompat.Builder { - val trustChainExplorerIntent = Intent(this, TrustChainExplorerActivity::class.java) + val trustChainDashboardIntent = Intent(this, DashboardActivity::class.java) val flags = when { Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE else -> PendingIntent.FLAG_UPDATE_CURRENT } val pendingIntent = TaskStackBuilder.create(this) - .addNextIntentWithParentStack(trustChainExplorerIntent) + .addNextIntentWithParentStack(trustChainDashboardIntent) .getPendingIntent(0, flags) return NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_CONNECTION) diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 384d43552..acbd7df15 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="nl.tudelft.trustchain.explorer.ui.MainActivity"> + tools:context="nl.tudelft.trustchain.app.ui.dashboard.DashboardActivity"> - - - diff --git a/liquidity-pool/src/main/res/drawable/ic_action_cached.xml b/liquidity-pool/src/main/res/drawable/ic_action_cached.xml deleted file mode 100644 index dc2ca1354..000000000 --- a/liquidity-pool/src/main/res/drawable/ic_action_cached.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/liquidity-pool/src/main/res/drawable/ic_arrow_down.xml b/liquidity-pool/src/main/res/drawable/ic_arrow_down.xml deleted file mode 100644 index bf1a7ae56..000000000 --- a/liquidity-pool/src/main/res/drawable/ic_arrow_down.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/liquidity-pool/src/main/res/drawable/ic_content_copy.xml b/liquidity-pool/src/main/res/drawable/ic_content_copy.xml deleted file mode 100644 index 8bf74a77d..000000000 --- a/liquidity-pool/src/main/res/drawable/ic_content_copy.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/liquidity-pool/src/main/res/drawable/layout_bg.xml b/liquidity-pool/src/main/res/drawable/layout_bg.xml deleted file mode 100644 index efe9c0b9c..000000000 --- a/liquidity-pool/src/main/res/drawable/layout_bg.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/liquidity-pool/src/main/res/drawable/layout_top_bg.xml b/liquidity-pool/src/main/res/drawable/layout_top_bg.xml deleted file mode 100644 index a4109c921..000000000 --- a/liquidity-pool/src/main/res/drawable/layout_top_bg.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/liquidity-pool/src/main/res/layout/activity_main.xml b/liquidity-pool/src/main/res/layout/activity_main.xml deleted file mode 100644 index 3c0e1d514..000000000 --- a/liquidity-pool/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/liquidity-pool/src/main/res/layout/fragment_pool.xml b/liquidity-pool/src/main/res/layout/fragment_pool.xml deleted file mode 100644 index 5e50d4f6c..000000000 --- a/liquidity-pool/src/main/res/layout/fragment_pool.xml +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -