Giter Site home page Giter Site logo

brd-mobile's Introduction

Bread

BRD is the best way to get started with bitcoin. Our simple, streamlined design is easy for beginners, yet powerful enough for experienced users.

Fastsync

Fastsync is a new feature in the BRD app that makes Bitcoin wallets sync in seconds, while also keeping BRD technology ahead of the curve as SPV slowly phases out. When Fastsync is enabled the BRD wallet uses our server technology, Blockset to sync, send and receive instantly!

Your Decentralized Bitcoin Wallet

Unlike other mobile bitcoin wallets, BRD users have the option to disable Fastsync converting the wallet into a standalone bitcoin client. It connects directly to the bitcoin network using SPV mode, and doesn't rely on servers that can be hacked or disabled. If BRD the company disappears, your private key can still be derived from the recovery phrase to recover your funds since your funds exist on the blockchain.

Cutting-edge security

BRD utilizes the latest mobile security features to protect users from malware, browser security holes, and even physical theft. On Android The user’s private key is encrypted using the Android Keystore, inaccessible to anyone other than the user. On iOS the user’s private key is stored in the device keychain, secured by Secure Enclave, inaccessible to anyone other than the user. Users are also able to backup their wallet using iCloud Keychain to store an encrypted backup of their recovery phrase. The backup is encrypted with the BRD app PIN.

Jailbreak Warning

Installation on jailbroken devices is strongly discouraged.

Any jailbreak app can grant itself access to every other app's keychain data. This means it can access your wallet and steal your bitcoin by self-signing as described here and including <key>application-identifier</key><string>*</string> in its .entitlements file.

Designed with New Users in Mind

Simplicity and ease-of-use is BRD's core design principle. A simple recovery phrase (which we call a recovery key) is all that is needed to restore the user's wallet if they ever lose or replace their device. BRD is deterministic, which means the user's balance and transaction history can be recovered just from the recovery key.

Features

  • Supports wallets for Bitcoin, Bitcoin Cash, Ethereum and ERC-20 tokens, Ripple, Hedera, Tezos
  • Single recovery key is all that's needed to backup your wallet
  • Private keys never leave your device and are end-to-end encrypted when using iCloud backup
  • Save a memo for each transaction (off-chain)

Bitcoin Specific Features

Localization

BRD is available in the following languages:

  • Chinese (Simplified and traditional)
  • Danish
  • Dutch
  • English
  • French
  • German
  • Italian
  • Japanese
  • Korean
  • Portuguese
  • Russian
  • Spanish
  • Swedish

About brd-mobile

This repository is the BRD Mobile monorepo for iOS and Android, powered by a collection of Kotlin Multiplatform Mobile (KMM) modules codenamed Cosmos.

Cosmos breaks down into many modules that are bundled to produce a final Jar/AAR and Framework for mobile projects. Each module contains only code related to a single feature, helping keep the project organized and improve incremental build times.

Modules

The following modules are available, click on the name to learn more.

Mobile Applications

  • brd-android A collection of gradle modules to build BRD Android.
  • brd-ios xcode project containing BRD iOS, pre-configured to build and link Cosmos.

Development

Prerequisites

Setup

  1. Clone this repository git clone [email protected]:breadwallet/brd-mobile.git --recurse-submodules
  2. (Optional, for BRD employees) checkout production resources: git submodule update --checkout
  3. Open the Cosmos folder using Intellij IDEA or Android Studio
  4. (iOS Development) Open the brd-ios/breadwallet.xcworkspace file in xcode

Advanced Setup

Blockset Client Token

(Android) The Blockset client token can be set in gradle.properties or by using -PBDB_CLIENT_TOKEN="<client token>". A default token is available for testing.

(iOS) Add your Blockset client token to your app’s public CloudKit database with a record id of: BlockchainDBClientID

(Android) Firebase

To enable Firebase services like Crashlytics, add the google-services.json file into the brd-android/app directory. Without this file, runtime Firebase dependencies are still used but do not start and the Google Services gradle plugin is disabled so builds will succeed.

Gradle Tasks

Here is a list of the most useful gradle tasks available. For a comprehensive list of tasks run ./gradlew tasks or ./gradlew :<module-name>:tasks.

Build

