Merge branch 'main' of https://github.com/cake-tech/cake_wallet into CW-438-add-nano

This commit is contained in:
fosse 2023-08-14 14:59:43 -04:00
commit adc98f34cc
14 changed files with 81 additions and 51 deletions

View file

@ -1,6 +1,6 @@
Privacy Policy Privacy Policy
Last modified: July 21, 2022 Last modified: August 9, 2023
Introduction Introduction
============ ============
@ -13,7 +13,7 @@ Introduction
- On this App. - On this App.
- In email, text, and other electronic messages between you and this App. - In email, text, and other electronic messages between you and this App.
It does not apply to information collected by: It does not apply to information collected by:
- Us offline or through any other means, including on any other App operated by Company or any third party (including our affiliates and subsidiaries)]; or - Us offline or through any other means, including on any other App operated by Company or any third party (including our affiliates and subsidiaries); or
- Any third party (including our affiliates and subsidiaries), including through any application or content (including advertising) that may link to or be accessible from or on the App. - Any third party (including our affiliates and subsidiaries), including through any application or content (including advertising) that may link to or be accessible from or on the App.
Please read this policy carefully to understand our policies and practices regarding your information and how we will treat it. If you do not agree with our policies and practices, you have the choice to not use the App. By accessing or using this App, you agree to this privacy policy. This policy may change from time to time. Your continued use of this App after we make changes is deemed to be acceptance of those changes, so please check the policy periodically for updates. Please read this policy carefully to understand our policies and practices regarding your information and how we will treat it. If you do not agree with our policies and practices, you have the choice to not use the App. By accessing or using this App, you agree to this privacy policy. This policy may change from time to time. Your continued use of this App after we make changes is deemed to be acceptance of those changes, so please check the policy periodically for updates.
@ -25,7 +25,7 @@ Definitions
- "Node" means a server on a supported cryptocurrency network which transmits data to your App for processing and synchronization, and to which your Device transmits transactions which you would like to submit to the supported cryptocurrency networks. This includes full nodes, Electrum servers, and lightning network nodes. - "Node" means a server on a supported cryptocurrency network which transmits data to your App for processing and synchronization, and to which your Device transmits transactions which you would like to submit to the supported cryptocurrency networks. This includes full nodes, Electrum servers, and lightning network nodes.
- "Cake Labs Nodes" refers to the set of cryptocurrency nodes operated and maintained by Cake Labs LLC. - "Cake Labs Nodes" refers to the set of cryptocurrency nodes operated and maintained by Cake Labs LLC.
- "Service" refers to the App. - "Service" refers to the App.
- "Third-party Service" refers to any service integrated into the App. This includes but is not limited to ChangeNOW, Wyre, MoonPay, and BlockBuy. - "Third-party Service" refers to any service integrated into the App. This includes but is not limited to ChangeNOW, Onramper, and MoonPay.
- "Usage Data" refers to data collected automatically about your usage of an App. - "Usage Data" refers to data collected automatically about your usage of an App.
- "You" means the individual, group, corporation, or any other entity accessing or using the Service. - "You" means the individual, group, corporation, or any other entity accessing or using the Service.
@ -40,26 +40,29 @@ Information We Never Receive Nor Collect
Information We May Receive But Do Not Retain Information We May Receive But Do Not Retain
-------------------------------------------- --------------------------------------------
We receive but do NOT store information from and about users of our App, including: We may receive but do NOT store information from and about users of our App, including:
- The device IP address, the block height to which your wallet is synchronized, and any transactions or channels which you use our Node to submit to supported cryptocurrency networks. - The device IP address, the block height to which your wallet is synchronized, and any transactions or channels which you use our Node to submit to supported cryptocurrency networks.
We receive this information: We receive this information:
- Automatically as you use the App. - Automatically as you use the App, unless you turn certain features off in your App privacy settings.
This data is provided by connecting to the Nodes and price API maintained by Cake Labs. You have the right to choose not to provide synchronization data to Cake Labs by choosing a different Node. We provide a list of Nodes in the app that include our own and third party Nodes, or you can use your own Node (which we recommend). This data is provided by connecting to the Nodes and price API maintained by Cake Labs. You have the right to choose not to provide synchronization data to Cake Labs by choosing a different Node. We provide a list of Nodes in the app that include our own and third party Nodes, or you can use your own Node (which we recommend). You have the right to choose not to connect to our Fiat API service by disabling this Fiat API in App privacy settings.
Personal Data sent through the Cake Labs Nodes is limited to your device's IP address, the block height to which your wallet is synchronized, and any transactions or channels which you use our Node to submit to the supported cryptocurrency networks. Personal Data received by Cake Labs in this manner is not stored for any length of time, and thus Cake Labs is both unwilling to and incapable of sharing this data, or using it for any purpose beyond ensuring your appropriate connection to our Nodes. Personal Data that may be sent through the Cake Labs Nodes is limited to your device's IP address, the block height to which your wallet is synchronized, and any transactions or channels which you use our Node to submit to the supported cryptocurrency networks. Personal Data received by Cake Labs in this manner is not stored for any length of time, and thus Cake Labs is incapable of sharing this data and will not use it for any purpose beyond ensuring your appropriate connection to our Nodes.
If you decide to use a Node offered by any third party, some of which we include in our Apps, said third party will receive this Personal Data instead of Cake Labs. We take no responsibility for the actions of any third-party Node offered within the Application. We recommend connecting to your own Node to limit third party sharing of your Personal Information. If you decide to use a Node offered by any third party, some of which we include in our Apps, said third party will receive this Personal Data instead of Cake Labs. We take no responsibility for the actions of any third-party Node offered within the Application. We recommend connecting to your own Node to limit third party sharing of your Personal Information.
If you use our Fiat API service, you will share your IP address and the cryptocurrency and fiat currency exchange pair for which your wallet requests a spot price quote. You can disable this Fiat API in App privacy settings.
Information We May Collect About You and How We Collect It Information We May Collect About You and How We Collect It
---------------------------------------------------------- ----------------------------------------------------------
We collect several types of information from and about users of our App, including information: We collect several types of information from and about users of our App, including information:
- By which you may be personally identified, such as name, e-mail address, or and a/any other identifier by which you may be contacted online or offline ("personal information" or "Personal Data”), ONLY when you provide it to us; - By which you may be personally identified, such as name, e-mail address, or and a/any other identifier by which you may be contacted online or offline ("personal information" or "Personal Data”);
- Device data and error log data;
We collect this information: We collect this information:
- Directly from you when you provide it to us. - Directly from you ONLY when you provide it to us.
Personal information is received by Cake Labs ONLY in the event that you choose to provide it to us by voluntarily contacting Cake Labs regarding support, questions or suggestions. Personal information is received by Cake Labs ONLY in the event that you choose to provide it to us by voluntarily contacting Cake Labs regarding support, questions or suggestions. You may optionally send us Error reports to help us improve the App. These Error reports contain error logs and basic device data. You can review and make modifications to these Error reports before sending them to us, or you may choose not to send them to us at all.
How We Use Your Information How We Use Your Information
--------------------------- ---------------------------
@ -112,7 +115,9 @@ Data Security
Links to Other Websites Links to Other Websites
----------------------- -----------------------
The App may contain links to other websites that are not operated by us. If you click on a third-party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third-party sites or services. The App may contain links to other websites that are not operated by us. If you click on a Third-Party Service link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third-party sites or services.
The App includes several optional Third-Party Services, which may not be available to all users. If you use Third-Party Services, you must agree to their respective Privacy Policies.
Changes to Our Privacy Policy Changes to Our Privacy Policy
----------------------------- -----------------------------

