diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 272f7bbee..18ad16e4b 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -11,4 +11,3 @@ Please include a summary of the changes and which issue is fixed / feature is ad
- [ ] Format code
- [ ] Look for code duplication
- [ ] Clear naming for variables and methods
-- [ ] Manual tests in accessibility mode (TalkBack on Android) passed
diff --git a/.github/workflows/automated_integration_test.yml b/.github/workflows/automated_integration_test.yml
index 47b08c44d..1ed5baf9f 100644
--- a/.github/workflows/automated_integration_test.yml
+++ b/.github/workflows/automated_integration_test.yml
@@ -12,7 +12,7 @@ on:
jobs:
Automated_integration_test:
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
@@ -55,7 +55,7 @@ jobs:
- name: Flutter action
uses: subosito/flutter-action@v1
with:
- flutter-version: "3.27.0"
+ flutter-version: "3.27.4"
channel: stable
- name: Install package dependencies
@@ -153,8 +153,8 @@ jobs:
echo "const shortKey = '${{ secrets.SHORT_KEY }}';" >> lib/.secrets.g.dart
echo "const backupSalt = '${{ secrets.BACKUP_SALT }}';" >> lib/.secrets.g.dart
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
- echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
@@ -168,7 +168,6 @@ jobs:
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
@@ -179,8 +178,7 @@ jobs:
echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
- echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
diff --git a/.github/workflows/no_http_imports.yaml b/.github/workflows/no_http_imports.yaml
deleted file mode 100644
index dad6821ac..000000000
--- a/.github/workflows/no_http_imports.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: No http imports
-
-on: [pull_request]
-
-jobs:
- PR_test_build:
- runs-on: ubuntu-24.04
-
- steps:
- - uses: actions/checkout@v4
- - name: Check for http package usage
- if: github.event_name == 'pull_request'
- run: |
- GIT_GREP_OUT="$(git grep package:http | (grep .dart: || test $? = 1) | (grep -v proxy_wrapper.dart || test $? = 1) | (grep -v very_insecure_http_do_not_use || test $? = 1) || true)"
- [[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
- echo "$GIT_GREP_OUT"
- echo "There are .dart files which use http imports"
- echo "Using http package breaks proxy integration"
- echo "Please use ProxyWrapper.getHttpClient() from package:cw_core/utils/proxy_wrapper.dart"
- exit 1
-
\ No newline at end of file
diff --git a/.github/workflows/no_print_in_dart.yaml b/.github/workflows/no_print_in_dart.yaml
index 507793bd8..b321a9cc9 100644
--- a/.github/workflows/no_print_in_dart.yaml
+++ b/.github/workflows/no_print_in_dart.yaml
@@ -4,16 +4,16 @@ on: [pull_request]
jobs:
PR_test_build:
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Check for print() statements in dart code (use printV() instead)
if: github.event_name == 'pull_request'
run: |
- GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) | (grep -v print_verbose_dummy.dart || test $? = 1) || true)"
+ GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) || true)"
[[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
echo "$GIT_GREP_OUT"
echo "There are .dart files which use print() statements"
- echo "Please use printV from package:cw_core/utils/print_verbose.dart"
+ echo "Please use printV from package: cw_core/utils/print_verbose.dart"
exit 1
diff --git a/.github/workflows/no_restricted_imports.yaml b/.github/workflows/no_restricted_imports.yaml
index 03c3de018..4b17de31a 100644
--- a/.github/workflows/no_restricted_imports.yaml
+++ b/.github/workflows/no_restricted_imports.yaml
@@ -4,7 +4,7 @@ on: [pull_request]
jobs:
check_restricted_imports:
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/pr_test_build_android.yml b/.github/workflows/pr_test_build_android.yml
index f7c226ce4..6c72b587d 100644
--- a/.github/workflows/pr_test_build_android.yml
+++ b/.github/workflows/pr_test_build_android.yml
@@ -9,7 +9,7 @@ jobs:
PR_test_build:
runs-on: linux-amd64
container:
- image: ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
+ image: ghcr.io/cake-tech/cake_wallet:3.27.4-linux
env:
STORE_PASS: test@cake_wallet
KEY_PASS: test@cake_wallet
@@ -98,8 +98,8 @@ jobs:
else
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
fi
- echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
@@ -113,7 +113,6 @@ jobs:
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
@@ -125,8 +124,7 @@ jobs:
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
- echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
@@ -255,11 +253,6 @@ jobs:
- name: Build generated code
run: |
- flutter --version
- flutter clean
- rm -rf .dart_tool
- rm pubspec.lock
- flutter pub get
./model_generator.sh async
- name: Generate key properties
@@ -281,7 +274,7 @@ jobs:
- name: Build
run: |
- flutter build apk --dart-define=hasDevOptions=true --release --split-per-abi
+ flutter build apk --release --split-per-abi
- name: Rename apk file
run: |
diff --git a/.github/workflows/pr_test_build_linux.yml b/.github/workflows/pr_test_build_linux.yml
index f057b19e5..9317aab34 100644
--- a/.github/workflows/pr_test_build_linux.yml
+++ b/.github/workflows/pr_test_build_linux.yml
@@ -9,7 +9,7 @@ jobs:
PR_test_build:
runs-on: linux-amd64
container:
- image: ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
+ image: ghcr.io/cake-tech/cake_wallet:3.27.4-linux
env:
STORE_PASS: test@cake_wallet
KEY_PASS: test@cake_wallet
@@ -22,6 +22,9 @@ jobs:
- /opt/cw_cache_linux/root/.pub-cache/:/root/.pub-cache
- /opt/cw_cache_linux/root/go/pkg:/root/go/pkg
- /opt/cw_cache_linux/opt/generic_cache:/opt/generic_cache
+ strategy:
+ matrix:
+ api-level: [29]
steps:
- name: Fix github actions messing up $HOME...
@@ -91,8 +94,8 @@ jobs:
else
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
fi
- echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
@@ -106,7 +109,6 @@ jobs:
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
@@ -118,8 +120,7 @@ jobs:
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
- echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
- echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
+ echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
@@ -227,7 +228,7 @@ jobs:
- name: Build linux
run: |
- flutter build linux --dart-define=hasDevOptions=true --release
+ flutter build linux --release
- name: Compress release
run: |
@@ -285,9 +286,6 @@ jobs:
xmessage -timeout 30 "restore_wallet_through_seeds_flow_test" &
rm -rf ~/.local/share/com.example.cake_wallet/ ~/Documents/cake_wallet/ ~/cake_wallet
exec timeout --signal=SIGKILL 900 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/test_suites/restore_wallet_through_seeds_flow_test.dart
- - name: Test [cw_monero]
- timeout-minutes: 2
- run: cd cw_monero && flutter test
- name: Stop screen recording, encrypt and upload
if: always()
run: |
diff --git a/.gitignore b/.gitignore
index 84a7ecdcd..e78b1c4e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -141,28 +141,9 @@ lib/wownero/wownero.dart
lib/zano/zano.dart
lib/decred/decred.dart
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png
-ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png
-
+ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png
+ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png
+ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
ios/Runner/Info.plist
android/app/src/main/res/mipmap-*
android/app/src/main/res/drawable/ic_launcher.png
@@ -204,26 +185,3 @@ ios/MoneroWallet.framework/MoneroWallet
ios/WowneroWallet.framework/WowneroWallet
ios/ZanoWallet.framework/ZanoWallet
*_libwallet2_api_c.dylib
-
-.flatpak-builder
-cake_wallet.flatpak
-flatpak-build/
-
-# macOS
-**/Flutter/ephemeral/
-**/Pods/
-**/macos/Flutter/GeneratedPluginRegistrant.swift
-**/macos/Flutter/ephemeral
-**/xcuserdata/
-
-# Windows
-**/windows/flutter/ephemeral/
-**/windows/flutter/generated_plugin_registrant.cc
-**/windows/flutter/generated_plugin_registrant.h
-**/windows/flutter/generated_plugins.cmake
-
-# Linux
-**/linux/flutter/ephemeral/
-**/linux/flutter/generated_plugin_registrant.cc
-**/linux/flutter/generated_plugin_registrant.h
-**/linux/flutter/generated_plugins.cmake
diff --git a/Dockerfile b/Dockerfile
index 151b7af20..d9c99da0b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,5 @@
-# docker buildx build --push --pull --platform linux/amd64,linux/arm64 . -f Dockerfile -t ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
+# docker build . -f Dockerfile -t ghcr.io/cake-tech/cake_wallet:3.27.4-linux
+# docker push ghcr.io/cake-tech/cake_wallet:3.27.4-linux
# Heavily inspired by cirrusci images
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/tools/Dockerfile
@@ -6,20 +7,20 @@
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/34-ndk/Dockerfile
# https://github.com/cirruslabs/docker-images-flutter/blob/master/sdk/Dockerfile
-FROM docker.io/debian:12
+FROM --platform=linux/amd64 docker.io/debian:12
LABEL org.opencontainers.image.source=https://github.com/cake-tech/cake_wallet
# Set necessary environment variables
# Set Go version to latest known-working version
-ENV GOLANG_VERSION=1.24.1
+ENV GOLANG_VERSION=1.23.4
# Pin Flutter version to latest known-working version
-ENV FLUTTER_VERSION=3.27.0
+ENV FLUTTER_VERSION=3.27.4
# Pin Android Studio, platform, and build tools versions to latest known-working version
# Comes from https://developer.android.com/studio/#command-tools
-ENV ANDROID_SDK_TOOLS_VERSION=13114758
+ENV ANDROID_SDK_TOOLS_VERSION=11076708
# Comes from https://developer.android.com/studio/releases/build-tools
ENV ANDROID_PLATFORM_VERSION=35
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0
@@ -59,20 +60,11 @@ RUN set -o xtrace \
ffmpeg network-manager x11-utils xvfb psmisc \
# aarch64-linux-gnu dependencies
g++-aarch64-linux-gnu gcc-aarch64-linux-gnu \
- # x86_64-linux-gnu dependencies
- g++-x86-64-linux-gnu gcc-x86-64-linux-gnu \
- # flatpak dependencies
- flatpak flatpak-builder binutils elfutils patch unzip xz-utils zstd \
&& apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& sh -c 'echo "en_US.UTF-8 UTF-8" > /etc/locale.gen' \
&& locale-gen \
&& update-locale LANG=en_US.UTF-8
-ENV FLATPAK_RUNTIME_VERSION=24.08
-RUN flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo \
- && flatpak install -y flathub org.freedesktop.Platform//${FLATPAK_RUNTIME_VERSION} \
- && flatpak install -y flathub org.freedesktop.Sdk//${FLATPAK_RUNTIME_VERSION}
-
# Install nodejs for Github Actions
RUN curl -fsSL https://deb.nodesource.com/setup_23.x | bash - && \
apt-get install -y --no-install-recommends nodejs && \
@@ -82,28 +74,14 @@ RUN curl -fsSL https://deb.nodesource.com/setup_23.x | bash - && \
ENV PATH=${PATH}:/usr/local/go/bin:${HOME}/go/bin
ENV GOROOT=/usr/local/go
ENV GOPATH=${HOME}/go
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" = "x86_64" ]; then \
- wget https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz -O go.tar.gz; \
- elif [ "$ARCH" = "aarch64" ]; then \
- wget https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz -O go.tar.gz; \
- else \
- echo "Unsupported architecture: $ARCH"; exit 1; \
- fi && \
- rm -rf /usr/local/go && \
- tar -C /usr/local -xzf go.tar.gz && \
- rm go.tar.gz && \
+RUN wget https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz &&\
+ rm -rf /usr/local/go &&\
+ tar -C /usr/local -xzf go${GOLANG_VERSION}.linux-amd64.tar.gz && \
go install golang.org/x/mobile/cmd/gomobile@latest && \
gomobile init
-RUN git config --global user.email "czarek@cakewallet.com" \
- && git config --global user.name "CakeWallet CI"
-
-
# Install Android SDK commandline tools and emulator
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
- && wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
+RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
@@ -116,17 +94,14 @@ RUN ARCH=$(uname -m) && \
&& sdkmanager platform-tools \
&& mkdir -p ${HOME}/.android \
&& touch ${HOME}/.android/repositories.cfg \
-
+ && git config --global user.email "czarek@cakewallet.com" \
+ && git config --global user.name "CakeWallet CI"
# Handle emulator not being available on linux/arm64 (https://issuetracker.google.com/issues/227219818)
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
- && sdkmanager emulator
+RUN if [ $(uname -m) == "x86_64" ]; then sdkmanager emulator ; fi
# Pre-install extra Android SDK dependencies in order to not have to download them for each build
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
- && yes | sdkmanager \
+RUN yes | sdkmanager \
"platforms;android-$ANDROID_PLATFORM_VERSION" \
"build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
"platforms;android-33" \
@@ -139,16 +114,12 @@ RUN ARCH=$(uname -m) && \
# Install extra NDK dependency for sp_scanner
ENV ANDROID_NDK_VERSION=27.2.12479018
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
- && yes | sdkmanager "ndk;$ANDROID_NDK_VERSION" \
+RUN yes | sdkmanager "ndk;$ANDROID_NDK_VERSION" \
"ndk;27.0.12077973"
# Install dependencies for tests
# Comes from https://github.com/ReactiveCircus/android-emulator-runner
-RUN ARCH=$(uname -m) && \
- if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
- && yes | sdkmanager \
+RUN yes | sdkmanager \
"system-images;android-29;default;x86_64" \
"system-images;android-31;default;x86_64" \
"platforms;android-29" \
@@ -164,12 +135,9 @@ RUN (addgroup kvm || true) && \
ENV PATH=${HOME}/.cargo/bin:${PATH}
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \
cargo install cargo-ndk && \
- for toolchain in stable nightly; \
+ for target in aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android x86_64-unknown-linux-gnu; \
do \
- for target in aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu aarch64-unknown-linux-gnu; \
- do \
- rustup target add --toolchain $toolchain $target; \
- done \
+ rustup target add --toolchain stable $target; \
done
# Download and install Flutter
@@ -178,11 +146,8 @@ ENV FLUTTER_HOME=${HOME}/sdks/flutter/${FLUTTER_VERSION}
ENV FLUTTER_ROOT=$FLUTTER_HOME
ENV PATH=${PATH}:${FLUTTER_HOME}/bin:${FLUTTER_HOME}/bin/cache/dart-sdk/bin
-RUN git clone --branch ${FLUTTER_VERSION} https://github.com/flutter/flutter.git ${FLUTTER_HOME} && \
- cd ${FLUTTER_HOME} && \
- git fetch -a
-
-RUN yes | flutter doctor --android-licenses \
+RUN git clone --depth 1 --branch ${FLUTTER_VERSION} https://github.com/flutter/flutter.git ${FLUTTER_HOME} \
+ && yes | flutter doctor --android-licenses \
&& flutter doctor \
&& chown -R root:root ${FLUTTER_HOME}
diff --git a/README.md b/README.md
index ea796dbf2..ea8f34624 100644
--- a/README.md
+++ b/README.md
@@ -26,13 +26,10 @@ Cake Wallet includes support for several cryptocurrencies, including:
* Ethereum (ETH)
* Litecoin (LTC)
* Bitcoin Cash (BCH)
-* Polygon (POL)
+* Polygon (Pol)
* Solana (SOL)
-* Tron (TRX)
* Nano (XNO)
-* Zano (ZANO)
-* Decred (DCR)
-* Wownero (WOW)
+* Haven (XHV)
## Features
@@ -84,6 +81,10 @@ Cake Wallet includes support for several cryptocurrencies, including:
* Automatically generate new addresses
* Specify multiple recipients for batch sending
+### Haven Specific Features
+
+* Send, receive, and store XHV and all xAssets like xUSD, xEUR, xAG, etc.
+
# Monero.com by Cake Wallet for Android and iOS
## Open Source Monero-Only Wallet
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 4a8045bb3..c45ed9368 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -42,14 +42,6 @@ android {
disable 'InvalidPackage'
}
- compileOptions {
- coreLibraryDesugaringEnabled true
-
- sourceCompatibility JavaVersion.VERSION_17
- targetCompatibility JavaVersion.VERSION_17
- }
-
-
namespace "com.cakewallet.cake_wallet"
defaultConfig {
@@ -81,6 +73,10 @@ android {
buildTypes {
release {
signingConfig signingConfigs.release
+
+ shrinkResources false
+ minifyEnabled false
+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
@@ -99,7 +95,6 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
}
configurations {
implementation.exclude module:'proto-google-common-protos'
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
index a733bae9e..d24d7f10a 100644
--- a/android/app/proguard-rules.pro
+++ b/android/app/proguard-rules.pro
@@ -5,98 +5,4 @@
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
--dontwarn io.flutter.embedding.**
--dontwarn com.google.android.play.core.splitcompat.SplitCompatApplication
-
-# start reown
--dontwarn com.github.luben.zstd.BufferPool
--dontwarn com.github.luben.zstd.ZstdInputStream
--dontwarn com.github.luben.zstd.ZstdOutputStream
--dontwarn com.google.api.client.http.GenericUrl
--dontwarn com.google.api.client.http.HttpHeaders
--dontwarn com.google.api.client.http.HttpRequest
--dontwarn com.google.api.client.http.HttpRequestFactory
--dontwarn com.google.api.client.http.HttpResponse
--dontwarn com.google.api.client.http.HttpTransport
--dontwarn com.google.api.client.http.javanet.NetHttpTransport$Builder
--dontwarn com.google.api.client.http.javanet.NetHttpTransport
--dontwarn java.awt.Color
--dontwarn java.awt.Dimension
--dontwarn java.awt.Graphics2D
--dontwarn java.awt.Graphics
--dontwarn java.awt.Image
--dontwarn java.awt.Point
--dontwarn java.awt.Polygon
--dontwarn java.awt.Shape
--dontwarn java.awt.color.ColorSpace
--dontwarn java.awt.geom.AffineTransform
--dontwarn java.awt.image.BufferedImage
--dontwarn java.awt.image.ColorModel
--dontwarn java.awt.image.ComponentColorModel
--dontwarn java.awt.image.ComponentSampleModel
--dontwarn java.awt.image.DataBuffer
--dontwarn java.awt.image.DataBufferByte
--dontwarn java.awt.image.DataBufferInt
--dontwarn java.awt.image.DataBufferUShort
--dontwarn java.awt.image.ImageObserver
--dontwarn java.awt.image.MultiPixelPackedSampleModel
--dontwarn java.awt.image.Raster
--dontwarn java.awt.image.RenderedImage
--dontwarn java.awt.image.SampleModel
--dontwarn java.awt.image.SinglePixelPackedSampleModel
--dontwarn java.awt.image.WritableRaster
--dontwarn java.beans.BeanInfo
--dontwarn java.beans.FeatureDescriptor
--dontwarn java.beans.IntrospectionException
--dontwarn java.beans.Introspector
--dontwarn java.beans.PropertyDescriptor
--dontwarn java.lang.reflect.InaccessibleObjectException
--dontwarn javax.imageio.IIOImage
--dontwarn javax.imageio.ImageIO
--dontwarn javax.imageio.ImageWriteParam
--dontwarn javax.imageio.ImageWriter
--dontwarn javax.imageio.metadata.IIOMetadata
--dontwarn javax.imageio.stream.ImageOutputStream
--dontwarn javax.swing.JComponent
--dontwarn javax.swing.JFileChooser
--dontwarn javax.swing.JFrame
--dontwarn javax.swing.JPanel
--dontwarn javax.swing.ProgressMonitor
--dontwarn javax.swing.SwingUtilities
--dontwarn org.brotli.dec.BrotliInputStream
--dontwarn org.joda.time.Instant
--dontwarn org.objectweb.asm.AnnotationVisitor
--dontwarn org.objectweb.asm.Attribute
--dontwarn org.objectweb.asm.ClassReader
--dontwarn org.objectweb.asm.ClassVisitor
--dontwarn org.objectweb.asm.FieldVisitor
--dontwarn org.objectweb.asm.Label
--dontwarn org.objectweb.asm.MethodVisitor
--dontwarn org.objectweb.asm.Type
--dontwarn org.tukaani.xz.ARMOptions
--dontwarn org.tukaani.xz.ARMThumbOptions
--dontwarn org.tukaani.xz.DeltaOptions
--dontwarn org.tukaani.xz.FilterOptions
--dontwarn org.tukaani.xz.FinishableOutputStream
--dontwarn org.tukaani.xz.FinishableWrapperOutputStream
--dontwarn org.tukaani.xz.IA64Options
--dontwarn org.tukaani.xz.LZMA2InputStream
--dontwarn org.tukaani.xz.LZMA2Options
--dontwarn org.tukaani.xz.LZMAInputStream
--dontwarn org.tukaani.xz.LZMAOutputStream
--dontwarn org.tukaani.xz.MemoryLimitException
--dontwarn org.tukaani.xz.PowerPCOptions
--dontwarn org.tukaani.xz.SPARCOptions
--dontwarn org.tukaani.xz.SingleXZInputStream
--dontwarn org.tukaani.xz.UnsupportedOptionsException
--dontwarn org.tukaani.xz.X86Options
--dontwarn org.tukaani.xz.XZ
--dontwarn org.tukaani.xz.XZInputStream
--dontwarn org.tukaani.xz.XZOutputStream
--dontwarn us.hebi.matlab.mat.ejml.Mat5Ejml
--dontwarn us.hebi.matlab.mat.format.Mat5
--dontwarn us.hebi.matlab.mat.format.Mat5File
--dontwarn us.hebi.matlab.mat.types.Array
--dontwarn us.hebi.matlab.mat.types.MatFile$Entry
--dontwarn us.hebi.matlab.mat.types.MatFile
-# end reown
\ No newline at end of file
+-dontwarn io.flutter.embedding.**
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifestBase.xml b/android/app/src/main/AndroidManifestBase.xml
index 8283a7c8c..9a324edf3 100644
--- a/android/app/src/main/AndroidManifestBase.xml
+++ b/android/app/src/main/AndroidManifestBase.xml
@@ -24,10 +24,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/images/2fa_warning_light.svg b/assets/images/2fa_warning_light.svg
deleted file mode 100644
index 087d8e99b..000000000
--- a/assets/images/2fa_warning_light.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
diff --git a/assets/images/birthday_cake.png b/assets/images/birthday_cake.png
index 293cd10f6..84b084fba 100644
Binary files a/assets/images/birthday_cake.png and b/assets/images/birthday_cake.png differ
diff --git a/assets/images/birthday_cake.svg b/assets/images/birthday_cake.svg
new file mode 100644
index 000000000..b5e31dddb
--- /dev/null
+++ b/assets/images/birthday_cake.svg
@@ -0,0 +1,31 @@
+
diff --git a/assets/images/btc_lock_dark.png b/assets/images/btc_lock_dark.png
deleted file mode 100644
index f5b3d7e27..000000000
Binary files a/assets/images/btc_lock_dark.png and /dev/null differ
diff --git a/assets/images/btc_lock_light.png b/assets/images/btc_lock_light.png
deleted file mode 100644
index 4320d96e3..000000000
Binary files a/assets/images/btc_lock_light.png and /dev/null differ
diff --git a/assets/images/buy.png b/assets/images/buy.png
index 32c116e6b..ff4549d5a 100644
Binary files a/assets/images/buy.png and b/assets/images/buy.png differ
diff --git a/assets/images/cake_logo.png b/assets/images/cake_logo.png
index abbb4e62b..8a85bf225 100644
Binary files a/assets/images/cake_logo.png and b/assets/images/cake_logo.png differ
diff --git a/assets/images/cake_logo_dark.svg b/assets/images/cake_logo_dark.svg
deleted file mode 100644
index 095077443..000000000
--- a/assets/images/cake_logo_dark.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/assets/images/cake_logo_light.svg b/assets/images/cake_logo_light.svg
deleted file mode 100644
index 767e205d1..000000000
--- a/assets/images/cake_logo_light.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/assets/images/cakewallet_android_icon.png b/assets/images/cakewallet_android_icon.png
old mode 100644
new mode 100755
index 7f15c62f5..59cc69414
Binary files a/assets/images/cakewallet_android_icon.png and b/assets/images/cakewallet_android_icon.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-anydpi-v26/ic_launcher.xml b/assets/images/cakewallet_android_icon/mipmap-anydpi-v26/ic_launcher.xml
index 345888d26..c8bd4b26c 100644
--- a/assets/images/cakewallet_android_icon/mipmap-anydpi-v26/ic_launcher.xml
+++ b/assets/images/cakewallet_android_icon/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher.png
index 89c9b0571..10d0a1a82 100644
Binary files a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher.png and b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_back.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 000000000..5b0fde827
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_back.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_fore.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 000000000..9c16f0a27
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_fore.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_mono.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_mono.png
new file mode 100644
index 000000000..27f939b41
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_adaptive_mono.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_background.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_background.png
deleted file mode 100644
index 19669488f..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_background.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_foreground.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 1411a5da5..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_monochrome.png b/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_monochrome.png
deleted file mode 100644
index 1411a5da5..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-hdpi/ic_launcher_monochrome.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher.png
index 8f1d1c28b..8c59ec33e 100644
Binary files a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher.png and b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_back.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 000000000..5d25e42e7
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_back.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_fore.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 000000000..021fe65de
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_fore.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_mono.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_mono.png
new file mode 100644
index 000000000..7bdb298c1
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_adaptive_mono.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_background.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_background.png
deleted file mode 100644
index 75025cfd5..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_background.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_foreground.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index e8c47adb3..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_monochrome.png b/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_monochrome.png
deleted file mode 100644
index e8c47adb3..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-mdpi/ic_launcher_monochrome.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher.png
index f775a8fac..10c3acd7f 100644
Binary files a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher.png and b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_back.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 000000000..c4b66dc58
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_back.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 000000000..b440b154d
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_mono.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_mono.png
new file mode 100644
index 000000000..79e9df08d
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_adaptive_mono.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_background.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_background.png
deleted file mode 100644
index 9784f16c8..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_foreground.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 6ba8eb301..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_monochrome.png b/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_monochrome.png
deleted file mode 100644
index 6ba8eb301..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xhdpi/ic_launcher_monochrome.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher.png
index 31458fa02..813a3678d 100644
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher.png and b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 000000000..75dc0219d
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_back.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 000000000..90afb19e8
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_mono.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_mono.png
new file mode 100644
index 000000000..0bb1c7430
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_adaptive_mono.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_background.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_background.png
deleted file mode 100644
index 04ef206c8..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_foreground.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index cc93d633b..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_monochrome.png b/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_monochrome.png
deleted file mode 100644
index cc93d633b..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxhdpi/ic_launcher_monochrome.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher.png
index 158afbbf9..671422b96 100644
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher.png and b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_back.png
new file mode 100644
index 000000000..46b1e2cb1
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_back.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png
new file mode 100644
index 000000000..0a2025220
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_mono.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_mono.png
new file mode 100644
index 000000000..205f2ad2a
Binary files /dev/null and b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_adaptive_mono.png differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_background.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_background.png
deleted file mode 100644
index 66a5487a2..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_foreground.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 0ecd56e8c..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_monochrome.png b/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_monochrome.png
deleted file mode 100644
index 0ecd56e8c..000000000
Binary files a/assets/images/cakewallet_android_icon/mipmap-xxxhdpi/ic_launcher_monochrome.png and /dev/null differ
diff --git a/assets/images/cakewallet_app_logo.png b/assets/images/cakewallet_app_logo.png
new file mode 100644
index 000000000..59cc69414
Binary files /dev/null and b/assets/images/cakewallet_app_logo.png differ
diff --git a/assets/images/cakewallet_icon_1024.png b/assets/images/cakewallet_icon_1024.png
index 35cf42245..64682cd1d 100644
Binary files a/assets/images/cakewallet_icon_1024.png and b/assets/images/cakewallet_icon_1024.png differ
diff --git a/assets/images/cakewallet_icon_120.png b/assets/images/cakewallet_icon_120.png
index 6e45f6423..1a2c1b99c 100644
Binary files a/assets/images/cakewallet_icon_120.png and b/assets/images/cakewallet_icon_120.png differ
diff --git a/assets/images/cakewallet_icon_180.png b/assets/images/cakewallet_icon_180.png
index da585ca42..ff69a866a 100644
Binary files a/assets/images/cakewallet_icon_180.png and b/assets/images/cakewallet_icon_180.png differ
diff --git a/assets/images/cakewallet_logo.png b/assets/images/cakewallet_logo.png
index c465fa26c..bf6896ad2 100644
Binary files a/assets/images/cakewallet_logo.png and b/assets/images/cakewallet_logo.png differ
diff --git a/assets/images/contact.png b/assets/images/contact.png
deleted file mode 100644
index 5cf96694b..000000000
Binary files a/assets/images/contact.png and /dev/null differ
diff --git a/assets/images/deuro_icon.png b/assets/images/deuro_icon.png
deleted file mode 100644
index 4dc068ff8..000000000
Binary files a/assets/images/deuro_icon.png and /dev/null differ
diff --git a/assets/images/hero/cw_welcome_dark.svg b/assets/images/hero/cw_welcome_dark.svg
deleted file mode 100644
index 5479cb1ee..000000000
--- a/assets/images/hero/cw_welcome_dark.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/assets/images/hero/cw_welcome_light.svg b/assets/images/hero/cw_welcome_light.svg
deleted file mode 100644
index ece7d1f84..000000000
--- a/assets/images/hero/cw_welcome_light.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/assets/images/history.svg b/assets/images/history.svg
deleted file mode 100644
index f308ab7e3..000000000
--- a/assets/images/history.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/assets/images/home_screen_setting_icon.svg b/assets/images/home_screen_setting_icon.svg
deleted file mode 100644
index 7b3aa7b4c..000000000
--- a/assets/images/home_screen_setting_icon.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x.png
deleted file mode 100644
index 3fd15f3ce..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x~ipad.png
deleted file mode 100644
index 3fd15f3ce..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@3x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@3x.png
deleted file mode 100644
index b6ff994f6..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20~ipad.png
deleted file mode 100644
index 4be1a2317..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29.png
deleted file mode 100644
index 219f2c6be..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x.png
deleted file mode 100644
index ae94bb0ac..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x~ipad.png
deleted file mode 100644
index ae94bb0ac..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@3x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@3x.png
deleted file mode 100644
index 0ef9d3bbf..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29~ipad.png
deleted file mode 100644
index 219f2c6be..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x.png
deleted file mode 100644
index 9fdb32376..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x~ipad.png
deleted file mode 100644
index 9fdb32376..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@3x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@3x.png
deleted file mode 100644
index 485f8b37b..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40~ipad.png
deleted file mode 100644
index 3fd15f3ce..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@2x~car.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@2x~car.png
deleted file mode 100644
index 485f8b37b..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@2x~car.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@3x~car.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@3x~car.png
deleted file mode 100644
index 50148e6dc..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-60@3x~car.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-83.5@2x~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-83.5@2x~ipad.png
deleted file mode 100644
index 8f290ada2..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon-83.5@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x.png
deleted file mode 100644
index 485f8b37b..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x~ipad.png
deleted file mode 100644
index b11d7332f..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@3x.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@3x.png
deleted file mode 100644
index 50148e6dc..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ios-marketing.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ios-marketing.png
deleted file mode 100644
index 1fce95553..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ios-marketing.png and /dev/null differ
diff --git a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ipad.png b/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ipad.png
deleted file mode 100644
index 7d4a82186..000000000
Binary files a/assets/images/ios_icons/cakewallet_ios_icons/AppIcon~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x.png
deleted file mode 100644
index 7ea540caf..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x~ipad.png
deleted file mode 100644
index 7ea540caf..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@3x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-20@3x.png
deleted file mode 100644
index 6ac773754..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-20@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-20~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-20~ipad.png
deleted file mode 100644
index 57864a9b3..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-20~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-29.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-29.png
deleted file mode 100644
index 27f817dfc..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-29.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x.png
deleted file mode 100644
index 0455b4409..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x~ipad.png
deleted file mode 100644
index 0455b4409..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@3x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-29@3x.png
deleted file mode 100644
index 1b8a73481..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-29@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-29~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-29~ipad.png
deleted file mode 100644
index 27f817dfc..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-29~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x.png
deleted file mode 100644
index 963612d0c..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x~ipad.png
deleted file mode 100644
index 963612d0c..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@3x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-40@3x.png
deleted file mode 100644
index b6da404cb..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-40@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-40~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-40~ipad.png
deleted file mode 100644
index 7ea540caf..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-40~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-60@2x~car.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-60@2x~car.png
deleted file mode 100644
index b6da404cb..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-60@2x~car.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-60@3x~car.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-60@3x~car.png
deleted file mode 100644
index 37f7651a5..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-60@3x~car.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon-83.5@2x~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon-83.5@2x~ipad.png
deleted file mode 100644
index 21aa12463..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon-83.5@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon@2x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon@2x.png
deleted file mode 100644
index b6da404cb..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon@2x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon@2x~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon@2x~ipad.png
deleted file mode 100644
index b6b63a61e..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon@2x~ipad.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon@3x.png b/assets/images/ios_icons/monero_ios_icons/AppIcon@3x.png
deleted file mode 100644
index 37f7651a5..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon@3x.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon~ios-marketing.png b/assets/images/ios_icons/monero_ios_icons/AppIcon~ios-marketing.png
deleted file mode 100644
index 0c977110a..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon~ios-marketing.png and /dev/null differ
diff --git a/assets/images/ios_icons/monero_ios_icons/AppIcon~ipad.png b/assets/images/ios_icons/monero_ios_icons/AppIcon~ipad.png
deleted file mode 100644
index 849c5612a..000000000
Binary files a/assets/images/ios_icons/monero_ios_icons/AppIcon~ipad.png and /dev/null differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_1024.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_1024.png
index c465fa26c..73101354a 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_1024.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_1024.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_128.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_128.png
index e79db4d99..9ceee3c5e 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_128.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_128.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_16.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_16.png
index 2d030845b..ef46cd805 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_16.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_16.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_256.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_256.png
index eef607c2c..6547a1b1b 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_256.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_256.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_32.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_32.png
index a09896830..e436872e8 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_32.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_32.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_512.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_512.png
index a98c5faf8..157b00493 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_512.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_512.png differ
diff --git a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_64.png b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_64.png
index d8141a250..a46ed4535 100644
Binary files a/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_64.png and b/assets/images/macos_icons/cakewallet_macos_icons/cakewallet_macos_64.png differ
diff --git a/assets/images/menu.svg b/assets/images/menu.svg
deleted file mode 100644
index 0a4cc3784..000000000
--- a/assets/images/menu.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/assets/images/notif.svg b/assets/images/notif.svg
deleted file mode 100644
index b1ff5b4fa..000000000
--- a/assets/images/notif.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/assets/images/notification_icon.svg b/assets/images/notification_icon.svg
index 360d0b4e6..099039e67 100644
--- a/assets/images/notification_icon.svg
+++ b/assets/images/notification_icon.svg
@@ -1,3 +1,69 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/assets/images/passphrase_dark.png b/assets/images/passphrase_dark.png
deleted file mode 100644
index f72d1e1a1..000000000
Binary files a/assets/images/passphrase_dark.png and /dev/null differ
diff --git a/assets/images/passphrase_key.svg b/assets/images/passphrase_key.svg
deleted file mode 100644
index c577dc30a..000000000
--- a/assets/images/passphrase_key.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
diff --git a/assets/images/passphrase_light.png b/assets/images/passphrase_light.png
deleted file mode 100644
index f86f68156..000000000
Binary files a/assets/images/passphrase_light.png and /dev/null differ
diff --git a/assets/images/payjoin.png b/assets/images/payjoin.png
deleted file mode 100644
index 1ba3dccdb..000000000
Binary files a/assets/images/payjoin.png and /dev/null differ
diff --git a/assets/images/qr-cake.png b/assets/images/qr-cake.png
deleted file mode 100644
index 7c54dedb0..000000000
Binary files a/assets/images/qr-cake.png and /dev/null differ
diff --git a/assets/images/receive.png b/assets/images/receive.png
deleted file mode 100644
index 180a4e5b3..000000000
Binary files a/assets/images/receive.png and /dev/null differ
diff --git a/assets/images/seed_verified_dark.png b/assets/images/seed_verified_dark.png
deleted file mode 100644
index cbefa5d8c..000000000
Binary files a/assets/images/seed_verified_dark.png and /dev/null differ
diff --git a/assets/images/seed_verified_light.png b/assets/images/seed_verified_light.png
deleted file mode 100644
index a51eddcd7..000000000
Binary files a/assets/images/seed_verified_light.png and /dev/null differ
diff --git a/assets/images/seed_warning_dark.svg b/assets/images/seed_warning_dark.svg
deleted file mode 100644
index 0a47254ff..000000000
--- a/assets/images/seed_warning_dark.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/assets/images/seed_warning_light.svg b/assets/images/seed_warning_light.svg
deleted file mode 100644
index cab27ec31..000000000
--- a/assets/images/seed_warning_light.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-
diff --git a/assets/images/send.png b/assets/images/send.png
new file mode 100644
index 000000000..aef504999
Binary files /dev/null and b/assets/images/send.png differ
diff --git a/assets/images/send2.png b/assets/images/send2.png
deleted file mode 100644
index 85fc570a8..000000000
Binary files a/assets/images/send2.png and /dev/null differ
diff --git a/assets/images/swap.png b/assets/images/swap.png
deleted file mode 100644
index fe3fc0893..000000000
Binary files a/assets/images/swap.png and /dev/null differ
diff --git a/assets/images/tor_logo.svg b/assets/images/tor_logo.svg
deleted file mode 100644
index ebd00324d..000000000
--- a/assets/images/tor_logo.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
diff --git a/assets/images/usdtbsc_icon.png b/assets/images/usdtbsc_icon.png
deleted file mode 100644
index 9f2cda237..000000000
Binary files a/assets/images/usdtbsc_icon.png and /dev/null differ
diff --git a/assets/images/wallet_group_bright.png b/assets/images/wallet_group_bright.png
new file mode 100644
index 000000000..263361db6
Binary files /dev/null and b/assets/images/wallet_group_bright.png differ
diff --git a/assets/images/wallet_group_confirmed_dark.png b/assets/images/wallet_group_confirmed_dark.png
deleted file mode 100644
index a047cb29c..000000000
Binary files a/assets/images/wallet_group_confirmed_dark.png and /dev/null differ
diff --git a/assets/images/wallet_group_confirmed_light.png b/assets/images/wallet_group_confirmed_light.png
deleted file mode 100644
index 851d32300..000000000
Binary files a/assets/images/wallet_group_confirmed_light.png and /dev/null differ
diff --git a/assets/images/wallet_group_dark.png b/assets/images/wallet_group_dark.png
new file mode 100644
index 000000000..7cd08d2cd
Binary files /dev/null and b/assets/images/wallet_group_dark.png differ
diff --git a/assets/images/wallet_group_empty_dark.png b/assets/images/wallet_group_empty_dark.png
deleted file mode 100644
index e613d876e..000000000
Binary files a/assets/images/wallet_group_empty_dark.png and /dev/null differ
diff --git a/assets/images/wallet_group_empty_light.png b/assets/images/wallet_group_empty_light.png
deleted file mode 100644
index f795648ae..000000000
Binary files a/assets/images/wallet_group_empty_light.png and /dev/null differ
diff --git a/assets/images/wallet_group_light.png b/assets/images/wallet_group_light.png
new file mode 100644
index 000000000..7827971e7
Binary files /dev/null and b/assets/images/wallet_group_light.png differ
diff --git a/assets/images/wallet_group_options_dark.png b/assets/images/wallet_group_options_dark.png
deleted file mode 100644
index 479aac57c..000000000
Binary files a/assets/images/wallet_group_options_dark.png and /dev/null differ
diff --git a/assets/images/wallet_group_options_light.png b/assets/images/wallet_group_options_light.png
deleted file mode 100644
index 308930520..000000000
Binary files a/assets/images/wallet_group_options_light.png and /dev/null differ
diff --git a/assets/images/wallet_name.png b/assets/images/wallet_name.png
new file mode 100644
index 000000000..f586682bd
Binary files /dev/null and b/assets/images/wallet_name.png differ
diff --git a/assets/images/wallet_name_light.png b/assets/images/wallet_name_light.png
new file mode 100644
index 000000000..0199c1b30
Binary files /dev/null and b/assets/images/wallet_name_light.png differ
diff --git a/assets/images/wallet_type.png b/assets/images/wallet_type.png
new file mode 100644
index 000000000..4e0eba8b5
Binary files /dev/null and b/assets/images/wallet_type.png differ
diff --git a/assets/images/wallet_type_light.png b/assets/images/wallet_type_light.png
new file mode 100644
index 000000000..e36c0d3aa
Binary files /dev/null and b/assets/images/wallet_type_light.png differ
diff --git a/assets/images/wallet_type_wallet_dark.png b/assets/images/wallet_type_wallet_dark.png
deleted file mode 100644
index b840f5547..000000000
Binary files a/assets/images/wallet_type_wallet_dark.png and /dev/null differ
diff --git a/assets/images/wallet_type_wallet_light.png b/assets/images/wallet_type_wallet_light.png
deleted file mode 100644
index ee759a109..000000000
Binary files a/assets/images/wallet_type_wallet_light.png and /dev/null differ
diff --git a/assets/images/wallets.png b/assets/images/wallets.png
deleted file mode 100644
index 62ea20039..000000000
Binary files a/assets/images/wallets.png and /dev/null differ
diff --git a/assets/images/welcome.png b/assets/images/welcome.png
new file mode 100644
index 000000000..f1132d253
Binary files /dev/null and b/assets/images/welcome.png differ
diff --git a/assets/images/welcome_dark_theme.svg b/assets/images/welcome_dark_theme.svg
deleted file mode 100644
index 8f60c931a..000000000
--- a/assets/images/welcome_dark_theme.svg
+++ /dev/null
@@ -1,215 +0,0 @@
-
diff --git a/assets/images/welcome_light.png b/assets/images/welcome_light.png
new file mode 100644
index 000000000..6feff85d1
Binary files /dev/null and b/assets/images/welcome_light.png differ
diff --git a/assets/images/welcome_light_theme.svg b/assets/images/welcome_light_theme.svg
deleted file mode 100644
index 178b2853d..000000000
--- a/assets/images/welcome_light_theme.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/assets/images/welcome_wallet_dark.png b/assets/images/welcome_wallet_dark.png
deleted file mode 100644
index 771a600d3..000000000
Binary files a/assets/images/welcome_wallet_dark.png and /dev/null differ
diff --git a/assets/images/welcome_wallet_light.png b/assets/images/welcome_wallet_light.png
deleted file mode 100644
index 2a738be0b..000000000
Binary files a/assets/images/welcome_wallet_light.png and /dev/null differ
diff --git a/assets/images/wyre-icon.png b/assets/images/wyre-icon.png
new file mode 100644
index 000000000..a2810948e
Binary files /dev/null and b/assets/images/wyre-icon.png differ
diff --git a/assets/images/wyre.png b/assets/images/wyre.png
new file mode 100644
index 000000000..a16bbdc8b
Binary files /dev/null and b/assets/images/wyre.png differ
diff --git a/assets/images/yat_crypto.png b/assets/images/yat_crypto.png
new file mode 100644
index 000000000..fbd5d2483
Binary files /dev/null and b/assets/images/yat_crypto.png differ
diff --git a/assets/nano_node_list.yml b/assets/nano_node_list.yml
index cda931b5e..be550177e 100644
--- a/assets/nano_node_list.yml
+++ b/assets/nano_node_list.yml
@@ -1,9 +1,9 @@
-
uri: nano.nownodes.io
useSSL: true
+ is_default: true
-
uri: rpc.nano.to
- is_default: true
useSSL: true
-
uri: node.nautilus.io
diff --git a/assets/node_list.yml b/assets/node_list.yml
index 917dadfd9..49cc00a94 100644
--- a/assets/node_list.yml
+++ b/assets/node_list.yml
@@ -13,3 +13,9 @@
-
uri: nodes.hashvault.pro:18081
is_default: false
+-
+ uri: node.c3pool.com:18081
+ is_default: false
+-
+ uri: node.community.rino.io:18081
+ is_default: false
diff --git a/assets/text/Monerocom_Release_Notes.txt b/assets/text/Monerocom_Release_Notes.txt
index faf57258a..d1f91139b 100644
--- a/assets/text/Monerocom_Release_Notes.txt
+++ b/assets/text/Monerocom_Release_Notes.txt
@@ -1,4 +1,3 @@
-Add built-in Tor support (experimental)
-Ledger improvements
-UI/UX improvements
+UI/UX enhancements
+Stability improvements
Bug fixes
\ No newline at end of file
diff --git a/assets/text/Release_Notes.txt b/assets/text/Release_Notes.txt
index c49b895e3..0f8118b4e 100644
--- a/assets/text/Release_Notes.txt
+++ b/assets/text/Release_Notes.txt
@@ -1,9 +1 @@
-Add built-in Tor support (experimental)
-Add dEuro investments
-Solana fixes/enhancements
-Polygon fixes/enhancements
-WalletConnect improvements
-Ledger improvements
-Payjoin improvements
-UI/UX improvements
-Bug fixes
\ No newline at end of file
+Update for Zano's Hard fork
\ No newline at end of file
diff --git a/com.cakewallet.CakeWallet.yml b/com.cakewallet.CakeWallet.yml
index 6a19c3dda..83efa1388 100644
--- a/com.cakewallet.CakeWallet.yml
+++ b/com.cakewallet.CakeWallet.yml
@@ -1,6 +1,6 @@
app-id: com.cakewallet.CakeWallet
runtime: org.freedesktop.Platform
-runtime-version: '24.08'
+runtime-version: '22.08'
sdk: org.freedesktop.Sdk
command: cake_wallet
separate-locales: false
@@ -15,6 +15,8 @@ finish-args:
modules:
- name: cake_wallet
buildsystem: simple
+ only-arches:
+ - x86_64
build-commands:
- "cp -R bundle /app/cake_wallet"
- "chmod +x /app/cake_wallet/cake_wallet"
diff --git a/cw_bitcoin/lib/address_from_output.dart b/cw_bitcoin/lib/address_from_output.dart
index 0d985b237..73bc101c4 100644
--- a/cw_bitcoin/lib/address_from_output.dart
+++ b/cw_bitcoin/lib/address_from_output.dart
@@ -2,37 +2,22 @@ import 'package:bitcoin_base/bitcoin_base.dart';
String addressFromOutputScript(Script script, BasedUtxoNetwork network) {
try {
- return addressFromScript(script, network).toAddress(network);
+ switch (script.getAddressType()) {
+ case P2pkhAddressType.p2pkh:
+ return P2pkhAddress.fromScriptPubkey(script: script).toAddress(network);
+ case P2shAddressType.p2pkInP2sh:
+ return P2shAddress.fromScriptPubkey(script: script).toAddress(network);
+ case SegwitAddresType.p2wpkh:
+ return P2wpkhAddress.fromScriptPubkey(script: script).toAddress(network);
+ case P2shAddressType.p2pkhInP2sh:
+ return P2shAddress.fromScriptPubkey(script: script).toAddress(network);
+ case SegwitAddresType.p2wsh:
+ return P2wshAddress.fromScriptPubkey(script: script).toAddress(network);
+ case SegwitAddresType.p2tr:
+ return P2trAddress.fromScriptPubkey(script: script).toAddress(network);
+ default:
+ }
} catch (_) {}
return '';
}
-
-BitcoinBaseAddress addressFromScript(Script script,
- [BasedUtxoNetwork network = BitcoinNetwork.mainnet]) {
- final addressType = script.getAddressType();
- if (addressType == null) {
- throw ArgumentError("Invalid script");
- }
-
- switch (addressType) {
- case P2pkhAddressType.p2pkh:
- return P2pkhAddress.fromScriptPubkey(
- script: script, network: BitcoinNetwork.mainnet);
- case P2shAddressType.p2pkhInP2sh:
- case P2shAddressType.p2pkInP2sh:
- return P2shAddress.fromScriptPubkey(
- script: script, network: BitcoinNetwork.mainnet);
- case SegwitAddresType.p2wpkh:
- return P2wpkhAddress.fromScriptPubkey(
- script: script, network: BitcoinNetwork.mainnet);
- case SegwitAddresType.p2wsh:
- return P2wshAddress.fromScriptPubkey(
- script: script, network: BitcoinNetwork.mainnet);
- case SegwitAddresType.p2tr:
- return P2trAddress.fromScriptPubkey(
- script: script, network: BitcoinNetwork.mainnet);
- }
-
- throw ArgumentError("Invalid script");
-}
diff --git a/cw_bitcoin/lib/bitcoin_address_record.dart b/cw_bitcoin/lib/bitcoin_address_record.dart
index 1509f913a..7e4b5f58f 100644
--- a/cw_bitcoin/lib/bitcoin_address_record.dart
+++ b/cw_bitcoin/lib/bitcoin_address_record.dart
@@ -1,5 +1,4 @@
import 'dart:convert';
-import 'package:mobx/mobx.dart';
import 'package:bitcoin_base/bitcoin_base.dart';
@@ -17,7 +16,7 @@ abstract class BaseBitcoinAddressRecord {
}) : _txCount = txCount,
_balance = balance,
_name = name,
- _isUsed = Observable(isUsed);
+ _isUsed = isUsed;
@override
bool operator ==(Object o) => o is BaseBitcoinAddressRecord && address == o.address;
@@ -28,7 +27,7 @@ abstract class BaseBitcoinAddressRecord {
int _txCount;
int _balance;
String _name;
- final Observable _isUsed;
+ bool _isUsed;
BasedUtxoNetwork? network;
int get txCount => _txCount;
@@ -41,9 +40,9 @@ abstract class BaseBitcoinAddressRecord {
set balance(int value) => _balance = value;
- bool get isUsed => _isUsed.value;
+ bool get isUsed => _isUsed;
- void setAsUsed() => _isUsed.value = true;
+ void setAsUsed() => _isUsed = true;
void setNewName(String label) => _name = label;
int get hashCode => address.hashCode;
diff --git a/cw_bitcoin/lib/bitcoin_transaction_credentials.dart b/cw_bitcoin/lib/bitcoin_transaction_credentials.dart
index 7d6894e14..01e905fb0 100644
--- a/cw_bitcoin/lib/bitcoin_transaction_credentials.dart
+++ b/cw_bitcoin/lib/bitcoin_transaction_credentials.dart
@@ -3,17 +3,11 @@ import 'package:cw_core/output_info.dart';
import 'package:cw_core/unspent_coin_type.dart';
class BitcoinTransactionCredentials {
- BitcoinTransactionCredentials(
- this.outputs, {
- required this.priority,
- this.feeRate,
- this.coinTypeToSpendFrom = UnspentCoinType.any,
- this.payjoinUri,
- });
+ BitcoinTransactionCredentials(this.outputs,
+ {required this.priority, this.feeRate, this.coinTypeToSpendFrom = UnspentCoinType.any});
final List outputs;
final BitcoinTransactionPriority? priority;
final int? feeRate;
final UnspentCoinType coinTypeToSpendFrom;
- final String? payjoinUri;
}
diff --git a/cw_bitcoin/lib/bitcoin_wallet.dart b/cw_bitcoin/lib/bitcoin_wallet.dart
index 9231022f6..7135d0a7a 100644
--- a/cw_bitcoin/lib/bitcoin_wallet.dart
+++ b/cw_bitcoin/lib/bitcoin_wallet.dart
@@ -3,33 +3,22 @@ import 'dart:convert';
import 'package:bip39/bip39.dart' as bip39;
import 'package:bitcoin_base/bitcoin_base.dart';
import 'package:blockchain_utils/blockchain_utils.dart';
-import 'package:cw_bitcoin/address_from_output.dart';
import 'package:cw_bitcoin/bitcoin_address_record.dart';
import 'package:cw_bitcoin/bitcoin_mnemonic.dart';
-import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart';
+import 'package:cw_bitcoin/psbt_transaction_builder.dart';
+import 'package:cw_core/encryption_file_utils.dart';
+import 'package:cw_bitcoin/electrum_derivations.dart';
import 'package:cw_bitcoin/bitcoin_wallet_addresses.dart';
import 'package:cw_bitcoin/electrum_balance.dart';
-import 'package:cw_bitcoin/electrum_derivations.dart';
import 'package:cw_bitcoin/electrum_wallet.dart';
import 'package:cw_bitcoin/electrum_wallet_snapshot.dart';
-import 'package:cw_bitcoin/payjoin/manager.dart';
-import 'package:cw_bitcoin/payjoin/storage.dart';
-import 'package:cw_bitcoin/pending_bitcoin_transaction.dart';
-import 'package:cw_bitcoin/psbt/signer.dart';
-import 'package:cw_bitcoin/psbt/transaction_builder.dart';
-import 'package:cw_bitcoin/psbt/v0_deserialize.dart';
-import 'package:cw_bitcoin/psbt/v0_finalizer.dart';
import 'package:cw_core/crypto_currency.dart';
-import 'package:cw_core/encryption_file_utils.dart';
-import 'package:cw_core/payjoin_session.dart';
-import 'package:cw_core/pending_transaction.dart';
import 'package:cw_core/unspent_coins_info.dart';
import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_keys_file.dart';
import 'package:flutter/foundation.dart';
import 'package:hive/hive.dart';
import 'package:ledger_bitcoin/ledger_bitcoin.dart';
-import 'package:ledger_bitcoin/psbt.dart';
import 'package:ledger_flutter_plus/ledger_flutter_plus.dart';
import 'package:mobx/mobx.dart';
@@ -42,7 +31,6 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
required String password,
required WalletInfo walletInfo,
required Box unspentCoinsInfo,
- required Box payjoinBox,
required EncryptionFileUtils encryptionFileUtils,
Uint8List? seedBytes,
String? mnemonic,
@@ -83,21 +71,20 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
// String derivationPath = walletInfo.derivationInfo!.derivationPath!;
// String sideDerivationPath = derivationPath.substring(0, derivationPath.length - 1) + "1";
// final hd = bitcoin.HDWallet.fromSeed(seedBytes, network: networkType);
-
- payjoinManager = PayjoinManager(PayjoinStorage(payjoinBox), this);
- walletAddresses = BitcoinWalletAddresses(walletInfo,
- initialAddresses: initialAddresses,
- initialRegularAddressIndex: initialRegularAddressIndex,
- initialChangeAddressIndex: initialChangeAddressIndex,
- initialSilentAddresses: initialSilentAddresses,
- initialSilentAddressIndex: initialSilentAddressIndex,
- mainHd: hd,
- sideHd: accountHD.childKey(Bip32KeyIndex(1)),
- network: networkParam ?? network,
- masterHd:
- seedBytes != null ? Bip32Slip10Secp256k1.fromSeed(seedBytes) : null,
- isHardwareWallet: walletInfo.isHardwareWallet,
- payjoinManager: payjoinManager);
+ walletAddresses = BitcoinWalletAddresses(
+ walletInfo,
+ initialAddresses: initialAddresses,
+ initialRegularAddressIndex: initialRegularAddressIndex,
+ initialChangeAddressIndex: initialChangeAddressIndex,
+ initialSilentAddresses: initialSilentAddresses,
+ initialSilentAddressIndex: initialSilentAddressIndex,
+ mainHd: hd,
+ sideHd: accountHD.childKey(Bip32KeyIndex(1)),
+ network: networkParam ?? network,
+ masterHd:
+ seedBytes != null ? Bip32Slip10Secp256k1.fromSeed(seedBytes) : null,
+ isHardwareWallet: walletInfo.isHardwareWallet,
+ );
autorun((_) {
this.walletAddresses.isEnabledAutoGenerateSubaddress =
@@ -113,7 +100,6 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
required String password,
required WalletInfo walletInfo,
required Box unspentCoinsInfo,
- required Box payjoinBox,
required EncryptionFileUtils encryptionFileUtils,
String? passphrase,
String? addressPageType,
@@ -136,11 +122,9 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
break;
case DerivationType.electrum:
default:
- seedBytes =
- await mnemonicToSeedBytes(mnemonic, passphrase: passphrase ?? "");
+ seedBytes = await mnemonicToSeedBytes(mnemonic, passphrase: passphrase ?? "");
break;
}
-
return BitcoinWallet(
mnemonic: mnemonic,
passphrase: passphrase ?? "",
@@ -157,7 +141,6 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
initialChangeAddressIndex: initialChangeAddressIndex,
addressPageType: addressPageType,
networkParam: network,
- payjoinBox: payjoinBox,
);
}
@@ -165,7 +148,6 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
required String name,
required WalletInfo walletInfo,
required Box unspentCoinsInfo,
- required Box payjoinBox,
required String password,
required EncryptionFileUtils encryptionFileUtils,
required bool alwaysScan,
@@ -222,8 +204,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
if (mnemonic != null) {
switch (walletInfo.derivationInfo!.derivationType) {
case DerivationType.electrum:
- seedBytes =
- await mnemonicToSeedBytes(mnemonic, passphrase: passphrase ?? "");
+ seedBytes = await mnemonicToSeedBytes(mnemonic, passphrase: passphrase ?? "");
break;
case DerivationType.bip39:
default:
@@ -236,24 +217,24 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
}
return BitcoinWallet(
- mnemonic: mnemonic,
- xpub: keysData.xPub,
- password: password,
- passphrase: passphrase,
- walletInfo: walletInfo,
- unspentCoinsInfo: unspentCoinsInfo,
- initialAddresses: snp?.addresses,
- initialSilentAddresses: snp?.silentAddresses,
- initialSilentAddressIndex: snp?.silentAddressIndex ?? 0,
- initialBalance: snp?.balance,
- encryptionFileUtils: encryptionFileUtils,
- seedBytes: seedBytes,
- initialRegularAddressIndex: snp?.regularAddressIndex,
- initialChangeAddressIndex: snp?.changeAddressIndex,
- addressPageType: snp?.addressPageType,
- networkParam: network,
- alwaysScan: alwaysScan,
- payjoinBox: payjoinBox);
+ mnemonic: mnemonic,
+ xpub: keysData.xPub,
+ password: password,
+ passphrase: passphrase,
+ walletInfo: walletInfo,
+ unspentCoinsInfo: unspentCoinsInfo,
+ initialAddresses: snp?.addresses,
+ initialSilentAddresses: snp?.silentAddresses,
+ initialSilentAddressIndex: snp?.silentAddressIndex ?? 0,
+ initialBalance: snp?.balance,
+ encryptionFileUtils: encryptionFileUtils,
+ seedBytes: seedBytes,
+ initialRegularAddressIndex: snp?.regularAddressIndex,
+ initialChangeAddressIndex: snp?.changeAddressIndex,
+ addressPageType: snp?.addressPageType,
+ networkParam: network,
+ alwaysScan: alwaysScan,
+ );
}
LedgerConnection? _ledgerConnection;
@@ -267,30 +248,19 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
}
@override
- Future close({bool shouldCleanup = false}) async {
- payjoinManager.cleanupSessions();
- super.close(shouldCleanup: shouldCleanup);
- }
-
- late final PayjoinManager payjoinManager;
-
- bool get isPayjoinAvailable => unspentCoinsInfo.values
- .where((element) =>
- element.walletId == id && element.isSending && !element.isFrozen)
- .isNotEmpty;
-
- Future buildPsbt({
+ Future buildHardwareWalletTransaction({
required List outputs,
required BigInt fee,
required BasedUtxoNetwork network,
required List utxos,
required Map publicKeys,
- required Uint8List masterFingerprint,
String? memo,
bool enableRBF = false,
BitcoinOrdering inputOrdering = BitcoinOrdering.bip69,
BitcoinOrdering outputOrdering = BitcoinOrdering.bip69,
}) async {
+ final masterFingerprint = await _bitcoinLedgerApp!.getMasterFingerprint();
+
final psbtReadyInputs = [];
for (final utxo in utxos) {
final rawTx =
@@ -308,128 +278,13 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
));
}
- return PSBTTransactionBuild(
- inputs: psbtReadyInputs, outputs: outputs, enableRBF: enableRBF)
- .psbt;
- }
+ final psbt = PSBTTransactionBuild(
+ inputs: psbtReadyInputs, outputs: outputs, enableRBF: enableRBF);
- @override
- Future buildHardwareWalletTransaction({
- required List outputs,
- required BigInt fee,
- required BasedUtxoNetwork network,
- required List utxos,
- required Map publicKeys,
- String? memo,
- bool enableRBF = false,
- BitcoinOrdering inputOrdering = BitcoinOrdering.bip69,
- BitcoinOrdering outputOrdering = BitcoinOrdering.bip69,
- }) async {
- final masterFingerprint = await _bitcoinLedgerApp!.getMasterFingerprint();
-
- final psbt = await buildPsbt(
- outputs: outputs,
- fee: fee,
- network: network,
- utxos: utxos,
- publicKeys: publicKeys,
- masterFingerprint: masterFingerprint,
- memo: memo,
- enableRBF: enableRBF,
- inputOrdering: inputOrdering,
- outputOrdering: outputOrdering,
- );
-
- final rawHex = await _bitcoinLedgerApp!.signPsbt(psbt: psbt);
+ final rawHex = await _bitcoinLedgerApp!.signPsbt(psbt: psbt.psbt);
return BtcTransaction.fromRaw(BytesUtils.toHexString(rawHex));
}
- @override
- Future createTransaction(Object credentials) async {
- credentials = credentials as BitcoinTransactionCredentials;
-
- final tx = (await super.createTransaction(credentials))
- as PendingBitcoinTransaction;
-
- final payjoinUri = credentials.payjoinUri;
- if (payjoinUri == null) return tx;
-
- final transaction = await buildPsbt(
- utxos: tx.utxos,
- outputs: tx.outputs
- .map((e) => BitcoinOutput(
- address: addressFromScript(e.scriptPubKey),
- value: e.amount,
- isSilentPayment: e.isSilentPayment,
- isChange: e.isChange,
- ))
- .toList(),
- fee: BigInt.from(tx.fee),
- network: network,
- memo: credentials.outputs.first.memo,
- outputOrdering: BitcoinOrdering.none,
- enableRBF: true,
- publicKeys: tx.publicKeys!,
- masterFingerprint: Uint8List(0));
-
- final originalPsbt = await signPsbt(
- base64.encode(transaction.asPsbtV0()), getUtxoWithPrivateKeys());
-
- tx.commitOverride = () async {
- final sender = await payjoinManager.initSender(
- payjoinUri, originalPsbt, int.parse(tx.feeRate));
- payjoinManager.spawnNewSender(
- sender: sender, pjUrl: payjoinUri, amount: BigInt.from(tx.amount));
- };
-
- return tx;
- }
-
- List getUtxoWithPrivateKeys() => unspentCoins
- .where((e) => (e.isSending && !e.isFrozen))
- .map((unspent) => UtxoWithPrivateKey.fromUnspent(unspent, this))
- .toList();
-
- Future commitPsbt(String finalizedPsbt) {
- final psbt = PsbtV2()..deserializeV0(base64.decode(finalizedPsbt));
-
- final btcTx =
- BtcTransaction.fromRaw(BytesUtils.toHexString(psbt.extract()));
-
- return PendingBitcoinTransaction(
- btcTx,
- type,
- electrumClient: electrumClient,
- amount: 0,
- fee: 0,
- feeRate: "",
- network: network,
- hasChange: true,
- ).commit();
- }
-
- Future signPsbt(
- String preProcessedPsbt, List utxos) async {
- final psbt = PsbtV2()..deserializeV0(base64Decode(preProcessedPsbt));
-
- await psbt.signWithUTXO(utxos, (txDigest, utxo, key, sighash) {
- return utxo.utxo.isP2tr()
- ? key.signTapRoot(
- txDigest,
- sighash: sighash,
- tweak: utxo.utxo.isSilentPayment != true,
- )
- : key.signInput(txDigest, sigHash: sighash);
- }, (txId, vout) async {
- final txHex = await electrumClient.getTransactionHex(hash: txId);
- final output = BtcTransaction.fromRaw(txHex).outputs[vout];
- return TaprootAmountScriptPair(output.amount, output.scriptPubKey);
- });
-
- psbt.finalizeV0();
- return base64Encode(psbt.asPsbtV0());
- }
-
@override
Future signMessage(String message, {String? address = null}) async {
if (walletInfo.isHardwareWallet) {
diff --git a/cw_bitcoin/lib/bitcoin_wallet_addresses.dart b/cw_bitcoin/lib/bitcoin_wallet_addresses.dart
index d84d958be..1a122ef9e 100644
--- a/cw_bitcoin/lib/bitcoin_wallet_addresses.dart
+++ b/cw_bitcoin/lib/bitcoin_wallet_addresses.dart
@@ -1,13 +1,10 @@
import 'package:bitcoin_base/bitcoin_base.dart';
import 'package:blockchain_utils/bip/bip/bip32/bip32.dart';
import 'package:cw_bitcoin/electrum_wallet_addresses.dart';
-import 'package:cw_bitcoin/payjoin/manager.dart';
import 'package:cw_bitcoin/utils.dart';
import 'package:cw_core/unspent_coin_type.dart';
-import 'package:cw_core/utils/print_verbose.dart';
import 'package:cw_core/wallet_info.dart';
import 'package:mobx/mobx.dart';
-import 'package:payjoin_flutter/receive.dart' as payjoin;
part 'bitcoin_wallet_addresses.g.dart';
@@ -20,7 +17,6 @@ abstract class BitcoinWalletAddressesBase extends ElectrumWalletAddresses with S
required super.sideHd,
required super.network,
required super.isHardwareWallet,
- required this.payjoinManager,
super.initialAddresses,
super.initialRegularAddressIndex,
super.initialChangeAddressIndex,
@@ -29,13 +25,6 @@ abstract class BitcoinWalletAddressesBase extends ElectrumWalletAddresses with S
super.masterHd,
}) : super(walletInfo);
- final PayjoinManager payjoinManager;
-
- payjoin.Receiver? currentPayjoinReceiver;
-
- @observable
- String? payjoinEndpoint = null;
-
@override
String getAddress(
{required int index,
@@ -56,33 +45,4 @@ abstract class BitcoinWalletAddressesBase extends ElectrumWalletAddresses with S
return generateP2WPKHAddress(hd: hd, index: index, network: network);
}
-
- @action
- Future initPayjoin() async {
- try {
- await payjoinManager.initPayjoin();
- currentPayjoinReceiver = await payjoinManager.getUnusedReceiver(primaryAddress);
- payjoinEndpoint = (await currentPayjoinReceiver?.pjUri())?.pjEndpoint();
-
- payjoinManager.resumeSessions();
- } catch (e) {
- printV(e);
- // Ignore Connectivity errors
- if (!e.toString().contains("error sending request for url")) rethrow;
- }
- }
-
- @action
- Future newPayjoinReceiver() async {
- try {
- currentPayjoinReceiver = await payjoinManager.getUnusedReceiver(primaryAddress);
- payjoinEndpoint = (await currentPayjoinReceiver?.pjUri())?.pjEndpoint();
-
- payjoinManager.spawnReceiver(receiver: currentPayjoinReceiver!);
- } catch (e) {
- printV(e);
- // Ignore Connectivity errors
- if (!e.toString().contains("error sending request for url")) rethrow;
- }
- }
}
diff --git a/cw_bitcoin/lib/bitcoin_wallet_service.dart b/cw_bitcoin/lib/bitcoin_wallet_service.dart
index 317b25bcd..7ee1534bf 100644
--- a/cw_bitcoin/lib/bitcoin_wallet_service.dart
+++ b/cw_bitcoin/lib/bitcoin_wallet_service.dart
@@ -5,7 +5,6 @@ import 'package:cw_bitcoin/bitcoin_mnemonics_bip39.dart';
import 'package:cw_bitcoin/mnemonic_is_incorrect_exception.dart';
import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart';
import 'package:cw_core/encryption_file_utils.dart';
-import 'package:cw_core/payjoin_session.dart';
import 'package:cw_core/unspent_coins_info.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_service.dart';
@@ -22,12 +21,10 @@ class BitcoinWalletService extends WalletService<
BitcoinRestoreWalletFromSeedCredentials,
BitcoinRestoreWalletFromWIFCredentials,
BitcoinRestoreWalletFromHardware> {
- BitcoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource,
- this.payjoinSessionSource, this.alwaysScan, this.isDirect);
+ BitcoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource, this.alwaysScan, this.isDirect);
final Box walletInfoSource;
final Box unspentCoinsInfoSource;
- final Box payjoinSessionSource;
final bool alwaysScan;
final bool isDirect;
@@ -58,7 +55,6 @@ class BitcoinWalletService extends WalletService<
passphrase: credentials.passphrase,
walletInfo: credentials.walletInfo!,
unspentCoinsInfo: unspentCoinsInfoSource,
- payjoinBox: payjoinSessionSource,
network: network,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
@@ -83,7 +79,6 @@ class BitcoinWalletService extends WalletService<
name: name,
walletInfo: walletInfo,
unspentCoinsInfo: unspentCoinsInfoSource,
- payjoinBox: payjoinSessionSource,
alwaysScan: alwaysScan,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
@@ -97,7 +92,6 @@ class BitcoinWalletService extends WalletService<
name: name,
walletInfo: walletInfo,
unspentCoinsInfo: unspentCoinsInfoSource,
- payjoinBox: payjoinSessionSource,
alwaysScan: alwaysScan,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
@@ -132,7 +126,6 @@ class BitcoinWalletService extends WalletService<
name: currentName,
walletInfo: currentWalletInfo,
unspentCoinsInfo: unspentCoinsInfoSource,
- payjoinBox: payjoinSessionSource,
alwaysScan: alwaysScan,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
@@ -154,6 +147,7 @@ class BitcoinWalletService extends WalletService<
credentials.walletInfo?.network = network.value;
credentials.walletInfo?.derivationInfo?.derivationPath =
credentials.hwAccountData.derivationPath;
+
final wallet = await BitcoinWallet(
password: credentials.password!,
xpub: credentials.hwAccountData.xpub,
@@ -161,7 +155,6 @@ class BitcoinWalletService extends WalletService<
unspentCoinsInfo: unspentCoinsInfoSource,
networkParam: network,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
- payjoinBox: payjoinSessionSource,
);
await wallet.save();
await wallet.init();
@@ -189,7 +182,6 @@ class BitcoinWalletService extends WalletService<
mnemonic: credentials.mnemonic,
walletInfo: credentials.walletInfo!,
unspentCoinsInfo: unspentCoinsInfoSource,
- payjoinBox: payjoinSessionSource,
network: network,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
diff --git a/cw_bitcoin/lib/electrum.dart b/cw_bitcoin/lib/electrum.dart
index 2ddd30df6..1f5c369e3 100644
--- a/cw_bitcoin/lib/electrum.dart
+++ b/cw_bitcoin/lib/electrum.dart
@@ -5,8 +5,6 @@ import 'dart:typed_data';
import 'package:bitcoin_base/bitcoin_base.dart';
import 'package:cw_bitcoin/bitcoin_amount_format.dart';
import 'package:cw_core/utils/print_verbose.dart';
-import 'package:cw_core/utils/proxy_socket/abstract.dart';
-import 'package:cw_core/utils/proxy_wrapper.dart';
import 'package:flutter/foundation.dart';
import 'package:rxdart/rxdart.dart';
@@ -44,7 +42,7 @@ class ElectrumClient {
static const aliveTimerDuration = Duration(seconds: 4);
bool get isConnected => _isConnected;
- ProxySocket? socket;
+ Socket? socket;
void Function(ConnectionStatus)? onConnectionStatusChange;
int _id;
final Map _tasks;
@@ -74,11 +72,18 @@ class ElectrumClient {
} catch (_) {}
socket = null;
- final ssl = !(useSSL == false || (useSSL == null && uri.toString().contains("btc-electrum")));
try {
- socket = await ProxyWrapper().getSocksSocket(ssl, host, port, connectionTimeout: connectionTimeout);
+ if (useSSL == false || (useSSL == null && uri.toString().contains("btc-electrum"))) {
+ socket = await Socket.connect(host, port, timeout: connectionTimeout);
+ } else {
+ socket = await SecureSocket.connect(
+ host,
+ port,
+ timeout: connectionTimeout,
+ onBadCertificate: (_) => true,
+ );
+ }
} catch (e) {
- printV("connect: $e");
if (e is HandshakeException) {
useSSL = !(useSSL ?? false);
}
@@ -100,6 +105,7 @@ class ElectrumClient {
// use ping to determine actual connection status since we could've just not timed out yet:
// _setConnectionStatus(ConnectionStatus.connected);
+
socket!.listen(
(Uint8List event) {
try {
diff --git a/cw_bitcoin/lib/electrum_balance.dart b/cw_bitcoin/lib/electrum_balance.dart
index aeb06f1f0..37c34058b 100644
--- a/cw_bitcoin/lib/electrum_balance.dart
+++ b/cw_bitcoin/lib/electrum_balance.dart
@@ -65,6 +65,6 @@ class ElectrumBalance extends Balance {
'unconfirmed': unconfirmed,
'frozen': frozen,
'secondConfirmed': secondConfirmed,
- 'secondUnconfirmed': secondUnconfirmed,
+ 'secondUnconfirmed': secondUnconfirmed
});
}
diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart
index bb9cea1bc..fd778571f 100644
--- a/cw_bitcoin/lib/electrum_wallet.dart
+++ b/cw_bitcoin/lib/electrum_wallet.dart
@@ -4,9 +4,6 @@ import 'dart:io';
import 'dart:isolate';
import 'package:bitcoin_base/bitcoin_base.dart';
-import 'package:cw_core/utils/proxy_wrapper.dart';
-import 'package:cw_bitcoin/bitcoin_amount_format.dart';
-import 'package:cw_core/format_amount.dart';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:cw_bitcoin/bitcoin_wallet.dart';
import 'package:cw_bitcoin/litecoin_wallet.dart';
@@ -50,6 +47,7 @@ import 'package:mobx/mobx.dart';
import 'package:rxdart/subjects.dart';
import 'package:sp_scanner/sp_scanner.dart';
import 'package:hex/hex.dart';
+import 'package:http/http.dart' as http;
part 'electrum_wallet.g.dart';
@@ -493,9 +491,10 @@ abstract class ElectrumWalletBase
Future updateFeeRates() async {
if (await checkIfMempoolAPIIsEnabled() && type == WalletType.bitcoin) {
try {
- final response = await ProxyWrapper()
- .get(clearnetUri: Uri.parse("https://mempool.cakewallet.com/api/v1/fees/recommended"))
- .timeout(Duration(seconds: 15));
+ final response = await http
+ .get(Uri.parse("https://mempool.cakewallet.com/api/v1/fees/recommended"))
+ .timeout(Duration(seconds: 5));
+
final result = json.decode(response.body) as Map;
final slowFee = (result['economyFee'] as num?)?.toInt() ?? 0;
int mediumFee = (result['hourFee'] as num?)?.toInt() ?? 0;
@@ -1175,18 +1174,19 @@ abstract class ElectrumWalletBase
}
});
- return PendingBitcoinTransaction(transaction, type,
- electrumClient: electrumClient,
- amount: estimatedTx.amount,
- fee: estimatedTx.fee,
- feeRate: feeRateInt.toString(),
- network: network,
- hasChange: estimatedTx.hasChange,
- isSendAll: estimatedTx.isSendAll,
- hasTaprootInputs: hasTaprootInputs,
- utxos: estimatedTx.utxos,
- publicKeys: estimatedTx.publicKeys)
- ..addListener((transaction) async {
+ return PendingBitcoinTransaction(
+ transaction,
+ type,
+ electrumClient: electrumClient,
+ amount: estimatedTx.amount,
+ fee: estimatedTx.fee,
+ feeRate: feeRateInt.toString(),
+ network: network,
+ hasChange: estimatedTx.hasChange,
+ isSendAll: estimatedTx.isSendAll,
+ hasTaprootInputs: hasTaprootInputs,
+ utxos: estimatedTx.utxos,
+ )..addListener((transaction) async {
transactionHistory.addOne(transaction);
if (estimatedTx.spendsSilentPayment) {
transactionHistory.transactions.values.forEach((tx) {
@@ -1877,17 +1877,20 @@ abstract class ElectrumWalletBase
if (height != null && height > 0 && await checkIfMempoolAPIIsEnabled()) {
try {
- final blockHash = await ProxyWrapper()
- .get(clearnetUri: Uri.parse("https://mempool.cakewallet.com/api/v1/block-height/$height"))
- .timeout(Duration(seconds: 15));
+ final blockHash = await http.get(
+ Uri.parse(
+ "https://mempool.cakewallet.com/api/v1/block-height/$height",
+ ),
+ );
if (blockHash.statusCode == 200 &&
blockHash.body.isNotEmpty &&
jsonDecode(blockHash.body) != null) {
- final blockResponse = await ProxyWrapper()
- .get(clearnetUri: Uri.parse("https://mempool.cakewallet.com/api/v1/block/${blockHash}"))
- .timeout(Duration(seconds: 15));
-
+ final blockResponse = await http.get(
+ Uri.parse(
+ "https://mempool.cakewallet.com/api/v1/block/${blockHash.body}",
+ ),
+ );
if (blockResponse.statusCode == 200 &&
blockResponse.body.isNotEmpty &&
jsonDecode(blockResponse.body)['timestamp'] != null) {
@@ -1960,11 +1963,6 @@ abstract class ElectrumWalletBase
}
}
- bool isMine(Script script) {
- final derivedAddress = addressFromOutputScript(script, network);
- return addressesSet.contains(derivedAddress);
- }
-
@override
Future