# Build, test, and package all modules
./gradlew build
# Run all quality checks
./gradlew check
# Assemble BRD Android
./gradlew brd-android:app:assemble

Tests

# Run all tests, in all modules
./gradlew allTest
# Run all tests, in a single module
./gradlew :cosmos-brd-api-client:allTest
# Run Jvm tests
./gradlew jvmTest
# Run iOS Simulator tests
./gradlew iosX64Test

Packaging

# Package Jvm artifacts
./gradlew jvmJar
# Package iOS Frameworks (Simulator)
./gradlew linkDebugFrameworkIosX64 linkReleaseFrameworkIosX64
# Package iOS Frameworks (Device)
./gradlew linkDebugFrameworkIosArm64 linkReleaseFrameworkIosArm64

Git History

This repository merges the commit history of BRD iOS and BRD Android. To build BRD application versions before 4.10, please refer to the respective legacy git repository tags.

A light clone of this repository can be created with git clone [email protected]:breadwallet/brd-mobile.git --depth 50

Licensing

BRD source code is available under the terms of the Business Source License 1.1 (BUSL-1.1), see LICENSE.

WalletKit is available under the terms of the MIT License.

brd-mobile's People

Contributors

acorscadden avatar ahsanb786 avatar brd-jwheeler avatar brdcryptoray avatar dabitdev avatar davidsights avatar drewcarlson avatar dts avatar ewerx avatar gutyn avatar harlantwood avatar jadebyfield89 avatar jmacwhyte avatar losh11 avatar michaelibrd avatar pbudelli avatar rrrrray avatar samuraisam avatar shivangigandhi avatar spokzcycling avatar tyzbit avatar voisine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brd-mobile's Issues

Cannot build project on Windows or Linux

as mentioned in setup "Open the Cosmos folder using Intellij IDEA or Android Studio" there are others cosmos folder but not a folder name "cosmos"
can someone please guide how to make a build for android.

when building whole project folder "brd-mobile"
face this error while building project
Caused by: java.lang.AssertionError: Unsupported OS: windows. Expression: false
at build_94wvs0xuo1nr69mmu6v8vw4ez.jnaOsFromGradle(C:\projects\BreadW-git\brd-mobile\external\walletkit\WalletKitJava\corenative-jre\build.gradle:23)
at build_94wvs0xuo1nr69mmu6v8vw4ez$jnaOsFromGradle.callStatic(Unknown Source)
at build_94wvs0xuo1nr69mmu6v8vw4ez.jnaResourceFromGradle(C:\projects\BreadW-git\brd-mobile\external\walletkit\WalletKitJava\corenative-jre\build.gradle:39)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at build_94wvs0xuo1nr69mmu6v8vw4ez$_run_closure1$_closure6$_closure14$_closure29$_closure33.doCall(C:\projects\BreadW-git\brd-mobile\external\walletkit\WalletKitJava\corenative-jre\build.gradle:134)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at org.gradle.model.internal.core.NoInputsModelAction.execute(NoInputsModelAction.java:39)
at org.gradle.model.internal.core.AbstractModelActionWithView.execute(AbstractModelActionWithView.java:37)
at org.gradle.model.internal.registry.DefaultModelRegistry$4.run(DefaultModelRegistry.java:497)
at org.gradle.model.internal.registry.RuleContext.run(RuleContext.java:42)
at org.gradle.model.internal.registry.DefaultModelRegistry.fireAction(DefaultModelRegistry.java:494)
... 148 more

Recovering funds

Helping out a friend that used your wallet for quite some time, had their phone stolen this week and went to recover their BRD wallet only to find that the software has seemingly been sold to Coinbase. For understandable reasons, they have no interest in using that wallet and just want to recover their funds. The seed they have does not seem to be a Bitcoin seed, or if it is, what is the derivation path? How can they recover their funds? Any help is greatly appreciated

Migration issue - XRP not visible in Coinbase wallet

Performed migration from BRD wallet (iOS) containing ETH, BTC and XRP. ETH and BTC appear in the Coinbase Wallet app but XRP not present.
Transaction file download from BRD shows XRP transactions.
Coinbase wallet v 25.14.177. iOS

Wallet recovery, ETH derivation path from June 2017

I'm recovering a wallet created in June 2017 containing ETH.

