diff --git a/.github/workflows/pr_test_build_linux.yml b/.github/workflows/pr_test_build_linux.yml
index fb5232f19..0dc126afb 100644
--- a/.github/workflows/pr_test_build_linux.yml
+++ b/.github/workflows/pr_test_build_linux.yml
@@ -270,6 +270,7 @@ jobs:
echo "const polygonScanApiKey = '${{ secrets.POLYGON_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
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 alchemyApiKey = '${{ secrets.ALCHEMY_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const blinkApiKey = '${{ secrets.BLINK_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const ankrApiKey = '${{ secrets.ANKR_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
diff --git a/.github/workflows/reusable-build.yml b/.github/workflows/reusable-build.yml
index 846264dcc..b56b538c4 100644
--- a/.github/workflows/reusable-build.yml
+++ b/.github/workflows/reusable-build.yml
@@ -315,6 +315,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 blinkApiKey = '${{ secrets.BLINK_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
+ echo "const alchemyApiKey = '${{ secrets.ALCHEMY_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const ankrApiKey = '${{ secrets.ANKR_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
echo "const chainStackApiKey = '${{ secrets.CHAIN_STACK_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
diff --git a/.github/workflows/reusable-integration-test.yml b/.github/workflows/reusable-integration-test.yml
index e5a91aeb9..9c4c24603 100644
--- a/.github/workflows/reusable-integration-test.yml
+++ b/.github/workflows/reusable-integration-test.yml
@@ -157,6 +157,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 nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
+ echo "const alchemyApiKey = '${{ secrets.ALCHEMY_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const blinkApiKey = '${{ secrets.BLINK_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const ankrApiKey = '${{ secrets.ANKR_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
echo "const chainStackApiKey = '${{ secrets.CHAIN_STACK_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
diff --git a/android/app/src/main/AndroidManifestBase.xml b/android/app/src/main/AndroidManifestBase.xml
index a1d72a66d..11a4822e0 100644
--- a/android/app/src/main/AndroidManifestBase.xml
+++ b/android/app/src/main/AndroidManifestBase.xml
@@ -117,6 +117,9 @@
+
+
+
diff --git a/assets/images/robinhood_chain_mono.svg b/assets/images/robinhood_chain_mono.svg
new file mode 100644
index 000000000..7f56d1bda
--- /dev/null
+++ b/assets/images/robinhood_chain_mono.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/stocks/amd.png b/assets/images/stocks/amd.png
new file mode 100644
index 000000000..d46e2abbe
Binary files /dev/null and b/assets/images/stocks/amd.png differ
diff --git a/assets/images/stocks/asml.png b/assets/images/stocks/asml.png
new file mode 100644
index 000000000..654ec8288
Binary files /dev/null and b/assets/images/stocks/asml.png differ
diff --git a/assets/images/stocks/baba.png b/assets/images/stocks/baba.png
new file mode 100644
index 000000000..33830abaa
Binary files /dev/null and b/assets/images/stocks/baba.png differ
diff --git a/assets/images/stocks/cost.png b/assets/images/stocks/cost.png
new file mode 100644
index 000000000..412f340ab
Binary files /dev/null and b/assets/images/stocks/cost.png differ
diff --git a/assets/images/stocks/ddog.png b/assets/images/stocks/ddog.png
new file mode 100644
index 000000000..12751fb03
Binary files /dev/null and b/assets/images/stocks/ddog.png differ
diff --git a/assets/images/stocks/dell.png b/assets/images/stocks/dell.png
new file mode 100644
index 000000000..19572f468
Binary files /dev/null and b/assets/images/stocks/dell.png differ
diff --git a/assets/images/stocks/f.png b/assets/images/stocks/f.png
new file mode 100644
index 000000000..e928f6a66
Binary files /dev/null and b/assets/images/stocks/f.png differ
diff --git a/assets/images/stocks/intu.png b/assets/images/stocks/intu.png
new file mode 100644
index 000000000..9c5d3a524
Binary files /dev/null and b/assets/images/stocks/intu.png differ
diff --git a/assets/images/stocks/lulu.png b/assets/images/stocks/lulu.png
new file mode 100644
index 000000000..22195d62b
Binary files /dev/null and b/assets/images/stocks/lulu.png differ
diff --git a/assets/images/stocks/mu.png b/assets/images/stocks/mu.png
new file mode 100644
index 000000000..012df2660
Binary files /dev/null and b/assets/images/stocks/mu.png differ
diff --git a/assets/images/stocks/nu.png b/assets/images/stocks/nu.png
new file mode 100644
index 000000000..7cbc3d496
Binary files /dev/null and b/assets/images/stocks/nu.png differ
diff --git a/assets/images/stocks/qcom.png b/assets/images/stocks/qcom.png
new file mode 100644
index 000000000..41fbe6340
Binary files /dev/null and b/assets/images/stocks/qcom.png differ
diff --git a/assets/images/stocks/rivn.png b/assets/images/stocks/rivn.png
new file mode 100644
index 000000000..f692f9cf6
Binary files /dev/null and b/assets/images/stocks/rivn.png differ
diff --git a/assets/images/stocks/shop.png b/assets/images/stocks/shop.png
new file mode 100644
index 000000000..a1d3d81b7
Binary files /dev/null and b/assets/images/stocks/shop.png differ
diff --git a/assets/images/stocks/sofi.png b/assets/images/stocks/sofi.png
new file mode 100644
index 000000000..80894a1ff
Binary files /dev/null and b/assets/images/stocks/sofi.png differ
diff --git a/assets/images/stocks/tsm.png b/assets/images/stocks/tsm.png
new file mode 100644
index 000000000..ca531cf80
Binary files /dev/null and b/assets/images/stocks/tsm.png differ
diff --git a/assets/images/stocks/ttwo.png b/assets/images/stocks/ttwo.png
new file mode 100644
index 000000000..9683ab1bb
Binary files /dev/null and b/assets/images/stocks/ttwo.png differ
diff --git a/assets/images/stocks/ups.png b/assets/images/stocks/ups.png
new file mode 100644
index 000000000..188668f22
Binary files /dev/null and b/assets/images/stocks/ups.png differ
diff --git a/assets/images/stocks/wday.png b/assets/images/stocks/wday.png
new file mode 100644
index 000000000..64eaf939c
Binary files /dev/null and b/assets/images/stocks/wday.png differ
diff --git a/assets/images/usdg_icon.png b/assets/images/usdg_icon.png
new file mode 100644
index 000000000..ef6d8b8d6
Binary files /dev/null and b/assets/images/usdg_icon.png differ
diff --git a/assets/robinhood_node_list.yml b/assets/robinhood_node_list.yml
new file mode 100644
index 000000000..5fcdcda72
--- /dev/null
+++ b/assets/robinhood_node_list.yml
@@ -0,0 +1,23 @@
+-
+ uri: robinhood-rpc.publicnode.com
+ isDefault: true
+ useSSL: true
+ isEnabledForAutoSwitching: true
+ label: "PublicNode"
+-
+ uri: robinhood.nownodes.io
+ useSSL: true
+ isEnabledForAutoSwitching: true
+ label: "NOWNodes"
+-
+ uri: rpc.mainnet.chain.robinhood.com
+ useSSL: true
+ isEnabledForAutoSwitching: true
+ label: "Robinhood"
+-
+ uri: robinhood-mainnet.g.alchemy.com
+ path: /v2
+ useSSL: true
+ isDefault: false
+ isEnabledForAutoSwitching: true
+ label: "Alchemy"
diff --git a/cakewallet.bat b/cakewallet.bat
index 5bb41128c..5c64fbd6b 100644
--- a/cakewallet.bat
+++ b/cakewallet.bat
@@ -1,5 +1,5 @@
@echo off
-set cw_win_app_config=--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --dogecoin --base --arbitrum --bsc
+set cw_win_app_config=--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --dogecoin --base --arbitrum --bsc --robinhood
set cw_root=%cd%
set cw_archive_name=Cake Wallet.zip
set cw_archive_path=%cw_root%\%cw_archive_name%
diff --git a/cw_core/lib/card_design.dart b/cw_core/lib/card_design.dart
index a8e33fd8f..408966ab1 100644
--- a/cw_core/lib/card_design.dart
+++ b/cw_core/lib/card_design.dart
@@ -168,6 +168,8 @@ class CardDesign {
static const bnb = CardDesign(imagePath: "assets/new-ui/balance_card_icons/bnb.svg");
+ static const robinhood = CardDesign(imagePath: "assets/new-ui/balance_card_icons/robinhood.svg");
+
static const ethSpecial = CardDesign(
gradient: const LinearGradient(
colors: [Color(0xFF6259FF), Color(0xFF3B20E6)],
@@ -323,6 +325,15 @@ class CardDesign {
backgroundType: CardDesignBackgroundTypes.svgFull,
imagePath: "assets/new-ui/balance_card_backgrounds/bnb.svg");
+ static const robinhoodSpecial = CardDesign(
+ gradient: const LinearGradient(
+ colors: [Color(0xFF5AA438), Color(0xFF2E6B1E)],
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter),
+ colors: CardColorCombination.light,
+ backgroundType: CardDesignBackgroundTypes.svgFull,
+ imagePath: "assets/new-ui/balance_card_backgrounds/robinhood.svg");
+
CardDesign withGradient(Gradient gradient) => CardDesign(
gradient: gradient,
colors: preferredColorCombinations[gradient] ?? colors,
@@ -357,6 +368,7 @@ class CardDesign {
CryptoCurrency.arbEth: _CurrencyIconNames(ticker: 'arb', longName: 'arbitrum'),
CryptoCurrency.baseEth:
_CurrencyIconNames(ticker: 'base', longName: 'base', chainFile: 'base_icon'),
+ CryptoCurrency.robEth: _CurrencyIconNames(ticker: "rob", longName: "robinhood"),
CryptoCurrency.bch:
_CurrencyIconNames(ticker: 'bch', longName: 'bitcoin_cash', chainFile: 'bitcoin-cash'),
CryptoCurrency.btc: _CurrencyIconNames(ticker: 'btc', longName: 'bitcoin', outlineFile: 'BTC'),
@@ -409,6 +421,7 @@ class CardDesign {
arbitrum,
zec,
bnb,
+ robinhood,
ethSpecial,
btcSpecial,
xmrSpecial,
@@ -423,7 +436,8 @@ class CardDesign {
zanoSpecial,
arbitrumSpecial,
zecSpecial,
- bnbSpecial
+ bnbSpecial,
+ robinhoodSpecial,
];
static CardDesign forCurrencySpecial(CryptoCurrency currency) {
@@ -453,6 +467,7 @@ class CardDesign {
CryptoCurrency.zec: zec,
CryptoCurrency.dcr: dcr,
CryptoCurrency.bnb: bnb,
+ CryptoCurrency.robEth: robinhood,
};
static const Map specialDesignsForCurrencies = {
@@ -474,6 +489,7 @@ class CardDesign {
CryptoCurrency.arbEth: arbitrumSpecial,
CryptoCurrency.zec: zecSpecial,
CryptoCurrency.bnb: bnbSpecial,
+ CryptoCurrency.robEth: robinhoodSpecial,
};
static Map preferredColorCombinations = {
diff --git a/cw_core/lib/crypto_currency.dart b/cw_core/lib/crypto_currency.dart
index 09ead9151..678228916 100644
--- a/cw_core/lib/crypto_currency.dart
+++ b/cw_core/lib/crypto_currency.dart
@@ -143,6 +143,7 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
CryptoCurrency.arbEth,
CryptoCurrency.usdcArb,
CryptoCurrency.usdtArb,
+ CryptoCurrency.robEth,
];
static const havenCurrencies = [
@@ -974,6 +975,16 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
name: 'ltcmweb',
iconPath: 'assets/new-ui/crypto_full_icons/litecoin.svg',
decimals: 8);
+ static const robEth = CryptoCurrency(
+ title: "ETH",
+ tag: "ROB",
+ fullName: "Ethereum",
+ raw: 111,
+ name: "robeth",
+ iconPath: "assets/new-ui/crypto_full_icons/ethereum.svg",
+ decimals: 18,
+ flatIconPath: "assets/new-ui/balance_card_icons/robinhood.svg",
+ chainIconPath: "assets/new-ui/chain_badges/robinhood.svg");
static final Map _rawCurrencyMap = [
...all,
@@ -999,7 +1010,14 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
...zcashCurrencies
].fold