Ywallet zcash (#2810)

* feat(zcash): initial commit
- initial work on cw_zcash
  - use single .db for everything zcash to speed up sync and scanning
  - implement silent autoshielding of non-orchard funds
  - use FFI for everything to fetch the data
  - add support for passphrase by adding extra word to seed phrase
  - enforce lints on CI for cw_zcash directory
- use correct zcash name, and call transparent zcash tZEC
- minor cleanups outsite of cw_zcash
  - gitmodules, gitignore
  - db debug
  - fix broken addressPageType in WalletInfo
  - enable debug options in kDebugMode and kProfileMode

* feat: T address rotation (and cache) wip: minor fixes

* wip: shield tx list

* fix fiat amounts fix derrivation of rotation account addresses screen
for zcash block height fix T address shields improvements Amount in
disposable T shields UI improvements
show pending outgoing tx in tx history

* fix null check on passphrase page fix tx showing as pending rename auto
shield txs fixed send all to include fee use rotating address in
addressForExchange wrap all calls of WarpApi.getLatestHeight in try
catch to prevent leaking errors

other minor fixes from notion

* wallet group debug cache sent tx address wallet T address rotation fixes
automatically pick the fee for auto-shield

* fix T address cache deserialization fix autoshield icon fix autoshield
text getCachedDestinationAddress fix send address cache

* address comments from review

* wip: iOS fix

* fix swap

* Allow cakepay payment from zcash wallet

* fix: ios (I'm stupid) fix: reorder addresses to make orchard default
fix: send all balance

* 5.6.6 bump fix: ios apple review add transport error to ignored
exceptions

* fix: leaving dust behind when sweeping all

* Change wallets order

* fix: reflect balance of pending out txs fix: restore height support

* linux support (disabled)

* fix: date picker for zcash on restore screen fix: build script for linux
match WarpApi.warpSync args with upstream

* fix: linter script

* ensure all exchange providers support ZEC (#2802)

* ensure all exchange providers support ZEC

* remove zaddr and tzec currencies and refactor providers

* Update lib/exchange/provider/near_Intents_exchange_provider.dart

* add back old zcash currencies for backward compatibility, thanks Czarek

* minor fix [skip ci]

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* Update android/app/src/main/AndroidManifestBase.xml [skip ci]

* Update ios/Runner/InfoBase.plist [skip ci]

* fix: remove unused code fix: macos fix: disable on linux and macos

* update build numbers [skip ci]

* Add zcash to birdpay

---------

Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: Serhii <borodenko.sv@gmail.com>
This commit is contained in:
Omar Hatem
2026-01-16 03:16:41 +01:00
committed by GitHub
co-authored by Czarek Nakamoto Serhii
parent 2a77d359f1
commit ef9b0fbae6
141 changed files with 5664 additions and 284 deletions
+2 -2
View File
@@ -21,8 +21,8 @@ MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="5.6.5"
CAKEWALLET_BUILD_NUMBER=4296
CAKEWALLET_VERSION="5.7.0"
CAKEWALLET_BUILD_NUMBER=4298
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet"
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -x -e
cd "$(dirname "$0")"
../prepare_zcash.sh
pushd ../zcash_lib
./build-scripts/build-android.sh
popd
+1 -1
View File
@@ -10,7 +10,7 @@ case $APP_ANDROID_TYPE in
CONFIG_ARGS="--monero"
;;
$CAKEWALLET)
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --dogecoin --base --arbitrum"
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --dogecoin --base --zcash --arbitrum"
;;
esac
+10 -2
View File
@@ -1,9 +1,17 @@
#!/bin/bash
set -x -e
if [[ ! -d "bitbox_flutter" ]];
then
git clone https://github.com/konstantinullrich/bitbox_flutter
fi
git clone https://github.com/konstantinullrich/bitbox_flutter
cd bitbox_flutter
git fetch -a
git reset --hard
git checkout 5a6e6dd388ef64003f86094af80d5453518b601d
git reset --hard
bash ./build_bindings.sh --dont-install
FILE=api.aar
+1 -1
View File
@@ -31,7 +31,7 @@ case $APP_IOS_TYPE in
;;
$CAKEWALLET)
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --dogecoin --base --arbitrum"
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --zano --decred --dogecoin --base --zcash --arbitrum"
;;
esac
+2 -2
View File
@@ -17,8 +17,8 @@ MONERO_COM_BUILD_NUMBER=153
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="5.6.5"
CAKEWALLET_BUILD_NUMBER=360
CAKEWALLET_VERSION="5.7.0"
CAKEWALLET_BUILD_NUMBER=363
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -x -e
cd "$(dirname "$0")"
../prepare_zcash.sh
pushd ../zcash_lib
./build-scripts/mac/build-mac.sh
popd
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
set -x -e
cd $(dirname $0)
cd ..
for i in cw_zcash;
do
dart fix --apply $i/
dart format --line-length=100 $i/
if [[ ! "x$ABORT_ON_CHANGE" == "x" ]];
then
if [[ ! -z "$(git status --porcelain -- $(find $i))" ]];
then
echo "Please run scripts/lint.sh ($i has changes)"
exit 1
fi
fi
done
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -x -e
cd "$(dirname "$0")"
../prepare_zcash.sh
pushd ../zcash_lib
./build-scripts/build-linux.sh
popd
+1 -1
View File
@@ -36,7 +36,7 @@ case $APP_MACOS_TYPE in
$MONERO_COM)
CONFIG_ARGS="--monero";;
$CAKEWALLET)
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --dogecoin --base --arbitrum";;
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --dogecoin --base --zcash --arbitrum";;
esac
cp -rf pubspec_description.yaml pubspec.yaml
+4 -4
View File
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
fi
MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="5.6.5"
MONERO_COM_BUILD_NUMBER=73
MONERO_COM_VERSION="5.6.6"
MONERO_COM_BUILD_NUMBER=74
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="5.6.5"
CAKEWALLET_BUILD_NUMBER=140
CAKEWALLET_VERSION="5.7.0"
CAKEWALLET_BUILD_NUMBER=142
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -x -e
cd "$(dirname "$0")"
../prepare_zcash.sh
pushd ../zcash_lib
./build-scripts/mac/build-mac.sh
popd
+1 -1
View File
@@ -7,7 +7,7 @@ cd "$(dirname "$0")"
# - .github/workflows/pr_test_build_linux.yml
# https://github.com/MrCyjaneK/torch_dart/releases/download/v1.0.17/torch_dart-v1.0.17.tar.gz
HASH=85130c85ad80f4596896f5fa4dc1a160cf0f0487
HASH=d52b9ebcc2e3677520e51bd8a54d771c353587b8
if [[ ! -d "torch_dart/.git" ]];
then
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
set -x -e
cd "$(dirname "$0")"
HASH=647231e2e6d93c1d6c16d4019cd3a11a3aaa9504
if [[ ! -d "zcash_lib/.git" ]];
then
rm -rf zcash_lib
git clone https://github.com/MrCyjaneK/zwallet.git zcash_lib
cd zcash_lib
else
cd zcash_lib
git fetch -a
fi
git reset --hard
git checkout $HASH
git reset --hard
git submodule update --init --force --recursive
# in go I could nicely replace => the heck out of it
# sadly rust is not go
find . -name Cargo.toml -exec sed -i.bak -E '
s|rusqlite[[:space:]]*=[[:space:]]*\{[^}]*\}|rusqlite = { version = "0.29.0", features = ["bundled", "modern_sqlite", "backup"] }|g
' {} +
# find . -name Cargo.toml -exec sed -i.bak -E 's|r2d2_sqlite[[:space:]]*=[[:space:]]*([^\n]*)|r2d2_sqlite = "0.32.0"|g' {} +