View file

@ -1,4 +1,4 @@
# Cake Wallet for Android and iOS # Cake Wallet for Mobile and Desktop
## Open Source Multi-Currency Wallet ## Open Source Multi-Currency Wallet
@ -7,6 +7,7 @@
* Website: https://cakewallet.com * Website: https://cakewallet.com
* App Store (iOS / MacOS): https://cakewallet.com/ios * App Store (iOS / MacOS): https://cakewallet.com/ios
* Google Play: https://cakewallet.com/gp * Google Play: https://cakewallet.com/gp
* F-Droid: https://fdroid.cakelabs.com
* APK: https://github.com/cake-tech/cake_wallet/releases * APK: https://github.com/cake-tech/cake_wallet/releases
* Linux: https://github.com/cake-tech/cake_wallet/releases * Linux: https://github.com/cake-tech/cake_wallet/releases
@ -17,9 +18,8 @@
* Completely noncustodial. *Your keys, your coins.* * Completely noncustodial. *Your keys, your coins.*
* Built-in exchange for dozens of pairs * Built-in exchange for dozens of pairs
* Easily pay cryptocurrency invoices with fixed rate exchanges * Easily pay cryptocurrency invoices with fixed rate exchanges
* Buy cryptocurrency (BTC/LTC/XMR) with credit/debit/bank * Buy cryptocurrency (BTC/LTC/XMR/ETH) with credit/debit/bank
* Sell cryptocurrency by bank transfer * Sell cryptocurrency by bank transfer
* Purchase gift cards at a discount using only an email with [Cake Pay](https://cakepay.com), available in-app
* Scan QR codes for easy cryptocurrency transfers * Scan QR codes for easy cryptocurrency transfers
* Create several wallets * Create several wallets
* Select your own custom nodes/servers * Select your own custom nodes/servers
@ -32,6 +32,7 @@
* Convenient exchange and sending templates for recurring payments * Convenient exchange and sending templates for recurring payments
* Create donation links and invoices in the receive screen * Create donation links and invoices in the receive screen
* Robust privacy settings (eg: Tor-only connections) * Robust privacy settings (eg: Tor-only connections)
* Robust security settings (eg: Cake 2FA)
### Monero Specific Features ### Monero Specific Features
@ -40,13 +41,19 @@
* Specify restore height for faster syncing * Specify restore height for faster syncing
* Specify multiple recipients for batch sending * Specify multiple recipients for batch sending
* Optionally set Monero nodes as trusted for faster syncing * Optionally set Monero nodes as trusted for faster syncing
* Specify a proxy for Monero nodes, compatible with Tor and i2p
### Bitcoin Specific Features ### Bitcoin Specific Features
* Bitcoin coin control (specify specific outputs to spend) * Bitcoin coin control (specify specific outputs to spend)
* Automatically generate new addresses * Automatically generate new addresses
* Specify multiple recipients for batch sending * Specify multiple recipients for batch sending
* Sell BTC for USD
### Ethereum Specific Features
* Store ETH and all ERc-20 tokens
* Add custom tokens by contract address
* Enable or disable Etherscan for transaction history
### Litecoin Specific Features ### Litecoin Specific Features
@ -69,6 +76,7 @@
* Website: https://monero.com * Website: https://monero.com
* App Store (iOS): https://apps.apple.com/app/id1601990386 * App Store (iOS): https://apps.apple.com/app/id1601990386
* Google Play: https://play.google.com/store/apps/details?id=com.monero.app * Google Play: https://play.google.com/store/apps/details?id=com.monero.app
* F-Droid: https://fdroid.cakelabs.com
* APK: https://github.com/cake-tech/cake_wallet/releases * APK: https://github.com/cake-tech/cake_wallet/releases
# Support # Support
@ -123,7 +131,7 @@ Edit the applicable `strings_XX.arb` file in `res/values/` and open a pull reque
2. Edit the strings in this file, replacing XXX below with the translation for each string. 2. Edit the strings in this file, replacing XXX below with the translation for each string.
`"welcome" : "Welcome to",` -> `"welcome" : "XXX",` `"welcome": "Welcome to",` -> `"welcome": "XXX",`
3. For strings where there is a variable, denoted by a $ symbol and braces, such as ${status}, the string in braces should not be translated. For example, when editing line 106: 3. For strings where there is a variable, denoted by a $ symbol and braces, such as ${status}, the string in braces should not be translated. For example, when editing line 106:

View file

@ -1,8 +1,2 @@
Monero background syncing! See https://guides.cakewallet.com/docs/monero/#background-syncing Bug fixes
Cake 2FA access control settings! See https://guides.cakewallet.com/docs/advanced-features/authentication/#cake-2fa-presets-and-access-control-settings Fiat Onramp improvements
Support Monero node proxy
UI improvements when sending to Address Book entry
Allow renaming Monero account names
Send templates now support multiple recipients (try using to make Monero change)
Onramper improvements
Scan node QR codes (for Umbrel)

View file

@ -1,9 +1,2 @@
Ethereum! Store ETH and ERC-20 tokens Bug fixes
Monero background syncing! See https://guides.cakewallet.com/docs/monero/#background-syncing Fiat Onramp improvements
Cake 2FA access control settings! See https://guides.cakewallet.com/docs/advanced-features/authentication/#cake-2fa-presets-and-access-control-settings
Support Monero node proxy
UI improvements when sending to Address Book entry
Allow renaming Monero/Haven account names
Send templates now support multiple recipients (try using to make Monero change)
Onramper improvements
Scan node QR codes (for Umbrel)

View file

@ -283,6 +283,13 @@ class DefaultErc20Tokens {
decimal: 18, decimal: 18,
enabled: false, enabled: false,
), ),
Erc20Token(
name: "PayPal USD",
symbol: "PYUSD",
contractAddress: "0x6c3ea9036406852006290770bedfcaba0e23a0e8",
decimal: 6,
enabled: false,
),
]; ];
List<Erc20Token> get initialErc20Tokens => _defaultTokens.map((token) { List<Erc20Token> get initialErc20Tokens => _defaultTokens.map((token) {

View file

@ -180,8 +180,15 @@ abstract class EthereumWalletBase
} }
} else { } else {
final output = outputs.first; final output = outputs.first;
final BigInt allAmount = // since the fees are taken from Ethereum
_erc20Balance.balance - BigInt.from(calculateEstimatedFee(_credentials.priority!, null)); // then no need to subtract the fees from the amount if send all
final BigInt allAmount;
if (transactionCurrency is Erc20Token) {
allAmount = _erc20Balance.balance;
} else {
allAmount = _erc20Balance.balance -
BigInt.from(calculateEstimatedFee(_credentials.priority!, null));
}
final totalOriginalAmount = final totalOriginalAmount =
EthereumFormatter.parseEthereumAmountToDouble(output.formattedCryptoAmount ?? 0); EthereumFormatter.parseEthereumAmountToDouble(output.formattedCryptoAmount ?? 0);
totalAmount = output.sendAll totalAmount = output.sendAll
@ -195,7 +202,9 @@ abstract class EthereumWalletBase
final pendingEthereumTransaction = await _client.signTransaction( final pendingEthereumTransaction = await _client.signTransaction(
privateKey: _privateKey, privateKey: _privateKey,
toAddress: _credentials.outputs.first.address, toAddress: _credentials.outputs.first.isParsedAddress
? _credentials.outputs.first.extractedAddress!
: _credentials.outputs.first.address,
amount: totalAmount.toString(), amount: totalAmount.toString(),
gas: _estimatedGas!, gas: _estimatedGas!,
priority: _credentials.priority!, priority: _credentials.priority!,

View file

@ -20,13 +20,19 @@ class PendingEthereumTransaction with PendingTransaction {
}); });
@override @override
String get amountFormatted => (BigInt.parse(amount) / BigInt.from(pow(10, exponent))).toString(); String get amountFormatted {
final _amount = BigInt.parse(amount) / BigInt.from(pow(10, exponent));
return _amount.toStringAsFixed(min(15, _amount.toString().length));
}
@override @override
Future<void> commit() async => await sendTransaction(); Future<void> commit() async => await sendTransaction();
@override @override
String get feeFormatted => (fee / BigInt.from(pow(10, 18))).toString(); String get feeFormatted {
final _fee = fee / BigInt.from(pow(10, 18));
return _fee.toStringAsFixed(min(15, _fee.toString().length));
}
@override @override
String get hex => bytesToHex(signedTransaction, include0x: true); String get hex => bytesToHex(signedTransaction, include0x: true);

View file

@ -19,14 +19,19 @@ class AddressResolver {
'crypto', 'crypto',
'zil', 'zil',
'x', 'x',
'coin',
'wallet', 'wallet',
'bitcoin', 'bitcoin',
'888', '888',
'nft', 'nft',
'dao', 'dao',
'blockchain', 'blockchain',
'polygon' 'polygon',
'klever',
'hi',
'kresus',
'anime',
'manga',
'binanceus'
]; ];
static String? extractAddressByType({required String raw, required CryptoCurrency type}) { static String? extractAddressByType({required String raw, required CryptoCurrency type}) {

View file

@ -144,7 +144,10 @@ class ExceptionHandler {
"Connection closed before full header was received", "Connection closed before full header was received",
"Connection terminated during handshake", "Connection terminated during handshake",
"PERMISSION_NOT_GRANTED", "PERMISSION_NOT_GRANTED",
"Failed host lookup: ", "Failed host lookup:",
"CERTIFICATE_VERIFY_FAILED",
"Handshake error in client",
"Error while launching http",
]; ];
static Future<void> _addDeviceInfo(File file) async { static Future<void> _addDeviceInfo(File file) async {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

View file

@ -14,14 +14,14 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_ANDROID_TYPE=$1 APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.5.0" MONERO_COM_VERSION="1.5.1"
MONERO_COM_BUILD_NUMBER=54 MONERO_COM_BUILD_NUMBER=55
MONERO_COM_BUNDLE_ID="com.monero.app" MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app" MONERO_COM_PACKAGE="com.monero.app"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.8.0" CAKEWALLET_VERSION="4.8.1"
CAKEWALLET_BUILD_NUMBER=167 CAKEWALLET_BUILD_NUMBER=168
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"

View file

@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
APP_IOS_TYPE=$1 APP_IOS_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.5.0" MONERO_COM_VERSION="1.5.1"
MONERO_COM_BUILD_NUMBER=52 MONERO_COM_BUILD_NUMBER=53
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.8.0" CAKEWALLET_VERSION="4.8.1"
CAKEWALLET_BUILD_NUMBER=175 CAKEWALLET_BUILD_NUMBER=176
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
HAVEN_NAME="Haven" HAVEN_NAME="Haven"

View file

@ -15,8 +15,8 @@ if [ -n "$1" ]; then
fi fi
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.1.0" CAKEWALLET_VERSION="1.1.1"
CAKEWALLET_BUILD_NUMBER=28 CAKEWALLET_BUILD_NUMBER=30
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then