diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..fa3ecc699 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.{kt,kts}] +indent_size=4 +disabled_rules=no-wildcard-imports \ No newline at end of file diff --git a/.gitignore b/.gitignore index eafc358e2..a8c5b47df 100644 --- a/.gitignore +++ b/.gitignore @@ -137,4 +137,5 @@ DerivedData/ cosmos-bundled/build-frameworks/ !cosmos-bundled/build-frameworks/Cosmos.xcframework/Info.plist !cosmos-bundled/build-frameworks/Cosmos.xcframework/ios-arm64/Cosmos.framework/Info.plist +!cosmos-bundled/build-frameworks/Cosmos.xcframework/ios-arm64-simulator/Cosmos.framework/Info.plist !cosmos-bundled/build-frameworks/Cosmos.xcframework/ios-x86_64-simulator/Cosmos.framework/Info.plist diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8bcb253a7..585e0e510 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ stages: # - template: Managed-Cluster-Applications.gitlab-ci.yml default: -# image: alvrme/alpine-android:android-29-jdk11 + # image: alvrme/alpine-android:android-29-jdk11 tags: - macos before_script: @@ -48,6 +48,25 @@ build-cosmos: paths: - ./**/build/reports/tests +build-ios: + stage: build + only: + refs: + - main + - develop + - merge_requests + changes: + - buildSrc/**/Libs.kt + - brd-ios/**/* + - cosmos-*/**/* + - .gitlab-ci.yml + script: + - ./gradlew :cosmos-bundled:createXCFramework + - xcodebuild clean -workspace brd-ios/breadwallet.xcworkspace -scheme breadwallet | xcpretty + # - xcodebuild test -workspace brd-ios/breadwallet.xcworkspace -scheme breadwallet -destination 'platform=iOS Simulator,name=iPhone 13 mini,OS=15.0' | xcpretty -s + tags: + - macos + build-android: stage: build script: @@ -59,37 +78,21 @@ build-android: - merge_requests changes: - buildSrc/**/Libs.kt + - buildSrc/**/BrdRelease.kt - brd-android/**/* - cosmos-*/**/* - .gitlab-ci.yml artifacts: + when: always paths: - brd-android/app/build/outputs/apk/brd/debug/ - brd-android/app/build/outputs/apk/brd/release/ - brd-android/app/build/outputs/apk/brdTestnet/debug/ - brd-android/app/build/outputs/apk/brdTestnet/release/ + - ./**/build/reports/**/* reports: junit: ./brd-android/**/build/test-results/**/TEST-*.xml -build-ios: - stage: build - only: - refs: - - main - - develop - - merge_requests - changes: - - buildSrc/**/Libs.kt - - brd-ios/**/* - - cosmos-*/**/* - - .gitlab-ci.yml - script: - - ./gradlew :cosmos-bundled:createXCFramework - - xcodebuild clean -workspace brd-ios/breadwallet.xcworkspace -scheme breadwallet | xcpretty - - xcodebuild test -workspace brd-ios/breadwallet.xcworkspace -scheme breadwallet -destination 'platform=iOS Simulator,name=iPhone 12,OS=14.5' | xcpretty -s - tags: - - macos - deploy-appetize: stage: deploy needs: [ "build-android" ] @@ -142,6 +145,7 @@ deploy-firebase: - ./gradlew :brd-android:app:uploadCrashlyticsSymbolFileBrdDebug - ./gradlew :brd-android:app:appDistributionUploadBrdTestnetDebug - ./gradlew :brd-android:app:uploadCrashlyticsSymbolFileBrdTestnetDebug + - ./gradlew postToSlack rules: - if: '$CI_COMMIT_TAG != null && $CI_COMMIT_TAG =~ /^android/' artifacts: diff --git a/brd-android/app-core/build.gradle.kts b/brd-android/app-core/build.gradle.kts index a344073a6..cb89bfb75 100644 --- a/brd-android/app-core/build.gradle.kts +++ b/brd-android/app-core/build.gradle.kts @@ -16,13 +16,13 @@ project.tasks.register("downloadBundles") project.tasks.register("downloadSupportArticles") android { - compileSdkVersion(BrdRelease.ANDROID_COMPILE_SDK) - buildToolsVersion(BrdRelease.ANDROID_BUILD_TOOLS) + compileSdk = BrdRelease.ANDROID_COMPILE_SDK + buildToolsVersion = (BrdRelease.ANDROID_BUILD_TOOLS) defaultConfig { - minSdkVersion(BrdRelease.ANDROID_MINIMUM_SDK) + minSdk = BrdRelease.ANDROID_MINIMUM_SDK buildConfigField("int", "VERSION_CODE", "${BrdRelease.versionCode}") } - lintOptions { + lint { isAbortOnError = false } @@ -43,7 +43,12 @@ dependencies { implementation(Libs.Coroutines.Core) { version { strictly(brd.COROUTINES_VERSION) } } - api(Libs.WalletKit.CoreAndroid) + val overrideIdeCheck = gradle.startParameter.taskNames.any { it.contains("brd-android") } + if (System.getProperty("idea.active") == "true" && !overrideIdeCheck) { + implementation(Libs.WalletKit.CoreJRE) + } else { + implementation(Libs.WalletKit.CoreAndroid) + } implementation(Libs.Androidx.LifecycleExtensions) implementation(Libs.Androidx.AppCompat) @@ -60,7 +65,7 @@ dependencies { implementation(Libs.Firebase.Crashlytics) // Kodein DI - implementation(Libs.Kodein.CoreErasedJvm) + implementation(Libs.Kodein.Core) implementation(Libs.Kodein.FrameworkAndroidX) implementation(Libs.Jbsdiff.Core) diff --git a/brd-android/app-core/src/debug/res/raw/brd_tokens_staging.tar b/brd-android/app-core/src/debug/res/raw/brd_tokens_staging.tar index 23ecaef87..3f1bdbf07 100644 Binary files a/brd-android/app-core/src/debug/res/raw/brd_tokens_staging.tar and b/brd-android/app-core/src/debug/res/raw/brd_tokens_staging.tar differ diff --git a/brd-android/app-core/src/debug/res/raw/brd_web_3_staging.tar b/brd-android/app-core/src/debug/res/raw/brd_web_3_staging.tar index 94d68a9ab..dace9eea9 100644 Binary files a/brd-android/app-core/src/debug/res/raw/brd_web_3_staging.tar and b/brd-android/app-core/src/debug/res/raw/brd_web_3_staging.tar differ diff --git a/brd-android/app-core/src/main/assets/support/main_articles.json b/brd-android/app-core/src/main/assets/support/main_articles.json index 3f00af83e..b635a71c5 100644 --- a/brd-android/app-core/src/main/assets/support/main_articles.json +++ b/brd-android/app-core/src/main/assets/support/main_articles.json @@ -1 +1 @@ -[{"id":1500001321181,"title":"What is Tezos?","section_id":360001029053,"promoted":false,"position":0,"body":"

Tezos, which was launched in 2018, is a decentralized blockchain network that can upgrade itself through a consensus protocol. 

\n

Token holders can participate in deciding what upgrades and changes are made to the blockchain, as well as in validating transactions and publishing these to the blockchain. A consensus is reached via a Liquid Proof of Stake mechanism where token holders place their stakes to make decisions on the state of the blockchain.  

\n

With Tezos, the process of validating transactions and publishing these to the blockchain is called \"Baking\". Bakers who are given the privilege of validating a block are rewarded with tez.

\n

Because there are certain requirements to be a Baker, participants may also opt to delegate their validation rights to a Baker by staking. Bakers who receive tez from validating a block are responsible for distributing the tez to stakeholders that delegated validation rights to them.

"},{"id":360053459793,"title":"How do I restore a wallet using iCloud Backup?","section_id":360001028193,"promoted":false,"position":0,"body":"

iCloud Backup is an optional but convenient feature available on the BRD app that allows users to restore wallets from one iOS device to another. 

\n

You can use this feature to restore a wallet on your device as long as:

\n\n

Here are the steps to using iCloud Backup to restore a wallet:

\n

1.   On the device you would like to restore the wallet on, install and launch the BRD app. At the prompt, select Restore from iCloud Backup.

\n

2.  On the next page, unlock iCloud Backup by typing the PIN you used on the wallet you want to recover.

\n

3.  Only default wallets will be displayed on the home screen after recovery.  If you hold other cryptocurrencies other than the ones displayed after recovery, use the Manage Wallets page to add any wallets that are not on the home screen. Visit this page for help with adding wallets.

\n

4.  Leave the app open and on the screen until all wallets are synced.  If you hold bitcoin in the BRD app, turn FastSync on by following the steps here.

\n

 

\n

 

"},{"id":360053457733,"title":"How do I enable iCloud Backup in the BRD app?","section_id":360001028193,"promoted":false,"position":0,"body":"

iCloud Backup is an optional but convenient feature available to users of the BRD app on iOS that allows users to restore wallets from one iOS device to another. 

\n

There are certain requirements to use this feature:

\n\n

 

\n

Follow these steps to enable the iCloud Backup feature on your BRD app and take note of some important items listed below:

\n

1.  Turn iCloud Keychain on. You can find this in your iOS device's Settings by tapping your name, iCloud, and then Keychain.

\n

2.  Launch the BRD app and on the home screen, tap Menu and select Security Settings.

\n

3.   Select iCloud Backup and tap on the toggle switch to turn iCloud Backup on.

\n

4.  On the next page, you will be asked to confirm that you understand that this feature will not work unless iCloud Keychain is on. Tap on the toggle button to confirm this and then select I have turned on iCloud Keychain.

\n

5. Enter your BRD PIN and allow the iCloud Keychain to sync.

\n

 

\n

NOTE: The iCloud Keychain sync may take hours to complete and does not have an indicator to show its progress. The iCloud Keychain sync needs to complete before you can use the iCloud Backup to recover your wallet on a different device.

\n

 

\n

IMPORTANT:

\n\n

 

\n

 

"},{"id":360053456933,"title":"How do I backup my wallet?","section_id":360001028193,"promoted":false,"position":0,"body":"

The BRD app is designed to be private and secure.  Your wallet's keys are only shared with you and no one else - not even us! To make sure that you are able to recover your wallet anytime you need to, you need to backup your wallet.

\n

Currently, there are 2 ways to backup a wallet created in the BRD app:

\n

1.  Manual Backup

\n

2.  iCloud Backup (only available to iOS devices)

\n

 

\n

The Manual Backup refers to writing down your 12 word recovery phrase a piece of paper and keeping it somewhere secure.  We do not recommend creating a digital copy of your recovery phrase.e. taking screenshots or keeping the words in a note taking app) as these can be compromised or lost if you lose access to your device. 

\n

iCloud Backup is an optional feature available to users of BRD on iOS.  This feature is a secondary backup option that encrypts your wallet information using your BRD PIN and can be used to restore wallets from one iOS device to another.  It is not meant to replace the manual backup, and we still recommend users have a manual backup even with this feature on.

\n

iCloud Backup needs to be enabled in BRD and requires users to have iCloud Keychain enabled in the iOS settings app. Click here to see how you can configure iCloud Backup in the BRD app.

\n

 

\n

NOTE: Cloud backups are not available on our Android app. 

"},{"id":360047585213,"title":"What is HBAR?","section_id":360001029053,"promoted":false,"position":0,"label_names":["curr:hbar"],"body":"

The HBAR coin is the cryptocurrency that fuels the Hedera network. Developed by Leemon Baird in 2016, Hedera is a public network that utilizes the hashgraph consensus algorithm instead of a blockchain to provide secure and fast transactions across a decentralized network.  

\n

The Hedera Hashgraph is capable of processing 100,000 transactions per second which provides multiple benefits over the blockchain technology:

\n

1.  Transactions are processed much faster

\n

2.  A high bandwidth results in significantly lower fees

\n

3.  The use of the HBAR coin to fuel transactions would render any malicious attack on the network to be very costly thus making the network more secure.

\n

 

\n

 

"},{"id":360043532033,"title":"Why did my XRP transaction fail?","section_id":360001020074,"promoted":false,"position":0,"label_names":["curr:xrp"],"body":"

The XRP Ledger has a base reserve requirement of 20XRP for each address on the ledger.  The base reserve cannot be used to send funds to another XRP address.  This amount stays in your XRP address and is implemented to prevent the malicious usage of the network.

\n

Your XRP transaction can fail for the following reasons:

\n
    \n
  1. If the very first transaction you are receiving in your BRD app's XRP wallet is less than 20XRP;
  2. \n
  3. The wallet you are sending funds to has not been activated with the base reserve, and you are sending less than 20XRP to it;
  4. \n
  5. You are making a transaction that will leave less than 20XRP in your wallet
  6. \n
"},{"id":360043396353,"title":"What is XRP?","section_id":360001029053,"promoted":false,"position":0,"label_names":["curr:xrp"],"body":"

The XRP Ledger is a platform released by Ripple Labs in 2012 designed to support fast, inexpensive and secure global financial transactions. Its network is called the XRP Ledger and the currency used on this network is XRP.

\n

Unlike other cryptocurrencies, XRP transactions are not confirmed by the network.  Instead, transactions are validated by nodes using a consensus algorithm.  It takes approximately 3-5 seconds for a transaction to be validated on the XRP Ledger.  Fees are based on the amount of traffic on the XRP Ledger and not on the amount being sent.

\n

The XRP Ledger requires a base reserve amount of 20 XRP for every address on the XRP ledger.  This amount cannot be sent to other addresses in the XRP Ledger and is required to prevent any issues due to the malicious usage of the network. 

"},{"id":360040928374,"title":"How do I turn FastSync on?","section_id":360001028173,"promoted":false,"position":0,"body":"

FastSync is a feature in the BRD app that allows your Bitcoin and Bitcoin Cash wallets to sync in seconds.

\n

On your Bitcoin wallet, follow these steps to enable FastSync:

\n
    \n
  1. Tap Menu\n
  2. \n
  3. Select Preferences\n
  4. \n
  5. Tap Bitcoin Settings\n
  6. \n
  7. Tap Connection Mode\n
  8. \n
  9. Turn the toggle switch on
  10. \n
\n

Note: If you are on the latest version of the BRD app, FastSync is enabled by default on your Bitcoin Cash wallet.

"},{"id":360034563553,"title":"How do I sell cryptocurrency in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

BRD app users in multiple countries now have an easy, convenient, and secure way to sell cryptocurrency in the app! Follow these steps to get started:

\n
    \n
  1. On the home screen, tap Buy/Sell and at the top of the next screen, toggle the switch to Sell.
  2. \n
  3. Select from the list of supported cryptocurrencies and enter the amount you would like to sell.  You may enter the amount in cryptocurrency or any of the supported local currencies.
  4. \n
  5. Select Bank Transfer as the Payment Method and tap Next.
  6. \n
  7. Review the order details and tap Confirm & Sell to proceed.
  8. \n
  9. Enter your PIN to confirm the sale.
  10. \n
\n

Note: Selling is only available in some countries. Outside of the US, only bitcoin is supported in the Sell feature in the app.

\n

If you have questions about selling in the BRD app, or regarding your order, send us an email at support@brd.com.

"},{"id":360033919513,"title":"Why is my transaction taking too long to send?","section_id":360001021034,"promoted":false,"position":0,"body":"

When you send a transaction with the BRD app, it is immediately sent to the network to be confirmed. If your outgoing transaction has been pending for more than an hour, this can be due to the following:

\n\n\n"},{"id":360023471734,"title":"Why was my purchase order via ACH cancelled?","section_id":360001020074,"promoted":false,"position":0,"body":"

If you are a BRD app user in the US, you can purchase cryptocurrencies using your bank accounts.

\n

The process is simple and purchased funds will be available in your wallet in 3-5 business days.

\n

If you are making a purchase order via a US Bank Transfer (ACH), please ensure the following to avoid cancellations:

\n"},{"id":360015536953,"title":"What are BRD Rewards?","section_id":360001020974,"promoted":false,"position":0,"body":"

The BRD token is the basis for our loyalty and rewards program, BRD Rewards. BRD token holders can enjoy perks based on the number of BRD tokens they hold in the app.

\n

There are two ways to get to the BRD Rewards page:

\n

1.  On the home screen, tap on Menu and then on Rewards; or

\n

2.  Tap on your BRD Token Wallet and then on Rewards

\n

 You will see the following information on the BRD Rewards page:

\n\n

You can find your BRD Rewards ID by tapping About in the app's Menu.

"},{"id":360011359753,"title":"How do I buy cryptocurrency in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

The BRD app provides an easy, convenient, and secure way to buy cryptocurrency. Follow these steps to get started:

\n
    \n
  1. On the home screen, tap Buy/Sell.\n
  2. \n
  3. If this is your first time buying in the app, you will be asked to select your country of residence. For succeeding orders, proceed to the next step.
  4. \n
  5. In the \"Pay With\" section, enter the amount you would like to purchase.  You may enter the amount in cryptocurrency or in your local currency.
  6. \n
  7. In the \"Receive\" section, select the cryptocurrency you would like to buy from the list of currencies available for purchase.
  8. \n
  9. Tap Next.
  10. \n
  11. Select the Payment Method you would like to use and tap Next. If paying with cash, tap View Map.
  12. \n
  13. Select an offer and tap the line with the arrow pointing up to go to the next page. 
  14. \n
  15. Review the order summary and tap Confirm & Buy to proceed with your purchase.
  16. \n
  17. Follow the on-screen instructions on the next page to complete the process.  Keep an eye out for any emails regarding the status of your purchase order.
  18. \n
\n

If you have questions about buying in the BRD app, or regarding your order, send us an email at support@brd.com.

\n

 

\n

 

"},{"id":360010333374,"title":"How do I check the KYC status for the SEPA transaction I would like to make in the app?","section_id":360001029113,"promoted":false,"position":0,"body":"

If you have submitted documents for KYC, you will see a notification in the BRD app's Buy/Sell page to let you know of the status of the review.

\n

If approved, you will also receive instructions on how to complete the order via a SEPA transfer.

\n

 

"},{"id":360010436233,"title":"How do I make a SEPA payment when purchasing funds in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

If you are a resident of the EU, you can use the SEPA payment method to purchase funds with your bank account.

\n

To make a payment using SEPA, follow the steps below:

\n
    \n
  1. On the app's main screen, tap on Buy/Sell.
  2. \n
  3. Enter the amount you would like to pay and select the currency you would like to use.  You can also enter the amount of bitcoin you would like to purchase.
  4. \n
  5. Tap Add Payment Method and select Bank Transfer (SEPA).
  6. \n
  7. Click Next.  If you have previously registered with Coinify, tap on Log In at the bottom of the page.
  8. \n
  9. If you are registering for Coinify's service, enter your email address and tap Send email confirmation code
  10. \n
  11. Verify your email by entering the code sent to you.
  12. \n
  13. Select your country of residence in the EU. 
  14. \n
  15. You will need to agree to Coinify's Terms of Service to proceed with the next step. Tap the box to agree to Coinify's Terms of Service (ToS) and click Submit.
  16. \n
  17. Tap on Coinify KYC, complete the Registration form and submit the necessary documents. You will receive an email once this has been reviewed.
  18. \n
  19. Once verified, you will receive an email with a Reference Code for your order as well as information on how to send your payment.
  20. \n
\n

Note: To ensure that your SEPA transaction is matched to your order, please write the Reference Code down and make sure you add this in the memo section of your SEPA transfer.

"},{"id":360009013333,"title":"Why do I get an \"Invalid Address\" error when sending bitcoin cash?","section_id":360001020074,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

Some BRD app users might see an \"Invalid Address\" error when sending Bitcoin Cash to other wallets.  There are 2 address formats used for Bitcoin Cash:

\n\n

The BRD app uses the \"Cash Addr\" format to prevent users from sending bitcoin to a bitcoin cash address and vice versa.  This protects our users from accidental loss of funds.

\n

If you are sending bitcoin cash to a wallet that uses legacy addresses, you can try one of the following:

\n
    \n
  1. Contact the third party wallet provider and request for the \"Cash Addr\" equivalent of the legacy address displayed in the receiving wallet; or
  2. \n
  3. Use a trusted site to convert the legacy address to the \"Cash Addr\" format.  
  4. \n
\n

 

"},{"id":360008532834,"title":"What is SegWit?","section_id":360001029053,"promoted":false,"position":0,"body":"

SegWit or Segregated Witness is a soft fork on the Bitcoin Network that aims to solve scalability issues.  By separating the signature (witness) data on transactions, the amount of space needed for each transaction data is reduced, thus allowing more transactions to be stored on each block.

\n

SegWit was activated on the Bitcoin Network on August 23, 2017.

"},{"id":360002204434,"title":"What is an ERC20 token?","section_id":360001029053,"promoted":false,"position":0,"body":"

ERC20 is a standard or a set of rules for Ethereum based tokens. Tokens that satisfy these set of rules are called ERC20 tokens. These tokens are actually smart contracts on the Ethereum network and have different values.  When sending an ERC20 token to another wallet, you will need to have enough ether in your wallet for the necessary transaction fees.

\n

The amount of time for a block to be confirmed varies depending on the token.  Fees are calculated according to the complexity of the transaction (gas) and paid in ether.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":360002205933,"title":"What is Ether?","section_id":360001029053,"promoted":false,"position":0,"body":"

Ether is the currency used on the Ethereum network and was proposed by Vitalik Buterin in 2013.  Ethereum is also a decentralized network and allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

Ether was not created to be a digital currency but rather as an incentive or reward for a process to be completed in the Ethereum network. It is referred to as fuel because this is used to pay machines for executing a required process. The Ethereum network allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

It takes approximately 15 seconds for a block to be confirmed on the Ethereum network.  Fees are calculated according to the complexity of the transaction (gas) and paid in ether.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":360002205833,"title":"What is Bitcoin?","section_id":360001029053,"promoted":false,"position":0,"body":"

Bitcoin was created in 2008 and is the first decentralized digital currency. Together with the creation of bitcoin came the birth of the blockchain - the public ledger that lists all transactions ever made on the bitcoin network. 

\n

New coins called \"block rewards\" are created when miners solve a complex mathematical problem. Each block contains the transactions that have been validated, as well as information about the previous block. This sequence of events ensures that transactions on the bitcoin network cannot be successfully forged. 

\n

It takes approximately 10 minutes for a block to be confirmed on the Bitcoin network.  Fees are calculated according to the transaction's data size and paid in bitcoin.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

\n

 

"},{"id":360001577273,"title":"What is Bitcoin Cash?","section_id":360001029053,"promoted":false,"position":0,"body":"

Bitcoin cash was born as a result of a hard fork of bitcoin on August 1, 2017 in an effort to solve scalability issues. By increasing block sizes to 8MB, bitcoin cash transactions typically have lower transaction fees than bitcoin. Bitcoin Cash transactions should not be sent to Bitcoin addresses, and vice versa, as they are separate networks.

\n

It takes approximately 10 minutes for a block to be confirmed on the Bitcoin Cash network.  Fees are calculated according to the transaction's data size and paid in bitcoin cash.

\n

NOTE: If you had Bitcoin in your wallet on August 1st, you were automatically credited with the same amount of Bitcoin Cash.

\n

We released a Bitcoin Cash withdrawal feature soon after the fork, allowing users to move their Bitcoin Cash out of their wallet. We now offer full Bitcoin Cash support, and any Bitcoin Cash that was in your wallet from the time of the fork or that was sent to your wallet afterwards will be accessible in your Bitcoin Cash wallet.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":115000757793,"title":"Why do I need to write down my recovery phrase?","section_id":360001028193,"promoted":false,"position":0,"body":"

The BRD app connects directly to the cryptocurrency networks, where your wallets are stored. The \"keys\" to access your wallets are securely stored in your phone and nowhere else. The BRD app will provide you with a unique \"Recovery Phrase,\" which is a list of 12-words which can be used to recreate the keys to your wallet. If you ever lose or upgrade your phone, this \"Recovery Phrase\" is required to regain access to your funds.

\n

Please write down each word, in order, on a piece of paper. We recommend storing your Recovery Phrase in a safe, safety deposit box at a bank, or wherever you might keep passports, birth certificates, or other important documents. Anyone who has your Recovery Phrase can access your money, even if they don't have your wallet PIN, so keep it private and don't show it to others! 

"},{"id":360002288513,"title":"How do I add a token in the BRD app?","section_id":360001028173,"promoted":false,"position":1,"body":"

With the BRD app, you won't need to go through the complexities of getting the token information to add a supported cryptocurrency's wallet to the app.  Adding a token is as simple as adding a wallet to the app.  Just tap on Manage Wallets on the main screen, and then on Add Wallets.  Scroll through the list of supported cryptocurrencies, or use the search field to locate one, and tap on the Add button.

\n

NOTE:  Do not send an unsupported cryptocurrency to the BRD app.  If you do not have a cryptocurrency's wallet added to the BRD app's main screen, always check the Add Wallets page before sending.

"},{"id":115000763834,"title":"How do I get started?","section_id":360001020954,"promoted":true,"position":1,"body":"

Welcome to BRD!

\n

The BRD app connects directly to the cryptocurrency networks it supports. There are no accounts or usernames with the BRD app. Instead, you will have a \"wallet\" where you will store your money. It's just like the physical wallet you put your cash in, except that it exists only on the internet and holds digital money.

\n

Follow these steps to get started:

\n
    \n
  1. If this is your first time using the BRD app, simply choose Get Started to start.
  2. \n
  3. Tap Next twice.
  4. \n
  5. Create a 6 digit PIN and confirm this on the next page.
  6. \n
  7. If you are on an iOS device, you will see an option to turn iCloud Recovery Backup on the next page. Tap Continue after making your selection. You will see instructions to enable Keychain on your device. Tap the radio button below the instructions to proceed and then tap I have turned on iCloud Keychain
  8. \n
  9. Make sure you read the important information on each page about the recovery phrase on the next pages and tap Continue
  10. \n
  11. Tap Generate Recovery Phrase.
  12. \n
  13. The app shows you 12 different words in separate pages. This is your Recovery Phrase. Swipe left after writing down each word. If you need to review these, swipe back. Tap Done. \n

    IMPORTANT: Make sure that you write the Recovery Phrase down in the correct order and keep it secure as this is the only way to restore your BRD wallet.

    \n

    For more information about the Recovery Phrase, visit this page.

    \n
  14. \n
  15. \n

    The app will ask you to confirm random words from your Recovery Phrase. Tap Confirm after entering the requested words.

    \n
  16. \n
  17. \n

    Tap Go to Wallet. The wallets sync to the blockchain.  Keep the app open and on the screen until syncing completes.

    \n
  18. \n
  19. \n

    If you see a box asking you to enable Touch ID. This is optional. Tap on Dismiss if you would like to skip this step. You can enable this later via the app’s Security Center. Visit this page for more information on Touch ID.

    \n
  20. \n
\n

NOTE: If you have used the BRD app before and would like to use the same wallet, choose Restore Wallet on the main page and prepare to enter the Recovery Phrase for the wallet you would like to restore.

\n

Visit this page for help on recovering a wallet. 

"},{"id":115000757753,"title":"Why do I need a PIN?","section_id":360001028193,"promoted":false,"position":1,"body":"

The BRD app requires you to set a PIN to secure your wallet, separate from your device passcode. You will be required to enter this PIN to view your balance or send money, which keeps your wallet private even if you let someone use your phone or if your phone is stolen by someone who knows your device passcode.

\n

Do not forget your wallet PIN! It can only be reset by using your Recovery Phrase. If you forget your PIN and lose your Recovery Phrase, your wallet will be lost.

"},{"id":234979507,"title":"How do I import a bitcoin paper wallet?","section_id":360001020454,"promoted":false,"position":1,"label_names":["curr:btc"],"body":"

If you receive a QR code labeled as a \"paper wallet\" or \"private key\", you can import it into your BRD app's Bitcoin wallet by following these steps:

\n
    \n
  1. On the main screen, tap on Menu.
  2. \n
  3. Under Preferences, tap on Bitcoin Settings.
  4. \n
  5. Select Redeem Private Key.
  6. \n
  7. Tap on Scan Private Key and scan the QR code on your paper wallet.
  8. \n
  9. Any funds stored on the paper wallet/private key will be sent into your BRD app's Bitcoin wallet, and will not remain on the paper wallet/private key.
  10. \n
\n

If you want to import a wallet created with the BRD app, use the Unlink from this device function instead.Visit this page for more information.

"},{"id":115000763654,"title":"How do I reset my PIN with my recovery phrase?","section_id":360001028193,"promoted":false,"position":2,"body":"

Every time you create a new wallet with BRD, you are provided with a \"Recovery Phrase,\" which is a list of 12 words that can be used to restore access to your wallet if you ever lose or upgrade your phone. You can also use your Recovery Phrase to reset your wallet PIN if you forget it.

\n

If you have incorrectly entered your PIN several times, you will be able to reset your PIN using your recovery phrase. Enter the 12 words from your Recovery Phrase in the correct order, and you will be able to choose a new PIN. 

"},{"id":234979447,"title":"Is the BRD app free?","section_id":360001020954,"promoted":false,"position":2,"body":"

Our core product is and always will be 100% free and open source. Additional, opt-in features such as the ability to buy, sell or trade cryptocurrency may be offered through the app for a fee. 

\n

 

"},{"id":115000757733,"title":"How do I confirm my recovery phrase?","section_id":360001028193,"promoted":false,"position":3,"body":"

It is very important that your Recovery Phrase is written down correctly, and in the correct order. Enter the words requested to make sure everything is correct. For example, \"Word #1\" means the first word of your Recovery Phrase, \"Word #2\" means the second word, etc. 

"},{"id":360010024833,"title":"Why are some ERC20 tokens no longer supported?","section_id":360001020954,"promoted":false,"position":4,"label_names":["curr:erc20"],"body":"

Some ERC20 tokens may be delisted from the BRD app for various reasons. When this happens, you might see that wallet for these tokens are marked as disabled in your BRD app but they will still be accessible.  If needed, you can find your token address by tapping on the \"Receive\" button in the wallet. 

\n

As long as it is still supported by the Ethereum network, you will be able to send these ERC20 tokens out from the BRD app to another platform that supports the token.

\n

Here are some reasons why an ERC20 token may have been delisted from the BRD app:

\n

1.  The token has been moved or is moving to its own blockchain

\n

The developers of some ERC20 tokens have decided to move their tokens to their own blockchain or create a completely new ERC20 token. This would mean the old token needs to be swapped for their new one. Please reach out to the developer of this token to see which situation applies to them. 

\n

If you would like to swap your ERC20 tokens for the new tokens, the first step is to send these tokens to a platform that will support the swap. Each token developer will announce the details of token swaps in their own support channels. 

\n

If the deadline for the token swap has passed and you were unable to swap your ERC20 token for the new tokens, please reach out to the token developer's support team for assistance.

\n

2. Declining usage of the token in the BRD app

\n

In an effort to to focus on BRD's simplicity and ease of use, tokens that continually see declining usage are evaluated and disabled in the app if necessary. Please remember that a disabled token is still accessible in your app as long as it's functional on the Ethereum network as an ERC20 token.

\n

 

"},{"id":360059942834,"title":"What is staking on Tezos?","section_id":360001020954,"promoted":false,"position":5,"body":"

With Tezos, each tez holder can participate in the consensus of the state of the blockchain. This includes the validation of transactions as well as updates to the network's protocols.

\n

Transactions on the Tezos network are validated, signed and published to the blockchain by Bakers who maintain nodes and in return, they are rewarded tez. After the rewards are unfrozen by the Tezos network, Bakers distribute the rewards to those who placed a stake on them.

\n

You can delegate your validation rights by staking your coins on a Baker.  This allows you to participate in the validation process without having to maintain a node. You can follow the steps here if you would like to stake.

\n

When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

"},{"id":115009772648,"title":"What is a recovery phrase?","section_id":360001028193,"promoted":true,"position":5,"body":"

A recovery phrase consists of 12 randomly generated words. The app creates the recovery phrase for you automatically when you start a new wallet.

\n

The recovery phrase is critically important and should be written down and stored in a safe location. Never take screenshots of your recovery phrase as this can be stolen if someone gains access to your device.

\n

In the event of phone theft, destruction, or loss, the recovery phrase can be used to recover your wallet onto a new phone. The phrase is also required when upgrading your current phone to a new one.

\n

To find your recovery phrase follow these steps:

\n
    \n
  1. \nOn the main screen, tap on Menu.
  2. \n
  3. Select Security Settings.
  4. \n
  5. \nTap on Recovery Phrase.
  6. \n
  7. \nTap on Write Down Recovery Phrase Again.
  8. \n
  9. Enter your PIN and you will be shown each word in your recovery phrase on separate pages.
  10. \n
"},{"id":360059942954,"title":"How do I stake or delegate to a Tezos Baker?","section_id":360001020954,"promoted":false,"position":6,"label_names":["curr:xtz"],"body":"

If you hold tez in the BRD app, you can stake or delegate your validating rights to a baker to earn rewards for validating and publishing blocks. You can do this by following these steps:

\n

 

\n

1.  On the BRD app's home screen, tap Tezos

\n

2.  Right below the wallet balance, tap Staking

\n

3. Tap Select XTZ Delegate and then select your preferred Baker from the list of delegates

\n

4.  You will be shown a confirmation screen showing the tez you are staking and the Baker's address. Tap Confirm

\n

5.  Enter your BRD app's PIN and wait for it to be confirmed

\n

 

\n

If you wish to delegate to another Baker, simply follow the same steps to change the selected Baker.

\n

Note: When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

\n

A baker should be chosen based on the baker’s reputation and performance in order to have some “guarantee” that the baker pays out rewards accurately and timely. This is because the pay out of rewards to delegators is not handled on-chain.

"},{"id":360000249193,"title":"Why is syncing to the blockchain taking too long or not successful?","section_id":360001020074,"promoted":false,"position":6,"body":"

When syncing takes too long or does not complete, try the following steps to correct the issue:

\n\n

When you turn FastSync on, your wallets will sync in seconds.  SPV sync takes 30 minutes or more and your phone’s screen must remain on the BRD app to ensure syncing completes.

\n

Visit this page if you need instructions on how to sync your wallet to the blockchain. 

"},{"id":360000260654,"title":"How do I sync my BRD app's Bitcoin wallet to the blockchain?","section_id":360001028173,"promoted":false,"position":6,"label_names":["curr:btc"],"body":"

BRD's Fastsync feature syncs your Bitcoin wallet almost instantly.  To turn Fastsync on, follow the steps below:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Under Preferences choose Bitcoin Settings.
  4. \n
  5. Select Connection Mode and turn Fastsync on with the toggle.
  6. \n
\n

Although not usually necessary, sometimes you may need to manually sync your BRD bitcoin wallet to the blockchain. Syncing to the blockchain ensures that you see the most up to date information regarding the transactions in your wallet.

\n

After turning Fastsync off, follow these steps to sync your wallet:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Under Preferences choose Bitcoin Settings.
  4. \n
  5. Select Sync Blockchain.
  6. \n
  7. Tap on Start Sync.
  8. \n
  9. In the pop-up window, tap Sync to begin
  10. \n
\n

NOTE: You will not be able to make a transaction until the sync completes.

\n

If the sync button is greyed out, that means a sync is already in progress.  To make sure that the sync completes, use a stable internet connection and keep the app open with screen on until the status bar disappears. Syncing can take 30 minutes or more to complete.

\n

If you are an advanced user and would like to connect to a specific node for syncing, please visit this page for instructions.

"},{"id":234758948,"title":"What is fingerprint authentication?","section_id":360001028193,"promoted":false,"position":6,"body":"

There are a couple of ways you can secure access to your BRD app.  You can use a 6 digit PIN, or fingerprint authentication.

\n

 

\n

Touch ID on iPhone

\n

Touch ID is available on any iPhone 5s or later, iPad Pro, iPad Air 2, or iPad mini 3 or later. If you have it enabled on your device, you can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

If Touch ID is not enabled on your device, you can enable it in your device's settings under \"Touch ID & Passcode\". 

\n

 

\n

Fingerprint Authorization on Android

\n

Many Android devices feature a fingerprint reader. You can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

In order to use this feature in the BRD app, fingerprint authorization must be enabled on your device. See the phone manufacturer's manual for more information. 

"},{"id":360017575033,"title":"How do I contact the BRD Customer Support team via email?","section_id":360001020954,"promoted":false,"position":7,"label_names":["help","email"],"body":"

If you need additional help or would like to ask questions about the app, you can reach the BRD Customer Support Team via email at Support@BRD.com.

\n

 

"},{"id":360000248993,"title":"Why is my transaction missing?","section_id":360001020074,"promoted":false,"position":7,"body":"

Your BRD wallet needs to be in sync with the blockchain to show your transactions. If one or more transactions are not showing in your wallet, please try syncing to resolve the issue. For instructions on how to sync your wallet, please visit this page.

\n

If you are expecting an incoming transaction into your BRD wallet that hasn’t arrived yet, the 60+ digit transaction ID can help the support team track its progress. This ID can usually be found by asking the sender for this information. 

"},{"id":360000244733,"title":"How do I connect to a specific bitcoin node?","section_id":360001028173,"promoted":false,"position":7,"label_names":["curr:btc"],"body":"

The BRD app connects to a random node on the bitcoin network when syncing your wallet. You can choose to connect to a specific node of your preference by following the steps below:

\n
    \n
  1. On the main screen, tap on Menu.
  2. \n
  3. Select Preferences and then Bitcoin Settings.
  4. \n
  5. Choose Bitcoin Nodes\n
  6. \n
  7. Tap Switch to Manual Mode\n
  8. \n
  9. Enter the Node IP address in the window that pops up.  You may also enter a port, although this is optional.  Tap OK when done.
  10. \n
\n

Your wallet will now sync to the blockchain via your preferred node.

\n

 

"},{"id":360000261534,"title":"Why do I get an “Insufficient funds” error when sending cryptocurrency?","section_id":360001020074,"promoted":false,"position":8,"body":"

The BRD app does not charge any fees to send a transaction. However, the cryptocurrency networks require a \"transaction fee\". The cost of this fee is not based on the amount you are sending, but is calculated against the traffic on the cryptocurrency network.  It varies as the amount of transactions sent on the cryptocurrency network changes.

\n

When sending a transaction, you need to make sure that you have enough funds in your wallet to cover the necessary transaction fee. Otherwise, an “Insufficient funds” error occurs.

\n

When sending Bitcoin or Bitcoin Cash, fees are calculated by the amount of data attached to your transaction. On top of the amount being sent, this data will include information about where the funds came from and where it is being sent to.

\n

If you are sending funds that came from several smaller transactions sent to your wallet, all of the information from those smaller transactions need to be referenced in the new transaction. This increases the data size of the new transaction and may cause the fee to be multiplied several times depending on how large the data size is. Sending a smaller transaction may help in this case. Also, if you receive small transactions regularly, you may want to arrange for larger and less frequent payments instead.

"},{"id":115000752694,"title":"When should I manually sync my Bitcoin wallet to the blockchain?","section_id":360001028173,"promoted":false,"position":8,"label_names":["curr:btc"],"body":"

Your BRD wallet connects directly to the Bitcoin network. This improves security and privacy, but also means your wallet can get out of sync with the network on a few occasions. The BRD app has a Fastsync feature that syncs your wallet almost instantly.

\n

Manually syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you bitcoin and the transaction is confirmed on the blockchain, but it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the bitcoin was sent to is correct.

\n

If you are trying to send bitcoin and constantly get an error message that your transaction was rejected, it could also mean your wallet is out of sync.

\n

When Fastsync does not work for you, using this feature will rescan the blockchain to find your bitcoins and display it properly in your wallet. Visit this page for instructions on how to manually sync your wallet to the blockchain.

"},{"id":360003824133,"title":"Why can't I see my funds after recovering my wallet?","section_id":360001020074,"promoted":false,"position":9,"body":"

You can recover your wallets by using the 12 word recovery phrase shown to you when you first created your wallet.

\n

If your wallets do not show the correct balance after recovery, the following steps can help fix the issue:

\n
    \n
  1. Force quit the app and launch this again.  If you see that the app is syncing or connecting after restarting, leave the app open until this completes.
  2. \n
  3. Sync the Bitcoin wallet by turning Fastsync on.  Visit these pages if you need help with syncing your Bitcoin wallet.
  4. \n
  5. Check that you used the correct 12 word recovery phrase to recover your wallets.  If you have wiped or reinstalled your wallet in the past, you may have created more than one set of wallets.  Each of these wallets will have their own recovery phrases.
  6. \n
"},{"id":234756748,"title":"How does the BRD wallet show my balance in my local currency?","section_id":360001028173,"promoted":false,"position":9,"body":"

Money kept in your BRD wallet is always stored as cryptocurrency. The app uses an exchange rate to show you an estimate of how much your cryptocurrency is worth in your local currency. When you send a transaction and enter the amount to send in your local currency, the app uses the exchange rate to calculate how much cryptocurrency to send.

\n

It's possible people using other wallets are using different exchange rates, so the balance sent/received might be slight different than what other person sees.

\n

Since the exchange rate is always changing, the amount of money in your wallet as quoted in your local currency may change over time. However, your cryptocurrency balance will not change unless you send or receive funds. 

"},{"id":360002287774,"title":"How do I add or remove wallets in the BRD app?","section_id":360001028173,"promoted":false,"position":10,"body":"

You may customize the BRD app to only show wallets for any supported currency that you own.  

\n

Adding a wallet

\n
    \n
  1. On the main screen, tap Manage Wallets and then on Add Wallets on the next page.
  2. \n
  3. Scroll through the list or use the search field to locate the currency you want to add.
  4. \n
  5. Tap on the Add button to the right of the currency.
  6. \n
\n

 

\n

Hiding a wallet

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Select Manage Wallets and locate the wallet you want to remove from the list.
  4. \n
  5. Tap on the Remove button to the right of the currency.
  6. \n
\n

 

\n

You can also go to Preferences and tap on Reset to Default Currencies if you would like to only show the default wallets. This action updates the main screen so it displays the default wallets and hides any other wallets you may have added.  This action does not wipe any funds from the wallets.

\n

 

\n

NOTE: The Ethereum wallet cannot be hidden if you have an ERC20 token wallet displayed on the BRD app's main screen.

\n

 

"},{"id":360000261214,"title":"Why do I get a “No internet connection found” error?","section_id":360001020074,"promoted":false,"position":10,"body":"

Your BRD wallet needs to be connected to the internet to send and receive funds as well as to sync to the blockchain. A “No internet connection found” error means your phone does not have a stable connection to the internet, or your network connection is blocking access to the cryptocurrency networks.

\n

The best way to solve this is to connect to a strong and stable internet connection. Try the following if you encounter this error:

\n"},{"id":360000248073,"title":"How do I update my PIN?","section_id":360001028173,"promoted":false,"position":11,"body":"

Your BRD app PIN helps keep your wallet secure and is needed to send transactions out of your wallet. For the best security, we recommend you create a PIN that is different from your device PIN.

\n

If you believe your PIN may have been compromised or just wish to change this to a new one, you can update this by following these steps:

\n
    \n
  1. After logging in to the BRD app, tap on Menu
  2. \n
  3. Select Security Settings.
  4. \n
  5. Choose Update PIN.
  6. \n
  7. Enter your current PIN
  8. \n
  9. Enter the new PIN and confirm this on the next page.
  10. \n
\n

Your PIN can only be reset by using your Recovery Phrase. 

\n

Click here to see how you can reset your PIN using your Recovery Phrase.

"},{"id":360000257454,"title":"How do I access an unsupported cryptocurrency I sent to my BRD wallet?","section_id":360001020074,"promoted":false,"position":11,"body":"

The BRD app only supports bitcoin, bitcoin cash, ethereum and some ERC20 tokens at the moment. Unsupported currencies sent to your BRD wallet will be inaccessible and we will not be able to return those funds to you.

\n

To prevent loss of funds, do not send any unsupported cryptocurrency to your BRD wallet.

\n

Your recovery phrase follows the BIP39 standard, and may be compatible with other BIP39 services or tools. We are unable to support sharing your recovery phrase with other services as this is an advanced operation.

"},{"id":360003823353,"title":"How do I exchange cryptocurrencies in the BRD app?","section_id":360001029113,"promoted":false,"position":12,"body":"

The BRD app allows you to exchange multiple supported cryptocurrencies.  Follow the steps below to start trading in the app:

\n
    \n
  1. Tap on Trade at the bottom of the main page.
  2. \n
  3. On the next page, select the cryptocurrencies you would like to exchange using the drop down lists on the Pay With and Receive fields.
  4. \n
  5. Enter the amount you would like to pay, and the app will provide an estimate of how much you will receive.  You can also specify how much you would like to receive, and the app will calculate how much you need to pay.
  6. \n
  7. Tap Next to confirm your purchase.
  8. \n
\n

Exchanging currencies may take up to 6 hours to complete.

\n

 

"},{"id":360000257494,"title":"How do I change the local currency displayed in my wallet?","section_id":360001028173,"promoted":false,"position":12,"body":"

Your BRD wallet will show your cryptocurrency and its equivalent fiat value in your local currency by default. 

\n

You can change this to show the value in a different local currency by following these steps:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Select Preferences and then Display Currency.
  4. \n
  5. Choose the currency you would like to use from the list.
  6. \n
"},{"id":115005112013,"title":"The BRD app couldn't be authenticated on Android.","section_id":360001020074,"promoted":false,"position":12,"body":"

The BRD app uses the hardware encryption of Android phones to secure each user's funds. In order to access this system, it requires the user to enter their device passcode or provide a fingerprint. 

\n

A bug in some versions of Android can cause this authentication to not work, in which case the BRD app can not access the user's wallet. This issue has been fixed in Android version 8 and above.

If you are experiencing this problem, update to Android 8 or higher. If your phone is unable to use Android 8, you can try the following, however there are some risks:

\n
    \n
  1. Make sure your recovery phrase is written down.
  2. \n
  3. In the Android settings, remove all fingerprints and device authentication by setting the screen lock setting to \"none\". This will erase all data protected by the hardware encryption, including your BRD wallet data. Other apps may be affected as well, so proceed with caution.
  4. \n
  5. Re-enable lock screen authentication and re-register your fingerprints for fingerprint authentication.
  6. \n
  7. Open the BRD app and restore your wallet with the recovery phrase.
  8. \n
\n

This solution might not work on all phones. We suggest users update to Android 8 or a newer version as soon as possible. 

"},{"id":360000904454,"title":"Will I be charged cash advance fees if I buy cryptocurrency with a card?","section_id":360001029113,"promoted":false,"position":13,"body":"

The BRD app supports credit and debit card purchases. Card purchases are processed as regular credit card transactions.  However, some banks might charge cash advanced fees.  This is not charged by the BRD app.

\n

Please reach out to your card issuer to check if cash advanced fees will be applied to purchases under Merchant Category Code (MCC) - 6051. 

"},{"id":115000763694,"title":"How do I recover a previous wallet I had with BRD?","section_id":360001028173,"promoted":false,"position":13,"body":"

When you launch the BRD app for the first time, you will be given the option to create a new wallet or to recover a wallet. If you have a 12 word recovery phrase from a previous BRD wallet that you would like to recover, follow these steps to recover your wallet:

\n
    \n
  1. Select Restore Wallet.\n
  2. \n
  3. Click Next and enter the 12 word Recovery Phrase in the correct order for the wallet you want to recover.
  4. \n
  5. Set a PIN.
  6. \n
  7. Confirm the PIN.
  8. \n
  9. Leave the app open and on the screen to allow the wallets to sync to the blockchain.
  10. \n
\n

Initial syncing can take up to 45 minutes or more so please prepare to leave the app open with the screen on for an extended period of time.

\n

If you wish to recover a wallet using a recovery phrase but you already have an active wallet loaded in the BRD app, you will need to follow the directions to wipe the wallet from your current device before beginning the process above. If the wallet you are wiping has funds, be sure to write down the 12 word recovery phrase for the existing wallet (which can be found in the Security Settings) before loading the recovery phrase for the wallet you wish to recover. Visit this page for help on wiping a wallet. 

"},{"id":115000757893,"title":"Why is my wallet disabled?","section_id":360001020074,"promoted":false,"position":13,"body":"

If you enter an incorrect wallet PIN too many times, your wallet will become disabled for a certain amount of time. This is to prevent someone else from trying to guess your PIN by quickly making many guesses. If your wallet is disabled, wait until the time shown and you will be able to enter your PIN again.

\n

If you continue to enter the incorrect PIN, the amount of time you will have to wait in between attempts will increase. Eventually, the app will reset and you can start a new wallet.

\n

If you have the recovery phrase for your wallet, you can use it to reset your PIN by choosing the appropriate option on the lock screen. 

"},{"id":115000757773,"title":"How do I wipe my wallet?","section_id":360001028173,"promoted":false,"position":14,"body":"

The BRD app can only have one wallet active at a time. If you choose to start a new wallet or recover an existing wallet, the currently active wallet must be erased first.

IMPORTANT: If you erase your wallet without writing down its Recovery Phrase, your money will be lost. To prevent this, you must first enter your Recovery Phrase for the currently active wallet to make sure you have it written down correctly. Visit this page for help on finding your Recovery Phrase.

\n

Follow these steps to wipe a wallet:

\n
    \n
  1. \nTap on Menu in the main screen.\n
  2. \n
  3. \nSelect Security Settings.
  4. \n
  5. \nTap on Unlink from this device and then on Next.\n
  6. \n
  7. \nEnter the current wallet’s Recovery phrase.\n
  8. \n
  9. Tap on Wipe.
  10. \n
\n

The wallet will then be erased, and you can create a new wallet or recover a previous wallet.

"},{"id":115006314468,"title":"What are the fees for buying or selling through the BRD app?","section_id":360001029113,"promoted":false,"position":14,"body":"

Fees, when purchasing or selling cryptocurrencies through the BRD app, are different depending on the payment method used. Fees will be displayed under each payment method after choosing Buy/Sell at the bottom of the BRD app's home screen.

\n

When using a cryptocurrency ATM, fees can vary based on location and are often set by the local operator. Please see the ATM itself for details. 

"},{"id":360000261094,"title":"How long will it take for a transaction to arrive in my BRD wallet?","section_id":360001021034,"promoted":false,"position":21,"body":"

Cryptocurrency transactions are processed by the cryptocurrency network in order to become confirmed. Transactions which pay a higher network fee get processed faster, and if your transaction is taking a long time to confirm it could mean the sender included a network fee that was too low.

\n

Occasionally, even transactions that have paid an adequate fee can still take extra time to be processed by the network. We have no control over this process, and the only option is to wait for the network to process your transaction.

\n

Your transaction will be marked \"Pending\" until it has received 6 confirmations on the network. Once the necessary confirmations have been received, the transaction will be marked \"Complete\".

\n

The process of confirming transactions happens outside of your the BRD app and is not within our control.

\n

If a transaction does not appear in your wallet, this may be due to one or more of the following reasons:

\n"},{"id":115001714994,"title":"How do I use the \"Request an Amount\" screen in my wallet?","section_id":360001021034,"promoted":false,"position":22,"body":"

The QR code you use to receive money in your BRD wallet can contain only your address, or it can also specify the amount of money that you wish to receive. If you use the Request an Amount feature, the amount of money you enter will be included in the QR code.

\n

When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much cryptocurrency should be sent, and prevent mistakes when trying to receive a specific amount of cryptocurrency. 

"},{"id":115000763394,"title":"How do I receive cryptocurrency in my BRD wallet?","section_id":360001021034,"promoted":true,"position":23,"label_names":["curr:btc"],"body":"

If you would like to receive cryptocurrency from someone, you will need to give them your \"Receive\" address. Follow these steps to find your receiving address:

\n
    \n
  1. On the main screen, tap the wallet for the cryptocurrency you are receiving.
  2. \n
  3. At the bottom of the screen, tap Receive.
  4. \n
  5. \nGive the sending party your receiving address. There are a few ways to do this:
  6. \n
\n\n

You can also request for a specific amount by using the Request an Amount option. Visit this page for information on how to use this.

\n

 

\n

Important: If cryptocurrency is sent to the wrong address, it can not be refunded. When sending cryptocurrency, always check to make sure the address you are sending to is the same as the one that was given to you.

\n

 

\n

NOTES: 

\n"},{"id":115000763374,"title":"What are the transaction details?","section_id":360001021034,"promoted":false,"position":24,"body":"

The transaction details screen shows you some information about your transaction, as well as any memos available for a transaction. 

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes on the regular processing speed setting, 10-30 minutes on the priority setting and 1-24 hours on economy. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"Complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress.

\n

Address

\n

For received transactions, this field is labelled \"Via\" and shows the address that was used to receive.

\n

For sent transactions, this field is labelled \"To\" and shows the address that was sent funds to.

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Fee

\n

This field is only available for sent transactions and lists the network fee paid for the transaction. 

\n

Total

\n

This field is only available for sent transactions and shows the sum of the amount sent and the fees paid.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction which include the exchange rate used, block confirmations and the transaction ID. The transaction ID can be used as proof that a payment was made. 

"},{"id":115000526148,"title":"Why did my Receive Address change?","section_id":360001021034,"promoted":true,"position":25,"body":"

Whenever you receive a payment to the Bitcoin or Bitcoin Cash address in your wallet, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app. 

\n

Aside from the Bitcoin and Bitcoin Cash wallets, each of the other wallets in the BRD app will have a single address assigned to them.

"},{"id":235062488,"title":"How can I send cryptocurrency from the BRD app?","section_id":360001021034,"promoted":false,"position":26,"body":"

In your BRD app, a wallet is available for the supported cryptocurrencies you own.  Follow these steps to send cryptocurrency from your wallet:

\n
    \n
  1. On the main screen, tap the wallet for the cryptocurrency you would like to send.
  2. \n
  3. Tap Send at the bottom.
  4. \n
  5. \nEnter the address you are sending funds to.  There are several ways to do this:\n
      \n
    • Tap on Scan and scan the QR code from the receiving wallet.
    • \n
    • Copy the receiving wallet’s address and paste it in the To field.
    • \n
    • Manually type the recipient’s address and double check to make sure that it is accurate.  Some cryptocurrency addresses are case sensitive.
    • \n
    \n
  6. \n
  7. Enter the amount you would like to send.  For your convenience, you can toggle the amount between cryptocurrency units or your local currency by tapping the currency box in the Amount field.
  8. \n
  9. In some wallets, a Processing Speed section is available so you can select your preferred network fee setting.
  10. \n
  11. Add an internal memo in the Memo field.  This is optional.  Internal memos are only visible to you and is not sent to the receiving party. If the receiving wallet requires a memo or tag to be added to your transaction, please see the notes below.
  12. \n
  13. Tap Send, verify that the transaction details are correct, and confirm the payment with your PIN or fingerprint.
  14. \n
\n

 

\n

Important: If cryptocurrency is sent to the wrong address, it can not be refunded. When sending cryptocurrency, always check to make sure the address you are sending to is the same as the one that was given to you.

\n

 

\n

NOTE:  If you are sending Bitcoin Cash, XRP, or Hedera, here are some items to take note of:

\n

Bitcoin Cash

\n

The BRD app uses the \"CashAddr\" format for bitcoin cash addresses.  This is a format that encodes your bitcoin cash address so you do not accidentally send bitcoin to a bitcoin cash address and vice versa. The BRD bitcoin cash wallet uses this format to protect our customers from loss of funds.

\n

XRP

\n

Some wallets require a Destination Tag to be indicated when an XRP transaction is sent to them.  This needs to be indicated in the Destination Tag field before the transaction is sent.

\n

Hedera

\n

Some wallets require a Hedera Memo to be indicated when an HBAR transaction is sent to them.  This needs to be indicated in the Hedera Memo field before the transaction is sent.

\n

 

\n

 

\n

 

\n

 

"},{"id":234758088,"title":"Why does it cost money to send a cryptocurrency transaction?","section_id":360001021034,"promoted":true,"position":27,"body":"

The BRD wallet does not charge any fees to send a transaction. However, the cryptocurrency networks require a fee, called a \"transaction fee\". This fee is calculated based on the traffic on the cryptocurrency network, and is always displayed to you before you authorize a payment to be sent.

\n

Bitcoin and Bitcoin Cash wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low. 

\n

 

"},{"id":234978567,"title":"Why is the value of cryptocurrency sent different than the value received?","section_id":360001021034,"promoted":false,"position":28,"body":"

Money in your BRD app is always held as cryptocurrency, and the value in your local currency is displayed as an estimate only. The exchange rate used to make this estimate is always fluctuating, and depending on when a transaction is sent or received the estimated value of the transaction can change. It is common for the estimated value of a transaction to be seen differently by the sender and receiver, however the amount of cryptocurrency sent should not change. 

"}] \ No newline at end of file +[{"id":4407299434139,"title":"What is Dogecoin?","section_id":360001029053,"promoted":false,"position":0,"body":"

Dogecoin is a cryptocurrency created by Billy Markus and Jackson Palmer in 2013 as a fun take on cryptocurrencies.  It was marketed as the \"fun\" version of bitcoin and used a popular meme, which is its namesake, as its logo.  This went viral on social media and is now one of the most popular cryptocurrencies to date.

\n

Dogecoin uses a protocol derived from other cryptocurrencies which include Litecoin. It also uses the blockchain technology to record transactions made on its network.  However, unlike other cryptocurrencies, Dogecoin does not have a fixed supply which has helped with the coin's adaptability.

"},{"id":4407291217563,"title":"What is Litecoin?","section_id":360001029053,"promoted":false,"position":0,"body":"

Litecoin is a decentralized digital currency created by Charlie Lee in 2011.  This cryptocurrency, which was created using a fork of the bitcoin core client, has similarities to bitcoin such as the use of blockchain technology.  However, Litecoin was created to address some concerns about bitcoin and among its differences are the following:

\n\n

 

"},{"id":4406845111707,"title":"How do I add more assets to the BRD Widget?","section_id":360001020954,"promoted":false,"position":0,"body":"

The BRD Widget on iOS lets you quickly track up to 12 of your favorite assets, as well as your total balance in these assets. By default, you will see BTC, ETH and BRD on the widget. If you would like to add more assets to the BRD Widget on your iOS device, follow the steps below:

\n

 

\n

1. Touch and hold an empty space on the BRD Widget and select Edit Widget on the menu that pops up.

\n

2. You should see options to customize the widget. Tap on the list of assets.

\n

3. A list will come up on the screen.  Tap the assets you'd like to track. A check mark should appear to the right of the assets you selected. To remove an asset from the widget, tap it to remove the check mark.

\n

4.  After selecting the assets you would like to track, tap Done at the top right of the screen.

\n

5. Tap outside the widget customization menu to close it.

\n

 

\n

NOTE: The BRD Widget is currently available on iOS only.

\n

 

\n

 

"},{"id":4406844832155,"title":"How do I add the BRD Widget on iOS?","section_id":360001020954,"promoted":false,"position":0,"body":"

If you use an iOS device, you can now track up to 12 of your favorite crypto assets using the BRD Widget! Follow these steps to add the BRD Widget on your device:

\n

 

\n

1.  On your iOS device, you can do one of the following:

\n\n

2. Tap the + sign at the top right of the screen and type BRD on the search field.  Select BRD on the list of widgets and swipe left or right to select which widget you'd like to display.

\n

3. Tap on Add Widget and drag the BRD app widget to where you'd like to display it on your screen. By default, the widget displays BTC, ETH and BRD. If you would like to add more cryptocurrencies on the widget, visit this page.

\n

 

\n

NOTE: Depending on which widget you choose, you might see an option to Enable in app preferences.  This allows you to display your balance on the widget.  If you would like to turn this option on, go to the Security Settings page in your BRD app and turn the Share portfolio data with widgets option on.

\n

The BRD Widget is currently available on iOS only.

"},{"id":1500001321181,"title":"What is Tezos?","section_id":360001029053,"promoted":false,"position":0,"body":"

Tezos, which was launched in 2018, is a decentralized blockchain network that can upgrade itself through a consensus protocol. 

\n

Token holders can participate in deciding what upgrades and changes are made to the blockchain, as well as in validating transactions and publishing these to the blockchain. A consensus is reached via a Liquid Proof of Stake mechanism where token holders place their stakes to make decisions on the state of the blockchain.  

\n

With Tezos, the process of validating transactions and publishing these to the blockchain is called \"Baking\". Bakers who are given the privilege of validating a block are rewarded with tez.

\n

Because there are certain requirements to be a Baker, participants may also opt to delegate their validation rights to a Baker by staking. Bakers who receive tez from validating a block are responsible for distributing the tez to stakeholders that delegated validation rights to them.

"},{"id":360053459793,"title":"How do I restore a wallet using iCloud Backup?","section_id":360001028193,"promoted":false,"position":0,"body":"

iCloud Backup is an optional but convenient feature available on the BRD app that allows users to restore wallets from one iOS device to another. 

\n

You can use this feature to restore a wallet on your device as long as:

\n\n

Here are the steps to using iCloud Backup to restore a wallet:

\n

1.   On the device you would like to restore the wallet on, install and launch the BRD app. At the prompt, select Restore from iCloud Backup.

\n

2.  On the next page, unlock iCloud Backup by typing the PIN you used on the wallet you want to recover.

\n

3.  Only default wallets will be displayed on the home screen after recovery.  If you hold other cryptocurrencies other than the ones displayed after recovery, use the Manage Wallets page to add any wallets that are not on the home screen. Visit this page for help with adding wallets.

\n

4.  Leave the app open and on the screen until all wallets are synced.  If you hold bitcoin in the BRD app, turn FastSync on by following the steps here.

\n

 

\n

 

"},{"id":360053457733,"title":"How do I enable iCloud Backup in the BRD app?","section_id":360001028193,"promoted":false,"position":0,"body":"

iCloud Backup is an optional but convenient feature available to users of the BRD app on iOS that allows users to restore wallets from one iOS device to another. 

\n

There are certain requirements to use this feature:

\n\n

 

\n

Follow these steps to enable the iCloud Backup feature on your BRD app and take note of some important items listed below:

\n

1.  Turn iCloud Keychain on. You can find this in your iOS device's Settings by tapping your name, iCloud, and then Keychain.

\n

2.  Launch the BRD app and on the home screen, tap Menu and select Security Settings.

\n

3.   Select iCloud Backup and tap on the toggle switch to turn iCloud Backup on.

\n

4.  On the next page, you will be asked to confirm that you understand that this feature will not work unless iCloud Keychain is on. Tap on the toggle button to confirm this and then select I have turned on iCloud Keychain.

\n

5. Enter your BRD PIN and allow the iCloud Keychain to sync.

\n

 

\n

NOTE: The iCloud Keychain sync may take hours to complete and does not have an indicator to show its progress. The iCloud Keychain sync needs to complete before you can use the iCloud Backup to recover your wallet on a different device.

\n

 

\n

IMPORTANT:

\n\n

 

\n

 

"},{"id":360053456933,"title":"How do I backup my wallet?","section_id":360001028193,"promoted":false,"position":0,"body":"

The BRD app is designed to be private and secure.  Your wallet's keys are only shared with you and no one else - not even us! To make sure that you are able to recover your wallet anytime you need to, you need to backup your wallet.

\n

Currently, there are 2 ways to backup a wallet created in the BRD app:

\n

1.  Manual Backup

\n

2.  iCloud Backup (only available to iOS devices)

\n

 

\n

The Manual Backup refers to writing down your 12 word recovery phrase a piece of paper and keeping it somewhere secure.  We do not recommend creating a digital copy of your recovery phrase.e. taking screenshots or keeping the words in a note taking app) as these can be compromised or lost if you lose access to your device. 

\n

iCloud Backup is an optional feature available to users of BRD on iOS.  This feature is a secondary backup option that encrypts your wallet information using your BRD PIN and can be used to restore wallets from one iOS device to another.  It is not meant to replace the manual backup, and we still recommend users have a manual backup even with this feature on.

\n

iCloud Backup needs to be enabled in BRD and requires users to have iCloud Keychain enabled in the iOS settings app. Click here to see how you can configure iCloud Backup in the BRD app.

\n

 

\n

NOTE: Cloud backups are not available on our Android app. 

"},{"id":360047585213,"title":"What is HBAR?","section_id":360001029053,"promoted":false,"position":0,"label_names":["curr:hbar"],"body":"

The HBAR coin is the cryptocurrency that fuels the Hedera network. Developed by Leemon Baird in 2016, Hedera is a public network that utilizes the hashgraph consensus algorithm instead of a blockchain to provide secure and fast transactions across a decentralized network.  

\n

The Hedera Hashgraph is capable of processing 100,000 transactions per second which provides multiple benefits over the blockchain technology:

\n

1.  Transactions are processed much faster

\n

2.  A high bandwidth results in significantly lower fees

\n

3.  The use of the HBAR coin to fuel transactions would render any malicious attack on the network to be very costly thus making the network more secure.

\n

 

\n

 

"},{"id":360043532033,"title":"Why did my XRP transaction fail?","section_id":360001020074,"promoted":false,"position":0,"label_names":["curr:xrp"],"body":"

The XRP Ledger has a base reserve requirement of 20XRP for each address on the ledger.  The base reserve cannot be used to send funds to another XRP address.  This amount stays in your XRP address and is implemented to prevent the malicious usage of the network.

\n

Your XRP transaction can fail for the following reasons:

\n
    \n
  1. If the very first transaction you are receiving in your BRD app's XRP wallet is less than 20XRP;
  2. \n
  3. The wallet you are sending funds to has not been activated with the base reserve, and you are sending less than 20XRP to it;
  4. \n
  5. You are making a transaction that will leave less than 20XRP in your wallet
  6. \n
"},{"id":360043396353,"title":"What is XRP?","section_id":360001029053,"promoted":false,"position":0,"label_names":["curr:xrp"],"body":"

The XRP Ledger is a platform released by Ripple Labs in 2012 designed to support fast, inexpensive and secure global financial transactions. Its network is called the XRP Ledger and the currency used on this network is XRP.

\n

Unlike other cryptocurrencies, XRP transactions are not confirmed by the network.  Instead, transactions are validated by nodes using a consensus algorithm.  It takes approximately 3-5 seconds for a transaction to be validated on the XRP Ledger.  Fees are based on the amount of traffic on the XRP Ledger and not on the amount being sent.

\n

The XRP Ledger requires a base reserve amount of 20 XRP for every address on the XRP ledger.  This amount cannot be sent to other addresses in the XRP Ledger and is required to prevent any issues due to the malicious usage of the network. 

"},{"id":360040928374,"title":"How do I turn FastSync on?","section_id":360001028173,"promoted":false,"position":0,"body":"

FastSync is a feature in the BRD app that allows your Bitcoin and Bitcoin Cash wallets to sync in seconds.

\n

On your Bitcoin wallet, follow these steps to enable FastSync:

\n
    \n
  1. Tap Menu\n
  2. \n
  3. Select Preferences\n
  4. \n
  5. Tap Bitcoin Settings\n
  6. \n
  7. Tap Connection Mode\n
  8. \n
  9. Turn the toggle switch on
  10. \n
\n

Note: If you are on the latest version of the BRD app, FastSync is enabled by default on your Bitcoin Cash wallet.

"},{"id":360034563553,"title":"How do I sell cryptocurrency in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

BRD app users in multiple countries now have an easy, convenient, and secure way to sell cryptocurrency in the app! Follow these steps to get started:

\n
    \n
  1. On the home screen, tap Buy/Sell and at the top of the next screen, toggle the switch to Sell.
  2. \n
  3. Select from the list of supported cryptocurrencies and enter the amount you would like to sell.  You may enter the amount in cryptocurrency or any of the supported local currencies.
  4. \n
  5. Select Bank Transfer as the Payment Method and tap Next.
  6. \n
  7. Review the order details and tap Confirm & Sell to proceed.
  8. \n
  9. Enter your PIN to confirm the sale.
  10. \n
\n

Note: Selling is only available in some countries. Outside of the US, only bitcoin is supported in the Sell feature in the app.

\n

If you have questions about selling in the BRD app, or regarding your order, send us an email at support@brd.com.

"},{"id":360033919513,"title":"Why is my transaction taking too long to send?","section_id":360001021034,"promoted":false,"position":0,"body":"

When you send a transaction with the BRD app, it is immediately sent to the network to be confirmed. If your outgoing transaction has been pending for more than an hour, this can be due to the following:

\n\n\n"},{"id":360023471734,"title":"Why was my purchase order via ACH cancelled?","section_id":360001020074,"promoted":false,"position":0,"body":"

If you are a BRD app user in the US, you can purchase cryptocurrencies using your bank accounts.

\n

The process is simple and purchased funds will be available in your wallet in 3-5 business days.

\n

If you are making a purchase order via a US Bank Transfer (ACH), please ensure the following to avoid cancellations:

\n"},{"id":360015536953,"title":"What are BRD Rewards?","section_id":360001020974,"promoted":false,"position":0,"body":"

The BRD token is the basis for our loyalty and rewards program, BRD Rewards. BRD token holders can enjoy perks based on the number of BRD tokens they hold in the app.

\n

There are two ways to get to the BRD Rewards page:

\n

1.  On the home screen, tap on Menu and then on Rewards; or

\n

2.  Tap on your BRD Token Wallet and then on Rewards

\n

 You will see the following information on the BRD Rewards page:

\n\n

You can find your BRD Rewards ID by tapping About in the app's Menu.

"},{"id":360011359753,"title":"How do I buy cryptocurrency in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

The BRD app provides an easy, convenient, and secure way to buy cryptocurrency. Follow these steps to get started:

\n
    \n
  1. On the home screen, tap Buy/Sell.\n
  2. \n
  3. If this is your first time buying in the app, you will be asked to select your country of residence. For succeeding orders, proceed to the next step.
  4. \n
  5. In the \"Pay With\" section, enter the amount you would like to purchase.  You may enter the amount in cryptocurrency or in your local currency.
  6. \n
  7. In the \"Receive\" section, select the cryptocurrency you would like to buy from the list of currencies available for purchase.
  8. \n
  9. Tap Next.
  10. \n
  11. Select the Payment Method you would like to use and tap Next. If paying with cash, tap View Map.
  12. \n
  13. Select an offer and tap the line with the arrow pointing up to go to the next page. 
  14. \n
  15. Review the order summary and tap Confirm & Buy to proceed with your purchase.
  16. \n
  17. Follow the on-screen instructions on the next page to complete the process.  Keep an eye out for any emails regarding the status of your purchase order.
  18. \n
\n

If you have questions about buying in the BRD app, or regarding your order, send us an email at support@brd.com.

\n

 

\n

 

"},{"id":360010333374,"title":"How do I check the KYC status for the SEPA transaction I would like to make in the app?","section_id":360001029113,"promoted":false,"position":0,"body":"

If you have submitted documents for KYC, you will see a notification in the BRD app's Buy/Sell page to let you know of the status of the review.

\n

If approved, you will also receive instructions on how to complete the order via a SEPA transfer.

\n

 

"},{"id":360010436233,"title":"How do I make a SEPA payment when purchasing funds in the BRD app?","section_id":360001029113,"promoted":false,"position":0,"body":"

If you are a resident of the EU, you can use the SEPA payment method to purchase funds with your bank account.

\n

To make a payment using SEPA, follow the steps below:

\n
    \n
  1. On the app's main screen, tap on Buy/Sell.
  2. \n
  3. Enter the amount you would like to pay and select the currency you would like to use.  You can also enter the amount of bitcoin you would like to purchase.
  4. \n
  5. Tap Add Payment Method and select Bank Transfer (SEPA).
  6. \n
  7. Click Next.  If you have previously registered with Coinify, tap on Log In at the bottom of the page.
  8. \n
  9. If you are registering for Coinify's service, enter your email address and tap Send email confirmation code
  10. \n
  11. Verify your email by entering the code sent to you.
  12. \n
  13. Select your country of residence in the EU. 
  14. \n
  15. You will need to agree to Coinify's Terms of Service to proceed with the next step. Tap the box to agree to Coinify's Terms of Service (ToS) and click Submit.
  16. \n
  17. Tap on Coinify KYC, complete the Registration form and submit the necessary documents. You will receive an email once this has been reviewed.
  18. \n
  19. Once verified, you will receive an email with a Reference Code for your order as well as information on how to send your payment.
  20. \n
\n

Note: To ensure that your SEPA transaction is matched to your order, please write the Reference Code down and make sure you add this in the memo section of your SEPA transfer.

"},{"id":360009013333,"title":"Why do I get an \"Invalid Address\" error when sending bitcoin cash?","section_id":360001020074,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

Some BRD app users might see an \"Invalid Address\" error when sending Bitcoin Cash to other wallets.  There are 2 address formats used for Bitcoin Cash:

\n\n

The BRD app uses the \"Cash Addr\" format to prevent users from sending bitcoin to a bitcoin cash address and vice versa.  This protects our users from accidental loss of funds.

\n

If you are sending bitcoin cash to a wallet that uses legacy addresses, you can try one of the following:

\n
    \n
  1. Contact the third party wallet provider and request for the \"Cash Addr\" equivalent of the legacy address displayed in the receiving wallet; or
  2. \n
  3. Use a trusted site to convert the legacy address to the \"Cash Addr\" format.  
  4. \n
\n

 

"},{"id":360008532834,"title":"What is SegWit?","section_id":360001029053,"promoted":false,"position":0,"body":"

SegWit or Segregated Witness is a soft fork on the Bitcoin Network that aims to solve scalability issues.  By separating the signature (witness) data on transactions, the amount of space needed for each transaction data is reduced, thus allowing more transactions to be stored on each block.

\n

SegWit was activated on the Bitcoin Network on August 23, 2017.

"},{"id":360002204434,"title":"What is an ERC20 token?","section_id":360001029053,"promoted":false,"position":0,"body":"

ERC20 is a standard or a set of rules for Ethereum based tokens. Tokens that satisfy these set of rules are called ERC20 tokens. These tokens are actually smart contracts on the Ethereum network and have different values.  When sending an ERC20 token to another wallet, you will need to have enough ether in your wallet for the necessary transaction fees.

\n

The amount of time for a block to be confirmed varies depending on the token.  Fees are calculated according to the complexity of the transaction (gas) and paid in ether.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":360002205933,"title":"What is Ether?","section_id":360001029053,"promoted":false,"position":0,"body":"

Ether is the currency used on the Ethereum network and was proposed by Vitalik Buterin in 2013.  Ethereum is also a decentralized network and allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

Ether was not created to be a digital currency but rather as an incentive or reward for a process to be completed in the Ethereum network. It is referred to as fuel because this is used to pay machines for executing a required process. The Ethereum network allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

It takes approximately 15 seconds for a block to be confirmed on the Ethereum network.  Fees are calculated according to the complexity of the transaction (gas) and paid in ether.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":360002205833,"title":"What is Bitcoin?","section_id":360001029053,"promoted":false,"position":0,"body":"

Bitcoin was created in 2008 and is the first decentralized digital currency. Together with the creation of bitcoin came the birth of the blockchain - the public ledger that lists all transactions ever made on the bitcoin network. 

\n

New coins called \"block rewards\" are created when miners solve a complex mathematical problem. Each block contains the transactions that have been validated, as well as information about the previous block. This sequence of events ensures that transactions on the bitcoin network cannot be successfully forged. 

\n

It takes approximately 10 minutes for a block to be confirmed on the Bitcoin network.  Fees are calculated according to the transaction's data size and paid in bitcoin.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

\n

 

"},{"id":360001577273,"title":"What is Bitcoin Cash?","section_id":360001029053,"promoted":false,"position":0,"body":"

Bitcoin cash was born as a result of a hard fork of bitcoin on August 1, 2017 in an effort to solve scalability issues. By increasing block sizes to 8MB, bitcoin cash transactions typically have lower transaction fees than bitcoin. Bitcoin Cash transactions should not be sent to Bitcoin addresses, and vice versa, as they are separate networks.

\n

It takes approximately 10 minutes for a block to be confirmed on the Bitcoin Cash network.  Fees are calculated according to the transaction's data size and paid in bitcoin cash.

\n

NOTE: If you had Bitcoin in your wallet on August 1st, you were automatically credited with the same amount of Bitcoin Cash.

\n

We released a Bitcoin Cash withdrawal feature soon after the fork, allowing users to move their Bitcoin Cash out of their wallet. We now offer full Bitcoin Cash support, and any Bitcoin Cash that was in your wallet from the time of the fork or that was sent to your wallet afterwards will be accessible in your Bitcoin Cash wallet.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow found on the top left of any currency screen. 

"},{"id":115000757793,"title":"Why do I need to write down my recovery phrase?","section_id":360001028193,"promoted":false,"position":0,"body":"

The BRD app connects directly to the cryptocurrency networks, where your wallets are stored. The \"keys\" to access your wallets are securely stored in your phone and nowhere else. The BRD app will provide you with a unique \"Recovery Phrase,\" which is a list of 12-words which can be used to recreate the keys to your wallet. If you ever lose or upgrade your phone, this \"Recovery Phrase\" is required to regain access to your funds.

\n

Please write down each word, in order, on a piece of paper. We recommend storing your Recovery Phrase in a safe, safety deposit box at a bank, or wherever you might keep passports, birth certificates, or other important documents. Anyone who has your Recovery Phrase can access your money, even if they don't have your wallet PIN, so keep it private and don't show it to others! 

"},{"id":360002288513,"title":"How do I add a token in the BRD app?","section_id":360001028173,"promoted":false,"position":1,"body":"

With the BRD app, you won't need to go through the complexities of getting the token information to add a supported cryptocurrency's wallet to the app.  Adding a token is as simple as adding a wallet to the app.  Just tap on Manage Wallets on the main screen, and then on Add Wallets.  Scroll through the list of supported cryptocurrencies, or use the search field to locate one, and tap on the Add button.

\n

NOTE:  Do not send an unsupported cryptocurrency to the BRD app.  If you do not have a cryptocurrency's wallet added to the BRD app's main screen, always check the Add Wallets page before sending.

"},{"id":115000763834,"title":"How do I get started?","section_id":360001020954,"promoted":true,"position":1,"body":"

Welcome to BRD!

\n

The BRD app connects directly to the cryptocurrency networks it supports. There are no accounts or usernames with the BRD app. Instead, you will have a \"wallet\" where you will store your money. It's just like the physical wallet you put your cash in, except that it exists only on the internet and holds digital money.

\n

Follow these steps to get started:

\n
    \n
  1. If this is your first time using the BRD app, simply choose Get Started to start.
  2. \n
  3. Tap Next twice.
  4. \n
  5. Create a 6 digit PIN and confirm this on the next page.
  6. \n
  7. If you are on an iOS device, you will see an option to turn iCloud Recovery Backup on the next page. Tap Continue after making your selection. You will see instructions to enable Keychain on your device. Tap the radio button below the instructions to proceed and then tap I have turned on iCloud Keychain
  8. \n
  9. Make sure you read the important information on each page about the recovery phrase on the next pages and tap Continue
  10. \n
  11. Tap Generate Recovery Phrase.
  12. \n
  13. The app shows you 12 different words in separate pages. This is your Recovery Phrase. Swipe left after writing down each word. If you need to review these, swipe back. Tap Done. \n

    IMPORTANT: Make sure that you write the Recovery Phrase down in the correct order and keep it secure as this is the only way to restore your BRD wallet.

    \n

    For more information about the Recovery Phrase, visit this page.

    \n
  14. \n
  15. \n

    The app will ask you to confirm random words from your Recovery Phrase. Tap Confirm after entering the requested words.

    \n
  16. \n
  17. \n

    Tap Go to Wallet. The wallets sync to the blockchain.  Keep the app open and on the screen until syncing completes.

    \n
  18. \n
  19. \n

    If you see a box asking you to enable Touch ID. This is optional. Tap on Dismiss if you would like to skip this step. You can enable this later via the app’s Security Center. Visit this page for more information on Touch ID.

    \n
  20. \n
\n

NOTE: If you have used the BRD app before and would like to use the same wallet, choose Restore Wallet on the main page and prepare to enter the Recovery Phrase for the wallet you would like to restore.

\n

Visit this page for help on recovering a wallet. 

"},{"id":115000757753,"title":"Why do I need a PIN?","section_id":360001028193,"promoted":false,"position":1,"body":"

The BRD app requires you to set a PIN to secure your wallet, separate from your device passcode. You will be required to enter this PIN to view your balance or send money, which keeps your wallet private even if you let someone use your phone or if your phone is stolen by someone who knows your device passcode.

\n

Do not forget your wallet PIN! It can only be reset by using your Recovery Phrase. If you forget your PIN and lose your Recovery Phrase, your wallet will be lost.

"},{"id":234979507,"title":"How do I import a bitcoin paper wallet?","section_id":360001020454,"promoted":false,"position":1,"label_names":["curr:btc"],"body":"

If you receive a QR code labeled as a \"paper wallet\" or \"private key\", you can import it into your BRD app's Bitcoin wallet by following these steps:

\n
    \n
  1. On the main screen, tap on Menu.
  2. \n
  3. Under Preferences, tap on Bitcoin Settings.
  4. \n
  5. Select Redeem Private Key.
  6. \n
  7. Tap on Scan Private Key and scan the QR code on your paper wallet.
  8. \n
  9. Any funds stored on the paper wallet/private key will be sent into your BRD app's Bitcoin wallet, and will not remain on the paper wallet/private key.
  10. \n
\n

If you want to import a wallet created with the BRD app, use the Unlink from this device function instead.Visit this page for more information.

"},{"id":115000763654,"title":"How do I reset my PIN with my recovery phrase?","section_id":360001028193,"promoted":false,"position":2,"body":"

Every time you create a new wallet with BRD, you are provided with a \"Recovery Phrase,\" which is a list of 12 words that can be used to restore access to your wallet if you ever lose or upgrade your phone. You can also use your Recovery Phrase to reset your wallet PIN if you forget it.

\n

If you have incorrectly entered your PIN several times, you will be able to reset your PIN using your recovery phrase. Enter the 12 words from your Recovery Phrase in the correct order, and you will be able to choose a new PIN. 

"},{"id":234979447,"title":"Is the BRD app free?","section_id":360001020954,"promoted":false,"position":2,"body":"

Our core product is and always will be 100% free and open source. Additional, opt-in features such as the ability to buy, sell or trade cryptocurrency may be offered through the app for a fee. 

\n

 

"},{"id":115000757733,"title":"How do I confirm my recovery phrase?","section_id":360001028193,"promoted":false,"position":3,"body":"

It is very important that your Recovery Phrase is written down correctly, and in the correct order. Enter the words requested to make sure everything is correct. For example, \"Word #1\" means the first word of your Recovery Phrase, \"Word #2\" means the second word, etc. 

"},{"id":360010024833,"title":"Why are some ERC20 tokens no longer supported?","section_id":360001020954,"promoted":false,"position":4,"label_names":["curr:erc20"],"body":"

Some ERC20 tokens may be delisted from the BRD app for various reasons. When this happens, you might see that wallet for these tokens are marked as disabled in your BRD app but they will still be accessible.  If needed, you can find your token address by tapping on the \"Receive\" button in the wallet. 

\n

As long as it is still supported by the Ethereum network, you will be able to send these ERC20 tokens out from the BRD app to another platform that supports the token.

\n

Here are some reasons why an ERC20 token may have been delisted from the BRD app:

\n

1.  The token has been moved or is moving to its own blockchain

\n

The developers of some ERC20 tokens have decided to move their tokens to their own blockchain or create a completely new ERC20 token. This would mean the old token needs to be swapped for their new one. Please reach out to the developer of this token to see which situation applies to them. 

\n

If you would like to swap your ERC20 tokens for the new tokens, the first step is to send these tokens to a platform that will support the swap. Each token developer will announce the details of token swaps in their own support channels. 

\n

If the deadline for the token swap has passed and you were unable to swap your ERC20 token for the new tokens, please reach out to the token developer's support team for assistance.

\n

2. Declining usage of the token in the BRD app

\n

In an effort to to focus on BRD's simplicity and ease of use, tokens that continually see declining usage are evaluated and disabled in the app if necessary. Please remember that a disabled token is still accessible in your app as long as it's functional on the Ethereum network as an ERC20 token.

\n

 

"},{"id":360059942834,"title":"What is staking on Tezos?","section_id":360001020954,"promoted":false,"position":5,"body":"

With Tezos, each tez holder can participate in the consensus of the state of the blockchain. This includes the validation of transactions as well as updates to the network's protocols.

\n

Transactions on the Tezos network are validated, signed and published to the blockchain by Bakers who maintain nodes and in return, they are rewarded tez. After the rewards are unfrozen by the Tezos network, Bakers distribute the rewards to those who placed a stake on them.

\n

You can delegate your validation rights by staking your coins on a Baker.  This allows you to participate in the validation process without having to maintain a node. You can follow the steps here if you would like to stake.

\n

When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

"},{"id":115009772648,"title":"What is a recovery phrase?","section_id":360001028193,"promoted":true,"position":5,"body":"

A recovery phrase consists of 12 randomly generated words. The app creates the recovery phrase for you automatically when you start a new wallet.

\n

The recovery phrase is critically important and should be written down and stored in a safe location. Never take screenshots of your recovery phrase as this can be stolen if someone gains access to your device.

\n

In the event of phone theft, destruction, or loss, the recovery phrase can be used to recover your wallet onto a new phone. The phrase is also required when upgrading your current phone to a new one.

\n

To find your recovery phrase follow these steps:

\n
    \n
  1. \nOn the main screen, tap on Menu.
  2. \n
  3. Select Security Settings.
  4. \n
  5. \nTap on Recovery Phrase.
  6. \n
  7. \nTap on Write Down Recovery Phrase Again.
  8. \n
  9. Enter your PIN and you will be shown each word in your recovery phrase on separate pages.
  10. \n
"},{"id":360059942954,"title":"How do I stake or delegate to a Tezos Baker?","section_id":360001020954,"promoted":false,"position":6,"label_names":["curr:xtz"],"body":"

If you hold tez in the BRD app, you can stake or delegate your validating rights to a baker to earn rewards for validating and publishing blocks. You can do this by following these steps:

\n

 

\n

1.  On the BRD app's home screen, tap Tezos

\n

2.  Right below the wallet balance, tap Staking

\n

3. Tap Select XTZ Delegate and then select your preferred Baker from the list of delegates

\n

4.  You will be shown a confirmation screen showing the tez you are staking and the Baker's address. Tap Confirm

\n

5.  Enter your BRD app's PIN and wait for it to be confirmed

\n

 

\n

If you wish to delegate to another Baker, simply follow the same steps to change the selected Baker.

\n

Note: When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

\n

A baker should be chosen based on the baker’s reputation and performance in order to have some “guarantee” that the baker pays out rewards accurately and timely. This is because the pay out of rewards to delegators is not handled on-chain.

"},{"id":360000249193,"title":"Why is syncing to the blockchain taking too long or not successful?","section_id":360001020074,"promoted":false,"position":6,"body":"

When syncing takes too long or does not complete, try the following steps to correct the issue:

\n\n

When you turn FastSync on, your wallets will sync in seconds.  SPV sync takes 30 minutes or more and your phone’s screen must remain on the BRD app to ensure syncing completes.

\n

Visit this page if you need instructions on how to sync your wallet to the blockchain. 

"},{"id":360000260654,"title":"How do I sync my BRD app's Bitcoin wallet to the blockchain?","section_id":360001028173,"promoted":false,"position":6,"label_names":["curr:btc"],"body":"

BRD's Fastsync feature syncs your Bitcoin wallet almost instantly.  To turn Fastsync on, follow the steps below:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Under Preferences choose Bitcoin Settings.
  4. \n
  5. Select Connection Mode and turn Fastsync on with the toggle.
  6. \n
\n

Although not usually necessary, sometimes you may need to manually sync your BRD bitcoin wallet to the blockchain. Syncing to the blockchain ensures that you see the most up to date information regarding the transactions in your wallet.

\n

After turning Fastsync off, follow these steps to sync your wallet:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Under Preferences choose Bitcoin Settings.
  4. \n
  5. Select Sync Blockchain.
  6. \n
  7. Tap on Start Sync.
  8. \n
  9. In the pop-up window, tap Sync to begin
  10. \n
\n

NOTE: You will not be able to make a transaction until the sync completes.

\n

If the sync button is greyed out, that means a sync is already in progress.  To make sure that the sync completes, use a stable internet connection and keep the app open with screen on until the status bar disappears. Syncing can take 30 minutes or more to complete.

\n

If you are an advanced user and would like to connect to a specific node for syncing, please visit this page for instructions.

"},{"id":234758948,"title":"What is fingerprint authentication?","section_id":360001028193,"promoted":false,"position":6,"body":"

There are a couple of ways you can secure access to your BRD app.  You can use a 6 digit PIN, or fingerprint authentication.

\n

 

\n

Touch ID on iPhone

\n

Touch ID is available on any iPhone 5s or later, iPad Pro, iPad Air 2, or iPad mini 3 or later. If you have it enabled on your device, you can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

If Touch ID is not enabled on your device, you can enable it in your device's settings under \"Touch ID & Passcode\". 

\n

 

\n

Fingerprint Authorization on Android

\n

Many Android devices feature a fingerprint reader. You can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

In order to use this feature in the BRD app, fingerprint authorization must be enabled on your device. See the phone manufacturer's manual for more information. 

"},{"id":360017575033,"title":"How do I contact the BRD Customer Support team via email?","section_id":360001020954,"promoted":false,"position":7,"label_names":["help","email"],"body":"

If you need additional help or would like to ask questions about the app, you can reach the BRD Customer Support Team via email at Support@BRD.com.

\n

 

"},{"id":360000248993,"title":"Why is my transaction missing?","section_id":360001020074,"promoted":false,"position":7,"body":"

Your BRD wallet needs to be in sync with the blockchain to show your transactions. If one or more transactions are not showing in your wallet, please try syncing to resolve the issue. For instructions on how to sync your wallet, please visit this page.

\n

If you are expecting an incoming transaction into your BRD wallet that hasn’t arrived yet, the 60+ digit transaction ID can help the support team track its progress. This ID can usually be found by asking the sender for this information. 

"},{"id":360000244733,"title":"How do I connect to a specific bitcoin node?","section_id":360001028173,"promoted":false,"position":7,"label_names":["curr:btc"],"body":"

The BRD app connects to a random node on the bitcoin network when syncing your wallet. You can choose to connect to a specific node of your preference by following the steps below:

\n
    \n
  1. On the main screen, tap on Menu.
  2. \n
  3. Select Preferences and then Bitcoin Settings.
  4. \n
  5. Choose Bitcoin Nodes\n
  6. \n
  7. Tap Switch to Manual Mode\n
  8. \n
  9. Enter the Node IP address in the window that pops up.  You may also enter a port, although this is optional.  Tap OK when done.
  10. \n
\n

Your wallet will now sync to the blockchain via your preferred node.

\n

 

"},{"id":360000261534,"title":"Why do I get an “Insufficient funds” error when sending cryptocurrency?","section_id":360001020074,"promoted":false,"position":8,"body":"

The BRD app does not charge any fees to send a transaction. However, the cryptocurrency networks require a \"transaction fee\". The cost of this fee is not based on the amount you are sending, but is calculated against the traffic on the cryptocurrency network.  It varies as the amount of transactions sent on the cryptocurrency network changes.

\n

When sending a transaction, you need to make sure that you have enough funds in your wallet to cover the necessary transaction fee. Otherwise, an “Insufficient funds” error occurs.

\n

When sending Bitcoin or Bitcoin Cash, fees are calculated by the amount of data attached to your transaction. On top of the amount being sent, this data will include information about where the funds came from and where it is being sent to.

\n

If you are sending funds that came from several smaller transactions sent to your wallet, all of the information from those smaller transactions need to be referenced in the new transaction. This increases the data size of the new transaction and may cause the fee to be multiplied several times depending on how large the data size is. Sending a smaller transaction may help in this case. Also, if you receive small transactions regularly, you may want to arrange for larger and less frequent payments instead.

"},{"id":115000752694,"title":"When should I manually sync my Bitcoin wallet to the blockchain?","section_id":360001028173,"promoted":false,"position":8,"label_names":["curr:btc"],"body":"

Your BRD wallet connects directly to the Bitcoin network. This improves security and privacy, but also means your wallet can get out of sync with the network on a few occasions. The BRD app has a Fastsync feature that syncs your wallet almost instantly.

\n

Manually syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you bitcoin and the transaction is confirmed on the blockchain, but it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the bitcoin was sent to is correct.

\n

If you are trying to send bitcoin and constantly get an error message that your transaction was rejected, it could also mean your wallet is out of sync.

\n

When Fastsync does not work for you, using this feature will rescan the blockchain to find your bitcoins and display it properly in your wallet. Visit this page for instructions on how to manually sync your wallet to the blockchain.

"},{"id":360003824133,"title":"Why can't I see my funds after recovering my wallet?","section_id":360001020074,"promoted":false,"position":9,"body":"

You can recover your wallets by using the 12 word recovery phrase shown to you when you first created your wallet.

\n

If your wallets do not show the correct balance after recovery, the following steps can help fix the issue:

\n
    \n
  1. Force quit the app and launch this again.  If you see that the app is syncing or connecting after restarting, leave the app open until this completes.
  2. \n
  3. Sync the Bitcoin wallet by turning Fastsync on.  Visit these pages if you need help with syncing your Bitcoin wallet.
  4. \n
  5. Check that you used the correct 12 word recovery phrase to recover your wallets.  If you have wiped or reinstalled your wallet in the past, you may have created more than one set of wallets.  Each of these wallets will have their own recovery phrases.
  6. \n
"},{"id":234756748,"title":"How does the BRD wallet show my balance in my local currency?","section_id":360001028173,"promoted":false,"position":9,"body":"

Money kept in your BRD wallet is always stored as cryptocurrency. The app uses an exchange rate to show you an estimate of how much your cryptocurrency is worth in your local currency. When you send a transaction and enter the amount to send in your local currency, the app uses the exchange rate to calculate how much cryptocurrency to send.

\n

It's possible people using other wallets are using different exchange rates, so the balance sent/received might be slight different than what other person sees.

\n

Since the exchange rate is always changing, the amount of money in your wallet as quoted in your local currency may change over time. However, your cryptocurrency balance will not change unless you send or receive funds. 

"},{"id":360002287774,"title":"How do I add or remove wallets in the BRD app?","section_id":360001028173,"promoted":false,"position":10,"body":"

You may customize the BRD app to only show wallets for any supported currency that you own.  

\n

Adding a wallet

\n
    \n
  1. On the main screen, tap Manage Wallets and then on Add Wallets on the next page.
  2. \n
  3. Scroll through the list or use the search field to locate the currency you want to add.
  4. \n
  5. Tap on the Add button to the right of the currency.
  6. \n
\n

 

\n

Hiding a wallet

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Select Manage Wallets and locate the wallet you want to remove from the list.
  4. \n
  5. Tap on the Remove button to the right of the currency.
  6. \n
\n

 

\n

You can also go to Preferences and tap on Reset to Default Currencies if you would like to only show the default wallets. This action updates the main screen so it displays the default wallets and hides any other wallets you may have added.  This action does not wipe any funds from the wallets.

\n

 

\n

NOTE: The Ethereum wallet cannot be hidden if you have an ERC20 token wallet displayed on the BRD app's main screen.

\n

 

"},{"id":360000261214,"title":"Why do I get a “No internet connection found” error?","section_id":360001020074,"promoted":false,"position":10,"body":"

Your BRD wallet needs to be connected to the internet to send and receive funds as well as to sync to the blockchain. A “No internet connection found” error means your phone does not have a stable connection to the internet, or your network connection is blocking access to the cryptocurrency networks.

\n

The best way to solve this is to connect to a strong and stable internet connection. Try the following if you encounter this error:

\n"},{"id":360000248073,"title":"How do I update my PIN?","section_id":360001028173,"promoted":false,"position":11,"body":"

Your BRD app PIN helps keep your wallet secure and is needed to send transactions out of your wallet. For the best security, we recommend you create a PIN that is different from your device PIN.

\n

If you believe your PIN may have been compromised or just wish to change this to a new one, you can update this by following these steps:

\n
    \n
  1. After logging in to the BRD app, tap on Menu
  2. \n
  3. Select Security Settings.
  4. \n
  5. Choose Update PIN.
  6. \n
  7. Enter your current PIN
  8. \n
  9. Enter the new PIN and confirm this on the next page.
  10. \n
\n

Your PIN can only be reset by using your Recovery Phrase. 

\n

Click here to see how you can reset your PIN using your Recovery Phrase.

"},{"id":360000257454,"title":"How do I access an unsupported cryptocurrency I sent to my BRD wallet?","section_id":360001020074,"promoted":false,"position":11,"body":"

The BRD app only supports bitcoin, bitcoin cash, ethereum and some ERC20 tokens at the moment. Unsupported currencies sent to your BRD wallet will be inaccessible and we will not be able to return those funds to you.

\n

To prevent loss of funds, do not send any unsupported cryptocurrency to your BRD wallet.

\n

Your recovery phrase follows the BIP39 standard, and may be compatible with other BIP39 services or tools. We are unable to support sharing your recovery phrase with other services as this is an advanced operation.

"},{"id":360003823353,"title":"How do I exchange cryptocurrencies in the BRD app?","section_id":360001029113,"promoted":false,"position":12,"body":"

The BRD app allows you to exchange multiple supported cryptocurrencies.  Follow the steps below to start trading in the app:

\n
    \n
  1. Tap on Trade at the bottom of the main page.
  2. \n
  3. On the next page, select the cryptocurrencies you would like to exchange using the drop down lists on the Pay With and Receive fields.
  4. \n
  5. Enter the amount you would like to pay, and the app will provide an estimate of how much you will receive.  You can also specify how much you would like to receive, and the app will calculate how much you need to pay.
  6. \n
  7. Tap Next to confirm your purchase.
  8. \n
\n

Exchanging currencies may take up to 6 hours to complete.

\n

 

"},{"id":360000257494,"title":"How do I change the local currency displayed in my wallet?","section_id":360001028173,"promoted":false,"position":12,"body":"

Your BRD wallet will show your cryptocurrency and its equivalent fiat value in your local currency by default. 

\n

You can change this to show the value in a different local currency by following these steps:

\n
    \n
  1. On the main screen, tap Menu.
  2. \n
  3. Select Preferences and then Display Currency.
  4. \n
  5. Choose the currency you would like to use from the list.
  6. \n
"},{"id":115005112013,"title":"The BRD app couldn't be authenticated on Android.","section_id":360001020074,"promoted":false,"position":12,"body":"

The BRD app uses the hardware encryption of Android phones to secure each user's funds. In order to access this system, it requires the user to enter their device passcode or provide a fingerprint. 

\n

A bug in some versions of Android can cause this authentication to not work, in which case the BRD app can not access the user's wallet. This issue has been fixed in Android version 8 and above.

If you are experiencing this problem, update to Android 8 or higher. If your phone is unable to use Android 8, you can try the following, however there are some risks:

\n
    \n
  1. Make sure your recovery phrase is written down.
  2. \n
  3. In the Android settings, remove all fingerprints and device authentication by setting the screen lock setting to \"none\". This will erase all data protected by the hardware encryption, including your BRD wallet data. Other apps may be affected as well, so proceed with caution.
  4. \n
  5. Re-enable lock screen authentication and re-register your fingerprints for fingerprint authentication.
  6. \n
  7. Open the BRD app and restore your wallet with the recovery phrase.
  8. \n
\n

This solution might not work on all phones. We suggest users update to Android 8 or a newer version as soon as possible. 

"},{"id":360000904454,"title":"Will I be charged cash advance fees if I buy cryptocurrency with a card?","section_id":360001029113,"promoted":false,"position":13,"body":"

The BRD app supports credit and debit card purchases. Card purchases are processed as regular credit card transactions.  However, some banks might charge cash advanced fees.  This is not charged by the BRD app.

\n

Please reach out to your card issuer to check if cash advanced fees will be applied to purchases under Merchant Category Code (MCC) - 6051. 

"},{"id":115000763694,"title":"How do I recover a previous wallet I had with BRD?","section_id":360001028173,"promoted":false,"position":13,"body":"

When you launch the BRD app for the first time, you will be given the option to create a new wallet or to recover a wallet. If you have a 12 word recovery phrase from a previous BRD wallet that you would like to recover, follow these steps to recover your wallet:

\n
    \n
  1. Select Restore Wallet.\n
  2. \n
  3. Click Next and enter the 12 word Recovery Phrase in the correct order for the wallet you want to recover.
  4. \n
  5. Set a PIN.
  6. \n
  7. Confirm the PIN.
  8. \n
  9. Leave the app open and on the screen to allow the wallets to sync to the blockchain.
  10. \n
\n

Initial syncing can take up to 45 minutes or more so please prepare to leave the app open with the screen on for an extended period of time.

\n

If you wish to recover a wallet using a recovery phrase but you already have an active wallet loaded in the BRD app, you will need to follow the directions to wipe the wallet from your current device before beginning the process above. If the wallet you are wiping has funds, be sure to write down the 12 word recovery phrase for the existing wallet (which can be found in the Security Settings) before loading the recovery phrase for the wallet you wish to recover. Visit this page for help on wiping a wallet. 

"},{"id":115000757893,"title":"Why is my wallet disabled?","section_id":360001020074,"promoted":false,"position":13,"body":"

If you enter an incorrect wallet PIN too many times, your wallet will become disabled for a certain amount of time. This is to prevent someone else from trying to guess your PIN by quickly making many guesses. If your wallet is disabled, wait until the time shown and you will be able to enter your PIN again.

\n

If you continue to enter the incorrect PIN, the amount of time you will have to wait in between attempts will increase. Eventually, the app will reset and you can start a new wallet.

\n

If you have the recovery phrase for your wallet, you can use it to reset your PIN by choosing the appropriate option on the lock screen. 

"},{"id":115000757773,"title":"How do I wipe my wallet?","section_id":360001028173,"promoted":false,"position":14,"body":"

The BRD app can only have one wallet active at a time. If you choose to start a new wallet or recover an existing wallet, the currently active wallet must be erased first.

IMPORTANT: If you erase your wallet without writing down its Recovery Phrase, your money will be lost. To prevent this, you must first enter your Recovery Phrase for the currently active wallet to make sure you have it written down correctly. Visit this page for help on finding your Recovery Phrase.

\n

Follow these steps to wipe a wallet:

\n
    \n
  1. \nTap on Menu in the main screen.\n
  2. \n
  3. \nSelect Security Settings.
  4. \n
  5. \nTap on Unlink from this device and then on Next.\n
  6. \n
  7. \nEnter the current wallet’s Recovery phrase.\n
  8. \n
  9. Tap on Wipe.
  10. \n
\n

The wallet will then be erased, and you can create a new wallet or recover a previous wallet.

"},{"id":115006314468,"title":"What are the fees for buying or selling through the BRD app?","section_id":360001029113,"promoted":false,"position":14,"body":"

Fees, when purchasing or selling cryptocurrencies through the BRD app, are different depending on the payment method used. Fees will be displayed under each payment method after choosing Buy/Sell at the bottom of the BRD app's home screen.

\n

When using a cryptocurrency ATM, fees can vary based on location and are often set by the local operator. Please see the ATM itself for details. 

"},{"id":360000261094,"title":"How long will it take for a transaction to arrive in my BRD wallet?","section_id":360001021034,"promoted":false,"position":21,"body":"

Cryptocurrency transactions are processed by the cryptocurrency network in order to become confirmed. Transactions which pay a higher network fee get processed faster, and if your transaction is taking a long time to confirm it could mean the sender included a network fee that was too low.

\n

Occasionally, even transactions that have paid an adequate fee can still take extra time to be processed by the network. We have no control over this process, and the only option is to wait for the network to process your transaction.

\n

Your transaction will be marked \"Pending\" until it has received 6 confirmations on the network. Once the necessary confirmations have been received, the transaction will be marked \"Complete\".

\n

The process of confirming transactions happens outside of your the BRD app and is not within our control.

\n

If a transaction does not appear in your wallet, this may be due to one or more of the following reasons:

\n"},{"id":115001714994,"title":"How do I use the \"Request an Amount\" screen in my wallet?","section_id":360001021034,"promoted":false,"position":22,"body":"

The QR code you use to receive money in your BRD wallet can contain only your address, or it can also specify the amount of money that you wish to receive. If you use the Request an Amount feature, the amount of money you enter will be included in the QR code.

\n

When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much cryptocurrency should be sent, and prevent mistakes when trying to receive a specific amount of cryptocurrency. 

"},{"id":115000763394,"title":"How do I receive cryptocurrency in my BRD wallet?","section_id":360001021034,"promoted":true,"position":23,"label_names":["curr:btc"],"body":"

If you would like to receive cryptocurrency from someone, you will need to give them your \"Receive\" address. Follow these steps to find your receiving address:

\n
    \n
  1. On the main screen, tap the wallet for the cryptocurrency you are receiving.
  2. \n
  3. At the bottom of the screen, tap Receive.
  4. \n
  5. \nGive the sending party your receiving address. There are a few ways to do this:
  6. \n
\n\n

You can also request for a specific amount by using the Request an Amount option. Visit this page for information on how to use this.

\n

 

\n

Important: If cryptocurrency is sent to the wrong address, it can not be refunded. When sending cryptocurrency, always check to make sure the address you are sending to is the same as the one that was given to you.

\n

 

\n

NOTES: 

\n"},{"id":115000763374,"title":"What are the transaction details?","section_id":360001021034,"promoted":false,"position":24,"body":"

The transaction details screen shows you some information about your transaction, as well as any memos available for a transaction. 

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes on the regular processing speed setting, 10-30 minutes on the priority setting and 1-24 hours on economy. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"Complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress.

\n

Address

\n

For received transactions, this field is labelled \"Via\" and shows the address that was used to receive.

\n

For sent transactions, this field is labelled \"To\" and shows the address that was sent funds to.

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Fee

\n

This field is only available for sent transactions and lists the network fee paid for the transaction. 

\n

Total

\n

This field is only available for sent transactions and shows the sum of the amount sent and the fees paid.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction which include the exchange rate used, block confirmations and the transaction ID. The transaction ID can be used as proof that a payment was made. 

"},{"id":115000526148,"title":"Why did my Receive Address change?","section_id":360001021034,"promoted":true,"position":25,"body":"

Whenever you receive a payment to the Bitcoin or Bitcoin Cash address in your wallet, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app. 

\n

Aside from the Bitcoin and Bitcoin Cash wallets, each of the other wallets in the BRD app will have a single address assigned to them.

"},{"id":235062488,"title":"How can I send cryptocurrency from the BRD app?","section_id":360001021034,"promoted":false,"position":26,"body":"

In your BRD app, a wallet is available for the supported cryptocurrencies you own.  Follow these steps to send cryptocurrency from your wallet:

\n
    \n
  1. On the main screen, tap the wallet for the cryptocurrency you would like to send.
  2. \n
  3. Tap Send at the bottom.
  4. \n
  5. \nEnter the address you are sending funds to.  There are several ways to do this:\n
      \n
    • Tap on Scan and scan the QR code from the receiving wallet.
    • \n
    • Copy the receiving wallet’s address and paste it in the To field.
    • \n
    • Manually type the recipient’s address and double check to make sure that it is accurate.  Some cryptocurrency addresses are case sensitive.
    • \n
    \n
  6. \n
  7. Enter the amount you would like to send.  For your convenience, you can toggle the amount between cryptocurrency units or your local currency by tapping the currency box in the Amount field.
  8. \n
  9. In some wallets, a Processing Speed section is available so you can select your preferred network fee setting.
  10. \n
  11. Add an internal memo in the Memo field.  This is optional.  Internal memos are only visible to you and is not sent to the receiving party. If the receiving wallet requires a memo or tag to be added to your transaction, please see the notes below.
  12. \n
  13. Tap Send, verify that the transaction details are correct, and confirm the payment with your PIN or fingerprint.
  14. \n
\n

 

\n

Important: If cryptocurrency is sent to the wrong address, it can not be refunded. When sending cryptocurrency, always check to make sure the address you are sending to is the same as the one that was given to you.

\n

 

\n

NOTE:  If you are sending Bitcoin Cash, XRP, or Hedera, here are some items to take note of:

\n

Bitcoin Cash

\n

The BRD app uses the \"CashAddr\" format for bitcoin cash addresses.  This is a format that encodes your bitcoin cash address so you do not accidentally send bitcoin to a bitcoin cash address and vice versa. The BRD bitcoin cash wallet uses this format to protect our customers from loss of funds.

\n

XRP

\n

Some wallets require a Destination Tag to be indicated when an XRP transaction is sent to them.  This needs to be indicated in the Destination Tag field before the transaction is sent.

\n

Hedera

\n

Some wallets require a Hedera Memo to be indicated when an HBAR transaction is sent to them.  This needs to be indicated in the Hedera Memo field before the transaction is sent.

\n

 

\n

 

\n

 

\n

 

"},{"id":234758088,"title":"Why does it cost money to send a cryptocurrency transaction?","section_id":360001021034,"promoted":true,"position":27,"body":"

The BRD wallet does not charge any fees to send a transaction. However, the cryptocurrency networks require a fee, called a \"transaction fee\". This fee is calculated based on the traffic on the cryptocurrency network, and is always displayed to you before you authorize a payment to be sent.

\n

Bitcoin and Bitcoin Cash wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low. 

\n

 

"},{"id":234978567,"title":"Why is the value of cryptocurrency sent different than the value received?","section_id":360001021034,"promoted":false,"position":28,"body":"

Money in your BRD app is always held as cryptocurrency, and the value in your local currency is displayed as an estimate only. The exchange rate used to make this estimate is always fluctuating, and depending on when a transaction is sent or received the estimated value of the transaction can change. It is common for the estimated value of a transaction to be seen differently by the sender and receiver, however the amount of cryptocurrency sent should not change. 

"}] \ No newline at end of file diff --git a/brd-android/app-core/src/main/assets/support/secondary_articles.json b/brd-android/app-core/src/main/assets/support/secondary_articles.json index a10279036..a42e065c0 100644 --- a/brd-android/app-core/src/main/assets/support/secondary_articles.json +++ b/brd-android/app-core/src/main/assets/support/secondary_articles.json @@ -1 +1 @@ -[{"id":360061687633,"title":"What is staking?","section_id":360001056433,"promoted":false,"position":0,"label_names":["curr:xtz","slug:staking"],"body":"

With Tezos, each XTZ holder can participate in the consensus of the state of the blockchain. This includes the validation of transactions as well as updates to the network's protocols.

\n

Transactions on the Tezos network are validated, signed and published to the blockchain by Bakers who maintain nodes and in return, they are rewarded tez. After the rewards are unfrozen by the Tezos network, Bakers distribute the rewards to those who placed a stake on them.

\n

You can delegate your validation rights by staking your coins on a Baker.  This allows you to participate in the validation process without having to maintain a node. 

\n

When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

\n

A baker should be chosen based on the baker’s reputation and performance in order to have some “guarantee” that the baker pays out rewards accurately and timely. This is because the pay out of rewards to delegators is not handled on-chain.

"},{"id":360061686313,"title":"How do I use the \"Request an Amount\" screen in my Tezos wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:xtz"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your Tezos address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360061686153,"title":"How can I send tez?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:xtz"],"body":"

To send money to someone you need to enter their Tezos address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of tez to be sent or another currency. 

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If tez is sent to the wrong address, it can not be refunded. When sending tez, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360046722534,"title":"How do I receive HBAR?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:hbar"],"body":"

If you would like to receive HBAR from someone, you will need to give them your HBAR Account ID. There are a few ways to do this:

\n\n

Note: You need to create an account in order to use your Hedera wallet in the BRD app.  

\n

Important: If HBAR is sent to the wrong Account ID, it cannot be refunded. When sharing your Account ID, always check to make sure the ID you give out is the same as the one shown under your QR code.

"},{"id":360046722274,"title":"Why does it cost money to send an HBAR transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:transaction-fees","curr:hbar"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the Hedera network does require a fee, called a \"transaction fee\". This fee is usually very small and is calculated based on the complexity of the transaction, and is always displayed to you before you authorize a payment to be sent.

"},{"id":360047369733,"title":"How do I use the \"Request an Amount\" screen in my HBAR wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:hbar"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your HBAR Account ID, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360046721634,"title":"How can I send HBAR?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:hbar"],"body":"

To send money to someone you need to enter their HBAR Account ID. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the recipient's Account ID, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of HBAR to be sent or another currency.

\n

There are 2 types of Memos on the HBAR wallet's send screen and both are optional to use:

\n

1.  The Hedera Memo - this is sent to the Hedera network together with the transaction, and can be seen on the ledger.

\n

2.  The BRD Memo - this will only be visible to you, and will not be sent together with the transaction.

\n

Important: If HBAR is sent to the wrong Account ID, it cannot be refunded. When sending HBAR, always check to make sure the Account ID you are sending to is the same as the one that was given to you.

"},{"id":360043395353,"title":"How do I receive XRP?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:xrp"],"body":"

If you would like to receive XRP from someone, you will need to give them your XRP address. There are a few ways to do this:

\n\n

NOTE: Because the BRD app is a non-custodial wallet, your address is not shared with anyone and you will not have a Destination tag.

\n

Important: If XRP is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360042896154,"title":"How do I use the \"Request an Amount\" screen in my XRP wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:xrp"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your XRP address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360043387213,"title":"How can I send XRP?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:xrp"],"body":"

To send money to someone you need to enter their XRP address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, enter the Destination tag.  This part is necessary if you are using a custodial wallet (the exchange or wallet provider holds the private keys to your address).  If you are using a non-custodial wallet, you may not need to enter this information. Destination tags are case sensitive.

\n

When you have filled the Address and Destination tag fields, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of XRP to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If XRP is sent to the wrong address or destination tag, it can not be refunded. When sending XRP, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360034378353,"title":"What are the Transaction History details?","section_id":360005149614,"promoted":false,"position":0,"label_names":["slug:order-history"],"body":"

The Transaction History page provides you with details about a purchase or trade you made via the BRD app. Tapping on an order will show you the following details:

\n

Transaction Type

\n

At the top of this screen you will see Buy, Sell or Trade to indicate the type of order made.

\n

Amount Bought (or sold) and Paid

\n

Right below the transaction type is the amount and currency purchased in green, followed by the amount and currency used to pay for the order underneath.

\n

Status

\n

This section will tell you if the order is pending, has been completed or failed. It also includes the date and time the order was submitted.

\n

Payment Method

\n

This will tell you which payment method was used to create the order. Our partners support purchases made via bank transfers or credit/debit cards.  Selling funds (bank transfers) is now supported in the US as well.

\n

If trading, this will say \"Cryptocurrency\".

\n

 

\n

If you tap on \"Show Details\", you will see the following additional information:

\n

Order Number

\n

If you are sending support an email to check on an order, you can send us this information along with other important information about your order to help us trace it. Tapping on the order number will copy the information to the clipboard so you can easily paste this when you send us an email!

\n

Fee

\n

Here you will see any fees applied to the order.  This will not include network fees as that can only be determined right before your cryptocurrency is sent.

\n

Exchange Rate

\n

The exchange rate used for the order will be listed in this section. When making an order you will be told on the \"Order Confirmation\" screen if the exchange rate is an estimate or fixed.

"},{"id":360023553753,"title":"How do US Bank purchases work?","section_id":360001072193,"promoted":false,"position":0,"label_names":["slug:buy-screen","pm:ach"],"body":"

The BRD app allows users in the US to buy cryptocurrencies via Bank Transfers with Wyre.

\n

The sign up process is simple and ID verification results are available in 48 hours or less.

\n

US Bank purchases go through a 2 step process:

\n

1.  The transaction goes through the ACH network.  This means that the funds need to clear in the bank before the transaction is completed. The funds leave your bank account within the first 24 hours on business days and clears in the next 3-4 business days. During this period, the customer should see the transaction marked as “Pending” in the Order History page.

\n

2.  As soon as the funds are received by Wyre, a cryptocurrency transaction is sent within minutes and the purchase order is marked \"Complete\". 

\n

The whole process takes about 3-5 business days to complete (weekends and holidays are not counted).

\n

Wyre's purchase limits for bank transfers are fixed at $2,500 on a rolling 7 day period and $10,000 per month.

"},{"id":360010024433,"title":"Why is this ERC20 token no longer supported?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:erc20","slug:unsupported-token"],"body":"

Here are some reasons why an ERC20 token may have been delisted from the BRD app:

\n

1.  The token has been moved or is moving to its own blockchain

\n

The developers of some ERC20 tokens have decided to move their tokens to their own blockchain or create a completely new ERC20 token. This would mean the old token needs to be swapped for their new one. Please reach out to the developer of this token to see which situation applies to them. 

\n

If you would like to swap your ERC20 tokens for the new tokens, the first step is to send these tokens to a platform that will support the swap. Each token developer will announce the details of token swaps in their own support channels. 

\n

If the deadline for the token swap has passed and you were unable to swap your ERC20 token for the new tokens, please reach out to the token developer's support team for assistance.

\n

2. Declining usage of the token in the BRD app

\n

In an effort to to focus on BRD's simplicity and ease of use, tokens that continually see declining usage are evaluated and disabled in the app if necessary. Please remember that a disabled token is still accessible in your app as long as it's functional on the Ethereum network as an ERC20 token.

\n

 

\n

As long as it is still supported by the Ethereum network, you will be able to send these ERC20 tokens out from the BRD app to another platform that supports the token.

"},{"id":360004996574,"title":"Why is the amount sent different than the amount received?","section_id":360001065134,"promoted":false,"position":0,"body":"

Money in your BRD wallet is always held as cryptocurrency, and the value in your local currency is displayed as an estimate only. The exchange rate used to make this estimate is always fluctuating, and depending on when a transaction is sent or received the estimated value of the transaction can change. It is common for the estimated value of a transaction to be seen differently by the sender and receiver, however the amount of cryptocurrency sent should not change.

"},{"id":360004996494,"title":"What is an ERC20 Token?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:erc20"],"body":"

ERC20 is a standard or a set of rules for ethereum based tokens. Tokens that satisfy these set of rules are called ERC20 tokens. These tokens are actually smart contracts on the ethereum network and have different values.  When sending an ERC20 token to another wallet, you will need to have enough ether in your wallet for the necessary transaction fees. 

\n

You can see the list of supported tokens by tapping \"Manage Wallets\" and then \"Add Wallet\".

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360005044473,"title":"What is Ether?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:eth"],"body":"

Ether is the currency used on the ethereum network and was proposed by Vitalik Buterin in 2013.  Ethereum is also a decentralized network and allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

 You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360004996374,"title":"What is Bitcoin Cash?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

On August 1st, 2017, the Bitcoin forked into two networks, and the new currency Bitcoin Cash was created. If you had Bitcoin in your wallet on August 1st, you were automatically credited with the same amount of Bitcoin Cash.

\n

We released a Bitcoin Cash withdrawal feature soon after the fork, allowing users to move their Bitcoin Cash out of their wallet. We now offer full Bitcoin Cash support, and any Bitcoin Cash that was in your wallet from the time of the fork or that was sent to your wallet afterwards will be accessible in your Bitcoin Cash wallet.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360004996354,"title":"What is Bitcoin?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

Bitcoin was created in 2008 and is the first decentralized digital currency. Together with the creation of bitcoin came the birth of the blockchain - the public ledger that lists all transactions ever made on the bitcoin network.

\n

 You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360005044413,"title":"Is the BRD app free?","section_id":360001071833,"promoted":false,"position":0,"body":"

Our core product is and always will be 100% free and open source. Additional, opt-in features such as the ability to buy, sell or trade cryptocurrencies may be offered through the app for a fee.

"},{"id":360005044373,"title":"What are push notifications?","section_id":360001071833,"promoted":false,"position":0,"body":"

If you enable push notifications, the BRD app will have the ability to notify you of wallet activity even when you don't have the app open. If you would like to be notified immediately every time you receive a payment or some other action completes, turn on this feature. If you do not want to be notified at all unless you have the app open, turn off push notifications.

"},{"id":360005044333,"title":"What are the fees for buying or selling cryptocurrency through the BRD app?","section_id":360001072193,"promoted":false,"position":0,"body":"

Fees, when purchasing or selling cryptocurrency through the BRD app, are different depending on the payment method used. Fees will be displayed under each payment method after choosing \"Buy/Sell\" on the BRD app's home screen.

\n

When using a crypto ATM, fees can vary based on location and are often set by the local operator. Please see the ATM itself for details.

"},{"id":360005044153,"title":"Why did my Bitcoin Cash Receive Address change?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

Whenever you receive a payment to the address shown, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app.

"},{"id":360005044133,"title":"Why did my Bitcoin Receive Address change?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

Whenever you receive a payment to the address shown, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app.

"},{"id":360004995974,"title":"Why does it cost money to send a bitcoin transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the bitcoin network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

"},{"id":360004995954,"title":"Why does it cost money to send a bitcoin cash transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the bitcoin cash network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

"},{"id":360005043553,"title":"Why does it cost money to send an ethereum or ERC20 token transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the ethereum network does require a fee, called a \"transaction fee\". This fee is calculated based on the complexity of the transaction, and is always displayed to you before you authorize a payment to be sent.

\n

Note: When sending ERC20 tokens, transaction fees are paid in ether. Make sure you have enough ether in your wallet to cover transaction fees when sending funds out. 

\n

 

"},{"id":360004995634,"title":"The BRD app couldn't be authenticated on Android.","section_id":360001065134,"promoted":false,"position":0,"body":"

The BRD app uses the hardware encryption of Android phones to secure each user's funds. In order to access this system, it requires the user to enter their device passcode or provide a fingerprint.

\n

A bug in some versions of Android can cause this authentication to not work, in which case the BRD app can not access the user's wallet. This issue has been fixed in Android version 8 and above.

\n

If you are experiencing this problem, update to Android 8 or higher. If your phone is unable to use Android 8, you can try the following, however there are some risks:

\n
    \n
  1. Make sure your recovery phrase is written down.
  2. \n
  3. In the Android settings, remove all fingerprints and device authentication by setting the screen lock setting to \"none\". This will erase all data protected by the hardware encryption, including your BRD wallet data. Other apps may be affected as well, so proceed with caution.
  4. \n
  5. Re-enable lock screen authentication and re-register your fingerprints for fingerprint authentication.
  6. \n
  7. Open the BRD app and restore your wallet with the recovery phrase.
  8. \n
\n

This solution might not work on all phones. We suggest users update to Android 8 as soon as possible.

"},{"id":360005043453,"title":"How do I get started?","section_id":360001071833,"promoted":false,"position":0,"label_names":["slug:start-view"],"body":"

Welcome to BRD!

\n

The BRD app connects directly to the bitcoin network. There are no accounts or usernames with the BRD app. Instead, you will have a \"wallet\" where you will store your money. It's just like the physical wallet you put your cash in, except that it exists only on the internet and holds digital money.

\n

If this is your first time using the BRD app, simply choose \"Get Started\" to start.

\n

If you have used the BRD app before and would like to use the same wallet, choose \"Restore Wallet\" and prepare to enter the Recovery Phrase for the wallet you would like to restore.

"},{"id":360005043113,"title":"Why is my wallet disabled?","section_id":360001065134,"promoted":false,"position":0,"label_names":["slug:wallet-disabled"],"body":"

If you enter an incorrect wallet PIN too many times, your wallet will become disabled for a certain amount of time. This is to prevent someone else from trying to guess your PIN by quickly making many guesses. If your wallet is disabled, wait until the time shown and you will be able to enter your PIN again.

\n

If you continue to enter the incorrect PIN, the amount of time you will have to wait in between attempts will increase. Eventually, the app will reset and you can start a new wallet.

\n

If you have the recovery phrase for your wallet, you can use it to reset your PIN by choosing the appropriate option on the lock screen.

"},{"id":360004995194,"title":"How do I recover a previous wallet I had with BRD?","section_id":360001071793,"promoted":false,"position":0,"label_names":["slug:recover-wallet"],"body":"

When you launch the BRD app for the first time, you will be given the option to create a new wallet or to recover a wallet. If you have a 12 word recovery phrase from a previous wallet that you would like to import, select \"Recover Wallet\" and then enter the recovery phrase. After that has completed, the wallet will need to sync in order to collect all the information it needs about your balance. Initial syncing can take many hours so please prepare to leave the app open for an extended period of time.

\n

If you wish to import a wallet using a recovery phrase but you already have an active account in the BRD app, you will need to follow the directions to wipe the wallet from your current device before beginning the process above. If the wallet you are wiping has funds, be sure to write down the 12 word recovery phrase for the existing wallet (which can be found in the Security Center) before loading the recovery phrase for the wallet you wish to import. 

"},{"id":360004995114,"title":"How do I reset my PIN with my recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:reset-pin-paper-key"],"body":"

Every time you create a new wallet with the BRD app, you are provided with a \"Recovery Phrase,\" which is a list of 12 words that can be used to restore access to your wallet if you ever lose or upgrade your phone. You can also use your Recovery Phrase to reset your wallet PIN if you forget it.

\n

Enter the 12 words from your Recovery Phrase, in order, and you will be able to choose a new PIN.

"},{"id":360004926054,"title":"How do I confirm my Recovery Phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:confirm-phrase"],"body":"

It is very important that your Recovery Phrase is written down correctly, and in the correct order. Enter the words requested to make sure everything is correct. For example, \"Word #1\" means the first word of your Recovery Phrase, \"Word #2\" means the second word, etc.

"},{"id":360004972513,"title":"Why do I need to write down my recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:write-phrase"],"body":"

The BRD app connects directly to the cryptocurrency networks, where your wallets are stored. The \"keys\" to access your wallets are securely stored in your phone and nowhere else. The BRD app will provide you with a unique \"Recovery Phrase,\" which is a list of 12-words which can be used to recreate the keys to your wallet. If you ever lose or upgrade your phone, this \"Recovery Phrase\" is required to regain access to your funds.

\n

Please write down each word, in order, on a piece of paper. We recommend storing your Recovery Phrase in a safe, safety deposit box at a bank, or wherever you might keep passports, birth certificates, or other important documents. Anyone who has your Recovery Phrase can access your money, even if they don't have your wallet PIN, so keep it private and don't show it to others!

"},{"id":360004925274,"title":"What are the ethereum or ERC20 token transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:eth","curr:erc20"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 1-5 minutes. For receiving, we have no control over how long it will take for the transaction to complete

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed. 

\n

Amount

\n

This shows detailed information about how much ether or ERC20 tokens were sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The ethereum or ERC20 token transaction ID can be used as proof that a payment was made.

"},{"id":360004972353,"title":"What are the bitcoin cash transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:bch"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Amount

\n

This shows detailed information about how much bitcoin cash was sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The bitcoin cash transaction ID can be used as proof that a payment was made.

"},{"id":360004925254,"title":"What are the bitcoin transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:btc"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes on the regular processing speed setting, 10-30 minutes on the priority setting and 1-24 hours on economy. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress.

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Amount

\n

This shows detailed information about how much bitcoin was sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The bitcoin transaction ID can be used as proof that a payment was made. If you tap on the transaction ID, the app will copy it for you so you can easily paste this when you send us an email!

"},{"id":360004953393,"title":"How do I use the \"Request an Amount\" screen in my ERC20 Token wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:erc20"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your ERC20 token address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004953373,"title":"How do I use the \"Request an Amount\" screen in my Ethereum wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:eth"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your ethereum address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004906394,"title":"How do I use the \"Request an Amount\" screen in my Bitcoin Cash wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:bch"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your bitcoin cash address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004953353,"title":"How do I use the \"Request an Amount\" screen in my Bitcoin wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:btc"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your bitcoin address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004952733,"title":"How do I receive ether or ERC20 tokens?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20","slug:receive-tx"],"body":"

If you would like to receive ether or ERC20 tokens from someone, you will need to give them your ethereum address (ERC20 tokens use the same address as your Ethereum wallet). There are a few ways to do this:

\n\n

Important: If ether or ERC20 tokens are sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952713,"title":"How do I receive bitcoin cash?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:bch","slug:receive-tx"],"body":"

If you would like to receive bitcoin cash from someone, you will need to give them your bitcoin cash address. There are a few ways to do this:

\n\n

The bitcoin cash address shown on your receive address will change every time you receive money, but old addresses will continue to work.

\n

The BRD wallet uses the \"CashAddr\" format for BCH addresses to protect customers from loss of funds. If the wallet you are using to send bitcoin cash does not support this format yet, you may need to request for it or use an online resource to convert the CashAddr to a legacy address.

\n

Important: If bitcoin cash is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952673,"title":"How do I receive bitcoin?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:btc","slug:receive-tx"],"body":"

If you would like to receive bitcoin from someone, you will need to give them your bitcoin address. There are a few ways to do this:

\n\n

The bitcoin address shown on your receive address will change every time you receive money, but old addresses will continue to work.

\n

Important: If bitcoin is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952433,"title":"How can I send bitcoin?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:btc","slug:send-tx"],"body":"

To send money to someone you need to enter their bitcoin address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of bitcoin to be sent or another currency. In the Processing Speed section, select your preferred network fee setting.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If bitcoin is sent to the wrong address, it can not be refunded. When sending bitcoin, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952413,"title":"How can I send bitcoin cash?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:bch","slug:send-tx"],"body":"

To send money to someone you need to enter their bitcoin cash address. There are three different ways to enter this information depending on how you received it:

\n\n

The BRD wallet uses the \"CashAddr\" format for BCH addresses to protect customers from loss of funds. If the wallet you are sending bitcoin cash to does not support this format yet, you may need to use an online resource to convert the legacy address to the CashAddr format.

\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of bitcoin to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If bitcoin cash is sent to the wrong address, it can not be refunded. When sending bitcoin cash, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952393,"title":"How can I send ether or ERC20 tokens?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20","slug:send-tx"],"body":"

To send money to someone you need to enter their ethereum or ERC20 token address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of ether/ERC20 token to be sent or another currency. In the Processing Speed section, select your preferred network fee setting.

\n

Note: When sending ERC20 tokens, transaction fees are paid in ether. Make sure you have enough ether in your wallet to cover transaction fees when sending funds out. 

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If ether or ERC20 tokens are sent to the wrong address, it can not be refunded. When sending ether, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004905774,"title":"What is a recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:paper-key"],"body":"

A recovery phrase consists of 12 randomly generated words. The app creates the recovery phrase for you automatically when you start a new wallet. The recovery phrase is critically important and should be written down and stored in a safe location. In the event of phone theft, destruction, or loss, the recovery phrase can be used to load your wallet onto a new phone. The phrase is also required when upgrading your current phone to a new one.

"},{"id":360004952153,"title":"What is fingerprint authentication?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:enable-fingerprint-authentication"],"body":"

Touch ID on iPhone

\n

Touch ID is available on any iPhone 5s or later, iPad Pro, iPad Air 2, or iPad mini 3 or later. If you have it enabled on your device, you can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

If Touch ID is not enabled on your device, you can enable it in your device's settings under \"Touch ID & Passcode\".

\n

Fingerprint Authorization on Android

\n

Many Android devices feature a fingerprint reader. You can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

In order to use this feature in the BRD app, fingerprint authorization must be enabled on your device. See the phone manufacturer's manual for more information.

"},{"id":360004952093,"title":"Why do I need a PIN?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:set-pin"],"body":"

The BRD app requires you to set a PIN to secure your wallet, separate from your device passcode. You will be required to enter this PIN to view your balance or send money, which keeps your wallet private even if you let someone use your phone or if your phone is stolen by someone who knows your device passcode.

\n

Do not forget your wallet PIN! It can only be reset by using your Recovery Phrase. If you forget your PIN and lose your Recovery Phrase, your wallet will be lost.

"},{"id":360004952073,"title":"What is the Security Center?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:security-center"],"body":"

The Security Center allows you to manage additional security features for your BRD app.

\n

6-digit PIN

\n

This PIN is used to unlock your wallet and send money. It prevents other people from accessing your BRD app in case you let someone else use your phone.

\n

Recovery phrase

\n

If you ever lose or upgrade your phone, you will need your Recovery Phrase to restore your wallet on another device. It is not possible to recover your wallet if you lose both your phone and Recovery Phrase, so write down your Recovery Phrase and keep it safe!

\n

Fingerprint / Touch ID

\n

While the 6-digit PIN is required to secure your wallet, you can also use your device's fingerprint reader for convenience and added security. Using your fingerprint is quicker than entering a PIN, and if people are watching you unlock your wallet they won't be able to see what your PIN is.

\n

This option will only appear if your device has a fingerprint reader.

"},{"id":360004905754,"title":"When should I sync my Bitcoin Cash wallet to the blockchain?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:re-scan","curr:bch"],"body":"

Your BRD wallet connects directly to the bitcoin cash network. This improves security and privacy, but also means sometimes your wallet can get out of sync with the network.

\n

Syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you money and it shows as confirmed in the blockchain yet it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the money was sent to is correct.

\n

If you are trying to send money and constantly get error messages that your transaction was rejected, it could also mean your wallet is out of sync.

\n

In either of this cases, using this feature will rescan the blockchain to find your money and display it properly in your wallet.

"},{"id":360004952033,"title":"When should I sync my Bitcoin wallet to the blockchain?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:re-scan","curr:btc"],"body":"

Your BRD wallet connects directly to the bitcoin network. This improves security and privacy, but also means sometimes your wallet can get out of sync with the network.

\n

Syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you money and it shows as confirmed in the blockchain yet it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the money was sent to is correct.

\n

If you are trying to send money and constantly get error messages that your transaction was rejected, it could also mean your wallet is out of sync.

\n

In either of this cases, using this feature will rescan the blockchain to find your money and display it properly in your wallet.

"},{"id":360004951973,"title":"What happens when I import a bitcoin wallet?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:import-wallet","curr:btc"],"body":"

When you import a bitcoin paper wallet, any funds stored on the paper wallet/private key will be sent into your BRD Bitcoin wallet, and will not remain on the paper wallet/private key.

\n

If you want to import a wallet created with the BRD app, tap on \"Menu\", \"Security Settings\" and \"Unlink from this device\" instead.

"},{"id":360004951933,"title":"How does the BRD app show my balance in my local currency?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:display-currency"],"body":"

Money kept in your BRD wallet is always stored as cryptocurrency. The app uses an exchange rate to show you an estimate of how much your cryptocurrencies are worth in your local currency. When you send a transaction and enter the amount to send in your local currency, the app uses the exchange rate to calculate how much cryptocurrency to send.

\n

It's possible people using other wallets are using different exchange rates, so the balance sent/received might be slight different than what other person sees.

\n

Since the exchange rate is always changing, the amount of money in your wallet as quoted in your local currency may change over time. However, your cryptocurrency balances will not change unless you send or receive these.

"},{"id":360004905674,"title":"How do I wipe my wallet?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:wipe-wallet"],"body":"

The BRD app can only have one wallet active at a time. If you choose to start a new wallet or restore an existing wallet, the currently active wallet must be erased first.

\n

If you erase your wallet without writing down its Recovery Phrase, your money will be lost. To prevent this, you must first enter your Recovery Phrase for the currently active wallet to make sure you have it written down correctly. The wallet will then be erased, and you can create a new wallet or restore a previous wallet.

"}] \ No newline at end of file +[{"id":4407288781083,"title":"How do I use the \"Request an Amount\" screen in my dogecoin wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:doge"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your dogecoin address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":4407288744731,"title":"How do I use the \"Request an Amount\" screen in my litecoin wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:ltc"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your litecoin address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":4407288724379,"title":"Why does it cost money to send a dogecoin transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:doge"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the dogecoin network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

"},{"id":4407280788379,"title":"Why does it cost money to send a litecoin transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:ltc"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the litecoin network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

\n

 

\n

 

"},{"id":4407280719387,"title":"What are the dogecoin transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:doge"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 60 minutes. For receiving, we have no control over how long it will take for the transaction to complete

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed. 

\n

Amount

\n

This shows detailed information about how much dogecoins were sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The dogecoin transaction ID can be used as proof that a payment was made.

"},{"id":4407280625819,"title":"What are the litecoin transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:ltc"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 30 minutes. For receiving, we have no control over how long it will take for the transaction to complete

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed. 

\n

Amount

\n

This shows detailed information about how much litecoins were sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The litecoin transaction ID can be used as proof that a payment was made.

"},{"id":4407288477339,"title":"How can I send dogecoin?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:doge"],"body":"

To send money to someone you need to enter their dogecoin address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of dogecoin to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If dogecoin is sent to the wrong address, it can not be refunded. When sending dogecoin, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":4407288442395,"title":"How can I send litecoin?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:ltc"],"body":"

To send money to someone you need to enter their litecoin address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of litecoin to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If litecoin is sent to the wrong address, it can not be refunded. When sending litecoin, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":4407280492955,"title":"How do I receive dogecoin?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:doge"],"body":"

If you would like to receive dogecoin from someone, you will need to give them your dogecoin address. There are a few ways to do this:

\n\n

Important: If dogecoin is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":4407288356507,"title":"How do I receive litecoin?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:ltc"],"body":"

If you would like to receive litecoin from someone, you will need to give them your litecoin address. There are a few ways to do this:

\n\n

Important: If litecoin is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360061687633,"title":"What is staking?","section_id":360001056433,"promoted":false,"position":0,"label_names":["curr:xtz","slug:staking"],"body":"

With Tezos, each XTZ holder can participate in the consensus of the state of the blockchain. This includes the validation of transactions as well as updates to the network's protocols.

\n

Transactions on the Tezos network are validated, signed and published to the blockchain by Bakers who maintain nodes and in return, they are rewarded tez. After the rewards are unfrozen by the Tezos network, Bakers distribute the rewards to those who placed a stake on them.

\n

You can delegate your validation rights by staking your coins on a Baker.  This allows you to participate in the validation process without having to maintain a node. 

\n

When you stake, you are only delegating your validation rights and not transferring your funds.  Your funds are not locked and you are free to transfer it at any time.

\n

A baker should be chosen based on the baker’s reputation and performance in order to have some “guarantee” that the baker pays out rewards accurately and timely. This is because the pay out of rewards to delegators is not handled on-chain.

"},{"id":360061686313,"title":"How do I use the \"Request an Amount\" screen in my Tezos wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:xtz"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your Tezos address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360061686153,"title":"How can I send tez?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:xtz"],"body":"

To send money to someone you need to enter their Tezos address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of tez to be sent or another currency. 

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If tez is sent to the wrong address, it can not be refunded. When sending tez, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360046722534,"title":"How do I receive HBAR?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:hbar"],"body":"

If you would like to receive HBAR from someone, you will need to give them your HBAR Account ID. There are a few ways to do this:

\n\n

Note: You need to create an account in order to use your Hedera wallet in the BRD app.  

\n

Important: If HBAR is sent to the wrong Account ID, it cannot be refunded. When sharing your Account ID, always check to make sure the ID you give out is the same as the one shown under your QR code.

"},{"id":360046722274,"title":"Why does it cost money to send an HBAR transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:transaction-fees","curr:hbar"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the Hedera network does require a fee, called a \"transaction fee\". This fee is usually very small and is calculated based on the complexity of the transaction, and is always displayed to you before you authorize a payment to be sent.

"},{"id":360047369733,"title":"How do I use the \"Request an Amount\" screen in my HBAR wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:hbar"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your HBAR Account ID, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360046721634,"title":"How can I send HBAR?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:hbar"],"body":"

To send money to someone you need to enter their HBAR Account ID. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the recipient's Account ID, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of HBAR to be sent or another currency.

\n

There are 2 types of Memos on the HBAR wallet's send screen and both are optional to use:

\n

1.  The Hedera Memo - this is sent to the Hedera network together with the transaction, and can be seen on the ledger.

\n

2.  The BRD Memo - this will only be visible to you, and will not be sent together with the transaction.

\n

Important: If HBAR is sent to the wrong Account ID, it cannot be refunded. When sending HBAR, always check to make sure the Account ID you are sending to is the same as the one that was given to you.

"},{"id":360043395353,"title":"How do I receive XRP?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:receive-tx","curr:xrp"],"body":"

If you would like to receive XRP from someone, you will need to give them your XRP address. There are a few ways to do this:

\n\n

NOTE: Because the BRD app is a non-custodial wallet, your address is not shared with anyone and you will not have a Destination tag.

\n

Important: If XRP is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360042896154,"title":"How do I use the \"Request an Amount\" screen in my XRP wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:xrp"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your XRP address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360043387213,"title":"How can I send XRP?","section_id":360001020014,"promoted":false,"position":0,"label_names":["slug:send-tx","curr:xrp"],"body":"

To send money to someone you need to enter their XRP address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, enter the Destination tag.  This part is necessary if you are using a custodial wallet (the exchange or wallet provider holds the private keys to your address).  If you are using a non-custodial wallet, you may not need to enter this information. Destination tags are case sensitive.

\n

When you have filled the Address and Destination tag fields, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of XRP to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If XRP is sent to the wrong address or destination tag, it can not be refunded. When sending XRP, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360034378353,"title":"What are the Transaction History details?","section_id":360005149614,"promoted":false,"position":0,"label_names":["slug:order-history"],"body":"

The Transaction History page provides you with details about a purchase or trade you made via the BRD app. Tapping on an order will show you the following details:

\n

Transaction Type

\n

At the top of this screen you will see Buy, Sell or Trade to indicate the type of order made.

\n

Amount Bought (or sold) and Paid

\n

Right below the transaction type is the amount and currency purchased in green, followed by the amount and currency used to pay for the order underneath.

\n

Status

\n

This section will tell you if the order is pending, has been completed or failed. It also includes the date and time the order was submitted.

\n

Payment Method

\n

This will tell you which payment method was used to create the order. Our partners support purchases made via bank transfers or credit/debit cards.  Selling funds (bank transfers) is now supported in the US as well.

\n

If trading, this will say \"Cryptocurrency\".

\n

 

\n

If you tap on \"Show Details\", you will see the following additional information:

\n

Order Number

\n

If you are sending support an email to check on an order, you can send us this information along with other important information about your order to help us trace it. Tapping on the order number will copy the information to the clipboard so you can easily paste this when you send us an email!

\n

Fee

\n

Here you will see any fees applied to the order.  This will not include network fees as that can only be determined right before your cryptocurrency is sent.

\n

Exchange Rate

\n

The exchange rate used for the order will be listed in this section. When making an order you will be told on the \"Order Confirmation\" screen if the exchange rate is an estimate or fixed.

"},{"id":360023553753,"title":"How do US Bank purchases work?","section_id":360001072193,"promoted":false,"position":0,"label_names":["slug:buy-screen","pm:ach"],"body":"

The BRD app allows users in the US to buy cryptocurrencies via Bank Transfers with Wyre.

\n

The sign up process is simple and ID verification results are available in 48 hours or less.

\n

US Bank purchases go through a 2 step process:

\n

1.  The transaction goes through the ACH network.  This means that the funds need to clear in the bank before the transaction is completed. The funds leave your bank account within the first 24 hours on business days and clears in the next 3-4 business days. During this period, the customer should see the transaction marked as “Pending” in the Order History page.

\n

2.  As soon as the funds are received by Wyre, a cryptocurrency transaction is sent within minutes and the purchase order is marked \"Complete\". 

\n

The whole process takes about 3-5 business days to complete (weekends and holidays are not counted).

\n

Wyre's purchase limits for bank transfers are fixed at $2,500 on a rolling 7 day period and $10,000 per month.

"},{"id":360010024433,"title":"Why is this ERC20 token no longer supported?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:erc20","slug:unsupported-token"],"body":"

Here are some reasons why an ERC20 token may have been delisted from the BRD app:

\n

1.  The token has been moved or is moving to its own blockchain

\n

The developers of some ERC20 tokens have decided to move their tokens to their own blockchain or create a completely new ERC20 token. This would mean the old token needs to be swapped for their new one. Please reach out to the developer of this token to see which situation applies to them. 

\n

If you would like to swap your ERC20 tokens for the new tokens, the first step is to send these tokens to a platform that will support the swap. Each token developer will announce the details of token swaps in their own support channels. 

\n

If the deadline for the token swap has passed and you were unable to swap your ERC20 token for the new tokens, please reach out to the token developer's support team for assistance.

\n

2. Declining usage of the token in the BRD app

\n

In an effort to to focus on BRD's simplicity and ease of use, tokens that continually see declining usage are evaluated and disabled in the app if necessary. Please remember that a disabled token is still accessible in your app as long as it's functional on the Ethereum network as an ERC20 token.

\n

 

\n

As long as it is still supported by the Ethereum network, you will be able to send these ERC20 tokens out from the BRD app to another platform that supports the token.

"},{"id":360004996574,"title":"Why is the amount sent different than the amount received?","section_id":360001065134,"promoted":false,"position":0,"body":"

Money in your BRD wallet is always held as cryptocurrency, and the value in your local currency is displayed as an estimate only. The exchange rate used to make this estimate is always fluctuating, and depending on when a transaction is sent or received the estimated value of the transaction can change. It is common for the estimated value of a transaction to be seen differently by the sender and receiver, however the amount of cryptocurrency sent should not change.

"},{"id":360004996494,"title":"What is an ERC20 Token?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:erc20"],"body":"

ERC20 is a standard or a set of rules for ethereum based tokens. Tokens that satisfy these set of rules are called ERC20 tokens. These tokens are actually smart contracts on the ethereum network and have different values.  When sending an ERC20 token to another wallet, you will need to have enough ether in your wallet for the necessary transaction fees. 

\n

You can see the list of supported tokens by tapping \"Manage Wallets\" and then \"Add Wallet\".

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360005044473,"title":"What is Ether?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:eth"],"body":"

Ether is the currency used on the ethereum network and was proposed by Vitalik Buterin in 2013.  Ethereum is also a decentralized network and allows smart contracts to be created on its platform so these can be executed without the need for a third party.

\n

 You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360004996374,"title":"What is Bitcoin Cash?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

On August 1st, 2017, the Bitcoin forked into two networks, and the new currency Bitcoin Cash was created. If you had Bitcoin in your wallet on August 1st, you were automatically credited with the same amount of Bitcoin Cash.

\n

We released a Bitcoin Cash withdrawal feature soon after the fork, allowing users to move their Bitcoin Cash out of their wallet. We now offer full Bitcoin Cash support, and any Bitcoin Cash that was in your wallet from the time of the fork or that was sent to your wallet afterwards will be accessible in your Bitcoin Cash wallet.

\n

You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360004996354,"title":"What is Bitcoin?","section_id":360001071833,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

Bitcoin was created in 2008 and is the first decentralized digital currency. Together with the creation of bitcoin came the birth of the blockchain - the public ledger that lists all transactions ever made on the bitcoin network.

\n

 You can switch between currencies from the Home screen, which is accessible by the back arrow (\"<\") found on the top left of any currency screen. 

"},{"id":360005044413,"title":"Is the BRD app free?","section_id":360001071833,"promoted":false,"position":0,"body":"

Our core product is and always will be 100% free and open source. Additional, opt-in features such as the ability to buy, sell or trade cryptocurrencies may be offered through the app for a fee.

"},{"id":360005044373,"title":"What are push notifications?","section_id":360001071833,"promoted":false,"position":0,"body":"

If you enable push notifications, the BRD app will have the ability to notify you of wallet activity even when you don't have the app open. If you would like to be notified immediately every time you receive a payment or some other action completes, turn on this feature. If you do not want to be notified at all unless you have the app open, turn off push notifications.

"},{"id":360005044333,"title":"What are the fees for buying or selling cryptocurrency through the BRD app?","section_id":360001072193,"promoted":false,"position":0,"body":"

Fees, when purchasing or selling cryptocurrency through the BRD app, are different depending on the payment method used. Fees will be displayed under each payment method after choosing \"Buy/Sell\" on the BRD app's home screen.

\n

When using a crypto ATM, fees can vary based on location and are often set by the local operator. Please see the ATM itself for details.

"},{"id":360005044153,"title":"Why did my Bitcoin Cash Receive Address change?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

Whenever you receive a payment to the address shown, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app.

"},{"id":360005044133,"title":"Why did my Bitcoin Receive Address change?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

Whenever you receive a payment to the address shown, a new address is automatically generated for you. By using a unique address for every transaction, you can increase privacy and security. Old addresses will still continue to work, even if they are no longer displayed in your app.

"},{"id":360004995974,"title":"Why does it cost money to send a bitcoin transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:btc"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the bitcoin network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

"},{"id":360004995954,"title":"Why does it cost money to send a bitcoin cash transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:bch"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the bitcoin cash network does require a fee, called a \"transaction fee\". This fee is calculated based on the amount of activity in your wallet, and is always displayed to you before you authorize a payment to be sent.

\n

Wallets that receive many small payments before trying to send one large transaction may be charged a higher transaction fee. If possible, combining the payments you receive into a smaller number of larger transactions can keep your transaction fees low.

"},{"id":360005043553,"title":"Why does it cost money to send an ethereum or ERC20 token transaction?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20"],"body":"

The BRD wallet does not charge any fees to send a transaction. However, the ethereum network does require a fee, called a \"transaction fee\". This fee is calculated based on the complexity of the transaction, and is always displayed to you before you authorize a payment to be sent.

\n

Note: When sending ERC20 tokens, transaction fees are paid in ether. Make sure you have enough ether in your wallet to cover transaction fees when sending funds out. 

\n

 

"},{"id":360004995634,"title":"The BRD app couldn't be authenticated on Android.","section_id":360001065134,"promoted":false,"position":0,"body":"

The BRD app uses the hardware encryption of Android phones to secure each user's funds. In order to access this system, it requires the user to enter their device passcode or provide a fingerprint.

\n

A bug in some versions of Android can cause this authentication to not work, in which case the BRD app can not access the user's wallet. This issue has been fixed in Android version 8 and above.

\n

If you are experiencing this problem, update to Android 8 or higher. If your phone is unable to use Android 8, you can try the following, however there are some risks:

\n
    \n
  1. Make sure your recovery phrase is written down.
  2. \n
  3. In the Android settings, remove all fingerprints and device authentication by setting the screen lock setting to \"none\". This will erase all data protected by the hardware encryption, including your BRD wallet data. Other apps may be affected as well, so proceed with caution.
  4. \n
  5. Re-enable lock screen authentication and re-register your fingerprints for fingerprint authentication.
  6. \n
  7. Open the BRD app and restore your wallet with the recovery phrase.
  8. \n
\n

This solution might not work on all phones. We suggest users update to Android 8 as soon as possible.

"},{"id":360005043453,"title":"How do I get started?","section_id":360001071833,"promoted":false,"position":0,"label_names":["slug:start-view"],"body":"

Welcome to BRD!

\n

The BRD app connects directly to the bitcoin network. There are no accounts or usernames with the BRD app. Instead, you will have a \"wallet\" where you will store your money. It's just like the physical wallet you put your cash in, except that it exists only on the internet and holds digital money.

\n

If this is your first time using the BRD app, simply choose \"Get Started\" to start.

\n

If you have used the BRD app before and would like to use the same wallet, choose \"Restore Wallet\" and prepare to enter the Recovery Phrase for the wallet you would like to restore.

"},{"id":360005043113,"title":"Why is my wallet disabled?","section_id":360001065134,"promoted":false,"position":0,"label_names":["slug:wallet-disabled"],"body":"

If you enter an incorrect wallet PIN too many times, your wallet will become disabled for a certain amount of time. This is to prevent someone else from trying to guess your PIN by quickly making many guesses. If your wallet is disabled, wait until the time shown and you will be able to enter your PIN again.

\n

If you continue to enter the incorrect PIN, the amount of time you will have to wait in between attempts will increase. Eventually, the app will reset and you can start a new wallet.

\n

If you have the recovery phrase for your wallet, you can use it to reset your PIN by choosing the appropriate option on the lock screen.

"},{"id":360004995194,"title":"How do I recover a previous wallet I had with BRD?","section_id":360001071793,"promoted":false,"position":0,"label_names":["slug:recover-wallet"],"body":"

When you launch the BRD app for the first time, you will be given the option to create a new wallet or to recover a wallet. If you have a 12 word recovery phrase from a previous wallet that you would like to import, select \"Recover Wallet\" and then enter the recovery phrase. After that has completed, the wallet will need to sync in order to collect all the information it needs about your balance. Initial syncing can take many hours so please prepare to leave the app open for an extended period of time.

\n

If you wish to import a wallet using a recovery phrase but you already have an active account in the BRD app, you will need to follow the directions to wipe the wallet from your current device before beginning the process above. If the wallet you are wiping has funds, be sure to write down the 12 word recovery phrase for the existing wallet (which can be found in the Security Center) before loading the recovery phrase for the wallet you wish to import. 

"},{"id":360004995114,"title":"How do I reset my PIN with my recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:reset-pin-paper-key"],"body":"

Every time you create a new wallet with the BRD app, you are provided with a \"Recovery Phrase,\" which is a list of 12 words that can be used to restore access to your wallet if you ever lose or upgrade your phone. You can also use your Recovery Phrase to reset your wallet PIN if you forget it.

\n

Enter the 12 words from your Recovery Phrase, in order, and you will be able to choose a new PIN.

"},{"id":360004926054,"title":"How do I confirm my Recovery Phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:confirm-phrase"],"body":"

It is very important that your Recovery Phrase is written down correctly, and in the correct order. Enter the words requested to make sure everything is correct. For example, \"Word #1\" means the first word of your Recovery Phrase, \"Word #2\" means the second word, etc.

"},{"id":360004972513,"title":"Why do I need to write down my recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:write-phrase"],"body":"

The BRD app connects directly to the cryptocurrency networks, where your wallets are stored. The \"keys\" to access your wallets are securely stored in your phone and nowhere else. The BRD app will provide you with a unique \"Recovery Phrase,\" which is a list of 12-words which can be used to recreate the keys to your wallet. If you ever lose or upgrade your phone, this \"Recovery Phrase\" is required to regain access to your funds.

\n

Please write down each word, in order, on a piece of paper. We recommend storing your Recovery Phrase in a safe, safety deposit box at a bank, or wherever you might keep passports, birth certificates, or other important documents. Anyone who has your Recovery Phrase can access your money, even if they don't have your wallet PIN, so keep it private and don't show it to others!

"},{"id":360004925274,"title":"What are the ethereum or ERC20 token transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:eth","curr:erc20"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 1-5 minutes. For receiving, we have no control over how long it will take for the transaction to complete

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed. 

\n

Amount

\n

This shows detailed information about how much ether or ERC20 tokens were sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The ethereum or ERC20 token transaction ID can be used as proof that a payment was made.

"},{"id":360004972353,"title":"What are the bitcoin cash transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:bch"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress. 

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Amount

\n

This shows detailed information about how much bitcoin cash was sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The bitcoin cash transaction ID can be used as proof that a payment was made.

"},{"id":360004925254,"title":"What are the bitcoin transaction details?","section_id":360001056433,"promoted":false,"position":0,"label_names":["slug:transaction-details","curr:btc"],"body":"

This screen shows details about the transaction:

\n

Status

\n

When sending with BRD, the recipient will usually receive the transaction in 10-60 minutes on the regular processing speed setting, 10-30 minutes on the priority setting and 1-24 hours on economy. For receiving, we have no control over how long it will take for the transaction to complete.

\n

If the transaction status is \"complete,\" then the transaction has successfully gone through. If this is a transaction you sent, the money is now in the wallet of the recipient. If this is a transaction you received, the money is now in your wallet, ready to be spent.

\n

If the status is not yet complete, this will show the current progress.

\n

Memo

\n

Here you can attach a note to the transaction to remind yourself what it was for. This memo will not be shared with anyone else and is only visible to you, but you can edit it at any time, even after the transaction has completed.

\n

Amount

\n

This shows detailed information about how much bitcoin was sent, how much it was worth at the time, and other details about your balance.

\n

Other

\n

At the bottom of this screen you will find additional technical details about the transaction. The bitcoin transaction ID can be used as proof that a payment was made. If you tap on the transaction ID, the app will copy it for you so you can easily paste this when you send us an email!

"},{"id":360004953393,"title":"How do I use the \"Request an Amount\" screen in my ERC20 Token wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:erc20"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your ERC20 token address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004953373,"title":"How do I use the \"Request an Amount\" screen in my Ethereum wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:eth"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your ethereum address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004906394,"title":"How do I use the \"Request an Amount\" screen in my Bitcoin Cash wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:bch"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your bitcoin cash address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004953353,"title":"How do I use the \"Request an Amount\" screen in my Bitcoin wallet?","section_id":360001020034,"promoted":false,"position":0,"label_names":["slug:request-amount","curr:btc"],"body":"

The QR code you use to receive money in your BRD wallet can contain only your bitcoin address, or it can also specify the amount of money that should be sent. If you use the “request an amount” feature, the amount of money you enter will be included in the QR code. When someone scans your QR code, the amount to send will automatically be filled out, so the sender doesn’t have to enter it themselves. This makes it easier to specify how much money should be sent, and prevent mistakes when trying to receive a specific amount of money.

"},{"id":360004952733,"title":"How do I receive ether or ERC20 tokens?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20","slug:receive-tx"],"body":"

If you would like to receive ether or ERC20 tokens from someone, you will need to give them your ethereum address (ERC20 tokens use the same address as your Ethereum wallet). There are a few ways to do this:

\n\n

Important: If ether or ERC20 tokens are sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952713,"title":"How do I receive bitcoin cash?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:bch","slug:receive-tx"],"body":"

If you would like to receive bitcoin cash from someone, you will need to give them your bitcoin cash address. There are a few ways to do this:

\n\n

The bitcoin cash address shown on your receive address will change every time you receive money, but old addresses will continue to work.

\n

The BRD wallet uses the \"CashAddr\" format for BCH addresses to protect customers from loss of funds. If the wallet you are using to send bitcoin cash does not support this format yet, you may need to request for it or use an online resource to convert the CashAddr to a legacy address.

\n

Important: If bitcoin cash is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952673,"title":"How do I receive bitcoin?","section_id":360001020034,"promoted":false,"position":0,"label_names":["curr:btc","slug:receive-tx"],"body":"

If you would like to receive bitcoin from someone, you will need to give them your bitcoin address. There are a few ways to do this:

\n\n

The bitcoin address shown on your receive address will change every time you receive money, but old addresses will continue to work.

\n

Important: If bitcoin is sent to the wrong address, it can not be refunded. When sharing your address, always check to make sure the address you give out is the same as the one shown under your QR code (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952433,"title":"How can I send bitcoin?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:btc","slug:send-tx"],"body":"

To send money to someone you need to enter their bitcoin address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of bitcoin to be sent or another currency. In the Processing Speed section, select your preferred network fee setting.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If bitcoin is sent to the wrong address, it can not be refunded. When sending bitcoin, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952413,"title":"How can I send bitcoin cash?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:bch","slug:send-tx"],"body":"

To send money to someone you need to enter their bitcoin cash address. There are three different ways to enter this information depending on how you received it:

\n\n

The BRD wallet uses the \"CashAddr\" format for BCH addresses to protect customers from loss of funds. If the wallet you are sending bitcoin cash to does not support this format yet, you may need to use an online resource to convert the legacy address to the CashAddr format.

\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of bitcoin to be sent or another currency.

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If bitcoin cash is sent to the wrong address, it can not be refunded. When sending bitcoin cash, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004952393,"title":"How can I send ether or ERC20 tokens?","section_id":360001020014,"promoted":false,"position":0,"label_names":["curr:eth","curr:erc20","slug:send-tx"],"body":"

To send money to someone you need to enter their ethereum or ERC20 token address. There are three different ways to enter this information depending on how you received it:

\n\n

Once you have entered the payment address, tap the \"Amount\" label and enter the amount you wish to send. The button to the right will allow you to toggle the view between the amount of ether/ERC20 token to be sent or another currency. In the Processing Speed section, select your preferred network fee setting.

\n

Note: When sending ERC20 tokens, transaction fees are paid in ether. Make sure you have enough ether in your wallet to cover transaction fees when sending funds out. 

\n

If you would like to save a note about this transaction, tap the \"Memo\" label. This note will only be visible to you, and will not be sent together with the transaction.

\n

Important: If ether or ERC20 tokens are sent to the wrong address, it can not be refunded. When sending ether, always check to make sure the address you are sending to is the same as the one that was given to you (comparing the first 5 or 6 digits is usually sufficient to make sure you are using the correct address).

"},{"id":360004905774,"title":"What is a recovery phrase?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:paper-key"],"body":"

A recovery phrase consists of 12 randomly generated words. The app creates the recovery phrase for you automatically when you start a new wallet. The recovery phrase is critically important and should be written down and stored in a safe location. In the event of phone theft, destruction, or loss, the recovery phrase can be used to load your wallet onto a new phone. The phrase is also required when upgrading your current phone to a new one.

"},{"id":360004952153,"title":"What is fingerprint authentication?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:enable-fingerprint-authentication"],"body":"

Touch ID on iPhone

\n

Touch ID is available on any iPhone 5s or later, iPad Pro, iPad Air 2, or iPad mini 3 or later. If you have it enabled on your device, you can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

If Touch ID is not enabled on your device, you can enable it in your device's settings under \"Touch ID & Passcode\".

\n

Fingerprint Authorization on Android

\n

Many Android devices feature a fingerprint reader. You can use your fingerprint to unlock your BRD wallet and authorize transactions instead of entering your passcode. You will still be required to enter your passcode periodically for increased security.

\n

In order to use this feature in the BRD app, fingerprint authorization must be enabled on your device. See the phone manufacturer's manual for more information.

"},{"id":360004952093,"title":"Why do I need a PIN?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:set-pin"],"body":"

The BRD app requires you to set a PIN to secure your wallet, separate from your device passcode. You will be required to enter this PIN to view your balance or send money, which keeps your wallet private even if you let someone use your phone or if your phone is stolen by someone who knows your device passcode.

\n

Do not forget your wallet PIN! It can only be reset by using your Recovery Phrase. If you forget your PIN and lose your Recovery Phrase, your wallet will be lost.

"},{"id":360004952073,"title":"What is the Security Center?","section_id":360001028133,"promoted":false,"position":0,"label_names":["slug:security-center"],"body":"

The Security Center allows you to manage additional security features for your BRD app.

\n

6-digit PIN

\n

This PIN is used to unlock your wallet and send money. It prevents other people from accessing your BRD app in case you let someone else use your phone.

\n

Recovery phrase

\n

If you ever lose or upgrade your phone, you will need your Recovery Phrase to restore your wallet on another device. It is not possible to recover your wallet if you lose both your phone and Recovery Phrase, so write down your Recovery Phrase and keep it safe!

\n

Fingerprint / Touch ID

\n

While the 6-digit PIN is required to secure your wallet, you can also use your device's fingerprint reader for convenience and added security. Using your fingerprint is quicker than entering a PIN, and if people are watching you unlock your wallet they won't be able to see what your PIN is.

\n

This option will only appear if your device has a fingerprint reader.

"},{"id":360004905754,"title":"When should I sync my Bitcoin Cash wallet to the blockchain?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:re-scan","curr:bch"],"body":"

Your BRD wallet connects directly to the bitcoin cash network. This improves security and privacy, but also means sometimes your wallet can get out of sync with the network.

\n

Syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you money and it shows as confirmed in the blockchain yet it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the money was sent to is correct.

\n

If you are trying to send money and constantly get error messages that your transaction was rejected, it could also mean your wallet is out of sync.

\n

In either of this cases, using this feature will rescan the blockchain to find your money and display it properly in your wallet.

"},{"id":360004952033,"title":"When should I sync my Bitcoin wallet to the blockchain?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:re-scan","curr:btc"],"body":"

Your BRD wallet connects directly to the bitcoin network. This improves security and privacy, but also means sometimes your wallet can get out of sync with the network.

\n

Syncing with the blockchain can take a lot of time, and usually isn't necessary. If someone sent you money and it shows as confirmed in the blockchain yet it is not appearing in your wallet, your wallet may be out of sync. First check to make sure the address the money was sent to is correct.

\n

If you are trying to send money and constantly get error messages that your transaction was rejected, it could also mean your wallet is out of sync.

\n

In either of this cases, using this feature will rescan the blockchain to find your money and display it properly in your wallet.

"},{"id":360004951973,"title":"What happens when I import a bitcoin wallet?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:import-wallet","curr:btc"],"body":"

When you import a bitcoin paper wallet, any funds stored on the paper wallet/private key will be sent into your BRD Bitcoin wallet, and will not remain on the paper wallet/private key.

\n

If you want to import a wallet created with the BRD app, tap on \"Menu\", \"Security Settings\" and \"Unlink from this device\" instead.

"},{"id":360004951933,"title":"How does the BRD app show my balance in my local currency?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:display-currency"],"body":"

Money kept in your BRD wallet is always stored as cryptocurrency. The app uses an exchange rate to show you an estimate of how much your cryptocurrencies are worth in your local currency. When you send a transaction and enter the amount to send in your local currency, the app uses the exchange rate to calculate how much cryptocurrency to send.

\n

It's possible people using other wallets are using different exchange rates, so the balance sent/received might be slight different than what other person sees.

\n

Since the exchange rate is always changing, the amount of money in your wallet as quoted in your local currency may change over time. However, your cryptocurrency balances will not change unless you send or receive these.

"},{"id":360004905674,"title":"How do I wipe my wallet?","section_id":360001029193,"promoted":false,"position":0,"label_names":["slug:wipe-wallet"],"body":"

The BRD app can only have one wallet active at a time. If you choose to start a new wallet or restore an existing wallet, the currently active wallet must be erased first.

\n

If you erase your wallet without writing down its Recovery Phrase, your money will be lost. To prevent this, you must first enter your Recovery Phrase for the currently active wallet to make sure you have it written down correctly. The wallet will then be erased, and you can create a new wallet or restore a previous wallet.

"}] \ No newline at end of file diff --git a/brd-android/app-core/src/main/java/com/breadwallet/app/Conversion.kt b/brd-android/app-core/src/main/java/com/breadwallet/app/Conversion.kt index ea5098a4d..8686e36b6 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/app/Conversion.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/app/Conversion.kt @@ -10,8 +10,8 @@ package com.breadwallet.app import com.breadwallet.breadbox.hashString import com.breadwallet.breadbox.toBigDecimal -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.TransferState +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.TransferState import java.util.Date private const val PREFIX_DELIMITER = "-" @@ -66,4 +66,4 @@ data class Trade(override val currencyCode: String, val hashString: String) : Co return Trade(currencyCode, hashString) } } -} \ No newline at end of file +} diff --git a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/BreadBox.kt b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/BreadBox.kt index 33e132389..072059693 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/BreadBox.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/BreadBox.kt @@ -8,12 +8,12 @@ */ package com.breadwallet.breadbox -import com.breadwallet.crypto.Account -import com.breadwallet.crypto.Network +import com.blockset.walletkit.Account +import com.blockset.walletkit.Network -import com.breadwallet.crypto.Wallet -import com.breadwallet.crypto.System -import com.breadwallet.crypto.Transfer +import com.blockset.walletkit.Wallet +import com.blockset.walletkit.System +import com.blockset.walletkit.Transfer import kotlinx.coroutines.flow.Flow /** Provides access to data from a lazily created [System] using [Flow]s. */ diff --git a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/CoreUtils.kt b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/CoreUtils.kt index dda050176..b40b06cd2 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/CoreUtils.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/CoreUtils.kt @@ -10,19 +10,21 @@ package com.breadwallet.breadbox -import com.breadwallet.crypto.Address -import com.breadwallet.crypto.Currency -import com.breadwallet.crypto.Network -import com.breadwallet.crypto.NetworkPeer -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.TransferDirection -import com.breadwallet.crypto.Wallet -import com.breadwallet.crypto.WalletManager -import com.breadwallet.crypto.WalletManagerState +import com.blockset.walletkit.Address +import com.blockset.walletkit.Currency +import com.blockset.walletkit.Network +import com.blockset.walletkit.NetworkPeer +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.TransferDirection +import com.blockset.walletkit.Wallet +import com.blockset.walletkit.WalletManager +import com.blockset.walletkit.WalletManagerState import com.breadwallet.tools.util.BRConstants import com.breadwallet.util.isBitcoin import com.breadwallet.util.isBitcoinCash +import com.breadwallet.util.isDoge import com.breadwallet.util.isEthereum +import com.breadwallet.util.isLitecoin import com.breadwallet.util.isRipple import com.google.common.primitives.UnsignedInteger import kotlinx.coroutines.flow.Flow @@ -148,6 +150,8 @@ val Wallet.urlScheme: String? currency.code.isEthereum() || currency.isErc20() -> "ethereum" currency.code.isRipple() -> "xrp" currency.code.isBitcoin() -> "bitcoin" + currency.code.isDoge() -> "dogecoin" + currency.code.isLitecoin() -> "litecoin" currency.code.isBitcoinCash() -> when { walletManager.network.isMainnet -> "bitcoincash" else -> "bchtest" diff --git a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/extensions.kt b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/extensions.kt index 2e8c9234c..b592465bc 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/breadbox/extensions.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/breadbox/extensions.kt @@ -8,13 +8,13 @@ */ package com.breadwallet.breadbox -import com.breadwallet.crypto.* -import com.breadwallet.crypto.Unit -import com.breadwallet.crypto.errors.AccountInitializationError -import com.breadwallet.crypto.errors.ExportablePaperWalletError -import com.breadwallet.crypto.errors.FeeEstimationError -import com.breadwallet.crypto.errors.LimitEstimationError -import com.breadwallet.crypto.errors.WalletSweeperError +import com.blockset.walletkit.* +import com.blockset.walletkit.Unit +import com.blockset.walletkit.errors.AccountInitializationError +import com.blockset.walletkit.errors.ExportablePaperWalletError +import com.blockset.walletkit.errors.FeeEstimationError +import com.blockset.walletkit.errors.LimitEstimationError +import com.blockset.walletkit.errors.WalletSweeperError import com.breadwallet.util.asyncApiCall import java.math.BigDecimal import java.math.RoundingMode diff --git a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BRButton.java b/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BRButton.java index ce1497bfa..17d91a961 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BRButton.java +++ b/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BRButton.java @@ -307,12 +307,9 @@ private void press(int duration) { ValueAnimator shadowAnim = ValueAnimator.ofFloat(SHADOW_UNPRESSED, SHADOW_PRESSED); shadowAnim.setDuration(duration); - shadowAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - shadowOffSet = (float) animation.getAnimatedValue(); - invalidate(); - } + shadowAnim.addUpdateListener(animation -> { + shadowOffSet = (float) animation.getAnimatedValue(); + invalidate(); }); shadowAnim.addListener(new ClearAnimationListener()); @@ -336,12 +333,9 @@ private void unPress(int duration) { ValueAnimator shadowAnim = ValueAnimator.ofFloat(SHADOW_PRESSED, SHADOW_UNPRESSED); shadowAnim.setDuration(duration); - shadowAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - shadowOffSet = (float) animation.getAnimatedValue(); - invalidate(); - } + shadowAnim.addUpdateListener(animation -> { + shadowOffSet = (float) animation.getAnimatedValue(); + invalidate(); }); shadowAnim.addListener(new ClearAnimationListener()); diff --git a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BaseTextView.java b/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BaseTextView.java deleted file mode 100644 index 4d928c467..000000000 --- a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/customviews/BaseTextView.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.breadwallet.legacy.presenter.customviews; - -import android.annotation.SuppressLint; -import android.content.Context; -import androidx.annotation.Nullable; -import android.util.AttributeSet; -import android.widget.TextView; - -/** - * BreadWallet - * - * Created by Mihail Gutan on 5/3/17. - * Copyright (c) 2021 Breadwinner AG - * - * SPDX-License-Identifier: BUSL-1.1 - */ -@SuppressLint("AppCompatCustomView") // we don't need to support older versions -public class BaseTextView extends TextView { - private static final float DEFAULT_LINE_SPACING = 1.3f; - - public BaseTextView(Context context) { - super(context); - } - - public BaseTextView(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - init(context, attrs); - } - - public BaseTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context, attrs); - } - - public BaseTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - init(context, attrs); - } - - private void init(Context context, AttributeSet attrs) { - setLineSpacing(0, DEFAULT_LINE_SPACING); - } - -} diff --git a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/entities/CurrencyEntity.kt b/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/entities/CurrencyEntity.kt index 169bbbc37..8dd5e5c9a 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/entities/CurrencyEntity.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/legacy/presenter/entities/CurrencyEntity.kt @@ -22,6 +22,6 @@ data class CurrencyEntity( companion object { const val serialVersionUID = 7526472295622776147L - val TAG = CurrencyEntity::class.java.name + val TAG: String = CurrencyEntity::class.java.name } } diff --git a/brd-android/app-core/src/main/java/com/breadwallet/model/FeeOption.kt b/brd-android/app-core/src/main/java/com/breadwallet/model/FeeOption.kt deleted file mode 100644 index 70880b6ef..000000000 --- a/brd-android/app-core/src/main/java/com/breadwallet/model/FeeOption.kt +++ /dev/null @@ -1,16 +0,0 @@ -/** - * BreadWallet - * - * Created by Ahsan Butt @breadwallet.com> on 5/22/19. - * Copyright (c) 2021 Breadwinner AG - * - * SPDX-License-Identifier: BUSL-1.1 - */ -package com.breadwallet.model - -/** - * Encapsulates the fee options for a transaction. - */ -enum class FeeOption { - PRIORITY, REGULAR, ECONOMY -} diff --git a/brd-android/app-core/src/main/java/com/breadwallet/model/TokenItem.kt b/brd-android/app-core/src/main/java/com/breadwallet/model/TokenItem.kt index dfe7166d0..e4f7e4e5c 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/model/TokenItem.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/model/TokenItem.kt @@ -10,7 +10,9 @@ package com.breadwallet.model import com.breadwallet.util.isBitcoin import com.breadwallet.util.isBitcoinCash +import com.breadwallet.util.isDoge import com.breadwallet.util.isEthereum +import com.breadwallet.util.isLitecoin import com.breadwallet.util.isRipple data class TokenItem( @@ -18,6 +20,7 @@ data class TokenItem( val symbol: String, val name: String, var image: String?, + var backgroundImage: String?, val isSupported: Boolean, val currencyId: String, val type: String = "", @@ -26,12 +29,14 @@ data class TokenItem( val coingeckoId: String? = null ) { - val isNative: Boolean = type.isBlank() + val isNative: Boolean = type.isBlank() || type == "native" - fun urlScheme(testnet: Boolean): String? = when { + private fun urlScheme(testnet: Boolean): String? = when { symbol.isEthereum() || type == "erc20" -> "ethereum" symbol.isRipple() -> "xrp" symbol.isBitcoin() -> "bitcoin" + symbol.isDoge() -> "dogecoin" + symbol.isLitecoin() -> "litecoin" symbol.isBitcoinCash() -> when { testnet -> "bchtest" else -> "bitcoincash" diff --git a/brd-android/app-core/src/main/java/com/breadwallet/platform/entities/WalletInfoData.kt b/brd-android/app-core/src/main/java/com/breadwallet/platform/entities/WalletInfoData.kt index 8f94ee7b1..70999f29c 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/platform/entities/WalletInfoData.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/platform/entities/WalletInfoData.kt @@ -1,6 +1,6 @@ package com.breadwallet.platform.entities -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.WalletManagerMode import com.breadwallet.logger.logError import com.platform.util.getIntOrDefault import com.platform.util.getLongOrDefault diff --git a/brd-android/app-core/src/main/java/com/breadwallet/platform/interfaces/AccountMetaDataProvider.kt b/brd-android/app-core/src/main/java/com/breadwallet/platform/interfaces/AccountMetaDataProvider.kt index 401e6d1d6..2f12d29e0 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/platform/interfaces/AccountMetaDataProvider.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/platform/interfaces/AccountMetaDataProvider.kt @@ -12,9 +12,9 @@ import com.breadwallet.protocols.messageexchange.entities.PairingMetaData import kotlinx.coroutines.flow.Flow import com.breadwallet.platform.entities.TxMetaData import com.breadwallet.platform.entities.WalletInfoData -import com.breadwallet.crypto.Account -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.Account +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.WalletManagerMode import com.breadwallet.platform.entities.TxMetaDataValue import java.util.Date diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.java b/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.java deleted file mode 100644 index c79b080be..000000000 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.breadwallet.tools.animation; - -import android.content.Context; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.view.animation.ScaleAnimation; - -import com.breadwallet.appcore.R; - -/** - * BreadWallet - * - * Created by Mihail Gutan on 6/24/15. - * Copyright (c) 2021 Breadwinner AG - * - * SPDX-License-Identifier: BUSL-1.1 - */ - -public class SpringAnimator { - private static final String TAG = SpringAnimator.class.getName(); - - public static void showExpandCameraGuide(final View view) { - if (view != null) { - view.setVisibility(View.GONE); - } - ScaleAnimation trans = new ScaleAnimation(0.0f, 1f, 0.0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - trans.setDuration(800); - trans.setInterpolator(new DecelerateOvershootInterpolator(1.5f, 2.5f)); - if (view != null) { - view.setVisibility(View.VISIBLE); - view.startAnimation(trans); - } - - } - - /** - * Shows the springy animation on views - */ - public static void springView(final View view) { - if (view == null) return; - ScaleAnimation trans = new ScaleAnimation(0.8f, 1f, 0.8f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - trans.setDuration(1000); - trans.setInterpolator(new DecelerateOvershootInterpolator(0.5f, 1f)); - view.setVisibility(View.VISIBLE); - view.startAnimation(trans); - - } - /** - * Shows the springy animation on views - */ - public static void shortSpringView(final View view) { - if (view == null) return; - ScaleAnimation trans = new ScaleAnimation(0.9f, 1f, 0.9f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - trans.setDuration(200); - trans.setInterpolator(new DecelerateOvershootInterpolator(1.3f, 1.4f)); - view.setVisibility(View.VISIBLE); - view.startAnimation(trans); - - } - - /** - * Shows the springy bubble animation on views - */ - public static void showBubbleAnimation(final View view) { - if (view == null) return; - ScaleAnimation trans = new ScaleAnimation(0.75f, 1f, 0.75f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - trans.setDuration(300); - trans.setInterpolator(new DecelerateOvershootInterpolator(1.0f, 1.85f)); - view.setVisibility(View.VISIBLE); - view.startAnimation(trans); - } - - public static void failShakeAnimation(Context context, View view) { - if (view == null) return; - Animation shake = AnimationUtils.loadAnimation(context, R.anim.shake); - view.setVisibility(View.VISIBLE); - view.startAnimation(shake); - } - -} \ No newline at end of file diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.kt new file mode 100644 index 000000000..4403b2c1d --- /dev/null +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/SpringAnimator.kt @@ -0,0 +1,95 @@ +/* + * BreadWallet + * + * Created by Amit Goel on 10/08/2021 + * Copyright (c) 2021 Breadwinner AG + * + * SPDX-License-Identifier: BUSL-1.1 + */ + +/** + * BreadWallet + * + * Created by Mihail Gutan @breadwallet.com> on 6/24/15. + * Copyright (c) 2021 Breadwinner AG + * + * SPDX-License-Identifier: BUSL-1.1 + */ +package com.breadwallet.tools.animation + +import android.content.Context +import android.view.View +import android.view.animation.ScaleAnimation +import android.view.animation.Animation +import android.view.animation.AnimationUtils +import com.breadwallet.appcore.R + +object SpringAnimator { + fun showExpandCameraGuide(view: View?) { + if (view != null) { + view.visibility = View.GONE + } + val trans = ScaleAnimation( + 0.0f, 1f, 0.0f, 1f, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f + ) + trans.duration = 800 + trans.interpolator = DecelerateOvershootInterpolator(1.5f, 2.5f) + if (view != null) { + view.visibility = View.VISIBLE + view.startAnimation(trans) + } + } + + /** + * Shows the springy animation on views + */ + fun springView(view: View?) { + if (view == null) return + val trans = ScaleAnimation( + 0.8f, 1f, 0.8f, 1f, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f + ) + trans.duration = 1000 + trans.interpolator = DecelerateOvershootInterpolator(0.5f, 1f) + view.visibility = View.VISIBLE + view.startAnimation(trans) + } + + /** + * Shows the springy animation on views + */ + fun shortSpringView(view: View?) { + if (view == null) return + val trans = ScaleAnimation( + 0.9f, 1f, 0.9f, 1f, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f + ) + trans.duration = 200 + trans.interpolator = DecelerateOvershootInterpolator(1.3f, 1.4f) + view.visibility = View.VISIBLE + view.startAnimation(trans) + } + + /** + * Shows the springy bubble animation on views + */ + fun showBubbleAnimation(view: View?) { + if (view == null) return + val trans = ScaleAnimation( + 0.75f, 1f, 0.75f, 1f, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f + ) + trans.duration = 300 + trans.interpolator = DecelerateOvershootInterpolator(1.0f, 1.85f) + view.visibility = View.VISIBLE + view.startAnimation(trans) + } + + fun failShakeAnimation(context: Context?, view: View?) { + if (view == null) return + val shake = AnimationUtils.loadAnimation(context, R.anim.shake) + view.visibility = View.VISIBLE + view.startAnimation(shake) + } +} \ No newline at end of file diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/UiUtils.java b/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/UiUtils.java index 37a27409f..ff00c046b 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/UiUtils.java +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/animation/UiUtils.java @@ -25,8 +25,6 @@ public class UiUtils { public static final int CLICK_PERIOD_ALLOWANCE = 300; - public static final String ARTICLE_QUERY_STRING = "/article?slug="; - public static final String CURRENCY_QUERY_STRING = "¤cy="; private static final String TAG = UiUtils.class.getName(); private static long mLastClickTime = 0; @@ -59,14 +57,6 @@ public static boolean isClickAllowed() { return allow; } - private static void setStatusBarColor(Activity app, int color) { - if (app == null) return; - Window window = app.getWindow(); - window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - window.setStatusBarColor(app.getColor(color)); - } - public static boolean isMainThread() { boolean isMain = Looper.myLooper() == Looper.getMainLooper(); if (isMain) { diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/crypto/CryptoHelper.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/crypto/CryptoHelper.kt index 9fab1c2aa..03aa59fef 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/crypto/CryptoHelper.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/crypto/CryptoHelper.kt @@ -9,10 +9,10 @@ package com.breadwallet.tools.crypto import android.text.format.DateUtils -import com.breadwallet.crypto.Coder -import com.breadwallet.crypto.Hasher -import com.breadwallet.crypto.Key -import com.breadwallet.crypto.Signer +import com.blockset.walletkit.Coder +import com.blockset.walletkit.Hasher +import com.blockset.walletkit.Key +import com.blockset.walletkit.Signer import java.nio.ByteBuffer import java.nio.ByteOrder diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.kt index 15a52505e..604712d70 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.kt @@ -10,7 +10,6 @@ package com.breadwallet.tools.manager import android.content.Context import android.content.SharedPreferences -import android.text.format.DateUtils import androidx.annotation.VisibleForTesting import androidx.core.content.edit import com.brd.api.BrdApiHost @@ -32,9 +31,9 @@ import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch -import org.kodein.di.android.closestKodein +import org.kodein.di.android.closestDI import org.kodein.di.direct -import org.kodein.di.erased.instance +import org.kodein.di.instance import java.util.Currency import java.util.Locale import java.util.UUID @@ -102,8 +101,8 @@ object BRSharedPrefs { private const val APP_RATE_PROMPT_DONT_ASK_AGAIN = "app-rate-prompt-dont-ask-again" private const val APP_RATE_PROMPT_SHOULD_PROMPT = "app-rate-prompt-should-prompt" private const val APP_RATE_PROMPT_SHOULD_PROMPT_DEBUG = "app-rate-prompt-should-prompt-debug" + private const val APP_RATE_PROMPT_HAS_RATED = "appReviewPromptHasRated" const val APP_FOREGROUNDED_COUNT = "appForegroundedCount" - const val APP_RATE_PROMPT_HAS_RATED = "appReviewPromptHasRated" private val secureTimeFlow = MutableSharedFlow(replay = 1) @@ -112,7 +111,7 @@ object BRSharedPrefs { * This removes the need for a context parameter. */ fun initialize(context: Context, applicationScope: CoroutineScope) { - val kodein by closestKodein(context) + val kodein by closestDI(context) brdPreferences = kodein.direct.instance() brdPrefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) applicationScope.launch { @@ -269,8 +268,12 @@ object BRSharedPrefs { fun getDebugHost(): String? = brdPreferences.debugApiHost - fun getApiHost(): String { - return BrdApiHost.hostFor(BuildConfig.DEBUG, brdPreferences.hydraActivated).host + fun getApiHost(): BrdApiHost { + return BrdApiHost.hostFor(BuildConfig.DEBUG, brdPreferences.hydraActivated) + } + + fun getApiHostString(): String { + return getApiHost().host } fun clearAllPrefs() = brdPrefs.edit { clear() } diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/security/BrdUserManager.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/security/BrdUserManager.kt index f8c79130f..f0441f747 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/security/BrdUserManager.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/security/BrdUserManager.kt @@ -8,7 +8,7 @@ */ package com.breadwallet.tools.security -import com.breadwallet.crypto.Account +import com.blockset.walletkit.Account import kotlinx.coroutines.flow.Flow /** Manages creation, recovery, and access to an [Account]. */ @@ -48,4 +48,4 @@ interface BrdUserManager { fun putBdbJwt(jwt: String, exp: Long) fun onActivityResult(requestCode: Int, resultCode: Int) -} \ No newline at end of file +} diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/sqlite/RatesDataSource.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/sqlite/RatesDataSource.kt index d1cf68f10..c37ca56ce 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/sqlite/RatesDataSource.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/sqlite/RatesDataSource.kt @@ -18,13 +18,14 @@ import com.breadwallet.legacy.presenter.entities.CurrencyEntity import com.breadwallet.tools.manager.BRReportsManager import com.breadwallet.tools.util.BRConstants import com.breadwallet.tools.util.Utils -import org.kodein.di.KodeinAware -import org.kodein.di.android.closestKodein -import org.kodein.di.erased.instance +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance import java.util.ArrayList import java.util.Locale -class RatesDataSource private constructor(context: Context) : BRDataSourceInterface, KodeinAware { +class RatesDataSource private constructor(context: Context) : BRDataSourceInterface, DIAware { // Database fields private var database: SQLiteDatabase? = null @@ -36,7 +37,7 @@ class RatesDataSource private constructor(context: Context) : BRDataSourceInterf BRSQLiteHelper.CURRENCY_ISO ) - override val kodein by closestKodein { context } + override val di: DI by closestDI { context } private val breadBox by instance() fun putCurrencies(currencyEntities: Collection): Boolean { diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/BRConstants.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/BRConstants.kt index 2688125ac..02f8aaa51 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/BRConstants.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/BRConstants.kt @@ -15,6 +15,8 @@ const val eth = "eth" const val bch = "bch" const val hbar = "hbar" const val xtz = "xtz" +const val doge = "doge" +const val ltc = "ltc" object BRConstants { /** @@ -185,7 +187,6 @@ object BRConstants { const val TOKEN = "token" const val STAGING = "staging" const val STAGE = "stage" - const val CURRENCY_ERC20 = "erc20" const val RATES = "rates" const val CURRENCY = "currency" const val UTF_8 = "UTF-8" diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/FileHelper.java b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/FileHelper.java index 32da67826..f596a181e 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/FileHelper.java +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/FileHelper.java @@ -18,57 +18,8 @@ public class FileHelper { private static final String TAG = FileHelper.class.getName(); - private static final String CORE_DATA_FILE_NAME = "coreData"; - private static String mCoreDataFilePath; - public static void printDirectoryTree(File folder) { - if (!folder.isDirectory()) { - throw new IllegalArgumentException("folder is not a Directory"); - } - Log.e(TAG, folder.getAbsolutePath()); - int indent = 0; - StringBuilder sb = new StringBuilder(); - printDirectoryTree(folder, indent, sb); - Log.e(TAG, sb.toString()); - } - - private static void printDirectoryTree(File folder, int indent, - StringBuilder sb) { - if (!folder.isDirectory()) { - throw new IllegalArgumentException("folder is not a Directory"); - } - sb.append(getIndentString(indent)); - sb.append("+--"); - sb.append(folder.getName()); - sb.append("/"); - sb.append("\n"); - for (File file : folder.listFiles()) { - if (file.isDirectory()) { - printDirectoryTree(file, indent + 1, sb); - } else { - printFile(file, indent + 1, sb); - } - } - - } - - private static void printFile(File file, int indent, StringBuilder sb) { - sb.append(getIndentString(indent)); - sb.append("+--"); - sb.append(file.getName()); - sb.append("\n"); - } - - private static String getIndentString(int indent) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < indent; i++) { - sb.append("| "); - } - return sb.toString(); - } - - - public static File saveToExternalStorage(Context context, String fileName, String data) { + public static File saveToExternalStorage(Context context, String fileName, String data) { File file = new File(context.getExternalCacheDir(), fileName); file.setReadable(true, false); try { @@ -92,19 +43,4 @@ public static File saveToExternalStorage(Context context, String fileName, Stri } return file; } - - /** - * Returns the core data file full path. - * @param context The context. - * @return The file path. - */ - public synchronized static String getCoreDataFilePath(Context context) { - if (Utils.isNullOrEmpty(mCoreDataFilePath)) { - // Create the storage file for core to save currencies data. - File storageFile = new File(context.getFilesDir(), CORE_DATA_FILE_NAME); - mCoreDataFilePath = storageFile.getAbsolutePath(); - storageFile.mkdirs(); - } - return mCoreDataFilePath; - } } diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/TokenUtil.kt b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/TokenUtil.kt index faa9d20b5..839d3cf0f 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/TokenUtil.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/TokenUtil.kt @@ -9,7 +9,6 @@ package com.breadwallet.tools.util import android.content.Context -import com.breadwallet.appcore.BuildConfig import com.breadwallet.logger.logError import com.breadwallet.model.TokenItem import com.breadwallet.theme.R @@ -31,7 +30,6 @@ import java.io.File import java.io.IOException import java.util.ArrayList import java.util.HashMap -import java.util.Locale import kotlin.properties.Delegates object TokenUtil { @@ -51,6 +49,7 @@ object TokenUtil { private const val FIELD_COINGECK_ID = "coingecko" private const val ICON_DIRECTORY_NAME_WHITE_NO_BACKGROUND = "white-no-bg" private const val ICON_DIRECTORY_NAME_WHITE_SQUARE_BACKGROUND = "white-square-bg" + private const val ICON_DIRECTORY_NAME_BACKGROUND_OVERLAY_IMAGE = "bg-overlay-image" private const val ICON_FILE_NAME_FORMAT = "%s.png" private const val START_COLOR_INDEX = 0 private const val END_COLOR_INDEX = 1 @@ -228,6 +227,20 @@ object TokenUtil { return if (iconFile.exists()) iconFile.absolutePath else null } + fun getTokenBackgroundPath(currencyCode: String): String? { + val bundleResource = ServerBundlesHelper + .getExtractedPath( + context, + ServerBundlesHelper.getBundle(ServerBundlesHelper.Type.TOKEN), + null + ) + val iconFileName = ICON_FILE_NAME_FORMAT.format(currencyCode.lowercase()) + val iconDirectoryName = ICON_DIRECTORY_NAME_BACKGROUND_OVERLAY_IMAGE + val iconDir = File(bundleResource, iconDirectoryName) + val iconFile = File(iconDir, iconFileName) + return if (iconFile.exists()) iconFile.absolutePath else null + } + fun getTokenStartColor(currencyCode: String): String? { val tokenItem = tokenMap[currencyCode.lowercase()] return if (tokenItem != null && !tokenItem.startColor.isNullOrBlank()) { @@ -270,6 +283,7 @@ object TokenUtil { symbol = getString(FIELD_CODE), name = name, image = null, + backgroundImage = null, isSupported = getBooleanOrDefault(FIELD_IS_SUPPORTED, true), currencyId = getString(FIELD_CURRENCY_ID), type = getString(FIELD_TYPE), diff --git a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/Utils.java b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/Utils.java index 98be145c8..ee303a865 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/tools/util/Utils.java +++ b/brd-android/app-core/src/main/java/com/breadwallet/tools/util/Utils.java @@ -73,7 +73,7 @@ public static boolean isUsingCustomInputMethod(Context context) { } @SuppressWarnings("deprecation") - public static void printPhoneSpecs(Context context) { + public static void printPhoneSpecs() { String specsTag = "PHONE SPECS"; Log.e(specsTag, ""); Log.e(specsTag, "***************************PHONE SPECS***************************"); @@ -85,50 +85,14 @@ public static void printPhoneSpecs(Context context) { Log.e(specsTag, ""); } - public static String getFormattedDateFromLong(Context app, long time) { - - SimpleDateFormat formatter = new SimpleDateFormat("M/d@ha", Locale.getDefault()); - boolean is24HoursFormat = false; - if (app != null) { - is24HoursFormat = android.text.format.DateFormat.is24HourFormat(app.getApplicationContext()); - if (is24HoursFormat) { - formatter = new SimpleDateFormat("M/d H", Locale.getDefault()); - } - } - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(time); - String result = formatter.format(calendar.getTime()).toLowerCase().replace("am", "a").replace("pm", "p"); - if (is24HoursFormat) result += "h"; - return result; - } - - public static String formatTimeStamp(long time, String pattern) { -// SimpleDateFormat formatter = new SimpleDateFormat(pattern, Locale.getDefault()); -// Calendar calendar = Calendar.getInstance(); -// calendar.setTimeInMillis(time); - return android.text.format.DateFormat.format(pattern, time).toString(); - } - public static boolean isNullOrEmpty(String str) { return str == null || str.isEmpty(); } - public static boolean isNumber(String str) { - return !Utils.isNullOrEmpty(str) && str.matches(NUMBER_PATTERN); - } - - public static boolean isNullOrZero(BigDecimal amount) { - return amount == null || amount.compareTo(BigDecimal.ZERO) == 0; - } - public static boolean isNullOrEmpty(byte[] arr) { return arr == null || arr.length == 0; } - public static boolean isNullOrEmpty(Collection collection) { - return collection == null || collection.size() == 0; - } - public static int getPixelsFromDps(Context context, int dps) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dps * scale + 0.5f); diff --git a/brd-android/app-core/src/main/java/com/breadwallet/util/AsyncCompletionHandler.kt b/brd-android/app-core/src/main/java/com/breadwallet/util/AsyncCompletionHandler.kt index 34c1f33d3..3752a19c3 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/util/AsyncCompletionHandler.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/util/AsyncCompletionHandler.kt @@ -8,7 +8,7 @@ */ package com.breadwallet.util -import com.breadwallet.crypto.utility.CompletionHandler +import com.blockset.walletkit.utility.CompletionHandler import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first diff --git a/brd-android/app-core/src/main/java/com/breadwallet/util/CurrencyCode.kt b/brd-android/app-core/src/main/java/com/breadwallet/util/CurrencyCode.kt index b9702cb04..ab53eb1d2 100644 --- a/brd-android/app-core/src/main/java/com/breadwallet/util/CurrencyCode.kt +++ b/brd-android/app-core/src/main/java/com/breadwallet/util/CurrencyCode.kt @@ -10,8 +10,10 @@ package com.breadwallet.util import com.breadwallet.tools.util.bch import com.breadwallet.tools.util.btc +import com.breadwallet.tools.util.doge import com.breadwallet.tools.util.eth import com.breadwallet.tools.util.hbar +import com.breadwallet.tools.util.ltc import com.breadwallet.tools.util.xtz typealias CurrencyCode = String @@ -24,7 +26,10 @@ fun CurrencyCode.isBrd(): Boolean = equals("brd", true) fun CurrencyCode.isRipple(): Boolean = equals("xrp", true) fun CurrencyCode.isHedera(): Boolean = equals(hbar, true) fun CurrencyCode.isTezos(): Boolean = equals(xtz, true) +fun CurrencyCode.isDoge(): Boolean = equals(doge, true) +fun CurrencyCode.isLitecoin(): Boolean = equals(ltc, true) + fun CurrencyCode.isErc20(): Boolean { - return !isBitcoin() && !isBitcoinCash() && !isEthereum() && !isRipple() && !isHedera() && !isTezos() + return !isBitcoin() && !isBitcoinCash() && !isEthereum() && !isRipple() && !isHedera() && !isTezos() && !isDoge() && !isLitecoin() } diff --git a/brd-android/app-core/src/main/java/com/platform/APIClient.kt b/brd-android/app-core/src/main/java/com/platform/APIClient.kt index ff6ee0538..66d356497 100644 --- a/brd-android/app-core/src/main/java/com/platform/APIClient.kt +++ b/brd-android/app-core/src/main/java/com/platform/APIClient.kt @@ -22,9 +22,9 @@ import android.content.* import android.net.* import android.os.* import androidx.annotation.* -import com.brd.prefs.* +import com.brd.api.BrdApiClient +import com.blockset.walletkit.Key import com.breadwallet.appcore.BuildConfig -import com.breadwallet.crypto.Key import com.breadwallet.logger.* import com.breadwallet.repository.* import com.breadwallet.tools.animation.* @@ -32,26 +32,22 @@ import com.breadwallet.tools.crypto.* import com.breadwallet.tools.manager.* import com.breadwallet.tools.security.* import com.breadwallet.tools.util.* -import com.breadwallet.tools.util.BRConstants.CONTENT_TYPE_JSON_CHARSET_UTF8 import com.breadwallet.tools.util.BRConstants.DATE -import com.breadwallet.tools.util.BRConstants.HEADER_ACCEPT import com.platform.tools.* import kotlinx.coroutines.* import okhttp3.* -import okhttp3.MediaType.Companion.toMediaType -import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.ResponseBody.Companion.toResponseBody import okio.* -import org.json.* -import org.kodein.di.* -import org.kodein.di.android.* -import org.kodein.di.erased.* +import org.kodein.di.android.closestDI +import org.kodein.di.direct +import org.kodein.di.instance import java.io.IOException +import java.lang.NumberFormatException import java.lang.StringBuffer import java.lang.System import java.text.* +import java.text.ParseException import java.util.* -import java.util.concurrent.* import java.util.concurrent.atomic.* private const val UNAUTHED_HTTP_STATUS = 401 @@ -59,7 +55,8 @@ private const val UNAUTHED_HTTP_STATUS = 401 class APIClient( private var context: Context, private val userManager: BrdUserManager, - private val brdPreferences: BrdPreferences, + private val brdApiClient: BrdApiClient, + private val okHttpClient: OkHttpClient, headers: Map ) { @@ -83,63 +80,9 @@ class APIClient( private var mIsFetchingToken: Boolean = false - private val mHTTPClient: OkHttpClient by lazy { - OkHttpClient.Builder() - .followRedirects(false) - .connectTimeout(CONNECTION_TIMEOUT_SECONDS.toLong(), TimeUnit.SECONDS) - .readTimeout(CONNECTION_TIMEOUT_SECONDS.toLong(), TimeUnit.SECONDS) - .writeTimeout(CONNECTION_TIMEOUT_SECONDS.toLong(), TimeUnit.SECONDS) - .build() - } - private var mIsPlatformUpdating = false private val mItemsLeftToUpdate = AtomicInteger(0) - val token: String? - @Synchronized get() { - if (mIsFetchingToken || brdPreferences.hydraActivated) { - return null - } - mIsFetchingToken = true - - if (UiUtils.isMainThread()) { - throw NetworkOnMainThreadException() - } - try { - val strUtl = getBaseURL() + TOKEN_PATH - - val authKey = authKey - if (authKey != null) { - val requestBody = JSONObject().run { - val encodedPublicKey = authKey.encodeAsPublic().toString(Charsets.UTF_8) - val pubkey = - CryptoHelper.hexDecode(encodedPublicKey) ?: encodedPublicKey.toByteArray(Charsets.UTF_8) - put(PUBKEY, CryptoHelper.base58Encode(pubkey)) - put(DEVICE_ID, BRSharedPrefs.getDeviceId()) - toString().toRequestBody(CONTENT_TYPE_JSON_CHARSET_UTF8.toMediaType()) - } - val request = Request.Builder() - .url(strUtl) - .header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON_CHARSET_UTF8) - .header(HEADER_ACCEPT, CONTENT_TYPE_JSON_CHARSET_UTF8) - .post(requestBody).build() - val response = sendRequest(request, false) - if (response.bodyText.isBlank()) { - logError("getToken: retrieving token failed") - return null - } - val obj = JSONObject(response.bodyText) - - return obj.getString(TOKEN) - } - } catch (e: JSONException) { - logError("getToken: ", e) - } finally { - mIsFetchingToken = false - } - return null - } - /** * Return the current language code i.e. "en_US" for US English. */ @@ -193,7 +136,7 @@ class APIClient( val rawResponse: Response try { - rawResponse = mHTTPClient.newCall(request).execute() + rawResponse = okHttpClient.newCall(request).execute() } catch (e: IOException) { logError("sendRequest: ", e) val message = e.message ?: "" @@ -308,8 +251,8 @@ class APIClient( for (name in res.headers.names()) { headers[name.lowercase()] = res.header(name)!! if (name.equals(DATE, true)) { - val dateValue = res.header(name)!! - DATE_FORMAT.parse(dateValue) + res.header(name) + ?.run(::parseGmtDate) ?.time ?.run(BRSharedPrefs::putSecureTime) } @@ -361,11 +304,11 @@ class APIClient( "" } - DATE_FORMAT.timeZone = TimeZone.getTimeZone(GMT) - val httpDate = DATE_FORMAT.format(Date()) - .run { substring(0, indexOf(GMT) + GMT.length) } - - modifiedRequest.header(BRConstants.DATE, httpDate) + val httpDate = formatGmtDate(Date()) + ?.run { substring(0, indexOf(GMT) + GMT.length) } + ?.also { httpDate -> + modifiedRequest.header(DATE, httpDate) + } val queryString = request.url.encodedQuery val url = request.url.encodedPath + if (queryString.isNullOrBlank()) "" else "?$queryString" @@ -379,7 +322,12 @@ class APIClient( """.trimIndent() val signedRequest = signRequest(requestString, authKey ?: return null) ?: return null - val authValue = "$BREAD $token:$signedRequest" + val clientToken = brdApiClient.brdAuthProvider.clientToken() + val authValue = if (clientToken == null) { + "$BREAD $token:$signedRequest" + } else { + "$BREAD2 $clientToken:$token:$signedRequest" + } return modifiedRequest .header(BRConstants.AUTHORIZATION, authValue) .build() @@ -387,7 +335,7 @@ class APIClient( private fun isBreadChallenge(resp: Response): Boolean { val challenge = resp.header(BRConstants.HEADER_WWW_AUTHENTICATE) - return challenge != null && challenge.startsWith(BREAD) + return (challenge != null && challenge.startsWith(BREAD)) || resp.code == 403 } fun buildUrl(path: String): String { @@ -505,6 +453,7 @@ class APIClient( @VisibleForTesting const val BREAD = "bread" + const val BREAD2 = "bread2" private const val NETWORK_ERROR_CODE = 599 private const val SYNC_ITEMS_COUNT = 4 private const val FEATURE_FLAG_PATH = "/me/features" @@ -513,7 +462,7 @@ class APIClient( // convenience getter for the API endpoint private val BASE_URL - get() = HTTPS_SCHEME + host + get() = if(!host.startsWith(HTTPS_SCHEME)) HTTPS_SCHEME + host else host //Fee per kb url private const val FEE_PER_KB_URL = "/v1/fee-per-kb" @@ -539,14 +488,30 @@ class APIClient( const val UA_APP_NAME = "breadwallet/" const val UA_PLATFORM = "android/" - val DATE_FORMAT = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US) + private val DATE_FORMAT = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US) + .apply { timeZone = TimeZone.getTimeZone(GMT) } private const val CONNECTION_TIMEOUT_SECONDS = 30 + fun parseGmtDate(dateString: String): Date? { + return try { + DATE_FORMAT.parse(dateString) + } catch (e: ParseException) { + null + } catch (e: NumberFormatException) { + // occurs occasionally on some devices running Android 10 + null + } + } + + fun formatGmtDate(date: Date): String? { + return DATE_FORMAT.format(date) + } + @JvmStatic @Synchronized @Deprecated("Retrieve from the Application Kodein instance.") fun getInstance(context: Context): APIClient { - val kodein by closestKodein(context) + val kodein by closestDI(context) return kodein.direct.instance() } @@ -558,7 +523,7 @@ class APIClient( return host } } - return BRSharedPrefs.getApiHost() + return BRSharedPrefs.getApiHostString() } @JvmStatic diff --git a/brd-android/app-core/src/main/java/com/platform/tools/TokenHolder.kt b/brd-android/app-core/src/main/java/com/platform/tools/TokenHolder.kt index 54a51681f..dad35fbb9 100644 --- a/brd-android/app-core/src/main/java/com/platform/tools/TokenHolder.kt +++ b/brd-android/app-core/src/main/java/com/platform/tools/TokenHolder.kt @@ -8,19 +8,22 @@ */ package com.platform.tools +import android.annotation.SuppressLint import android.content.Context import androidx.annotation.VisibleForTesting import android.util.Log +import com.brd.api.BrdApiClient import com.breadwallet.logger.logError import com.breadwallet.tools.security.BrdUserManager import com.breadwallet.tools.security.BrdUserState -import com.platform.APIClient -import org.kodein.di.KodeinAware -import org.kodein.di.android.closestKodein -import org.kodein.di.erased.instance +import kotlinx.coroutines.runBlocking +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance -object TokenHolder : KodeinAware { +@SuppressLint("StaticFieldLeak") +object TokenHolder : DIAware { private val TAG = TokenHolder::class.java.simpleName private var mApiToken: String? = null private var mOldApiToken: String? = null @@ -30,9 +33,9 @@ object TokenHolder : KodeinAware { this.context = context } - override val kodein by closestKodein { context } + override val di by closestDI { context } private val userManager by instance() - private val apiClient: APIClient by instance() + private val brdApiClient: BrdApiClient by instance() @Synchronized fun retrieveToken(): String? { @@ -66,7 +69,14 @@ object TokenHolder : KodeinAware { @Synchronized fun fetchNewToken() { - mApiToken = apiClient.token + mApiToken = runBlocking { + try { + brdApiClient.getToken() + } catch (e: Throwable) { + e.printStackTrace() + null + } + } logError("fetchNewToken: $mApiToken") if (!mApiToken.isNullOrEmpty()) { userManager.putToken(mApiToken!!) diff --git a/brd-android/app-core/src/main/res/drawable-hdpi/ic_doge.png b/brd-android/app-core/src/main/res/drawable-hdpi/ic_doge.png new file mode 100644 index 000000000..b4ddf5138 Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-hdpi/ic_doge.png differ diff --git a/brd-android/app-core/src/main/res/drawable-hdpi/ic_provider_simplex.png b/brd-android/app-core/src/main/res/drawable-hdpi/ic_provider_simplex.png new file mode 100644 index 000000000..1d617ab6e Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-hdpi/ic_provider_simplex.png differ diff --git a/brd-android/app-core/src/main/res/drawable-mdpi/ic_doge.png b/brd-android/app-core/src/main/res/drawable-mdpi/ic_doge.png new file mode 100644 index 000000000..b22484ebd Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-mdpi/ic_doge.png differ diff --git a/brd-android/app-core/src/main/res/drawable-mdpi/ic_provider_simplex.png b/brd-android/app-core/src/main/res/drawable-mdpi/ic_provider_simplex.png new file mode 100644 index 000000000..7a098f3ad Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-mdpi/ic_provider_simplex.png differ diff --git a/brd-android/app-core/src/main/res/drawable-xhdpi/ic_doge.png b/brd-android/app-core/src/main/res/drawable-xhdpi/ic_doge.png new file mode 100644 index 000000000..bba5ab5e9 Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-xhdpi/ic_doge.png differ diff --git a/brd-android/app-core/src/main/res/drawable-xhdpi/ic_provider_simplex.png b/brd-android/app-core/src/main/res/drawable-xhdpi/ic_provider_simplex.png new file mode 100644 index 000000000..c018fdcc7 Binary files /dev/null and b/brd-android/app-core/src/main/res/drawable-xhdpi/ic_provider_simplex.png differ diff --git a/brd-android/app-core/src/main/res/drawable/b_half_left_gray_fill.xml b/brd-android/app-core/src/main/res/drawable/b_half_left_gray_fill.xml new file mode 100644 index 000000000..142547dfd --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/b_half_left_gray_fill.xml @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded.xml b/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded.xml index 79080eaac..98b888731 100644 --- a/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded.xml +++ b/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded.xml @@ -1,8 +1,6 @@ - + - + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded_exchange.xml b/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded_exchange.xml new file mode 100644 index 000000000..0fb2156fc --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/bread_dialog_rounded_exchange.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/button_tab_selector.xml b/brd-android/app-core/src/main/res/drawable/button_tab_selector.xml new file mode 100644 index 000000000..7f0b2e14d --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/button_tab_selector.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/crypto_card_shape.xml b/brd-android/app-core/src/main/res/drawable/crypto_card_shape.xml index 10d6efa0a..dcc346a92 100644 --- a/brd-android/app-core/src/main/res/drawable/crypto_card_shape.xml +++ b/brd-android/app-core/src/main/res/drawable/crypto_card_shape.xml @@ -1,12 +1,10 @@ - + + android:angle="0" /> \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/ic_close.xml b/brd-android/app-core/src/main/res/drawable/ic_close.xml index 92d65be6d..8eb752442 100644 --- a/brd-android/app-core/src/main/res/drawable/ic_close.xml +++ b/brd-android/app-core/src/main/res/drawable/ic_close.xml @@ -3,8 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/brd-android/app-core/src/main/res/drawable/ic_close_red.xml b/brd-android/app-core/src/main/res/drawable/ic_close_red.xml index dd7f57d1a..502c7e223 100644 --- a/brd-android/app-core/src/main/res/drawable/ic_close_red.xml +++ b/brd-android/app-core/src/main/res/drawable/ic_close_red.xml @@ -5,6 +5,6 @@ android:viewportHeight="12"> diff --git a/brd-android/app-core/src/main/res/drawable/keyboard_blue_pill_button.xml b/brd-android/app-core/src/main/res/drawable/keyboard_blue_pill_button.xml new file mode 100644 index 000000000..e132ec137 --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/keyboard_blue_pill_button.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/pill_blue_background.xml b/brd-android/app-core/src/main/res/drawable/pill_blue_background.xml new file mode 100644 index 000000000..8f7e8bd5c --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/pill_blue_background.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/drawable/recycler_view_divider.xml b/brd-android/app-core/src/main/res/drawable/recycler_view_divider.xml new file mode 100644 index 000000000..000d6ba7f --- /dev/null +++ b/brd-android/app-core/src/main/res/drawable/recycler_view_divider.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/brd-android/app-core/src/main/res/raw/brd_tokens.tar b/brd-android/app-core/src/main/res/raw/brd_tokens.tar index 6352c28c6..b8a90832d 100644 Binary files a/brd-android/app-core/src/main/res/raw/brd_tokens.tar and b/brd-android/app-core/src/main/res/raw/brd_tokens.tar differ diff --git a/brd-android/app-core/src/main/res/raw/brd_web_3.tar b/brd-android/app-core/src/main/res/raw/brd_web_3.tar index ac2709f2f..dace9eea9 100644 Binary files a/brd-android/app-core/src/main/res/raw/brd_web_3.tar and b/brd-android/app-core/src/main/res/raw/brd_web_3.tar differ diff --git a/brd-android/app-core/src/main/res/raw/tokens.json b/brd-android/app-core/src/main/res/raw/tokens.json index 290731b3f..571af693f 100644 --- a/brd-android/app-core/src/main/res/raw/tokens.json +++ b/brd-android/app-core/src/main/res/raw/tokens.json @@ -1,2663 +1 @@ -[ - { - "code": "1ST", - "name": "FirstBlood", - "scale": 18, - "is_supported": false, - "contract_address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f15a22", - "#f15a22" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7" - }, - { - "code": "ABT", - "name": "ArcBlock", - "scale": 18, - "is_supported": false, - "contract_address": "0xb98d4c97425d9908e66e53a6fdf673acca0be986", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1aaad0", - "#1aaad0" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb98d4c97425d9908e66e53a6fdf673acca0be986" - }, - { - "code": "ADT", - "name": "adToken", - "scale": 9, - "is_supported": true, - "contract_address": "0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0071bc", - "#0071bc" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD" - }, - { - "code": "ADX", - "name": "AdEx", - "scale": 18, - "is_supported": true, - "contract_address": "0xADE00C28244d5CE17D72E40330B1c318cD12B7c3", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1b75bc", - "#1b75bc" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xADE00C28244d5CE17D72E40330B1c318cD12B7c3" - }, - { - "code": "AE", - "name": "Aeternity", - "scale": 18, - "is_supported": false, - "contract_address": "0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#de3f6b", - "#de3f6b" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d" - }, - { - "code": "AGI", - "name": "SingularityNET", - "scale": 8, - "is_supported": false, - "contract_address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#543ce9", - "#543ce9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8eB24319393716668D768dCEC29356ae9CfFe285" - }, - { - "code": "AION", - "name": "Aion", - "scale": 8, - "is_supported": false, - "contract_address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#00bfec", - "#00bfec" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466" - }, - { - "code": "AMB", - "name": "Amber", - "scale": 18, - "is_supported": false, - "contract_address": "0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5ca7bc", - "#5ca7bc" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce" - }, - { - "code": "ANT", - "name": "Aragon", - "scale": 18, - "is_supported": true, - "contract_address": "0xa117000000f279d81a1d3cc75430faa017fa5a2e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2cd3e1", - "#2cd3e1" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa117000000f279d81a1d3cc75430faa017fa5a2e" - }, - { - "code": "AUTO", - "name": "CUBE", - "scale": 18, - "is_supported": false, - "contract_address": "0x622dFfCc4e83C64ba959530A5a5580687a57581b", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#fab431", - "#fab431" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x622dFfCc4e83C64ba959530A5a5580687a57581b" - }, - { - "code": "AVM", - "name": "AVM Ecosystem", - "scale": 18, - "is_supported": true, - "contract_address": "0x74004a7227615fb52b82d17ffabfa376907d8a4d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#364aad", - "#364aad" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x74004a7227615fb52b82d17ffabfa376907d8a4d" - }, - { - "code": "BAT", - "name": "Basic Attention", - "scale": 18, - "is_supported": true, - "contract_address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ff5000", - "#ff5000" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "basic-attention-token" - }, - "currency_id": "ethereum-mainnet:0x0D8775F648430679A709E98d2b0Cb6250d2887EF" - }, - { - "code": "BIX", - "name": "BIX Token", - "scale": 18, - "is_supported": false, - "contract_address": "0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6499ea", - "#6499ea" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069" - }, - { - "code": "BLZ", - "name": "Bluzelle", - "scale": 18, - "is_supported": true, - "contract_address": "0x5732046a883704404f284ce41ffadd5b007fd668", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#18578c", - "#18578c" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "bluzelle" - }, - "currency_id": "ethereum-mainnet:0x5732046a883704404f284ce41ffadd5b007fd668" - }, - { - "code": "BNB", - "name": "Binance Coin", - "scale": 18, - "is_supported": false, - "contract_address": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f3ba2f", - "#f3ba2f" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb8c77482e45f1f44de1745f52c74426c631bdd52" - }, - { - "code": "BNT", - "name": "Bancor", - "scale": 18, - "is_supported": true, - "contract_address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#42d4fc", - "#42d4fc" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "bancor" - }, - "currency_id": "ethereum-mainnet:0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C" - }, - { - "code": "BRD", - "name": "BRD Token", - "scale": 18, - "is_supported": true, - "contract_address": "0x558ec3152e2eb2174905cd19aea4e34a23de9ad6", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ff5193", - "#f9a43a" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x558ec3152e2eb2174905cd19aea4e34a23de9ad6" - }, - { - "code": "BTM", - "name": "Bytom", - "scale": 8, - "is_supported": true, - "contract_address": "0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#b99948", - "#b99948" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750" - }, - { - "code": "CFI", - "name": "Cofound.it", - "scale": 18, - "is_supported": false, - "contract_address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0099e5", - "#0099e5" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e" - }, - { - "code": "CMT", - "name": "CyberMiles", - "scale": 18, - "is_supported": false, - "contract_address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#c1a05c", - "#c1a05c" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "cybermiles" - }, - "currency_id": "ethereum-mainnet:0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F" - }, - { - "code": "CND", - "name": "Cindicator", - "scale": 18, - "is_supported": true, - "contract_address": "0xd4c435f5b09f855c3317c8524cb1f586e42795fa", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#304975", - "#304975" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "cindicator" - }, - "currency_id": "ethereum-mainnet:0xd4c435f5b09f855c3317c8524cb1f586e42795fa" - }, - { - "code": "CNN", - "name": "CNN Token", - "scale": 18, - "is_supported": false, - "contract_address": "0x8713d26637cf49e1b6b4a7ce57106aabc9325343", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6fa7f6", - "#6fa7f6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8713d26637cf49e1b6b4a7ce57106aabc9325343" - }, - { - "code": "CRPT", - "name": "Crypterium", - "scale": 18, - "is_supported": true, - "contract_address": "0x08389495d7456e1951ddf7c3a1314a4bfb646d8b", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#01bdcd", - "#01bdcd" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x08389495d7456e1951ddf7c3a1314a4bfb646d8b" - }, - { - "code": "CS", - "name": "Credits", - "scale": 6, - "is_supported": false, - "contract_address": "0x46b9ad944d1059450da1163511069c718f699d31", - "sale_address": "", - "contract_info": { - "initial_value": "ETH 0.001250000000000000" - }, - "colors": [ - "#0fa3d5", - "#0fa3d5" - ], - "type": "erc20", - "alternate_names": { - "cryptocompare": "crdts" - }, - "currency_id": "ethereum-mainnet:0x46b9ad944d1059450da1163511069c718f699d31" - }, - { - "code": "CVC", - "name": "Civic", - "scale": 8, - "is_supported": true, - "contract_address": "0x41e5560054824ea6b0732e656e3ad64e20e94e45", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#3ab03e", - "#3ab03e" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "civic" - }, - "currency_id": "ethereum-mainnet:0x41e5560054824ea6b0732e656e3ad64e20e94e45" - }, - { - "code": "DENT", - "name": "DENT", - "scale": 8, - "is_supported": true, - "contract_address": "0x3597bfd533a99c9aa083587b074434e61eb0a258", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#666666", - "#666666" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x3597bfd533a99c9aa083587b074434e61eb0a258" - }, - { - "code": "DGD", - "name": "DigixDAO", - "scale": 9, - "is_supported": false, - "contract_address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#c2a059", - "#c2a059" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A" - }, - { - "code": "DNT", - "name": "district0x", - "scale": 18, - "is_supported": true, - "contract_address": "0x0abdace70d3790235af448c88547603b945604ea", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2c398f", - "#2c398f" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x0abdace70d3790235af448c88547603b945604ea" - }, - { - "code": "DRGN", - "name": "Dragon", - "scale": 18, - "is_supported": true, - "contract_address": "0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#c91111", - "#c91111" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e" - }, - { - "code": "EDG", - "name": "Edgeless", - "scale": 0, - "is_supported": false, - "contract_address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#3ecf8e", - "#3ecf8e" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "edgeless" - }, - "currency_id": "ethereum-mainnet:0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c" - }, - { - "code": "EDO", - "name": "Eidoo", - "scale": 18, - "is_supported": false, - "contract_address": "0xced4e93198734ddaff8492d525bd258d49eb388e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#139fe6", - "#139fe6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xced4e93198734ddaff8492d525bd258d49eb388e" - }, - { - "code": "ELF", - "name": "Aelf", - "scale": 18, - "is_supported": true, - "contract_address": "0xbf2179859fc6d5bee9bf9158632dc51678a4100e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2b5ebb", - "#2b5ebb" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xbf2179859fc6d5bee9bf9158632dc51678a4100e" - }, - { - "code": "ENG", - "name": "Enigma", - "scale": 8, - "is_supported": true, - "contract_address": "0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2553cd", - "#2553cd" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4" - }, - { - "code": "ENJ", - "name": "EnjinCoin", - "scale": 18, - "is_supported": true, - "contract_address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#624dbf", - "#624dbf" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c" - }, - { - "code": "VGX", - "name": "Voyager", - "scale": 8, - "is_supported": false, - "contract_address": "0x5af2be193a6abca9c8817001f45744777db30756", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#00cfab", - "#00cfab" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x5af2be193a6abca9c8817001f45744777db30756" - }, - { - "code": "FSN", - "name": "Fusion", - "scale": 18, - "is_supported": false, - "contract_address": "0xd0352a019e9ab9d757776f532377aaebd36fd541", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1d9ad7", - "#1d9ad7" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xd0352a019e9ab9d757776f532377aaebd36fd541" - }, - { - "code": "FUN", - "name": "FunFair", - "scale": 8, - "is_supported": true, - "contract_address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ed1968", - "#ed1968" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "funfair" - }, - "currency_id": "ethereum-mainnet:0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b" - }, - { - "code": "GD", - "name": "Zilla GD", - "scale": 0, - "is_supported": false, - "contract_address": "0xb4cebdb66b3a5183fd4764a25cad1fc109535016", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4776e6", - "#4776e6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb4cebdb66b3a5183fd4764a25cad1fc109535016" - }, - { - "code": "GNO", - "name": "Gnosis", - "scale": 18, - "is_supported": true, - "contract_address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#00a6c4", - "#00a6c4" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x6810e776880C02933D47DB1b9fc05908e5386b96" - }, - { - "code": "GNT", - "name": "Golem (legacy)", - "scale": 18, - "is_supported": false, - "contract_address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5a6eaa", - "#5a6eaa" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa74476443119A942dE498590Fe1f2454d7D4aC0d" - }, - { - "code": "GNX", - "name": "Genaro Network", - "scale": 9, - "is_supported": false, - "contract_address": "0x6ec8a24cabdc339a06a172f8223ea557055adaa5", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#7ba5de", - "#7ba5de" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x6ec8a24cabdc339a06a172f8223ea557055adaa5" - }, - { - "code": "GTO", - "name": "Gifto", - "scale": 5, - "is_supported": true, - "contract_address": "0xc5bbae50781be1669306b9e001eff57a2957b09d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#7f27ff", - "#7f27ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xc5bbae50781be1669306b9e001eff57a2957b09d" - }, - { - "code": "GUP", - "name": "Matchpool", - "scale": 3, - "is_supported": false, - "contract_address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2FBEBA", - "#2FBEBA" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xf7B098298f7C69Fc14610bf71d5e02c60792894C" - }, - { - "code": "GVT", - "name": "Genesis Vision", - "scale": 18, - "is_supported": true, - "contract_address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#16b9ad", - "#16b9ad" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x103c3A209da59d3E7C4A89307e66521e081CFDF0" - }, - { - "code": "HPB", - "name": "HPBCoin", - "scale": 18, - "is_supported": false, - "contract_address": "0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1591ca", - "#1591ca" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2" - }, - { - "code": "HYDRO", - "name": "Hydro", - "scale": 18, - "is_supported": false, - "contract_address": "0xebbdf302c940c6bfd49c6b165f457fdb324649bc", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2e72ed", - "#2e72ed" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xebbdf302c940c6bfd49c6b165f457fdb324649bc" - }, - { - "code": "ICN", - "name": "ICONOMI", - "scale": 18, - "is_supported": false, - "contract_address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4c6f8c", - "#4c6f8c" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x888666CA69E0f178DED6D75b5726Cee99A87D698" - }, - { - "code": "ICX", - "name": "ICON", - "scale": 18, - "is_supported": false, - "contract_address": "0xb5a5f22694352c15b00323844ad545abb2b11028", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1fc5c9", - "#1fc5c9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb5a5f22694352c15b00323844ad545abb2b11028" - }, - { - "code": "IOST", - "name": "IOStoken", - "scale": 18, - "is_supported": false, - "contract_address": "0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0f91ca", - "#0f91ca" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab" - }, - { - "code": "ITC", - "name": "IOT Chain", - "scale": 18, - "is_supported": false, - "contract_address": "0x5e6b6d9abad9093fdc861ea1600eba1b355cd940", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1b67b0", - "#1b67b0" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x5e6b6d9abad9093fdc861ea1600eba1b355cd940" - }, - { - "code": "KIN", - "name": "Kin", - "scale": 18, - "is_supported": false, - "contract_address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2359cf", - "#2359cf" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5" - }, - { - "code": "KNC", - "name": "Kyber Network", - "scale": 18, - "is_supported": true, - "contract_address": "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#188c92", - "#188c92" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202" - }, - { - "code": "LEND", - "name": "Aave (OLD)", - "scale": 18, - "is_supported": false, - "contract_address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0fa9c9", - "#0fa9c9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x80fB784B7eD66730e8b1DBd9820aFD29931aab03" - }, - { - "code": "LINK", - "name": "ChainLink", - "scale": 18, - "is_supported": true, - "contract_address": "0x514910771af9ca656af840dff83e8264ecf986ca", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2a5ada", - "#2a5ada" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x514910771af9ca656af840dff83e8264ecf986ca" - }, - { - "code": "LOOM", - "name": "Loom", - "scale": 18, - "is_supported": true, - "contract_address": "0x42476F744292107e34519F9c357927074Ea3F75D", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#028fac", - "#028fac" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x42476F744292107e34519F9c357927074Ea3F75D" - }, - { - "code": "LRC", - "name": "Loopring", - "scale": 18, - "is_supported": true, - "contract_address": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2ab6f6", - "#2ab6f6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xbbbbca6a901c926f240b89eacb641d8aec7aeafd" - }, - { - "code": "LUN", - "name": "Lunyr", - "scale": 18, - "is_supported": false, - "contract_address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f55749", - "#f55749" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xfa05A73FfE78ef8f1a739473e462c54bae6567D9" - }, - { - "code": "MAN", - "name": "MATRIX AI Network", - "scale": 18, - "is_supported": false, - "contract_address": "0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#019399", - "#019399" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d" - }, - { - "code": "MANA", - "name": "Decentraland", - "scale": 18, - "is_supported": true, - "contract_address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#bfb5af", - "#bfb5af" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x0F5D2fB29fb7d3CFeE444a200298f468908cC942" - }, - { - "code": "MCO", - "name": "Monaco", - "scale": 8, - "is_supported": false, - "contract_address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0d9aff", - "#0d9aff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d" - }, - { - "code": "MTL", - "name": "Metal", - "scale": 8, - "is_supported": true, - "contract_address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#007aff", - "#007aff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xF433089366899D83a9f26A773D59ec7eCF30355e" - }, - { - "code": "NAS", - "name": "Nebulas", - "scale": 18, - "is_supported": false, - "contract_address": "0x5d65D971895Edc438f465c17DB6992698a52318D", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0029ff", - "#0029ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x5d65D971895Edc438f465c17DB6992698a52318D" - }, - { - "code": "NEXO", - "name": "Nexo", - "scale": 18, - "is_supported": true, - "contract_address": "0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4aa2ea", - "#4aa2ea" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206" - }, - { - "code": "NMR", - "name": "Numeraire", - "scale": 18, - "is_supported": true, - "contract_address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#25b1cd", - "#25b1cd" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671" - }, - { - "code": "NPXS", - "name": "Pundi X Token", - "scale": 18, - "is_supported": false, - "contract_address": "0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#DBBF4B", - "#DBBF4B" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3" - }, - { - "code": "NULS", - "name": "Nuls", - "scale": 18, - "is_supported": false, - "contract_address": "0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#82bd39", - "#82bd39" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c" - }, - { - "code": "OMG", - "name": "OmiseGO", - "scale": 18, - "is_supported": true, - "contract_address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1a53f0", - "#1a53f0" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xd26114cd6EE289AccF82350c8d8487fedB8A0C07" - }, - { - "code": "OST", - "name": "OST", - "scale": 18, - "is_supported": false, - "contract_address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#e4b030", - "#e4b030" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA" - }, - { - "code": "PAL", - "name": "PolicyPal Network", - "scale": 18, - "is_supported": false, - "contract_address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#54b9a1", - "#54b9a1" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "policypal" - }, - "currency_id": "ethereum-mainnet:0xfeDAE5642668f8636A11987Ff386bfd215F942EE" - }, - { - "code": "PAY", - "name": "TenX", - "scale": 18, - "is_supported": true, - "contract_address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1780af", - "#1780af" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "tenx" - }, - "currency_id": "ethereum-mainnet:0xB97048628DB6B661D4C2aA833e95Dbe1A905B280" - }, - { - "code": "POE", - "name": "Po.et", - "scale": 8, - "is_supported": false, - "contract_address": "0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#b6a573", - "#b6a573" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195" - }, - { - "code": "POLY", - "name": "Polymath", - "scale": 18, - "is_supported": true, - "contract_address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4c5a95", - "#4c5a95" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC" - }, - { - "code": "POWR", - "name": "Power Ledger", - "scale": 6, - "is_supported": true, - "contract_address": "0x595832f8fc6bf59c85c527fec3740a1b7a361269", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#05bca9", - "#05bca9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x595832f8fc6bf59c85c527fec3740a1b7a361269" - }, - { - "code": "PPT", - "name": "Populous", - "scale": 8, - "is_supported": true, - "contract_address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5ca0f6", - "#5ca0f6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a" - }, - { - "code": "PRL", - "name": "Oyster Pearl", - "scale": 18, - "is_supported": false, - "contract_address": "0x1844b21593262668b7248d0f57a220caaba46ab9", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0984fb", - "#0984fb" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x1844b21593262668b7248d0f57a220caaba46ab9" - }, - { - "code": "PTOY", - "name": "Patientory", - "scale": 8, - "is_supported": false, - "contract_address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#42b34e", - "#42b34e" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06" - }, - { - "code": "QASH", - "name": "QASH", - "scale": 6, - "is_supported": false, - "contract_address": "0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1347e8", - "#1347e8" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6" - }, - { - "code": "QRL", - "name": "QRL", - "scale": 8, - "is_supported": false, - "contract_address": "0x697beac28B09E122C4332D163985e8a73121b97F", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#c71e53", - "#c71e53" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x697beac28B09E122C4332D163985e8a73121b97F" - }, - { - "code": "QSP", - "name": "Quantstamp", - "scale": 18, - "is_supported": true, - "contract_address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4e79ff", - "#4e79ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d" - }, - { - "code": "REV", - "name": "Revain", - "scale": 0, - "is_supported": false, - "contract_address": "0x48f775efbe4f5ece6e0df2f7b5932df56823b990", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#bd2df5", - "#bd2df5" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "revain" - }, - "currency_id": "ethereum-mainnet:0x48f775efbe4f5ece6e0df2f7b5932df56823b990" - }, - { - "code": "RCN", - "name": "Ripio Credit", - "scale": 18, - "is_supported": true, - "contract_address": "0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#3555f9", - "#3555f9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6" - }, - { - "code": "RDN", - "name": "Raiden Network", - "scale": 18, - "is_supported": true, - "contract_address": "0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#586c77", - "#586c77" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6" - }, - { - "code": "REP", - "name": "Augur", - "scale": 18, - "is_supported": false, - "contract_address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#736e89", - "#736e89" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x1985365e9f78359a9B6AD760e32412f4a445E862" - }, - { - "code": "REQ", - "name": "Request", - "scale": 18, - "is_supported": true, - "contract_address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5a89f9", - "#5a89f9" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8f8221aFbB33998d8584A2B05749bA73c37a938a" - }, - { - "code": "RLC", - "name": "iExec RLC", - "scale": 9, - "is_supported": true, - "contract_address": "0x607F4C5BB672230e8672085532f7e901544a7375", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#637799", - "#637799" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x607F4C5BB672230e8672085532f7e901544a7375" - }, - { - "code": "RUFF", - "name": "RUFF", - "scale": 18, - "is_supported": false, - "contract_address": "0xf278c1ca969095ffddded020290cf8b5c424ace2", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#01c8ca", - "#01c8ca" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xf278c1ca969095ffddded020290cf8b5c424ace2" - }, - { - "code": "SALT", - "name": "SALT", - "scale": 8, - "is_supported": false, - "contract_address": "0x4156D3342D5c385a87D264F90653733592000581", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#40b2b5", - "#40b2b5" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4156D3342D5c385a87D264F90653733592000581" - }, - { - "code": "SAN", - "name": "SAN", - "scale": 18, - "is_supported": false, - "contract_address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2b77b3", - "#2b77b3" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098" - }, - { - "code": "SENT", - "name": "SENTinel", - "scale": 8, - "is_supported": false, - "contract_address": "0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#3666aa", - "#3666aa" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037" - }, - { - "code": "SNC", - "name": "SunContract", - "scale": 18, - "is_supported": false, - "contract_address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1096d4", - "#1096d4" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404" - }, - { - "code": "SNGLS", - "name": "Singular DTV", - "scale": 0, - "is_supported": false, - "contract_address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#b30d23", - "#b30d23" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009" - }, - { - "code": "SNM", - "name": "SONM", - "scale": 18, - "is_supported": false, - "contract_address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#8e16fd", - "#8e16fd" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63" - }, - { - "code": "SNT", - "name": "Status", - "scale": 18, - "is_supported": true, - "contract_address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5b6dee", - "#5b6dee" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x744d70FDBE2Ba4CF95131626614a1763DF805B9E" - }, - { - "code": "SRN", - "name": "SIRIN", - "scale": 18, - "is_supported": false, - "contract_address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#37b7a5", - "#37b7a5" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25" - }, - { - "code": "STORJ", - "name": "Storj", - "scale": 8, - "is_supported": true, - "contract_address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2683ff", - "#2683ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC" - }, - { - "code": "STORM", - "name": "Storm", - "scale": 18, - "is_supported": false, - "contract_address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6b38e0", - "#6b38e0" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433" - }, - { - "code": "STQ", - "name": "Storiqa", - "scale": 18, - "is_supported": false, - "contract_address": "0x5c3a228510d246b78a3765c20221cbf3082b44a4", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#58b4f1", - "#58b4f1" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x5c3a228510d246b78a3765c20221cbf3082b44a4" - }, - { - "code": "STX", - "name": "Stox", - "scale": 18, - "is_supported": false, - "contract_address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#7022eb", - "#7022eb" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "stox" - }, - "currency_id": "ethereum-mainnet:0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45" - }, - { - "code": "SUB", - "name": "Substratum", - "scale": 18, - "is_supported": false, - "contract_address": "0x8D75959f1E61EC2571aa72798237101F084DE63a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#e53431", - "#e53431" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8D75959f1E61EC2571aa72798237101F084DE63a" - }, - { - "code": "THETA", - "name": "Theta Token", - "scale": 18, - "is_supported": false, - "contract_address": "0x3883f5e181fccaf8410fa61e12b59bad963fb645", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2ab8e6", - "#2ab8e6" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x3883f5e181fccaf8410fa61e12b59bad963fb645" - }, - { - "code": "TIME", - "name": "Chronobank", - "scale": 8, - "is_supported": false, - "contract_address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5db3ed", - "#5db3ed" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53" - }, - { - "code": "UCASH", - "name": "UCASH", - "scale": 8, - "is_supported": false, - "contract_address": "0x92e52a1a235d9a103d970901066ce910aacefd37", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#c59a47", - "#c59a47" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x92e52a1a235d9a103d970901066ce910aacefd37" - }, - { - "code": "VEE", - "name": "BLOCKv", - "scale": 18, - "is_supported": false, - "contract_address": "0x340d2bde5eb28c1eed91b2f790723e3b160613b7", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6a7d7f", - "#6a7d7f" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x340d2bde5eb28c1eed91b2f790723e3b160613b7" - }, - { - "code": "VIB", - "name": "Viberate", - "scale": 18, - "is_supported": false, - "contract_address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ff1f43", - "#ff1f43" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724" - }, - { - "code": "WAX", - "name": "WAX", - "scale": 8, - "is_supported": false, - "contract_address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f89022", - "#f89022" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x39Bb259F66E1C59d5ABEF88375979b4D20D98022" - }, - { - "code": "WINGS", - "name": "Wings", - "scale": 18, - "is_supported": false, - "contract_address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0dc9f7", - "#0dc9f7" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x667088b212ce3d06a1b553a7221E1fD19000d9aF" - }, - { - "code": "WPR", - "name": "WePower", - "scale": 18, - "is_supported": false, - "contract_address": "0x4CF488387F035FF08c371515562CBa712f9015d4", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#dbcc49", - "#dbcc49" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4CF488387F035FF08c371515562CBa712f9015d4" - }, - { - "code": "WRC", - "name": "Worldcore", - "scale": 6, - "is_supported": false, - "contract_address": "0x72adadb447784dd7ab1f472467750fc485e4cb2d", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#27bcba", - "#27bcba" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x72adadb447784dd7ab1f472467750fc485e4cb2d" - }, - { - "code": "WTC", - "name": "Waltonchain", - "scale": 18, - "is_supported": false, - "contract_address": "0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#8200ff", - "#8200ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74" - }, - { - "code": "XJP", - "name": "Digital JPY", - "scale": 0, - "is_supported": false, - "contract_address": "0x39689fE671C01fcE173395f6BC45D4C332026666", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f15a22", - "#f15a22" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x39689fE671C01fcE173395f6BC45D4C332026666" - }, - { - "code": "ZIL", - "name": "Zilliqa", - "scale": 12, - "is_supported": false, - "contract_address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#49c1bf", - "#49c1bf" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27" - }, - { - "code": "ZLA", - "name": "Zilla", - "scale": 18, - "is_supported": false, - "contract_address": "0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5e6ab2", - "#5e6ab2" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16" - }, - { - "code": "ZRX", - "name": "0x", - "scale": 18, - "is_supported": true, - "contract_address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#9c82f5", - "#9c82f5" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xE41d2489571d322189246DaFA5ebDe1F4699F498" - }, - { - "code": "TEL", - "name": "Telcoin", - "scale": 2, - "is_supported": true, - "contract_address": "0x467bccd9d29f223bce8043b84e8c8b282827790f", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#59C6FA", - "#59C6FA" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x467bccd9d29f223bce8043b84e8c8b282827790f" - }, - { - "code": "CCC", - "name": "Container Crypto Coin", - "scale": 18, - "is_supported": false, - "contract_address": "0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d", - "sale_address": "0x8cee633c5c4caae99f466a14171a53bc2ea2d291", - "contract_info": { - "initial_value": "ETH 0.001250000000000000" - }, - "colors": [ - "#95C121", - "#95C121" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d" - }, - { - "code": "EOS", - "name": "EOS", - "scale": 18, - "is_supported": false, - "contract_address": "0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#7f91a7", - "#7f91a7" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0" - }, - { - "code": "TRX", - "name": "TRON", - "scale": 6, - "is_supported": false, - "contract_address": "0xf230b790e05390fc8295f4d3f60332c93bed42e2", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ba2323", - "#ba2323" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xf230b790e05390fc8295f4d3f60332c93bed42e2" - }, - { - "code": "AMLT", - "name": "AMLT by Coinfirm", - "scale": 18, - "is_supported": false, - "contract_address": "0xca0e7269600d353f70b14ad118a49575455c0f2f", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#035AD8", - "#035AD8" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xca0e7269600d353f70b14ad118a49575455c0f2f" - }, - { - "code": "APPC", - "name": "AppCoins", - "scale": 18, - "is_supported": false, - "contract_address": "0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1F7AB9", - "#3196A8" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db" - }, - { - "code": "ATMI", - "name": "Atonomi", - "scale": 18, - "is_supported": false, - "contract_address": "0x97aeb5066e1a590e868b511457beb6fe99d329f5", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2B9FDA", - "#2B9FDA" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x97aeb5066e1a590e868b511457beb6fe99d329f5" - }, - { - "code": "STU", - "name": "bitJob", - "scale": 18, - "is_supported": false, - "contract_address": "0x0371a82e4a9d0a4312f3ee2ac9c6958512891372", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#0E235B", - "#0E235B" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x0371a82e4a9d0a4312f3ee2ac9c6958512891372" - }, - { - "code": "CAS", - "name": "Cashaa", - "scale": 18, - "is_supported": false, - "contract_address": "0xe8780b48bdb05f928697a5e8155f672ed91462f7", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#15398C", - "#15398C" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xe8780b48bdb05f928697a5e8155f672ed91462f7" - }, - { - "code": "DOV", - "name": "Dovu", - "scale": 18, - "is_supported": false, - "contract_address": "0xac3211a5025414af2866ff09c23fc18bc97e79b1", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#033686", - "#033686" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xac3211a5025414af2866ff09c23fc18bc97e79b1" - }, - { - "code": "XUC", - "name": "Exchange Union", - "scale": 18, - "is_supported": false, - "contract_address": "0xc324a2f6b05880503444451b8b27e6f9e63287cb", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2AA9E1", - "#2AA9E1" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xc324a2f6b05880503444451b8b27e6f9e63287cb" - }, - { - "code": "GBX", - "name": "Globitex", - "scale": 8, - "is_supported": false, - "contract_address": "0x12fcd6463e66974cf7bbc24ffc4d40d6be458283", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#005496", - "#005496" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "globitex" - }, - "currency_id": "ethereum-mainnet:0x12fcd6463e66974cf7bbc24ffc4d40d6be458283" - }, - { - "code": "IXT", - "name": "iXledger", - "scale": 8, - "is_supported": false, - "contract_address": "0xfca47962d45adfdfd1ab2d972315db4ce7ccf094", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1EB0D3", - "#1EB0D3" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xfca47962d45adfdfd1ab2d972315db4ce7ccf094" - }, - { - "code": "MYST", - "name": "Mysterium", - "scale": 8, - "is_supported": false, - "contract_address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#C6205D", - "#322262" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa645264C5603E96c3b0B078cdab68733794B0A71" - }, - { - "code": "RCC", - "name": "Reality Clash", - "scale": 18, - "is_supported": false, - "contract_address": "0x9b6443b0fb9c241a7fdac375595cea13e6b7807a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#00FFFF", - "#00FFFF" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x9b6443b0fb9c241a7fdac375595cea13e6b7807a" - }, - { - "code": "RVT", - "name": "Rivetz", - "scale": 18, - "is_supported": false, - "contract_address": "0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#F36E24", - "#F36E24" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244" - }, - { - "code": "STK", - "name": "STK", - "scale": 18, - "is_supported": false, - "contract_address": "0xae73b38d1c9a8b274127ec30160a4927c4d71824", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#000000", - "#000000" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "stk" - }, - "currency_id": "ethereum-mainnet:0xae73b38d1c9a8b274127ec30160a4927c4d71824" - }, - { - "code": "PMTN", - "name": "Peer Mountain", - "scale": 18, - "is_supported": false, - "contract_address": "0xe91df2bb9bccd18c45f01843cab88768d64f2d32", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#4BC4DE", - "#4BC4DE" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xe91df2bb9bccd18c45f01843cab88768d64f2d32" - }, - { - "code": "TUSD", - "name": "TrueUSD", - "scale": 18, - "is_supported": true, - "contract_address": "0x0000000000085d4780B73119b644AE5ecd22b376", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#67C6BB", - "#67C6BB" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x0000000000085d4780B73119b644AE5ecd22b376" - }, - { - "code": "CSP", - "name": "Caspian", - "scale": 18, - "is_supported": false, - "contract_address": "0xa6446d655a0c34bc4f05042ee88170d056cbaf45", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#22586F", - "#22586F" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa6446d655a0c34bc4f05042ee88170d056cbaf45" - }, - { - "code": "RC1U03", - "name": "RentalCoin 1.0", - "scale": 6, - "is_supported": false, - "contract_address": "0x7384db1aaa06364d1e6e67f5434391d3eea2a038", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#18336B", - "#18336B" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x7384db1aaa06364d1e6e67f5434391d3eea2a038" - }, - { - "code": "SAI", - "name": "Sai", - "scale": 18, - "is_supported": false, - "contract_address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#FBBA00", - "#FBBA00" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "sai", - "cryptocompare": "dai" - }, - "currency_id": "ethereum-mainnet:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359" - }, - { - "code": "MKR", - "name": "Maker", - "scale": 18, - "is_supported": true, - "contract_address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#1ABC9C", - "#1ABC9C" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2" - }, - { - "code": "BCH", - "name": "Bitcoin Cash", - "scale": 8, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#478559", - "#478559" - ], - "type": "", - "currency_id": "bitcoincash-mainnet:__native__" - }, - { - "code": "BTC", - "name": "Bitcoin", - "scale": 8, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f29500", - "#f29500" - ], - "type": "", - "currency_id": "bitcoin-mainnet:__native__" - }, - { - "code": "ETH", - "name": "Ethereum", - "scale": 18, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5e6fa5", - "#5e6fa5" - ], - "type": "", - "currency_id": "ethereum-mainnet:__native__" - }, - { - "code": "PAX", - "name": "Paxos Standard", - "scale": 18, - "is_supported": true, - "contract_address": "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#20BCD4", - "#20BCD4" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x8e870d67f660d95d5be530380d0ec0bd388289e1" - }, - { - "code": "ARN", - "name": "Aeron", - "scale": 8, - "is_supported": false, - "contract_address": "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2c85bd", - "#2c85bd" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6" - }, - { - "code": "GUSD", - "name": "Gemini Dollar", - "scale": 2, - "is_supported": true, - "contract_address": "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#68DAF5", - "#68DAF5" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x056fd409e1d7a124bd7017459dfea2f387b6d5cd" - }, - { - "code": "FXC", - "name": "Flexacoin", - "scale": 18, - "is_supported": false, - "contract_address": "0x4a57E687b9126435a9B19E4A802113e266AdeBde", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#cc2fff", - "#2815ff" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4a57E687b9126435a9B19E4A802113e266AdeBde" - }, - { - "code": "USDC", - "name": "USD Coin", - "scale": 6, - "is_supported": true, - "contract_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2775CA", - "#2775CA" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "code": "DAI", - "name": "Dai", - "scale": 18, - "is_supported": true, - "contract_address": "0x6b175474e89094c44da98b954eedeac495271d0f", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#F4B731", - "#F4B731" - ], - "type": "erc20", - "alternate_names": { - "cryptocompare": "mcd" - }, - "currency_id": "ethereum-mainnet:0x6b175474e89094c44da98b954eedeac495271d0f" - }, - { - "code": "XRP", - "name": "XRP", - "scale": 6, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#282e34", - "#282e34" - ], - "type": "", - "alternate_names": { - "payid": "xrpl-mainnet" - }, - "currency_id": "ripple-mainnet:__native__" - }, - { - "code": "OXT", - "name": "Orchid", - "scale": 18, - "is_supported": true, - "contract_address": "0x4575f41308ec1483f3d399aa9a2826d74da13deb", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5F45BA", - "#5F45BA" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x4575f41308ec1483f3d399aa9a2826d74da13deb" - }, - { - "code": "HBAR", - "name": "Hedera", - "scale": 9, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#8259EF", - "#8259EF" - ], - "type": "", - "currency_id": "hedera-mainnet:__native__" - }, - { - "code": "EUR.AVM", - "name": "EUR AVM", - "scale": 2, - "is_supported": false, - "contract_address": "0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#364aad", - "#364aad" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a" - }, - { - "code": "STMX", - "name": "StormX", - "scale": 18, - "is_supported": true, - "contract_address": "0xbE9375C6a420D2eEB258962efB95551A5b722803", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6b38e0", - "#6b38e0" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xbE9375C6a420D2eEB258962efB95551A5b722803" - }, - { - "code": "USDT", - "name": "Tether USD", - "scale": 6, - "is_supported": true, - "contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#137D61", - "#137D61" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "tether", - "cryptocompare": "usdt" - }, - "currency_id": "ethereum-mainnet:0xdac17f958d2ee523a2206206994597c13d831ec7" - }, - { - "code": "NCASH", - "name": "Nucleus Vision", - "scale": 18, - "is_supported": false, - "contract_address": "0x809826cceab68c387726af962713b64cb5cb3cca", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#36a9cf", - "#36a9cf" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0x809826cceab68c387726af962713b64cb5cb3cca" - }, - { - "code": "AST", - "name": "Airswap", - "scale": 4, - "is_supported": true, - "contract_address": "0x27054b13b1b798b345b591a4d22e6562d47ea75a", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2b71ff", - "#2b71ff" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "airswap" - }, - "currency_id": "ethereum-mainnet:0x27054b13b1b798b345b591a4d22e6562d47ea75a" - }, - { - "code": "BUSD", - "name": "Binance USD", - "scale": 18, - "is_supported": true, - "contract_address": "0x4fabb145d64652a948d72533023f6e7a623c7c53", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#f0b90b", - "#f0b90b" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "binance-usd" - }, - "currency_id": "ethereum-mainnet:0x4fabb145d64652a948d72533023f6e7a623c7c53" - }, - { - "code": "UNI", - "name": "Uniswap", - "scale": 18, - "is_supported": true, - "contract_address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ff007a", - "#ff007a" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "uniswap" - }, - "currency_id": "ethereum-mainnet:0x1f9840a85d5af5bf1d1762f925bdaddc4201f984" - }, - { - "code": "AAVE", - "name": "Aave", - "scale": 18, - "is_supported": true, - "contract_address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#b6509e", - "#b6509e" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "aave" - }, - "currency_id": "ethereum-mainnet:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9" - }, - { - "code": "XTZ", - "name": "Tezos", - "scale": 6, - "is_supported": true, - "contract_address": "", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2C7DF7", - "#2C7DF7" - ], - "type": "", - "alternate_names": { - "coingecko": "tezos" - }, - "currency_id": "tezos-mainnet:__native__" - }, - { - "code": "GLM", - "name": "Golem", - "scale": 18, - "is_supported": true, - "contract_address": "0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#5a6eaa", - "#5a6eaa" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "golem" - }, - "currency_id": "ethereum-mainnet:0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429" - }, - { - "code": "ZUSD", - "name": "Z.com USD", - "scale": 6, - "is_supported": true, - "contract_address": "0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#d62825", - "#d62825" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "zusd" - }, - "currency_id": "ethereum-mainnet:0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA" - }, - { - "code": "GYEN", - "name": "GMO JPY", - "scale": 6, - "is_supported": true, - "contract_address": "0xC08512927D12348F6620a698105e1BAac6EcD911", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#005cac", - "#005cac" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "gyen" - }, - "currency_id": "ethereum-mainnet:0xC08512927D12348F6620a698105e1BAac6EcD911" - }, - { - "code": "SNX", - "name": "Synthetix", - "scale": 18, - "is_supported": true, - "contract_address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#58e0fe", - "#58e0fe" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "havven" - }, - "currency_id": "ethereum-mainnet:0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f" - }, - { - "code": "GRT", - "name": "The Graph", - "scale": 18, - "is_supported": true, - "contract_address": "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#6f4cff", - "#6f4cff" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "the-graph" - }, - "currency_id": "ethereum-mainnet:0xc944E90C64B2c07662A292be6244BDf05Cda44a7" - }, - { - "code": "SUSHI", - "name": "Sushi", - "scale": 18, - "is_supported": true, - "contract_address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#fa52a0", - "#fa52a0" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "sushi" - }, - "currency_id": "ethereum-mainnet:0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" - }, - { - "code": "COMP", - "name": "Compound", - "scale": 18, - "is_supported": true, - "contract_address": "0xc00e94cb662c3520282e6f5717214004a7f26888", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#00c48a", - "#00c48a" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "compound-governance-token" - }, - "currency_id": "ethereum-mainnet:0xc00e94cb662c3520282e6f5717214004a7f26888" - }, - { - "code": "YFI", - "name": "yearn.finance", - "scale": 18, - "is_supported": true, - "contract_address": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#006ae3", - "#006ae3" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "yearn-finance" - }, - "currency_id": "ethereum-mainnet:0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e" - }, - { - "code": "UMA", - "name": "UMA", - "scale": 18, - "is_supported": true, - "contract_address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#ff4a4a", - "#ff4a4a" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "uma" - }, - "currency_id": "ethereum-mainnet:0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" - }, - { - "code": "OLDLOOM", - "name": "Loom (Old)", - "scale": 18, - "is_supported": false, - "contract_address": "0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#028fac", - "#028fac" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0" - }, - { - "code": "KNCL", - "name": "Kyber Network (Legacy)", - "scale": 18, - "is_supported": false, - "contract_address": "0xdd974d5c2e2928dea5f71b9825b8b646686bd200", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#188c92", - "#188c92" - ], - "type": "erc20", - "currency_id": "ethereum-mainnet:0xdd974d5c2e2928dea5f71b9825b8b646686bd200" - }, - { - "code": "ARNX", - "name": "Aeron", - "scale": 18, - "is_supported": true, - "contract_address": "0x0C37Bcf456bC661C14D596683325623076D7e283", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#2c85bd", - "#2c85bd" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "aeron" - }, - "currency_id": "ethereum-mainnet:0x0C37Bcf456bC661C14D596683325623076D7e283" - }, - { - "code": "AGIX", - "name": "SingularityNET", - "scale": 8, - "is_supported": true, - "contract_address": "0x5B7533812759B45C2B44C19e320ba2cD2681b542", - "sale_address": "", - "contract_info": {}, - "colors": [ - "#543ce9", - "#543ce9" - ], - "type": "erc20", - "alternate_names": { - "coingecko": "singularitynet" - }, - "currency_id": "ethereum-mainnet:0x5B7533812759B45C2B44C19e320ba2cD2681b542" - } -] +[{"code":"1ST","name":"FirstBlood","scale":18,"is_supported":false,"contract_address":"0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-mainnet:0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7"},{"code":"ABT","name":"ArcBlock","scale":18,"is_supported":false,"contract_address":"0xb98d4c97425d9908e66e53a6fdf673acca0be986","sale_address":"","contract_info":{},"colors":["#1aaad0","#1aaad0"],"type":"erc20","currency_id":"ethereum-mainnet:0xb98d4c97425d9908e66e53a6fdf673acca0be986"},{"code":"ADT","name":"adToken","scale":9,"is_supported":false,"contract_address":"0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD","sale_address":"","contract_info":{},"colors":["#0071bc","#0071bc"],"type":"erc20","currency_id":"ethereum-mainnet:0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD"},{"code":"ADX","name":"AdEx","scale":18,"is_supported":true,"contract_address":"0xADE00C28244d5CE17D72E40330B1c318cD12B7c3","sale_address":"","contract_info":{},"colors":["#1b75bc","#1b75bc"],"type":"erc20","currency_id":"ethereum-mainnet:0xADE00C28244d5CE17D72E40330B1c318cD12B7c3"},{"code":"AE","name":"Aeternity","scale":18,"is_supported":false,"contract_address":"0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d","sale_address":"","contract_info":{},"colors":["#de3f6b","#de3f6b"],"type":"erc20","currency_id":"ethereum-mainnet:0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"},{"code":"AGI","name":"SingularityNET","scale":8,"is_supported":false,"contract_address":"0x8eB24319393716668D768dCEC29356ae9CfFe285","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","currency_id":"ethereum-mainnet:0x8eB24319393716668D768dCEC29356ae9CfFe285"},{"code":"AION","name":"Aion","scale":8,"is_supported":false,"contract_address":"0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466","sale_address":"","contract_info":{},"colors":["#00bfec","#00bfec"],"type":"erc20","currency_id":"ethereum-mainnet:0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466"},{"code":"AMB","name":"Amber","scale":18,"is_supported":false,"contract_address":"0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce","sale_address":"","contract_info":{},"colors":["#5ca7bc","#5ca7bc"],"type":"erc20","currency_id":"ethereum-mainnet:0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"},{"code":"ANT","name":"Aragon","scale":18,"is_supported":true,"contract_address":"0xa117000000f279d81a1d3cc75430faa017fa5a2e","sale_address":"","contract_info":{},"colors":["#2cd3e1","#2cd3e1"],"type":"erc20","currency_id":"ethereum-mainnet:0xa117000000f279d81a1d3cc75430faa017fa5a2e"},{"code":"AUTO","name":"CUBE","scale":18,"is_supported":false,"contract_address":"0x622dFfCc4e83C64ba959530A5a5580687a57581b","sale_address":"","contract_info":{},"colors":["#fab431","#fab431"],"type":"erc20","currency_id":"ethereum-mainnet:0x622dFfCc4e83C64ba959530A5a5580687a57581b"},{"code":"AVM","name":"AVM Ecosystem","scale":18,"is_supported":true,"contract_address":"0x74004a7227615fb52b82d17ffabfa376907d8a4d","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-mainnet:0x74004a7227615fb52b82d17ffabfa376907d8a4d"},{"code":"BAT","name":"Basic Attention","scale":18,"is_supported":true,"contract_address":"0x0D8775F648430679A709E98d2b0Cb6250d2887EF","sale_address":"","contract_info":{},"colors":["#ff5000","#ff5000"],"type":"erc20","alternate_names":{"coingecko":"basic-attention-token"},"currency_id":"ethereum-mainnet:0x0D8775F648430679A709E98d2b0Cb6250d2887EF"},{"code":"BIX","name":"BIX Token","scale":18,"is_supported":false,"contract_address":"0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069","sale_address":"","contract_info":{},"colors":["#6499ea","#6499ea"],"type":"erc20","currency_id":"ethereum-mainnet:0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069"},{"code":"BLZ","name":"Bluzelle","scale":18,"is_supported":true,"contract_address":"0x5732046a883704404f284ce41ffadd5b007fd668","sale_address":"","contract_info":{},"colors":["#18578c","#18578c"],"type":"erc20","alternate_names":{"coingecko":"bluzelle"},"currency_id":"ethereum-mainnet:0x5732046a883704404f284ce41ffadd5b007fd668"},{"code":"BNB","name":"Binance Coin","scale":18,"is_supported":false,"contract_address":"0xb8c77482e45f1f44de1745f52c74426c631bdd52","sale_address":"","contract_info":{},"colors":["#f3ba2f","#f3ba2f"],"type":"erc20","currency_id":"ethereum-mainnet:0xb8c77482e45f1f44de1745f52c74426c631bdd52"},{"code":"BNT","name":"Bancor","scale":18,"is_supported":true,"contract_address":"0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C","sale_address":"","contract_info":{},"colors":["#42d4fc","#42d4fc"],"type":"erc20","alternate_names":{"coingecko":"bancor"},"currency_id":"ethereum-mainnet:0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"},{"code":"BRD","name":"BRD Token","scale":18,"is_supported":true,"contract_address":"0x558ec3152e2eb2174905cd19aea4e34a23de9ad6","sale_address":"","contract_info":{},"colors":["#ff5193","#f9a43a"],"type":"erc20","currency_id":"ethereum-mainnet:0x558ec3152e2eb2174905cd19aea4e34a23de9ad6"},{"code":"BTM","name":"Bytom","scale":8,"is_supported":true,"contract_address":"0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750","sale_address":"","contract_info":{},"colors":["#b99948","#b99948"],"type":"erc20","currency_id":"ethereum-mainnet:0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"},{"code":"CFI","name":"Cofound.it","scale":18,"is_supported":false,"contract_address":"0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e","sale_address":"","contract_info":{},"colors":["#0099e5","#0099e5"],"type":"erc20","currency_id":"ethereum-mainnet:0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e"},{"code":"CMT","name":"CyberMiles","scale":18,"is_supported":false,"contract_address":"0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F","sale_address":"","contract_info":{},"colors":["#c1a05c","#c1a05c"],"type":"erc20","alternate_names":{"coingecko":"cybermiles"},"currency_id":"ethereum-mainnet:0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F"},{"code":"CND","name":"Cindicator","scale":18,"is_supported":true,"contract_address":"0xd4c435f5b09f855c3317c8524cb1f586e42795fa","sale_address":"","contract_info":{},"colors":["#304975","#304975"],"type":"erc20","alternate_names":{"coingecko":"cindicator"},"currency_id":"ethereum-mainnet:0xd4c435f5b09f855c3317c8524cb1f586e42795fa"},{"code":"CNN","name":"CNN Token","scale":18,"is_supported":false,"contract_address":"0x8713d26637cf49e1b6b4a7ce57106aabc9325343","sale_address":"","contract_info":{},"colors":["#6fa7f6","#6fa7f6"],"type":"erc20","currency_id":"ethereum-mainnet:0x8713d26637cf49e1b6b4a7ce57106aabc9325343"},{"code":"CRPT","name":"Crypterium","scale":18,"is_supported":true,"contract_address":"0x08389495d7456e1951ddf7c3a1314a4bfb646d8b","sale_address":"","contract_info":{},"colors":["#01bdcd","#01bdcd"],"type":"erc20","currency_id":"ethereum-mainnet:0x08389495d7456e1951ddf7c3a1314a4bfb646d8b"},{"code":"CS","name":"Credits","scale":6,"is_supported":false,"contract_address":"0x46b9ad944d1059450da1163511069c718f699d31","sale_address":"","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#0fa3d5","#0fa3d5"],"type":"erc20","alternate_names":{"cryptocompare":"crdts"},"currency_id":"ethereum-mainnet:0x46b9ad944d1059450da1163511069c718f699d31"},{"code":"CVC","name":"Civic","scale":8,"is_supported":true,"contract_address":"0x41e5560054824ea6b0732e656e3ad64e20e94e45","sale_address":"","contract_info":{},"colors":["#3ab03e","#3ab03e"],"type":"erc20","alternate_names":{"coingecko":"civic"},"currency_id":"ethereum-mainnet:0x41e5560054824ea6b0732e656e3ad64e20e94e45"},{"code":"DENT","name":"DENT","scale":8,"is_supported":true,"contract_address":"0x3597bfd533a99c9aa083587b074434e61eb0a258","sale_address":"","contract_info":{},"colors":["#666666","#666666"],"type":"erc20","currency_id":"ethereum-mainnet:0x3597bfd533a99c9aa083587b074434e61eb0a258"},{"code":"DGD","name":"DigixDAO","scale":9,"is_supported":false,"contract_address":"0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A","sale_address":"","contract_info":{},"colors":["#c2a059","#c2a059"],"type":"erc20","currency_id":"ethereum-mainnet:0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A"},{"code":"DNT","name":"district0x","scale":18,"is_supported":true,"contract_address":"0x0abdace70d3790235af448c88547603b945604ea","sale_address":"","contract_info":{},"colors":["#2c398f","#2c398f"],"type":"erc20","currency_id":"ethereum-mainnet:0x0abdace70d3790235af448c88547603b945604ea"},{"code":"DRGN","name":"Dragon","scale":18,"is_supported":true,"contract_address":"0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e","sale_address":"","contract_info":{},"colors":["#c91111","#c91111"],"type":"erc20","currency_id":"ethereum-mainnet:0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e"},{"code":"EDG","name":"Edgeless","scale":0,"is_supported":false,"contract_address":"0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c","sale_address":"","contract_info":{},"colors":["#3ecf8e","#3ecf8e"],"type":"erc20","alternate_names":{"coingecko":"edgeless"},"currency_id":"ethereum-mainnet:0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c"},{"code":"EDO","name":"Eidoo","scale":18,"is_supported":false,"contract_address":"0xced4e93198734ddaff8492d525bd258d49eb388e","sale_address":"","contract_info":{},"colors":["#139fe6","#139fe6"],"type":"erc20","currency_id":"ethereum-mainnet:0xced4e93198734ddaff8492d525bd258d49eb388e"},{"code":"ELF","name":"Aelf","scale":18,"is_supported":true,"contract_address":"0xbf2179859fc6d5bee9bf9158632dc51678a4100e","sale_address":"","contract_info":{},"colors":["#2b5ebb","#2b5ebb"],"type":"erc20","currency_id":"ethereum-mainnet:0xbf2179859fc6d5bee9bf9158632dc51678a4100e"},{"code":"ENG","name":"Enigma","scale":8,"is_supported":true,"contract_address":"0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4","sale_address":"","contract_info":{},"colors":["#2553cd","#2553cd"],"type":"erc20","currency_id":"ethereum-mainnet:0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"},{"code":"ENJ","name":"EnjinCoin","scale":18,"is_supported":true,"contract_address":"0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c","sale_address":"","contract_info":{},"colors":["#624dbf","#624dbf"],"type":"erc20","currency_id":"ethereum-mainnet:0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c"},{"code":"VGX","name":"Voyager","scale":8,"is_supported":false,"contract_address":"0x5af2be193a6abca9c8817001f45744777db30756","sale_address":"","contract_info":{},"colors":["#00cfab","#00cfab"],"type":"erc20","currency_id":"ethereum-mainnet:0x5af2be193a6abca9c8817001f45744777db30756"},{"code":"FSN","name":"Fusion","scale":18,"is_supported":false,"contract_address":"0xd0352a019e9ab9d757776f532377aaebd36fd541","sale_address":"","contract_info":{},"colors":["#1d9ad7","#1d9ad7"],"type":"erc20","currency_id":"ethereum-mainnet:0xd0352a019e9ab9d757776f532377aaebd36fd541"},{"code":"FUN","name":"FunFair","scale":8,"is_supported":true,"contract_address":"0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b","sale_address":"","contract_info":{},"colors":["#ed1968","#ed1968"],"type":"erc20","alternate_names":{"coingecko":"funfair"},"currency_id":"ethereum-mainnet:0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b"},{"code":"GD","name":"Zilla GD","scale":0,"is_supported":false,"contract_address":"0xb4cebdb66b3a5183fd4764a25cad1fc109535016","sale_address":"","contract_info":{},"colors":["#4776e6","#4776e6"],"type":"erc20","currency_id":"ethereum-mainnet:0xb4cebdb66b3a5183fd4764a25cad1fc109535016"},{"code":"GNO","name":"Gnosis","scale":18,"is_supported":true,"contract_address":"0x6810e776880C02933D47DB1b9fc05908e5386b96","sale_address":"","contract_info":{},"colors":["#00a6c4","#00a6c4"],"type":"erc20","currency_id":"ethereum-mainnet:0x6810e776880C02933D47DB1b9fc05908e5386b96"},{"code":"GNT","name":"Golem (legacy)","scale":18,"is_supported":false,"contract_address":"0xa74476443119A942dE498590Fe1f2454d7D4aC0d","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","currency_id":"ethereum-mainnet:0xa74476443119A942dE498590Fe1f2454d7D4aC0d"},{"code":"GNX","name":"Genaro Network","scale":9,"is_supported":false,"contract_address":"0x6ec8a24cabdc339a06a172f8223ea557055adaa5","sale_address":"","contract_info":{},"colors":["#7ba5de","#7ba5de"],"type":"erc20","currency_id":"ethereum-mainnet:0x6ec8a24cabdc339a06a172f8223ea557055adaa5"},{"code":"GTO","name":"Gifto","scale":5,"is_supported":true,"contract_address":"0xc5bbae50781be1669306b9e001eff57a2957b09d","sale_address":"","contract_info":{},"colors":["#7f27ff","#7f27ff"],"type":"erc20","currency_id":"ethereum-mainnet:0xc5bbae50781be1669306b9e001eff57a2957b09d"},{"code":"GUP","name":"Matchpool","scale":3,"is_supported":false,"contract_address":"0xf7B098298f7C69Fc14610bf71d5e02c60792894C","sale_address":"","contract_info":{},"colors":["#2FBEBA","#2FBEBA"],"type":"erc20","currency_id":"ethereum-mainnet:0xf7B098298f7C69Fc14610bf71d5e02c60792894C"},{"code":"GVT","name":"Genesis Vision","scale":18,"is_supported":false,"contract_address":"0x103c3A209da59d3E7C4A89307e66521e081CFDF0","sale_address":"","contract_info":{},"colors":["#16b9ad","#16b9ad"],"type":"erc20","currency_id":"ethereum-mainnet:0x103c3A209da59d3E7C4A89307e66521e081CFDF0"},{"code":"HPB","name":"HPBCoin","scale":18,"is_supported":false,"contract_address":"0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2","sale_address":"","contract_info":{},"colors":["#1591ca","#1591ca"],"type":"erc20","currency_id":"ethereum-mainnet:0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2"},{"code":"HYDRO","name":"Hydro","scale":18,"is_supported":false,"contract_address":"0xebbdf302c940c6bfd49c6b165f457fdb324649bc","sale_address":"","contract_info":{},"colors":["#2e72ed","#2e72ed"],"type":"erc20","currency_id":"ethereum-mainnet:0xebbdf302c940c6bfd49c6b165f457fdb324649bc"},{"code":"ICN","name":"ICONOMI","scale":18,"is_supported":false,"contract_address":"0x888666CA69E0f178DED6D75b5726Cee99A87D698","sale_address":"","contract_info":{},"colors":["#4c6f8c","#4c6f8c"],"type":"erc20","currency_id":"ethereum-mainnet:0x888666CA69E0f178DED6D75b5726Cee99A87D698"},{"code":"ICX","name":"ICON","scale":18,"is_supported":false,"contract_address":"0xb5a5f22694352c15b00323844ad545abb2b11028","sale_address":"","contract_info":{},"colors":["#1fc5c9","#1fc5c9"],"type":"erc20","currency_id":"ethereum-mainnet:0xb5a5f22694352c15b00323844ad545abb2b11028"},{"code":"IOST","name":"IOStoken","scale":18,"is_supported":false,"contract_address":"0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab","sale_address":"","contract_info":{},"colors":["#0f91ca","#0f91ca"],"type":"erc20","currency_id":"ethereum-mainnet:0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab"},{"code":"ITC","name":"IOT Chain","scale":18,"is_supported":false,"contract_address":"0x5e6b6d9abad9093fdc861ea1600eba1b355cd940","sale_address":"","contract_info":{},"colors":["#1b67b0","#1b67b0"],"type":"erc20","currency_id":"ethereum-mainnet:0x5e6b6d9abad9093fdc861ea1600eba1b355cd940"},{"code":"KIN","name":"Kin","scale":18,"is_supported":false,"contract_address":"0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5","sale_address":"","contract_info":{},"colors":["#2359cf","#2359cf"],"type":"erc20","currency_id":"ethereum-mainnet:0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5"},{"code":"KNC","name":"Kyber Network","scale":18,"is_supported":true,"contract_address":"0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-mainnet:0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202"},{"code":"LEND","name":"Aave (OLD)","scale":18,"is_supported":false,"contract_address":"0x80fB784B7eD66730e8b1DBd9820aFD29931aab03","sale_address":"","contract_info":{},"colors":["#0fa9c9","#0fa9c9"],"type":"erc20","currency_id":"ethereum-mainnet:0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"},{"code":"LINK","name":"ChainLink","scale":18,"is_supported":true,"contract_address":"0x514910771af9ca656af840dff83e8264ecf986ca","sale_address":"","contract_info":{},"colors":["#2a5ada","#2a5ada"],"type":"erc20","currency_id":"ethereum-mainnet:0x514910771af9ca656af840dff83e8264ecf986ca"},{"code":"LOOM","name":"Loom","scale":18,"is_supported":true,"contract_address":"0x42476F744292107e34519F9c357927074Ea3F75D","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-mainnet:0x42476F744292107e34519F9c357927074Ea3F75D"},{"code":"LRC","name":"Loopring","scale":18,"is_supported":true,"contract_address":"0xbbbbca6a901c926f240b89eacb641d8aec7aeafd","sale_address":"","contract_info":{},"colors":["#2ab6f6","#2ab6f6"],"type":"erc20","currency_id":"ethereum-mainnet:0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"},{"code":"LUN","name":"Lunyr","scale":18,"is_supported":false,"contract_address":"0xfa05A73FfE78ef8f1a739473e462c54bae6567D9","sale_address":"","contract_info":{},"colors":["#f55749","#f55749"],"type":"erc20","currency_id":"ethereum-mainnet:0xfa05A73FfE78ef8f1a739473e462c54bae6567D9"},{"code":"MAN","name":"MATRIX AI Network","scale":18,"is_supported":false,"contract_address":"0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d","sale_address":"","contract_info":{},"colors":["#019399","#019399"],"type":"erc20","currency_id":"ethereum-mainnet:0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d"},{"code":"MANA","name":"Decentraland","scale":18,"is_supported":true,"contract_address":"0x0F5D2fB29fb7d3CFeE444a200298f468908cC942","sale_address":"","contract_info":{},"colors":["#bfb5af","#bfb5af"],"type":"erc20","currency_id":"ethereum-mainnet:0x0F5D2fB29fb7d3CFeE444a200298f468908cC942"},{"code":"MCO","name":"Monaco","scale":8,"is_supported":false,"contract_address":"0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d","sale_address":"","contract_info":{},"colors":["#0d9aff","#0d9aff"],"type":"erc20","currency_id":"ethereum-mainnet:0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d"},{"code":"MTL","name":"Metal","scale":8,"is_supported":true,"contract_address":"0xF433089366899D83a9f26A773D59ec7eCF30355e","sale_address":"","contract_info":{},"colors":["#007aff","#007aff"],"type":"erc20","currency_id":"ethereum-mainnet:0xF433089366899D83a9f26A773D59ec7eCF30355e"},{"code":"NAS","name":"Nebulas","scale":18,"is_supported":false,"contract_address":"0x5d65D971895Edc438f465c17DB6992698a52318D","sale_address":"","contract_info":{},"colors":["#0029ff","#0029ff"],"type":"erc20","currency_id":"ethereum-mainnet:0x5d65D971895Edc438f465c17DB6992698a52318D"},{"code":"NEXO","name":"Nexo","scale":18,"is_supported":true,"contract_address":"0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206","sale_address":"","contract_info":{},"colors":["#4aa2ea","#4aa2ea"],"type":"erc20","currency_id":"ethereum-mainnet:0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206"},{"code":"NMR","name":"Numeraire","scale":18,"is_supported":true,"contract_address":"0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671","sale_address":"","contract_info":{},"colors":["#25b1cd","#25b1cd"],"type":"erc20","currency_id":"ethereum-mainnet:0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"},{"code":"NPXS","name":"Pundi X Token","scale":18,"is_supported":false,"contract_address":"0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3","sale_address":"","contract_info":{},"colors":["#DBBF4B","#DBBF4B"],"type":"erc20","currency_id":"ethereum-mainnet:0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3"},{"code":"NULS","name":"Nuls","scale":18,"is_supported":false,"contract_address":"0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c","sale_address":"","contract_info":{},"colors":["#82bd39","#82bd39"],"type":"erc20","currency_id":"ethereum-mainnet:0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c"},{"code":"OMG","name":"OmiseGO","scale":18,"is_supported":true,"contract_address":"0xd26114cd6EE289AccF82350c8d8487fedB8A0C07","sale_address":"","contract_info":{},"colors":["#1a53f0","#1a53f0"],"type":"erc20","currency_id":"ethereum-mainnet:0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"},{"code":"OST","name":"OST","scale":18,"is_supported":false,"contract_address":"0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA","sale_address":"","contract_info":{},"colors":["#e4b030","#e4b030"],"type":"erc20","currency_id":"ethereum-mainnet:0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA"},{"code":"PAL","name":"PolicyPal Network","scale":18,"is_supported":false,"contract_address":"0xfeDAE5642668f8636A11987Ff386bfd215F942EE","sale_address":"","contract_info":{},"colors":["#54b9a1","#54b9a1"],"type":"erc20","alternate_names":{"coingecko":"policypal"},"currency_id":"ethereum-mainnet:0xfeDAE5642668f8636A11987Ff386bfd215F942EE"},{"code":"PAY","name":"TenX","scale":18,"is_supported":true,"contract_address":"0xB97048628DB6B661D4C2aA833e95Dbe1A905B280","sale_address":"","contract_info":{},"colors":["#1780af","#1780af"],"type":"erc20","alternate_names":{"coingecko":"tenx"},"currency_id":"ethereum-mainnet:0xB97048628DB6B661D4C2aA833e95Dbe1A905B280"},{"code":"POE","name":"Po.et","scale":8,"is_supported":false,"contract_address":"0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195","sale_address":"","contract_info":{},"colors":["#b6a573","#b6a573"],"type":"erc20","currency_id":"ethereum-mainnet:0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195"},{"code":"POLY","name":"Polymath","scale":18,"is_supported":true,"contract_address":"0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC","sale_address":"","contract_info":{},"colors":["#4c5a95","#4c5a95"],"type":"erc20","currency_id":"ethereum-mainnet:0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"},{"code":"POWR","name":"Power Ledger","scale":6,"is_supported":true,"contract_address":"0x595832f8fc6bf59c85c527fec3740a1b7a361269","sale_address":"","contract_info":{},"colors":["#05bca9","#05bca9"],"type":"erc20","currency_id":"ethereum-mainnet:0x595832f8fc6bf59c85c527fec3740a1b7a361269"},{"code":"PPT","name":"Populous","scale":8,"is_supported":true,"contract_address":"0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a","sale_address":"","contract_info":{},"colors":["#5ca0f6","#5ca0f6"],"type":"erc20","currency_id":"ethereum-mainnet:0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a"},{"code":"PRL","name":"Oyster Pearl","scale":18,"is_supported":false,"contract_address":"0x1844b21593262668b7248d0f57a220caaba46ab9","sale_address":"","contract_info":{},"colors":["#0984fb","#0984fb"],"type":"erc20","currency_id":"ethereum-mainnet:0x1844b21593262668b7248d0f57a220caaba46ab9"},{"code":"PTOY","name":"Patientory","scale":8,"is_supported":false,"contract_address":"0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06","sale_address":"","contract_info":{},"colors":["#42b34e","#42b34e"],"type":"erc20","currency_id":"ethereum-mainnet:0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06"},{"code":"QASH","name":"QASH","scale":6,"is_supported":false,"contract_address":"0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6","sale_address":"","contract_info":{},"colors":["#1347e8","#1347e8"],"type":"erc20","currency_id":"ethereum-mainnet:0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6"},{"code":"QRL","name":"QRL","scale":8,"is_supported":false,"contract_address":"0x697beac28B09E122C4332D163985e8a73121b97F","sale_address":"","contract_info":{},"colors":["#c71e53","#c71e53"],"type":"erc20","currency_id":"ethereum-mainnet:0x697beac28B09E122C4332D163985e8a73121b97F"},{"code":"QSP","name":"Quantstamp","scale":18,"is_supported":true,"contract_address":"0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d","sale_address":"","contract_info":{},"colors":["#4e79ff","#4e79ff"],"type":"erc20","currency_id":"ethereum-mainnet:0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"},{"code":"REV","name":"Revain","scale":0,"is_supported":false,"contract_address":"0x48f775efbe4f5ece6e0df2f7b5932df56823b990","sale_address":"","contract_info":{},"colors":["#bd2df5","#bd2df5"],"type":"erc20","alternate_names":{"coingecko":"revain"},"currency_id":"ethereum-mainnet:0x48f775efbe4f5ece6e0df2f7b5932df56823b990"},{"code":"RCN","name":"Ripio Credit","scale":18,"is_supported":true,"contract_address":"0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6","sale_address":"","contract_info":{},"colors":["#3555f9","#3555f9"],"type":"erc20","currency_id":"ethereum-mainnet:0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"},{"code":"RDN","name":"Raiden Network","scale":18,"is_supported":true,"contract_address":"0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6","sale_address":"","contract_info":{},"colors":["#586c77","#586c77"],"type":"erc20","currency_id":"ethereum-mainnet:0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"},{"code":"REP","name":"Augur","scale":18,"is_supported":false,"contract_address":"0x1985365e9f78359a9B6AD760e32412f4a445E862","sale_address":"","contract_info":{},"colors":["#736e89","#736e89"],"type":"erc20","currency_id":"ethereum-mainnet:0x1985365e9f78359a9B6AD760e32412f4a445E862"},{"code":"REQ","name":"Request","scale":18,"is_supported":true,"contract_address":"0x8f8221aFbB33998d8584A2B05749bA73c37a938a","sale_address":"","contract_info":{},"colors":["#5a89f9","#5a89f9"],"type":"erc20","currency_id":"ethereum-mainnet:0x8f8221aFbB33998d8584A2B05749bA73c37a938a"},{"code":"RLC","name":"iExec RLC","scale":9,"is_supported":true,"contract_address":"0x607F4C5BB672230e8672085532f7e901544a7375","sale_address":"","contract_info":{},"colors":["#637799","#637799"],"type":"erc20","currency_id":"ethereum-mainnet:0x607F4C5BB672230e8672085532f7e901544a7375"},{"code":"RUFF","name":"RUFF","scale":18,"is_supported":false,"contract_address":"0xf278c1ca969095ffddded020290cf8b5c424ace2","sale_address":"","contract_info":{},"colors":["#01c8ca","#01c8ca"],"type":"erc20","currency_id":"ethereum-mainnet:0xf278c1ca969095ffddded020290cf8b5c424ace2"},{"code":"SALT","name":"SALT","scale":8,"is_supported":false,"contract_address":"0x4156D3342D5c385a87D264F90653733592000581","sale_address":"","contract_info":{},"colors":["#40b2b5","#40b2b5"],"type":"erc20","currency_id":"ethereum-mainnet:0x4156D3342D5c385a87D264F90653733592000581"},{"code":"SAN","name":"SAN","scale":18,"is_supported":false,"contract_address":"0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098","sale_address":"","contract_info":{},"colors":["#2b77b3","#2b77b3"],"type":"erc20","currency_id":"ethereum-mainnet:0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098"},{"code":"SENT","name":"SENTinel","scale":8,"is_supported":false,"contract_address":"0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037","sale_address":"","contract_info":{},"colors":["#3666aa","#3666aa"],"type":"erc20","currency_id":"ethereum-mainnet:0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037"},{"code":"SNC","name":"SunContract","scale":18,"is_supported":false,"contract_address":"0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404","sale_address":"","contract_info":{},"colors":["#1096d4","#1096d4"],"type":"erc20","currency_id":"ethereum-mainnet:0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404"},{"code":"SNGLS","name":"Singular DTV","scale":0,"is_supported":false,"contract_address":"0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009","sale_address":"","contract_info":{},"colors":["#b30d23","#b30d23"],"type":"erc20","currency_id":"ethereum-mainnet:0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009"},{"code":"SNM","name":"SONM","scale":18,"is_supported":false,"contract_address":"0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63","sale_address":"","contract_info":{},"colors":["#8e16fd","#8e16fd"],"type":"erc20","currency_id":"ethereum-mainnet:0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63"},{"code":"SNT","name":"Status","scale":18,"is_supported":true,"contract_address":"0x744d70FDBE2Ba4CF95131626614a1763DF805B9E","sale_address":"","contract_info":{},"colors":["#5b6dee","#5b6dee"],"type":"erc20","currency_id":"ethereum-mainnet:0x744d70FDBE2Ba4CF95131626614a1763DF805B9E"},{"code":"SRN","name":"SIRIN","scale":18,"is_supported":false,"contract_address":"0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25","sale_address":"","contract_info":{},"colors":["#37b7a5","#37b7a5"],"type":"erc20","currency_id":"ethereum-mainnet:0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25"},{"code":"STORJ","name":"Storj","scale":8,"is_supported":true,"contract_address":"0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC","sale_address":"","contract_info":{},"colors":["#2683ff","#2683ff"],"type":"erc20","currency_id":"ethereum-mainnet:0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC"},{"code":"STORM","name":"Storm","scale":18,"is_supported":false,"contract_address":"0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-mainnet:0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"},{"code":"STQ","name":"Storiqa","scale":18,"is_supported":false,"contract_address":"0x5c3a228510d246b78a3765c20221cbf3082b44a4","sale_address":"","contract_info":{},"colors":["#58b4f1","#58b4f1"],"type":"erc20","currency_id":"ethereum-mainnet:0x5c3a228510d246b78a3765c20221cbf3082b44a4"},{"code":"STX","name":"Stox","scale":18,"is_supported":false,"contract_address":"0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45","sale_address":"","contract_info":{},"colors":["#7022eb","#7022eb"],"type":"erc20","alternate_names":{"coingecko":"stox"},"currency_id":"ethereum-mainnet:0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45"},{"code":"SUB","name":"Substratum","scale":18,"is_supported":false,"contract_address":"0x8D75959f1E61EC2571aa72798237101F084DE63a","sale_address":"","contract_info":{},"colors":["#e53431","#e53431"],"type":"erc20","currency_id":"ethereum-mainnet:0x8D75959f1E61EC2571aa72798237101F084DE63a"},{"code":"THETA","name":"Theta Token","scale":18,"is_supported":false,"contract_address":"0x3883f5e181fccaf8410fa61e12b59bad963fb645","sale_address":"","contract_info":{},"colors":["#2ab8e6","#2ab8e6"],"type":"erc20","currency_id":"ethereum-mainnet:0x3883f5e181fccaf8410fa61e12b59bad963fb645"},{"code":"TIME","name":"Chronobank","scale":8,"is_supported":false,"contract_address":"0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53","sale_address":"","contract_info":{},"colors":["#5db3ed","#5db3ed"],"type":"erc20","currency_id":"ethereum-mainnet:0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53"},{"code":"UCASH","name":"UCASH","scale":8,"is_supported":false,"contract_address":"0x92e52a1a235d9a103d970901066ce910aacefd37","sale_address":"","contract_info":{},"colors":["#c59a47","#c59a47"],"type":"erc20","currency_id":"ethereum-mainnet:0x92e52a1a235d9a103d970901066ce910aacefd37"},{"code":"VEE","name":"BLOCKv","scale":18,"is_supported":false,"contract_address":"0x340d2bde5eb28c1eed91b2f790723e3b160613b7","sale_address":"","contract_info":{},"colors":["#6a7d7f","#6a7d7f"],"type":"erc20","currency_id":"ethereum-mainnet:0x340d2bde5eb28c1eed91b2f790723e3b160613b7"},{"code":"VIB","name":"Viberate","scale":18,"is_supported":false,"contract_address":"0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724","sale_address":"","contract_info":{},"colors":["#ff1f43","#ff1f43"],"type":"erc20","currency_id":"ethereum-mainnet:0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724"},{"code":"WAX","name":"WAX","scale":8,"is_supported":false,"contract_address":"0x39Bb259F66E1C59d5ABEF88375979b4D20D98022","sale_address":"","contract_info":{},"colors":["#f89022","#f89022"],"type":"erc20","currency_id":"ethereum-mainnet:0x39Bb259F66E1C59d5ABEF88375979b4D20D98022"},{"code":"WINGS","name":"Wings","scale":18,"is_supported":false,"contract_address":"0x667088b212ce3d06a1b553a7221E1fD19000d9aF","sale_address":"","contract_info":{},"colors":["#0dc9f7","#0dc9f7"],"type":"erc20","currency_id":"ethereum-mainnet:0x667088b212ce3d06a1b553a7221E1fD19000d9aF"},{"code":"WPR","name":"WePower","scale":18,"is_supported":false,"contract_address":"0x4CF488387F035FF08c371515562CBa712f9015d4","sale_address":"","contract_info":{},"colors":["#dbcc49","#dbcc49"],"type":"erc20","currency_id":"ethereum-mainnet:0x4CF488387F035FF08c371515562CBa712f9015d4"},{"code":"WRC","name":"Worldcore","scale":6,"is_supported":false,"contract_address":"0x72adadb447784dd7ab1f472467750fc485e4cb2d","sale_address":"","contract_info":{},"colors":["#27bcba","#27bcba"],"type":"erc20","currency_id":"ethereum-mainnet:0x72adadb447784dd7ab1f472467750fc485e4cb2d"},{"code":"WTC","name":"Waltonchain","scale":18,"is_supported":false,"contract_address":"0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74","sale_address":"","contract_info":{},"colors":["#8200ff","#8200ff"],"type":"erc20","currency_id":"ethereum-mainnet:0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"},{"code":"XJP","name":"Digital JPY","scale":0,"is_supported":false,"contract_address":"0x39689fE671C01fcE173395f6BC45D4C332026666","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-mainnet:0x39689fE671C01fcE173395f6BC45D4C332026666"},{"code":"ZIL","name":"Zilliqa","scale":12,"is_supported":false,"contract_address":"0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27","sale_address":"","contract_info":{},"colors":["#49c1bf","#49c1bf"],"type":"erc20","currency_id":"ethereum-mainnet:0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27"},{"code":"ZLA","name":"Zilla","scale":18,"is_supported":false,"contract_address":"0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16","sale_address":"","contract_info":{},"colors":["#5e6ab2","#5e6ab2"],"type":"erc20","currency_id":"ethereum-mainnet:0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16"},{"code":"ZRX","name":"0x","scale":18,"is_supported":true,"contract_address":"0xE41d2489571d322189246DaFA5ebDe1F4699F498","sale_address":"","contract_info":{},"colors":["#9c82f5","#9c82f5"],"type":"erc20","currency_id":"ethereum-mainnet:0xE41d2489571d322189246DaFA5ebDe1F4699F498"},{"code":"TEL","name":"Telcoin","scale":2,"is_supported":true,"contract_address":"0x467bccd9d29f223bce8043b84e8c8b282827790f","sale_address":"","contract_info":{},"colors":["#59C6FA","#59C6FA"],"type":"erc20","currency_id":"ethereum-mainnet:0x467bccd9d29f223bce8043b84e8c8b282827790f"},{"code":"CCC","name":"Container Crypto Coin","scale":18,"is_supported":false,"contract_address":"0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d","sale_address":"0x8cee633c5c4caae99f466a14171a53bc2ea2d291","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#95C121","#95C121"],"type":"erc20","currency_id":"ethereum-mainnet:0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d"},{"code":"EOS","name":"EOS","scale":18,"is_supported":false,"contract_address":"0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0","sale_address":"","contract_info":{},"colors":["#7f91a7","#7f91a7"],"type":"erc20","currency_id":"ethereum-mainnet:0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"},{"code":"TRX","name":"TRON","scale":6,"is_supported":false,"contract_address":"0xf230b790e05390fc8295f4d3f60332c93bed42e2","sale_address":"","contract_info":{},"colors":["#ba2323","#ba2323"],"type":"erc20","currency_id":"ethereum-mainnet:0xf230b790e05390fc8295f4d3f60332c93bed42e2"},{"code":"AMLT","name":"AMLT by Coinfirm","scale":18,"is_supported":false,"contract_address":"0xca0e7269600d353f70b14ad118a49575455c0f2f","sale_address":"","contract_info":{},"colors":["#035AD8","#035AD8"],"type":"erc20","currency_id":"ethereum-mainnet:0xca0e7269600d353f70b14ad118a49575455c0f2f"},{"code":"APPC","name":"AppCoins","scale":18,"is_supported":false,"contract_address":"0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db","sale_address":"","contract_info":{},"colors":["#1F7AB9","#3196A8"],"type":"erc20","currency_id":"ethereum-mainnet:0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db"},{"code":"ATMI","name":"Atonomi","scale":18,"is_supported":false,"contract_address":"0x97aeb5066e1a590e868b511457beb6fe99d329f5","sale_address":"","contract_info":{},"colors":["#2B9FDA","#2B9FDA"],"type":"erc20","currency_id":"ethereum-mainnet:0x97aeb5066e1a590e868b511457beb6fe99d329f5"},{"code":"STU","name":"bitJob","scale":18,"is_supported":false,"contract_address":"0x0371a82e4a9d0a4312f3ee2ac9c6958512891372","sale_address":"","contract_info":{},"colors":["#0E235B","#0E235B"],"type":"erc20","currency_id":"ethereum-mainnet:0x0371a82e4a9d0a4312f3ee2ac9c6958512891372"},{"code":"CAS","name":"Cashaa","scale":18,"is_supported":false,"contract_address":"0xe8780b48bdb05f928697a5e8155f672ed91462f7","sale_address":"","contract_info":{},"colors":["#15398C","#15398C"],"type":"erc20","currency_id":"ethereum-mainnet:0xe8780b48bdb05f928697a5e8155f672ed91462f7"},{"code":"DOV","name":"Dovu","scale":18,"is_supported":false,"contract_address":"0xac3211a5025414af2866ff09c23fc18bc97e79b1","sale_address":"","contract_info":{},"colors":["#033686","#033686"],"type":"erc20","currency_id":"ethereum-mainnet:0xac3211a5025414af2866ff09c23fc18bc97e79b1"},{"code":"XUC","name":"Exchange Union","scale":18,"is_supported":false,"contract_address":"0xc324a2f6b05880503444451b8b27e6f9e63287cb","sale_address":"","contract_info":{},"colors":["#2AA9E1","#2AA9E1"],"type":"erc20","currency_id":"ethereum-mainnet:0xc324a2f6b05880503444451b8b27e6f9e63287cb"},{"code":"GBX","name":"Globitex","scale":8,"is_supported":false,"contract_address":"0x12fcd6463e66974cf7bbc24ffc4d40d6be458283","sale_address":"","contract_info":{},"colors":["#005496","#005496"],"type":"erc20","alternate_names":{"coingecko":"globitex"},"currency_id":"ethereum-mainnet:0x12fcd6463e66974cf7bbc24ffc4d40d6be458283"},{"code":"IXT","name":"iXledger","scale":8,"is_supported":false,"contract_address":"0xfca47962d45adfdfd1ab2d972315db4ce7ccf094","sale_address":"","contract_info":{},"colors":["#1EB0D3","#1EB0D3"],"type":"erc20","currency_id":"ethereum-mainnet:0xfca47962d45adfdfd1ab2d972315db4ce7ccf094"},{"code":"MYST","name":"Mysterium","scale":8,"is_supported":false,"contract_address":"0xa645264C5603E96c3b0B078cdab68733794B0A71","sale_address":"","contract_info":{},"colors":["#C6205D","#322262"],"type":"erc20","currency_id":"ethereum-mainnet:0xa645264C5603E96c3b0B078cdab68733794B0A71"},{"code":"RCC","name":"Reality Clash","scale":18,"is_supported":false,"contract_address":"0x9b6443b0fb9c241a7fdac375595cea13e6b7807a","sale_address":"","contract_info":{},"colors":["#00FFFF","#00FFFF"],"type":"erc20","currency_id":"ethereum-mainnet:0x9b6443b0fb9c241a7fdac375595cea13e6b7807a"},{"code":"RVT","name":"Rivetz","scale":18,"is_supported":false,"contract_address":"0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244","sale_address":"","contract_info":{},"colors":["#F36E24","#F36E24"],"type":"erc20","currency_id":"ethereum-mainnet:0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244"},{"code":"STK","name":"STK","scale":18,"is_supported":false,"contract_address":"0xae73b38d1c9a8b274127ec30160a4927c4d71824","sale_address":"","contract_info":{},"colors":["#000000","#000000"],"type":"erc20","alternate_names":{"coingecko":"stk"},"currency_id":"ethereum-mainnet:0xae73b38d1c9a8b274127ec30160a4927c4d71824"},{"code":"PMTN","name":"Peer Mountain","scale":18,"is_supported":false,"contract_address":"0xe91df2bb9bccd18c45f01843cab88768d64f2d32","sale_address":"","contract_info":{},"colors":["#4BC4DE","#4BC4DE"],"type":"erc20","currency_id":"ethereum-mainnet:0xe91df2bb9bccd18c45f01843cab88768d64f2d32"},{"code":"TUSD","name":"TrueUSD","scale":18,"is_supported":true,"contract_address":"0x0000000000085d4780B73119b644AE5ecd22b376","sale_address":"","contract_info":{},"colors":["#67C6BB","#67C6BB"],"type":"erc20","currency_id":"ethereum-mainnet:0x0000000000085d4780B73119b644AE5ecd22b376"},{"code":"CSP","name":"Caspian","scale":18,"is_supported":false,"contract_address":"0xa6446d655a0c34bc4f05042ee88170d056cbaf45","sale_address":"","contract_info":{},"colors":["#22586F","#22586F"],"type":"erc20","currency_id":"ethereum-mainnet:0xa6446d655a0c34bc4f05042ee88170d056cbaf45"},{"code":"RC1U03","name":"RentalCoin 1.0","scale":6,"is_supported":false,"contract_address":"0x7384db1aaa06364d1e6e67f5434391d3eea2a038","sale_address":"","contract_info":{},"colors":["#18336B","#18336B"],"type":"erc20","currency_id":"ethereum-mainnet:0x7384db1aaa06364d1e6e67f5434391d3eea2a038"},{"code":"SAI","name":"Sai","scale":18,"is_supported":false,"contract_address":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359","sale_address":"","contract_info":{},"colors":["#FBBA00","#FBBA00"],"type":"erc20","alternate_names":{"coingecko":"sai","cryptocompare":"dai"},"currency_id":"ethereum-mainnet:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},{"code":"MKR","name":"Maker","scale":18,"is_supported":true,"contract_address":"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2","sale_address":"","contract_info":{},"colors":["#1ABC9C","#1ABC9C"],"type":"erc20","currency_id":"ethereum-mainnet:0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"},{"code":"BCH","name":"Bitcoin Cash","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#478559","#478559"],"type":"","currency_id":"bitcoincash-mainnet:__native__"},{"code":"BTC","name":"Bitcoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#f29500","#f29500"],"type":"","currency_id":"bitcoin-mainnet:__native__"},{"code":"ETH","name":"Ethereum","scale":18,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#5e6fa5","#5e6fa5"],"type":"","currency_id":"ethereum-mainnet:__native__"},{"code":"PAX","name":"Paxos Standard","scale":18,"is_supported":true,"contract_address":"0x8e870d67f660d95d5be530380d0ec0bd388289e1","sale_address":"","contract_info":{},"colors":["#20BCD4","#20BCD4"],"type":"erc20","currency_id":"ethereum-mainnet:0x8e870d67f660d95d5be530380d0ec0bd388289e1"},{"code":"ARN","name":"Aeron","scale":8,"is_supported":false,"contract_address":"0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","currency_id":"ethereum-mainnet:0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6"},{"code":"GUSD","name":"Gemini Dollar","scale":2,"is_supported":true,"contract_address":"0x056fd409e1d7a124bd7017459dfea2f387b6d5cd","sale_address":"","contract_info":{},"colors":["#68DAF5","#68DAF5"],"type":"erc20","currency_id":"ethereum-mainnet:0x056fd409e1d7a124bd7017459dfea2f387b6d5cd"},{"code":"FXC","name":"Flexacoin","scale":18,"is_supported":false,"contract_address":"0x4a57E687b9126435a9B19E4A802113e266AdeBde","sale_address":"","contract_info":{},"colors":["#cc2fff","#2815ff"],"type":"erc20","currency_id":"ethereum-mainnet:0x4a57E687b9126435a9B19E4A802113e266AdeBde"},{"code":"USDC","name":"USD Coin","scale":6,"is_supported":true,"contract_address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","sale_address":"","contract_info":{},"colors":["#2775CA","#2775CA"],"type":"erc20","currency_id":"ethereum-mainnet:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{"code":"DAI","name":"Dai","scale":18,"is_supported":true,"contract_address":"0x6b175474e89094c44da98b954eedeac495271d0f","sale_address":"","contract_info":{},"colors":["#F4B731","#F4B731"],"type":"erc20","alternate_names":{"cryptocompare":"mcd"},"currency_id":"ethereum-mainnet:0x6b175474e89094c44da98b954eedeac495271d0f"},{"code":"XRP","name":"XRP","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#282e34","#282e34"],"type":"","alternate_names":{"payid":"xrpl-mainnet"},"currency_id":"ripple-mainnet:__native__"},{"code":"OXT","name":"Orchid","scale":18,"is_supported":true,"contract_address":"0x4575f41308ec1483f3d399aa9a2826d74da13deb","sale_address":"","contract_info":{},"colors":["#5F45BA","#5F45BA"],"type":"erc20","currency_id":"ethereum-mainnet:0x4575f41308ec1483f3d399aa9a2826d74da13deb"},{"code":"HBAR","name":"Hedera","scale":9,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#8259EF","#8259EF"],"type":"","currency_id":"hedera-mainnet:__native__"},{"code":"EUR.AVM","name":"EUR AVM","scale":2,"is_supported":false,"contract_address":"0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-mainnet:0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a"},{"code":"STMX","name":"StormX","scale":18,"is_supported":true,"contract_address":"0xbE9375C6a420D2eEB258962efB95551A5b722803","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-mainnet:0xbE9375C6a420D2eEB258962efB95551A5b722803"},{"code":"USDT","name":"Tether USD","scale":6,"is_supported":true,"contract_address":"0xdac17f958d2ee523a2206206994597c13d831ec7","sale_address":"","contract_info":{},"colors":["#137D61","#137D61"],"type":"erc20","alternate_names":{"coingecko":"tether","cryptocompare":"usdt"},"currency_id":"ethereum-mainnet:0xdac17f958d2ee523a2206206994597c13d831ec7"},{"code":"NCASH","name":"Nucleus Vision","scale":18,"is_supported":false,"contract_address":"0x809826cceab68c387726af962713b64cb5cb3cca","sale_address":"","contract_info":{},"colors":["#36a9cf","#36a9cf"],"type":"erc20","currency_id":"ethereum-mainnet:0x809826cceab68c387726af962713b64cb5cb3cca"},{"code":"AST","name":"Airswap","scale":4,"is_supported":true,"contract_address":"0x27054b13b1b798b345b591a4d22e6562d47ea75a","sale_address":"","contract_info":{},"colors":["#2b71ff","#2b71ff"],"type":"erc20","alternate_names":{"coingecko":"airswap"},"currency_id":"ethereum-mainnet:0x27054b13b1b798b345b591a4d22e6562d47ea75a"},{"code":"BUSD","name":"Binance USD","scale":18,"is_supported":true,"contract_address":"0x4fabb145d64652a948d72533023f6e7a623c7c53","sale_address":"","contract_info":{},"colors":["#f0b90b","#f0b90b"],"type":"erc20","alternate_names":{"coingecko":"binance-usd"},"currency_id":"ethereum-mainnet:0x4fabb145d64652a948d72533023f6e7a623c7c53"},{"code":"UNI","name":"Uniswap","scale":18,"is_supported":true,"contract_address":"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984","sale_address":"","contract_info":{},"colors":["#ff007a","#ff007a"],"type":"erc20","alternate_names":{"coingecko":"uniswap"},"currency_id":"ethereum-mainnet:0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"},{"code":"AAVE","name":"Aave","scale":18,"is_supported":true,"contract_address":"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9","sale_address":"","contract_info":{},"colors":["#b6509e","#b6509e"],"type":"erc20","alternate_names":{"coingecko":"aave"},"currency_id":"ethereum-mainnet:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{"code":"XTZ","name":"Tezos","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#2C7DF7","#2C7DF7"],"type":"","alternate_names":{"coingecko":"tezos"},"currency_id":"tezos-mainnet:__native__"},{"code":"GLM","name":"Golem","scale":18,"is_supported":true,"contract_address":"0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","alternate_names":{"coingecko":"golem"},"currency_id":"ethereum-mainnet:0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"},{"code":"ZUSD","name":"Z.com USD","scale":6,"is_supported":true,"contract_address":"0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA","sale_address":"","contract_info":{},"colors":["#d62825","#d62825"],"type":"erc20","alternate_names":{"coingecko":"zusd"},"currency_id":"ethereum-mainnet:0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA"},{"code":"GYEN","name":"GMO JPY","scale":6,"is_supported":true,"contract_address":"0xC08512927D12348F6620a698105e1BAac6EcD911","sale_address":"","contract_info":{},"colors":["#005cac","#005cac"],"type":"erc20","alternate_names":{"coingecko":"gyen"},"currency_id":"ethereum-mainnet:0xC08512927D12348F6620a698105e1BAac6EcD911"},{"code":"SNX","name":"Synthetix","scale":18,"is_supported":true,"contract_address":"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f","sale_address":"","contract_info":{},"colors":["#58e0fe","#58e0fe"],"type":"erc20","alternate_names":{"coingecko":"havven"},"currency_id":"ethereum-mainnet:0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"},{"code":"GRT","name":"The Graph","scale":18,"is_supported":true,"contract_address":"0xc944E90C64B2c07662A292be6244BDf05Cda44a7","sale_address":"","contract_info":{},"colors":["#6f4cff","#6f4cff"],"type":"erc20","alternate_names":{"coingecko":"the-graph"},"currency_id":"ethereum-mainnet:0xc944E90C64B2c07662A292be6244BDf05Cda44a7"},{"code":"SUSHI","name":"Sushi","scale":18,"is_supported":true,"contract_address":"0x6b3595068778dd592e39a122f4f5a5cf09c90fe2","sale_address":"","contract_info":{},"colors":["#fa52a0","#fa52a0"],"type":"erc20","alternate_names":{"coingecko":"sushi"},"currency_id":"ethereum-mainnet:0x6b3595068778dd592e39a122f4f5a5cf09c90fe2"},{"code":"COMP","name":"Compound","scale":18,"is_supported":true,"contract_address":"0xc00e94cb662c3520282e6f5717214004a7f26888","sale_address":"","contract_info":{},"colors":["#00c48a","#00c48a"],"type":"erc20","alternate_names":{"coingecko":"compound-governance-token"},"currency_id":"ethereum-mainnet:0xc00e94cb662c3520282e6f5717214004a7f26888"},{"code":"YFI","name":"yearn.finance","scale":18,"is_supported":true,"contract_address":"0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e","sale_address":"","contract_info":{},"colors":["#006ae3","#006ae3"],"type":"erc20","alternate_names":{"coingecko":"yearn-finance"},"currency_id":"ethereum-mainnet:0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e"},{"code":"UMA","name":"UMA","scale":18,"is_supported":true,"contract_address":"0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828","sale_address":"","contract_info":{},"colors":["#ff4a4a","#ff4a4a"],"type":"erc20","alternate_names":{"coingecko":"uma"},"currency_id":"ethereum-mainnet:0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828"},{"code":"OLDLOOM","name":"Loom (Old)","scale":18,"is_supported":false,"contract_address":"0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-mainnet:0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0"},{"code":"KNCL","name":"Kyber Network (Legacy)","scale":18,"is_supported":false,"contract_address":"0xdd974d5c2e2928dea5f71b9825b8b646686bd200","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-mainnet:0xdd974d5c2e2928dea5f71b9825b8b646686bd200"},{"code":"ARNX","name":"Aeron","scale":18,"is_supported":true,"contract_address":"0x0C37Bcf456bC661C14D596683325623076D7e283","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","alternate_names":{"coingecko":"aeron"},"currency_id":"ethereum-mainnet:0x0C37Bcf456bC661C14D596683325623076D7e283"},{"code":"AGIX","name":"SingularityNET","scale":8,"is_supported":true,"contract_address":"0x5B7533812759B45C2B44C19e320ba2cD2681b542","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","alternate_names":{"coingecko":"singularitynet"},"currency_id":"ethereum-mainnet:0x5B7533812759B45C2B44C19e320ba2cD2681b542"},{"code":"CRV","name":"Curve","scale":18,"is_supported":true,"contract_address":"0xD533a949740bb3306d119CC777fa900bA034cd52","sale_address":"","contract_info":{},"colors":["#3665A4","#3665A4"],"type":"erc20","alternate_names":{"coingecko":"curve-dao-token"},"currency_id":"ethereum-mainnet:0xD533a949740bb3306d119CC777fa900bA034cd52"},{"code":"1INCH","name":"1inch","scale":18,"is_supported":true,"contract_address":"0x111111111117dc0aa78b770fa6a738034120c302","sale_address":"","contract_info":{},"colors":["#2AB7CC","#2AB7CC"],"type":"erc20","alternate_names":{"coingecko":"1inch"},"currency_id":"ethereum-mainnet:0x111111111117dc0aa78b770fa6a738034120c302"},{"code":"SXP","name":"Swipe","scale":18,"is_supported":true,"contract_address":"0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9","sale_address":"","contract_info":{},"colors":["#FE5025","#FE5025"],"type":"erc20","alternate_names":{"coingecko":"swipe"},"currency_id":"ethereum-mainnet:0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9"},{"code":"BAL","name":"Balancer","scale":18,"is_supported":true,"contract_address":"0xba100000625a3754423978a60c9317c58a424e3d","sale_address":"","contract_info":{},"colors":["#1E1E1E","#1E1E1E"],"type":"erc20","alternate_names":{"coingecko":"balancer"},"currency_id":"ethereum-mainnet:0xba100000625a3754423978a60c9317c58a424e3d"},{"code":"BAND","name":"Band Protocol","scale":18,"is_supported":true,"contract_address":"0xba11d00c5f74255f56a5e366f4f77f5a186d7f55","sale_address":"","contract_info":{},"colors":["#516AFF","#516AFF"],"type":"erc20","alternate_names":{"coingecko":"band-protocol"},"currency_id":"ethereum-mainnet:0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"},{"code":"DPI","name":"DeFiPulse Index","scale":18,"is_supported":true,"contract_address":"0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b","sale_address":"","contract_info":{},"colors":["#8150E6","#8150E6"],"type":"erc20","alternate_names":{"coingecko":"defipulse-index"},"currency_id":"ethereum-mainnet:0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b"},{"code":"MATIC","name":"Polygon","scale":18,"is_supported":true,"contract_address":"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0","sale_address":"","contract_info":{},"colors":["#8247E5","#8247E5"],"type":"erc20","alternate_names":{"coingecko":"matic-network"},"currency_id":"ethereum-mainnet:0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"},{"code":"SHIB","name":"Shiba Inu","scale":18,"is_supported":true,"contract_address":"0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE","sale_address":"","contract_info":{},"colors":["#F00500","#F00500"],"type":"erc20","alternate_names":{"coingecko":"shiba-inu"},"currency_id":"ethereum-mainnet:0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{"code":"WBTC","name":"Wrapped BTC","scale":8,"is_supported":true,"contract_address":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","sale_address":"","contract_info":{},"colors":["#7C3E88","#7C3E88"],"type":"erc20","alternate_names":{"coingecko":"wrapped-bitcoin"},"currency_id":"ethereum-mainnet:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"},{"code":"AXS","name":"Axie Infinity","scale":18,"is_supported":true,"contract_address":"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b","sale_address":"","contract_info":{},"colors":["#0B5BDD","#0B5BDD"],"type":"erc20","alternate_names":{"coingecko":"axie-infinity"},"currency_id":"ethereum-mainnet:0xbb0e17ef65f82ab018d8edd776e8dd940327b28b"},{"code":"CHZ","name":"Chiliz","scale":18,"is_supported":true,"contract_address":"0x3506424f91fd33084466f402d5d97f05f8e3b4af","sale_address":"","contract_info":{},"colors":["#AD0000","#AD0000"],"type":"erc20","alternate_names":{"coingecko":"chiliz"},"currency_id":"ethereum-mainnet:0x3506424f91fd33084466f402d5d97f05f8e3b4af"},{"code":"SAND","name":"Sandbox","scale":18,"is_supported":true,"contract_address":"0x3845badAde8e6dFF049820680d1F14bD3903a5d0","sale_address":"","contract_info":{},"colors":["#019FF5","#019FF5"],"type":"erc20","alternate_names":{"coingecko":"the-sandbox"},"currency_id":"ethereum-mainnet:0x3845badAde8e6dFF049820680d1F14bD3903a5d0"},{"code":"PERP","name":"Perpetual","scale":18,"is_supported":true,"contract_address":"0xbC396689893D065F41bc2C6EcbeE5e0085233447","sale_address":"","contract_info":{},"colors":["#03BCE4","#03BCE4"],"type":"erc20","alternate_names":{"coingecko":"perpetual-protocol"},"currency_id":"ethereum-mainnet:0xbC396689893D065F41bc2C6EcbeE5e0085233447"},{"code":"FOX","name":"ShapeShift","scale":18,"is_supported":true,"contract_address":"0xc770eefad204b5180df6a14ee197d99d808ee52d","sale_address":"","contract_info":{},"colors":["#1D4AC9","#1D4AC9"],"type":"erc20","alternate_names":{"coingecko":"shapeshift-fox-token"},"currency_id":"ethereum-mainnet:0xc770eefad204b5180df6a14ee197d99d808ee52d"},{"code":"DOGE","name":"Dogecoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#DAB053","#DAB053"],"type":"","alternate_names":{"coingecko":"dogecoin"},"currency_id":"dogecoin-mainnet:__native__"},{"code":"LTC","name":"Litecoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#59667E","#59667E"],"type":"","alternate_names":{"coingecko":"litecoin"},"currency_id":"litecoin-mainnet:__native__"}] \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/raw/tokens_testnet.json b/brd-android/app-core/src/main/res/raw/tokens_testnet.json index e1cf64133..2976a8e39 100644 --- a/brd-android/app-core/src/main/res/raw/tokens_testnet.json +++ b/brd-android/app-core/src/main/res/raw/tokens_testnet.json @@ -1 +1 @@ -[{"code":"1ST","name":"FirstBlood","scale":18,"is_supported":false,"contract_address":"0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-ropsten:0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7"},{"code":"ABT","name":"ArcBlock","scale":18,"is_supported":false,"contract_address":"0xb98d4c97425d9908e66e53a6fdf673acca0be986","sale_address":"","contract_info":{},"colors":["#1aaad0","#1aaad0"],"type":"erc20","currency_id":"ethereum-ropsten:0xb98d4c97425d9908e66e53a6fdf673acca0be986"},{"code":"ADT","name":"adToken","scale":9,"is_supported":true,"contract_address":"0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD","sale_address":"","contract_info":{},"colors":["#0071bc","#0071bc"],"type":"erc20","currency_id":"ethereum-ropsten:0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD"},{"code":"ADX","name":"AdEx","scale":18,"is_supported":true,"contract_address":"0xADE00C28244d5CE17D72E40330B1c318cD12B7c3","sale_address":"","contract_info":{},"colors":["#1b75bc","#1b75bc"],"type":"erc20","currency_id":"ethereum-ropsten:0xADE00C28244d5CE17D72E40330B1c318cD12B7c3"},{"code":"AE","name":"Aeternity","scale":18,"is_supported":false,"contract_address":"0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d","sale_address":"","contract_info":{},"colors":["#de3f6b","#de3f6b"],"type":"erc20","currency_id":"ethereum-ropsten:0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"},{"code":"AGI","name":"SingularityNET","scale":8,"is_supported":false,"contract_address":"0x8eB24319393716668D768dCEC29356ae9CfFe285","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","currency_id":"ethereum-ropsten:0x8eB24319393716668D768dCEC29356ae9CfFe285"},{"code":"AION","name":"Aion","scale":8,"is_supported":false,"contract_address":"0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466","sale_address":"","contract_info":{},"colors":["#00bfec","#00bfec"],"type":"erc20","currency_id":"ethereum-ropsten:0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466"},{"code":"AMB","name":"Amber","scale":18,"is_supported":false,"contract_address":"0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce","sale_address":"","contract_info":{},"colors":["#5ca7bc","#5ca7bc"],"type":"erc20","currency_id":"ethereum-ropsten:0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"},{"code":"ANT","name":"Aragon","scale":18,"is_supported":true,"contract_address":"0xa117000000f279d81a1d3cc75430faa017fa5a2e","sale_address":"","contract_info":{},"colors":["#2cd3e1","#2cd3e1"],"type":"erc20","currency_id":"ethereum-ropsten:0xa117000000f279d81a1d3cc75430faa017fa5a2e"},{"code":"AUTO","name":"CUBE","scale":18,"is_supported":false,"contract_address":"0x622dFfCc4e83C64ba959530A5a5580687a57581b","sale_address":"","contract_info":{},"colors":["#fab431","#fab431"],"type":"erc20","currency_id":"ethereum-ropsten:0x622dFfCc4e83C64ba959530A5a5580687a57581b"},{"code":"AVM","name":"AVM Ecosystem","scale":18,"is_supported":true,"contract_address":"0x74004a7227615fb52b82d17ffabfa376907d8a4d","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-ropsten:0x74004a7227615fb52b82d17ffabfa376907d8a4d"},{"code":"BAT","name":"Basic Attention","scale":18,"is_supported":true,"contract_address":"0x0D8775F648430679A709E98d2b0Cb6250d2887EF","sale_address":"","contract_info":{},"colors":["#ff5000","#ff5000"],"type":"erc20","alternate_names":{"coingecko":"basic-attention-token"},"currency_id":"ethereum-ropsten:0x0D8775F648430679A709E98d2b0Cb6250d2887EF"},{"code":"BIX","name":"BIX Token","scale":18,"is_supported":false,"contract_address":"0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069","sale_address":"","contract_info":{},"colors":["#6499ea","#6499ea"],"type":"erc20","currency_id":"ethereum-ropsten:0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069"},{"code":"BLZ","name":"Bluzelle","scale":18,"is_supported":true,"contract_address":"0x5732046a883704404f284ce41ffadd5b007fd668","sale_address":"","contract_info":{},"colors":["#18578c","#18578c"],"type":"erc20","alternate_names":{"coingecko":"bluzelle"},"currency_id":"ethereum-ropsten:0x5732046a883704404f284ce41ffadd5b007fd668"},{"code":"BNB","name":"Binance Coin","scale":18,"is_supported":false,"contract_address":"0xb8c77482e45f1f44de1745f52c74426c631bdd52","sale_address":"","contract_info":{},"colors":["#f3ba2f","#f3ba2f"],"type":"erc20","currency_id":"ethereum-ropsten:0xb8c77482e45f1f44de1745f52c74426c631bdd52"},{"code":"BNT","name":"Bancor","scale":18,"is_supported":true,"contract_address":"0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C","sale_address":"","contract_info":{},"colors":["#42d4fc","#42d4fc"],"type":"erc20","alternate_names":{"coingecko":"bancor"},"currency_id":"ethereum-ropsten:0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"},{"code":"BRD","name":"BRD Token","scale":18,"is_supported":true,"contract_address":"0x558ec3152e2eb2174905cd19aea4e34a23de9ad6","sale_address":"","contract_info":{},"colors":["#ff5193","#f9a43a"],"type":"erc20","currency_id":"ethereum-ropsten:0x558ec3152e2eb2174905cd19aea4e34a23de9ad6"},{"code":"BTM","name":"Bytom","scale":8,"is_supported":true,"contract_address":"0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750","sale_address":"","contract_info":{},"colors":["#b99948","#b99948"],"type":"erc20","currency_id":"ethereum-ropsten:0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"},{"code":"CFI","name":"Cofound.it","scale":18,"is_supported":false,"contract_address":"0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e","sale_address":"","contract_info":{},"colors":["#0099e5","#0099e5"],"type":"erc20","currency_id":"ethereum-ropsten:0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e"},{"code":"CMT","name":"CyberMiles","scale":18,"is_supported":false,"contract_address":"0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F","sale_address":"","contract_info":{},"colors":["#c1a05c","#c1a05c"],"type":"erc20","alternate_names":{"coingecko":"cybermiles"},"currency_id":"ethereum-ropsten:0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F"},{"code":"CND","name":"Cindicator","scale":18,"is_supported":true,"contract_address":"0xd4c435f5b09f855c3317c8524cb1f586e42795fa","sale_address":"","contract_info":{},"colors":["#304975","#304975"],"type":"erc20","alternate_names":{"coingecko":"cindicator"},"currency_id":"ethereum-ropsten:0xd4c435f5b09f855c3317c8524cb1f586e42795fa"},{"code":"CNN","name":"CNN Token","scale":18,"is_supported":false,"contract_address":"0x8713d26637cf49e1b6b4a7ce57106aabc9325343","sale_address":"","contract_info":{},"colors":["#6fa7f6","#6fa7f6"],"type":"erc20","currency_id":"ethereum-ropsten:0x8713d26637cf49e1b6b4a7ce57106aabc9325343"},{"code":"CRPT","name":"Crypterium","scale":18,"is_supported":true,"contract_address":"0x08389495d7456e1951ddf7c3a1314a4bfb646d8b","sale_address":"","contract_info":{},"colors":["#01bdcd","#01bdcd"],"type":"erc20","currency_id":"ethereum-ropsten:0x08389495d7456e1951ddf7c3a1314a4bfb646d8b"},{"code":"CS","name":"Credits","scale":6,"is_supported":false,"contract_address":"0x46b9ad944d1059450da1163511069c718f699d31","sale_address":"","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#0fa3d5","#0fa3d5"],"type":"erc20","alternate_names":{"cryptocompare":"crdts"},"currency_id":"ethereum-ropsten:0x46b9ad944d1059450da1163511069c718f699d31"},{"code":"CVC","name":"Civic","scale":8,"is_supported":true,"contract_address":"0x41e5560054824ea6b0732e656e3ad64e20e94e45","sale_address":"","contract_info":{},"colors":["#3ab03e","#3ab03e"],"type":"erc20","alternate_names":{"coingecko":"civic"},"currency_id":"ethereum-ropsten:0x41e5560054824ea6b0732e656e3ad64e20e94e45"},{"code":"DENT","name":"DENT","scale":8,"is_supported":true,"contract_address":"0x3597bfd533a99c9aa083587b074434e61eb0a258","sale_address":"","contract_info":{},"colors":["#666666","#666666"],"type":"erc20","currency_id":"ethereum-ropsten:0x3597bfd533a99c9aa083587b074434e61eb0a258"},{"code":"DGD","name":"DigixDAO","scale":9,"is_supported":false,"contract_address":"0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A","sale_address":"","contract_info":{},"colors":["#c2a059","#c2a059"],"type":"erc20","currency_id":"ethereum-ropsten:0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A"},{"code":"DNT","name":"district0x","scale":18,"is_supported":true,"contract_address":"0x0abdace70d3790235af448c88547603b945604ea","sale_address":"","contract_info":{},"colors":["#2c398f","#2c398f"],"type":"erc20","currency_id":"ethereum-ropsten:0x0abdace70d3790235af448c88547603b945604ea"},{"code":"DRGN","name":"Dragon","scale":18,"is_supported":true,"contract_address":"0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e","sale_address":"","contract_info":{},"colors":["#c91111","#c91111"],"type":"erc20","currency_id":"ethereum-ropsten:0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e"},{"code":"EDG","name":"Edgeless","scale":0,"is_supported":false,"contract_address":"0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c","sale_address":"","contract_info":{},"colors":["#3ecf8e","#3ecf8e"],"type":"erc20","alternate_names":{"coingecko":"edgeless"},"currency_id":"ethereum-ropsten:0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c"},{"code":"EDO","name":"Eidoo","scale":18,"is_supported":false,"contract_address":"0xced4e93198734ddaff8492d525bd258d49eb388e","sale_address":"","contract_info":{},"colors":["#139fe6","#139fe6"],"type":"erc20","currency_id":"ethereum-ropsten:0xced4e93198734ddaff8492d525bd258d49eb388e"},{"code":"ELF","name":"Aelf","scale":18,"is_supported":true,"contract_address":"0xbf2179859fc6d5bee9bf9158632dc51678a4100e","sale_address":"","contract_info":{},"colors":["#2b5ebb","#2b5ebb"],"type":"erc20","currency_id":"ethereum-ropsten:0xbf2179859fc6d5bee9bf9158632dc51678a4100e"},{"code":"ENG","name":"Enigma","scale":8,"is_supported":true,"contract_address":"0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4","sale_address":"","contract_info":{},"colors":["#2553cd","#2553cd"],"type":"erc20","currency_id":"ethereum-ropsten:0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"},{"code":"ENJ","name":"EnjinCoin","scale":18,"is_supported":true,"contract_address":"0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c","sale_address":"","contract_info":{},"colors":["#624dbf","#624dbf"],"type":"erc20","currency_id":"ethereum-ropsten:0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c"},{"code":"VGX","name":"Voyager","scale":8,"is_supported":false,"contract_address":"0x5af2be193a6abca9c8817001f45744777db30756","sale_address":"","contract_info":{},"colors":["#00cfab","#00cfab"],"type":"erc20","currency_id":"ethereum-ropsten:0x5af2be193a6abca9c8817001f45744777db30756"},{"code":"FSN","name":"Fusion","scale":18,"is_supported":false,"contract_address":"0xd0352a019e9ab9d757776f532377aaebd36fd541","sale_address":"","contract_info":{},"colors":["#1d9ad7","#1d9ad7"],"type":"erc20","currency_id":"ethereum-ropsten:0xd0352a019e9ab9d757776f532377aaebd36fd541"},{"code":"FUN","name":"FunFair","scale":8,"is_supported":true,"contract_address":"0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b","sale_address":"","contract_info":{},"colors":["#ed1968","#ed1968"],"type":"erc20","alternate_names":{"coingecko":"funfair"},"currency_id":"ethereum-ropsten:0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b"},{"code":"GD","name":"Zilla GD","scale":0,"is_supported":false,"contract_address":"0xb4cebdb66b3a5183fd4764a25cad1fc109535016","sale_address":"","contract_info":{},"colors":["#4776e6","#4776e6"],"type":"erc20","currency_id":"ethereum-ropsten:0xb4cebdb66b3a5183fd4764a25cad1fc109535016"},{"code":"GNO","name":"Gnosis","scale":18,"is_supported":true,"contract_address":"0x6810e776880C02933D47DB1b9fc05908e5386b96","sale_address":"","contract_info":{},"colors":["#00a6c4","#00a6c4"],"type":"erc20","currency_id":"ethereum-ropsten:0x6810e776880C02933D47DB1b9fc05908e5386b96"},{"code":"GNT","name":"Golem (legacy)","scale":18,"is_supported":false,"contract_address":"0xa74476443119A942dE498590Fe1f2454d7D4aC0d","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","currency_id":"ethereum-ropsten:0xa74476443119A942dE498590Fe1f2454d7D4aC0d"},{"code":"GNX","name":"Genaro Network","scale":9,"is_supported":false,"contract_address":"0x6ec8a24cabdc339a06a172f8223ea557055adaa5","sale_address":"","contract_info":{},"colors":["#7ba5de","#7ba5de"],"type":"erc20","currency_id":"ethereum-ropsten:0x6ec8a24cabdc339a06a172f8223ea557055adaa5"},{"code":"GTO","name":"Gifto","scale":5,"is_supported":true,"contract_address":"0xc5bbae50781be1669306b9e001eff57a2957b09d","sale_address":"","contract_info":{},"colors":["#7f27ff","#7f27ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xc5bbae50781be1669306b9e001eff57a2957b09d"},{"code":"GUP","name":"Matchpool","scale":3,"is_supported":false,"contract_address":"0xf7B098298f7C69Fc14610bf71d5e02c60792894C","sale_address":"","contract_info":{},"colors":["#2FBEBA","#2FBEBA"],"type":"erc20","currency_id":"ethereum-ropsten:0xf7B098298f7C69Fc14610bf71d5e02c60792894C"},{"code":"GVT","name":"Genesis Vision","scale":18,"is_supported":true,"contract_address":"0x103c3A209da59d3E7C4A89307e66521e081CFDF0","sale_address":"","contract_info":{},"colors":["#16b9ad","#16b9ad"],"type":"erc20","currency_id":"ethereum-ropsten:0x103c3A209da59d3E7C4A89307e66521e081CFDF0"},{"code":"HPB","name":"HPBCoin","scale":18,"is_supported":false,"contract_address":"0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2","sale_address":"","contract_info":{},"colors":["#1591ca","#1591ca"],"type":"erc20","currency_id":"ethereum-ropsten:0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2"},{"code":"HYDRO","name":"Hydro","scale":18,"is_supported":false,"contract_address":"0xebbdf302c940c6bfd49c6b165f457fdb324649bc","sale_address":"","contract_info":{},"colors":["#2e72ed","#2e72ed"],"type":"erc20","currency_id":"ethereum-ropsten:0xebbdf302c940c6bfd49c6b165f457fdb324649bc"},{"code":"ICN","name":"ICONOMI","scale":18,"is_supported":false,"contract_address":"0x888666CA69E0f178DED6D75b5726Cee99A87D698","sale_address":"","contract_info":{},"colors":["#4c6f8c","#4c6f8c"],"type":"erc20","currency_id":"ethereum-ropsten:0x888666CA69E0f178DED6D75b5726Cee99A87D698"},{"code":"ICX","name":"ICON","scale":18,"is_supported":false,"contract_address":"0xb5a5f22694352c15b00323844ad545abb2b11028","sale_address":"","contract_info":{},"colors":["#1fc5c9","#1fc5c9"],"type":"erc20","currency_id":"ethereum-ropsten:0xb5a5f22694352c15b00323844ad545abb2b11028"},{"code":"IOST","name":"IOStoken","scale":18,"is_supported":false,"contract_address":"0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab","sale_address":"","contract_info":{},"colors":["#0f91ca","#0f91ca"],"type":"erc20","currency_id":"ethereum-ropsten:0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab"},{"code":"ITC","name":"IOT Chain","scale":18,"is_supported":false,"contract_address":"0x5e6b6d9abad9093fdc861ea1600eba1b355cd940","sale_address":"","contract_info":{},"colors":["#1b67b0","#1b67b0"],"type":"erc20","currency_id":"ethereum-ropsten:0x5e6b6d9abad9093fdc861ea1600eba1b355cd940"},{"code":"KIN","name":"Kin","scale":18,"is_supported":false,"contract_address":"0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5","sale_address":"","contract_info":{},"colors":["#2359cf","#2359cf"],"type":"erc20","currency_id":"ethereum-ropsten:0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5"},{"code":"KNC","name":"Kyber Network","scale":18,"is_supported":true,"contract_address":"0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-ropsten:0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202"},{"code":"LEND","name":"Aave (OLD)","scale":18,"is_supported":false,"contract_address":"0x80fB784B7eD66730e8b1DBd9820aFD29931aab03","sale_address":"","contract_info":{},"colors":["#0fa9c9","#0fa9c9"],"type":"erc20","currency_id":"ethereum-ropsten:0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"},{"code":"LINK","name":"ChainLink","scale":18,"is_supported":true,"contract_address":"0x514910771af9ca656af840dff83e8264ecf986ca","sale_address":"","contract_info":{},"colors":["#2a5ada","#2a5ada"],"type":"erc20","currency_id":"ethereum-ropsten:0x514910771af9ca656af840dff83e8264ecf986ca"},{"code":"LOOM","name":"Loom","scale":18,"is_supported":true,"contract_address":"0x42476F744292107e34519F9c357927074Ea3F75D","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-ropsten:0x42476F744292107e34519F9c357927074Ea3F75D"},{"code":"LRC","name":"Loopring","scale":18,"is_supported":true,"contract_address":"0xbbbbca6a901c926f240b89eacb641d8aec7aeafd","sale_address":"","contract_info":{},"colors":["#2ab6f6","#2ab6f6"],"type":"erc20","currency_id":"ethereum-ropsten:0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"},{"code":"LUN","name":"Lunyr","scale":18,"is_supported":false,"contract_address":"0xfa05A73FfE78ef8f1a739473e462c54bae6567D9","sale_address":"","contract_info":{},"colors":["#f55749","#f55749"],"type":"erc20","currency_id":"ethereum-ropsten:0xfa05A73FfE78ef8f1a739473e462c54bae6567D9"},{"code":"MAN","name":"MATRIX AI Network","scale":18,"is_supported":false,"contract_address":"0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d","sale_address":"","contract_info":{},"colors":["#019399","#019399"],"type":"erc20","currency_id":"ethereum-ropsten:0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d"},{"code":"MANA","name":"Decentraland","scale":18,"is_supported":true,"contract_address":"0x0F5D2fB29fb7d3CFeE444a200298f468908cC942","sale_address":"","contract_info":{},"colors":["#bfb5af","#bfb5af"],"type":"erc20","currency_id":"ethereum-ropsten:0x0F5D2fB29fb7d3CFeE444a200298f468908cC942"},{"code":"MCO","name":"Monaco","scale":8,"is_supported":false,"contract_address":"0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d","sale_address":"","contract_info":{},"colors":["#0d9aff","#0d9aff"],"type":"erc20","currency_id":"ethereum-ropsten:0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d"},{"code":"MTL","name":"Metal","scale":8,"is_supported":true,"contract_address":"0xF433089366899D83a9f26A773D59ec7eCF30355e","sale_address":"","contract_info":{},"colors":["#007aff","#007aff"],"type":"erc20","currency_id":"ethereum-ropsten:0xF433089366899D83a9f26A773D59ec7eCF30355e"},{"code":"NAS","name":"Nebulas","scale":18,"is_supported":false,"contract_address":"0x5d65D971895Edc438f465c17DB6992698a52318D","sale_address":"","contract_info":{},"colors":["#0029ff","#0029ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x5d65D971895Edc438f465c17DB6992698a52318D"},{"code":"NEXO","name":"Nexo","scale":18,"is_supported":true,"contract_address":"0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206","sale_address":"","contract_info":{},"colors":["#4aa2ea","#4aa2ea"],"type":"erc20","currency_id":"ethereum-ropsten:0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206"},{"code":"NMR","name":"Numeraire","scale":18,"is_supported":true,"contract_address":"0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671","sale_address":"","contract_info":{},"colors":["#25b1cd","#25b1cd"],"type":"erc20","currency_id":"ethereum-ropsten:0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"},{"code":"NPXS","name":"Pundi X Token","scale":18,"is_supported":false,"contract_address":"0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3","sale_address":"","contract_info":{},"colors":["#DBBF4B","#DBBF4B"],"type":"erc20","currency_id":"ethereum-ropsten:0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3"},{"code":"NULS","name":"Nuls","scale":18,"is_supported":false,"contract_address":"0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c","sale_address":"","contract_info":{},"colors":["#82bd39","#82bd39"],"type":"erc20","currency_id":"ethereum-ropsten:0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c"},{"code":"OMG","name":"OmiseGO","scale":18,"is_supported":true,"contract_address":"0xd26114cd6EE289AccF82350c8d8487fedB8A0C07","sale_address":"","contract_info":{},"colors":["#1a53f0","#1a53f0"],"type":"erc20","currency_id":"ethereum-ropsten:0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"},{"code":"OST","name":"OST","scale":18,"is_supported":false,"contract_address":"0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA","sale_address":"","contract_info":{},"colors":["#e4b030","#e4b030"],"type":"erc20","currency_id":"ethereum-ropsten:0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA"},{"code":"PAL","name":"PolicyPal Network","scale":18,"is_supported":false,"contract_address":"0xfeDAE5642668f8636A11987Ff386bfd215F942EE","sale_address":"","contract_info":{},"colors":["#54b9a1","#54b9a1"],"type":"erc20","alternate_names":{"coingecko":"policypal"},"currency_id":"ethereum-ropsten:0xfeDAE5642668f8636A11987Ff386bfd215F942EE"},{"code":"PAY","name":"TenX","scale":18,"is_supported":true,"contract_address":"0xB97048628DB6B661D4C2aA833e95Dbe1A905B280","sale_address":"","contract_info":{},"colors":["#1780af","#1780af"],"type":"erc20","alternate_names":{"coingecko":"tenx"},"currency_id":"ethereum-ropsten:0xB97048628DB6B661D4C2aA833e95Dbe1A905B280"},{"code":"POE","name":"Po.et","scale":8,"is_supported":false,"contract_address":"0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195","sale_address":"","contract_info":{},"colors":["#b6a573","#b6a573"],"type":"erc20","currency_id":"ethereum-ropsten:0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195"},{"code":"POLY","name":"Polymath","scale":18,"is_supported":true,"contract_address":"0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC","sale_address":"","contract_info":{},"colors":["#4c5a95","#4c5a95"],"type":"erc20","currency_id":"ethereum-ropsten:0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"},{"code":"POWR","name":"Power Ledger","scale":6,"is_supported":true,"contract_address":"0x595832f8fc6bf59c85c527fec3740a1b7a361269","sale_address":"","contract_info":{},"colors":["#05bca9","#05bca9"],"type":"erc20","currency_id":"ethereum-ropsten:0x595832f8fc6bf59c85c527fec3740a1b7a361269"},{"code":"PPT","name":"Populous","scale":8,"is_supported":true,"contract_address":"0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a","sale_address":"","contract_info":{},"colors":["#5ca0f6","#5ca0f6"],"type":"erc20","currency_id":"ethereum-ropsten:0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a"},{"code":"PRL","name":"Oyster Pearl","scale":18,"is_supported":false,"contract_address":"0x1844b21593262668b7248d0f57a220caaba46ab9","sale_address":"","contract_info":{},"colors":["#0984fb","#0984fb"],"type":"erc20","currency_id":"ethereum-ropsten:0x1844b21593262668b7248d0f57a220caaba46ab9"},{"code":"PTOY","name":"Patientory","scale":8,"is_supported":false,"contract_address":"0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06","sale_address":"","contract_info":{},"colors":["#42b34e","#42b34e"],"type":"erc20","currency_id":"ethereum-ropsten:0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06"},{"code":"QASH","name":"QASH","scale":6,"is_supported":false,"contract_address":"0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6","sale_address":"","contract_info":{},"colors":["#1347e8","#1347e8"],"type":"erc20","currency_id":"ethereum-ropsten:0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6"},{"code":"QRL","name":"QRL","scale":8,"is_supported":false,"contract_address":"0x697beac28B09E122C4332D163985e8a73121b97F","sale_address":"","contract_info":{},"colors":["#c71e53","#c71e53"],"type":"erc20","currency_id":"ethereum-ropsten:0x697beac28B09E122C4332D163985e8a73121b97F"},{"code":"QSP","name":"Quantstamp","scale":18,"is_supported":true,"contract_address":"0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d","sale_address":"","contract_info":{},"colors":["#4e79ff","#4e79ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"},{"code":"REV","name":"Revain","scale":0,"is_supported":false,"contract_address":"0x48f775efbe4f5ece6e0df2f7b5932df56823b990","sale_address":"","contract_info":{},"colors":["#bd2df5","#bd2df5"],"type":"erc20","alternate_names":{"coingecko":"revain"},"currency_id":"ethereum-ropsten:0x48f775efbe4f5ece6e0df2f7b5932df56823b990"},{"code":"RCN","name":"Ripio Credit","scale":18,"is_supported":true,"contract_address":"0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6","sale_address":"","contract_info":{},"colors":["#3555f9","#3555f9"],"type":"erc20","currency_id":"ethereum-ropsten:0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"},{"code":"RDN","name":"Raiden Network","scale":18,"is_supported":true,"contract_address":"0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6","sale_address":"","contract_info":{},"colors":["#586c77","#586c77"],"type":"erc20","currency_id":"ethereum-ropsten:0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"},{"code":"REP","name":"Augur","scale":18,"is_supported":false,"contract_address":"0x1985365e9f78359a9B6AD760e32412f4a445E862","sale_address":"","contract_info":{},"colors":["#736e89","#736e89"],"type":"erc20","currency_id":"ethereum-ropsten:0x1985365e9f78359a9B6AD760e32412f4a445E862"},{"code":"REQ","name":"Request","scale":18,"is_supported":true,"contract_address":"0x8f8221aFbB33998d8584A2B05749bA73c37a938a","sale_address":"","contract_info":{},"colors":["#5a89f9","#5a89f9"],"type":"erc20","currency_id":"ethereum-ropsten:0x8f8221aFbB33998d8584A2B05749bA73c37a938a"},{"code":"RLC","name":"iExec RLC","scale":9,"is_supported":true,"contract_address":"0x607F4C5BB672230e8672085532f7e901544a7375","sale_address":"","contract_info":{},"colors":["#637799","#637799"],"type":"erc20","currency_id":"ethereum-ropsten:0x607F4C5BB672230e8672085532f7e901544a7375"},{"code":"RUFF","name":"RUFF","scale":18,"is_supported":false,"contract_address":"0xf278c1ca969095ffddded020290cf8b5c424ace2","sale_address":"","contract_info":{},"colors":["#01c8ca","#01c8ca"],"type":"erc20","currency_id":"ethereum-ropsten:0xf278c1ca969095ffddded020290cf8b5c424ace2"},{"code":"SALT","name":"SALT","scale":8,"is_supported":false,"contract_address":"0x4156D3342D5c385a87D264F90653733592000581","sale_address":"","contract_info":{},"colors":["#40b2b5","#40b2b5"],"type":"erc20","currency_id":"ethereum-ropsten:0x4156D3342D5c385a87D264F90653733592000581"},{"code":"SAN","name":"SAN","scale":18,"is_supported":false,"contract_address":"0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098","sale_address":"","contract_info":{},"colors":["#2b77b3","#2b77b3"],"type":"erc20","currency_id":"ethereum-ropsten:0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098"},{"code":"SENT","name":"SENTinel","scale":8,"is_supported":false,"contract_address":"0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037","sale_address":"","contract_info":{},"colors":["#3666aa","#3666aa"],"type":"erc20","currency_id":"ethereum-ropsten:0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037"},{"code":"SNC","name":"SunContract","scale":18,"is_supported":false,"contract_address":"0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404","sale_address":"","contract_info":{},"colors":["#1096d4","#1096d4"],"type":"erc20","currency_id":"ethereum-ropsten:0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404"},{"code":"SNGLS","name":"Singular DTV","scale":0,"is_supported":false,"contract_address":"0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009","sale_address":"","contract_info":{},"colors":["#b30d23","#b30d23"],"type":"erc20","currency_id":"ethereum-ropsten:0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009"},{"code":"SNM","name":"SONM","scale":18,"is_supported":false,"contract_address":"0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63","sale_address":"","contract_info":{},"colors":["#8e16fd","#8e16fd"],"type":"erc20","currency_id":"ethereum-ropsten:0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63"},{"code":"SNT","name":"Status","scale":18,"is_supported":true,"contract_address":"0x744d70FDBE2Ba4CF95131626614a1763DF805B9E","sale_address":"","contract_info":{},"colors":["#5b6dee","#5b6dee"],"type":"erc20","currency_id":"ethereum-ropsten:0x744d70FDBE2Ba4CF95131626614a1763DF805B9E"},{"code":"SRN","name":"SIRIN","scale":18,"is_supported":false,"contract_address":"0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25","sale_address":"","contract_info":{},"colors":["#37b7a5","#37b7a5"],"type":"erc20","currency_id":"ethereum-ropsten:0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25"},{"code":"STORJ","name":"Storj","scale":8,"is_supported":true,"contract_address":"0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC","sale_address":"","contract_info":{},"colors":["#2683ff","#2683ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC"},{"code":"STORM","name":"Storm","scale":18,"is_supported":false,"contract_address":"0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-ropsten:0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"},{"code":"STQ","name":"Storiqa","scale":18,"is_supported":false,"contract_address":"0x5c3a228510d246b78a3765c20221cbf3082b44a4","sale_address":"","contract_info":{},"colors":["#58b4f1","#58b4f1"],"type":"erc20","currency_id":"ethereum-ropsten:0x5c3a228510d246b78a3765c20221cbf3082b44a4"},{"code":"STX","name":"Stox","scale":18,"is_supported":false,"contract_address":"0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45","sale_address":"","contract_info":{},"colors":["#7022eb","#7022eb"],"type":"erc20","alternate_names":{"coingecko":"stox"},"currency_id":"ethereum-ropsten:0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45"},{"code":"SUB","name":"Substratum","scale":18,"is_supported":false,"contract_address":"0x8D75959f1E61EC2571aa72798237101F084DE63a","sale_address":"","contract_info":{},"colors":["#e53431","#e53431"],"type":"erc20","currency_id":"ethereum-ropsten:0x8D75959f1E61EC2571aa72798237101F084DE63a"},{"code":"THETA","name":"Theta Token","scale":18,"is_supported":false,"contract_address":"0x3883f5e181fccaf8410fa61e12b59bad963fb645","sale_address":"","contract_info":{},"colors":["#2ab8e6","#2ab8e6"],"type":"erc20","currency_id":"ethereum-ropsten:0x3883f5e181fccaf8410fa61e12b59bad963fb645"},{"code":"TIME","name":"Chronobank","scale":8,"is_supported":false,"contract_address":"0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53","sale_address":"","contract_info":{},"colors":["#5db3ed","#5db3ed"],"type":"erc20","currency_id":"ethereum-ropsten:0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53"},{"code":"UCASH","name":"UCASH","scale":8,"is_supported":false,"contract_address":"0x92e52a1a235d9a103d970901066ce910aacefd37","sale_address":"","contract_info":{},"colors":["#c59a47","#c59a47"],"type":"erc20","currency_id":"ethereum-ropsten:0x92e52a1a235d9a103d970901066ce910aacefd37"},{"code":"VEE","name":"BLOCKv","scale":18,"is_supported":false,"contract_address":"0x340d2bde5eb28c1eed91b2f790723e3b160613b7","sale_address":"","contract_info":{},"colors":["#6a7d7f","#6a7d7f"],"type":"erc20","currency_id":"ethereum-ropsten:0x340d2bde5eb28c1eed91b2f790723e3b160613b7"},{"code":"VIB","name":"Viberate","scale":18,"is_supported":false,"contract_address":"0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724","sale_address":"","contract_info":{},"colors":["#ff1f43","#ff1f43"],"type":"erc20","currency_id":"ethereum-ropsten:0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724"},{"code":"WAX","name":"WAX","scale":8,"is_supported":false,"contract_address":"0x39Bb259F66E1C59d5ABEF88375979b4D20D98022","sale_address":"","contract_info":{},"colors":["#f89022","#f89022"],"type":"erc20","currency_id":"ethereum-ropsten:0x39Bb259F66E1C59d5ABEF88375979b4D20D98022"},{"code":"WINGS","name":"Wings","scale":18,"is_supported":false,"contract_address":"0x667088b212ce3d06a1b553a7221E1fD19000d9aF","sale_address":"","contract_info":{},"colors":["#0dc9f7","#0dc9f7"],"type":"erc20","currency_id":"ethereum-ropsten:0x667088b212ce3d06a1b553a7221E1fD19000d9aF"},{"code":"WPR","name":"WePower","scale":18,"is_supported":false,"contract_address":"0x4CF488387F035FF08c371515562CBa712f9015d4","sale_address":"","contract_info":{},"colors":["#dbcc49","#dbcc49"],"type":"erc20","currency_id":"ethereum-ropsten:0x4CF488387F035FF08c371515562CBa712f9015d4"},{"code":"WRC","name":"Worldcore","scale":6,"is_supported":false,"contract_address":"0x72adadb447784dd7ab1f472467750fc485e4cb2d","sale_address":"","contract_info":{},"colors":["#27bcba","#27bcba"],"type":"erc20","currency_id":"ethereum-ropsten:0x72adadb447784dd7ab1f472467750fc485e4cb2d"},{"code":"WTC","name":"Waltonchain","scale":18,"is_supported":false,"contract_address":"0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74","sale_address":"","contract_info":{},"colors":["#8200ff","#8200ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"},{"code":"XJP","name":"Digital JPY","scale":0,"is_supported":false,"contract_address":"0x39689fE671C01fcE173395f6BC45D4C332026666","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-ropsten:0x39689fE671C01fcE173395f6BC45D4C332026666"},{"code":"ZIL","name":"Zilliqa","scale":12,"is_supported":false,"contract_address":"0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27","sale_address":"","contract_info":{},"colors":["#49c1bf","#49c1bf"],"type":"erc20","currency_id":"ethereum-ropsten:0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27"},{"code":"ZLA","name":"Zilla","scale":18,"is_supported":false,"contract_address":"0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16","sale_address":"","contract_info":{},"colors":["#5e6ab2","#5e6ab2"],"type":"erc20","currency_id":"ethereum-ropsten:0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16"},{"code":"ZRX","name":"0x","scale":18,"is_supported":true,"contract_address":"0xE41d2489571d322189246DaFA5ebDe1F4699F498","sale_address":"","contract_info":{},"colors":["#9c82f5","#9c82f5"],"type":"erc20","currency_id":"ethereum-ropsten:0xE41d2489571d322189246DaFA5ebDe1F4699F498"},{"code":"TEL","name":"Telcoin","scale":2,"is_supported":true,"contract_address":"0x467bccd9d29f223bce8043b84e8c8b282827790f","sale_address":"","contract_info":{},"colors":["#59C6FA","#59C6FA"],"type":"erc20","currency_id":"ethereum-ropsten:0x467bccd9d29f223bce8043b84e8c8b282827790f"},{"code":"CCC","name":"Container Crypto Coin","scale":18,"is_supported":false,"contract_address":"0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d","sale_address":"0x8cee633c5c4caae99f466a14171a53bc2ea2d291","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#95C121","#95C121"],"type":"erc20","currency_id":"ethereum-ropsten:0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d"},{"code":"EOS","name":"EOS","scale":18,"is_supported":false,"contract_address":"0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0","sale_address":"","contract_info":{},"colors":["#7f91a7","#7f91a7"],"type":"erc20","currency_id":"ethereum-ropsten:0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"},{"code":"TRX","name":"TRON","scale":6,"is_supported":false,"contract_address":"0xf230b790e05390fc8295f4d3f60332c93bed42e2","sale_address":"","contract_info":{},"colors":["#ba2323","#ba2323"],"type":"erc20","currency_id":"ethereum-ropsten:0xf230b790e05390fc8295f4d3f60332c93bed42e2"},{"code":"AMLT","name":"AMLT by Coinfirm","scale":18,"is_supported":false,"contract_address":"0xca0e7269600d353f70b14ad118a49575455c0f2f","sale_address":"","contract_info":{},"colors":["#035AD8","#035AD8"],"type":"erc20","currency_id":"ethereum-ropsten:0xca0e7269600d353f70b14ad118a49575455c0f2f"},{"code":"APPC","name":"AppCoins","scale":18,"is_supported":false,"contract_address":"0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db","sale_address":"","contract_info":{},"colors":["#1F7AB9","#3196A8"],"type":"erc20","currency_id":"ethereum-ropsten:0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db"},{"code":"ATMI","name":"Atonomi","scale":18,"is_supported":false,"contract_address":"0x97aeb5066e1a590e868b511457beb6fe99d329f5","sale_address":"","contract_info":{},"colors":["#2B9FDA","#2B9FDA"],"type":"erc20","currency_id":"ethereum-ropsten:0x97aeb5066e1a590e868b511457beb6fe99d329f5"},{"code":"STU","name":"bitJob","scale":18,"is_supported":false,"contract_address":"0x0371a82e4a9d0a4312f3ee2ac9c6958512891372","sale_address":"","contract_info":{},"colors":["#0E235B","#0E235B"],"type":"erc20","currency_id":"ethereum-ropsten:0x0371a82e4a9d0a4312f3ee2ac9c6958512891372"},{"code":"CAS","name":"Cashaa","scale":18,"is_supported":false,"contract_address":"0xe8780b48bdb05f928697a5e8155f672ed91462f7","sale_address":"","contract_info":{},"colors":["#15398C","#15398C"],"type":"erc20","currency_id":"ethereum-ropsten:0xe8780b48bdb05f928697a5e8155f672ed91462f7"},{"code":"DOV","name":"Dovu","scale":18,"is_supported":false,"contract_address":"0xac3211a5025414af2866ff09c23fc18bc97e79b1","sale_address":"","contract_info":{},"colors":["#033686","#033686"],"type":"erc20","currency_id":"ethereum-ropsten:0xac3211a5025414af2866ff09c23fc18bc97e79b1"},{"code":"XUC","name":"Exchange Union","scale":18,"is_supported":false,"contract_address":"0xc324a2f6b05880503444451b8b27e6f9e63287cb","sale_address":"","contract_info":{},"colors":["#2AA9E1","#2AA9E1"],"type":"erc20","currency_id":"ethereum-ropsten:0xc324a2f6b05880503444451b8b27e6f9e63287cb"},{"code":"GBX","name":"Globitex","scale":8,"is_supported":false,"contract_address":"0x12fcd6463e66974cf7bbc24ffc4d40d6be458283","sale_address":"","contract_info":{},"colors":["#005496","#005496"],"type":"erc20","alternate_names":{"coingecko":"globitex"},"currency_id":"ethereum-ropsten:0x12fcd6463e66974cf7bbc24ffc4d40d6be458283"},{"code":"IXT","name":"iXledger","scale":8,"is_supported":false,"contract_address":"0xfca47962d45adfdfd1ab2d972315db4ce7ccf094","sale_address":"","contract_info":{},"colors":["#1EB0D3","#1EB0D3"],"type":"erc20","currency_id":"ethereum-ropsten:0xfca47962d45adfdfd1ab2d972315db4ce7ccf094"},{"code":"MYST","name":"Mysterium","scale":8,"is_supported":false,"contract_address":"0xa645264C5603E96c3b0B078cdab68733794B0A71","sale_address":"","contract_info":{},"colors":["#C6205D","#322262"],"type":"erc20","currency_id":"ethereum-ropsten:0xa645264C5603E96c3b0B078cdab68733794B0A71"},{"code":"RCC","name":"Reality Clash","scale":18,"is_supported":false,"contract_address":"0x9b6443b0fb9c241a7fdac375595cea13e6b7807a","sale_address":"","contract_info":{},"colors":["#00FFFF","#00FFFF"],"type":"erc20","currency_id":"ethereum-ropsten:0x9b6443b0fb9c241a7fdac375595cea13e6b7807a"},{"code":"RVT","name":"Rivetz","scale":18,"is_supported":false,"contract_address":"0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244","sale_address":"","contract_info":{},"colors":["#F36E24","#F36E24"],"type":"erc20","currency_id":"ethereum-ropsten:0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244"},{"code":"STK","name":"STK","scale":18,"is_supported":false,"contract_address":"0xae73b38d1c9a8b274127ec30160a4927c4d71824","sale_address":"","contract_info":{},"colors":["#000000","#000000"],"type":"erc20","alternate_names":{"coingecko":"stk"},"currency_id":"ethereum-ropsten:0xae73b38d1c9a8b274127ec30160a4927c4d71824"},{"code":"PMTN","name":"Peer Mountain","scale":18,"is_supported":false,"contract_address":"0xe91df2bb9bccd18c45f01843cab88768d64f2d32","sale_address":"","contract_info":{},"colors":["#4BC4DE","#4BC4DE"],"type":"erc20","currency_id":"ethereum-ropsten:0xe91df2bb9bccd18c45f01843cab88768d64f2d32"},{"code":"TUSD","name":"TrueUSD","scale":18,"is_supported":true,"contract_address":"0x0000000000085d4780B73119b644AE5ecd22b376","sale_address":"","contract_info":{},"colors":["#67C6BB","#67C6BB"],"type":"erc20","currency_id":"ethereum-ropsten:0x0000000000085d4780B73119b644AE5ecd22b376"},{"code":"CSP","name":"Caspian","scale":18,"is_supported":false,"contract_address":"0xa6446d655a0c34bc4f05042ee88170d056cbaf45","sale_address":"","contract_info":{},"colors":["#22586F","#22586F"],"type":"erc20","currency_id":"ethereum-ropsten:0xa6446d655a0c34bc4f05042ee88170d056cbaf45"},{"code":"RC1U03","name":"RentalCoin 1.0","scale":6,"is_supported":false,"contract_address":"0x7384db1aaa06364d1e6e67f5434391d3eea2a038","sale_address":"","contract_info":{},"colors":["#18336B","#18336B"],"type":"erc20","currency_id":"ethereum-ropsten:0x7384db1aaa06364d1e6e67f5434391d3eea2a038"},{"code":"SAI","name":"Sai","scale":18,"is_supported":false,"contract_address":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359","sale_address":"","contract_info":{},"colors":["#FBBA00","#FBBA00"],"type":"erc20","alternate_names":{"coingecko":"sai","cryptocompare":"dai"},"currency_id":"ethereum-ropsten:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},{"code":"MKR","name":"Maker","scale":18,"is_supported":true,"contract_address":"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2","sale_address":"","contract_info":{},"colors":["#1ABC9C","#1ABC9C"],"type":"erc20","currency_id":"ethereum-ropsten:0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"},{"code":"BCH","name":"Bitcoin Cash","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#478559","#478559"],"type":"","currency_id":"bitcoincash-testnet:__native__"},{"code":"BTC","name":"Bitcoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#f29500","#f29500"],"type":"","currency_id":"bitcoin-testnet:__native__"},{"code":"ETH","name":"Ethereum","scale":18,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#5e6fa5","#5e6fa5"],"type":"","currency_id":"ethereum-ropsten:__native__"},{"code":"PAX","name":"Paxos Standard","scale":18,"is_supported":true,"contract_address":"0x8e870d67f660d95d5be530380d0ec0bd388289e1","sale_address":"","contract_info":{},"colors":["#20BCD4","#20BCD4"],"type":"erc20","currency_id":"ethereum-ropsten:0x8e870d67f660d95d5be530380d0ec0bd388289e1"},{"code":"ARN","name":"Aeron","scale":8,"is_supported":false,"contract_address":"0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","currency_id":"ethereum-ropsten:0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6"},{"code":"GUSD","name":"Gemini Dollar","scale":2,"is_supported":true,"contract_address":"0x056fd409e1d7a124bd7017459dfea2f387b6d5cd","sale_address":"","contract_info":{},"colors":["#68DAF5","#68DAF5"],"type":"erc20","currency_id":"ethereum-ropsten:0x056fd409e1d7a124bd7017459dfea2f387b6d5cd"},{"code":"FXC","name":"Flexacoin","scale":18,"is_supported":false,"contract_address":"0x4a57E687b9126435a9B19E4A802113e266AdeBde","sale_address":"","contract_info":{},"colors":["#cc2fff","#2815ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x4a57E687b9126435a9B19E4A802113e266AdeBde"},{"code":"USDC","name":"USD Coin","scale":6,"is_supported":true,"contract_address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","sale_address":"","contract_info":{},"colors":["#2775CA","#2775CA"],"type":"erc20","currency_id":"ethereum-ropsten:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{"code":"DAI","name":"Dai","scale":18,"is_supported":true,"contract_address":"0x6b175474e89094c44da98b954eedeac495271d0f","sale_address":"","contract_info":{},"colors":["#F4B731","#F4B731"],"type":"erc20","alternate_names":{"cryptocompare":"mcd"},"currency_id":"ethereum-ropsten:0x6b175474e89094c44da98b954eedeac495271d0f"},{"code":"XRP","name":"XRP","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#282e34","#282e34"],"type":"","alternate_names":{"payid":"xrpl-mainnet"},"currency_id":"ripple-testnet:__native__"},{"code":"OXT","name":"Orchid","scale":18,"is_supported":true,"contract_address":"0x4575f41308ec1483f3d399aa9a2826d74da13deb","sale_address":"","contract_info":{},"colors":["#5F45BA","#5F45BA"],"type":"erc20","currency_id":"ethereum-ropsten:0x4575f41308ec1483f3d399aa9a2826d74da13deb"},{"code":"HBAR","name":"Hedera","scale":9,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#8259EF","#8259EF"],"type":"","currency_id":"hedera-testnet:__native__"},{"code":"EUR.AVM","name":"EUR AVM","scale":2,"is_supported":false,"contract_address":"0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-ropsten:0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a"},{"code":"STMX","name":"StormX","scale":18,"is_supported":true,"contract_address":"0xbE9375C6a420D2eEB258962efB95551A5b722803","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-ropsten:0xbE9375C6a420D2eEB258962efB95551A5b722803"},{"code":"USDT","name":"Tether USD","scale":6,"is_supported":true,"contract_address":"0xdac17f958d2ee523a2206206994597c13d831ec7","sale_address":"","contract_info":{},"colors":["#137D61","#137D61"],"type":"erc20","alternate_names":{"coingecko":"tether","cryptocompare":"usdt"},"currency_id":"ethereum-ropsten:0xdac17f958d2ee523a2206206994597c13d831ec7"},{"code":"NCASH","name":"Nucleus Vision","scale":18,"is_supported":false,"contract_address":"0x809826cceab68c387726af962713b64cb5cb3cca","sale_address":"","contract_info":{},"colors":["#36a9cf","#36a9cf"],"type":"erc20","currency_id":"ethereum-ropsten:0x809826cceab68c387726af962713b64cb5cb3cca"},{"code":"AST","name":"Airswap","scale":4,"is_supported":true,"contract_address":"0x27054b13b1b798b345b591a4d22e6562d47ea75a","sale_address":"","contract_info":{},"colors":["#2b71ff","#2b71ff"],"type":"erc20","alternate_names":{"coingecko":"airswap"},"currency_id":"ethereum-ropsten:0x27054b13b1b798b345b591a4d22e6562d47ea75a"},{"code":"BUSD","name":"Binance USD","scale":18,"is_supported":true,"contract_address":"0x4fabb145d64652a948d72533023f6e7a623c7c53","sale_address":"","contract_info":{},"colors":["#f0b90b","#f0b90b"],"type":"erc20","alternate_names":{"coingecko":"binance-usd"},"currency_id":"ethereum-ropsten:0x4fabb145d64652a948d72533023f6e7a623c7c53"},{"code":"UNI","name":"Uniswap","scale":18,"is_supported":true,"contract_address":"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984","sale_address":"","contract_info":{},"colors":["#ff007a","#ff007a"],"type":"erc20","alternate_names":{"coingecko":"uniswap"},"currency_id":"ethereum-ropsten:0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"},{"code":"AAVE","name":"Aave","scale":18,"is_supported":true,"contract_address":"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9","sale_address":"","contract_info":{},"colors":["#b6509e","#b6509e"],"type":"erc20","alternate_names":{"coingecko":"aave"},"currency_id":"ethereum-ropsten:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{"code":"XTZ","name":"Tezos","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#2C7DF7","#2C7DF7"],"type":"","alternate_names":{"coingecko":"tezos"},"currency_id":"tezos-testnet:__native__"},{"code":"GLM","name":"Golem","scale":18,"is_supported":true,"contract_address":"0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","alternate_names":{"coingecko":"golem"},"currency_id":"ethereum-ropsten:0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"},{"code":"ZUSD","name":"Z.com USD","scale":6,"is_supported":true,"contract_address":"0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA","sale_address":"","contract_info":{},"colors":["#d62825","#d62825"],"type":"erc20","alternate_names":{"coingecko":"zusd"},"currency_id":"ethereum-ropsten:0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA"},{"code":"GYEN","name":"GMO JPY","scale":6,"is_supported":true,"contract_address":"0xC08512927D12348F6620a698105e1BAac6EcD911","sale_address":"","contract_info":{},"colors":["#005cac","#005cac"],"type":"erc20","alternate_names":{"coingecko":"gyen"},"currency_id":"ethereum-ropsten:0xC08512927D12348F6620a698105e1BAac6EcD911"},{"code":"SNX","name":"Synthetix","scale":18,"is_supported":true,"contract_address":"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f","sale_address":"","contract_info":{},"colors":["#58e0fe","#58e0fe"],"type":"erc20","alternate_names":{"coingecko":"havven"},"currency_id":"ethereum-ropsten:0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"},{"code":"GRT","name":"The Graph","scale":18,"is_supported":true,"contract_address":"0xc944E90C64B2c07662A292be6244BDf05Cda44a7","sale_address":"","contract_info":{},"colors":["#6f4cff","#6f4cff"],"type":"erc20","alternate_names":{"coingecko":"the-graph"},"currency_id":"ethereum-ropsten:0xc944E90C64B2c07662A292be6244BDf05Cda44a7"},{"code":"SUSHI","name":"Sushi","scale":18,"is_supported":true,"contract_address":"0x6b3595068778dd592e39a122f4f5a5cf09c90fe2","sale_address":"","contract_info":{},"colors":["#fa52a0","#fa52a0"],"type":"erc20","alternate_names":{"coingecko":"sushi"},"currency_id":"ethereum-ropsten:0x6b3595068778dd592e39a122f4f5a5cf09c90fe2"},{"code":"COMP","name":"Compound","scale":18,"is_supported":true,"contract_address":"0xc00e94cb662c3520282e6f5717214004a7f26888","sale_address":"","contract_info":{},"colors":["#00c48a","#00c48a"],"type":"erc20","alternate_names":{"coingecko":"compound-governance-token"},"currency_id":"ethereum-ropsten:0xc00e94cb662c3520282e6f5717214004a7f26888"},{"code":"YFI","name":"yearn.finance","scale":18,"is_supported":true,"contract_address":"0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e","sale_address":"","contract_info":{},"colors":["#006ae3","#006ae3"],"type":"erc20","alternate_names":{"coingecko":"yearn-finance"},"currency_id":"ethereum-ropsten:0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e"},{"code":"UMA","name":"UMA","scale":18,"is_supported":true,"contract_address":"0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828","sale_address":"","contract_info":{},"colors":["#ff4a4a","#ff4a4a"],"type":"erc20","alternate_names":{"coingecko":"uma"},"currency_id":"ethereum-ropsten:0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828"},{"code":"OLDLOOM","name":"Loom (Old)","scale":18,"is_supported":false,"contract_address":"0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-ropsten:0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0"},{"code":"KNCL","name":"Kyber Network (Legacy)","scale":18,"is_supported":false,"contract_address":"0xdd974d5c2e2928dea5f71b9825b8b646686bd200","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-ropsten:0xdd974d5c2e2928dea5f71b9825b8b646686bd200"},{"code":"ARNX","name":"Aeron","scale":18,"is_supported":true,"contract_address":"0x0C37Bcf456bC661C14D596683325623076D7e283","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","alternate_names":{"coingecko":"aeron"},"currency_id":"ethereum-ropsten:0x0C37Bcf456bC661C14D596683325623076D7e283"},{"code":"AGIX","name":"SingularityNET","scale":8,"is_supported":true,"contract_address":"0x5B7533812759B45C2B44C19e320ba2cD2681b542","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","alternate_names":{"coingecko":"singularitynet"},"currency_id":"ethereum-ropsten:0x5B7533812759B45C2B44C19e320ba2cD2681b542"}] \ No newline at end of file +[{"code":"1ST","name":"FirstBlood","scale":18,"is_supported":false,"contract_address":"0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-ropsten:0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7"},{"code":"ABT","name":"ArcBlock","scale":18,"is_supported":false,"contract_address":"0xb98d4c97425d9908e66e53a6fdf673acca0be986","sale_address":"","contract_info":{},"colors":["#1aaad0","#1aaad0"],"type":"erc20","currency_id":"ethereum-ropsten:0xb98d4c97425d9908e66e53a6fdf673acca0be986"},{"code":"ADT","name":"adToken","scale":9,"is_supported":false,"contract_address":"0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD","sale_address":"","contract_info":{},"colors":["#0071bc","#0071bc"],"type":"erc20","currency_id":"ethereum-ropsten:0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD"},{"code":"ADX","name":"AdEx","scale":18,"is_supported":true,"contract_address":"0xADE00C28244d5CE17D72E40330B1c318cD12B7c3","sale_address":"","contract_info":{},"colors":["#1b75bc","#1b75bc"],"type":"erc20","currency_id":"ethereum-ropsten:0xADE00C28244d5CE17D72E40330B1c318cD12B7c3"},{"code":"AE","name":"Aeternity","scale":18,"is_supported":false,"contract_address":"0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d","sale_address":"","contract_info":{},"colors":["#de3f6b","#de3f6b"],"type":"erc20","currency_id":"ethereum-ropsten:0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"},{"code":"AGI","name":"SingularityNET","scale":8,"is_supported":false,"contract_address":"0x8eB24319393716668D768dCEC29356ae9CfFe285","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","currency_id":"ethereum-ropsten:0x8eB24319393716668D768dCEC29356ae9CfFe285"},{"code":"AION","name":"Aion","scale":8,"is_supported":false,"contract_address":"0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466","sale_address":"","contract_info":{},"colors":["#00bfec","#00bfec"],"type":"erc20","currency_id":"ethereum-ropsten:0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466"},{"code":"AMB","name":"Amber","scale":18,"is_supported":false,"contract_address":"0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce","sale_address":"","contract_info":{},"colors":["#5ca7bc","#5ca7bc"],"type":"erc20","currency_id":"ethereum-ropsten:0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"},{"code":"ANT","name":"Aragon","scale":18,"is_supported":true,"contract_address":"0xa117000000f279d81a1d3cc75430faa017fa5a2e","sale_address":"","contract_info":{},"colors":["#2cd3e1","#2cd3e1"],"type":"erc20","currency_id":"ethereum-ropsten:0xa117000000f279d81a1d3cc75430faa017fa5a2e"},{"code":"AUTO","name":"CUBE","scale":18,"is_supported":false,"contract_address":"0x622dFfCc4e83C64ba959530A5a5580687a57581b","sale_address":"","contract_info":{},"colors":["#fab431","#fab431"],"type":"erc20","currency_id":"ethereum-ropsten:0x622dFfCc4e83C64ba959530A5a5580687a57581b"},{"code":"AVM","name":"AVM Ecosystem","scale":18,"is_supported":true,"contract_address":"0x74004a7227615fb52b82d17ffabfa376907d8a4d","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-ropsten:0x74004a7227615fb52b82d17ffabfa376907d8a4d"},{"code":"BAT","name":"Basic Attention","scale":18,"is_supported":true,"contract_address":"0x0D8775F648430679A709E98d2b0Cb6250d2887EF","sale_address":"","contract_info":{},"colors":["#ff5000","#ff5000"],"type":"erc20","alternate_names":{"coingecko":"basic-attention-token"},"currency_id":"ethereum-ropsten:0x0D8775F648430679A709E98d2b0Cb6250d2887EF"},{"code":"BIX","name":"BIX Token","scale":18,"is_supported":false,"contract_address":"0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069","sale_address":"","contract_info":{},"colors":["#6499ea","#6499ea"],"type":"erc20","currency_id":"ethereum-ropsten:0xb3104b4b9da82025e8b9f8fb28b3553ce2f67069"},{"code":"BLZ","name":"Bluzelle","scale":18,"is_supported":true,"contract_address":"0x5732046a883704404f284ce41ffadd5b007fd668","sale_address":"","contract_info":{},"colors":["#18578c","#18578c"],"type":"erc20","alternate_names":{"coingecko":"bluzelle"},"currency_id":"ethereum-ropsten:0x5732046a883704404f284ce41ffadd5b007fd668"},{"code":"BNB","name":"Binance Coin","scale":18,"is_supported":false,"contract_address":"0xb8c77482e45f1f44de1745f52c74426c631bdd52","sale_address":"","contract_info":{},"colors":["#f3ba2f","#f3ba2f"],"type":"erc20","currency_id":"ethereum-ropsten:0xb8c77482e45f1f44de1745f52c74426c631bdd52"},{"code":"BNT","name":"Bancor","scale":18,"is_supported":true,"contract_address":"0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C","sale_address":"","contract_info":{},"colors":["#42d4fc","#42d4fc"],"type":"erc20","alternate_names":{"coingecko":"bancor"},"currency_id":"ethereum-ropsten:0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"},{"code":"BRD","name":"BRD Token","scale":18,"is_supported":true,"contract_address":"0x558ec3152e2eb2174905cd19aea4e34a23de9ad6","sale_address":"","contract_info":{},"colors":["#ff5193","#f9a43a"],"type":"erc20","currency_id":"ethereum-ropsten:0x558ec3152e2eb2174905cd19aea4e34a23de9ad6"},{"code":"BTM","name":"Bytom","scale":8,"is_supported":true,"contract_address":"0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750","sale_address":"","contract_info":{},"colors":["#b99948","#b99948"],"type":"erc20","currency_id":"ethereum-ropsten:0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"},{"code":"CFI","name":"Cofound.it","scale":18,"is_supported":false,"contract_address":"0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e","sale_address":"","contract_info":{},"colors":["#0099e5","#0099e5"],"type":"erc20","currency_id":"ethereum-ropsten:0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e"},{"code":"CMT","name":"CyberMiles","scale":18,"is_supported":false,"contract_address":"0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F","sale_address":"","contract_info":{},"colors":["#c1a05c","#c1a05c"],"type":"erc20","alternate_names":{"coingecko":"cybermiles"},"currency_id":"ethereum-ropsten:0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F"},{"code":"CND","name":"Cindicator","scale":18,"is_supported":true,"contract_address":"0xd4c435f5b09f855c3317c8524cb1f586e42795fa","sale_address":"","contract_info":{},"colors":["#304975","#304975"],"type":"erc20","alternate_names":{"coingecko":"cindicator"},"currency_id":"ethereum-ropsten:0xd4c435f5b09f855c3317c8524cb1f586e42795fa"},{"code":"CNN","name":"CNN Token","scale":18,"is_supported":false,"contract_address":"0x8713d26637cf49e1b6b4a7ce57106aabc9325343","sale_address":"","contract_info":{},"colors":["#6fa7f6","#6fa7f6"],"type":"erc20","currency_id":"ethereum-ropsten:0x8713d26637cf49e1b6b4a7ce57106aabc9325343"},{"code":"CRPT","name":"Crypterium","scale":18,"is_supported":true,"contract_address":"0x08389495d7456e1951ddf7c3a1314a4bfb646d8b","sale_address":"","contract_info":{},"colors":["#01bdcd","#01bdcd"],"type":"erc20","currency_id":"ethereum-ropsten:0x08389495d7456e1951ddf7c3a1314a4bfb646d8b"},{"code":"CS","name":"Credits","scale":6,"is_supported":false,"contract_address":"0x46b9ad944d1059450da1163511069c718f699d31","sale_address":"","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#0fa3d5","#0fa3d5"],"type":"erc20","alternate_names":{"cryptocompare":"crdts"},"currency_id":"ethereum-ropsten:0x46b9ad944d1059450da1163511069c718f699d31"},{"code":"CVC","name":"Civic","scale":8,"is_supported":true,"contract_address":"0x41e5560054824ea6b0732e656e3ad64e20e94e45","sale_address":"","contract_info":{},"colors":["#3ab03e","#3ab03e"],"type":"erc20","alternate_names":{"coingecko":"civic"},"currency_id":"ethereum-ropsten:0x41e5560054824ea6b0732e656e3ad64e20e94e45"},{"code":"DENT","name":"DENT","scale":8,"is_supported":true,"contract_address":"0x3597bfd533a99c9aa083587b074434e61eb0a258","sale_address":"","contract_info":{},"colors":["#666666","#666666"],"type":"erc20","currency_id":"ethereum-ropsten:0x3597bfd533a99c9aa083587b074434e61eb0a258"},{"code":"DGD","name":"DigixDAO","scale":9,"is_supported":false,"contract_address":"0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A","sale_address":"","contract_info":{},"colors":["#c2a059","#c2a059"],"type":"erc20","currency_id":"ethereum-ropsten:0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A"},{"code":"DNT","name":"district0x","scale":18,"is_supported":true,"contract_address":"0x0abdace70d3790235af448c88547603b945604ea","sale_address":"","contract_info":{},"colors":["#2c398f","#2c398f"],"type":"erc20","currency_id":"ethereum-ropsten:0x0abdace70d3790235af448c88547603b945604ea"},{"code":"DRGN","name":"Dragon","scale":18,"is_supported":true,"contract_address":"0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e","sale_address":"","contract_info":{},"colors":["#c91111","#c91111"],"type":"erc20","currency_id":"ethereum-ropsten:0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e"},{"code":"EDG","name":"Edgeless","scale":0,"is_supported":false,"contract_address":"0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c","sale_address":"","contract_info":{},"colors":["#3ecf8e","#3ecf8e"],"type":"erc20","alternate_names":{"coingecko":"edgeless"},"currency_id":"ethereum-ropsten:0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c"},{"code":"EDO","name":"Eidoo","scale":18,"is_supported":false,"contract_address":"0xced4e93198734ddaff8492d525bd258d49eb388e","sale_address":"","contract_info":{},"colors":["#139fe6","#139fe6"],"type":"erc20","currency_id":"ethereum-ropsten:0xced4e93198734ddaff8492d525bd258d49eb388e"},{"code":"ELF","name":"Aelf","scale":18,"is_supported":true,"contract_address":"0xbf2179859fc6d5bee9bf9158632dc51678a4100e","sale_address":"","contract_info":{},"colors":["#2b5ebb","#2b5ebb"],"type":"erc20","currency_id":"ethereum-ropsten:0xbf2179859fc6d5bee9bf9158632dc51678a4100e"},{"code":"ENG","name":"Enigma","scale":8,"is_supported":true,"contract_address":"0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4","sale_address":"","contract_info":{},"colors":["#2553cd","#2553cd"],"type":"erc20","currency_id":"ethereum-ropsten:0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"},{"code":"ENJ","name":"EnjinCoin","scale":18,"is_supported":true,"contract_address":"0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c","sale_address":"","contract_info":{},"colors":["#624dbf","#624dbf"],"type":"erc20","currency_id":"ethereum-ropsten:0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c"},{"code":"VGX","name":"Voyager","scale":8,"is_supported":false,"contract_address":"0x5af2be193a6abca9c8817001f45744777db30756","sale_address":"","contract_info":{},"colors":["#00cfab","#00cfab"],"type":"erc20","currency_id":"ethereum-ropsten:0x5af2be193a6abca9c8817001f45744777db30756"},{"code":"FSN","name":"Fusion","scale":18,"is_supported":false,"contract_address":"0xd0352a019e9ab9d757776f532377aaebd36fd541","sale_address":"","contract_info":{},"colors":["#1d9ad7","#1d9ad7"],"type":"erc20","currency_id":"ethereum-ropsten:0xd0352a019e9ab9d757776f532377aaebd36fd541"},{"code":"FUN","name":"FunFair","scale":8,"is_supported":true,"contract_address":"0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b","sale_address":"","contract_info":{},"colors":["#ed1968","#ed1968"],"type":"erc20","alternate_names":{"coingecko":"funfair"},"currency_id":"ethereum-ropsten:0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b"},{"code":"GD","name":"Zilla GD","scale":0,"is_supported":false,"contract_address":"0xb4cebdb66b3a5183fd4764a25cad1fc109535016","sale_address":"","contract_info":{},"colors":["#4776e6","#4776e6"],"type":"erc20","currency_id":"ethereum-ropsten:0xb4cebdb66b3a5183fd4764a25cad1fc109535016"},{"code":"GNO","name":"Gnosis","scale":18,"is_supported":true,"contract_address":"0x6810e776880C02933D47DB1b9fc05908e5386b96","sale_address":"","contract_info":{},"colors":["#00a6c4","#00a6c4"],"type":"erc20","currency_id":"ethereum-ropsten:0x6810e776880C02933D47DB1b9fc05908e5386b96"},{"code":"GNT","name":"Golem (legacy)","scale":18,"is_supported":false,"contract_address":"0xa74476443119A942dE498590Fe1f2454d7D4aC0d","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","currency_id":"ethereum-ropsten:0xa74476443119A942dE498590Fe1f2454d7D4aC0d"},{"code":"GNX","name":"Genaro Network","scale":9,"is_supported":false,"contract_address":"0x6ec8a24cabdc339a06a172f8223ea557055adaa5","sale_address":"","contract_info":{},"colors":["#7ba5de","#7ba5de"],"type":"erc20","currency_id":"ethereum-ropsten:0x6ec8a24cabdc339a06a172f8223ea557055adaa5"},{"code":"GTO","name":"Gifto","scale":5,"is_supported":true,"contract_address":"0xc5bbae50781be1669306b9e001eff57a2957b09d","sale_address":"","contract_info":{},"colors":["#7f27ff","#7f27ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xc5bbae50781be1669306b9e001eff57a2957b09d"},{"code":"GUP","name":"Matchpool","scale":3,"is_supported":false,"contract_address":"0xf7B098298f7C69Fc14610bf71d5e02c60792894C","sale_address":"","contract_info":{},"colors":["#2FBEBA","#2FBEBA"],"type":"erc20","currency_id":"ethereum-ropsten:0xf7B098298f7C69Fc14610bf71d5e02c60792894C"},{"code":"GVT","name":"Genesis Vision","scale":18,"is_supported":false,"contract_address":"0x103c3A209da59d3E7C4A89307e66521e081CFDF0","sale_address":"","contract_info":{},"colors":["#16b9ad","#16b9ad"],"type":"erc20","currency_id":"ethereum-ropsten:0x103c3A209da59d3E7C4A89307e66521e081CFDF0"},{"code":"HPB","name":"HPBCoin","scale":18,"is_supported":false,"contract_address":"0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2","sale_address":"","contract_info":{},"colors":["#1591ca","#1591ca"],"type":"erc20","currency_id":"ethereum-ropsten:0x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2"},{"code":"HYDRO","name":"Hydro","scale":18,"is_supported":false,"contract_address":"0xebbdf302c940c6bfd49c6b165f457fdb324649bc","sale_address":"","contract_info":{},"colors":["#2e72ed","#2e72ed"],"type":"erc20","currency_id":"ethereum-ropsten:0xebbdf302c940c6bfd49c6b165f457fdb324649bc"},{"code":"ICN","name":"ICONOMI","scale":18,"is_supported":false,"contract_address":"0x888666CA69E0f178DED6D75b5726Cee99A87D698","sale_address":"","contract_info":{},"colors":["#4c6f8c","#4c6f8c"],"type":"erc20","currency_id":"ethereum-ropsten:0x888666CA69E0f178DED6D75b5726Cee99A87D698"},{"code":"ICX","name":"ICON","scale":18,"is_supported":false,"contract_address":"0xb5a5f22694352c15b00323844ad545abb2b11028","sale_address":"","contract_info":{},"colors":["#1fc5c9","#1fc5c9"],"type":"erc20","currency_id":"ethereum-ropsten:0xb5a5f22694352c15b00323844ad545abb2b11028"},{"code":"IOST","name":"IOStoken","scale":18,"is_supported":false,"contract_address":"0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab","sale_address":"","contract_info":{},"colors":["#0f91ca","#0f91ca"],"type":"erc20","currency_id":"ethereum-ropsten:0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab"},{"code":"ITC","name":"IOT Chain","scale":18,"is_supported":false,"contract_address":"0x5e6b6d9abad9093fdc861ea1600eba1b355cd940","sale_address":"","contract_info":{},"colors":["#1b67b0","#1b67b0"],"type":"erc20","currency_id":"ethereum-ropsten:0x5e6b6d9abad9093fdc861ea1600eba1b355cd940"},{"code":"KIN","name":"Kin","scale":18,"is_supported":false,"contract_address":"0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5","sale_address":"","contract_info":{},"colors":["#2359cf","#2359cf"],"type":"erc20","currency_id":"ethereum-ropsten:0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5"},{"code":"KNC","name":"Kyber Network","scale":18,"is_supported":true,"contract_address":"0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-ropsten:0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202"},{"code":"LEND","name":"Aave (OLD)","scale":18,"is_supported":false,"contract_address":"0x80fB784B7eD66730e8b1DBd9820aFD29931aab03","sale_address":"","contract_info":{},"colors":["#0fa9c9","#0fa9c9"],"type":"erc20","currency_id":"ethereum-ropsten:0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"},{"code":"LINK","name":"ChainLink","scale":18,"is_supported":true,"contract_address":"0x514910771af9ca656af840dff83e8264ecf986ca","sale_address":"","contract_info":{},"colors":["#2a5ada","#2a5ada"],"type":"erc20","currency_id":"ethereum-ropsten:0x514910771af9ca656af840dff83e8264ecf986ca"},{"code":"LOOM","name":"Loom","scale":18,"is_supported":true,"contract_address":"0x42476F744292107e34519F9c357927074Ea3F75D","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-ropsten:0x42476F744292107e34519F9c357927074Ea3F75D"},{"code":"LRC","name":"Loopring","scale":18,"is_supported":true,"contract_address":"0xbbbbca6a901c926f240b89eacb641d8aec7aeafd","sale_address":"","contract_info":{},"colors":["#2ab6f6","#2ab6f6"],"type":"erc20","currency_id":"ethereum-ropsten:0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"},{"code":"LUN","name":"Lunyr","scale":18,"is_supported":false,"contract_address":"0xfa05A73FfE78ef8f1a739473e462c54bae6567D9","sale_address":"","contract_info":{},"colors":["#f55749","#f55749"],"type":"erc20","currency_id":"ethereum-ropsten:0xfa05A73FfE78ef8f1a739473e462c54bae6567D9"},{"code":"MAN","name":"MATRIX AI Network","scale":18,"is_supported":false,"contract_address":"0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d","sale_address":"","contract_info":{},"colors":["#019399","#019399"],"type":"erc20","currency_id":"ethereum-ropsten:0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d"},{"code":"MANA","name":"Decentraland","scale":18,"is_supported":true,"contract_address":"0x0F5D2fB29fb7d3CFeE444a200298f468908cC942","sale_address":"","contract_info":{},"colors":["#bfb5af","#bfb5af"],"type":"erc20","currency_id":"ethereum-ropsten:0x0F5D2fB29fb7d3CFeE444a200298f468908cC942"},{"code":"MCO","name":"Monaco","scale":8,"is_supported":false,"contract_address":"0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d","sale_address":"","contract_info":{},"colors":["#0d9aff","#0d9aff"],"type":"erc20","currency_id":"ethereum-ropsten:0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d"},{"code":"MTL","name":"Metal","scale":8,"is_supported":true,"contract_address":"0xF433089366899D83a9f26A773D59ec7eCF30355e","sale_address":"","contract_info":{},"colors":["#007aff","#007aff"],"type":"erc20","currency_id":"ethereum-ropsten:0xF433089366899D83a9f26A773D59ec7eCF30355e"},{"code":"NAS","name":"Nebulas","scale":18,"is_supported":false,"contract_address":"0x5d65D971895Edc438f465c17DB6992698a52318D","sale_address":"","contract_info":{},"colors":["#0029ff","#0029ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x5d65D971895Edc438f465c17DB6992698a52318D"},{"code":"NEXO","name":"Nexo","scale":18,"is_supported":true,"contract_address":"0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206","sale_address":"","contract_info":{},"colors":["#4aa2ea","#4aa2ea"],"type":"erc20","currency_id":"ethereum-ropsten:0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206"},{"code":"NMR","name":"Numeraire","scale":18,"is_supported":true,"contract_address":"0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671","sale_address":"","contract_info":{},"colors":["#25b1cd","#25b1cd"],"type":"erc20","currency_id":"ethereum-ropsten:0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"},{"code":"NPXS","name":"Pundi X Token","scale":18,"is_supported":false,"contract_address":"0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3","sale_address":"","contract_info":{},"colors":["#DBBF4B","#DBBF4B"],"type":"erc20","currency_id":"ethereum-ropsten:0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3"},{"code":"NULS","name":"Nuls","scale":18,"is_supported":false,"contract_address":"0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c","sale_address":"","contract_info":{},"colors":["#82bd39","#82bd39"],"type":"erc20","currency_id":"ethereum-ropsten:0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c"},{"code":"OMG","name":"OmiseGO","scale":18,"is_supported":true,"contract_address":"0xd26114cd6EE289AccF82350c8d8487fedB8A0C07","sale_address":"","contract_info":{},"colors":["#1a53f0","#1a53f0"],"type":"erc20","currency_id":"ethereum-ropsten:0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"},{"code":"OST","name":"OST","scale":18,"is_supported":false,"contract_address":"0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA","sale_address":"","contract_info":{},"colors":["#e4b030","#e4b030"],"type":"erc20","currency_id":"ethereum-ropsten:0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA"},{"code":"PAL","name":"PolicyPal Network","scale":18,"is_supported":false,"contract_address":"0xfeDAE5642668f8636A11987Ff386bfd215F942EE","sale_address":"","contract_info":{},"colors":["#54b9a1","#54b9a1"],"type":"erc20","alternate_names":{"coingecko":"policypal"},"currency_id":"ethereum-ropsten:0xfeDAE5642668f8636A11987Ff386bfd215F942EE"},{"code":"PAY","name":"TenX","scale":18,"is_supported":true,"contract_address":"0xB97048628DB6B661D4C2aA833e95Dbe1A905B280","sale_address":"","contract_info":{},"colors":["#1780af","#1780af"],"type":"erc20","alternate_names":{"coingecko":"tenx"},"currency_id":"ethereum-ropsten:0xB97048628DB6B661D4C2aA833e95Dbe1A905B280"},{"code":"POE","name":"Po.et","scale":8,"is_supported":false,"contract_address":"0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195","sale_address":"","contract_info":{},"colors":["#b6a573","#b6a573"],"type":"erc20","currency_id":"ethereum-ropsten:0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195"},{"code":"POLY","name":"Polymath","scale":18,"is_supported":true,"contract_address":"0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC","sale_address":"","contract_info":{},"colors":["#4c5a95","#4c5a95"],"type":"erc20","currency_id":"ethereum-ropsten:0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"},{"code":"POWR","name":"Power Ledger","scale":6,"is_supported":true,"contract_address":"0x595832f8fc6bf59c85c527fec3740a1b7a361269","sale_address":"","contract_info":{},"colors":["#05bca9","#05bca9"],"type":"erc20","currency_id":"ethereum-ropsten:0x595832f8fc6bf59c85c527fec3740a1b7a361269"},{"code":"PPT","name":"Populous","scale":8,"is_supported":true,"contract_address":"0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a","sale_address":"","contract_info":{},"colors":["#5ca0f6","#5ca0f6"],"type":"erc20","currency_id":"ethereum-ropsten:0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a"},{"code":"PRL","name":"Oyster Pearl","scale":18,"is_supported":false,"contract_address":"0x1844b21593262668b7248d0f57a220caaba46ab9","sale_address":"","contract_info":{},"colors":["#0984fb","#0984fb"],"type":"erc20","currency_id":"ethereum-ropsten:0x1844b21593262668b7248d0f57a220caaba46ab9"},{"code":"PTOY","name":"Patientory","scale":8,"is_supported":false,"contract_address":"0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06","sale_address":"","contract_info":{},"colors":["#42b34e","#42b34e"],"type":"erc20","currency_id":"ethereum-ropsten:0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06"},{"code":"QASH","name":"QASH","scale":6,"is_supported":false,"contract_address":"0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6","sale_address":"","contract_info":{},"colors":["#1347e8","#1347e8"],"type":"erc20","currency_id":"ethereum-ropsten:0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6"},{"code":"QRL","name":"QRL","scale":8,"is_supported":false,"contract_address":"0x697beac28B09E122C4332D163985e8a73121b97F","sale_address":"","contract_info":{},"colors":["#c71e53","#c71e53"],"type":"erc20","currency_id":"ethereum-ropsten:0x697beac28B09E122C4332D163985e8a73121b97F"},{"code":"QSP","name":"Quantstamp","scale":18,"is_supported":true,"contract_address":"0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d","sale_address":"","contract_info":{},"colors":["#4e79ff","#4e79ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"},{"code":"REV","name":"Revain","scale":0,"is_supported":false,"contract_address":"0x48f775efbe4f5ece6e0df2f7b5932df56823b990","sale_address":"","contract_info":{},"colors":["#bd2df5","#bd2df5"],"type":"erc20","alternate_names":{"coingecko":"revain"},"currency_id":"ethereum-ropsten:0x48f775efbe4f5ece6e0df2f7b5932df56823b990"},{"code":"RCN","name":"Ripio Credit","scale":18,"is_supported":true,"contract_address":"0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6","sale_address":"","contract_info":{},"colors":["#3555f9","#3555f9"],"type":"erc20","currency_id":"ethereum-ropsten:0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"},{"code":"RDN","name":"Raiden Network","scale":18,"is_supported":true,"contract_address":"0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6","sale_address":"","contract_info":{},"colors":["#586c77","#586c77"],"type":"erc20","currency_id":"ethereum-ropsten:0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"},{"code":"REP","name":"Augur","scale":18,"is_supported":false,"contract_address":"0x1985365e9f78359a9B6AD760e32412f4a445E862","sale_address":"","contract_info":{},"colors":["#736e89","#736e89"],"type":"erc20","currency_id":"ethereum-ropsten:0x1985365e9f78359a9B6AD760e32412f4a445E862"},{"code":"REQ","name":"Request","scale":18,"is_supported":true,"contract_address":"0x8f8221aFbB33998d8584A2B05749bA73c37a938a","sale_address":"","contract_info":{},"colors":["#5a89f9","#5a89f9"],"type":"erc20","currency_id":"ethereum-ropsten:0x8f8221aFbB33998d8584A2B05749bA73c37a938a"},{"code":"RLC","name":"iExec RLC","scale":9,"is_supported":true,"contract_address":"0x607F4C5BB672230e8672085532f7e901544a7375","sale_address":"","contract_info":{},"colors":["#637799","#637799"],"type":"erc20","currency_id":"ethereum-ropsten:0x607F4C5BB672230e8672085532f7e901544a7375"},{"code":"RUFF","name":"RUFF","scale":18,"is_supported":false,"contract_address":"0xf278c1ca969095ffddded020290cf8b5c424ace2","sale_address":"","contract_info":{},"colors":["#01c8ca","#01c8ca"],"type":"erc20","currency_id":"ethereum-ropsten:0xf278c1ca969095ffddded020290cf8b5c424ace2"},{"code":"SALT","name":"SALT","scale":8,"is_supported":false,"contract_address":"0x4156D3342D5c385a87D264F90653733592000581","sale_address":"","contract_info":{},"colors":["#40b2b5","#40b2b5"],"type":"erc20","currency_id":"ethereum-ropsten:0x4156D3342D5c385a87D264F90653733592000581"},{"code":"SAN","name":"SAN","scale":18,"is_supported":false,"contract_address":"0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098","sale_address":"","contract_info":{},"colors":["#2b77b3","#2b77b3"],"type":"erc20","currency_id":"ethereum-ropsten:0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098"},{"code":"SENT","name":"SENTinel","scale":8,"is_supported":false,"contract_address":"0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037","sale_address":"","contract_info":{},"colors":["#3666aa","#3666aa"],"type":"erc20","currency_id":"ethereum-ropsten:0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037"},{"code":"SNC","name":"SunContract","scale":18,"is_supported":false,"contract_address":"0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404","sale_address":"","contract_info":{},"colors":["#1096d4","#1096d4"],"type":"erc20","currency_id":"ethereum-ropsten:0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404"},{"code":"SNGLS","name":"Singular DTV","scale":0,"is_supported":false,"contract_address":"0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009","sale_address":"","contract_info":{},"colors":["#b30d23","#b30d23"],"type":"erc20","currency_id":"ethereum-ropsten:0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009"},{"code":"SNM","name":"SONM","scale":18,"is_supported":false,"contract_address":"0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63","sale_address":"","contract_info":{},"colors":["#8e16fd","#8e16fd"],"type":"erc20","currency_id":"ethereum-ropsten:0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63"},{"code":"SNT","name":"Status","scale":18,"is_supported":true,"contract_address":"0x744d70FDBE2Ba4CF95131626614a1763DF805B9E","sale_address":"","contract_info":{},"colors":["#5b6dee","#5b6dee"],"type":"erc20","currency_id":"ethereum-ropsten:0x744d70FDBE2Ba4CF95131626614a1763DF805B9E"},{"code":"SRN","name":"SIRIN","scale":18,"is_supported":false,"contract_address":"0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25","sale_address":"","contract_info":{},"colors":["#37b7a5","#37b7a5"],"type":"erc20","currency_id":"ethereum-ropsten:0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25"},{"code":"STORJ","name":"Storj","scale":8,"is_supported":true,"contract_address":"0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC","sale_address":"","contract_info":{},"colors":["#2683ff","#2683ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC"},{"code":"STORM","name":"Storm","scale":18,"is_supported":false,"contract_address":"0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-ropsten:0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"},{"code":"STQ","name":"Storiqa","scale":18,"is_supported":false,"contract_address":"0x5c3a228510d246b78a3765c20221cbf3082b44a4","sale_address":"","contract_info":{},"colors":["#58b4f1","#58b4f1"],"type":"erc20","currency_id":"ethereum-ropsten:0x5c3a228510d246b78a3765c20221cbf3082b44a4"},{"code":"STX","name":"Stox","scale":18,"is_supported":false,"contract_address":"0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45","sale_address":"","contract_info":{},"colors":["#7022eb","#7022eb"],"type":"erc20","alternate_names":{"coingecko":"stox"},"currency_id":"ethereum-ropsten:0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45"},{"code":"SUB","name":"Substratum","scale":18,"is_supported":false,"contract_address":"0x8D75959f1E61EC2571aa72798237101F084DE63a","sale_address":"","contract_info":{},"colors":["#e53431","#e53431"],"type":"erc20","currency_id":"ethereum-ropsten:0x8D75959f1E61EC2571aa72798237101F084DE63a"},{"code":"THETA","name":"Theta Token","scale":18,"is_supported":false,"contract_address":"0x3883f5e181fccaf8410fa61e12b59bad963fb645","sale_address":"","contract_info":{},"colors":["#2ab8e6","#2ab8e6"],"type":"erc20","currency_id":"ethereum-ropsten:0x3883f5e181fccaf8410fa61e12b59bad963fb645"},{"code":"TIME","name":"Chronobank","scale":8,"is_supported":false,"contract_address":"0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53","sale_address":"","contract_info":{},"colors":["#5db3ed","#5db3ed"],"type":"erc20","currency_id":"ethereum-ropsten:0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53"},{"code":"UCASH","name":"UCASH","scale":8,"is_supported":false,"contract_address":"0x92e52a1a235d9a103d970901066ce910aacefd37","sale_address":"","contract_info":{},"colors":["#c59a47","#c59a47"],"type":"erc20","currency_id":"ethereum-ropsten:0x92e52a1a235d9a103d970901066ce910aacefd37"},{"code":"VEE","name":"BLOCKv","scale":18,"is_supported":false,"contract_address":"0x340d2bde5eb28c1eed91b2f790723e3b160613b7","sale_address":"","contract_info":{},"colors":["#6a7d7f","#6a7d7f"],"type":"erc20","currency_id":"ethereum-ropsten:0x340d2bde5eb28c1eed91b2f790723e3b160613b7"},{"code":"VIB","name":"Viberate","scale":18,"is_supported":false,"contract_address":"0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724","sale_address":"","contract_info":{},"colors":["#ff1f43","#ff1f43"],"type":"erc20","currency_id":"ethereum-ropsten:0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724"},{"code":"WAX","name":"WAX","scale":8,"is_supported":false,"contract_address":"0x39Bb259F66E1C59d5ABEF88375979b4D20D98022","sale_address":"","contract_info":{},"colors":["#f89022","#f89022"],"type":"erc20","currency_id":"ethereum-ropsten:0x39Bb259F66E1C59d5ABEF88375979b4D20D98022"},{"code":"WINGS","name":"Wings","scale":18,"is_supported":false,"contract_address":"0x667088b212ce3d06a1b553a7221E1fD19000d9aF","sale_address":"","contract_info":{},"colors":["#0dc9f7","#0dc9f7"],"type":"erc20","currency_id":"ethereum-ropsten:0x667088b212ce3d06a1b553a7221E1fD19000d9aF"},{"code":"WPR","name":"WePower","scale":18,"is_supported":false,"contract_address":"0x4CF488387F035FF08c371515562CBa712f9015d4","sale_address":"","contract_info":{},"colors":["#dbcc49","#dbcc49"],"type":"erc20","currency_id":"ethereum-ropsten:0x4CF488387F035FF08c371515562CBa712f9015d4"},{"code":"WRC","name":"Worldcore","scale":6,"is_supported":false,"contract_address":"0x72adadb447784dd7ab1f472467750fc485e4cb2d","sale_address":"","contract_info":{},"colors":["#27bcba","#27bcba"],"type":"erc20","currency_id":"ethereum-ropsten:0x72adadb447784dd7ab1f472467750fc485e4cb2d"},{"code":"WTC","name":"Waltonchain","scale":18,"is_supported":false,"contract_address":"0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74","sale_address":"","contract_info":{},"colors":["#8200ff","#8200ff"],"type":"erc20","currency_id":"ethereum-ropsten:0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"},{"code":"XJP","name":"Digital JPY","scale":0,"is_supported":false,"contract_address":"0x39689fE671C01fcE173395f6BC45D4C332026666","sale_address":"","contract_info":{},"colors":["#f15a22","#f15a22"],"type":"erc20","currency_id":"ethereum-ropsten:0x39689fE671C01fcE173395f6BC45D4C332026666"},{"code":"ZIL","name":"Zilliqa","scale":12,"is_supported":false,"contract_address":"0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27","sale_address":"","contract_info":{},"colors":["#49c1bf","#49c1bf"],"type":"erc20","currency_id":"ethereum-ropsten:0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27"},{"code":"ZLA","name":"Zilla","scale":18,"is_supported":false,"contract_address":"0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16","sale_address":"","contract_info":{},"colors":["#5e6ab2","#5e6ab2"],"type":"erc20","currency_id":"ethereum-ropsten:0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16"},{"code":"ZRX","name":"0x","scale":18,"is_supported":true,"contract_address":"0xE41d2489571d322189246DaFA5ebDe1F4699F498","sale_address":"","contract_info":{},"colors":["#9c82f5","#9c82f5"],"type":"erc20","currency_id":"ethereum-ropsten:0xE41d2489571d322189246DaFA5ebDe1F4699F498"},{"code":"TEL","name":"Telcoin","scale":2,"is_supported":true,"contract_address":"0x467bccd9d29f223bce8043b84e8c8b282827790f","sale_address":"","contract_info":{},"colors":["#59C6FA","#59C6FA"],"type":"erc20","currency_id":"ethereum-ropsten:0x467bccd9d29f223bce8043b84e8c8b282827790f"},{"code":"CCC","name":"Container Crypto Coin","scale":18,"is_supported":false,"contract_address":"0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d","sale_address":"0x8cee633c5c4caae99f466a14171a53bc2ea2d291","contract_info":{"initial_value":"ETH 0.001250000000000000"},"colors":["#95C121","#95C121"],"type":"erc20","currency_id":"ethereum-ropsten:0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d"},{"code":"EOS","name":"EOS","scale":18,"is_supported":false,"contract_address":"0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0","sale_address":"","contract_info":{},"colors":["#7f91a7","#7f91a7"],"type":"erc20","currency_id":"ethereum-ropsten:0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"},{"code":"TRX","name":"TRON","scale":6,"is_supported":false,"contract_address":"0xf230b790e05390fc8295f4d3f60332c93bed42e2","sale_address":"","contract_info":{},"colors":["#ba2323","#ba2323"],"type":"erc20","currency_id":"ethereum-ropsten:0xf230b790e05390fc8295f4d3f60332c93bed42e2"},{"code":"AMLT","name":"AMLT by Coinfirm","scale":18,"is_supported":false,"contract_address":"0xca0e7269600d353f70b14ad118a49575455c0f2f","sale_address":"","contract_info":{},"colors":["#035AD8","#035AD8"],"type":"erc20","currency_id":"ethereum-ropsten:0xca0e7269600d353f70b14ad118a49575455c0f2f"},{"code":"APPC","name":"AppCoins","scale":18,"is_supported":false,"contract_address":"0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db","sale_address":"","contract_info":{},"colors":["#1F7AB9","#3196A8"],"type":"erc20","currency_id":"ethereum-ropsten:0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db"},{"code":"ATMI","name":"Atonomi","scale":18,"is_supported":false,"contract_address":"0x97aeb5066e1a590e868b511457beb6fe99d329f5","sale_address":"","contract_info":{},"colors":["#2B9FDA","#2B9FDA"],"type":"erc20","currency_id":"ethereum-ropsten:0x97aeb5066e1a590e868b511457beb6fe99d329f5"},{"code":"STU","name":"bitJob","scale":18,"is_supported":false,"contract_address":"0x0371a82e4a9d0a4312f3ee2ac9c6958512891372","sale_address":"","contract_info":{},"colors":["#0E235B","#0E235B"],"type":"erc20","currency_id":"ethereum-ropsten:0x0371a82e4a9d0a4312f3ee2ac9c6958512891372"},{"code":"CAS","name":"Cashaa","scale":18,"is_supported":false,"contract_address":"0xe8780b48bdb05f928697a5e8155f672ed91462f7","sale_address":"","contract_info":{},"colors":["#15398C","#15398C"],"type":"erc20","currency_id":"ethereum-ropsten:0xe8780b48bdb05f928697a5e8155f672ed91462f7"},{"code":"DOV","name":"Dovu","scale":18,"is_supported":false,"contract_address":"0xac3211a5025414af2866ff09c23fc18bc97e79b1","sale_address":"","contract_info":{},"colors":["#033686","#033686"],"type":"erc20","currency_id":"ethereum-ropsten:0xac3211a5025414af2866ff09c23fc18bc97e79b1"},{"code":"XUC","name":"Exchange Union","scale":18,"is_supported":false,"contract_address":"0xc324a2f6b05880503444451b8b27e6f9e63287cb","sale_address":"","contract_info":{},"colors":["#2AA9E1","#2AA9E1"],"type":"erc20","currency_id":"ethereum-ropsten:0xc324a2f6b05880503444451b8b27e6f9e63287cb"},{"code":"GBX","name":"Globitex","scale":8,"is_supported":false,"contract_address":"0x12fcd6463e66974cf7bbc24ffc4d40d6be458283","sale_address":"","contract_info":{},"colors":["#005496","#005496"],"type":"erc20","alternate_names":{"coingecko":"globitex"},"currency_id":"ethereum-ropsten:0x12fcd6463e66974cf7bbc24ffc4d40d6be458283"},{"code":"IXT","name":"iXledger","scale":8,"is_supported":false,"contract_address":"0xfca47962d45adfdfd1ab2d972315db4ce7ccf094","sale_address":"","contract_info":{},"colors":["#1EB0D3","#1EB0D3"],"type":"erc20","currency_id":"ethereum-ropsten:0xfca47962d45adfdfd1ab2d972315db4ce7ccf094"},{"code":"MYST","name":"Mysterium","scale":8,"is_supported":false,"contract_address":"0xa645264C5603E96c3b0B078cdab68733794B0A71","sale_address":"","contract_info":{},"colors":["#C6205D","#322262"],"type":"erc20","currency_id":"ethereum-ropsten:0xa645264C5603E96c3b0B078cdab68733794B0A71"},{"code":"RCC","name":"Reality Clash","scale":18,"is_supported":false,"contract_address":"0x9b6443b0fb9c241a7fdac375595cea13e6b7807a","sale_address":"","contract_info":{},"colors":["#00FFFF","#00FFFF"],"type":"erc20","currency_id":"ethereum-ropsten:0x9b6443b0fb9c241a7fdac375595cea13e6b7807a"},{"code":"RVT","name":"Rivetz","scale":18,"is_supported":false,"contract_address":"0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244","sale_address":"","contract_info":{},"colors":["#F36E24","#F36E24"],"type":"erc20","currency_id":"ethereum-ropsten:0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244"},{"code":"STK","name":"STK","scale":18,"is_supported":false,"contract_address":"0xae73b38d1c9a8b274127ec30160a4927c4d71824","sale_address":"","contract_info":{},"colors":["#000000","#000000"],"type":"erc20","alternate_names":{"coingecko":"stk"},"currency_id":"ethereum-ropsten:0xae73b38d1c9a8b274127ec30160a4927c4d71824"},{"code":"PMTN","name":"Peer Mountain","scale":18,"is_supported":false,"contract_address":"0xe91df2bb9bccd18c45f01843cab88768d64f2d32","sale_address":"","contract_info":{},"colors":["#4BC4DE","#4BC4DE"],"type":"erc20","currency_id":"ethereum-ropsten:0xe91df2bb9bccd18c45f01843cab88768d64f2d32"},{"code":"TUSD","name":"TrueUSD","scale":18,"is_supported":true,"contract_address":"0x0000000000085d4780B73119b644AE5ecd22b376","sale_address":"","contract_info":{},"colors":["#67C6BB","#67C6BB"],"type":"erc20","currency_id":"ethereum-ropsten:0x0000000000085d4780B73119b644AE5ecd22b376"},{"code":"CSP","name":"Caspian","scale":18,"is_supported":false,"contract_address":"0xa6446d655a0c34bc4f05042ee88170d056cbaf45","sale_address":"","contract_info":{},"colors":["#22586F","#22586F"],"type":"erc20","currency_id":"ethereum-ropsten:0xa6446d655a0c34bc4f05042ee88170d056cbaf45"},{"code":"RC1U03","name":"RentalCoin 1.0","scale":6,"is_supported":false,"contract_address":"0x7384db1aaa06364d1e6e67f5434391d3eea2a038","sale_address":"","contract_info":{},"colors":["#18336B","#18336B"],"type":"erc20","currency_id":"ethereum-ropsten:0x7384db1aaa06364d1e6e67f5434391d3eea2a038"},{"code":"SAI","name":"Sai","scale":18,"is_supported":false,"contract_address":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359","sale_address":"","contract_info":{},"colors":["#FBBA00","#FBBA00"],"type":"erc20","alternate_names":{"coingecko":"sai","cryptocompare":"dai"},"currency_id":"ethereum-ropsten:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},{"code":"MKR","name":"Maker","scale":18,"is_supported":true,"contract_address":"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2","sale_address":"","contract_info":{},"colors":["#1ABC9C","#1ABC9C"],"type":"erc20","currency_id":"ethereum-ropsten:0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"},{"code":"BCH","name":"Bitcoin Cash","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#478559","#478559"],"type":"","currency_id":"bitcoincash-testnet:__native__"},{"code":"BTC","name":"Bitcoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#f29500","#f29500"],"type":"","currency_id":"bitcoin-testnet:__native__"},{"code":"ETH","name":"Ethereum","scale":18,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#5e6fa5","#5e6fa5"],"type":"","currency_id":"ethereum-ropsten:__native__"},{"code":"PAX","name":"Paxos Standard","scale":18,"is_supported":true,"contract_address":"0x8e870d67f660d95d5be530380d0ec0bd388289e1","sale_address":"","contract_info":{},"colors":["#20BCD4","#20BCD4"],"type":"erc20","currency_id":"ethereum-ropsten:0x8e870d67f660d95d5be530380d0ec0bd388289e1"},{"code":"ARN","name":"Aeron","scale":8,"is_supported":false,"contract_address":"0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","currency_id":"ethereum-ropsten:0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6"},{"code":"GUSD","name":"Gemini Dollar","scale":2,"is_supported":true,"contract_address":"0x056fd409e1d7a124bd7017459dfea2f387b6d5cd","sale_address":"","contract_info":{},"colors":["#68DAF5","#68DAF5"],"type":"erc20","currency_id":"ethereum-ropsten:0x056fd409e1d7a124bd7017459dfea2f387b6d5cd"},{"code":"FXC","name":"Flexacoin","scale":18,"is_supported":false,"contract_address":"0x4a57E687b9126435a9B19E4A802113e266AdeBde","sale_address":"","contract_info":{},"colors":["#cc2fff","#2815ff"],"type":"erc20","currency_id":"ethereum-ropsten:0x4a57E687b9126435a9B19E4A802113e266AdeBde"},{"code":"USDC","name":"USD Coin","scale":6,"is_supported":true,"contract_address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","sale_address":"","contract_info":{},"colors":["#2775CA","#2775CA"],"type":"erc20","currency_id":"ethereum-ropsten:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{"code":"DAI","name":"Dai","scale":18,"is_supported":true,"contract_address":"0x6b175474e89094c44da98b954eedeac495271d0f","sale_address":"","contract_info":{},"colors":["#F4B731","#F4B731"],"type":"erc20","alternate_names":{"cryptocompare":"mcd"},"currency_id":"ethereum-ropsten:0x6b175474e89094c44da98b954eedeac495271d0f"},{"code":"XRP","name":"XRP","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#282e34","#282e34"],"type":"","alternate_names":{"payid":"xrpl-mainnet"},"currency_id":"ripple-testnet:__native__"},{"code":"OXT","name":"Orchid","scale":18,"is_supported":true,"contract_address":"0x4575f41308ec1483f3d399aa9a2826d74da13deb","sale_address":"","contract_info":{},"colors":["#5F45BA","#5F45BA"],"type":"erc20","currency_id":"ethereum-ropsten:0x4575f41308ec1483f3d399aa9a2826d74da13deb"},{"code":"HBAR","name":"Hedera","scale":9,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#8259EF","#8259EF"],"type":"","currency_id":"hedera-testnet:__native__"},{"code":"EUR.AVM","name":"EUR AVM","scale":2,"is_supported":false,"contract_address":"0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a","sale_address":"","contract_info":{},"colors":["#364aad","#364aad"],"type":"erc20","currency_id":"ethereum-ropsten:0xF01Cd2f1c9E42c509d309aC8C5b29B6dA8E64b1a"},{"code":"STMX","name":"StormX","scale":18,"is_supported":true,"contract_address":"0xbE9375C6a420D2eEB258962efB95551A5b722803","sale_address":"","contract_info":{},"colors":["#6b38e0","#6b38e0"],"type":"erc20","currency_id":"ethereum-ropsten:0xbE9375C6a420D2eEB258962efB95551A5b722803"},{"code":"USDT","name":"Tether USD","scale":6,"is_supported":true,"contract_address":"0xdac17f958d2ee523a2206206994597c13d831ec7","sale_address":"","contract_info":{},"colors":["#137D61","#137D61"],"type":"erc20","alternate_names":{"coingecko":"tether","cryptocompare":"usdt"},"currency_id":"ethereum-ropsten:0xdac17f958d2ee523a2206206994597c13d831ec7"},{"code":"NCASH","name":"Nucleus Vision","scale":18,"is_supported":false,"contract_address":"0x809826cceab68c387726af962713b64cb5cb3cca","sale_address":"","contract_info":{},"colors":["#36a9cf","#36a9cf"],"type":"erc20","currency_id":"ethereum-ropsten:0x809826cceab68c387726af962713b64cb5cb3cca"},{"code":"AST","name":"Airswap","scale":4,"is_supported":true,"contract_address":"0x27054b13b1b798b345b591a4d22e6562d47ea75a","sale_address":"","contract_info":{},"colors":["#2b71ff","#2b71ff"],"type":"erc20","alternate_names":{"coingecko":"airswap"},"currency_id":"ethereum-ropsten:0x27054b13b1b798b345b591a4d22e6562d47ea75a"},{"code":"BUSD","name":"Binance USD","scale":18,"is_supported":true,"contract_address":"0x4fabb145d64652a948d72533023f6e7a623c7c53","sale_address":"","contract_info":{},"colors":["#f0b90b","#f0b90b"],"type":"erc20","alternate_names":{"coingecko":"binance-usd"},"currency_id":"ethereum-ropsten:0x4fabb145d64652a948d72533023f6e7a623c7c53"},{"code":"UNI","name":"Uniswap","scale":18,"is_supported":true,"contract_address":"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984","sale_address":"","contract_info":{},"colors":["#ff007a","#ff007a"],"type":"erc20","alternate_names":{"coingecko":"uniswap"},"currency_id":"ethereum-ropsten:0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"},{"code":"AAVE","name":"Aave","scale":18,"is_supported":true,"contract_address":"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9","sale_address":"","contract_info":{},"colors":["#b6509e","#b6509e"],"type":"erc20","alternate_names":{"coingecko":"aave"},"currency_id":"ethereum-ropsten:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"},{"code":"XTZ","name":"Tezos","scale":6,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#2C7DF7","#2C7DF7"],"type":"","alternate_names":{"coingecko":"tezos"},"currency_id":"tezos-testnet:__native__"},{"code":"GLM","name":"Golem","scale":18,"is_supported":true,"contract_address":"0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429","sale_address":"","contract_info":{},"colors":["#5a6eaa","#5a6eaa"],"type":"erc20","alternate_names":{"coingecko":"golem"},"currency_id":"ethereum-ropsten:0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"},{"code":"ZUSD","name":"Z.com USD","scale":6,"is_supported":true,"contract_address":"0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA","sale_address":"","contract_info":{},"colors":["#d62825","#d62825"],"type":"erc20","alternate_names":{"coingecko":"zusd"},"currency_id":"ethereum-ropsten:0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA"},{"code":"GYEN","name":"GMO JPY","scale":6,"is_supported":true,"contract_address":"0xC08512927D12348F6620a698105e1BAac6EcD911","sale_address":"","contract_info":{},"colors":["#005cac","#005cac"],"type":"erc20","alternate_names":{"coingecko":"gyen"},"currency_id":"ethereum-ropsten:0xC08512927D12348F6620a698105e1BAac6EcD911"},{"code":"SNX","name":"Synthetix","scale":18,"is_supported":true,"contract_address":"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f","sale_address":"","contract_info":{},"colors":["#58e0fe","#58e0fe"],"type":"erc20","alternate_names":{"coingecko":"havven"},"currency_id":"ethereum-ropsten:0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"},{"code":"GRT","name":"The Graph","scale":18,"is_supported":true,"contract_address":"0xc944E90C64B2c07662A292be6244BDf05Cda44a7","sale_address":"","contract_info":{},"colors":["#6f4cff","#6f4cff"],"type":"erc20","alternate_names":{"coingecko":"the-graph"},"currency_id":"ethereum-ropsten:0xc944E90C64B2c07662A292be6244BDf05Cda44a7"},{"code":"SUSHI","name":"Sushi","scale":18,"is_supported":true,"contract_address":"0x6b3595068778dd592e39a122f4f5a5cf09c90fe2","sale_address":"","contract_info":{},"colors":["#fa52a0","#fa52a0"],"type":"erc20","alternate_names":{"coingecko":"sushi"},"currency_id":"ethereum-ropsten:0x6b3595068778dd592e39a122f4f5a5cf09c90fe2"},{"code":"COMP","name":"Compound","scale":18,"is_supported":true,"contract_address":"0xc00e94cb662c3520282e6f5717214004a7f26888","sale_address":"","contract_info":{},"colors":["#00c48a","#00c48a"],"type":"erc20","alternate_names":{"coingecko":"compound-governance-token"},"currency_id":"ethereum-ropsten:0xc00e94cb662c3520282e6f5717214004a7f26888"},{"code":"YFI","name":"yearn.finance","scale":18,"is_supported":true,"contract_address":"0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e","sale_address":"","contract_info":{},"colors":["#006ae3","#006ae3"],"type":"erc20","alternate_names":{"coingecko":"yearn-finance"},"currency_id":"ethereum-ropsten:0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e"},{"code":"UMA","name":"UMA","scale":18,"is_supported":true,"contract_address":"0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828","sale_address":"","contract_info":{},"colors":["#ff4a4a","#ff4a4a"],"type":"erc20","alternate_names":{"coingecko":"uma"},"currency_id":"ethereum-ropsten:0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828"},{"code":"OLDLOOM","name":"Loom (Old)","scale":18,"is_supported":false,"contract_address":"0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0","sale_address":"","contract_info":{},"colors":["#028fac","#028fac"],"type":"erc20","currency_id":"ethereum-ropsten:0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0"},{"code":"KNCL","name":"Kyber Network (Legacy)","scale":18,"is_supported":false,"contract_address":"0xdd974d5c2e2928dea5f71b9825b8b646686bd200","sale_address":"","contract_info":{},"colors":["#188c92","#188c92"],"type":"erc20","currency_id":"ethereum-ropsten:0xdd974d5c2e2928dea5f71b9825b8b646686bd200"},{"code":"ARNX","name":"Aeron","scale":18,"is_supported":true,"contract_address":"0x0C37Bcf456bC661C14D596683325623076D7e283","sale_address":"","contract_info":{},"colors":["#2c85bd","#2c85bd"],"type":"erc20","alternate_names":{"coingecko":"aeron"},"currency_id":"ethereum-ropsten:0x0C37Bcf456bC661C14D596683325623076D7e283"},{"code":"AGIX","name":"SingularityNET","scale":8,"is_supported":true,"contract_address":"0x5B7533812759B45C2B44C19e320ba2cD2681b542","sale_address":"","contract_info":{},"colors":["#543ce9","#543ce9"],"type":"erc20","alternate_names":{"coingecko":"singularitynet"},"currency_id":"ethereum-ropsten:0x5B7533812759B45C2B44C19e320ba2cD2681b542"},{"code":"CRV","name":"Curve","scale":18,"is_supported":true,"contract_address":"0xD533a949740bb3306d119CC777fa900bA034cd52","sale_address":"","contract_info":{},"colors":["#3665A4","#3665A4"],"type":"erc20","alternate_names":{"coingecko":"curve-dao-token"},"currency_id":"ethereum-ropsten:0xD533a949740bb3306d119CC777fa900bA034cd52"},{"code":"1INCH","name":"1inch","scale":18,"is_supported":true,"contract_address":"0x111111111117dc0aa78b770fa6a738034120c302","sale_address":"","contract_info":{},"colors":["#2AB7CC","#2AB7CC"],"type":"erc20","alternate_names":{"coingecko":"1inch"},"currency_id":"ethereum-ropsten:0x111111111117dc0aa78b770fa6a738034120c302"},{"code":"SXP","name":"Swipe","scale":18,"is_supported":true,"contract_address":"0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9","sale_address":"","contract_info":{},"colors":["#FE5025","#FE5025"],"type":"erc20","alternate_names":{"coingecko":"swipe"},"currency_id":"ethereum-ropsten:0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9"},{"code":"BAL","name":"Balancer","scale":18,"is_supported":true,"contract_address":"0xba100000625a3754423978a60c9317c58a424e3d","sale_address":"","contract_info":{},"colors":["#1E1E1E","#1E1E1E"],"type":"erc20","alternate_names":{"coingecko":"balancer"},"currency_id":"ethereum-ropsten:0xba100000625a3754423978a60c9317c58a424e3d"},{"code":"BAND","name":"Band Protocol","scale":18,"is_supported":true,"contract_address":"0xba11d00c5f74255f56a5e366f4f77f5a186d7f55","sale_address":"","contract_info":{},"colors":["#516AFF","#516AFF"],"type":"erc20","alternate_names":{"coingecko":"band-protocol"},"currency_id":"ethereum-ropsten:0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"},{"code":"DPI","name":"DeFiPulse Index","scale":18,"is_supported":true,"contract_address":"0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b","sale_address":"","contract_info":{},"colors":["#8150E6","#8150E6"],"type":"erc20","alternate_names":{"coingecko":"defipulse-index"},"currency_id":"ethereum-ropsten:0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b"},{"code":"MATIC","name":"Polygon","scale":18,"is_supported":true,"contract_address":"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0","sale_address":"","contract_info":{},"colors":["#8247E5","#8247E5"],"type":"erc20","alternate_names":{"coingecko":"matic-network"},"currency_id":"ethereum-ropsten:0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"},{"code":"SHIB","name":"Shiba Inu","scale":18,"is_supported":true,"contract_address":"0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE","sale_address":"","contract_info":{},"colors":["#F00500","#F00500"],"type":"erc20","alternate_names":{"coingecko":"shiba-inu"},"currency_id":"ethereum-ropsten:0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{"code":"WBTC","name":"Wrapped BTC","scale":8,"is_supported":true,"contract_address":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599","sale_address":"","contract_info":{},"colors":["#7C3E88","#7C3E88"],"type":"erc20","alternate_names":{"coingecko":"wrapped-bitcoin"},"currency_id":"ethereum-ropsten:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"},{"code":"AXS","name":"Axie Infinity","scale":18,"is_supported":true,"contract_address":"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b","sale_address":"","contract_info":{},"colors":["#0B5BDD","#0B5BDD"],"type":"erc20","alternate_names":{"coingecko":"axie-infinity"},"currency_id":"ethereum-ropsten:0xbb0e17ef65f82ab018d8edd776e8dd940327b28b"},{"code":"CHZ","name":"Chiliz","scale":18,"is_supported":true,"contract_address":"0x3506424f91fd33084466f402d5d97f05f8e3b4af","sale_address":"","contract_info":{},"colors":["#AD0000","#AD0000"],"type":"erc20","alternate_names":{"coingecko":"chiliz"},"currency_id":"ethereum-ropsten:0x3506424f91fd33084466f402d5d97f05f8e3b4af"},{"code":"SAND","name":"Sandbox","scale":18,"is_supported":true,"contract_address":"0x3845badAde8e6dFF049820680d1F14bD3903a5d0","sale_address":"","contract_info":{},"colors":["#019FF5","#019FF5"],"type":"erc20","alternate_names":{"coingecko":"the-sandbox"},"currency_id":"ethereum-ropsten:0x3845badAde8e6dFF049820680d1F14bD3903a5d0"},{"code":"PERP","name":"Perpetual","scale":18,"is_supported":true,"contract_address":"0xbC396689893D065F41bc2C6EcbeE5e0085233447","sale_address":"","contract_info":{},"colors":["#03BCE4","#03BCE4"],"type":"erc20","alternate_names":{"coingecko":"perpetual-protocol"},"currency_id":"ethereum-ropsten:0xbC396689893D065F41bc2C6EcbeE5e0085233447"},{"code":"FOX","name":"ShapeShift","scale":18,"is_supported":true,"contract_address":"0xc770eefad204b5180df6a14ee197d99d808ee52d","sale_address":"","contract_info":{},"colors":["#1D4AC9","#1D4AC9"],"type":"erc20","alternate_names":{"coingecko":"shapeshift-fox-token"},"currency_id":"ethereum-ropsten:0xc770eefad204b5180df6a14ee197d99d808ee52d"},{"code":"DOGE","name":"Dogecoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#DAB053","#DAB053"],"type":"","alternate_names":{"coingecko":"dogecoin"},"currency_id":"dogecoin-testnet:__native__"},{"code":"LTC","name":"Litecoin","scale":8,"is_supported":true,"contract_address":"","sale_address":"","contract_info":{},"colors":["#59667E","#59667E"],"type":"","alternate_names":{"coingecko":"litecoin"},"currency_id":"litecoin-testnet:__native__"}] \ No newline at end of file diff --git a/brd-android/app-core/src/main/res/values-da/strings.xml b/brd-android/app-core/src/main/res/values-da/strings.xml index 90e63ff34..5e681613f 100644 --- a/brd-android/app-core/src/main/res/values-da/strings.xml +++ b/brd-android/app-core/src/main/res/values-da/strings.xml @@ -86,10 +86,10 @@ Pengene blev sendt! Fingeraftryk genkendt - - Aktiver lagringstilladelse i din enheds indstillinger: \"Indstillinger\" > \"Apps\" > \"BRD\" > \"Tilladelser\". Du kan få adgang til enhver BCH i din pung via hjemskærmen. + + Aktiver lagringstilladelse i din enheds indstillinger: \"Indstillinger\" > \"Apps\" > \"BRD\" > \"Tilladelser\". BRD fungerer ikke korrekt medmindre apps der ændrer skærmbilledet (så som Twilight) er deaktiveret. @@ -134,6 +134,8 @@ Godkendt uden problemer BitID godkendelsesanmodning + + Hjem Køb @@ -148,8 +150,6 @@ Afvis Færdig - - Hjem Ignorer @@ -213,6 +213,14 @@ Kontroller, at iCloud-nøglering er Tændt Jeg forstår, at denne funktion ikke fungerer, medmindre iCloud Keychain er aktiveret. Din iCloud-sikkerhedskopi slettes efter %1$@ flere forkerte PIN-forsøg. + Papir tegnebog beløb + Validering af denne papirpung på netværket kan tage op til 60 minutter + + De indtastede ord matcher ikke din gendannelsessætning. Prøv igen. + + For at sikre, at alt blev skrevet korrekt, skal du indtaste følgende ord fra din gendannelsessætning. + + Ord #%1$s Beløb der skal sendes: Destinationsmærke @@ -233,14 +241,6 @@ Til Samlede omkostninger: - Papir tegnebog beløb - Validering af denne papirpung på netværket kan tage op til 60 minutter - - De indtastede ord matcher ikke din gendannelsessætning. Prøv igen. - - For at sikre, at alt blev skrevet korrekt, skal du indtaste følgende ord fra din gendannelsessætning. - - Ord #%1$s Vælg beløb ($ USD) skab Tilpasset beløb (maks. $ 500) @@ -270,14 +270,14 @@ Valutakurs Pung deaktiveret - - %1$s adresse Anmod om %1$s-kontooplysninger Anmod om %1$s \"smart contract\"-kald Anmod om betaling af %1$s + + %1$s adresse Denne enhed er ikke konfigureret til at sende e-mail med iOS mailappen. @@ -290,10 +290,8 @@ Beskeder utilgængelig Fingeraftryk ikke genkendt. Prøv igen. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ samlet antal aktiver Køb og sælg - - Tjekker beløb på privat nøgle... - - Send %1$s fra denne private nøgle til din pung? Bitcoin netværket vil modtage et gebyr på %2$s. Denne private nøgle findes allerede i din pung. @@ -546,6 +599,12 @@ Ikke en gyldig privat nøgle Fejl ved underskrivelse af transaktion + + Indløste privat nøgle. + + Tjekker beløb på privat nøgle... + + Send %1$s fra denne private nøgle til din pung? Bitcoin netværket vil modtage et gebyr på %2$s. Indløs @@ -564,8 +623,6 @@ Scan privat nøgle Succes - - Indløste privat nøgle. Indløs privat nøgle @@ -739,10 +796,10 @@ Der skal en skærmlås til på enheden, for at beskytte din pung. Gå til \"Indstillinger\" > \"Sikkerhed\" > \"Skærmlås\" og aktiver for at fortsætte. Skærmlås deaktiveret - - Din gendannelsessætning skal gemmes, hvis du mister eller ændrer din telefon. Konfigurer din gendannelsesfrase, hvis du nogensinde mister eller udskifter din telefon. Din nøgle er også påkrævet, hvis du ændrer telefonens sikkerhedsindstillinger. + + Din gendannelsessætning skal gemmes, hvis du mister eller ændrer din telefon. Handling påkrævet Spørg ikke igen @@ -778,10 +835,10 @@ Notifikationer deaktiveret Aktivér meddelelser for at modtage særlige tilbud og opdateringer fra BRD. - - Du modtager særlige tilbud og opdateringer fra BRD. Det lader til, at meddelelser er slået fra. Gå til Indstillinger for at aktivere meddelelser fra BRD. + + Du modtager særlige tilbud og opdateringer fra BRD. Modtag pushmeddelelser @@ -800,6 +857,28 @@ Bedøm BRD Bedøm BRD + + Synkroniser + + Du vil ikke kunne sende penge mens du synkroniserer. + + Synkroniser med blokkæde? + + 20-45 minutter + + Hvis en transaktion vises som gennemført i bitcoin netværket, men ikke i dit BRD. + + Du modtager gentagne gange en fejlmeddelelse om at din transaktion er blevet afvist. + + Start synkronisering + + Du vil ikke kunne bruge penge, når du synkroniserer med blokkæden. + + Synkroniser blokkæde + + Anslået tid + + Hvornår skal der synkroniseres? Kopieret til udklipsholder. @@ -912,28 +991,6 @@ Indtast venligst et beløb først. Anmod om et beløb - - Synkroniser - - Du vil ikke kunne sende penge mens du synkroniserer. - - Synkroniser med blokkæde? - - 20-45 minutter - - Hvis en transaktion vises som gennemført i bitcoin netværket, men ikke i dit BRD. - - Du modtager gentagne gange en fejlmeddelelse om at din transaktion er blevet afvist. - - Start synkronisering - - Du vil ikke kunne bruge penge, når du synkroniserer med blokkæden. - - Synkroniser blokkæde - - Anslået tid - - Hvornår skal der synkroniseres? Se hvordan du kan spare på handelsgebyrer og låse op for fremtidige gevinster. @@ -977,19 +1034,24 @@ Touch ID Autentificering via fingeraftryk + + Aktivering af SegWit er en irreversibel funktion. Er du sikker på, at du vil fortsætte? Du har aktiveret SegWit! Tak for at hjælpe med at skubbe bitcoin fremad. SegWit-support er stadig en beta funktion.\nNår SegWit er aktiveret, vil det ikke være muligt\nat deaktivere det. Du kan finde legacy-adressen under Indstillinger.\nNogle tredjepartstjenester, herunder kryptohandel, kan være utilgængelige for brugere, der har aktiveret SegWit. I tilfælde af en nødsituation vil du kunne generere en legacy-adresse fra Indstillinger > Bitcoin-Indstillinger.\nSegWit vil automatisk blive aktiveret for alle\nbrugere i en fremtidig opdatering. - - Aktivering af SegWit er en irreversibel funktion. Er du sikker på, at du vil fortsætte? Aktiver Til månen - FIO + + Bitcoin adresser er kun beregnet til en enkelt anvendelse. + + Genbrug reducerer privatliv for både dig og modtageren og kan resultere i tab, hvis modtageren ikke har direkte kontrol over adressen. + + Adresse allerede brugt Beløb @@ -1000,10 +1062,10 @@ Tillad adgang under \"Indstillinger\" > \"Apps\" > \"BRD\" > \"Tilladelser\" BRD har ikke tilladelse til at få adgang til kameraet - - Gå til Indstillinger og giv adgang til kamera. BRD har ikke adgang til kameraet + + Gå til Indstillinger og giv adgang til kamera. Destinationen er din egen adresse. Du kan ikke sende til dig selv. @@ -1070,12 +1132,12 @@ Kunne ikke behandle betalingsanmodning Scan - - Sender maks: Send Send maksimumsbeløb? + + Sender maks: Send penge @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Bitcoin adresser er kun beregnet til en enkelt anvendelse. - - Genbrug reducerer privatliv for både dig og modtageren og kan resultere i tab, hvis modtageren ikke har direkte kontrol over adressen. - - Adresse allerede brugt + FIO + + Aktivér Segwit + + Vis Legacy Modtagelsesadresse + + Send kun Bitcoin (BTC) til denne adresse. Ethvert andet aktiv, der sendes til denne adresse, vil gå tabt permanent. + + Modtag Bitcoin Om @@ -1107,8 +1172,6 @@ Valutaindstillinger Tilmeld dig Early Access - - Aktivér Segwit Nyder du BRD? @@ -1121,6 +1184,7 @@ Administrer Notifikationer + Order History Andet @@ -1145,12 +1209,6 @@ Touch ID brugsgrænse Brugsgrænse for autentificering via fingeraftryk - - Vis Legacy Modtagelsesadresse - - Send kun Bitcoin (BTC) til denne adresse. Ethvert andet aktiv, der sendes til denne adresse, vil gå tabt permanent. - - Modtag Bitcoin Wallet @@ -1212,12 +1270,12 @@ Fjern indsatsen Indtast Validator-adresse + + Din gendannelsessætning er den eneste måde at gendanne din BRD på, hvis din telefon går tabt, stjålet, ødelagt eller opgraderes. \n\nDin gendannelsessætning er også påkrævet, hvis du ændrer sikkerhedsindstillingerne på din enhed. \n\nVi viser dig en liste over ord, du kan skrive ned på et stykke papir og holder dig sikker. Skriv genoprettelsesfrasen igen Din gendannelsessætning er den eneste måde at gendanne din BRD på, hvis din telefon går tabt, stjålet, ødelagt eller opgraderes. \n\nVi viser dig en liste over ord, du kan skrive ned på et stykke papir og holder dig sikker. - - Din gendannelsessætning er den eneste måde at gendanne din BRD på, hvis din telefon går tabt, stjålet, ødelagt eller opgraderes. \n\nDin gendannelsessætning er også påkrævet, hvis du ændrer sikkerhedsindstillingerne på din enhed. \n\nVi viser dig en liste over ord, du kan skrive ned på et stykke papir og holder dig sikker. Skriv gendannelsesfrase ned @@ -1339,9 +1397,9 @@ indsats til %1$s Startbalance: %1$s + til %1$s Gebyr for token-overførsel: %1$s - til %1$s Venter på bekræftelse. Nogen forhandlere kræver bekræftelse for at gennemføre en transaktion. Anslået tid: 1-2 timer. @@ -1449,6 +1507,14 @@ Modtaget på denne adresse Sendt til denne adresse + + Tillad at kopiere pungadresse til udklipsholder + + Kopier pungadresse + + Kopier pungadresse til udklipsholderen? + + Kopier Deaktiveret indtil: %1$s @@ -1489,14 +1555,6 @@ Fejl ved opdatering af PIN Opdater PIN - - Kopier pungadresse til udklipsholderen? - - Tillad at kopiere pungadresse til udklipsholder - - Kopier pungadresse - - Kopier Indtast venligst din PIN for at godkende denne transaktion. @@ -1541,14 +1599,6 @@ Breadwallet har skiftet navn til BRD med et helt nyt look og nogle nye funktioner.\n\nHvis du har brug for hjælp, led efter (?) øverst til højre på de fleste skærme. Velkommen til BRD! - - Bliv opdateret med dit yndlings krypto-aktiv - - Bliv opdateret med dine foretrukne kryptoaktiver - - Liste over aktiver - - Aktiv System Auto Lys / Mørk @@ -1583,6 +1633,14 @@ hvid Gul + + Bliv opdateret med dit yndlings krypto-aktiv + + Bliv opdateret med dine foretrukne kryptoaktiver + + Liste over aktiver + + Aktiv Tema baggrundsfarver diff --git a/brd-android/app-core/src/main/res/values-de/strings.xml b/brd-android/app-core/src/main/res/values-de/strings.xml index 322cb1e52..138376522 100644 --- a/brd-android/app-core/src/main/res/values-de/strings.xml +++ b/brd-android/app-core/src/main/res/values-de/strings.xml @@ -86,10 +86,10 @@ Geld versandt! Fingerabdruck erkannt - - Bitte aktivieren Sie die Speicherberechtigung in Ihren Geräteeinstellungen: „Einstellungen\" > „Apps\" > „BRD\" > „Berechtigungen\". Sie können über den Startbildschirm auf alle BCH in Ihrer Wallet zugreifen. + + Bitte aktivieren Sie die Speicherberechtigung in Ihren Geräteeinstellungen: „Einstellungen\" > „Apps\" > „BRD\" > „Berechtigungen\". BRD funktioniert nicht ordnungsgemäß, solange bildschirmverändernde Apps (z.B. Twilight) aktiv sind. @@ -134,6 +134,8 @@ Erfolgreich authentifiziert BitID-Authentifizierungsanfrage + + Start Kaufen @@ -148,8 +150,6 @@ Verwerfen Fertig - - Start Ignorieren @@ -213,6 +213,14 @@ Überprüfen Sie, ob iCloud-Schlüsselbund eingeschaltet ist Ich verstehe, dass diese Funktion nur funktioniert, wenn iCloud Keychain aktiviert ist. Ihre iCloud-Sicherung wird nach %1$@ mehr falschen PIN-Versuchen gelöscht. + Geldbörse Betrag + Die Validierung dieser Brieftasche im Netzwerk kann bis zu 60 Minuten dauern + + Die eingegebenen Wörter stimmen nicht mit Ihrer Wiederherstellungsphrase überein. Bitte versuche es erneut. + + Um sicherzustellen, dass alles korrekt aufgeschrieben wurde, geben Sie bitte die folgenden Wörter aus Ihrem Wiederherstellungssatz ein. + + Wort #%1$s Betrag, welcher versendet werden soll: Ziel-Tag @@ -233,14 +241,6 @@ An Gesamtkosten: - Geldbörse Betrag - Die Validierung dieser Brieftasche im Netzwerk kann bis zu 60 Minuten dauern - - Die eingegebenen Wörter stimmen nicht mit Ihrer Wiederherstellungsphrase überein. Bitte versuche es erneut. - - Um sicherzustellen, dass alles korrekt aufgeschrieben wurde, geben Sie bitte die folgenden Wörter aus Ihrem Wiederherstellungssatz ein. - - Wort #%1$s Betrag auswählen ($ USD) Erstellen Benutzerdefinierter Betrag (max. 500 USD) @@ -270,14 +270,14 @@ Wechselkurs Wallet deaktiviert - - %1$s Adresse %1$s Kontoinformationen anfordern %1$s Smart Contract Forderung %1$s Kontoinformationen anfordern + + %1$s Adresse Dieses Gerät ist nicht dafür eingerichtet, E-Mails mit der iOS-Mail-App zu versenden. @@ -290,10 +290,8 @@ Nachrichtensystem nicht verfügbar Fingerabdruck nicht erkannt. Bitte erneut versuchen. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ Gesamtvermögen Handeln - - Das Privatschlüsselguthaben wird überprüft … - - %1$s von diesem privaten Schlüssel in Ihr Wallet senden? Das Bitcoin-Netzwerk erhält eine Gebühr von %2$s. Dieser private Schlüssel befindet sich bereits in deinem Wallet. @@ -546,6 +599,12 @@ Kein gültiger privater Schlüssel Fehler beim Signieren der Transaktion + + Privater Schlüssel wurde erfolgreich eingelöst. + + Das Privatschlüsselguthaben wird überprüft … + + %1$s von diesem privaten Schlüssel in Ihr Wallet senden? Das Bitcoin-Netzwerk erhält eine Gebühr von %2$s. Einlösen @@ -564,8 +623,6 @@ Privaten Schlüssel scannen Der Vorgang war erfolgreich - - Privater Schlüssel wurde erfolgreich eingelöst. Privaten Schlüssel einlösen @@ -739,10 +796,10 @@ Es ist eine Bildschirmsperre auf dem Gerät erforderlich, um Ihr Wallet abzusichern. Gehen Sie zu „Einstellungen” > „Sicherheit” > „Bildschirmsperre” und aktivieren Sie diese, um fortzufahren. Bildschirmsperre deaktiviert - - Ihre Wiederherstellungsphrase muss gespeichert werden, falls Sie Ihr Telefon verlieren oder wechseln. Richten Sie Ihre Wiederherstellungsphrase ein, falls Sie jemals Ihr Telefon verlieren oder ersetzen sollten. Ihr Schlüssel wird auch benötigt, wenn Sie die Sicherheitseinstellungen Ihres Telefons ändern. + + Ihre Wiederherstellungsphrase muss gespeichert werden, falls Sie Ihr Telefon verlieren oder wechseln. Maßnahme erforderlich Fragen Sie nicht noch einmal @@ -778,10 +835,10 @@ Benachrichtigungen sind abgeschaltet Aktivieren Sie Benachrichtigungen, um Sonderangebote und Updates von BRD zu erhalten. - - Sie erhalten spezielle Angebote und Updates von BRD. Es sieht so aus, als wären Benachrichtigungen deaktiviert. Bitte gehen Sie zu Einstellungen, um Benachrichtigungen von BRD zu aktivieren. + + Sie erhalten spezielle Angebote und Updates von BRD. Push-Benachrichtigungen erhalten @@ -800,6 +857,28 @@ BRD bewerten BRD bewerten + + Synchronisieren + + Während der Synchronisation kannst du kein Geld versenden. + + Mit der Blockchain synchronisieren? + + 20–45 Minuten + + Wenn eine Transaktion im Bitcoin-Netzwerk, aber nicht in deinem BRD als abgeschlossen angezeigt wird. + + Sie erhalten wiederholt eine Fehlermeldung, dass Ihre Transaktion abgewiesen wurde. + + Synchronisation starten + + Während der Synchronisation mit der Blockchain kannst du kein Geld versenden. + + Blockchain-Synchronisation + + Voraussichtliche Dauer + + Wann soll synchronisiert werden? In die Zwischenablage kopiert. @@ -912,28 +991,6 @@ Bitte geben Sie zuerst einen Betrag ein. Einen Betrag anfordern - - Synchronisieren - - Während der Synchronisation kannst du kein Geld versenden. - - Mit der Blockchain synchronisieren? - - 20–45 Minuten - - Wenn eine Transaktion im Bitcoin-Netzwerk, aber nicht in deinem BRD als abgeschlossen angezeigt wird. - - Sie erhalten wiederholt eine Fehlermeldung, dass Ihre Transaktion abgewiesen wurde. - - Synchronisation starten - - Während der Synchronisation mit der Blockchain kannst du kein Geld versenden. - - Blockchain-Synchronisation - - Voraussichtliche Dauer - - Wann soll synchronisiert werden? Erfahren Sie, wie Sie Handelsgebühren sparen und zukünftige Belohnungen freischalten können. @@ -977,19 +1034,24 @@ Touch ID Fingerabdruck-Authentifizierung + + Die Aktivierung von SegWit ist eine Funktion, die nicht rückgängig gemacht werden kann. Sind Sie sicher, dass Sie fortfahren möchten? Sie haben SegWit aktiviert! Vielen Dank, dass Sie mithelfen, Bitcoin voranzutreiben. SegWit-Unterstützung ist noch eine Betafunktion. \nSobald SegWit aktiviert ist, wird es nicht möglich sein, es zu deaktivieren. Sie werden die Legacy-Adresse in den Einstellungen finden.\nManche Drittdienstleistungen, einschließlich Kryptohandel, könnten für Nutzer nicht verfügbar sein, die SegWit aktiviert haben. Im Falle einer Notfalls werden Sie in der Lage sein, eine Legacy-Adresse in den Einstellungen > Bitcoin-Einstellungen zu erzeugen.\nSegWit wird in einem zukünftigen Update für alle Nutzer automatisch aktiviert werden. - - Die Aktivierung von SegWit ist eine Funktion, die nicht rückgängig gemacht werden kann. Sind Sie sicher, dass Sie fortfahren möchten? Aktivieren Zum Mond - FIO + + Bitcoin-Adressen sind lediglich zur einmaligen Benutzung vorgesehen. + + Durch eine mehrfache Verwendung können sowohl du als auch der Empfänger leichter identifiziert werden und falls der Empfänger die Adresse nicht direkt kontrolliert, kann das Verluste bedeuten. + + Adresse bereits in Verwendung Betrag @@ -1000,10 +1062,10 @@ Erlauben Sie den Kamerazugriff unter „Einstellungen” > „Apps” > „BRD” > „Berechtigungen” BRD hat keine Berechtigung für Kamerazugriff - - Rufe die Einstellungen auf, um den Zugriff auf die Kamera zu erlauben. BRD darf nicht auf die Kamera zugreifen + + Rufe die Einstellungen auf, um den Zugriff auf die Kamera zu erlauben. Das Ziel ist deine eigene Adresse. Du kannst nichts an dich selbst senden. @@ -1070,12 +1132,12 @@ Zahlungsanfrage konnte nicht geladen werden Scannen - - Max senden: Senden Den maximalen Betrag senden? + + Max senden: Senden @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Bitcoin-Adressen sind lediglich zur einmaligen Benutzung vorgesehen. - - Durch eine mehrfache Verwendung können sowohl du als auch der Empfänger leichter identifiziert werden und falls der Empfänger die Adresse nicht direkt kontrolliert, kann das Verluste bedeuten. - - Adresse bereits in Verwendung + FIO + + SegWit aktivieren + + Legacy-Empfangsadresse ansehen + + Senden Sie nur Bitcoin (BTC) an diese Adresse. Jeder andere an diese Adresse gesendete Vermögenswert geht dauerhaft verloren. + + Bitcoin erhalten Info @@ -1107,8 +1172,6 @@ Währungseinstellungen Zum Early Access anmelden - - SegWit aktivieren Gefällt dir BRD? @@ -1121,6 +1184,7 @@ Verwalten Benachrichtigungen + Order History Andere @@ -1145,12 +1209,6 @@ Touch-ID-Ausgabenlimit Ausgabelimit bei Fingerabdruck-Authentifizierung - - Legacy-Empfangsadresse ansehen - - Senden Sie nur Bitcoin (BTC) an diese Adresse. Jeder andere an diese Adresse gesendete Vermögenswert geht dauerhaft verloren. - - Bitcoin erhalten Wallet @@ -1212,12 +1270,12 @@ Unstake Geben Sie die Validator-Adresse ein + + Ihre Wiederherstellungsphrase ist die einzige Möglichkeit, Ihre BRD wiederherzustellen, wenn Ihr Telefon verloren geht, gestohlen, defekt oder aktualisiert wird. \n\nIhre Wiederherstellungsphrase ist auch erforderlich, wenn Sie die Sicherheitseinstellungen auf Ihrem Gerät ändern. \n\nWir zeigen Ihnen eine Liste mit Wörtern, die Sie auf ein Blatt Papier schreiben und sicher aufbewahren können. Schreiben Sie die Wiederherstellungsphrase erneut auf Ihre Wiederherstellungsphrase ist die einzige Möglichkeit, Ihre BRD wiederherzustellen, wenn Ihr Telefon verloren geht, gestohlen, defekt oder aktualisiert wird. \n\nWir zeigen Ihnen eine Liste mit Wörtern, die Sie auf ein Blatt Papier schreiben und sicher aufbewahren können. - - Ihre Wiederherstellungsphrase ist die einzige Möglichkeit, Ihre BRD wiederherzustellen, wenn Ihr Telefon verloren geht, gestohlen, defekt oder aktualisiert wird. \n\nIhre Wiederherstellungsphrase ist auch erforderlich, wenn Sie die Sicherheitseinstellungen auf Ihrem Gerät ändern. \n\nWir zeigen Ihnen eine Liste mit Wörtern, die Sie auf ein Blatt Papier schreiben und sicher aufbewahren können. Notieren Sie die Wiederherstellungsphrase @@ -1339,9 +1397,9 @@ Abstecken auf %1$s Startguthaben: %1$s + bis %1$s Gebühr für Token-Übertragung: %1$s - bis %1$s Bestätigung ausstehend. Einige Händler fordern eine Bestätigung, um Transaktionen abzuschließen. Voraussichtliche Dauer: 1–2 Stunden. @@ -1449,6 +1507,14 @@ An dieser Adresse empfangen An diese Adresse versandt + + Berechtigung für das Kopieren der Wallet-Adresse in die Zwischenablage erteilen + + Wallet-Adressen kopieren + + Wallet-Adressen in die Zwischenablage kopieren? + + Kopieren Deaktiviert bis: %1$s @@ -1489,14 +1555,6 @@ Fehler bei der PIN-Aktualisierung PIN aktualisieren - - Wallet-Adressen in die Zwischenablage kopieren? - - Berechtigung für das Kopieren der Wallet-Adresse in die Zwischenablage erteilen - - Wallet-Adressen kopieren - - Kopieren Bitte geben Sie Ihren PIN ein, um diese Transaktion zu genehmigen. @@ -1541,14 +1599,6 @@ Breadwallet heißt jetzt BRD und hat ein brandneues Erscheinungsbild sowie einige neue Funktionen.\n\nWenn Sie Hilfe benötigen, halten Sie Ausschau nach dem (?), das auf den meisten Bildschirm oben rechts zu finden ist. Willkommen bei BRD! - - Bleiben Sie mit Ihrem bevorzugten Krypto-Asset auf dem Laufenden - - Bleiben Sie mit Ihren bevorzugten Krypto-Assets auf dem Laufenden - - Asset-Liste - - Anlagegut System Auto Hell / Dunkel @@ -1583,6 +1633,14 @@ Weiß Gelb + + Bleiben Sie mit Ihrem bevorzugten Krypto-Asset auf dem Laufenden + + Bleiben Sie mit Ihren bevorzugten Krypto-Assets auf dem Laufenden + + Asset-Liste + + Anlagegut Themenhintergrundfarben diff --git a/brd-android/app-core/src/main/res/values-es/strings.xml b/brd-android/app-core/src/main/res/values-es/strings.xml index 859991d2f..887d8b31c 100644 --- a/brd-android/app-core/src/main/res/values-es/strings.xml +++ b/brd-android/app-core/src/main/res/values-es/strings.xml @@ -86,10 +86,10 @@ ¡El dinero se ha enviado! Huella digital reconocida - - Activa los permisos de almacenamiento en los ajustes de tu dispositivo: \"Ajustes\" > \"Aplicaciones\" > \"BRD\" > \"Permisos\". Puedes acceder a cualquier BCH en tu monedero a través de la pantalla de inicio. + + Activa los permisos de almacenamiento en los ajustes de tu dispositivo: \"Ajustes\" > \"Aplicaciones\" > \"BRD\" > \"Permisos\". BRD no funcionará correctamente a menos que las aplicaciones que alteran la pantalla (como Twilight) estén desactivadas. @@ -134,6 +134,8 @@ Autenticado con éxito Solicitud de autenticación de BitID + + Inicio Comprar @@ -148,8 +150,6 @@ Descartar Listo - - Inicio Ignorar @@ -213,6 +213,14 @@ Verifica que el llavero de iCloud esté encendido Entiendo que esta función no funcionará a menos que iCloud Keychain esté habilitado. Tu copia de seguridad de iCloud se borrará después de %1$@ más intentos de PIN incorrectos. + Monto de la billetera de papel + Validar esta billetera de papel en la red puede demorar hasta 60 minutos + + Las palabras ingresadas no coinciden con su frase de recuperación. Inténtalo de nuevo. + + Para asegurarse de que todo se haya escrito correctamente, ingrese las siguientes palabras de su frase de recuperación. + + Palabra #%1$s Cantidad a enviar: Etiqueta de destino @@ -233,14 +241,6 @@ Para Costo total: - Monto de la billetera de papel - Validar esta billetera de papel en la red puede demorar hasta 60 minutos - - Las palabras ingresadas no coinciden con su frase de recuperación. Inténtalo de nuevo. - - Para asegurarse de que todo se haya escrito correctamente, ingrese las siguientes palabras de su frase de recuperación. - - Palabra #%1$s Elija monto ($ USD) Crear Monto personalizado ($ 500 máximo) @@ -270,14 +270,14 @@ Tasa de cambio Monedero bloqueado - - %1$s Address Solicitar %1$s información de la cuenta Solicitar %1$s llamada de contrato inteligente Solicitar %1$s pago + + %1$s Address Este dispositivo no está configurado para enviar correo electrónico mediante una aplicación de iOS @@ -290,10 +290,8 @@ Mensajería no disponible No se reconoce la huella digital. Por favor, inténtalo de nuevo. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ activos totales Comercio - - Averiguando el saldo de la clave privada... - - ¿Quieres enviar %1$s desde esta clave privada a tu monedero? La red bitcoin recibirá una comisión de %2$s. Esta clave privada ya está en tu cartera. @@ -546,6 +599,12 @@ Clave privada no válida Error al firmar la transacción + + La clave privada se ha canjeado exitosamente. + + Averiguando el saldo de la clave privada... + + ¿Quieres enviar %1$s desde esta clave privada a tu monedero? La red bitcoin recibirá una comisión de %2$s. Canjear @@ -564,8 +623,6 @@ Escanear clave privada Éxito - - La clave privada se ha canjeado exitosamente. Canjear clave privada @@ -739,10 +796,10 @@ Es necesario que el dispositivo cuente con un bloqueo de pantalla para proteger tu monedero electrónico. Ve a «Ajustes», selecciona «Seguridad» y habilita la opción de «Bloqueo de pantalla» para continuar. El bloqueo de pantalla no está habilitado - - Su frase de recuperación debe guardarse en caso de que pierda o cambie su teléfono. Configure su frase de recuperación en caso de que alguna vez pierda o reemplace su teléfono. Su clave también es necesaria si cambia la configuración de seguridad de su teléfono. + + Su frase de recuperación debe guardarse en caso de que pierda o cambie su teléfono. Acción obligatoria No preguntes de nuevo @@ -778,10 +835,10 @@ Notificaciones deshabilitadas Active las notificaciones para recibir ofertas especiales y actualizaciones de BRD. - - Está recibiendo ofertas especiales y actualizaciones de BRD. Parece que las notificaciones están desactivadas. Por favor, vaya a Ajustes para activar las notificaciones de BRD. + + Está recibiendo ofertas especiales y actualizaciones de BRD. Recibir notificaciones automáticas @@ -800,6 +857,28 @@ Califique BRD Califique BRD + + Sincronizar + + No podrás enviar dinero durante la sincronización. + + ¿Quieres sincronizar con la cadena de bloques? + + 20-45 minutos + + Si una transacción se muestra como completada en la red de bitcoin pero no en BRD. + + Obtienes un error repetidamente que dice que tu transacción ha sido rechazada. + + Iniciar sincronización + + No podrás enviar dinero mientras se realiza la sincronización con la cadena de bloques. + + Sincronizar cadena de bloques + + Hora prevista + + ¿Cuándo sincronizar? Copiado en el portapapeles. @@ -912,28 +991,6 @@ Ingresa primero una cantidad. Solicitar una cantidad - - Sincronizar - - No podrás enviar dinero durante la sincronización. - - ¿Quieres sincronizar con la cadena de bloques? - - 20-45 minutos - - Si una transacción se muestra como completada en la red de bitcoin pero no en BRD. - - Obtienes un error repetidamente que dice que tu transacción ha sido rechazada. - - Iniciar sincronización - - No podrás enviar dinero mientras se realiza la sincronización con la cadena de bloques. - - Sincronizar cadena de bloques - - Hora prevista - - ¿Cuándo sincronizar? Descubra cómo puede ahorrar en comisiones de negociación y desbloquear futuras recompensas @@ -977,19 +1034,24 @@ Touch ID Autenticación por huellas digitales + + Habilitar SegWit es una característica irreversible. ¿Estás seguro de que quieres continuar? ¡Has habilitado SegWit! Gracias por ayudar a que las bitcoins avancen. El soporte de SegWit sigue siendo una característica beta.\nUna vez que SegWit esté habilitado, no será posible\ndesactivarlo. Encontrarás la dirección heredada en los Ajustes.\nPuede que algunos servicios de terceros, incluido el comercio de cifrado, no estén disponibles para los usuarios que hayan habilitado SegWit. En caso de emergencia podrás generar una dirección heredada desde Preferencias > Ajustes de Bitcoin.\nSegWit se habilitará automáticamente para todos los\nusuarios en una actualización futura. - - Habilitar SegWit es una característica irreversible. ¿Estás seguro de que quieres continuar? Habilitar A la luna - FIO + + Las direcciones Bitcoin están diseñadas para un solo uso. + + La reutilización reduce la privacidad tanto para ti como para el destinatario y puede resultar en pérdida si el destinatario no controla la dirección directamente. + + Ya se ha utilizado la dirección Cantidad @@ -1000,10 +1062,10 @@ Para permitir el acceso a la cámara, ve a «Ajustes», selecciona «Aplicaciones», busca la aplicación «BRD» y selecciona la opción «Permisos» BRD no tiene permitido el acceso a la cámara - - Ve a Ajustes para activar el acceso a la cámara. BRD no tiene permisos para acceder a la cámara + + Ve a Ajustes para activar el acceso a la cámara. El destino es tu propia dirección. No puedes hacerte un envío a ti mismo. @@ -1070,12 +1132,12 @@ No se pudo cargar la solicitud de pago Escanear - - Envío máximo: Enviar ¿Enviar la cantidad máxima? + + Envío máximo: Enviar @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Las direcciones Bitcoin están diseñadas para un solo uso. - - La reutilización reduce la privacidad tanto para ti como para el destinatario y puede resultar en pérdida si el destinatario no controla la dirección directamente. - - Ya se ha utilizado la dirección + FIO + + Habilitar Segwit + + Ver la dirección heredada de recepción + + Envía solo Bitcoins (BTC) a esta dirección. Cualquier otro activo que se envíe a esta dirección se perderá permanentemente. + + Recibir Bitcoin Acerca de nosotros @@ -1107,8 +1172,6 @@ Configuración de moneda Únete al acceso anticipado - - Habilitar Segwit ¿Te gusta BRD? @@ -1121,6 +1184,7 @@ Gestionar Notificaciones + Order History Otro @@ -1145,12 +1209,6 @@ Límite de gasto de Touch ID Límite de gasto de autorización de huella digital - - Ver la dirección heredada de recepción - - Envía solo Bitcoins (BTC) a esta dirección. Cualquier otro activo que se envíe a esta dirección se perderá permanentemente. - - Recibir Bitcoin Cartera @@ -1212,12 +1270,12 @@ Desapuntar Ingrese la dirección del validador + + Su frase de recuperación es la única manera de restaurar su BRD si su teléfono se pierde, es robado, roto o actualizado. \n\nSu frase de recuperación también es necesaria si cambia la configuración de seguridad en su dispositivo. \n\nLe mostraremos una lista de palabras para escribir en una hoja de papel y mantenerlas a salvo. Escriba la frase de recuperación de nuevo Su frase de recuperación es la única manera de restaurar su BRD si su teléfono se pierde, es robado, roto o actualizado. \n\nLe mostraremos una lista de palabras para escribir en una hoja de papel y mantenerlas a salvo. - - Su frase de recuperación es la única manera de restaurar su BRD si su teléfono se pierde, es robado, roto o actualizado. \n\nSu frase de recuperación también es necesaria si cambia la configuración de seguridad en su dispositivo. \n\nLe mostraremos una lista de palabras para escribir en una hoja de papel y mantenerlas a salvo. Escriba la frase de recuperación @@ -1339,9 +1397,9 @@ apostar a %1$s Saldo inicial: %1$s + a %1$s Comisión por transferencia de token: %1$s - a %1$s Esperando confirmación. Algunos comerciantes requieren confirmación para completar una transacción. Tiempo estimado: 1-2 horas. @@ -1449,6 +1507,14 @@ Recibido en esta dirección Enviado a esta dirección + + Autoriza para copiar la dirección de la cartera al portapapeles + + Copiar direcciones de la cartera + + ¿Quieres copiar las direcciones de la cartera al portapapeles? + + Copiar Desactivado hasta: %1$s @@ -1489,14 +1555,6 @@ Error al actualizar el PIN Actualizar PIN - - ¿Quieres copiar las direcciones de la cartera al portapapeles? - - Autoriza para copiar la dirección de la cartera al portapapeles - - Copiar direcciones de la cartera - - Copiar Introduce tu PIN para autorizar esta transacción. @@ -1541,14 +1599,6 @@ Breadwallet ha cambiado su nombre por el de BRD, con un nuevo aspecto y algunas características nuevas.\n\nSi necesitas ayuda, busca el (?) en la parte superior derecha de la mayoría de las pantallas. ¡Bienvenido a BRD! - - Manténgase actualizado con su activo criptográfico favorito - - Manténgase al día con sus criptoactivos favoritos - - Lista de activos - - Activo Sistema Auto Claro / Oscuro @@ -1583,6 +1633,14 @@ blanco Amarillo + + Manténgase actualizado con su activo criptográfico favorito + + Manténgase al día con sus criptoactivos favoritos + + Lista de activos + + Activo Colores de fondo del tema diff --git a/brd-android/app-core/src/main/res/values-fr/strings.xml b/brd-android/app-core/src/main/res/values-fr/strings.xml index 543f316da..6075b42be 100644 --- a/brd-android/app-core/src/main/res/values-fr/strings.xml +++ b/brd-android/app-core/src/main/res/values-fr/strings.xml @@ -86,10 +86,10 @@ Argent envoyé ! Empreinte digitale reconnue - - Veuillez activer les autorisations de stockage dans les paramètres de votre appareil : « Paramètres » > « Applications » > « BRD » > « Autorisations ». Vous pouvez consulter le montant de BCH de votre portefeuille via l\'écran d\'accueil. + + Veuillez activer les autorisations de stockage dans les paramètres de votre appareil : « Paramètres » > « Applications » > « BRD » > « Autorisations ». BRD ne fonctionnera pas correctement à moins que les applications modifiant l\'écran (telles que Twilight) ne soient désactivées. @@ -134,6 +134,8 @@ Authentification réussie Demande d\'authentification BitID + + Accueil Acheter @@ -148,8 +150,6 @@ Ignorer Terminé - - Accueil Rejeter @@ -213,6 +213,14 @@ Vérifiez que le porte-clés iCloud est activé Je comprends que cette fonctionnalité ne fonctionnera pas si le porte-clés iCloud n\'est pas activé. Votre sauvegarde iCloud sera effacée après %1$@ autres tentatives de code PIN incorrectes. + Montant du portefeuille papier + La validation de ce portefeuille papier sur le réseau peut prendre jusqu\'à 60 minutes + + Les mots saisis ne correspondent pas à votre phrase de récupération. Veuillez réessayer. + + Pour vous assurer que tout a été écrit correctement, veuillez saisir les mots suivants de votre phrase de récupération. + + Mot no.%1$s Montant à envoyer : Balise de destination @@ -233,14 +241,6 @@ À Coût total : - Montant du portefeuille papier - La validation de ce portefeuille papier sur le réseau peut prendre jusqu\'à 60 minutes - - Les mots saisis ne correspondent pas à votre phrase de récupération. Veuillez réessayer. - - Pour vous assurer que tout a été écrit correctement, veuillez saisir les mots suivants de votre phrase de récupération. - - Mot no.%1$s Choisissez le montant ($ USD) Créer Montant personnalisé (500 $ maximum) @@ -270,14 +270,14 @@ Taux de change Portefeuille désactivé - - %1$s Adresse Demande %1$s des informations de compte Demande %1$s d\'appel de contrat intelligent Demande %1$s de paiement + + %1$s Adresse Cet appareil n\'est pas configuré pour envoyer un e-mail avec l\'application e-mail pour iOS. @@ -290,10 +290,8 @@ Messagerie non disponible L\'empreinte digitale n\'a pas été reconnue. Veuillez réessayer. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ Capital total Échanger - - Vérification du solde des clés privées... - - Envoyer %1$s de cette clé privée dans votre portefeuille ? Le réseau bitcoin recevra des frais de %2$s. Cette clé privée est déjà dans votre portefeuille. @@ -546,6 +599,12 @@ Pas une clé privée valide Erreur lors de la signature de la transaction + + Portefeuille importé avec succès. + + Vérification du solde des clés privées... + + Envoyer %1$s de cette clé privée dans votre portefeuille ? Le réseau bitcoin recevra des frais de %2$s. Importer @@ -564,8 +623,6 @@ Scanner la clé privée Succès - - Portefeuille importé avec succès. Importer un portefeuille @@ -739,10 +796,10 @@ Il est nécessaire de configurer un verrouillage d\'écran pour protéger votre portefeuille. Allez dans « Paramètres » > « Sécurité » > « Verrouillage d\'écran », puis activez-le pour continuer. Verrouillage d\'écran désactivé - - Votre phrase de récupération doit être enregistrée au cas où vous perdriez ou changeriez votre téléphone. Configurez votre phrase de récupération au cas où vous perdriez ou remplaceriez votre téléphone. Votre clé est également requise si vous modifiez les paramètres de sécurité de votre téléphone. + + Votre phrase de récupération doit être enregistrée au cas où vous perdriez ou changeriez votre téléphone. Une action est requise Ne plus demander @@ -778,10 +835,10 @@ Notifications désactivées Activez les notifications pour recevoir des offres spéciales et des mises à jour de la part de BRD. - - Vous recevez des offres spéciales et des mises à jour de la part de BRD. Il semblerait que les notifications sont désactivées. Aller dans les paramètres pour activer les notifications de BRD. + + Vous recevez des offres spéciales et des mises à jour de la part de BRD. Recevez des notifications push @@ -800,6 +857,28 @@ Evaluez BRD Evaluez BRD + + Synchroniser + + Vous ne pourrez pas envoyer d\'argent lors de la synchronisation. + + Synchroniser avec la blockchain ? + + 20-45 minutes + + Si une transaction apparaît comme achevée sur le réseau de bitcoin mais pas dans votre BRD. + + Vous recevez de manière répétée un message d\'erreur vous informant du rejet de votre transaction. + + Démarrer la synchronisation + + Vous ne pourrez pas envoyer d\'argent lors de la synchronisation avec la blockchain. + + Synchroniser avec la blockchain + + Temps estimé + + Quand synchroniser ? Copié dans le presse-papier. @@ -912,28 +991,6 @@ Veuillez d\'abord entrer un montant. Demander un montant - - Synchroniser - - Vous ne pourrez pas envoyer d\'argent lors de la synchronisation. - - Synchroniser avec la blockchain ? - - 20-45 minutes - - Si une transaction apparaît comme achevée sur le réseau de bitcoin mais pas dans votre BRD. - - Vous recevez de manière répétée un message d\'erreur vous informant du rejet de votre transaction. - - Démarrer la synchronisation - - Vous ne pourrez pas envoyer d\'argent lors de la synchronisation avec la blockchain. - - Synchroniser avec la blockchain - - Temps estimé - - Quand synchroniser ? Apprenez comment économiser sur les frais et débloquer des récompenses à venir. @@ -977,19 +1034,24 @@ Touch ID Identification par empreinte digitale + + L\'activation de SegWit est une fonctionnalité irréversible. Êtes-vous sûr(e) de vouloir continuer ? Vous avez activé SegWit ! Merci de nous aider à faire progresser le bitcoin. La prise en charge de SegWit est toujours une fonctionnalité bêta.\nUne fois que SegWit est activé, il ne sera plus possible de le désactiver. Vous trouverez l\'adresse du patrimoine sous Paramètres. \nCertains services tiers, y compris l\'échange de cryptomonnaies, peuvent ne pas être disponibles pour les utilisateurs qui ont activé SegWit. En cas d\'urgence, vous pourrez créer une adresse de patrimoine depuis Préférences > Bitcoin > Paramètres . \nSegWit sera automatiquement activé pour tous les utilisateurs lors d\'une future mise à jour. - - L\'activation de SegWit est une fonctionnalité irréversible. Êtes-vous sûr(e) de vouloir continuer ? Activer Vers la Lune - FIO + + Les adresses Bitcoin sont destinées à une utilisation unique. + + La réutilisation réduit la confidentialité pour vous et le destinataire et peut entraîner une perte si le destinataire ne contrôle pas directement l\'adresse. + + Adresse déjà utilisée Montant @@ -1000,10 +1062,10 @@ Autoriser l\'accès à l\'appareil photo en allant dans « Paramètres » > « Apps » > « BRD » > « Permissions » BRD n\'est pas autorisé à accéder à l\'appareil photo - - Allez dans Paramètres pour autoriser l\'accès à la caméra. BRD n\'est pas autorisé à accéder à la caméra + + Allez dans Paramètres pour autoriser l\'accès à la caméra. La destination est votre propre adresse. Vous ne pouvez pas envoyer à vous même. @@ -1070,12 +1132,12 @@ Impossible de charger la demande de paiement Scanner - - Envoi maximum: Envoyer Envoyer le montant maximum? + + Envoi maximum: Envoyer @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Les adresses Bitcoin sont destinées à une utilisation unique. - - La réutilisation réduit la confidentialité pour vous et le destinataire et peut entraîner une perte si le destinataire ne contrôle pas directement l\'adresse. - - Adresse déjà utilisée + FIO + + Activer Segwit + + Voir l\'adresse de réception du patrimoine + + N\'envoyez de bitcoins (BTC) qu\'à cette adresse. Tout autre actif envoyé à cette adresse sera définitivement perdu. + + Recevoir des bitcoins À propos de @@ -1107,8 +1172,6 @@ Paramètres de devises Rejoignez l\'accès anticipé - - Activer Segwit Vous aimez BRD ? @@ -1121,6 +1184,7 @@ Gérer Notifications + Order History Autre @@ -1145,12 +1209,6 @@ Limite de dépenses avec le Touch ID Limite de dépenses par identification avec empreinte digitale - - Voir l\'adresse de réception du patrimoine - - N\'envoyez de bitcoins (BTC) qu\'à cette adresse. Tout autre actif envoyé à cette adresse sera définitivement perdu. - - Recevoir des bitcoins Portefeuille @@ -1212,12 +1270,12 @@ Annuler le pari Entrez l\'adresse du validateur + + Votre phrase de récupération est le seul moyen de restaurer votre BRD si votre téléphone est perdu, volé, cassé ou mis à niveau. \n\nVotre phrase de récupération est également requise si vous modifiez les paramètres de sécurité de votre appareil. \n\nNous allons vous montrer une liste de mots à écrire sur un morceau de papier et à garder en sécurité. Notez à nouveau la phrase de récupération Votre phrase de récupération est le seul moyen de restaurer votre BRD si votre téléphone est perdu, volé, cassé ou mis à niveau. \n\nNous allons vous montrer une liste de mots à écrire sur un morceau de papier et à garder en sécurité. - - Votre phrase de récupération est le seul moyen de restaurer votre BRD si votre téléphone est perdu, volé, cassé ou mis à niveau. \n\nVotre phrase de récupération est également requise si vous modifiez les paramètres de sécurité de votre appareil. \n\nNous allons vous montrer une liste de mots à écrire sur un morceau de papier et à garder en sécurité. Notez la phrase de récupération @@ -1339,9 +1397,9 @@ jalonnement sur %1$s Solde initial : %1$s + à %1$s Frais de transfert du jeton : %1$s - à %1$s En attente d\'être confirmé. Certains marchands exigent une confirmation pour mener à bien une transaction. Temps estimé : 1-2 heures. @@ -1449,6 +1507,14 @@ Reçu à cette adresse Envoyé à cette adresse + + Autoriser à copier l\'adresse du portefeuille dans le presse-papiers + + Copier les adresses du portefeuille + + Copier les adresses du portefeuille dans le presse-papiers ? + + Copier Désactivé jusqu\'à : %1$s @@ -1489,14 +1555,6 @@ Erreur de mise à jour du code PIN Mettre à jour le code PIN - - Copier les adresses du portefeuille dans le presse-papiers ? - - Autoriser à copier l\'adresse du portefeuille dans le presse-papiers - - Copier les adresses du portefeuille - - Copier Veuillez entrer votre PIN pour autoriser cette transaction. @@ -1541,14 +1599,6 @@ Breadwallet revient sous le nom de BRD, avec un nouveau design et de nouvelles fonctionnalités. \n\nSi vous avez besoin d\'aide, cliquez sur le (?) en haut à droite de la plupart des écrans. Bienvenue chez BRD! - - Restez à jour avec votre actif cryptographique préféré - - Restez à jour avec vos actifs cryptographiques préférés - - Liste des actifs - - Actif Système Auto Light / Dark @@ -1583,6 +1633,14 @@ blanc Jaune + + Restez à jour avec votre actif cryptographique préféré + + Restez à jour avec vos actifs cryptographiques préférés + + Liste des actifs + + Actif Couleurs d\'arrière-plan du thème diff --git a/brd-android/app-core/src/main/res/values-it/strings.xml b/brd-android/app-core/src/main/res/values-it/strings.xml index 103b4d794..1b4fae960 100644 --- a/brd-android/app-core/src/main/res/values-it/strings.xml +++ b/brd-android/app-core/src/main/res/values-it/strings.xml @@ -86,10 +86,10 @@ Denaro Inviato! Impronta digitale riconosciuta - - Abilita le autorizzazioni per l\'archiviazione nelle impostazioni del dispositivo: \"Impostazioni\"> \"App\"> \"BRD\"> \"Autorizzazioni\". Puoi accedere a qualsiasi BCH nel tuo wallet dalla schermata Home. + + Abilita le autorizzazioni per l\'archiviazione nelle impostazioni del dispositivo: \"Impostazioni\"> \"App\"> \"BRD\"> \"Autorizzazioni\". BRD non funzionerà correttamente a meno che le app che alterano lo schermo (come Twilight) siano disabilitate. @@ -134,6 +134,8 @@ Autenticato con successo Richiesta autenticazione BitID + + Home Acquistare @@ -148,8 +150,6 @@ Ignora Completato - - Home Ignora @@ -213,6 +213,14 @@ Verifica che il portachiavi iCloud sia ATTIVO Capisco che questa funzione non funzionerà se il portachiavi iCloud non è abilitato. Il backup di iCloud verrà cancellato dopo altri %1$@ tentativi di PIN errati. + Importo del portafoglio di carta + La convalida di questo paper wallet sulla rete può richiedere fino a 60 minuti + + Le parole inserite non corrispondono alla frase di recupero. Per favore riprova. + + Per assicurarti che tutto sia stato scritto correttamente, inserisci le seguenti parole dalla frase di recupero. + + Parola n°%1$s Somma da inviare: Tag di destinazione @@ -233,14 +241,6 @@ A Costo totale: - Importo del portafoglio di carta - La convalida di questo paper wallet sulla rete può richiedere fino a 60 minuti - - Le parole inserite non corrispondono alla frase di recupero. Per favore riprova. - - Per assicurarti che tutto sia stato scritto correttamente, inserisci le seguenti parole dalla frase di recupero. - - Parola n°%1$s Scegli l\'importo ($ USD) Creare Importo personalizzato (massimo $ 500) @@ -270,14 +270,14 @@ Tasso di Cambio Wallet disabilitato - - %1$s Indirizzo Richiedi informazioni per l\'account %1$s Richiedi funzione di call per il contratto intelligente %1$s Richiedi pagamento %1$s + + %1$s Indirizzo Questo dispositivo non è configurato per inviare e-mail con l\'app Mail di iOS. @@ -290,10 +290,8 @@ Messaggistica Non Disponibile Impronta non riconosciuta. Per favore, prova di nuovo. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ tutti gli asset Scambio - - Verifica del saldo della chiave privata... - - Inviare %1$s da questa chiave privata al tuo portafoglio? La rete bitcoin riceverà una commissione di %2$s. Questa chiave privata è già nel tuo portafoglio. @@ -546,6 +599,12 @@ La chiave privata non è valida Errore nella firma della transazione + + Portafoglio importato con successo + + Verifica del saldo della chiave privata... + + Inviare %1$s da questa chiave privata al tuo portafoglio? La rete bitcoin riceverà una commissione di %2$s. Riscatta @@ -564,8 +623,6 @@ Acquisisci Chiave Privata Completato - - Portafoglio importato con successo Importa portafoglio @@ -739,10 +796,10 @@ È necessaria una schermata di blocco del dispositivo per proteggere il tuo portafoglio. Vai su “Impostazioni” > “Sicurezza” > “Schermata di Blocco” e abilitala per continuare. Schermata di blocco disabilitata - - La frase di recupero deve essere salvata in caso di smarrimento o cambio di telefono. Imposta la tua frase di recupero in caso di smarrimento o sostituzione del telefono. La tua chiave è richiesta anche se modifichi le impostazioni di sicurezza del telefono. + + La frase di recupero deve essere salvata in caso di smarrimento o cambio di telefono. Azione necessaria Non chiedere più @@ -778,10 +835,10 @@ Notifiche Disabilitate Attiva le notifiche per ricevere offerte speciali e aggiornamenti da BRD. - - Stai ricevendo offerte speciali e aggiornamenti da BRD. Sembra che le notifiche siano disattivate. Accedi alle Impostazioni per abilitare le notifiche da BRD. + + Stai ricevendo offerte speciali e aggiornamenti da BRD. Ricevi notifiche push @@ -800,6 +857,28 @@ Valutare BRD Valutare BRD + + Sincronizza + + Non potrai inviare denaro durante la sincronizzazione. + + Sincronizza con la Blockchain? + + 20-45 minuti + + Se una transazione figura come completata sulla rete, ma non sul tuo BRD. + + Hai ricevuto ripetutamente un errore che dice che la transazione è stata rifiutata. + + Avvia Sincronizzazione + + Non potrai inviare denaro durante la sincronizzazione con la blockchain. + + Sincronizza Blockchain + + Tempo stimato + + Quando Sincronizzare? Copiato negli appunti. @@ -912,28 +991,6 @@ Per favore inserisci prima una somma. Richiedi un Importo - - Sincronizza - - Non potrai inviare denaro durante la sincronizzazione. - - Sincronizza con la Blockchain? - - 20-45 minuti - - Se una transazione figura come completata sulla rete, ma non sul tuo BRD. - - Hai ricevuto ripetutamente un errore che dice che la transazione è stata rifiutata. - - Avvia Sincronizzazione - - Non potrai inviare denaro durante la sincronizzazione con la blockchain. - - Sincronizza Blockchain - - Tempo stimato - - Quando Sincronizzare? Impara come puoi risparmiare sulle tue commissioni di trading e sbloccare futuri benefici. @@ -977,19 +1034,24 @@ Touch ID Autenticazione Impronta Digitale + + L\'abilitazione di SegWit è una funzionalità irreversibile. Sei sicuro di voler continuare? Hai abilitato SegWit! Grazie per aver contribuito alla progressione dei bitcoin. Il supporto di SegWit è ancora un elemento in beta. Una volta che SegWit verrà abilitato, non sarà più possibile disabilitarlo. Troverai l\'indirizzo del patrimonio nelle Impostazioni. \nAlcuni servizi di terze parti, commercio crittografico incluso, possono risultare indisponibili agli utenti che hanno abilitato SegWit. In caso di emergenza, sarai in grado di generare un indirizzo per il patrimonio da Preferenze > Impostazioni Bitcoin. \nSegWit verrà abilitato automaticamente per tutti gli utenti in un futuro aggiornamento. - - L\'abilitazione di SegWit è una funzionalità irreversibile. Sei sicuro di voler continuare? Abilita Sulla Luna - FIO + + Gli indirizzi Bitcoin dovrebbero essere utilizzati una sola volta. + + Il riutilizzo riduce la privacy sia tua che del destinatario e può causare perdite se il destinatario non controlla direttamente l\'indirizzo. + + Indirizzo Già Utilizzato Importo @@ -1000,10 +1062,10 @@ Consenti l’accesso alla fotocamera in “Impostazioni” > “Apps” > “BRD” > “Permessi” BRD non è autorizzato ad accedere alla fotocamera - - Vai su Impostazioni per consentire l\'accesso alla fotocamera. BRD non è autorizzato ad accedere alla fotocamera + + Vai su Impostazioni per consentire l\'accesso alla fotocamera. La destinazione corrisponde al tuo indirizzo. Non puoi inviare a te stesso. @@ -1070,12 +1132,12 @@ Non è stato possibile caricare la richiesta Acquisisci - - Invio Max: Invia Inviare importo massimo? + + Invio Max: Invia @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Gli indirizzi Bitcoin dovrebbero essere utilizzati una sola volta. - - Il riutilizzo riduce la privacy sia tua che del destinatario e può causare perdite se il destinatario non controlla direttamente l\'indirizzo. - - Indirizzo Già Utilizzato + FIO + + Abilita SegWit + + Visualizza l\'Indirizzo di Ricezione del Patrimonio + + Invia i Bitcoin (BTC) solamente a questo indirizzo. Qualsiasi altra risorsa inviata a questo indirizzo verrà persa per sempre. + + Ricevi Bitcoin Chi siamo @@ -1107,8 +1172,6 @@ Impostazioni valuta Iscriviti all\'Accesso Anticipato - - Abilita SegWit Ti piace BRD? @@ -1121,6 +1184,7 @@ Gestisci Notifiche + Order History Altro @@ -1145,12 +1209,6 @@ Limite di Spesa Touch ID Autenticazione Impronta per il Limite di Spesa - - Visualizza l\'Indirizzo di Ricezione del Patrimonio - - Invia i Bitcoin (BTC) solamente a questo indirizzo. Qualsiasi altra risorsa inviata a questo indirizzo verrà persa per sempre. - - Ricevi Bitcoin Portafoglio @@ -1212,12 +1270,12 @@ Non prendere Immettere l\'indirizzo del validatore + + La tua frase di recupero è l\'unico modo per ripristinare il tuo BRD se il tuo telefono viene smarrito, rubato, rotto o aggiornato. \n\nLa tua frase di recupero è richiesta anche se modifichi le impostazioni di sicurezza sul tuo dispositivo. \n\nTi mostreremo un elenco di parole da scrivere su un pezzo di carta e da tenere al sicuro. Scrivi di nuovo la frase di recupero La tua frase di recupero è l\'unico modo per ripristinare il tuo BRD se il tuo telefono viene smarrito, rubato, rotto o aggiornato. \n\nTi mostreremo un elenco di parole da scrivere su un pezzo di carta e da tenere al sicuro. - - La tua frase di recupero è l\'unico modo per ripristinare il tuo BRD se il tuo telefono viene smarrito, rubato, rotto o aggiornato. \n\nLa tua frase di recupero è richiesta anche se modifichi le impostazioni di sicurezza sul tuo dispositivo. \n\nTi mostreremo un elenco di parole da scrivere su un pezzo di carta e da tenere al sicuro. Annotare la frase di recupero @@ -1339,9 +1397,9 @@ puntando a %1$s Saldo iniziale: %1$s + a %1$s Commissione per il trasferimento del gettone: %1$s - a %1$s In attesa di conferma. Alcuni commercianti richiedono la conferma per completare una transazione. Tempo stimato: 1-2 ore. @@ -1449,6 +1507,14 @@ Ricevuta a questo indirizzo Inviata a questo indirizzo + + Autorizza a copiare l\'indirizzo del portafoglio negli appunti + + Copia Indirizzi Portafoglio + + Copiare gli indirizzi del portafoglio negli appunti? + + Copia Disabilitato fino al: %1$s @@ -1489,14 +1555,6 @@ Errore Aggiornamento PIN Aggiorna PIN - - Copiare gli indirizzi del portafoglio negli appunti? - - Autorizza a copiare l\'indirizzo del portafoglio negli appunti - - Copia Indirizzi Portafoglio - - Copia Per favore inserisci il tuo PIN per autorizzare questa transazione. @@ -1541,14 +1599,6 @@ Breadwallet ha cambiato il suo nome in BRD e ha un look nuovissimo nonché alcune nuove funzionalità.\n\nSe hai bisogno di aiuto, cerca il (?) a destra in alto sulla maggior parte delle schermate. Ti diamo il benvenuto su BRD! - - Rimani aggiornato con la tua risorsa crittografica preferita - - Rimani aggiornato con le tue risorse crittografiche preferite - - Elenco delle risorse - - Risorsa Sistema Auto Chiaro / Scuro @@ -1583,6 +1633,14 @@ bianca Giallo + + Rimani aggiornato con la tua risorsa crittografica preferita + + Rimani aggiornato con le tue risorse crittografiche preferite + + Elenco delle risorse + + Risorsa Colori di sfondo del tema diff --git a/brd-android/app-core/src/main/res/values-ja/strings.xml b/brd-android/app-core/src/main/res/values-ja/strings.xml index 471df8bfe..d0ba2665b 100644 --- a/brd-android/app-core/src/main/res/values-ja/strings.xml +++ b/brd-android/app-core/src/main/res/values-ja/strings.xml @@ -86,10 +86,10 @@ 送金しました! 指紋が認識されました - - お使いのデバイスの設定でストレージの使用を許可して下さい: 「設定」>「アプリ」>「BRD」>「許可」。 お使いのウォレットのBCHには、ホーム画面からアクセスすることができます。 + + お使いのデバイスの設定でストレージの使用を許可して下さい: 「設定」>「アプリ」>「BRD」>「許可」。 画面変更アプリ(例: Twilight) が無効になっていなければ、BRDは正常に動作しません。 @@ -134,6 +134,8 @@ 認証成功 BitID認証リクエスト + + ホーム 購入する @@ -148,8 +150,6 @@ 却下する 終了 - - ホーム 無視する @@ -213,6 +213,14 @@ iCloudキーチェーンがオンになっていることを確認する この機能はiCloudキーチェーンが有効になっていないと機能しないことを理解しています。 あなたのiCloudバックアップは、あと%1$@回の間違ったPIN試行の後に消去されます。 + 紙の財布の金額 + ネットワーク上でこの紙のウォレットを検証するには、最大60分かかる場合があります + + 入力した単語は、回復フレーズと一致しません。もう一度お試しください。 + + すべてが正しく記述されていることを確認するには、回復フレーズから次の単語を入力してください。 + + フレーズ #%1$s 送る金額: 宛先タグ @@ -233,14 +241,6 @@ 送金先 費用合計: - 紙の財布の金額 - ネットワーク上でこの紙のウォレットを検証するには、最大60分かかる場合があります - - 入力した単語は、回復フレーズと一致しません。もう一度お試しください。 - - すべてが正しく記述されていることを確認するには、回復フレーズから次の単語を入力してください。 - - フレーズ #%1$s 金額を選択($ USD) 作成する カスタム金額(最大$ 500) @@ -270,14 +270,14 @@ 為替レート ウォレットが無効になっています - - %1$s住所 %1$s のアカウント情報をリクエスト %1$s のスマートコントラクトのコールをリクエスト %1$s のアカウント情報をリクエスト + + %1$s住所 この端末は、iOSのメールアプリを使用してメールを送信する設定がされていません。 @@ -290,10 +290,8 @@ メッセージの送受信ができません 指紋が認識されませんでした。もう一度やり直してください。 - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ 総資産 取引 - - 秘密鍵の残高確認中... - - この秘密鍵からウォレットに%1$sを送信しますか? ビットコインネットワークは手数料%2$sを頂戴します。 この秘密鍵はすでにあなたのウォレットに存在しています。 @@ -546,6 +599,12 @@ 有効な秘密鍵ではありません トランザクションへのサイン中にエラーが発生しました + + 正常に秘密鍵からの資金引き出しが行われました。 + + 秘密鍵の残高確認中... + + この秘密鍵からウォレットに%1$sを送信しますか? ビットコインネットワークは手数料%2$sを頂戴します。 取り出す @@ -564,8 +623,6 @@ 秘密鍵をスキャン 成功 - - 正常に秘密鍵からの資金引き出しが行われました。 秘密鍵からの引き出し @@ -739,10 +796,10 @@ ウォレットを守るため機器の画面をロックする必要があります。「設定」 > 「セキュリティ」 > 「画面ロック」で有効にしてから続行してください。 画面ロックが無効になっています - - 電話を紛失または変更した場合に備えて、回復フレーズを保存する必要があります。 スマートフォンを紛失または交換した場合に備えて、回復フレーズを設定します。スマートフォンのセキュリティ設定を変更する場合も、キーが必要です。 + + 電話を紛失または変更した場合に備えて、回復フレーズを保存する必要があります。 アクションが要求されました もう聞かないで @@ -778,10 +835,10 @@ 通知が無効になっています BRDから特別オファーやアップデートを受信するには、通知を有効にします。 - - BRDから特別オファーや最新情報を受信します。 通知がオフになっている可能性があります。[設定] に移動して、BRDからの通知を有効にしてください。 + + BRDから特別オファーや最新情報を受信します。 プッシュ通知を受信 @@ -800,6 +857,28 @@ BRDを評価する BRDを評価する + + 同期 + + 同期中は送金することができません。 + + ブロックチェーンの同期をしますか? + + 20〜45分 + + ビットコインネットワークでトランザクションが完了したと表示されているが、BRD上では完了と表示されない場合。 + + 送金しているが、拒否され続けている場合。 + + 同期を開始する + + ブロックチェーンの同期中は送金できません。 + + ブロックチェーン同期 + + 推定時間 + + いつ同期しますか? クリップボードにコピーされました。 @@ -912,28 +991,6 @@ はじめに金額を入力してください。 金額のリクエスト - - 同期 - - 同期中は送金することができません。 - - ブロックチェーンの同期をしますか? - - 20〜45分 - - ビットコインネットワークでトランザクションが完了したと表示されているが、BRD上では完了と表示されない場合。 - - 送金しているが、拒否され続けている場合。 - - 同期を開始する - - ブロックチェーンの同期中は送金できません。 - - ブロックチェーン同期 - - 推定時間 - - いつ同期しますか? 取引手数料を節約して今後のリワードをアンロックする方法を学びましょう。 @@ -977,19 +1034,24 @@ Touch ID 指紋認証 + + 「SegWitの有効化」は取り消しできない機能です。継続してよろしいですか? SegWitを有効化しました! Bitcoinの前進にご協力いただきありがとうございます。 SegWit対応はまだベータ版の機能です。\n一度SegWitが有効化されると取り消しはできません。設定画面の下でレガシーアドレスをご確認いただけます。\nSegWitを有効化したユーザーは,第三者のサービス(仮想通貨取引を含む)を利用できない場合があります。緊急の場合は,プリファレンス > Bitcoin設定から,レガシーアドレスを作成することができます。\n将来のアップデートでは,全ユーザーに対して自動的にSegWitが有効化されます。 - - 「SegWitの有効化」は取り消しできない機能です。継続してよろしいですか? 有効化する 月へ - FIO + + ビットコインアドレスは、個人利用のみを想定しています。 + + 再利用は、送金側と受取側の両方のプライバシーの侵害につながるおそれがあり、受取人がアドレスを直接管理しない場合、損害につながるおそれもあります。 + + アドレスはすでに使用されています 金額 @@ -1000,10 +1062,10 @@ 「設定」 > 「アプリ」 > 「ブレッド」 > 「許可」でカメラへのアクセスを許可してください ブレッドはカメラへのアクセスを許可されていません - - 設定画面へ移動し、カメラへのアクセス許可をしてください。 ブレッドはカメラへのアクセスが許可されていません + + 設定画面へ移動し、カメラへのアクセス許可をしてください。 送金先がご自身のアドレスになっています。自分宛てには送金できません。 @@ -1070,12 +1132,12 @@ 支払い要求がロードできませんでした スキャン - - 最大送信: 送金する 限度額を送金しますか? + + 最大送信: 送金 @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - ビットコインアドレスは、個人利用のみを想定しています。 - - 再利用は、送金側と受取側の両方のプライバシーの侵害につながるおそれがあり、受取人がアドレスを直接管理しない場合、損害につながるおそれもあります。 - - アドレスはすでに使用されています + FIO + + Segwitを有効にする + + 受取用レガシーアドレスを表示 + + このアドレスにはBitcoin(BTC)だけを送信してください。このアドレスに送信された他の資産は,いかなるものも永久に失われます。 + + Bitcoinを受け取りましょう 概要 @@ -1107,8 +1172,6 @@ 通貨設定 早期アクセスに参加 - - Segwitを有効にする ブレッドをお楽しみいただいていますか? @@ -1121,6 +1184,7 @@ 管理 通知 + Order History その他 @@ -1145,12 +1209,6 @@ Touch IDの利用限度額 指紋認証利用上限 - - 受取用レガシーアドレスを表示 - - このアドレスにはBitcoin(BTC)だけを送信してください。このアドレスに送信された他の資産は,いかなるものも永久に失われます。 - - Bitcoinを受け取りましょう ウォレット @@ -1212,12 +1270,12 @@ アンステーク バリデーターアドレスを入力してください + + スマートフォンが紛失、盗難、破損、またはアップグレードされた場合にリカバリフレーズを使用することで、BRDを復元できます。 \n\nデバイスのセキュリティ設定を変更する場合も、リカバリフレーズが必要です。 \n\n一枚の紙に書き留めて安全を保つための単語のリストをお見せします。 回復フレーズを書き留めます スマートフォンが紛失、盗難、破損、またはアップグレードされた場合にリカバリフレーズを使用することで、BRDを復元できます。 \n\n一枚の紙に書き留めて安全を保つための単語のリストをお見せします。 - - スマートフォンが紛失、盗難、破損、またはアップグレードされた場合にリカバリフレーズを使用することで、BRDを復元できます。 \n\nデバイスのセキュリティ設定を変更する場合も、リカバリフレーズが必要です。 \n\n一枚の紙に書き留めて安全を保つための単語のリストをお見せします。 回復フレーズを書き留めます @@ -1339,9 +1397,9 @@ %1$sへのステーキング 期首残高: %1$s + 〜 %1$s トークン送金の手数料: %1$s - 〜 %1$s 承認を待っています。トランザクションの完了には承認が必要となる場合があります。推定時間: 1-2時間。 @@ -1449,6 +1507,14 @@ このアドレスで受け取りました このアドレスに送金しました + + ウォレットアドレスのクリップボードへのコピーを認証 + + ウォレットアドレスをコピーします + + ウォレットアドレスをクリップボードにコピーしますか? + + コピー 以下まで無効: %1$s @@ -1489,14 +1555,6 @@ PINコード更新エラー PINコードを更新する - - ウォレットアドレスをクリップボードにコピーしますか? - - ウォレットアドレスのクリップボードへのコピーを認証 - - ウォレットアドレスをコピーします - - コピー このトランザクションを認証するためにはPINを入力してください。 @@ -1541,14 +1599,6 @@ Breadwalletは新しい機能や見た目を備えて、BRDという名前に生まれ変わりました。\n\nヘルプをご覧になるには、画面右上にある(?)からお探しください。 BRDへようこそ! - - お気に入りの暗号資産を最新の状態に保つ - - お気に入りの暗号資産を最新の状態に保つ - - 資産リスト - - 資産 システムオートライト/ダーク @@ -1583,6 +1633,14 @@ 白い + + お気に入りの暗号資産を最新の状態に保つ + + お気に入りの暗号資産を最新の状態に保つ + + 資産リスト + + 資産 テーマの背景色 diff --git a/brd-android/app-core/src/main/res/values-ko/strings.xml b/brd-android/app-core/src/main/res/values-ko/strings.xml index 3ce3117f3..81a53ec06 100644 --- a/brd-android/app-core/src/main/res/values-ko/strings.xml +++ b/brd-android/app-core/src/main/res/values-ko/strings.xml @@ -86,10 +86,10 @@ 돈을 보냈어요! 지문 인식됨 - - 단말의 \"설정\" > \"앱\" > \"BRD\" > \"권한\"에서 저장소 접근을 허용해 주세요. 홈 화면을 통해 월렛에 있는 모든 BCH에 액세스할 수 있습니다. + + 단말의 \"설정\" > \"앱\" > \"BRD\" > \"권한\"에서 저장소 접근을 허용해 주세요. BRD는 (Twilight과 같은) 화면 변경 앱을 비활성화하지 않으면 제대로 동작하지 않습니다. @@ -134,6 +134,8 @@ 성공적으로 인증됨 BitID 인증 요청 + + 구매하기 @@ -148,8 +150,6 @@ 해제 완료 - - 무시 @@ -213,6 +213,14 @@ iCloud 키 체인이 켜져 있는지 확인 iCloud 키 체인이 활성화되지 않으면이 기능이 작동하지 않음을 이해합니다. 잘못된 PIN 시도를 %1$@ 더 시도하면 iCloud 백업이 삭제됩니다. + 종이 지갑 금액 + 네트워크에서이 종이 지갑을 확인하는 데 최대 60 분이 걸릴 수 있습니다. + + 입력 한 단어가 복구 문구와 일치하지 않습니다. 다시 시도하십시오. + + 모든 것이 올바르게 기록되었는지 확인하려면 복구 문구에서 다음 단어를 입력하십시오. + + 단어 #%1$s 보낼 금액: 목적지 태그 @@ -233,14 +241,6 @@ 수취인 총 금액: - 종이 지갑 금액 - 네트워크에서이 종이 지갑을 확인하는 데 최대 60 분이 걸릴 수 있습니다. - - 입력 한 단어가 복구 문구와 일치하지 않습니다. 다시 시도하십시오. - - 모든 것이 올바르게 기록되었는지 확인하려면 복구 문구에서 다음 단어를 입력하십시오. - - 단어 #%1$s 금액 선택 ($ USD) 창조하다 맞춤 금액 (최대 $ 500) @@ -270,14 +270,14 @@ 환율 월렛이 비활성화됨 - - %1$s 주소 %1$s 계정 정보를 요청합니다 %1$s 스마트계약 콜을 요청합니다 %1$s 계정 정보를 요청합니다 + + %1$s 주소 이 장치는 iOS 메일 앱으로 이메일을 전송하도록 설정되지 않았습니다. @@ -290,10 +290,8 @@ 메시지 사용불가 지문 인식되지 않음. 다시 시도해 주세요. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ 총 자산 교환 - - 개인 열쇠 잔고 확인 중... - - 이 개인 열쇠로부터 귀하의 지갑으로 %1$s 를 보낼까요? 비트코인 네트워크가 %2$s의 수수료를 받게 됩니다. 이 개인 열쇠가 이미 귀하의 지갑에 있습니다. @@ -546,6 +599,12 @@ 유효하지 않은 개인 열쇠입니다 서명 거래 오류 + + 개인 키가 성공적으로 교환되었습니다. + + 개인 열쇠 잔고 확인 중... + + 이 개인 열쇠로부터 귀하의 지갑으로 %1$s 를 보낼까요? 비트코인 네트워크가 %2$s의 수수료를 받게 됩니다. 교환 @@ -564,8 +623,6 @@ 개인 열쇠 스캔 성공 - - 개인 키가 성공적으로 교환되었습니다. 개인 키 교환 @@ -739,10 +796,10 @@ 귀하의 지갑을 보호하시려면 장치 화면 잠금이 필요합니다. 계속하시려면 \"설정\" > \"보안\" > \"화면 잠금\"가셔서 켜 주세요. 화면 잠금 꺼짐 - - 휴대 전화를 분실하거나 변경하는 경우 복구 문구를 저장해야합니다. 전화기를 분실하거나 교체 할 경우를 대비하여 복구 문구를 설정하십시오. 휴대 전화의 보안 설정을 변경하는 경우에도 키가 필요합니다. + + 휴대 전화를 분실하거나 변경하는 경우 복구 문구를 저장해야합니다. 조치 필요함 다시 묻지마 @@ -778,10 +835,10 @@ 알림 비활성 알림을 켜서 BRD로터 특가 판매와 업데이트를 받으십시오. - - 귀하는 BRD로부터 특가 판매 및 업데이트를 받고 있습니다. 알림이 꺼진 것 같습니다. 설정으로 가서 BRD 알림 받기를 활성화하십시오. + + 귀하는 BRD로부터 특가 판매 및 업데이트를 받고 있습니다. 푸시 알림 받기 @@ -800,6 +857,28 @@ BRD 평가하기 BRD 평가하기 + + 동기화 + + 동기화 중에는 송금할 수 없습니다. + + 블록체인과 동기화하겠습니까? + + 20-45분 + + 거래가 비트코인 네트워크에는 완료된 것으로 표시되지만, 브레드에는 표시되지 않는 경우. + + 거래가 거절되었음을 알리는 오류 메시지가 반복적으로 나타납니다. + + 동기화 시작 + + 블록체인과 동기화하는 동안에는 송금할 수 없습니다. + + 블록체인 동기화 + + 예상 시간 + + 동기화는 언제 해야 합니까? 클립보드에 복사되었습니다. @@ -912,28 +991,6 @@ 먼저 금액을 입력해 주세요. 금액 요청 - - 동기화 - - 동기화 중에는 송금할 수 없습니다. - - 블록체인과 동기화하겠습니까? - - 20-45분 - - 거래가 비트코인 네트워크에는 완료된 것으로 표시되지만, 브레드에는 표시되지 않는 경우. - - 거래가 거절되었음을 알리는 오류 메시지가 반복적으로 나타납니다. - - 동기화 시작 - - 블록체인과 동기화하는 동안에는 송금할 수 없습니다. - - 블록체인 동기화 - - 예상 시간 - - 동기화는 언제 해야 합니까? 거래 수수료를 절약하고 미래의 보상을 얻을 수 있는 방법을 배우십시오. @@ -977,19 +1034,24 @@ 터치 ID 지문 본인확인 + + SegWit을 활성화는 취소할 수 없는 기능입니다. 계속하시겠습니까? SegWit을 활성화했습니다! Bitcoin 발전에 일조해 주셔서 감사합니다. SegWit 지원은 아직 베타 기능입니다.\nSegWit이 활성화되면 비활성화할 수\n없습니다. 유산 주소는 아래 설정에서 찾을 수 있습니다.\nSegWit를 활성화하면 암호화 거래 등 일부 제3자 서비스를 이용할 수 없을 수도 있습니다. 비상 시에는 선호도 > Bitcoin 설정에서 유산 주소를 생성할 수 있습니다.\nSegWit는 향후 업데이트 시 모든 사용자에게 \n자동으로 활성화됩니다. - - SegWit을 활성화는 취소할 수 없는 기능입니다. 계속하시겠습니까? 활성화 투 더 문 - FIO + + 비트코인 주소는 일회용입니다. + + 주소를 재사용할 경우 귀하와 받는 사람 모두의 개인 정보 보호가 약해지며, 받는 사람이 직접 주소를 관리하지 않을 경우 분실을 초래할 수 있습니다. + + 이미 사용중인 주소입니다 금액 @@ -1000,10 +1062,10 @@ \"설정\" > \"앱\" > \"BRD\" > \"허용\"에서 카메라 접속을 허용해 주세요 BRD의 카메라 접속이 허용되지 않았습니다 - - 설정에서 카메라 액세스를 허가해 주세요. 브레드는 카메라 액세스를 허용하지 않습니다. + + 설정에서 카메라 액세스를 허가해 주세요. 여러분의 주소를 입력해 주세요. 본인에게 전송할 수 없습니다. @@ -1070,12 +1132,12 @@ 결제 요청을 불러올 수 없었습니다 스캔 - - 최대 보내기 : 보내기 최고 한도 금액을 보내겠습니까? + + 최대 보내기 : 보내기 @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - 비트코인 주소는 일회용입니다. - - 주소를 재사용할 경우 귀하와 받는 사람 모두의 개인 정보 보호가 약해지며, 받는 사람이 직접 주소를 관리하지 않을 경우 분실을 초래할 수 있습니다. - - 이미 사용중인 주소입니다 + FIO + + Segwit 활성화 + + 유산 수령 주소 보기 + + 이 주소에는 Bitcoin(BTC)만 보낼 수 있습니다. 이 주소로 다른 자산을 보낼 경우 모두 영구 소실됩니다. + + Bitcoin 수령 관련 사항 @@ -1107,8 +1172,6 @@ 통화 설정 초기 버전을 사용해 보세요 - - Segwit 활성화 브레드를 사용하고 있으신가요? @@ -1121,6 +1184,7 @@ 관리 알림 + Order History 기타 @@ -1145,12 +1209,6 @@ Touch ID 지출 한도 지문 본인확인 사용 한계 - - 유산 수령 주소 보기 - - 이 주소에는 Bitcoin(BTC)만 보낼 수 있습니다. 이 주소로 다른 자산을 보낼 경우 모두 영구 소실됩니다. - - Bitcoin 수령 지갑 @@ -1212,12 +1270,12 @@ 언 스테이크 검증 인 주소 입력 + + 복구 문구는 휴대 전화가 분실, 도난, 파손 또는 업그레이드 된 경우 BRD를 복원하는 유일한 방법입니다. \n\n장치의 보안 설정을 변경하는 경우에도 복구 문구가 필요합니다. \n\n종이에 적어 안전하게 보관할 단어 목록을 보여드립니다. 복구 문구를 다시 기록 복구 문구는 휴대 전화가 분실, 도난, 파손 또는 업그레이드 된 경우 BRD를 복원하는 유일한 방법입니다. \n\n종이에 적어 안전하게 보관할 단어 목록을 보여드립니다. - - 복구 문구는 휴대 전화가 분실, 도난, 파손 또는 업그레이드 된 경우 BRD를 복원하는 유일한 방법입니다. \n\n장치의 보안 설정을 변경하는 경우에도 복구 문구가 필요합니다. \n\n종이에 적어 안전하게 보관할 단어 목록을 보여드립니다. 복구 문구 기록 @@ -1339,9 +1397,9 @@ %1$s 스테이 킹 기초 잔액: %1$s + %1$s 토큰 송금 수수료: %1$s - %1$s 확인 대기 중. 일부 판매자는 트랜잭션을 완료하기 위해 확인을 요구합니다. 예상 소요 시간: 1~2시간. @@ -1449,6 +1507,14 @@ 이 주소에서 받음 이 주소로 보냄 + + 월렛 주소를 클립 보드에 복사할 수 있는 권한을 부여 + + 월렛 주소 복사하기 + + 월렛 주소를 클립 보드에 복사할까요? + + 복사 다음 기간까지 비활성화됨: %1$s @@ -1489,14 +1555,6 @@ PIN 코드 업데이트 오류 PIN 코드 업데이트 - - 월렛 주소를 클립 보드에 복사할까요? - - 월렛 주소를 클립 보드에 복사할 수 있는 권한을 부여 - - 월렛 주소 복사하기 - - 복사 PIN을 입력하여 이 거래를 승인하십시오. @@ -1541,14 +1599,6 @@ Breadwallet이 이름을 BRD로 바꾸고 새롭게 단장하였으며 새로운 기능도 갖췄습니다.\n\n도움이 필요하시면 대부분 화면에서 우측 상단에 있는 (?)을(를) 클릭하십시오. BRD에 환영합니다! - - 좋아하는 암호화 자산으로 최신 상태 유지 - - 좋아하는 암호화 자산으로 최신 상태 유지 - - 자산 목록 - - 유산 시스템 자동 밝음 / 어두움 @@ -1583,6 +1633,14 @@ 하얀 노랑 + + 좋아하는 암호화 자산으로 최신 상태 유지 + + 좋아하는 암호화 자산으로 최신 상태 유지 + + 자산 목록 + + 유산 테마 배경색 diff --git a/brd-android/app-core/src/main/res/values-nl/strings.xml b/brd-android/app-core/src/main/res/values-nl/strings.xml index 328f3e7b5..950a58078 100644 --- a/brd-android/app-core/src/main/res/values-nl/strings.xml +++ b/brd-android/app-core/src/main/res/values-nl/strings.xml @@ -86,10 +86,10 @@ Geld Verstuurd! Vingerafdruk geaccepteerd - - Schakel opslagtoestemmingen in uw apparaatinstellingen in: \"Instellingen\"> \"Apps\"> \"BRD\"> \"Toestemmingen\". Elke BCH in uw wallet is toegankelijk via het startscherm. + + Schakel opslagtoestemmingen in uw apparaatinstellingen in: \"Instellingen\"> \"Apps\"> \"BRD\"> \"Toestemmingen\". BRD zal niet goed werken tenzij schermveranderende apps (zoals Twilight) zijn uitgeschakeld. @@ -134,6 +134,8 @@ Succesvol geïdentificeerd BitID Authenticatieverzoek + + Startpagina Kopen @@ -148,8 +150,6 @@ Verwerpen Voltooid - - Startpagina Negeren @@ -213,6 +213,14 @@ Controleer of iCloud-sleutelhanger is ingeschakeld Ik begrijp dat deze functie alleen werkt als iCloud-sleutelhanger is ingeschakeld. Uw iCloud-back-up wordt gewist na nog %1$@ onjuiste pincode-pogingen. + Hoeveelheid papieren portemonnee + Het valideren van deze papieren portemonnee op het netwerk kan tot 60 minuten duren + + De ingevoerde woorden komen niet overeen met uw herstelzin. Probeer het a.u.b. opnieuw. + + Voer de volgende woorden uit uw herstelzin in om er zeker van te zijn dat alles correct is opgeschreven. + + Woord #%1$s Bedrag om te versturen: Bestemmingstag @@ -233,14 +241,6 @@ Naar Totale Prijs: - Hoeveelheid papieren portemonnee - Het valideren van deze papieren portemonnee op het netwerk kan tot 60 minuten duren - - De ingevoerde woorden komen niet overeen met uw herstelzin. Probeer het a.u.b. opnieuw. - - Voer de volgende woorden uit uw herstelzin in om er zeker van te zijn dat alles correct is opgeschreven. - - Woord #%1$s Kies bedrag ($ USD) Creëer Aangepast bedrag (maximaal $ 500) @@ -270,14 +270,14 @@ Wisselkoers Wallet uitgeschakeld - - %1$s adres Vraag %1$s accountgegevens aan Verzoek %1$s smart contract oproep Verzoek %1$s betaling + + %1$s adres Dit apparaat is niet geconfigureerd om e-mails te sturen via de iOS Mail app. @@ -290,10 +290,8 @@ Bericht versturen niet beschikbaar Vingerafdruk niet herkend. Probeer het alstublieft opnieuw. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ Totale Prijs: Handel - - Private key balans checken... - - %1$s van deze private key naar je wallet sturen? Het Bitcoinnetwerk zal een fee ontvangen van %2$s. Deze private key zit al in je portemonnee. @@ -546,6 +599,12 @@ Geen geldige private key Error bij transactie ondertekenen + + Persoonlijke sleutel met succes ingewisseld. + + Private key balans checken... + + %1$s van deze private key naar je wallet sturen? Het Bitcoinnetwerk zal een fee ontvangen van %2$s. Import @@ -564,8 +623,6 @@ Scan private key Succes - - Persoonlijke sleutel met succes ingewisseld. Persoonlijke Sleutel Inwisselen @@ -739,10 +796,10 @@ Een schermvergrendeling voor uw apparaat is nodig om uw portemonnee te beveiligen. Ga naar \"Instellingen\" > \"Beveiliging\" > \"Schermvergrendeling\" en stel in om door te gaan. Schermvergrendeling uitgeschakeld - - Uw herstelzin moet worden opgeslagen voor het geval u uw telefoon verliest of wijzigt. Stel uw herstelzin in voor het geval u ooit uw telefoon kwijtraakt of vervangt. Uw sleutel is ook vereist als u de beveiligingsinstellingen van uw telefoon wijzigt. + + Uw herstelzin moet worden opgeslagen voor het geval u uw telefoon verliest of wijzigt. Actie Vereist Vraag het niet nog eens @@ -778,10 +835,10 @@ Meldingen Uitgeschakeld Schakel meldingen in om speciale aanbiedingen en updates van BRD te ontvangen. - - U ontvangt speciale aanbiedingen en updates van BRD. U ontvangt speciale aanbiedingen en updates van BRD. Ga naar Instellingen van BRD i om meldingen in te schakelen. + + U ontvangt speciale aanbiedingen en updates van BRD. Pushmeldingen ontvangen @@ -800,6 +857,28 @@ Beoordeel BRD Beoordeel BRD + + Synchroniseren + + Je zult niet in staat zijn om geld te versturen wanneer je aan het synchroniseren bent. + + Synchroniseren met Blockchain? + + 20-45 minuten + + Als een transactie als voltooid staat op het Bitcoin netwerk maar niet in je BRD. + + Je kreeg herhaaldelijk een foutmelding die zei dat je transactie werd afgewezen. + + Start Synchronisatie + + Je zult niet in staat zijn om geld te versturen wanneer je aan het synchroniseren bent met de blokketen. + + Synchroniseer Blockchain + + Geschatte tijd + + Wanneer Synchroniseren? Gekopieerd naar plakbord. @@ -912,28 +991,6 @@ Vul alstublieft eerst een bedrag in. Een bedrag aanvragen - - Synchroniseren - - Je zult niet in staat zijn om geld te versturen wanneer je aan het synchroniseren bent. - - Synchroniseren met Blockchain? - - 20-45 minuten - - Als een transactie als voltooid staat op het Bitcoin netwerk maar niet in je BRD. - - Je kreeg herhaaldelijk een foutmelding die zei dat je transactie werd afgewezen. - - Start Synchronisatie - - Je zult niet in staat zijn om geld te versturen wanneer je aan het synchroniseren bent met de blokketen. - - Synchroniseer Blockchain - - Geschatte tijd - - Wanneer Synchroniseren? Leer hoe je kan besparen op handelskosten en toekomstige beloningen vrijspeelt. @@ -977,19 +1034,24 @@ Touch ID Authenticatie met vingerafdruk + + Het activeren van SegWit is een onomkeerbaar proces. Weet u zeker dat u verder wilt gaan? U hebt SegWit geactiveerd! Bedankt voor het ondersteunen van Bitcoin. SegWit-support is nog een bèta-functie.\nZodra SegWit is geactiveerd, zal het niet langer mogelijk zijn om de functie te deactiveren. U kunt de het legacyadres vinden onder Instellingen.\nSommige externe diensten, waaronder de cryptotrade, zijn mogelijk niet beschikbaar voor gebruikers die SegWit hebben geactiveerd. In geval van nood kunt u een legacyadres genereren via Voorkeuren > Bitcoininstellingen.\nSegWit zal automatisch worden geactiveerd voor alle gebruikers in een toekomstige update. - - Het activeren van SegWit is een onomkeerbaar proces. Weet u zeker dat u verder wilt gaan? Activeer Naar de maan - FIO + + Bitcoin adressen zijn alleen bedoeld voor enkel gebruik. + + Hergebruikt vermindert privacy voor zowel jou en de ontvanger en kan resulteren in verlies als de ontvanger niet direct het adres beheert. + + Adres Al Gebruikt Bedrag @@ -1000,10 +1062,10 @@ Sta cameratoegang toe via \"Instellingen\" > \"Apps\" > \"BRD\" > \"Toestemmingen\" BRD heeft geen toegang tot de camera - - Ga naar Instellingen om camera gebruik toe te staan. BRD heeft geen toestemming voor het gebruik van de camera + + Ga naar Instellingen om camera gebruik toe te staan. De bestemming is je eigen adres. Je kunt het niet naar jezelf sturen. @@ -1070,12 +1132,12 @@ Kon de betalingsaanvraag niet laden Scannen - - Max verzenden: Versturen Verstuur maximum bedrag? + + Max verzenden: Versturen @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Bitcoin adressen zijn alleen bedoeld voor enkel gebruik. - - Hergebruikt vermindert privacy voor zowel jou en de ontvanger en kan resulteren in verlies als de ontvanger niet direct het adres beheert. - - Adres Al Gebruikt + FIO + + Activeer SegWit + + Bekijk Legacyontvangstadres + + Verzend enkel Bitcoin (BTC) naar dit adres. Elk ander activum dat naar dit adres wordt verzonden, zal permanent verloren gaan. + + Ontvang Bitcoin Over @@ -1107,8 +1172,6 @@ Valuta-instellingen Doe Mee aan Early Access - - Activeer SegWit Vind je BRD leuk? @@ -1121,6 +1184,7 @@ Beheer Notificaties + Order History Andere @@ -1145,12 +1209,6 @@ Touch ID Bestedingslimiet Uitgavelimiet voor authenticatie met vingerafdruk - - Bekijk Legacyontvangstadres - - Verzend enkel Bitcoin (BTC) naar dit adres. Elk ander activum dat naar dit adres wordt verzonden, zal permanent verloren gaan. - - Ontvang Bitcoin Portemonnee @@ -1212,12 +1270,12 @@ Ongedaan maken Voer Validator-adres in + + Uw herstelzin is de enige manier om uw BRD te herstellen als uw telefoon verloren, gestolen, defect of geüpgraded is. \n\nUw herstelzin is ook vereist als u de beveiligingsinstellingen op uw apparaat wijzigt. \n\nWe laten u een lijst met woorden zien die u op een vel papier kunt schrijven en veilig kunt bewaren. Schrijf de herstelzin opnieuw op Uw herstelzin is de enige manier om uw BRD te herstellen als uw telefoon verloren, gestolen, defect of geüpgraded is. \n\nWe laten u een lijst met woorden zien die u op een vel papier kunt schrijven en veilig kunt bewaren. - - Uw herstelzin is de enige manier om uw BRD te herstellen als uw telefoon verloren, gestolen, defect of geüpgraded is. \n\nUw herstelzin is ook vereist als u de beveiligingsinstellingen op uw apparaat wijzigt. \n\nWe laten u een lijst met woorden zien die u op een vel papier kunt schrijven en veilig kunt bewaren. Schrijf de herstelzin op @@ -1339,9 +1397,9 @@ uitzetten naar %1$s Startbalans: %1$s + naar %1$s Fee voor token verzending: %1$s - naar %1$s Wachtend op bevestiging. Sommige handelaren willen bevestiging om een transactie af te roden. Geschatte tijd: 1-2 uur. @@ -1449,6 +1507,14 @@ Ontvangen op dit adres Verstuurd naar dit adres + + Autoriseer om portemonnee adres naar plakbord te kopiëren + + Kopieer Portemonnee Adressen + + Portemonnee adressen naar plakbord kopiëren? + + Kopiëren Uitgeschakeld tot: %1$s @@ -1489,14 +1555,6 @@ Update PIN Error Update PIN - - Portemonnee adressen naar plakbord kopiëren? - - Autoriseer om portemonnee adres naar plakbord te kopiëren - - Kopieer Portemonnee Adressen - - Kopiëren Voer alstublieft uw PIN in om deze transactie te autoriseren. @@ -1541,14 +1599,6 @@ Breadwallet is omgedoopt tot BRD, met een gloednieuw uiterlijk en enkele nieuwe functies.\n\nAls u hulp nodig hebt, zoek naar de (?) rechtsboven in de meeste schermen. Welkom bij BRD! - - Blijf op de hoogte van uw favoriete cryptovaluta - - Blijf op de hoogte van uw favoriete cryptovaluta - - Asset lijst - - Bedrijfsmiddel Systeem Auto Licht / Donker @@ -1583,6 +1633,14 @@ Wit Geel + + Blijf op de hoogte van uw favoriete cryptovaluta + + Blijf op de hoogte van uw favoriete cryptovaluta + + Asset lijst + + Bedrijfsmiddel Thema achtergrondkleuren diff --git a/brd-android/app-core/src/main/res/values-pt/strings.xml b/brd-android/app-core/src/main/res/values-pt/strings.xml index 0e151d421..51035773a 100644 --- a/brd-android/app-core/src/main/res/values-pt/strings.xml +++ b/brd-android/app-core/src/main/res/values-pt/strings.xml @@ -86,10 +86,10 @@ Dinheiro Enviado! Impressão digital reconhecida - - Agradecemos que ative as permissões de armazenamento nas definições do seu dispositivo: \"Definições\" > \"Aplicações\" > \"BRD\" > \"Permissões\". Qualquer BCH existente na sua carteira pode ser acedido através do ecrã principal. + + Agradecemos que ative as permissões de armazenamento nas definições do seu dispositivo: \"Definições\" > \"Aplicações\" > \"BRD\" > \"Permissões\". O BRD não vai funcionar adequadamente se não forem desativadas as aplicações que alteram o ecrã (tais como a Twilight). @@ -134,6 +134,8 @@ Autenticado com sucesso Pedido de autenticação BitID + + Página inicial Comprar @@ -148,8 +150,6 @@ Descartar Feito - - Página inicial Ignorar @@ -213,6 +213,14 @@ Verifique se o chaveiro do iCloud está ligado Entendo que este recurso não funcionará a menos que o iCloud Keychain esteja ativado. Seu backup do iCloud será apagado após mais %1$@ tentativas incorretas de PIN. + Quantidade de carteira de papel + A validação desta carteira de papel na rede pode levar até 60 minutos + + As palavras inseridas não correspondem à sua frase de recuperação. Por favor, tente novamente. + + Para se certificar de que tudo foi escrito corretamente, digite as seguintes palavras da sua frase de recuperação. + + Palavra #%1$s Montante a enviar: Tag de Destino @@ -233,14 +241,6 @@ Para Custo total - Quantidade de carteira de papel - A validação desta carteira de papel na rede pode levar até 60 minutos - - As palavras inseridas não correspondem à sua frase de recuperação. Por favor, tente novamente. - - Para se certificar de que tudo foi escrito corretamente, digite as seguintes palavras da sua frase de recuperação. - - Palavra #%1$s Escolha o valor ($ USD) Crio Montante personalizado (máximo de $ 500) @@ -270,14 +270,14 @@ Taxa de Câmbio Carteira desativada - - %1$s Endereço Requisitar %1$s dados da conta Requisitar %1$s ligação de contrato inteligente Requisitar %1$s pagamento + + %1$s Endereço Este dispositivo não está configurado para enviar emails com a app Mail do iOS. @@ -290,10 +290,8 @@ Mensagens Indisponíveis Impressão digital não reconhecida. Por favor, tente novamente. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ ativos totais Comércio - - A verificar o saldo da chave privada... - - Enviar %1$s desta chave privada para a sua carteira? A rede bitcoin receberá uma taxa de %2$s. Esta chave privada já está na sua carteira. @@ -546,6 +599,12 @@ Não é uma chave privada válida Erro a assinar transação + + Chave privada resgatada com êxito. + + A verificar o saldo da chave privada... + + Enviar %1$s desta chave privada para a sua carteira? A rede bitcoin receberá uma taxa de %2$s. Resgatar @@ -564,8 +623,6 @@ Digitalizar Chave Privada Sucesso - - Chave privada resgatada com êxito. Resgatar Chave Privada @@ -739,10 +796,10 @@ É necessário um bloqueio de ecrã no dispositivo para salvaguardar a sua carteira. Vá a \"Definições\" > \"Segurança\" > \"Bloqueio de ecrã\" e ative para continuar. Bloqueio de ecrã desativado - - Sua frase de recuperação deve ser salva para o caso de você perder ou trocar de telefone. Configure sua frase de recuperação para o caso de você perder ou substituir seu telefone. Sua chave também é necessária se você alterar as configurações de segurança do telefone. + + Sua frase de recuperação deve ser salva para o caso de você perder ou trocar de telefone. Ação Necessária Não pergunte novamente @@ -778,10 +835,10 @@ Notificações Desativadas Ative as notificações para receber ofertas especiais e atualizações do BRD. - - Está a receber ofertas especiais e atualizações do BRD. Parece que as notificações estão desativadas. Vá para Configurações para ativar as notificações do BRD. + + Está a receber ofertas especiais e atualizações do BRD. Receber Notificações Push @@ -800,6 +857,28 @@ Avalia a BRD Avalia a BRD + + Sincronizar + + Não será capaz de enviar dinheiro enquanto estiver a sincronizar. + + Sincronizar com a Blockchain? + + 20-45 minutos + + Se uma transação aparece como concluída na sua rede bitcoin mas não na sua BRD. + + Recebe repetidamente uma mensagem de erro dizendo que a sua transação foi rejeitada. + + Começar Sincronização + + Não será capaz de enviar dinheiro enquanto estiver a sincronizar com a blockchain. + + Sincronizar Blockchain + + Tempo previsto + + Quando sincronizar? Copiado para a área de transferência. @@ -912,28 +991,6 @@ Primeiro, por favor, introduza um montante. Pedir uma Quantia - - Sincronizar - - Não será capaz de enviar dinheiro enquanto estiver a sincronizar. - - Sincronizar com a Blockchain? - - 20-45 minutos - - Se uma transação aparece como concluída na sua rede bitcoin mas não na sua BRD. - - Recebe repetidamente uma mensagem de erro dizendo que a sua transação foi rejeitada. - - Começar Sincronização - - Não será capaz de enviar dinheiro enquanto estiver a sincronizar com a blockchain. - - Sincronizar Blockchain - - Tempo previsto - - Quando sincronizar? Saiba como pode poupar em comissões de negociação e desbloqueie recompensas futuras. @@ -977,19 +1034,24 @@ Touch ID Autenticação por Impressão Digital + + A ativação do SegWit é uma opção irreversível. Tem a certeza de que pretende continuar? Ativou o SegWit! Obrigado por ajudar a fazer a bitcoin avançar. O suporte do SegWit ainda é um recurso beta.\nQuando o SegWit estiver ativado, não será possível desativá-lo. Poderá encontrar o endereço legado nas Configurações.\nAlguns serviços de terceiros, incluindo a criptografia, podem estar indisponíveis para utilizadores que ativaram o SegWit. Em caso de emergência, poderá gerar um endereço legado em Preferências> Configurações de Bitcoin.\nO SegWit será automaticamente ativado para todos os utilizadores numa futura atualização. - - A ativação do SegWit é uma opção irreversível. Tem a certeza de que pretende continuar? Ativar Até à Lua - FIO + + Os endereços de bitcoin destinam-se apenas a uma única utilização. + + A reutilização reduz a sua privacidade e a do destinatário e pode resultar em perdas se o destinatário não controlar diretamente o endereço. + + Endereço Já Utilizado Quantia @@ -1000,10 +1062,10 @@ Permita o acesso à câmara em \"Definições\" > \"Aplicações\" > \"BRD\" > \"Permissões\" O BRD não tem autorização para aceder à câmara - - Vá às Definições para permitir acesso à câmara. A BRD não tem autorização para aceder à câmara + + Vá às Definições para permitir acesso à câmara. O destino é o seu próprio endereço. Não pode enviar a si mesmo. @@ -1070,12 +1132,12 @@ Não foi possível carregar a solicitação de pagamento Digitalizar - - Enviando Max: Enviar Enviar montante máximo? + + Enviando Max: Enviar @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Os endereços de bitcoin destinam-se apenas a uma única utilização. - - A reutilização reduz a sua privacidade e a do destinatário e pode resultar em perdas se o destinatário não controlar diretamente o endereço. - - Endereço Já Utilizado + FIO + + Ativar Segwit + + Ver Endereço de Receção Legada + + Apenas envie Bitcoin (BTC) para este endereço. Qualquer outro ativo enviado para este endereço será irreversivelmente perdido + + Receber Bitcoin Sobre @@ -1107,8 +1172,6 @@ Definições da Moeda Registe-se no Acesso Antecipado - - Ativar Segwit Está a gostar da BRD? @@ -1121,6 +1184,7 @@ Gerir Notificações + Order History Outro @@ -1145,12 +1209,6 @@ Limite de Gastos Touch ID Limite de Gastos da Autenticação por Impressão Digital - - Ver Endereço de Receção Legada - - Apenas envie Bitcoin (BTC) para este endereço. Qualquer outro ativo enviado para este endereço será irreversivelmente perdido - - Receber Bitcoin Carteira @@ -1212,12 +1270,12 @@ Desamarrar Digite o endereço do validador + + Sua frase de recuperação é a única maneira de restaurar seu BRD se seu telefone estiver perdido, roubado, quebrado ou atualizado.\n\nSua frase de recuperação também é necessária se você alterar as configurações de segurança do seu dispositivo.\n\nVamos mostrar-lhe uma lista de palavras para escrever num pedaço de papel e manter em segurança. Escreva a frase de recuperação novamente Sua frase de recuperação é a única maneira de restaurar seu BRD se seu telefone for perdido, roubado, quebrado ou atualizado.\n\nVamos mostrar-lhe uma lista de palavras para anotar num pedaço de papel e manter em segurança. - - Sua frase de recuperação é a única maneira de restaurar seu BRD se seu telefone estiver perdido, roubado, quebrado ou atualizado.\n\nSua frase de recuperação também é necessária se você alterar as configurações de segurança do seu dispositivo.\n\nVamos mostrar-lhe uma lista de palavras para escrever num pedaço de papel e manter em segurança. Escreva a frase de recuperação @@ -1339,9 +1397,9 @@ apostando em %1$s Saldo inicial: %1$s + para %1$s Taxa para transferência de token: %1$s - para %1$s À espera de confirmação. Alguns comerciantes necessitam de confirmação para concluir uma transação. Tempo estimado: 1-2 horas. @@ -1449,6 +1507,14 @@ Recebida neste endereço Enviada para este endereço + + Autorize para copiar o endereço da carteira para a área de transferência + + Copiar Endereços da Carteira + + Copiar endereços da carteira para a área de transferência? + + Copiar Desativado até: %1$s @@ -1489,14 +1555,6 @@ Erro a Atualizar PIN Atualizar PIN - - Copiar endereços da carteira para a área de transferência? - - Autorize para copiar o endereço da carteira para a área de transferência - - Copiar Endereços da Carteira - - Copiar Por favor, introduza o seu PIN, a fim de autorizar esta transação. @@ -1541,14 +1599,6 @@ As Breadwallets mudaram de nome para BRD, com um visual completamente novo e algumas características novas. \n\nSe precisar de ajuda, procure o (?) no canto superior direito da maioria das telas. Bem-vindo ao BRD! - - Mantenha-se atualizado com o seu ativo criptográfico favorito - - Mantenha-se atualizado com seus recursos criptográficos favoritos - - Lista de ativos - - Ativo Sistema Auto Light / Dark @@ -1583,6 +1633,14 @@ Branco Amarelo + + Mantenha-se atualizado com o seu ativo criptográfico favorito + + Mantenha-se atualizado com seus recursos criptográficos favoritos + + Lista de ativos + + Ativo Cores de fundo do tema diff --git a/brd-android/app-core/src/main/res/values-ru/strings.xml b/brd-android/app-core/src/main/res/values-ru/strings.xml index 658bb19c3..c04ce1a9c 100644 --- a/brd-android/app-core/src/main/res/values-ru/strings.xml +++ b/brd-android/app-core/src/main/res/values-ru/strings.xml @@ -86,10 +86,10 @@ Деньги отправлены! Отпечаток пальца идентифицирован - - Включите разрешения на хранение в настройках вашего устройства: «Настройки» > «Приложения» > «BRD» > «Разрешения». Доступ к BCH в вашем кошельке теперь возможен с главного экрана. + + Включите разрешения на хранение в настройках вашего устройства: «Настройки» > «Приложения» > «BRD» > «Разрешения». BRD не сможет нормально работать, если не отключить изменяющие экран приложения (такие как Twilight). @@ -134,6 +134,8 @@ Аутентификация пройдена успешно Запрос на аутентификацию BitID + + Главная Купить @@ -148,8 +150,6 @@ Отменить Готово - - Главная Игнорировать @@ -213,6 +213,14 @@ Убедитесь, что связка ключей iCloud включена Я понимаю, что эта функция не будет работать, если не будет включена Связка ключей iCloud. Ваша резервная копия iCloud будет удалена после еще %1$@ попыток неправильного ввода PIN-кода. + Сумма бумажного кошелька + Проверка этого бумажного кошелька в сети может занять до 60 минут. + + Введенные слова не соответствуют вашей фразе для восстановления. Пожалуйста, попробуйте еще раз. + + Чтобы убедиться, что все записано правильно, введите следующие слова из фразы для восстановления. + + Слово #%1$s Сумма для отправки: Целевой тег @@ -233,14 +241,6 @@ На Общая стоимость: - Сумма бумажного кошелька - Проверка этого бумажного кошелька в сети может занять до 60 минут. - - Введенные слова не соответствуют вашей фразе для восстановления. Пожалуйста, попробуйте еще раз. - - Чтобы убедиться, что все записано правильно, введите следующие слова из фразы для восстановления. - - Слово #%1$s Выберите сумму ($ USD) Создавать Специальная сумма (макс. 500 долларов США) @@ -270,14 +270,14 @@ Обменный курс Кошелек отключен - - %1$s Адрес Запросить %1$s информацию об учётной записи Запросить %1$s вызов смарт-контракта Запросить %1$s платёж + + %1$s Адрес Для этого устройства не настроена отправка электронных писем через почтовое приложение iOS. @@ -290,10 +290,8 @@ Опция обмена сообщениями недоступна Отпечаток пальца не идентифицирован. Повторите попытку. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ итого активов Обмен - - Проверяем баланс по персональному ключу... - - Отправить %1$s с этого персонального ключа на ваш кошелек? Биткойн-сети будет начислена плата в размере %2$s. Этот персональный ключ уже находится в вашем кошельке. @@ -546,6 +599,12 @@ Недействительный персональный ключ Ошибка подписания транзакции + + Вы успешно восстановили секретный ключ. + + Проверяем баланс по персональному ключу... + + Отправить %1$s с этого персонального ключа на ваш кошелек? Биткойн-сети будет начислена плата в размере %2$s. Восстановить @@ -564,8 +623,6 @@ Сканировать персональный ключ Готово - - Вы успешно восстановили секретный ключ. Восстановить секретный ключ @@ -739,10 +796,10 @@ Для защиты вашего кошелька требуется блокировка экрана вашего устройства. Перейдите в \"Настройки\" > \"Безопасность\" > \"Блокировка экрана\" и включите, чтобы продолжить. Блокировка экрана отключена - - Фразу для восстановления необходимо сохранить на случай, если вы потеряете или поменяете телефон. Настройте фразу для восстановления на случай, если вы потеряете или замените телефон. Ваш ключ также потребуется, если вы измените настройки безопасности вашего телефона. + + Фразу для восстановления необходимо сохранить на случай, если вы потеряете или поменяете телефон. Необходимо совершить действие Не спрашивай снова @@ -778,10 +835,10 @@ Уведомления Отключены Включите уведомления, чтобы получать спецпредложения и новости от BRD. - - Вы получаете спецпредложения и новости от BRD. Похоже, уведомления отключены. Перейдите в настройки, чтобы включить уведомления от BRD. + + Вы получаете спецпредложения и новости от BRD. Получать Push-уведомления @@ -800,6 +857,28 @@ Оцените BRD Оцените BRD + + Синхронизация + + Вы не сможете отправлять деньги во время синхронизации. + + Синхронизировать с Blockchain? + + 20-45 минут + + Если транзакция описывается как \"выполненная\" в биткойн-сети, но не в вашем BRD-кошельке. + + Вы несколько раз получили ошибку о том, что транзакция отвергнута. + + Начать синхронизацию + + Вы не сможете отправлять деньги во время синхронизации с blockchain. + + Синхронизация с Blockchain + + Примерное время + + Когда синхронизировать? Скопировано в буфер обмена. @@ -912,28 +991,6 @@ Сначала введите сумму. Запросить сумму - - Синхронизация - - Вы не сможете отправлять деньги во время синхронизации. - - Синхронизировать с Blockchain? - - 20-45 минут - - Если транзакция описывается как \"выполненная\" в биткойн-сети, но не в вашем BRD-кошельке. - - Вы несколько раз получили ошибку о том, что транзакция отвергнута. - - Начать синхронизацию - - Вы не сможете отправлять деньги во время синхронизации с blockchain. - - Синхронизация с Blockchain - - Примерное время - - Когда синхронизировать? Узнайте как сэкономить на комиссионных обменах и открыть будущие бонусы. @@ -977,19 +1034,24 @@ Touch ID Аутентификация по отпечаткам пальцев + + Активация SegWit является необратимой функцией. Вы уверены, что хотите продолжить? Вы активировали SegWit! Благодарим вас за продвижение биткоина. Поддержка SegWit еще является бета-функцией.\nС момента активации функции SegWit ее нельзя будет отключить. Вы сможете найти унаследованный адрес в Настройках. \nНекоторые услуги третьей стороны, включая крипто-трейдинг, могут быть недоступными для пользователей, которые активировали SegWit. В случае крайней необходимости, вы сможете генерировать унаследованный адрес, зайдя в Preferences (Параметры) > Bitcoin Settings (Настройки биткоина). \nВ будущем обновлении SegWit будет автоматически активирована для всех пользователей. - - Активация SegWit является необратимой функцией. Вы уверены, что хотите продолжить? Активировать На главный экран - FIO + + Биткойн-адреса предназначены исключительно для однократного использования. + + Повторное использование снижает как вашу конфиденциальность, так и конфиденциальность получателя, и может привести к потерям, если получатель не совершает непосредственный контроль за этим адресом. + + Адрес уже используется Сумма @@ -1000,10 +1062,10 @@ Разрешить доступ к камере в: \"Настройки\" > \"Приложения\" > \"BRD\" > \"Разрешения\" Приложению BRD не разрешен доступ к камере - - Перейдите в \"Настройки\", чтобы разрешить доступ к камере. BRD не имеет разрешения на доступ к камере + + Перейдите в \"Настройки\", чтобы разрешить доступ к камере. Место назначения является вашим собственным адресом. Вы не можете отправить деньги самому себе. @@ -1070,12 +1132,12 @@ Не удалось загрузить запрос на оплату Сканировать - - Отправка Макс: Отправить Отправить максимальную сумму? + + Отправка Макс: Отправить @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Биткойн-адреса предназначены исключительно для однократного использования. - - Повторное использование снижает как вашу конфиденциальность, так и конфиденциальность получателя, и может привести к потерям, если получатель не совершает непосредственный контроль за этим адресом. - - Адрес уже используется + FIO + + Активировать Segwit + + Просмотреть унаследованный адрес + + Отправляйте на этот адрес только биткоин (BTC). Любые другие активы, отправленные на этот адрес, будут безвозвратно потеряны. + + Получить биткоин О нас @@ -1107,8 +1172,6 @@ Настройки валюты Присоединитесь к пользователям с ранним доступом - - Активировать Segwit Нравится ли вам использовать BRD? @@ -1121,6 +1184,7 @@ Управление Уведомления + Order History Другие @@ -1145,12 +1209,6 @@ Лимит на расходы Touch ID Расходный лимит с аутентификацией по отпечаткам пальцев - - Просмотреть унаследованный адрес - - Отправляйте на этот адрес только биткоин (BTC). Любые другие активы, отправленные на этот адрес, будут безвозвратно потеряны. - - Получить биткоин Кошелек @@ -1212,12 +1270,12 @@ Unstake Введите адрес валидатора + + Фраза восстановления - единственный способ восстановить BRD, если ваш телефон утерян, украден, сломан или модернизирован. \n\nФраза для восстановления также потребуется, если вы измените настройки безопасности на своем устройстве. \n\nМы покажем вам список слов, которые нужно записать на листе бумаги и хранить в безопасности. Запишите фразу восстановления еще раз Фраза восстановления - единственный способ восстановить BRD, если ваш телефон утерян, украден, сломан или модернизирован. \n\nМы покажем вам список слов, которые нужно записать на листе бумаги и хранить в безопасности. - - Фраза восстановления - единственный способ восстановить BRD, если ваш телефон утерян, украден, сломан или модернизирован. \n\nФраза для восстановления также потребуется, если вы измените настройки безопасности на своем устройстве. \n\nМы покажем вам список слов, которые нужно записать на листе бумаги и хранить в безопасности. Запишите фразу для восстановления @@ -1339,9 +1397,9 @@ ставка на %1$s Начальный баланс: %1$s + в %1$s Сбор за передачу токена: %1$s - в %1$s Ожидает подтверждения. Некоторые продавцы требуют подтверждения для выполнения транзакции. Предполагаемое время: 1-2 часа. @@ -1449,6 +1507,14 @@ Получено на адрес: Отправлено на адрес: + + Авторизовать копирование адресов кошелька в буфер обмена + + Скопировать адреса кошелька + + Скопировать адреса кошелька в буфер обмена? + + Копировать Отключено до: %1$s @@ -1489,14 +1555,6 @@ Ошибка обновления PIN-кода Обновить PIN-код - - Скопировать адреса кошелька в буфер обмена? - - Авторизовать копирование адресов кошелька в буфер обмена - - Скопировать адреса кошелька - - Копировать Для авторизации этой транзакции введите свой ПИН-код. @@ -1541,14 +1599,6 @@ Breadwallet сменил свое название на BRD и обзавелся новым дизайном и функциями.\n\nЕсли вам нужна помощь, то ищите иконку (?) в правом верхнем углу большинства экранов. Добро пожаловать в BRD! - - Будьте в курсе ваших любимых криптоактивов - - Будьте в курсе ваших любимых криптоактивов - - Список активов - - Актив Система Авто Свет / Темнота @@ -1583,6 +1633,14 @@ белый Желтый + + Будьте в курсе ваших любимых криптоактивов + + Будьте в курсе ваших любимых криптоактивов + + Список активов + + Актив Цвета фона темы diff --git a/brd-android/app-core/src/main/res/values-sv/strings.xml b/brd-android/app-core/src/main/res/values-sv/strings.xml index 26763673c..c805996e5 100644 --- a/brd-android/app-core/src/main/res/values-sv/strings.xml +++ b/brd-android/app-core/src/main/res/values-sv/strings.xml @@ -86,10 +86,10 @@ Pengarna sändade! Fingeravtryck bekräftat - - Vi ber dig att medge lagringstillåtelse i dina enhetsinställningar: \"Inställningar\" > \"Appar\" > \"BRD\" > \"Tillåtelser\". Valfri BCH i din plånbok kan nås via hemskärmen. + + Vi ber dig att medge lagringstillåtelse i dina enhetsinställningar: \"Inställningar\" > \"Appar\" > \"BRD\" > \"Tillåtelser\". BRD fungerar inte korrekt om inte skärmskiftande appar (såsom Twilight) är inaktiverade. @@ -134,6 +134,8 @@ Autentiseringen lyckades BitId autentiseringsförfrågan + + Hem Köp @@ -148,8 +150,6 @@ Avvisa Klar - - Hem Ignorera @@ -213,6 +213,14 @@ Kontrollera att iCloud-nyckelring är PÅ Jag förstår att den här funktionen inte fungerar om inte iCloud Keychain är aktiverat. Din iCloud-säkerhetskopia raderas efter %1$@ fler felaktiga PIN-försök. + Pappersbelopp + Valideringen av denna pappersplånbok i nätverket kan ta upp till 60 minuter + + De angivna orden matchar inte din återställningsfras. Var god försök igen. + + För att säkerställa att allt har skrivits ner korrekt, skriv följande ord från din återställningsfras. + + Ord #%1$s Belopp att sänd: Mål tag @@ -233,14 +241,6 @@ Till Total kostnad: - Pappersbelopp - Valideringen av denna pappersplånbok i nätverket kan ta upp till 60 minuter - - De angivna orden matchar inte din återställningsfras. Var god försök igen. - - För att säkerställa att allt har skrivits ner korrekt, skriv följande ord från din återställningsfras. - - Ord #%1$s Välj belopp ($ USD) Skapa Anpassat belopp (max $ 500) @@ -270,14 +270,14 @@ Växelkurs Plånbok inaktiverad - - %1$s Adress Begär %1$s betalning Begär %1$s smart kontraktsamtal Begär %1$s kontoinformation + + %1$s Adress Enheten är inte konfigurerad för att sänd e-post med post-appen i iOS. @@ -290,10 +290,8 @@ Meddelandehantering inte tillgänglig Fingeravtryck ej bekräftat. Försök igen. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ totala tillgångar Handla - - Kontrollerar privat nyckelsaldo... - - Sänd %1$s från denna privata nyckel till din plånbok? Bitcoins nätverk tar en avgift på %2$s. Denna privata nyckel finns redan i din plånbok. @@ -546,6 +599,12 @@ Inte någon privat nyckel Fel vid signering av transaktion + + Inlösning av privat nyckel lyckades. + + Kontrollerar privat nyckelsaldo... + + Sänd %1$s från denna privata nyckel till din plånbok? Bitcoins nätverk tar en avgift på %2$s. Lös In @@ -564,8 +623,6 @@ Läs av privat nyckel Lyckades - - Inlösning av privat nyckel lyckades. Lös In Privat Nyckel @@ -739,10 +796,10 @@ Ett skärmlås krävs på enheten för att skydda din plånbok. Gå till Inställningar > Säkerhet > Skärmlås och aktivera för att fortsätta. Skärmlås inaktiverat - - Din återställningsfras måste sparas om du tappar eller byter telefon. Ställ in din återställningsfras om du någonsin tappar eller byter ut telefonen. Din nyckel krävs också om du ändrar telefonens säkerhetsinställningar. + + Din återställningsfras måste sparas om du tappar eller byter telefon. Åtgärd krävs Fråga inte igen @@ -778,10 +835,10 @@ Meddelanden avaktiverade Slå på meddelanden för att få specialerbjudanden och uppdateringar från BRD. - - Du får specialerbjudanden och uppdateringar från BRD. Det verkar som att meddelanden är avstängda. Gå till Inställningar för att aktivera meddelanden från BRD. + + Du får specialerbjudanden och uppdateringar från BRD. Ta emot push-meddelanden @@ -800,6 +857,28 @@ Betygsätt BRD Betygsätt BRD + + Synka + + Du kan inte sänd pengar under synkning. + + Synka med blockkedja? + + 20-45 minuter + + Om en transaktion visar sig som klar i bitcoins nätverk men inte i BRD. + + Du får gång på gång ett meddelande som säger att din transaktion avvisades. + + Starta synkning + + Du kan inte sänd pengar under synkningen med blockkedjan. + + Synka blockkedja + + Uppskattad tid + + När ska man synka? Kopierad till urklipp. @@ -912,28 +991,6 @@ Var god ange ett belopp först. Begär ett belopp - - Synka - - Du kan inte sänd pengar under synkning. - - Synka med blockkedja? - - 20-45 minuter - - Om en transaktion visar sig som klar i bitcoins nätverk men inte i BRD. - - Du får gång på gång ett meddelande som säger att din transaktion avvisades. - - Starta synkning - - Du kan inte sänd pengar under synkningen med blockkedjan. - - Synka blockkedja - - Uppskattad tid - - När ska man synka? Se hur du kan spara in på handelsavgifter och frigöra framtida belöningar. @@ -977,19 +1034,24 @@ Touch ID Fingeravtrycksautentisering + + En aktivering av Segwit är oåterkallelig. Är du säker på att du vill fortsätta? Du aktiverade Segwit! Tack för att du hjälper bitcoin framåt. Segwit-support är fortfarande på betastadiet. \nNär Segwit väl har aktiverats är det inte möjligt att avaktivera det. Du kan hitta den gamla adressen under Inställningar. \nVissa tredjepartstjänster, inklusive kryptohandel, kanske inte är tillgängliga för användare som har aktiverat Segwit. I nödfall har du möjlighet att skapa en gammal adress i Preferenser > Bitcoininställningar. \nSegwit kommer automatiskt att vara aktiverat för alla användare i en framtida uppdatering. - - En aktivering av Segwit är oåterkallelig. Är du säker på att du vill fortsätta? Aktivera Till månen - FIO + + Bitcoin-adresser är avsedda för engångsanvändning. + + Återanvändning minskar sekretessen både för dig och mottagaren och kan sluta i förlust om mottagaren inte direkt kontrollerar adressen. + + Adressen är redan använd Belopp @@ -1000,10 +1062,10 @@ Tillåt kameraåtkomst under Inställningar > Appar > BRD > Behörigheter BRD har inte åtkomst till kameran - - Gå till Inställningar för att ge tillgång till kameran. BRD har inte tillgång till kameran + + Gå till Inställningar för att ge tillgång till kameran. Destinationen är din egen adress. Du kan inte sänd till dig själv. @@ -1070,12 +1132,12 @@ Kunde inte ladda betalningsförfrågan Läs av - - Sänd Max: Sänd Sänd maxbeloppet? + + Sänd Max: Sänd @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Bitcoin-adresser är avsedda för engångsanvändning. - - Återanvändning minskar sekretessen både för dig och mottagaren och kan sluta i förlust om mottagaren inte direkt kontrollerar adressen. - - Adressen är redan använd + FIO + + Aktivera Segwit + + Visa mottagaradress i gamla formatet + + Sänd endast bitcoin (BTC) till denna adress. Alla andra tillgångar som sänd till denna adress går förlorade permanent. + + Erhåll bitcoin Om @@ -1107,8 +1172,6 @@ Valutainställningar Använd Snabb tillgång - - Aktivera Segwit Gillar du BRD? @@ -1121,6 +1184,7 @@ Hantera Meddelanden + Order History Andra @@ -1145,12 +1209,6 @@ Touch ID utnyttjandegräns Maxbelopp med fingeravtrycksautentisering - - Visa mottagaradress i gamla formatet - - Sänd endast bitcoin (BTC) till denna adress. Alla andra tillgångar som sänd till denna adress går förlorade permanent. - - Erhåll bitcoin Plånbok @@ -1212,12 +1270,12 @@ Ta av Ange valideringsadress + + Din återställningsfras är det enda sättet att återställa din BRD om din telefon går förlorad, stulen, trasig eller uppgraderas. \n\nDin återställningsfras krävs också om du ändrar säkerhetsinställningarna på din enhet. \n\nVi visar dig en lista med ord att skriva ner på ett papper och hålla dig säker. Skriv ner återhämtningsfrasen igen Din återställningsfras är det enda sättet att återställa din BRD om din telefon går förlorad, stulen, trasig eller uppgraderas. \n\nVi visar dig en lista med ord att skriva ner på ett papper och hålla dig säker. - - Din återställningsfras är det enda sättet att återställa din BRD om din telefon går förlorad, stulen, trasig eller uppgraderas. \n\nDin återställningsfras krävs också om du ändrar säkerhetsinställningarna på din enhet. \n\nVi visar dig en lista med ord att skriva ner på ett papper och hålla dig säker. Skriv ner återhämtningsfras @@ -1339,9 +1397,9 @@ satsar till %1$s Ingående saldo: %1$s + till %1$s Avgift för token-överföring: %1$s - till %1$s Väntar på bekräftelse. Vissa handlare kräver bekräftelse för att slutföra en transaktion. Uppskattad tid: 1-2 timmar. @@ -1449,6 +1507,14 @@ Togs emot på den här adressen Sänd till den här adressen + + Godkänn att kopiera plånbokens adress till urklipp + + Kopiera plånboksadresser + + Kopiera plånboksadresser till urklipp? + + Kopiera Inaktiverad till: %1$s @@ -1489,14 +1555,6 @@ Fel vid uppdatering av PIN-kod Uppdatera PIN-kod - - Kopiera plånboksadresser till urklipp? - - Godkänn att kopiera plånbokens adress till urklipp - - Kopiera plånboksadresser - - Kopiera Var god ange din pinkod för att godkänna denna transaktion. @@ -1541,14 +1599,6 @@ BRDplånboken har bytt namn till BRD, med ett splitter nytt utseende och några nya funktioner.\n\nOm du behöver hjälp, leta efter (?)-tecknet i det övre högra hörnet på de flesta skärmar. Välkommen till BRD! - - Håll dig uppdaterad med din favorit kryptotillgång - - Håll dig uppdaterad med dina favorit kryptotillgångar - - Tillgångslista - - Tillgång System Auto Ljus / Mörk @@ -1583,6 +1633,14 @@ Vit Gul + + Håll dig uppdaterad med din favorit kryptotillgång + + Håll dig uppdaterad med dina favorit kryptotillgångar + + Tillgångslista + + Tillgång Tema bakgrundsfärger diff --git a/brd-android/app-core/src/main/res/values-zh-rCN/strings.xml b/brd-android/app-core/src/main/res/values-zh-rCN/strings.xml index b7dfb3f4e..4a7c86cac 100644 --- a/brd-android/app-core/src/main/res/values-zh-rCN/strings.xml +++ b/brd-android/app-core/src/main/res/values-zh-rCN/strings.xml @@ -86,10 +86,10 @@ 钱已发送! 已识别指纹 - - 请在您的设备设置中启用存储空间使用权限:“设置” > “应用” > “BRD” > “权限”。 您钱包中的任何比特币现金 (BCH) 均可通过主屏幕访问。 + + 请在您的设备设置中启用存储空间使用权限:“设置” > “应用” > “BRD” > “权限”。 您应禁用屏幕更改应用(如 Twilight),否则 BRD 将无法正常工作。 @@ -134,6 +134,8 @@ 验证成功 BitID 验证请求 + + 主页 购买 @@ -148,8 +150,6 @@ 撤销 完成 - - 主页 忽略 @@ -213,6 +213,14 @@ 验证iCloud钥匙串是否已打开 我了解除非启用iCloud钥匙串,否则此功能将无法使用。 在尝试了%1$@次不正确的PIN后,您的iCloud备份将被清除。 + 纸钱包金额 + 在网络上验证此纸钱包可能最多需要60分钟 + + 输入的单词与您的恢复短语不匹配。请再试一遍。 + + 为确保所有内容均正确记录,请从您的恢复短语中输入以下单词。 + + 单词#%1$s 发送金额: 目的地标签 @@ -233,14 +241,6 @@ 费用总计: - 纸钱包金额 - 在网络上验证此纸钱包可能最多需要60分钟 - - 输入的单词与您的恢复短语不匹配。请再试一遍。 - - 为确保所有内容均正确记录,请从您的恢复短语中输入以下单词。 - - 单词#%1$s 选择金额(美元) 创建 自定义金额(最高$ 500) @@ -270,14 +270,14 @@ 汇率 钱包已禁用 - - %1$s地址 请求%1$s 帐户信息 请求%1$s智能合约呼叫 请求%1$s付款 + + %1$s地址 此设备未进行配置,无法用 iOS 邮件应用发送电子邮件。 @@ -290,10 +290,8 @@ 消息发送不可用 未识别出指纹。请再试一次。 - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ 总资产 - - 正在查看私人密钥余额... - - 从这个私人密钥中发送 %1$s 到您的钱包吗?比特币网络将收到 %2$s 费用。 本私钥已在您的钱包里。 @@ -546,6 +599,12 @@ 并非有效私钥 错误签名交易 + + 成功兑换私钥。 + + 正在查看私人密钥余额... + + 从这个私人密钥中发送 %1$s 到您的钱包吗?比特币网络将收到 %2$s 费用。 兑换 @@ -564,8 +623,6 @@ 扫描私钥 成功 - - 成功兑换私钥。 兑换私钥 @@ -739,10 +796,10 @@ 需要设备屏幕锁定才能保护您的钱包。在“设置”>“安全”>“屏幕锁定”中启用它以便继续。 屏幕锁定已禁用 - - 如果丢失或更换手机,必须保存恢复短语。 设置恢复短语,以防万一您丢失或更换手机。如果更改手机的安全设置,则还需要密钥。 + + 如果丢失或更换手机,必须保存恢复短语。 需要采取的行动 不要再问了 @@ -778,10 +835,10 @@ 提示已禁用 开启接收 BRD 特惠版更新通知。 - - 您正在接收 BRD 特惠版更新。 疑似关闭通知。请进入设置启用 BRD 通知。 + + 您正在接收 BRD 特惠版更新。 接收推送通知 @@ -800,6 +857,28 @@ 评价BRD 评价BRD + + 同步 + + 您不能在同步的同时寄钱。 + + 与区块链同步? + + 20-45 分钟 + + 如果某次交易在比特币网络上显示为已完成,却不在您的 BRD 里。 + + 你反复得到交易被拒绝的出错信息。 + + 开始同步 + + 您不能在与区块链同步的同时寄钱。 + + 同步区块链 + + 估计时间 + + 何时同步? 已复制到剪贴板。 @@ -912,28 +991,6 @@ 请先输入金额。 申请金额 - - 同步 - - 您不能在同步的同时寄钱。 - - 与区块链同步? - - 20-45 分钟 - - 如果某次交易在比特币网络上显示为已完成,却不在您的 BRD 里。 - - 你反复得到交易被拒绝的出错信息。 - - 开始同步 - - 您不能在与区块链同步的同时寄钱。 - - 同步区块链 - - 估计时间 - - 何时同步? 了解如何节省交易费用并激活未来的奖励计划。 @@ -977,19 +1034,24 @@ 触摸 ID 指纹认证 + + 启用 SegWit 是不可逆转的功能。是否确定要继续? 您已启用 SegWit! 感谢您帮助比特币发展。 SegWit 支持还是一项不成熟的测试功能。\n启用 SegWit 后,将无法将其禁用。\n您可以在\"设置\"下找到传统地址。\n启用了 SegWit 的用户可能无法使用包括加密货币交易在内的部分第三方服务。如果出现紧急情况,您可以通过\"首选项\"(Preferences) >\"比特币设置\"(Bitcoin Settings) 生成一个传统地址。\n在将来的更新中,将自动为所有用户\n启用 SegWit。 - - 启用 SegWit 是不可逆转的功能。是否确定要继续? 启用 去月球 - FIO + + 比特币地址仅供一次性使用。 + + 重复使用会削弱您和收件人的隐私,如果收件人不直接控制地址,可能会导致损失。 + + 地址已被使用 金额 @@ -1000,10 +1062,10 @@ 在“设置”>“应用”>“BRD”>“权限”中允许访问相机 BRD 没有访问相机的权限 - - 前往“设置”以允许访问照相机。 BRD 不允许访问照相机 + + 前往“设置”以允许访问照相机。 目标是您自己的地址。您不能发送给您自己。 @@ -1070,12 +1132,12 @@ 无法加载支付请求 扫描 - - 发送上限: 发送 发送最高金额? + + 发送上限: 发送 @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - 比特币地址仅供一次性使用。 - - 重复使用会削弱您和收件人的隐私,如果收件人不直接控制地址,可能会导致损失。 - - 地址已被使用 + FIO + + 启用 SegWit + + 查看传统接收地址 + + 请仅发送比特币 (BTC) 至此地址。发送至此地址的任何其他资产将永久丢失。 + + 接收比特币 关于 @@ -1107,8 +1172,6 @@ 货币设置 加入早期访问 - - 启用 SegWit 您喜欢 BRD 吗? @@ -1121,6 +1184,7 @@ 管理 通知 + Order History 其他 @@ -1145,12 +1209,6 @@ 触摸 ID 支出限制 指纹认证支出限额 - - 查看传统接收地址 - - 请仅发送比特币 (BTC) 至此地址。发送至此地址的任何其他资产将永久丢失。 - - 接收比特币 钱包 @@ -1212,12 +1270,12 @@ 放心 输入验证人地址 + + 如果手机丢失,被盗,损坏或升级,则恢复短语是恢复BRD的唯一方法。 \n\n如果您更改设备上的安全设置,则还需要输入恢复短语。 \n\n我们将为您显示单词列表,以便在纸上写下并保持安全。 再次写下恢复短语 如果手机丢失,被盗,损坏或升级,则恢复短语是恢复BRD的唯一方法。 \n\n我们将为您显示单词列表,以便在纸上写下并保持安全。 - - 如果手机丢失,被盗,损坏或升级,则恢复短语是恢复BRD的唯一方法。 \n\n如果您更改设备上的安全设置,则还需要输入恢复短语。 \n\n我们将为您显示单词列表,以便在纸上写下并保持安全。 记下恢复短语 @@ -1339,9 +1397,9 @@ 下注到%1$s 期初余额:%1$s + 至%1$s 代币转让费用: %1$s - 至%1$s 等待确认中。部分商家需要进行确认以完成交易。预估时间:1-2 小时。 @@ -1449,6 +1507,14 @@ 已在此地址接收 已汇至此地址 + + 授权以拷贝钱包地址到剪贴板 + + 拷贝钱包地址 + + 是否拷贝钱包地址到剪贴板? + + 拷贝 在此日期前禁用:%1$s @@ -1489,14 +1555,6 @@ 更新 PIN 码错误 更新 PIN 码 - - 是否拷贝钱包地址到剪贴板? - - 授权以拷贝钱包地址到剪贴板 - - 拷贝钱包地址 - - 拷贝 请输入您的个人识别码(PIN)以便授权此交易。 @@ -1541,14 +1599,6 @@ Breadwallet 更名为 BRD, 并增加了全新的界面和功能。如果您需要帮助,请使用在大多数设备屏幕右上角的(?) 欢迎使用BRD! - - 随时了解您最喜欢的加密资产 - - 随时了解您喜欢的加密资产 - - 资产清单 - - 资产 系统自动亮/暗 @@ -1583,6 +1633,14 @@ 白色的 黄色的 + + 随时了解您最喜欢的加密资产 + + 随时了解您喜欢的加密资产 + + 资产清单 + + 资产 主题背景颜色 diff --git a/brd-android/app-core/src/main/res/values-zh-rTW/strings.xml b/brd-android/app-core/src/main/res/values-zh-rTW/strings.xml index 5d01aa209..cd874fb25 100644 --- a/brd-android/app-core/src/main/res/values-zh-rTW/strings.xml +++ b/brd-android/app-core/src/main/res/values-zh-rTW/strings.xml @@ -86,10 +86,10 @@ 錢已寄出! 已辨識指紋 - - 請在您的裝置啟用儲存權限:[設定] > [應用程式] > [BRD] > [權限]。 任何在您錢包裡的 BCH 都可透過主畫面存取。 + + 請在您的裝置啟用儲存權限:[設定] > [應用程式] > [BRD] > [權限]。 除非停用螢幕改變應用程式(例如 Twilight),否則 BRD 無法正常運作。 @@ -134,6 +134,8 @@ 認證成功。 要求認證比特 ID + + 首頁 購買 @@ -148,8 +150,6 @@ 終止 完成 - - 首頁 略過 @@ -213,6 +213,14 @@ 驗證iCloud鑰匙串是否已打開 我了解除非啟用iCloud鑰匙串,否則此功能將無法使用。 在嘗試了%1$@次不正確的PIN後,您的iCloud備份將被清除。 + 紙錢包金額 + 在網絡上驗證此紙錢包可能最多需要60分鐘 + + 輸入的單詞與您的恢復短語不匹配。請再試一遍。 + + 為確保所有內容均正確記錄,請從您的恢復短語中輸入以下單詞。 + + 字組 #%1$s 寄送金額: 目的地標籤 @@ -233,14 +241,6 @@ 總計: - 紙錢包金額 - 在網絡上驗證此紙錢包可能最多需要60分鐘 - - 輸入的單詞與您的恢復短語不匹配。請再試一遍。 - - 為確保所有內容均正確記錄,請從您的恢復短語中輸入以下單詞。 - - 字組 #%1$s 選擇金額(美元) 創建 自定義金額(最高$ 500) @@ -270,14 +270,14 @@ 匯率 停用錢包 - - %1$s地址 要求%1$s帳戶資訊 要求%1$s智慧合約呼叫 要求%1$s付款 + + %1$s地址 本裝置並非設定來以 iOS 郵件應用程式傳送電子郵件。 @@ -290,10 +290,8 @@ 無法使用傳訊 指紋無法識別。請再試一次。 - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ 總資產 - - 正在檢查私密金鑰餘額… - - 要從這個私密金鑰寄出 %1$s 到您的電子錢包嗎?比特幣網路會收到 %2$s 的費用。 此私密金鑰已經在您的電子錢包了。 @@ -546,6 +599,12 @@ 不是有效的私密金鑰 簽署交易出錯 + + 成功兌換私密金鑰。 + + 正在檢查私密金鑰餘額… + + 要從這個私密金鑰寄出 %1$s 到您的電子錢包嗎?比特幣網路會收到 %2$s 的費用。 兌換 @@ -564,8 +623,6 @@ 掃描私密金鑰 成功 - - 成功兌換私密金鑰。 兌換私密金鑰 @@ -739,10 +796,10 @@ 需要裝置螢幕鎖定來保護您的錢包。前往「設定」 > 「安全性」 > 「螢幕鎖定」,啟用來繼續。 螢幕鎖定已停用 - - 如果丟失或更換手機,必須保存恢復短語。 設置恢復短語,以防萬一您丟失或更換手機。如果更改手機的安全設置,則還需要密鑰。 + + 如果丟失或更換手機,必須保存恢復短語。 需要採取動作 不要再問了 @@ -778,10 +835,10 @@ 已停用通知功能 開通推送消息通知功能,接收 BRD 特別優惠和最新資訊。 - - 您將接收 BRD 特別優惠和最新資訊。 您好像關閉了推送通知功能。請前往“設置”,開通接收 BRD 推送功能。 + + 您將接收 BRD 特別優惠和最新資訊。 接收推送 @@ -800,6 +857,28 @@ 評價 BRD 評價 BRD + + 同步 + + 同步期間無法發款。 + + 要與區塊鏈同步嗎? + + 20-45 分鐘 + + 如果交易在比特幣網上已經顯示為完成,但沒有出現在您的 BRD 上。 + + 你不斷收到「交易被拒」的錯誤。 + + 開始同步 + + 與區塊鏈同步期間無法發款。 + + 與區塊鏈同步 + + 預估時間 + + 什麼時候該進行同步? 已複製至剪貼簿。 @@ -912,28 +991,6 @@ 請先輸入一個帳戶 要求帳戶 - - 同步 - - 同步期間無法發款。 - - 要與區塊鏈同步嗎? - - 20-45 分鐘 - - 如果交易在比特幣網上已經顯示為完成,但沒有出現在您的 BRD 上。 - - 你不斷收到「交易被拒」的錯誤。 - - 開始同步 - - 與區塊鏈同步期間無法發款。 - - 與區塊鏈同步 - - 預估時間 - - 什麼時候該進行同步? 了解如何節省交易費用,解鎖未來的財富。 @@ -977,19 +1034,24 @@ Touch ID 指紋驗證 + + 啟用 SegWit 是不可逆轉的功能。確定要繼續嗎? 您已啟用 SegWit! 感謝您協助推動比特幣向前發展。 SegWit 支援仍為測試功能。\n一旦 SegWit 被啟用,將無法停用。您將能夠在設定中找到舊版位址。\n啟用 SegWit 的使用者可能無法使用某些第三方服務,包括加密貨幣交易。在緊急情況下,您可以在偏好選項 > 比特幣設定中產生一個舊版位址。\n在未來更新中,SegWit 將自動為所有使用者啟用。 - - 啟用 SegWit 是不可逆轉的功能。確定要繼續嗎? 啟用 到月球 - FIO + + 比特幣位址專供一次性使用。 + + 重複使用會降低您與收受者的隱私,如果收受者無法直接控制該位址,可能會造成損失。 + + 位址已有人使用 金額 @@ -1000,10 +1062,10 @@ 到「設定」 > 「應用程式」 > 「BRD」 > 「權限」允許相機存取 BRD 尚未獲准存取相機 - - 請至「設定」允許存取相機。 BRD 未獲得存取相機的權限 + + 請至「設定」允許存取相機。 目的地為您自己的地址。您不能寄送給自己。 @@ -1070,12 +1132,12 @@ 無法載入付款要求 掃描 - - 發送上限: 寄送 匯出最大金額? + + 發送上限: 寄送 @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - 比特幣位址專供一次性使用。 - - 重複使用會降低您與收受者的隱私,如果收受者無法直接控制該位址,可能會造成損失。 - - 位址已有人使用 + FIO + + 啟用 Segwit + + 查看舊版接收位址 + + 請只發送比特幣(BTC)至此位址。任何發送到此位址的資產將永久遺失。 + + 接收比特幣 關於 @@ -1107,8 +1172,6 @@ 貨幣設定 參加「先行體驗」 - - 啟用 Segwit 您喜歡 BRD 嗎? @@ -1121,6 +1184,7 @@ 管理 通知 + Order History 其他 @@ -1145,12 +1209,6 @@ Touch ID 花費上限 指紋驗證花費限制 - - 查看舊版接收位址 - - 請只發送比特幣(BTC)至此位址。任何發送到此位址的資產將永久遺失。 - - 接收比特幣 錢包 @@ -1212,12 +1270,12 @@ 放心 輸入驗證人地址 + + 如果手機丟失,被盜,損壞或升級,則恢復短語是恢復BRD的唯一方法。 \n\n如果您更改設備上的安全設置,則還需要輸入恢復短語。 \n\n我們將為您顯示單詞列表,以便在紙上寫下並保持安全。 再次寫下恢復短語 如果手機丟失,被盜,損壞或升級,則恢復短語是恢復BRD的唯一方法。 \n\n我們將為您顯示單詞列表,以便在紙上寫下並保持安全。 - - 如果手機丟失,被盜,損壞或升級,則恢復短語是恢復BRD的唯一方法。 \n\n如果您更改設備上的安全設置,則還需要輸入恢復短語。 \n\n我們將為您顯示單詞列表,以便在紙上寫下並保持安全。 記下恢復短語 @@ -1339,9 +1397,9 @@ 下注到%1$s 開始餘額:%1$s + 至%1$s 代幣傳送費用:%1$s - 至%1$s 正在等待確認。部分商家要求確認完成交易。預估時間:1-2 小時。 @@ -1449,6 +1507,14 @@ 已於此地址接收 已傳送至此地址 + + 授權複製錢包地址至剪貼簿 + + 複製錢包地址 + + 複製錢包地址至剪貼簿? + + 複製 關閉至:%1$s @@ -1489,14 +1555,6 @@ PIN 碼更新錯誤 更新 PIN 碼 - - 複製錢包地址至剪貼簿? - - 授權複製錢包地址至剪貼簿 - - 複製錢包地址 - - 複製 請輸入您的 PIN 碼授權此交易。 @@ -1541,14 +1599,6 @@ Breadwallet 已經改名爲 BRD,有嶄新的面貌和一些新功能。\n\n如果需要協助,就在大部分畫面的右上角尋找(?)。 歡迎使用 BRD! - - 隨時了解您最喜歡的加密資產 - - 隨時了解您喜歡的加密資產 - - 資產清單 - - 資產 系統自動亮/暗 @@ -1583,6 +1633,14 @@ 白色的 黃色的 + + 隨時了解您最喜歡的加密資產 + + 隨時了解您喜歡的加密資產 + + 資產清單 + + 資產 主題背景顏色 diff --git a/brd-android/app-core/src/main/res/values/dimens.xml b/brd-android/app-core/src/main/res/values/dimens.xml index 68cf227b7..31a2c981c 100644 --- a/brd-android/app-core/src/main/res/values/dimens.xml +++ b/brd-android/app-core/src/main/res/values/dimens.xml @@ -12,7 +12,7 @@ 18sp 16dp - 32sp + 30sp 16dp 24dp 24dp diff --git a/brd-android/app-core/src/main/res/values/ids.xml b/brd-android/app-core/src/main/res/values/ids.xml index 72946e173..b81d202e0 100755 --- a/brd-android/app-core/src/main/res/values/ids.xml +++ b/brd-android/app-core/src/main/res/values/ids.xml @@ -29,4 +29,8 @@ + + + + diff --git a/brd-android/app-core/src/main/res/values/strings.xml b/brd-android/app-core/src/main/res/values/strings.xml index c4c698421..606cc0834 100644 --- a/brd-android/app-core/src/main/res/values/strings.xml +++ b/brd-android/app-core/src/main/res/values/strings.xml @@ -86,10 +86,10 @@ Money Sent! Fingerprint recognized - - Please enable storage permissions in your device settings: \"Settings\" > \"Apps\" > \"BRD\" > \"Permissions\". Any BCH in your wallet can be accessed through the home screen. + + Please enable storage permissions in your device settings: \"Settings\" > \"Apps\" > \"BRD\" > \"Permissions\". We\'ve detected an app that is incompatible with BRD running on your device. For security reasons, please disable any screen altering or light filtering apps to proceed. @@ -134,6 +134,8 @@ Successfully Authenticated BitID Authentication Request + + Home Buy @@ -148,8 +150,6 @@ Dismiss Done - - Home Ignore @@ -213,6 +213,14 @@ Verify that iCloud Keychain is ON I understand that this feature will not work unless iCloud Keychain is enabled. Your iCloud backup will be erased after %1$s more incorrect PIN attempts. + Paper Wallet Amount + Validating this paper wallet on the network may take up to 60 minutes + + The words entered do not match your recovery phrase. Please try again. + + To make sure everything was written down correctly, please enter the following words from your recovery phrase. + + Word #%1$s Amount to Send: Destination Tag @@ -233,14 +241,6 @@ To Total Cost: - Paper Wallet Amount - Validating this paper wallet on the network may take up to 60 minutes - - The words entered do not match your recovery phrase. Please try again. - - To make sure everything was written down correctly, please enter the following words from your recovery phrase. - - Word #%1$s Choose amount ($USD) Create Custom amount ($500 max) @@ -270,14 +270,14 @@ Exchange Rate Wallet disabled - - %1$s Address Request %1$s account information Request %1$s smart contract call Request %1$s payment + + %1$s Address This device isn\'t configured to send email with the iOS mail app. @@ -290,10 +290,8 @@ Messaging Unavailable Fingerprint not recognized. Please try again. - - Available: %s - - Buy + Order History + Rewards Loading ... @@ -309,52 +307,67 @@ Set amount to min %s - - From - - limit - - Loading Assets - - Fee - - Fetching partner rates - - One moment... - - Offers will appear here - - Limit max - - Limit min - - Maximum amount - - Minimum amount - - Network Fee - - Try another amount - - No offers available - - Offers - - Processing Fee - - Provider Fee - - Rate - - All values displayed are estimates and susceptible to market price fluctuations. - - Total - - Bought + + Create transfer failed + + Fee Estimate Failed + + Initialization error + + %1$s uses the %2$s network which requires %3$s to pay transaction fees. + + Top up %1$s balance + Network fee of %1$s %2$s required. + + %1$s Balance Low + + Insufficient %1$s native wallet balance, you will need at least %1$s to proceed. + + Network error + + Order error + + Transaction error + + Unknown error + + Region you selected is not supported, please select different region + + Let\'s see it! + + There\'s no better time to invest than today with our streamlined new interface. + + Buy & sell is now easier than ever! + + Trade your assets into another with just a few taps. Walk and trade baby! + + Trading assets is now even easier! + + It looks like you don’t have any assets in your wallet to sell yet. + + Buy Now + + Your wallet is empty + + Looks like you’re not holding assets that can be sold yet. + + Buy now + + No assets to sell + + We don’t have a partner that supports selling to %1$s in %2$s yet. + + Change location / currency + + Selling Unavailable + + Insufficient balance Great! View Receipt + + Bought Delivery @@ -375,12 +388,10 @@ Order sent! Order Successful! - - Over - - Active Trade Now + + Active This is an estimate. The amount you will receive will depend on the market conditions. @@ -399,32 +410,16 @@ BRD Rewards Trade preview - - Select Asset - - Sell Apply region Country - Currency + Display Currency - Region + State - My preferred region - - To - - Trade - - All your progress will be lost. - - No - - Are you sure? - - Yes + Set Region Failed to confirm transaction @@ -439,6 +434,68 @@ Failed transaction validation with %s Failed to validate currency or address + + Available: %s + + Buy + + From + + limit + + Loading Assets + + Fee + + Fetching partner rates + + One moment... + + Offers will appear here + + Limit max + + Limit min + + Maximum amount + + Minimum amount + + Network Fee + + Try another amount + + No offers available + + Offers + + Processing Fee + + Provider Fee + + Rate + + All values displayed are estimates and susceptible to market price fluctuations. + + Total + + Over + + Select Asset + + Sell + + To + + Trade + + View order details in Menu -> Order History + + No + + Exit Checkout? + + Yes Under @@ -532,10 +589,6 @@ Total Assets Trade - - Checking private key balance... - - Send %1$s from this private key into your wallet? The bitcoin network will receive a fee of %2$s. This private key is already in your wallet. @@ -546,6 +599,12 @@ Not a valid private key Error signing transaction + + Successfully imported wallet. + + Checking private key balance... + + Send %1$s from this private key into your wallet? The bitcoin network will receive a fee of %2$s. Import @@ -564,8 +623,6 @@ Scan Private Key Success - - Successfully imported wallet. Import Wallet @@ -739,10 +796,10 @@ A device screen lock is needed to safeguard your wallet. Enable screen lock in your settings to continue. Screen lock disabled - - Please write down your recovery phrase and store it somewhere that is safe and secure. Set up your recovery phrase in case you ever lose or replace your phone. Your key is also required if you change your phone\'s security settings. + + Please write down your recovery phrase and store it somewhere that is safe and secure. Action Required Don\'t ask again @@ -778,10 +835,10 @@ Notifications Disabled Turn on notifications to receive special offers and updates from BRD. - - You’re receiving special offers and updates from BRD. Looks like notifications are turned off. Please go to Settings to enable notifications from BRD. + + You’re receiving special offers and updates from BRD. Receive Push Notifications @@ -800,6 +857,28 @@ Rate BRD Rate BRD + + Sync + + You will not be able to send money while syncing. + + Sync with Blockchain? + + 20-45 minutes + + If a transaction shows as completed on the network but not in your BRD. + + You repeatedly get an error saying your transaction was rejected. + + Start Sync + + You will not be able to send money while syncing with the blockchain. + + Sync Blockchain + + Estimated time + + When to Sync? Copied to clipboard. @@ -912,28 +991,6 @@ Please enter an amount first. Request an Amount - - Sync - - You will not be able to send money while syncing. - - Sync with Blockchain? - - 20-45 minutes - - If a transaction shows as completed on the network but not in your BRD. - - You repeatedly get an error saying your transaction was rejected. - - Start Sync - - You will not be able to send money while syncing with the blockchain. - - Sync Blockchain - - Estimated time - - When to Sync? Learn how you can save on trading fees and unlock future rewards @@ -977,19 +1034,24 @@ Touch ID Fingerprint Authentication + + Enabling SegWit is an irreversible feature. Are you sure you want to continue? You have enabled SegWit! Thank you for helping move bitcoin forward. SegWit support is still a beta feature.\n\nOnce SegWit is enabled, it will not be possible\nto disable it. You will be able to find the legacy address under Settings. \n\nSome third-party services, including crypto trading, may be unavailable to users who have enabled SegWit. In case of emergency, you will be able to generate a legacy address from Preferences > Bitcoin Settings. \n\nSegWit will automatically be enabled for all\nusers in a future update. - - Enabling SegWit is an irreversible feature. Are you sure you want to continue? Enable To the Moon - FIO + + Bitcoin addresses are intended for single use only. + + Re-use reduces privacy for both you and the recipient and can result in loss if the recipient doesn\'t directly control the address. + + Address Already Used Amount @@ -1000,10 +1062,10 @@ Allow camera access in \"Settings\" > \"Apps\" > \"BRD\" > \"Permissions\" BRD is not allowed to access the camera - - Go to Settings to allow camera access. BRD is not allowed to access the camera + + Go to Settings to allow camera access. The destination is your own address. You cannot send to yourself. @@ -1070,12 +1132,12 @@ Could not load payment request Scan - - Sending Max: Send Send maximum amount? + + Sending Max: Send @@ -1083,12 +1145,15 @@ Invalid address. There is no %1$s address associated with this address. There was an error retrieving this address. Please try again later. - - Bitcoin addresses are intended for single use only. - - Re-use reduces privacy for both you and the recipient and can result in loss if the recipient doesn\'t directly control the address. - - Address Already Used + FIO + + Enable Segwit + + View Legacy Receive Address + + Only send Bitcoin (BTC) to this address. Any other asset sent to this address will be lost permanently. + + Receive Bitcoin About @@ -1107,8 +1172,6 @@ Currency Settings Join Early Access - - Enable Segwit Are you enjoying BRD? @@ -1121,6 +1184,7 @@ Manage Notifications + Order History Other @@ -1145,12 +1209,6 @@ Touch ID Spending Limit Fingerprint Authentication Spending Limit - - View Legacy Receive Address - - Only send Bitcoin (BTC) to this address. Any other asset sent to this address will be lost permanently. - - Receive Bitcoin Wallets @@ -1212,12 +1270,12 @@ Unstake Enter Validator Address + + Your recovery phrase is the only way to restore your BRD if your phone is lost, stolen, broken, or upgraded.\n\nYour recovery phrase is also required if you change the security settings on your device.\n\nWe will show you a list of words to write down on a piece of paper and keep safe. Write Down Recovery Phrase Again Your recovery phrase is the only way to restore your BRD if your phone is lost, stolen, broken, or upgraded.\n\nWe will show you a list of words to write down on a piece of paper and keep safe. - - Your recovery phrase is the only way to restore your BRD if your phone is lost, stolen, broken, or upgraded.\n\nYour recovery phrase is also required if you change the security settings on your device.\n\nWe will show you a list of words to write down on a piece of paper and keep safe. Write Down Recovery Phrase @@ -1339,9 +1397,9 @@ staking to %1$s Starting balance: %1$s + to %1$s Fee for token transfer: %1$s - to %1$s Waiting to be confirmed. Some merchants require confirmation to complete a transaction. Estimated time: 1-2 hours. @@ -1449,6 +1507,14 @@ Received at this Address Sent to this Address + + Authorize to copy wallet address to clipboard + + Copy Wallet Addresses + + Copy wallet addresses to clipboard? + + Copy Disabled until: %1$s @@ -1489,14 +1555,6 @@ Update PIN Error Update PIN - - Copy wallet addresses to clipboard? - - Authorize to copy wallet address to clipboard - - Copy Wallet Addresses - - Copy Please enter your PIN to authorize this transaction. @@ -1541,14 +1599,6 @@ Breadwallet has changed its name to BRD, with a brand new look and some new features.\n\nIf you need help, look for the (?) in the top right of most screens. Welcome to BRD! - - Stay up to date with your favorite crypto asset - - Stay up to date with your favorite crypto assets - - Asset list - - Asset System Auto Light / Dark @@ -1583,6 +1633,14 @@ White Yellow + + Stay up to date with your favorite crypto asset + + Stay up to date with your favorite crypto assets + + Asset list + + Asset Theme Background Colors diff --git a/brd-android/app/build.gradle.kts b/brd-android/app/build.gradle.kts index 90d7bde36..e5d8070cb 100644 --- a/brd-android/app/build.gradle.kts +++ b/brd-android/app/build.gradle.kts @@ -13,12 +13,19 @@ plugins { id("kotlin-parcelize") id("io.gitlab.arturbosch.detekt") version "1.0.1" id("dev.zacsweers.redacted") + id("org.jlleitschuh.gradle.ktlint") } plugins.apply(AppetizePlugin::class) apply(from = rootProject.file("gradle/google-services.gradle")) apply(from = rootProject.file("gradle/copy-font-files.gradle")) +configure { + verbose.set(true) + outputToConsole.set(true) + disabledRules.addAll("import-ordering", "no-wildcard-imports") +} + val BDB_CLIENT_TOKEN: String by project val useGoogleServices: Boolean by ext @@ -30,20 +37,22 @@ detekt { ignoreFailures = true } +project.tasks.register("postToSlack") + android { - compileSdkVersion(BrdRelease.ANDROID_COMPILE_SDK) - buildToolsVersion(BrdRelease.ANDROID_BUILD_TOOLS) + compileSdk = BrdRelease.ANDROID_COMPILE_SDK + buildToolsVersion = BrdRelease.ANDROID_BUILD_TOOLS defaultConfig { versionCode = BrdRelease.versionCode versionName = BrdRelease.versionName applicationId = "com.breadwallet" - minSdkVersion(BrdRelease.ANDROID_MINIMUM_SDK) - targetSdkVersion(BrdRelease.ANDROID_TARGET_SDK) + minSdk = BrdRelease.ANDROID_MINIMUM_SDK + targetSdk = BrdRelease.ANDROID_TARGET_SDK buildConfigField("int", "BUILD_VERSION", "${BrdRelease.buildVersion}") buildConfigField("String", "BDB_CLIENT_TOKEN", BDB_CLIENT_TOKEN) buildConfigField("Boolean", "USE_REMOTE_CONFIG", useGoogleServices.toString()) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - testInstrumentationRunnerArgument("clearPackageData", "true") + testInstrumentationRunnerArguments["clearPackageData"] = "true" } signingConfigs { create("FakeSigningConfig") { @@ -62,14 +71,13 @@ android { exclude("META-INF/*.kotlin_module") } // Specifies two flavor dimensions. - flavorDimensions("mode") + flavorDimensions.add("mode") productFlavors { create("brd") { applicationId = "com.breadwallet" dimension = "mode" resValue("string", "app_name", "BRD") buildConfigField("boolean", "BITCOIN_TESTNET", "false") - } create("brdTestnet") { applicationId = "com.breadwallet.testnet" @@ -78,7 +86,7 @@ android { buildConfigField("boolean", "BITCOIN_TESTNET", "true") } } - lintOptions { + lint { lintConfig = file("lint.xml") isQuiet = true isExplainIssues = true @@ -90,7 +98,7 @@ android { buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("FakeSigningConfig") - manifestPlaceholders(mapOf("applicationIcon" to "@mipmap/ic_launcher")) + manifestPlaceholders.putAll(mapOf("applicationIcon" to "@mipmap/ic_launcher")) isDebuggable = false isMinifyEnabled = false buildConfigField("boolean", "IS_INTERNAL_BUILD", "false") @@ -101,15 +109,17 @@ android { } (extensionOf(this, "firebaseCrashlytics") as CrashlyticsExtension).apply { nativeSymbolUploadEnabled = true - strippedNativeLibsDir = rootProject.file("external/walletkit/WalletKitJava/corenative-android/build/intermediates/stripped_native_libs/release/out").absolutePath - unstrippedNativeLibsDir = rootProject.file("external/walletkit/WalletKitJava/corenative-android/build/intermediates/cmake/release/obj").absolutePath + strippedNativeLibsDir = + rootProject.file("external/walletkit/WalletKitJava/WalletKitNative-Android/build/intermediates/stripped_native_libs/release/out").absolutePath + unstrippedNativeLibsDir = + rootProject.file("external/walletkit/WalletKitJava/WalletKitNative-Android/build/intermediates/cmake/release/obj").absolutePath } } } getByName("debug") { signingConfig = signingConfigs.getByName("FakeSigningConfig") applicationIdSuffix = ".debug" - manifestPlaceholders(mapOf("applicationIcon" to "@mipmap/ic_launcher_grayscale")) + manifestPlaceholders.putAll(mapOf("applicationIcon" to "@mipmap/ic_launcher_grayscale")) isDebuggable = true isJniDebuggable = true isMinifyEnabled = false @@ -124,8 +134,10 @@ android { } (extensionOf(this, "firebaseCrashlytics") as CrashlyticsExtension).apply { nativeSymbolUploadEnabled = true - strippedNativeLibsDir = rootProject.file("external/walletkit/WalletKitJava/corenative-android/build/intermediates/stripped_native_libs/debug/out").absolutePath - unstrippedNativeLibsDir = rootProject.file("external/walletkit/WalletKitJava/corenative-android/build/intermediates/cmake/debug/obj").absolutePath + strippedNativeLibsDir = + rootProject.file("external/walletkit/WalletKitJava/WalletKitNative-Android/build/intermediates/stripped_native_libs/debug/out").absolutePath + unstrippedNativeLibsDir = + rootProject.file("external/walletkit/WalletKitJava/WalletKitNative-Android/build/intermediates/cmake/debug/obj").absolutePath } } } @@ -140,6 +152,7 @@ android { viewBinding = true } compileOptions { + isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } @@ -156,9 +169,15 @@ android { } dependencies { + coreLibraryDesugaring(Libs.Androidx.DesugarJdkLibs) implementation(project(":cosmos-bundled")) implementation(project(":brd-android:app-core")) - implementation(Libs.WalletKit.CoreAndroid) + val overrideIdeCheck = gradle.startParameter.taskNames.any { it.contains("brd-android") } + if (System.getProperty("idea.active") == "true" && !overrideIdeCheck) { + implementation(Libs.WalletKit.CoreJRE) + } else { + implementation(Libs.WalletKit.CoreAndroid) + } implementation(Libs.Mobiuskt.Coroutines) implementation(Libs.Mobiuskt.Android) @@ -242,12 +261,15 @@ dependencies { implementation(Libs.Conductor.ViewPager) // Kodein DI - implementation(Libs.Kodein.CoreErasedJvm) + implementation(Libs.Kodein.Core) implementation(Libs.Kodein.FrameworkAndroidX) // Debugging/Monitoring debugImplementation(Libs.LeakCanary.Core) debugImplementation(Libs.AnrWatchdog.Core) + debugImplementation(Libs.Flipper.flipper) + debugImplementation(Libs.Flipper.flipperNetwork) + debugImplementation(Libs.Flipper.flipperSo) compileOnly(Libs.Redacted.Annotation) diff --git a/brd-android/app/src/androidTest/java/com/breadwallet/tools/manager/BRSharedPrefsTests.kt b/brd-android/app/src/androidTest/java/com/breadwallet/tools/manager/BRSharedPrefsTests.kt index 6cbd90565..5b4a087c1 100644 --- a/brd-android/app/src/androidTest/java/com/breadwallet/tools/manager/BRSharedPrefsTests.kt +++ b/brd-android/app/src/androidTest/java/com/breadwallet/tools/manager/BRSharedPrefsTests.kt @@ -10,8 +10,8 @@ package com.breadwallet.tools.manager import android.content.Context import android.content.SharedPreferences -import androidx.test.platform.app.InstrumentationRegistry import androidx.core.content.edit +import androidx.test.platform.app.InstrumentationRegistry import androidx.test.runner.AndroidJUnit4 import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/brd-android/app/src/androidTest/java/com/breadwallet/ui/RecoverWalletTests.kt b/brd-android/app/src/androidTest/java/com/breadwallet/ui/RecoverWalletTests.kt index 92c40b081..2787ac35f 100644 --- a/brd-android/app/src/androidTest/java/com/breadwallet/ui/RecoverWalletTests.kt +++ b/brd-android/app/src/androidTest/java/com/breadwallet/ui/RecoverWalletTests.kt @@ -65,4 +65,4 @@ class RecoverWalletTests : BaseTestCase() { } } } -} \ No newline at end of file +} diff --git a/brd-android/app/src/androidTest/java/com/breadwallet/util/Screens.kt b/brd-android/app/src/androidTest/java/com/breadwallet/util/Screens.kt index 0a6f514d0..d8f9cf72d 100644 --- a/brd-android/app/src/androidTest/java/com/breadwallet/util/Screens.kt +++ b/brd-android/app/src/androidTest/java/com/breadwallet/util/Screens.kt @@ -189,11 +189,14 @@ class KHomeScreen : Screen() { withId(R.id.menu_layout) } - val wallets = KRecyclerView({ - withId(R.id.rv_wallet_list) - }, itemTypeBuilder = { - itemType(::KWalletItem) - }) + val wallets = KRecyclerView( + { + withId(R.id.rv_wallet_list) + }, + itemTypeBuilder = { + itemType(::KWalletItem) + } + ) class KWalletItem(parent: Matcher) : KRecyclerItem(parent) { val name = KTextView(parent) { withId(R.id.wallet_name) } @@ -216,12 +219,15 @@ object KSettingsScreen : KScreen() { withId(R.id.close_button) } - val recycler = KRecyclerView({ - isCompletelyDisplayed() - withId(R.id.settings_list) - }, itemTypeBuilder = { - itemType(::KSettingsItem) - }) + val recycler = KRecyclerView( + { + isCompletelyDisplayed() + withId(R.id.settings_list) + }, + itemTypeBuilder = { + itemType(::KSettingsItem) + } + ) class KSettingsItem(parent: Matcher) : KRecyclerItem(parent) { val title = KTextView(parent) { withId(R.id.item_title) } @@ -280,12 +286,15 @@ class KWalletScreen : Screen() { withId(R.id.receive_button) } - val transactions = KRecyclerView({ - isDisplayed() - withId(R.id.tx_list) - }, itemTypeBuilder = { - itemType(::KTransactionItem) - }) + val transactions = KRecyclerView( + { + isDisplayed() + withId(R.id.tx_list) + }, + itemTypeBuilder = { + itemType(::KTransactionItem) + } + ) class KTransactionItem(parent: Matcher) : KRecyclerItem(parent) } diff --git a/brd-android/app/src/debug/java/DebugAppHooks.kt b/brd-android/app/src/debug/java/DebugAppHooks.kt index 2bbca0a30..e6d96872a 100644 --- a/brd-android/app/src/debug/java/DebugAppHooks.kt +++ b/brd-android/app/src/debug/java/DebugAppHooks.kt @@ -8,9 +8,42 @@ */ package com.breadwallet +import android.content.Context import com.breadwallet.app.BreadApp +import com.facebook.flipper.android.AndroidFlipperClient +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin +import com.facebook.flipper.plugins.inspector.DescriptorMapping +import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin +import com.facebook.flipper.plugins.navigation.NavigationFlipperPlugin +import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor +import com.facebook.flipper.plugins.network.NetworkFlipperPlugin +import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin +import com.facebook.soloader.SoLoader import com.github.anrwatchdog.ANRWatchDog +import okhttp3.Interceptor internal fun BreadApp.installHooks() { ANRWatchDog().start() + initializeFlipper(this) +} + +private fun initializeFlipper(context: Context) { + // Flipper init + SoLoader.init(context, false) + AndroidFlipperClient.getInstance(context).apply { + addPlugin( + InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()) + ) + addPlugin(networkFlipperPlugin) + addPlugin(SharedPreferencesFlipperPlugin(context)) + addPlugin(NavigationFlipperPlugin.getInstance()) + addPlugin(DatabasesFlipperPlugin(context)) + }.also { it.start() } +} + +private val networkFlipperPlugin = NetworkFlipperPlugin() + +@Suppress("RedundantNullableReturnType") +fun getFlipperOkhttpInterceptor(): Interceptor? { + return FlipperOkhttpInterceptor(networkFlipperPlugin) } diff --git a/brd-android/app/src/main/java/com/brd/api/AndroidBrdAuthProvider.kt b/brd-android/app/src/main/java/com/brd/api/AndroidBrdAuthProvider.kt index 85cc8db29..79c96b276 100644 --- a/brd-android/app/src/main/java/com/brd/api/AndroidBrdAuthProvider.kt +++ b/brd-android/app/src/main/java/com/brd/api/AndroidBrdAuthProvider.kt @@ -8,7 +8,7 @@ */ package com.brd.api -import com.breadwallet.crypto.Key +import com.blockset.walletkit.Key import com.breadwallet.logger.logError import com.breadwallet.tools.crypto.CryptoHelper import com.breadwallet.tools.manager.BRSharedPrefs @@ -16,9 +16,10 @@ import com.breadwallet.tools.security.BrdUserManager import com.platform.APIClient import java.io.IOException import java.util.Date -import java.util.TimeZone private const val GMT = "GMT" +private const val BRD_TOKEN_KEY = "BDB_TOKEN" +private const val BRD_TOKEN_STAGING_KEY = "BRD_TOKEN_STAGING" class AndroidBrdAuthProvider( private val userManager: BrdUserManager, @@ -47,7 +48,8 @@ class AndroidBrdAuthProvider( override fun publicKey(): String { val encodedPublicKey = checkNotNull(authKey).encodeAsPublic().toString(Charsets.UTF_8) - val hexDecodedKey = CryptoHelper.hexDecode(encodedPublicKey) ?: encodedPublicKey.toByteArray(Charsets.UTF_8) + val hexDecodedKey = + CryptoHelper.hexDecode(encodedPublicKey) ?: encodedPublicKey.toByteArray(Charsets.UTF_8) return CryptoHelper.base58Encode(hexDecodedKey) } @@ -55,7 +57,12 @@ class AndroidBrdAuthProvider( return BRSharedPrefs.getDeviceId() } - override fun sign(method: String, body: String, contentType: String, url: String): BrdAuthProvider.Signature { + override fun sign( + method: String, + body: String, + contentType: String, + url: String + ): BrdAuthProvider.Signature { val base58Body = try { if (body.isNotBlank()) { CryptoHelper.base58ofSha256(body.toByteArray(Charsets.UTF_8)) @@ -65,9 +72,9 @@ class AndroidBrdAuthProvider( "" } - APIClient.DATE_FORMAT.timeZone = TimeZone.getTimeZone(GMT) - val httpDate = APIClient.DATE_FORMAT.format(Date()) - .run { substring(0, indexOf(GMT) + GMT.length) } + val httpDate = APIClient.formatGmtDate(Date()) + ?.run { substring(0, indexOf(GMT) + GMT.length) } + .orEmpty() val requestString = """ $method @@ -83,6 +90,10 @@ class AndroidBrdAuthProvider( ) } + override fun clientToken(): String? { + return null + } + override fun walletId(): String? { return BRSharedPrefs.getWalletRewardId() } diff --git a/brd-android/app/src/main/java/com/breadwallet/app/BreadApp.kt b/brd-android/app/src/main/java/com/breadwallet/app/BreadApp.kt index d606578e6..1245947e1 100644 --- a/brd-android/app/src/main/java/com/breadwallet/app/BreadApp.kt +++ b/brd-android/app/src/main/java/com/breadwallet/app/BreadApp.kt @@ -19,6 +19,8 @@ import androidx.camera.core.* import androidx.core.content.* import androidx.lifecycle.* import androidx.security.crypto.* +import com.blockset.walletkit.Api +import com.blockset.walletkit.brd.ApiProvider import com.brd.addressresolver.* import com.brd.api.* import com.brd.bakerapi.* @@ -27,10 +29,7 @@ import com.brd.prefs.* import com.breadwallet.* import com.breadwallet.BuildConfig import com.breadwallet.breadbox.* -import com.breadwallet.corecrypto.* -import com.breadwallet.crypto.CryptoApi -import com.breadwallet.crypto.WalletManagerMode -import com.breadwallet.crypto.blockchaindb.* +import com.breadwallet.di.getAppModule import com.breadwallet.logger.* import com.breadwallet.platform.interfaces.* import com.breadwallet.repository.* @@ -44,35 +43,33 @@ import com.breadwallet.util.* import com.breadwallet.util.usermetrics.* import com.platform.* import com.platform.interfaces.* -import com.platform.interfaces.WalletProvider import com.platform.sqlite.* import com.platform.tools.* import drewcarlson.blockset.* import io.ktor.client.* -import io.ktor.client.engine.okhttp.OkHttp import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import okhttp3.* -import org.kodein.di.* -import org.kodein.di.android.x.* -import org.kodein.di.erased.* +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.DirectDI +import org.kodein.di.android.x.androidXModule +import org.kodein.di.direct +import org.kodein.di.instance import java.io.* -import java.lang.IllegalAccessException -import java.lang.System import java.util.* import java.util.regex.* private const val LOCK_TIMEOUT = 180_000L // 3 minutes in milliseconds -private const val ENCRYPTED_PREFS_FILE = "crypto_shared_prefs" -private const val ENCRYPTED_GIFT_BACKUP_FILE = "gift_shared_prefs" -private const val WALLETKIT_DATA_DIR_NAME = "cryptocore" + +const val WALLETKIT_DATA_DIR_NAME = "cryptocore" @Suppress("TooManyFunctions") -class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { +class BreadApp : Application(), DIAware, CameraXConfig.Provider { companion object { init { - CryptoApi.initialize(CryptoApiProvider.getInstance()) + Api.initialize(ApiProvider.getInstance()) } // The wallet ID is in the form "xxxx xxxx xxxx xxxx" where x is a lowercase letter or a number. @@ -86,17 +83,6 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { @SuppressLint("StaticFieldLeak") private var mCurrentActivity: Activity? = null - /** [CoroutineScope] matching the lifetime of the application. */ - val applicationScope = CoroutineScope( - SupervisorJob() + Dispatchers.Default + errorHandler("applicationScope") - ) - - private val startedScope = CoroutineScope( - SupervisorJob() + Dispatchers.Default + errorHandler("startedScope") - ) - - fun getBreadBox(): BreadBox = mInstance.direct.instance() - // TODO: Find better place/means for this fun getDefaultEnabledWallets() = when { BuildConfig.BITCOIN_TESTNET -> listOf( @@ -112,23 +98,12 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { ) } - fun getDefaultWalletModes() = when { - BuildConfig.BITCOIN_TESTNET -> mapOf( - "bitcoin-testnet:__native__" to WalletManagerMode.API_ONLY, - "bitcoincash-testnet:__native__" to WalletManagerMode.API_ONLY - ) - else -> mapOf( - "bitcoin-mainnet:__native__" to WalletManagerMode.API_ONLY, - "bitcoincash-mainnet:__native__" to WalletManagerMode.API_ONLY, - ) - } - /** * Initialize the wallet id (rewards id), and save it in the SharedPreferences. */ - private fun initializeWalletId() { - applicationScope.launch(Dispatchers.Main) { - val walletId = getBreadBox() + private fun initializeWalletId(appScope: CoroutineScope, breadBox: BreadBox) { + appScope.launch(Dispatchers.Main) { + val walletId = breadBox .wallets(false) .mapNotNull { wallets -> wallets.find { it.currency.code.isEthereum() } @@ -209,154 +184,27 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { mCurrentActivity = app } - /** Provides access to [DKodein]. Meant only for Java compatibility. **/ + /** Provides access to [DirectDI]. Meant only for Java compatibility. **/ @JvmStatic - fun getKodeinInstance(): DKodein { + fun getKodeinInstance(): DirectDI { return mInstance.direct } } - override val kodein by Kodein.lazy { - importOnce(androidXModule(this@BreadApp)) - - bind() with singleton { - CryptoUriParser(instance()) - } - - bind() with singleton { - APIClient(this@BreadApp, direct.instance(), direct.instance(), createHttpHeaders()) - } - - bind() with singleton { - CryptoUserManager(this@BreadApp, ::createCryptoEncryptedPrefs, instance()) - } - - bind() with singleton { - SharedPrefsGiftBackup(::createGiftBackupEncryptedPrefs) - } - - bind() with singleton { - KVStoreManager(this@BreadApp) - } - - val metaDataManager by lazy { MetaDataManager(direct.instance()) } - - bind() with singleton { metaDataManager } - - bind() with singleton { metaDataManager } - - bind() with singleton { OkHttpClient() } - - bind() with singleton { - val httpClient = instance() - BdbAuthInterceptor(httpClient, direct.instance()) - } - - bind() with singleton { - val httpClient = instance() - val authInterceptor = instance() - BlockchainDb( - httpClient.newBuilder() - .addInterceptor(authInterceptor) - .build() - ) - } - - bind() with singleton { - HttpClient(OkHttp) { - engine { - config { - retryOnConnectionFailure(true) - } - } - } - } - - bind() with singleton { - BdbService.create(AndroidBdbAuthProvider(instance())) - } - - bind() with singleton { - AddressResolver(instance(), !BuildConfig.BITCOIN_TESTNET) - } - - bind() with singleton { - CoreBreadBox( - File(filesDir, WALLETKIT_DATA_DIR_NAME), - !BuildConfig.BITCOIN_TESTNET, - instance(), - instance(), - instance() - ) - } - - bind() with singleton { ExperimentsRepositoryImpl } - - bind() with singleton { RatesRepository.getInstance(this@BreadApp) } - - bind() with singleton { - RatesFetcher( - instance(), - instance(), - this@BreadApp - ) - } - - bind() with singleton { - ConversionTracker(instance()) - } - - bind() with singleton { - GiftTracker(instance(), instance()) - } - - bind() with singleton { - val connectivityManager = - this@BreadApp.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - NetworkCallbacksConnectivityStateProvider(connectivityManager) - } else { - InternetManager(connectivityManager, this@BreadApp) - } - } - - bind() with singleton { - SupportManager( - this@BreadApp, - instance(), - instance() - ) - } - - bind() with singleton { - val brdPreferences = instance() - val customHost = brdPreferences.debugApiHost?.run(BrdApiHost::Custom) - val host = customHost ?: BrdApiHost.hostFor(BuildConfig.DEBUG, brdPreferences.hydraActivated) - BrdApiClient.create(host, AndroidBrdAuthProvider(instance()), instance()) - } - - bind() with singleton { - val prefs = getSharedPreferences(BRSharedPrefs.PREFS_NAME, Context.MODE_PRIVATE) - AndroidPreferences(prefs) - } + private val startedScope = CoroutineScope( + SupervisorJob() + Dispatchers.Default + errorHandler("startedScope") + ) - bind() with singleton { - BrdPreferences(instance()) - } - - bind() with singleton { - BakersApiClient.create(instance()) - } - - bind() with singleton { - val exchangePrefs = applicationContext.getSharedPreferences("ExchangeDataLoader", MODE_PRIVATE) - ExchangeDataLoader(instance(), AndroidPreferences(exchangePrefs)) - } + override val di by DI.lazy { + importOnce(androidXModule(this@BreadApp)) + importOnce(getAppModule(this@BreadApp)) } private var accountLockJob: Job? = null + /** [CoroutineScope] matching the lifetime of the application. */ + private val applicationScope by instance() + private val brdApi by instance() private val apiClient by instance() private val giftTracker by instance() @@ -366,6 +214,7 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { private val conversionTracker by instance() private val connectivityStateProvider by instance() private val brdPreferences by instance() + private val breadBox by instance() override fun onCreate() { super.onCreate() @@ -388,6 +237,7 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { } } + CoreBreadBox.setWords() applicationScope.launch { ServerBundlesHelper.extractBundlesIfNeeded(mInstance) TokenUtil.initialize(mInstance, false, !BuildConfig.BITCOIN_TESTNET) @@ -409,7 +259,6 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { private fun handleOnStart() { accountLockJob?.cancel() BreadBoxCloseWorker.cancelEnqueuedWork() - val breadBox = getBreadBox() userManager .stateChanges() .distinctUntilChanged() @@ -447,7 +296,7 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { } connectivityStateProvider.close() - getBreadBox().apply { if (isOpen) close() } + breadBox.apply { if (isOpen) close() } applicationScope.cancel() } @@ -463,12 +312,10 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { breadBox.open(account) } - initializeWalletId() + initializeWalletId(applicationScope, breadBox) applicationScope.launch { - if (!brdPreferences.hydraActivated) { - preflight() - } + preflight() BRDFirebaseMessagingService.initialize(context) if (!brdPreferences.hydraActivated) { @@ -487,12 +334,17 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { } private suspend fun preflight() { - val preflight = brdApi.preflight() - if (preflight?.activate == true) { - brdPreferences.hydraActivated = true - userManager.removeToken() - brdApi.host = BrdApiHost.hostFor(BuildConfig.DEBUG, true) - brdApi.getMe() // NOTE: refresh token immediately + if (!brdPreferences.hydraActivated) { + val preflight = brdApi.preflight() + if (preflight?.activate == true) { + brdPreferences.hydraActivated = true + userManager.removeToken() + brdApi.host = BrdApiHost.hostFor(BuildConfig.DEBUG, true) + } + } + if (brdPreferences.hydraActivated && !brdPreferences.isRewardsAddressSet) { + brdPreferences.isRewardsAddressSet = + brdApi.setMe(breadBox.wallet(eth).first().target.toString()) } } @@ -503,33 +355,6 @@ class BreadApp : Application(), KodeinAware, CameraXConfig.Provider { ) } - private fun createCryptoEncryptedPrefs(): SharedPreferences? = createEncryptedPrefs(ENCRYPTED_PREFS_FILE) - private fun createGiftBackupEncryptedPrefs(): SharedPreferences? = createEncryptedPrefs(ENCRYPTED_GIFT_BACKUP_FILE) - - private fun createEncryptedPrefs(fileName: String): SharedPreferences? { - val masterKeys = try { - MasterKey.Builder(this) - .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) - .build() - } catch (e: Throwable) { - BRReportsManager.error("Failed to create Master Keys", e) - return null - } - - return try { - EncryptedSharedPreferences.create( - this@BreadApp, - fileName, - masterKeys, - EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, - EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM - ) - } catch (e: Throwable) { - BRReportsManager.error("Failed to create Encrypted Shared Preferences", e) - null - } - } - override fun getCameraXConfig(): CameraXConfig { return Camera2Config.defaultConfig() } diff --git a/brd-android/app/src/main/java/com/breadwallet/app/GiftTracker.kt b/brd-android/app/src/main/java/com/breadwallet/app/GiftTracker.kt index e094ae4ab..f80ccc795 100644 --- a/brd-android/app/src/main/java/com/breadwallet/app/GiftTracker.kt +++ b/brd-android/app/src/main/java/com/breadwallet/app/GiftTracker.kt @@ -11,10 +11,10 @@ package com.breadwallet.app import com.breadwallet.breadbox.BreadBox import com.breadwallet.breadbox.createSweeper import com.breadwallet.breadbox.isSyncing -import com.breadwallet.crypto.Amount -import com.breadwallet.crypto.Key -import com.breadwallet.crypto.errors.WalletSweeperError -import com.breadwallet.crypto.errors.WalletSweeperInsufficientFundsError +import com.blockset.walletkit.Amount +import com.blockset.walletkit.Key +import com.blockset.walletkit.errors.WalletSweeperError +import com.blockset.walletkit.errors.WalletSweeperInsufficientFundsError import com.breadwallet.platform.entities.GiftMetaData import com.breadwallet.platform.entities.TxMetaDataValue import com.breadwallet.platform.interfaces.AccountMetaDataProvider diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/BdbAuthInterceptor.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/BdbAuthInterceptor.kt index 53bed2889..26ffd5ff1 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/BdbAuthInterceptor.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/BdbAuthInterceptor.kt @@ -10,8 +10,7 @@ package com.breadwallet.breadbox import android.util.Base64 import com.breadwallet.BuildConfig -import com.breadwallet.app.BreadApp -import com.breadwallet.crypto.Key +import com.blockset.walletkit.Key import com.breadwallet.logger.logDebug import com.breadwallet.logger.logError import com.breadwallet.tools.crypto.CryptoHelper @@ -24,6 +23,7 @@ import com.breadwallet.tools.security.BrdUserState import com.google.android.gms.tasks.Tasks import com.google.firebase.ktx.Firebase import com.google.firebase.remoteconfig.ktx.remoteConfig +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first @@ -52,10 +52,12 @@ private const val BDB_TOKEN_KEY = "BDB_TOKEN" class BdbAuthInterceptor( private val httpClient: OkHttpClient, - private val userManager: BrdUserManager + private val userManager: BrdUserManager, + scope: CoroutineScope ) : Interceptor { - private val mutex = Mutex() + private val mutex = + Mutex() private val jwtHeader = JSONObject() .put("alg", "ES256") @@ -68,7 +70,9 @@ class BdbAuthInterceptor( init { if (BuildConfig.USE_REMOTE_CONFIG) { clientToken = Firebase.remoteConfig.getString(BDB_TOKEN_KEY) - BreadApp.applicationScope.launch { fetchClientToken() } + scope.launch { + fetchClientToken() + } } else { clientToken = BuildConfig.BDB_CLIENT_TOKEN } diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/BreadBoxCloseWorker.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/BreadBoxCloseWorker.kt index 38428c892..c018d1218 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/BreadBoxCloseWorker.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/BreadBoxCloseWorker.kt @@ -14,18 +14,18 @@ import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters import com.breadwallet.logger.logDebug -import org.kodein.di.KodeinAware -import org.kodein.di.android.kodein +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI import org.kodein.di.direct -import org.kodein.di.erased.instance +import org.kodein.di.instance import java.util.concurrent.TimeUnit /** Immediately closes BreadBox. */ class BreadBoxCloseWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams), - KodeinAware { + DIAware { - override val kodein by kodein(applicationContext) + override val di by closestDI { context.applicationContext } override fun doWork() = with(direct.instance()) { diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/CoreBreadBox.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/CoreBreadBox.kt index 4e450c9d3..29c8411bb 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/CoreBreadBox.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/CoreBreadBox.kt @@ -8,32 +8,14 @@ */ package com.breadwallet.breadbox +import com.blockset.walletkit.Account +import com.blockset.walletkit.Key +import com.blockset.walletkit.Network +import com.blockset.walletkit.System +import com.blockset.walletkit.SystemClient +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.Wallet import com.breadwallet.app.BreadApp -import com.breadwallet.crypto.Account -import com.breadwallet.crypto.Key -import com.breadwallet.crypto.Network -import com.breadwallet.crypto.System -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.Wallet -import com.breadwallet.crypto.WalletManager -import com.breadwallet.crypto.WalletManagerState -import com.breadwallet.crypto.blockchaindb.BlockchainDb -import com.breadwallet.crypto.events.network.NetworkEvent -import com.breadwallet.crypto.events.system.SystemDiscoveredNetworksEvent -import com.breadwallet.crypto.events.system.SystemEvent -import com.breadwallet.crypto.events.system.SystemListener -import com.breadwallet.crypto.events.system.SystemNetworkAddedEvent -import com.breadwallet.crypto.events.transfer.TranferEvent -import com.breadwallet.crypto.events.wallet.WalletEvent -import com.breadwallet.crypto.events.wallet.WalletTransferAddedEvent -import com.breadwallet.crypto.events.wallet.WalletTransferChangedEvent -import com.breadwallet.crypto.events.wallet.WalletTransferDeletedEvent -import com.breadwallet.crypto.events.wallet.WalletTransferSubmittedEvent -import com.breadwallet.crypto.events.walletmanager.WalletManagerChangedEvent -import com.breadwallet.crypto.events.walletmanager.WalletManagerCreatedEvent -import com.breadwallet.crypto.events.walletmanager.WalletManagerEvent -import com.breadwallet.crypto.events.walletmanager.WalletManagerSyncProgressEvent -import com.breadwallet.crypto.events.walletmanager.WalletManagerSyncRecommendedEvent import com.breadwallet.ext.throttleLatest import com.breadwallet.logger.logDebug import com.breadwallet.logger.logInfo @@ -48,22 +30,17 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.cancel -import kotlinx.coroutines.channels.BroadcastChannel -import kotlinx.coroutines.channels.Channel.Factory.BUFFERED -import kotlinx.coroutines.channels.Channel.Factory.CONFLATED import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.dropWhile -import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach -import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.transform import kotlinx.coroutines.launch @@ -81,16 +58,17 @@ internal class CoreBreadBox( private val storageFile: File, override val isMainnet: Boolean = false, private val walletProvider: WalletProvider, - private val blockchainDb: BlockchainDb, + private val blockchainDb: SystemClient, private val userManager: BrdUserManager -) : BreadBox, - SystemListener { - - init { - // Set default words list - val context = BreadApp.getBreadContext() - val words = Bip39Reader.getBip39Words(context, BRSharedPrefs.recoveryKeyLanguage) - Key.setDefaultWordList(words) +) : BreadBox { + + companion object { + fun setWords() { + // Set default words list + val context = BreadApp.getBreadContext() + val words = Bip39Reader.getBip39Words(context, BRSharedPrefs.recoveryKeyLanguage) + Key.setDefaultWordList(words) + } } @Volatile @@ -101,15 +79,8 @@ internal class CoreBreadBox( SupervisorJob() + Dispatchers.Default + errorHandler("openScope") ) - private val systemChannel = BroadcastChannel(CONFLATED) - private val accountChannel = BroadcastChannel(CONFLATED) - private val walletsChannel = BroadcastChannel(CONFLATED) - private val walletTransfersChannelMap = BroadcastChannel(BUFFERED) - private val transferUpdatedChannelMap = BroadcastChannel(BUFFERED) - private var networkManager: NetworkManager? = null - - private val isDiscoveryComplete = AtomicBoolean(false) + private val systemListener = SystemListenerImpl() private val _isOpen = AtomicBoolean(false) override var isOpen: Boolean get() = _isOpen.get() @@ -133,7 +104,7 @@ internal class CoreBreadBox( fun newSystem() = System.create( systemExecutor, - this@CoreBreadBox, + systemListener, account, isMainnet, storageFile.absolutePath, @@ -152,14 +123,8 @@ internal class CoreBreadBox( system, openScope + systemExecutor.asCoroutineDispatcher(), listOf(DefaultNetworkInitializer(userManager)) - ) - systemChannel.offer(Unit) - accountChannel.offer(Unit) - system.wallets?.let { wallets -> - walletsChannel.offer(Unit) - wallets.forEach { wallet -> - walletTransfersChannelMap.offer(wallet.eventKey()) - } + ).also { + systemListener.init(it, system) } } @@ -169,9 +134,7 @@ internal class CoreBreadBox( .enabledWallets() .onEach { enabledWallets -> networkManager?.enabledWallets = enabledWallets - system?.wallets?.let { - walletsChannel.offer(Unit) - } + systemListener.updateWallets(system?.wallets) } .launchIn(openScope) @@ -179,9 +142,7 @@ internal class CoreBreadBox( .walletModes() .onEach { modes -> networkManager?.managerModes = modes - system?.wallets?.let { - walletsChannel.offer(Unit) - } + systemListener.updateWallets(system?.wallets) } .launchIn(openScope) @@ -212,25 +173,25 @@ internal class CoreBreadBox( } override fun system(): Flow = - systemChannel - .asFlow() + systemListener.systemEvents .dropWhile { !isOpen } .mapNotNull { system } - override fun account() = - accountChannel - .asFlow() - .mapNotNull { system?.account } + override fun account(): Flow = + systemListener.account.filterNotNull() - override fun wallets(filterByTracked: Boolean) = - walletsChannel - .asFlow() + override fun wallets(filterByTracked: Boolean): Flow> = + combine( + systemListener.walletEvents, + systemListener.walletManagerEvents, + systemListener.wallets + ) { _, _, wallets -> wallets } .throttleLatest(AGGRESSIVE_THROTTLE_MS) - .mapNotNull { - val wallets = system?.wallets + .filterNotNull() + .mapNotNull { wallets -> when { filterByTracked -> { - wallets?.filterByCurrencyIds( + wallets.filterByCurrencyIds( walletProvider.enabledWallets().first() ) } @@ -238,20 +199,24 @@ internal class CoreBreadBox( } } - override fun wallet(currencyCode: String) = - walletsChannel - .asFlow() + override fun wallet(currencyCode: String): Flow = + combine( + systemListener.walletEvents, + systemListener.walletManagerEvents, + systemListener.wallets + ) { _, _, wallets -> wallets } .throttleLatest(DEFAULT_THROTTLE_MS) + .filterNotNull() .run { if (currencyCode.contains(":")) { - mapNotNull { - system?.wallets?.firstOrNull { + mapNotNull { wallet -> + wallet.firstOrNull { it.currency.uids.equals(currencyCode, true) } } } else { - mapNotNull { - system?.wallets?.firstOrNull { + mapNotNull { wallet -> + wallet.firstOrNull { it.currency.code.equals(currencyCode, true) } } @@ -274,56 +239,51 @@ internal class CoreBreadBox( }.throttleLatest(AGGRESSIVE_THROTTLE_MS) .distinctUntilChanged() - override fun walletTransfers(currencyCode: String) = - walletTransfersChannelMap - .asFlow() - .onStart { emit(currencyCode) } - .filter { currencyCode.equals(it, true) } - .throttleLatest(AGGRESSIVE_THROTTLE_MS) - .mapNotNull { - system?.wallets - ?.find { it.currency.code.equals(currencyCode, true) } - ?.transfers + override fun walletTransfers(currencyCode: String): Flow> = + combine( + systemListener.transferEvents, + systemListener.walletEvents, + systemListener.transfers.mapNotNull { walletMap -> + walletMap.keys + .find { currencyCode.equals(it.currency.code, true) } + ?.run(walletMap::get) } + ) { _, _, walletTransfers -> walletTransfers } + .throttleLatest(AGGRESSIVE_THROTTLE_MS) override fun walletTransfer(currencyCode: String, transferHash: String): Flow { - return transferUpdatedChannelMap - .asFlow() - .filter { transfer -> - transfer.wallet.currency.code.equals(currencyCode, true) && - transfer.hash.isPresent && - transfer.hashString().equals(transferHash, true) + return combine( + systemListener.transferEvents, + systemListener.walletEvents, + systemListener.transfers.mapNotNull { walletMap -> + walletMap.keys + .find { currencyCode.equals(it.currency.code, true) } + ?.run(walletMap::get) } - .onStart { - system?.wallets - ?.find { it.currency.code.equals(currencyCode, true) } - ?.transfers - ?.firstOrNull { - it.hash.isPresent && it.hashString() == transferHash - } - ?.also { emit(it) } + ) { _, _, transfers -> transfers } + .mapNotNull { transfers -> + transfers.find { transfer -> + transfer.wallet.currency.code.equals(currencyCode, true) && + transfer.hash.isPresent && + transfer.hashString().equals(transferHash, true) + } } } override fun walletTransfer(currencyCode: String, transfer: Transfer): Flow { - val targetWallet = { wallet: Wallet -> wallet.currency.code.equals(currencyCode, true) } - val targetTransfer = { updatedTransfer: Transfer -> - (transfer == updatedTransfer || (transfer.hash.isPresent && transfer.hash == updatedTransfer.hash)) - } - return transferUpdatedChannelMap - .asFlow() - .filter { updatedTransfer -> - updatedTransfer.wallet.currency.code.equals(currencyCode, true) && - targetTransfer(updatedTransfer) + return combine( + systemListener.transfer, + systemListener.walletEvents, + systemListener.transfers.mapNotNull { walletsMap -> + walletsMap.keys + .find { it.currency.code.equals(currencyCode, true) } + ?.run(walletsMap::get) } - .onStart { - emit( - system?.wallets - ?.firstOrNull(targetWallet) - ?.transfers - ?.firstOrNull(targetTransfer) - ?: return@onStart - ) + ) { _, _, transfers -> transfers } + .mapNotNull { transfers -> + transfers.find { updatedTransfer -> + (transfer == updatedTransfer || (transfer.hash.isPresent && transfer.hash == updatedTransfer.hash)) + } } } @@ -361,7 +321,7 @@ internal class CoreBreadBox( override fun networks(whenDiscoveryComplete: Boolean): Flow> = system().transform { if (whenDiscoveryComplete) { - if (isDiscoveryComplete.get()) { + if (systemListener.discovery.value) { emit(it.networks) } } else { @@ -370,88 +330,4 @@ internal class CoreBreadBox( } override fun getSystemUnsafe(): System? = system - - override fun handleWalletEvent( - system: System, - manager: WalletManager, - wallet: Wallet, - event: WalletEvent - ) { - walletsChannel.offer(Unit) - - fun updateTransfer(transfer: Transfer) { - transferUpdatedChannelMap.offer(transfer) - walletTransfersChannelMap.offer(wallet.eventKey()) - } - - when (event) { - is WalletTransferSubmittedEvent -> - updateTransfer(event.transfer) - is WalletTransferDeletedEvent -> - updateTransfer(event.transfer) - is WalletTransferAddedEvent -> - updateTransfer(event.transfer) - is WalletTransferChangedEvent -> - updateTransfer(event.transfer) - } - } - - override fun handleManagerEvent( - system: System, - manager: WalletManager, - event: WalletManagerEvent - ) { - walletsChannel.offer(Unit) - - when (event) { - is WalletManagerCreatedEvent -> { - logDebug("Wallet Manager Created: '${manager.name}' mode ${manager.mode}") - networkManager?.connectManager(manager) - } - is WalletManagerChangedEvent -> { - val fromStateType = event.oldState.type - val toStateType = event.newState.type - logDebug("(${manager.currency.code}) State Changed from='$fromStateType' to='$toStateType'") - - if (fromStateType != WalletManagerState.Type.CONNECTED && - toStateType == WalletManagerState.Type.CONNECTED - ) { - logDebug("Wallet Manager Connected: '${manager.name}'") - networkManager?.registerCurrencies(manager) - } - } - is WalletManagerSyncRecommendedEvent -> { - logDebug("Syncing '${manager.currency.code}' to ${event.depth}") - manager.syncToDepth(event.depth) - } - } - } - - override fun handleNetworkEvent(system: System, network: Network, event: NetworkEvent) = Unit - - override fun handleSystemEvent(system: System, event: SystemEvent) { - when (event) { - is SystemNetworkAddedEvent -> { - logDebug("Network '${event.network.name}' added.") - networkManager?.initializeNetwork(event.network) - } - is SystemDiscoveredNetworksEvent -> { - isDiscoveryComplete.set(true) - } - } - systemChannel.offer(Unit) - } - - override fun handleTransferEvent( - system: System, - manager: WalletManager, - wallet: Wallet, - transfer: Transfer, - event: TranferEvent - ) { - transferUpdatedChannelMap.offer(transfer) - walletTransfersChannelMap.offer(wallet.eventKey()) - } - - private fun Wallet.eventKey() = currency.code.toLowerCase(Locale.ROOT) } diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/DefaultNetworkInitializer.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/DefaultNetworkInitializer.kt index 8247c7a0b..eaca6eac5 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/DefaultNetworkInitializer.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/DefaultNetworkInitializer.kt @@ -8,11 +8,11 @@ */ package com.breadwallet.breadbox -import com.breadwallet.crypto.Network -import com.breadwallet.crypto.System -import com.breadwallet.crypto.errors.AccountInitializationCantCreateError -import com.breadwallet.crypto.errors.AccountInitializationError -import com.breadwallet.crypto.errors.AccountInitializationMultipleHederaAccountsError +import com.blockset.walletkit.Network +import com.blockset.walletkit.System +import com.blockset.walletkit.errors.AccountInitializationCantCreateError +import com.blockset.walletkit.errors.AccountInitializationError +import com.blockset.walletkit.errors.AccountInitializationMultipleHederaAccountsError import com.breadwallet.tools.security.BrdUserManager class DefaultNetworkInitializer(private val userManager: BrdUserManager) : NetworkInitializer { diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkInitializer.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkInitializer.kt index e95704d33..64991eff1 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkInitializer.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkInitializer.kt @@ -8,9 +8,9 @@ */ package com.breadwallet.breadbox -import com.breadwallet.crypto.Network -import com.breadwallet.crypto.System -import com.breadwallet.crypto.errors.AccountInitializationError +import com.blockset.walletkit.Network +import com.blockset.walletkit.System +import com.blockset.walletkit.errors.AccountInitializationError interface NetworkInitializer { suspend fun initialize(system: System, network: Network, createIfNeeded: Boolean): NetworkState @@ -27,4 +27,3 @@ sealed class NetworkState { val message: String? = null ) : NetworkState() } - diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkManager.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkManager.kt index 5f43e0633..0cf239667 100644 --- a/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkManager.kt +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/NetworkManager.kt @@ -8,13 +8,13 @@ */ package com.breadwallet.breadbox -import com.breadwallet.crypto.AddressScheme -import com.breadwallet.crypto.Network -import com.breadwallet.crypto.NetworkPeer -import com.breadwallet.crypto.System -import com.breadwallet.crypto.Wallet -import com.breadwallet.crypto.WalletManager -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.AddressScheme +import com.blockset.walletkit.Network +import com.blockset.walletkit.NetworkPeer +import com.blockset.walletkit.System +import com.blockset.walletkit.Wallet +import com.blockset.walletkit.WalletManager +import com.blockset.walletkit.WalletManagerMode import com.breadwallet.logger.logDebug import com.breadwallet.tools.manager.BRSharedPrefs import com.breadwallet.util.isBitcoin @@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onStart - import kotlinx.coroutines.launch import java.util.concurrent.ConcurrentHashMap diff --git a/brd-android/app/src/main/java/com/breadwallet/breadbox/SystemListenerImpl.kt b/brd-android/app/src/main/java/com/breadwallet/breadbox/SystemListenerImpl.kt new file mode 100644 index 000000000..b781d6b13 --- /dev/null +++ b/brd-android/app/src/main/java/com/breadwallet/breadbox/SystemListenerImpl.kt @@ -0,0 +1,187 @@ +/** + * SystemListenerImpl + * + * Created by Amit Goel on 9/8/21. + * Copyright (c) 2021 Breadwinner AG + * + * SPDX-License-Identifier: BUSL-1.1 + */ +package com.breadwallet.breadbox + +import com.blockset.walletkit.Account +import com.blockset.walletkit.Network +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.System +import com.blockset.walletkit.Wallet +import com.blockset.walletkit.WalletManager +import com.blockset.walletkit.WalletManagerState +import com.blockset.walletkit.events.network.NetworkEvent +import com.blockset.walletkit.events.system.SystemDiscoveredNetworksEvent +import com.blockset.walletkit.events.system.SystemEvent +import com.blockset.walletkit.events.system.SystemListener +import com.blockset.walletkit.events.system.SystemNetworkAddedEvent +import com.blockset.walletkit.events.transfer.TransferEvent +import com.blockset.walletkit.events.wallet.WalletEvent +import com.blockset.walletkit.events.wallet.WalletTransferAddedEvent +import com.blockset.walletkit.events.wallet.WalletTransferChangedEvent +import com.blockset.walletkit.events.wallet.WalletTransferDeletedEvent +import com.blockset.walletkit.events.wallet.WalletTransferSubmittedEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerChangedEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerCreatedEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerSyncRecommendedEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerWalletAddedEvent +import com.blockset.walletkit.events.walletmanager.WalletManagerWalletDeletedEvent +import com.breadwallet.logger.logDebug +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.update + +class SystemListenerImpl : SystemListener { + + private var networkManager: NetworkManager? = null + + /** SharedFlow for All Event Handling for [SystemListener] */ + private val networkEvents = MutableSharedFlow(replay = 1) + + private val _systemEvents = MutableSharedFlow(replay = 1) + val systemEvents: SharedFlow = _systemEvents + + private val _transferEvents = MutableSharedFlow(replay = 1) + val transferEvents: SharedFlow = _transferEvents + + private val _walletEvents = MutableSharedFlow(replay = 1) + val walletEvents: SharedFlow = _walletEvents + + private val _walletManagerEvents = MutableSharedFlow(replay = 1) + val walletManagerEvents: SharedFlow = _walletManagerEvents + + /** StateFlow for tracking values [SystemListener] */ + private val _discovery = MutableStateFlow(false) + val discovery: StateFlow = _discovery + + private val _wallets = MutableStateFlow>(emptyList()) + val wallets: StateFlow> = _wallets + + private val _account = MutableStateFlow(null) + val account: StateFlow = _account + + private val _transfer = MutableSharedFlow(replay = 1) + val transfer: SharedFlow = _transfer + + private val _transfers = MutableStateFlow>>(emptyMap()) + val transfers: StateFlow>> = _transfers + + fun init(networkManager: NetworkManager, system: System) { + this.networkManager = networkManager + _systemEvents.tryEmit(Unit) + _account.value = system.account + } + + override fun handleManagerEvent( + system: System, + manager: WalletManager, + event: WalletManagerEvent + ) { + _walletManagerEvents.tryEmit(event) + + when (event) { + is WalletManagerCreatedEvent -> { + logDebug("Wallet Manager Created: '${manager.name}' mode ${manager.mode}") + networkManager?.connectManager(manager) + } + is WalletManagerChangedEvent -> { + if (event.isConnected(manager.currency.code)) { + logDebug("Wallet Manager Connected: '${manager.name}'") + networkManager?.registerCurrencies(manager) + } + } + is WalletManagerSyncRecommendedEvent -> { + logDebug("Syncing '${manager.currency.code}' to ${event.depth}") + manager.syncToDepth(event.depth) + } + is WalletManagerWalletAddedEvent -> { + _wallets.update { it + event.wallet } + } + is WalletManagerWalletDeletedEvent -> { + _wallets.update { it - event.wallet } + } + } + } + + override fun handleWalletEvent( + system: System, + manager: WalletManager, + wallet: Wallet, + event: WalletEvent + ) { + _walletEvents.tryEmit(event) + + when (event) { + is WalletTransferChangedEvent -> _transfer.tryEmit(event.transfer) + is WalletTransferSubmittedEvent -> _transfer.tryEmit(event.transfer) + is WalletTransferDeletedEvent -> { + _transfer.tryEmit(event.transfer) + + _transfers.update { walletMap -> + val newList = walletMap[wallet].orEmpty() - event.transfer + walletMap.toMutableMap() + .apply { set(wallet, newList) } + } + } + is WalletTransferAddedEvent -> { + _transfer.tryEmit(event.transfer) + + _transfers.update { walletMap -> + val newList = walletMap[wallet].orEmpty() + event.transfer + walletMap.toMutableMap() + .apply { set(wallet, newList) } + .toMap() + } + } + } + } + + override fun handleTransferEvent( + system: System, + manager: WalletManager, + wallet: Wallet, + transfer: Transfer, + event: TransferEvent + ) { + _transferEvents.tryEmit(event) + _transfer.tryEmit(transfer) + } + + override fun handleNetworkEvent(system: System, network: Network, event: NetworkEvent) { + networkEvents.tryEmit(event) + } + + override fun handleSystemEvent(system: System, event: SystemEvent) { + when (event) { + is SystemNetworkAddedEvent -> { + logDebug("Network '${event.network.name}' added.") + networkManager?.initializeNetwork(event.network) + } + is SystemDiscoveredNetworksEvent -> { + _discovery.value = true + } + } + _systemEvents.tryEmit(Unit) + } + + fun updateWallets(wallets: List?) { + _wallets.update { (it + wallets.orEmpty()).distinct() } + } + + private fun WalletManagerChangedEvent.isConnected(currencyCode: String): Boolean { + val fromStateType = oldState.type + val toStateType = newState.type + logDebug("($currencyCode) State Changed from='$fromStateType' to='$toStateType'") + + return fromStateType != WalletManagerState.Type.CONNECTED && + toStateType == WalletManagerState.Type.CONNECTED + } +} diff --git a/brd-android/app/src/main/java/com/breadwallet/di/AppModule.kt b/brd-android/app/src/main/java/com/breadwallet/di/AppModule.kt new file mode 100644 index 000000000..3f7de927a --- /dev/null +++ b/brd-android/app/src/main/java/com/breadwallet/di/AppModule.kt @@ -0,0 +1,259 @@ +/** + * BreadWallet + * + * Created by Amit Goel on 9/3/2021. + * Copyright (c) 2021 Breadwinner AG + * + * SPDX-License-Identifier: BUSL-1.1 + */ +package com.breadwallet.di + +import android.app.Application +import android.content.Context +import android.content.SharedPreferences +import android.net.ConnectivityManager +import android.os.Build +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKey +import com.blockset.walletkit.SystemClient +import com.blockset.walletkit.brd.systemclient.BlocksetSystemClient +import com.brd.addressresolver.AddressResolver +import com.brd.api.AndroidBdbAuthProvider +import com.brd.api.AndroidBrdAuthProvider +import com.brd.api.BrdApiClient +import com.brd.api.BrdApiHost +import com.brd.bakerapi.BakersApiClient +import com.brd.exchange.ExchangeDataLoader +import com.brd.featurepromotion.FeaturePromotionService +import com.brd.prefs.AndroidPreferences +import com.brd.prefs.BrdPreferences +import com.brd.prefs.Preferences +import com.breadwallet.BuildConfig +import com.breadwallet.app.BreadApp +import com.breadwallet.app.ConversionTracker +import com.breadwallet.app.GiftTracker +import com.breadwallet.app.WALLETKIT_DATA_DIR_NAME +import com.breadwallet.breadbox.BdbAuthInterceptor +import com.breadwallet.breadbox.BreadBox +import com.breadwallet.breadbox.CoreBreadBox +import com.breadwallet.getFlipperOkhttpInterceptor +import com.breadwallet.platform.interfaces.AccountMetaDataProvider +import com.breadwallet.repository.ExperimentsRepository +import com.breadwallet.repository.ExperimentsRepositoryImpl +import com.breadwallet.repository.RatesRepository +import com.breadwallet.tools.manager.BRReportsManager +import com.breadwallet.tools.manager.BRSharedPrefs +import com.breadwallet.tools.manager.ConnectivityStateProvider +import com.breadwallet.tools.manager.InternetManager +import com.breadwallet.tools.manager.NetworkCallbacksConnectivityStateProvider +import com.breadwallet.tools.manager.RatesFetcher +import com.breadwallet.tools.security.BrdUserManager +import com.breadwallet.tools.security.CryptoUserManager +import com.breadwallet.tools.util.SupportManager +import com.breadwallet.ui.uigift.GiftBackup +import com.breadwallet.ui.uigift.SharedPrefsGiftBackup +import com.breadwallet.util.CryptoUriParser +import com.breadwallet.util.errorHandler +import com.platform.APIClient +import com.platform.interfaces.KVStoreProvider +import com.platform.interfaces.MetaDataManager +import com.platform.interfaces.WalletProvider +import com.platform.tools.KVStoreManager +import drewcarlson.blockset.BdbService +import io.ktor.client.HttpClient +import io.ktor.client.engine.okhttp.OkHttp +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import okhttp3.OkHttpClient +import org.kodein.di.DI +import org.kodein.di.bind +import org.kodein.di.direct +import org.kodein.di.instance +import org.kodein.di.singleton +import java.io.File + +/** All Application Dependencies */ +fun getAppModule(application: BreadApp): DI.Module { + return DI.Module("AppModule") { + bind { singleton { CryptoUriParser(instance()) } } + + bind { + singleton { + APIClient( + context = application, + userManager = instance(), + brdApiClient = instance(), + okHttpClient = instance(), + headers = application.createHttpHeaders() + ) + } + } + + bind { + singleton { + CryptoUserManager( + context = application, + createStore = { createCryptoEncryptedPrefs(application) }, + metaDataProvider = instance(), + scope = instance() + ) + } + } + + bind { + singleton { SharedPrefsGiftBackup { createGiftBackupEncryptedPrefs(application) } } + } + + bind { singleton { KVStoreManager(application) } } + + val metaDataManager by lazy { + MetaDataManager(application.direct.instance()) + } + + bind { singleton { metaDataManager } } + + bind { singleton { metaDataManager } } + + bind() with singleton { + OkHttpClient().newBuilder().apply { + // conditionally apply flipper interceptor on debug builds + getFlipperOkhttpInterceptor()?.let { + addNetworkInterceptor(it) + } + }.build() + } + + bind() with singleton { + val httpClient = instance() + BdbAuthInterceptor( + httpClient = httpClient, + userManager = instance(), + scope = instance() + ) + } + + bind() with singleton { + val httpClient = instance() + val authInterceptor = instance() + BlocksetSystemClient( + httpClient.newBuilder() + .addInterceptor(authInterceptor) + .build() + ) + } + + bind(tag = "applicationScope") with singleton { + CoroutineScope( + SupervisorJob() + Dispatchers.Default + errorHandler("applicationScope") + ) + } + + bind() with singleton { + HttpClient(OkHttp) { + engine { + preconfigured = instance() + config { + retryOnConnectionFailure(true) + } + } + } + } + + bind { singleton { BdbService.create(AndroidBdbAuthProvider(instance())) } } + + bind { singleton { AddressResolver(instance(), !BuildConfig.BITCOIN_TESTNET) } } + + bind() with singleton { + CoreBreadBox( + storageFile = File(application.filesDir, WALLETKIT_DATA_DIR_NAME), + isMainnet = !BuildConfig.BITCOIN_TESTNET, + walletProvider = instance(), + blockchainDb = instance(), + userManager = instance() + ) + } + + bind { singleton { ExperimentsRepositoryImpl } } + + bind { singleton { RatesRepository.getInstance(application) } } + + bind { singleton { RatesFetcher(instance(), instance(), application) } } + + bind { singleton { ConversionTracker(instance()) } } + + bind { singleton { GiftTracker(instance(), instance()) } } + + bind() with singleton { + val connectivityManager = + application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + NetworkCallbacksConnectivityStateProvider(connectivityManager) + } else { + InternetManager(connectivityManager, application) + } + } + + bind { singleton { SupportManager(application, instance(), instance()) } } + + bind() with singleton { + val brdPreferences = instance() + val customHost = brdPreferences.debugApiHost?.run(BrdApiHost::Custom) + val host = + customHost ?: BrdApiHost.hostFor(BuildConfig.DEBUG, brdPreferences.hydraActivated) + BrdApiClient.create(host, AndroidBrdAuthProvider(instance()), instance()) + } + + bind() with singleton { + val prefs = + application.getSharedPreferences(BRSharedPrefs.PREFS_NAME, Context.MODE_PRIVATE) + AndroidPreferences(prefs) + } + + bind { singleton { BrdPreferences(instance()) } } + + bind { singleton { BakersApiClient.create(instance()) } } + + bind { singleton { FeaturePromotionService(instance()) } } + + bind() with singleton { + val exchangePrefs = + application.getSharedPreferences("ExchangeDataLoader", Application.MODE_PRIVATE) + ExchangeDataLoader(instance(), AndroidPreferences(exchangePrefs)) + } + } +} + +private const val ENCRYPTED_PREFS_FILE = "crypto_shared_prefs" +private const val ENCRYPTED_GIFT_BACKUP_FILE = "gift_shared_prefs" + +private fun createCryptoEncryptedPrefs(application: BreadApp): SharedPreferences? = + createEncryptedPrefs(ENCRYPTED_PREFS_FILE, application) + +private fun createGiftBackupEncryptedPrefs(application: BreadApp): SharedPreferences? = + createEncryptedPrefs(ENCRYPTED_GIFT_BACKUP_FILE, application) + +private fun createEncryptedPrefs(fileName: String, application: BreadApp): SharedPreferences? { + val masterKeys = try { + MasterKey.Builder(application) + .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) + .build() + } catch (e: Throwable) { + BRReportsManager.error("Failed to create Master Keys", e) + return null + } + + return try { + EncryptedSharedPreferences.create( + application, + fileName, + masterKeys, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } catch (e: Throwable) { + BRReportsManager.error("Failed to create Encrypted Shared Preferences", e) + null + } +} diff --git a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffect.kt b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffect.kt index 3321f4a03..53c25aede 100644 --- a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffect.kt +++ b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffect.kt @@ -8,8 +8,8 @@ */ package com.breadwallet.effecthandler.metadata -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.WalletManagerMode import java.math.BigDecimal sealed class MetaDataEffect { diff --git a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffectHandler.kt b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffectHandler.kt index a19c1911c..30dcf49b2 100644 --- a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffectHandler.kt +++ b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEffectHandler.kt @@ -9,18 +9,17 @@ package com.breadwallet.effecthandler.metadata import android.text.format.DateUtils -import com.breadwallet.app.BreadApp import com.breadwallet.breadbox.BreadBox import com.breadwallet.breadbox.getSize import com.breadwallet.breadbox.hashString import com.breadwallet.breadbox.toBigDecimal -import com.breadwallet.crypto.Transfer -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.Transfer +import com.blockset.walletkit.WalletManagerMode import com.breadwallet.mobius.bindConsumerIn -import com.breadwallet.tools.manager.BRSharedPrefs -import com.breadwallet.util.errorHandler import com.breadwallet.platform.entities.TxMetaDataValue import com.breadwallet.platform.interfaces.AccountMetaDataProvider +import com.breadwallet.tools.manager.BRSharedPrefs +import com.breadwallet.util.errorHandler import com.spotify.mobius.Connection import com.spotify.mobius.functions.Consumer import kotlinx.coroutines.CoroutineScope @@ -45,7 +44,8 @@ import java.math.BigDecimal class MetaDataEffectHandler( private val output: Consumer, private val metaDataProvider: AccountMetaDataProvider, - private val breadBox: BreadBox + private val breadBox: BreadBox, + private val scope: CoroutineScope, ) : Connection, CoroutineScope { companion object { @@ -170,7 +170,7 @@ class MetaDataEffectHandler( creationTime ) - BreadApp.applicationScope.launch { + scope.launch { metaDataProvider.putTxMetaData(transaction, metaData) } } diff --git a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEvent.kt b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEvent.kt index 388bf341e..ef0b9eb02 100644 --- a/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEvent.kt +++ b/brd-android/app/src/main/java/com/breadwallet/effecthandler/metadata/MetaDataEvent.kt @@ -8,7 +8,7 @@ */ package com.breadwallet.effecthandler.metadata -import com.breadwallet.crypto.WalletManagerMode +import com.blockset.walletkit.WalletManagerMode import com.breadwallet.platform.entities.TxMetaData sealed class MetaDataEvent { diff --git a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/activities/util/BRActivity.kt b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/activities/util/BRActivity.kt index 3267dd3eb..56255f4d8 100644 --- a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/activities/util/BRActivity.kt +++ b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/activities/util/BRActivity.kt @@ -20,9 +20,9 @@ import com.breadwallet.tools.animation.BRDialog import com.breadwallet.tools.manager.BRSharedPrefs.getScreenHeight import com.breadwallet.tools.manager.BRSharedPrefs.putScreenHeight import com.breadwallet.tools.manager.BRSharedPrefs.putScreenWidth +import com.breadwallet.tools.security.BrdUserManager import com.breadwallet.tools.security.BrdUserState.Disabled import com.breadwallet.tools.security.BrdUserState.Locked -import com.breadwallet.tools.security.BrdUserManager import com.breadwallet.util.errorHandler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers.Default @@ -35,7 +35,7 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.take -import org.kodein.di.erased.instance +import org.kodein.di.instance private const val TAG = "BRActivity" diff --git a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/AutoResizeTextView.java b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/AutoResizeTextView.java deleted file mode 100644 index 31cd23efe..000000000 --- a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/AutoResizeTextView.java +++ /dev/null @@ -1,321 +0,0 @@ -package com.breadwallet.legacy.presenter.customviews; - -/** - * DO WHAT YOU WANT TO PUBLIC LICENSE - * Version 2, December 2004 - * - * Copyright (C) 2004 Sam Hocevar - * - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT YOU WANT TO. - */ - -import android.content.Context; -import android.text.Layout.Alignment; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.widget.TextView; - -/** - * Text view that auto adjusts text size to fit within the view. - * If the text size equals the minimum text size and still does not - * fit, append with an ellipsis. - * - * @author Chase Colburn - * @since Apr 4, 2011 - */ -public class AutoResizeTextView extends BaseTextView { - - // Minimum text size for this text view - private static final float MIN_TEXT_SIZE = 20; - - // Interface for resize notifications - public interface OnTextResizeListener { - void onTextResize(TextView textView, float oldSize, float newSize); - } - - // Our ellipse string - private static final String mEllipsis = "..."; - - // Registered resize listener - private OnTextResizeListener mTextResizeListener; - - // Flag for text and/or size changes to force a resize - private boolean mNeedsResize = false; - - // Text size that is set from code. This acts as a starting point for resizing - private float mTextSize; - - // Temporary upper bounds on the starting text size - private float mMaxTextSize = 0; - - // Lower bounds for text size - private float mMinTextSize = MIN_TEXT_SIZE; - - // Text view line spacing multiplier - private float mSpacingMult = 1.0f; - - // Text view additional line spacing - private float mSpacingAdd = 0.0f; - - // Add ellipsis to text that overflows at the smallest text size - private boolean mAddEllipsis = true; - - // Default constructor override - public AutoResizeTextView(Context context) { - this(context, null); - } - - // Default constructor when inflating from XML file - public AutoResizeTextView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - // Default constructor override - public AutoResizeTextView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mTextSize = getTextSize(); - } - - /** - * When text changes, set the force resize flag to true and reset the text size. - */ - @Override - protected void onTextChanged(final CharSequence text, final int start, final int before, final int after) { - mNeedsResize = true; - // Since this view may be reused, it is good to reset the text size - resetTextSize(); - } - - /** - * If the text view size changed, set the force resize flag to true - */ - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - if (w != oldw || h != oldh) { - mNeedsResize = true; - } - } - - /** - * Register listener to receive resize notifications - * @param listener - */ - public void setOnResizeListener(OnTextResizeListener listener) { - mTextResizeListener = listener; - } - - /** - * Override the set text size to update our internal reference values - */ - @Override - public void setTextSize(float size) { - super.setTextSize(size); - mTextSize = getTextSize(); - } - - /** - * Override the set text size to update our internal reference values - */ - @Override - public void setTextSize(int unit, float size) { - super.setTextSize(unit, size); - mTextSize = getTextSize(); - } - - /** - * Override the set line spacing to update our internal reference values - */ - @Override - public void setLineSpacing(float add, float mult) { - super.setLineSpacing(add, mult); - mSpacingMult = mult; - mSpacingAdd = add; - } - - /** - * Set the upper text size limit and invalidate the view - * @param maxTextSize - */ - public void setMaxTextSize(float maxTextSize) { - mMaxTextSize = maxTextSize; - requestLayout(); - invalidate(); - } - - /** - * Return upper text size limit - * @return - */ - public float getMaxTextSize() { - return mMaxTextSize; - } - - /** - * Set the lower text size limit and invalidate the view - * @param minTextSize - */ - public void setMinTextSize(float minTextSize) { - mMinTextSize = minTextSize; - requestLayout(); - invalidate(); - } - - /** - * Return lower text size limit - * @return - */ - public float getMinTextSize() { - return mMinTextSize; - } - - /** - * Set flag to add ellipsis to text that overflows at the smallest text size - * @param addEllipsis - */ - public void setAddEllipsis(boolean addEllipsis) { - mAddEllipsis = addEllipsis; - } - - /** - * Return flag to add ellipsis to text that overflows at the smallest text size - * @return - */ - public boolean getAddEllipsis() { - return mAddEllipsis; - } - - /** - * Reset the text to the original size - */ - private void resetTextSize() { - if (mTextSize > 0) { - super.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTextSize); - mMaxTextSize = mTextSize; - } - } - - /** - * Resize text after measuring - */ - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - if (changed || mNeedsResize) { - int widthLimit = (right - left) - getCompoundPaddingLeft() - getCompoundPaddingRight(); - int heightLimit = (bottom - top) - getCompoundPaddingBottom() - getCompoundPaddingTop(); - resizeText(widthLimit, heightLimit); - } - super.onLayout(changed, left, top, right, bottom); - } - - /** - * Resize the text size with default width and height - */ - public void resizeText() { - - int heightLimit = getHeight() - getPaddingBottom() - getPaddingTop(); - int widthLimit = getWidth() - getPaddingLeft() - getPaddingRight(); - resizeText(widthLimit, heightLimit); - } - - /** - * Resize the text size with specified width and height - * @param width - * @param height - */ - private void resizeText(int width, int height) { - CharSequence text = getText(); - // Do not resize if the view does not have dimensions or there is no text - if (text == null || text.length() == 0 || height <= 0 || width <= 0 || mTextSize == 0) { - return; - } - - if (getTransformationMethod() != null) { - text = getTransformationMethod().getTransformation(text, this); - } - - // Get the text view's paint object - TextPaint textPaint = getPaint(); - - // Store the current text size - float oldTextSize = textPaint.getTextSize(); - // If there is a max text size set, use the lesser of that and the default text size - float targetTextSize = mMaxTextSize > 0 ? Math.min(mTextSize, mMaxTextSize) : mTextSize; - - // Get the required text height - int textHeight = getTextHeight(text, textPaint, width, targetTextSize); - - // Until we either fit within our text view or we had reached our min text size, incrementally try smaller sizes - while (textHeight > height && targetTextSize > mMinTextSize) { - targetTextSize = Math.max(targetTextSize - 2, mMinTextSize); - textHeight = getTextHeight(text, textPaint, width, targetTextSize); - } - - // If we had reached our minimum text size and still don't fit, append an ellipsis - if (mAddEllipsis && targetTextSize == mMinTextSize && textHeight > height) { - // Draw using a static layout - // modified: use a copy of TextPaint for measuring - TextPaint paint = new TextPaint(textPaint); - // Draw using a static layout - StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false); - // Check that we have a least one line of rendered text - if (layout.getLineCount() > 0) { - // Since the line at the specific vertical position would be cut off, - // we must trim up to the previous line - int lastLine = layout.getLineForVertical(height) - 1; - // If the text would not even fit on a single line, clear it - if (lastLine < 0) { - setText(""); - } - // Otherwise, trim to the previous line and add an ellipsis - else { - int start = layout.getLineStart(lastLine); - int end = layout.getLineEnd(lastLine); - float lineWidth = layout.getLineWidth(lastLine); - float ellipseWidth = textPaint.measureText(mEllipsis); - - // Trim characters off until we have enough room to draw the ellipsis - while (width < lineWidth + ellipseWidth) { - lineWidth = textPaint.measureText(text.subSequence(start, --end + 1).toString()); - } - setText(String.valueOf(text.subSequence(0, end)).concat(mEllipsis)); - } - } - } - - // Some devices try to auto adjust line spacing, so force default line spacing - // and invalidate the layout as a side effect - setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSize); - setLineSpacing(mSpacingAdd, mSpacingMult); - - // Notify the listener if registered - if (mTextResizeListener != null) { - mTextResizeListener.onTextResize(this, oldTextSize, targetTextSize); - } - - // Reset force resize flag - mNeedsResize = false; - } - - // Set the text size of the text paint object and use a static layout to render text off screen before measuring - private int getTextHeight(CharSequence source, TextPaint paint, int width, float textSize) { - // modified: make a copy of the original TextPaint object for measuring - // (apparently the object gets modified while measuring, see also the - // docs for TextView.getPaint() (which states to access it read-only) - TextPaint paintCopy = new TextPaint(paint); - // Update the text paint object - paintCopy.setTextSize(textSize); - // Measure using a static layout - StaticLayout layout = new StaticLayout(source, paintCopy, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, true); - return layout.getHeight(); - } - -} \ No newline at end of file diff --git a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRDialogView.java b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRDialogView.java index 73ba16104..ad4ce26b8 100644 --- a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRDialogView.java +++ b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRDialogView.java @@ -28,6 +28,7 @@ import com.breadwallet.R; import com.breadwallet.tools.animation.UiUtils; import com.breadwallet.tools.manager.BRReportsManager; +import com.breadwallet.tools.util.AndroidExtensionsKt; import com.breadwallet.tools.util.Utils; public class BRDialogView extends DialogFragment { @@ -115,15 +116,12 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { positiveButton.setColor(Color.parseColor(POSITIVE_BUTTON_COLOR)); positiveButton.setHasShadow(false); positiveButton.setText(mPositiveButtonText); - positiveButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!UiUtils.isClickAllowed()) { - return; - } - if (mPositiveListener != null) { - mPositiveListener.onClick(BRDialogView.this); - } + positiveButton.setOnClickListener(v -> { + if (!UiUtils.isClickAllowed()) { + return; + } + if (mPositiveListener != null) { + mPositiveListener.onClick(BRDialogView.this); } }); @@ -160,17 +158,14 @@ public void onClick(View v) { if (mShowHelpIcon) { mHelpButton.setVisibility(View.VISIBLE); - messageText.setPadding(0, 0, 0, Utils.getPixelsFromDps(getContext(), MESSAGE_PADDING_END)); + messageText.setPadding(0, 0, 0, AndroidExtensionsKt.getPixelsFromDps(getContext(), MESSAGE_PADDING_END)); - mHelpButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!UiUtils.isClickAllowed()) { - return; - } - if (mHelpListener != null) { - mHelpListener.onClick(BRDialogView.this); - } + mHelpButton.setOnClickListener(view1 -> { + if (!UiUtils.isClickAllowed()) { + return; + } + if (mHelpListener != null) { + mHelpListener.onClick(BRDialogView.this); } }); diff --git a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRKeyboard.kt b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRKeyboard.kt index d4fb48ee2..1566f194f 100644 --- a/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRKeyboard.kt +++ b/brd-android/app/src/main/java/com/breadwallet/legacy/presenter/customviews/BRKeyboard.kt @@ -9,15 +9,9 @@ package com.breadwallet.legacy.presenter.customviews import android.content.Context -import android.widget.LinearLayout -import com.breadwallet.legacy.presenter.customviews.BRKeyboard.OnInsertListener -import android.widget.ImageButton -import com.breadwallet.R -import android.content.res.TypedArray import android.os.Build import android.os.VibrationEffect import android.os.Vibrator -import com.breadwallet.legacy.presenter.customviews.BRKeyboard import android.text.SpannableString import android.text.TextUtils import android.text.style.RelativeSizeSpan @@ -25,61 +19,68 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.Button +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import androidx.core.content.getSystemService import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.drawable.DrawableCompat +import androidx.core.view.isVisible +import com.breadwallet.R import com.breadwallet.databinding.PinPadBinding -import com.breadwallet.tools.util.Utils -import java.util.ArrayList +import com.breadwallet.tools.util.getPixelsFromDps -class BRKeyboard : LinearLayout, View.OnClickListener { +class BRKeyboard : ConstraintLayout, View.OnClickListener { private var mKeyInsertListener: OnInsertListener? = null - private var mDeleteButton: ImageButton? = null - private var mPinButtons: List