The user forgot which App they used to create the wallet, but we know they used Bread Wallet also and this wallet might have been created with Bread Wallet. We successfully recovered the BTC balance in the wallet with the seed words using the current version of Bread Wallet, but it appears the ETH derivation path might have changed since June 2017.

e.g. this commit on September 24, 2017: breadwallet/breadwallet-core@8256769#diff-804fa0e5b81c52e1473cf06c4ba455b69add800fd3ef56f728dc7b39221bd484L163

shows the old derivation path (apparently also for ETH) was m/0H/chain/index rather than relying on BIP44.

Q: What was the ETH derivation path in June 2017?

https://github.com/breadwallet/breadwallet-core

Coinbase migration problems

I've got a Wallet with Tezos, ETH and Bitcoin in it. After the latest update (4.18).
Now, I'm not able to move my Tezos anymore, even though I thought I've got time until March 27th.

Is there a way to still do transactions instead of export/import? Or will any migration path open again?

Cannot build Xcode target "breadwallet"

Screen Shot 2022-06-30 at 8 16 08 PM

After over an hour of fighting with the project, installing JDK 11 (because the newer ones won't work with gradle due to java.lang.IllegalArgumentException: Unsupported class file major version 62), hacking the gradle files to let it run ./gradlew linkDebugFrameworkIosArm64 linkReleaseFrameworkIosArm64 because I don't have (and don't need) the Android SDK installed, I still get this same error, and have no clue how to get past it.

Cannot Configure the project.

A problem occurred configuring project :WalletKitJava:corenative-android.

NDK not configured. Download it with SDK manager. Preferred NDK version is '21.1.6352462'. `

I've downloaded the ndk version of 21.1.6352462 but it is still not configuring it.

Migration to coinbase

My partner uses BRD (android) and her seedphrase was outputted in spanish, now that we need to migrate to coinbase wallet, that same seedphrase in spanish isn't recognized.

Please help.

Invalid NativePlatform: osx_arm-v8

I get following error when build this project.
My computer is MacOS and M2 cpu.

FAILURE: Build failed with an exception.

  • What went wrong:
    Exception thrown while executing model rule: NativeComponentModelPlugin.Rules#createBinaries(TargetedNativeComponentInternal, PlatformResolvers, BuildTypeContainer, FlavorContainer, ServiceRegistry)

Invalid NativePlatform: osx_arm-v8

Cannot restore wallet in any app using mnemonic in Spanish

Hello, after migrating to Coinbase wallet the app stopped working, I'm trying to restore a wallet that was backed up using Spanish mnemonic words into a different app (e.g. Exodus) but most wallet apps only use BIP39's original English word list... I tried going through the Spanish word list and finding each equivalent word position in the English list but it's not working (wallet "restored" has $0 funds whereas the wallet that I'm trying to recover has about $750 in BTC)... I don't know what to do. :-/

Any help is appreciated. Thanks.

Please tag all Play Store releases. The latest Android version 4.10.0 is not tagged unambigously.

I'm looking for the exact code that went into update 4.10.0 of your app on Google Play but can't find a matching tag. I suspect it's d17d80e (tagged android-4.10.0.5) or 29904d4 (branch merged to master).

BRD is listed on WalletScrutiny.com and currently categorized as "nosource" following some communication issues.

I will revert to the "nonverifiable" verdict for now and also hope you reconsider the threats a non-reproducible build means to your millions of users and make it reproducible but we will probably also define standards for "nonverifiable" apps that require a clear match between release version name and git tags to avoid requiring guessing.

Bitcoin excluded from wallet export

I've got a wallet with Tezos, Ether and Bitcoin. While I was able to restore Tezos and Ether in the AirGap Vault app, Bitcoin don't show up. They also didn't show up in the Coinbase wallet.

While the transaction history clearly shows Bitcoin in my BRD wallet, the wallet secret doesn't seem to include them. How is this possible? Can I somehow debug my wallet configuration?

[Android] App is not reproducible, many diffs when comparing apks

Building tag android-4.11.1 with Containerfile.debian:

FROM debian:sid-slim

RUN set -ex; \
    mkdir -p /usr/share/man/man1/; \
    apt-get update; \
    apt-get install --yes --no-install-recommends openjdk-8-jdk git; \
    rm -rf /var/lib/apt/lists/*; \
    useradd -ms /bin/bash appuser;

USER appuser

ENV ANDROID_SDK_ROOT="/home/appuser/app/sdk" \
    ANDROID_HOME="/home/appuser/app/sdk"

RUN set -ex; \
    mkdir -p "/home/appuser/app/sdk/licenses" "/home/appuser/app/brd/"; \
    printf "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > "/home/appuser/app/sdk/licenses/android-sdk-license"; \
    cd /home/appuser/app/brd/; \
    git clone https://github.com/breadwallet/brd-mobile.git --recurse-submodules; \
    cd /home/appuser/app/brd/brd-mobile; \
    git checkout android-4.11.1; \
    ./gradlew brd-android:app:assemble

build with:

podman build --rm -t brd_build_apk -f Containerfile.debian .

APK file in : /home/appuser/app/brd/brd-mobile/brd-android/app/build/outputs/apk/brd/release/brd-release-4.11.1.1.apk

And comparing it to APK downloaded from google-play:

diff --recursive --brief ./brd-google-play/ ./brd-release-build-4.11.1.1
Files ./brd-google-play/classes2.dex and ./brd-release-build-4.11.1.1/classes2.dex differ
Files ./brd-google-play/classes3.dex and ./brd-release-build-4.11.1.1/classes3.dex differ
Files ./brd-google-play/classes.dex and ./brd-release-build-4.11.1.1/classes.dex differ
Files ./brd-google-play/lib/arm64-v8a/libcorecrypto.so and ./brd-release-build-4.11.1.1/lib/arm64-v8a/libcorecrypto.so differ
Files ./brd-google-play/lib/armeabi-v7a/libcorecrypto.so and ./brd-release-build-4.11.1.1/lib/armeabi-v7a/libcorecrypto.so differ
Files ./brd-google-play/lib/x86/libcorecrypto.so and ./brd-release-build-4.11.1.1/lib/x86/libcorecrypto.so differ
Files ./brd-google-play/lib/x86_64/libcorecrypto.so and ./brd-release-build-4.11.1.1/lib/x86_64/libcorecrypto.so differ
Files ./brd-google-play/META-INF/CERT.RSA and ./brd-release-build-4.11.1.1/META-INF/CERT.RSA differ
Files ./brd-google-play/META-INF/CERT.SF and ./brd-release-build-4.11.1.1/META-INF/CERT.SF differ
Files ./brd-google-play/META-INF/MANIFEST.MF and ./brd-release-build-4.11.1.1/META-INF/MANIFEST.MF differ
Files ./brd-google-play/res/drawable/$avd_hide_password__0.xml and ./brd-release-build-4.11.1.1/res/drawable/$avd_hide_password__0.xml differ
Files ./brd-google-play/res/drawable/$avd_hide_password__1.xml and ./brd-release-build-4.11.1.1/res/drawable/$avd_hide_password__1.xml differ
Files ./brd-google-play/res/drawable/$avd_show_password__0.xml and ./brd-release-build-4.11.1.1/res/drawable/$avd_show_password__0.xml differ
Files ./brd-google-play/res/drawable/$avd_show_password__1.xml and ./brd-release-build-4.11.1.1/res/drawable/$avd_show_password__1.xml differ
Files ./brd-google-play/res/drawable/design_ic_visibility.xml and ./brd-release-build-4.11.1.1/res/drawable/design_ic_visibility.xml differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-hdpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-hdpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-ldpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-ldpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-mdpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-mdpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-xhdpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-xhdpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-xxhdpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-xxhdpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_add_wallets.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_add_wallets.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_atm_finder.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_atm_finder.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_bell.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_buy_bell.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_buy_bell.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_close.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_close.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_close_red.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_close_red.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_ens_mod.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_ens_mod.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_fio.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_fio.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_menu_buy_sell.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_menu_buy_sell.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_menu_more.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_menu_more.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_menu.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_menu.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_menu_trade.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_menu_trade.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_paystring_logo_light_bkgd.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_paystring_logo_light_bkgd.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_reclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_reclaimed.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_transfer_arrow_receive.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_transfer_arrow_receive.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_transfer_arrow_send.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_transfer_arrow_send.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_unclaimed.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_unclaimed.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_unstoppable_logo.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_unstoppable_logo.png differ
Files ./brd-google-play/res/drawable-xxxhdpi-v4/ic_wipe_wallet.png and ./brd-release-build-4.11.1.1/res/drawable-xxxhdpi-v4/ic_wipe_wallet.png differ
Files ./brd-google-play/res/layout/material_clock_display_divider.xml and ./brd-release-build-4.11.1.1/res/layout/material_clock_display_divider.xml differ
Files ./brd-google-play/res/layout/material_clock_period_toggle.xml and ./brd-release-build-4.11.1.1/res/layout/material_clock_period_toggle.xml differ
Files ./brd-google-play/res/layout/material_timepicker_dialog.xml and ./brd-release-build-4.11.1.1/res/layout/material_timepicker_dialog.xml differ
Files ./brd-google-play/res/layout/mtrl_calendar_month_navigation.xml and ./brd-release-build-4.11.1.1/res/layout/mtrl_calendar_month_navigation.xml differ
Files ./brd-google-play/res/layout/mtrl_picker_actions.xml and ./brd-release-build-4.11.1.1/res/layout/mtrl_picker_actions.xml differ
Files ./brd-google-play/res/layout/mtrl_picker_header_fullscreen.xml and ./brd-release-build-4.11.1.1/res/layout/mtrl_picker_header_fullscreen.xml differ
Files ./brd-google-play/res/layout/mtrl_picker_text_input_date_range.xml and ./brd-release-build-4.11.1.1/res/layout/mtrl_picker_text_input_date_range.xml differ
Files ./brd-google-play/res/layout/mtrl_picker_text_input_date.xml and ./brd-release-build-4.11.1.1/res/layout/mtrl_picker_text_input_date.xml differ
Files ./brd-google-play/res/layout-land/material_clock_period_toggle_land.xml and ./brd-release-build-4.11.1.1/res/layout-land/material_clock_period_toggle_land.xml differ
Files ./brd-google-play/res/layout-v19/fingerprint_dialog_layout.xml and ./brd-release-build-4.11.1.1/res/layout-v19/fingerprint_dialog_layout.xml differ
Files ./brd-google-play/resources.arsc and ./brd-release-build-4.11.1.1/resources.arsc differ

BRD Team, Shame on You

As a dedicated cryptocurrency hodler, I adhered to the principle of "not your keys, not your coins." I chose the BRD wallet from the bitcoin.org official website, and now, with the closure of the BRD wallet, I find myself unable to retrieve my Bitcoin. Since 2017, I have been accumulating my Bitcoin, never selling a single one. Now, these coins are lost with the shutdown of the BRD wallet, leaving me immensely angry.

I once trusted the BRD wallet so much. Look at what you still write in the README, "If BRD the company disappears, your private key can still be derived from the recovery phrase to recover your funds since your funds exist on the blockchain." (Source: BRD README) Now, it has become a reality. BRD has been acquired by Coinbase, the team members have made their fortunes, but user assets have disappeared. Yet, you have never provided a recovery tool or solution. I don't even know how many users, like me, are unable to recover their Bitcoin.

Let me outline the attempts I've made. Firstly, it's crucial to note that my recovery phrase is 100% correct. I created the BRD wallet on my iPhone 6 and successfully recovered the balance on another old iPhone X using the BRD recovery phrase.

Here are my attempts:

  1. I imported my recovery phrase into different wallets such as Bither, Coinbase, Unstoppable, Coinomi, Coin Wallet, Electrum, etc., to restore transactions, but all displayed a balance of 0, with no transaction records.

  2. My wallet addresses all start with '1', indicating legacy addresses. I followed various online forums that suggested BRD uses m/0' as the derivation path to generate legacy and segwit addresses. I used the Electrum wallet, selected "Restore from an existing wallet" -> "Recover BIP39 seed," and entered different derivation paths, including but not limited to m/0', m/0'/0', m/0'/0'/0, m/0'/0'/1, m/0'/1/0, m/0'/1/1, m/1', m/1'/0, m/1'/1, m/44'/0'/0', m/44'/1'/0', etc. Unfortunately, none were successful. I can confirm that my transaction count does not exceed 20, and I attempted the following commands in the Electrum console, even adjusting the gap size from 200 to 1000, but to no avail:
    wallet.create_new_address(False) for i in range(200)
    wallet.create_new_address(True) for i in range(200)

  3. I read through the wallet's code at BRD GitHub Repository. I noticed BRBIP32Sequence.c:BRBIP32MasterPubKey is the function to generate the master public key, using m/0' as the derivation path. However, why isn't it effective for me? I compiled this code, used my recovery phrase, and generated keys using the following functions:
    BRBIP39DeriveKey(seed.u8, "xxxx");
    mpk = BRBIP32MasterPubKey(&seed, sizeof(seed));
    wallet = btcWalletNew(getChainParams(BITCOIN_CHAIN_BTC, 1)->addrParams, NULL, 0, mpk);
    printf("Wallet created with the first receive address: %s\n", btcWalletLegacyAddress(wallet).s);
    The output address matched the first address generated by Electrum, and my heart broke.

I am not alone; my friends and I are all unsuccessful in recovering our balances. Most of our assets are locked inside, and I don't know how many victims share our plight.

My faith has been severely shaken. Now, the only Bitcoin I feel secure about is on centralized exchanges. It's ironic that a currency claiming to be decentralized finds its safest haven in centralized exchanges—how amusing. I share my experience to let more people who have had the same experience see it. The wallet that claims to protect the assets of 6 million people and 7 billion dollars treats its users this way. (Source)

If there are users with similar experiences, I urge you to come forward and make your voices heard. Let the BRD team or the community, based on the current open-source code, provide users with a Bitcoin wallet that doesn't depend on servers, can run independently, and never goes offline.

Migrating to exisitng coinbase wallet

The available instructions for migration don't seem to cover cases where the user already has coinbase wallet. There is no option when you open coinbase wallet to tap "I already have a wallet" (as per the instructions) if one already literally has a coinbase wallet. I don't see anything within coinbase wallet's options, settings, etc, to add a new wallet/import a new passphrase to an existing wallet. There is nothing on coinbase's available support regarding BRD wallet imports.

I recently restored BRD wallet to my device because I need to export the transaction history for tax purposes. I don't actually even care about importing the brd wallet to coinbase, all I want is tx history, but when I export the csv file (great feature, btw, if it worked) using brd wallet, the file is empty. I definitely transacted many times with brd when using the wallet, however.

Please advise how to either import the wallet to an existing coinbase wallet or properly access full transaction history.

Feature Request: Add XDC an EVM compatible Wallet to breadwallet

Hey Breadwallet Team,

We are the XDC Network!

I’m Quincy a Developer for the XDC foundation I’m reaching out to have our EVM compatible token XDC added to your wallet.

The XDC Network is an enterprise-ready hybrid Blockchain optimized for international trade and finance. Our network allows for public and private access to data making it unique from other permission-less protocols. We are 100% EVM Compatible with the network coin called XDC. The consensus is XDC Delegated Proof of Stake protocol (XDPoS) with 108 master-nodes currently staking 10 million XDC.  We support all solidity smart contracts and have 2000TPS and a 2 second transaction time.

XDC is a huge up-and-coming token that currently has $1,676,620,818 market cap and ranked 72 with a current $7,337,530 USD 24-hour trading volume. XDC is currently on a ton of exchanges like Kucoin, Bittrex, Bitfinex, Liquid and others...More are being added every week along with being added to additional wallets for our community.

https://markets.businessinsider.com/news/stocks/xdc-network-spearheads-blockchain-4-0-adding-accountability-and-forensic-protocols-1030639921


https://itfa.org/xinfins-xdc-network-the-first-blockchain-company-to-join-the-global-tfd-initiative/





XDC Network: 
https://explorer.xinfin.network/home

XDCPay Chrome Extension:
https://chrome.google.com/webstore/detail/xinpay/bocpokimicclpaiekenaeelehdjllofo

XDC Wallet (Android App):
https://play.google.com/store/apps/details?id=com.xdcwallet&hl=en&gl=US

Github:
https://github.com/XinFinOrg/XDPoSChain

Docker FullNode:
 https://github.com/xinfinorg/XinFin-Node

Integration Code example: 
https://xinfin.org/exchange-listing-resource

Technical Community Support available at:

Telegram Community:
 https://t.me/XinFinDevelopers

Slack Community: 
https://xinfin-public.slack.com/messages/CELR2M831/

Slack Invitation Link:
https://launchpass.com/xinfin-public

Technical help Resource: 
http://howto.xinfin.org/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.