Fix Scam tokens handling and make it persistent ()

* Fix Scam tokens handling and make it persistent

* Add potential scam text next to scam tokens

* change UI of potential scam text
This commit is contained in:
Omar Hatem 2025-04-03 03:32:00 +02:00 committed by GitHub
parent cbca4c9c77
commit 23a47ed561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 121 additions and 45 deletions

View file

@ -20,6 +20,8 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
final String? iconPath;
@HiveField(6)
final String? tag;
@HiveField(7, defaultValue: false)
final bool isPotentialScam;
bool get enabled => _enabled;
@ -33,14 +35,17 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
bool enabled = true,
this.iconPath,
this.tag,
this.isPotentialScam = false,
}) : _enabled = enabled,
super(
name: symbol.toLowerCase(),
title: symbol.toUpperCase(),
fullName: name,
tag: tag,
iconPath: iconPath,
decimals: decimal);
name: symbol.toLowerCase(),
title: symbol.toUpperCase(),
fullName: name,
tag: tag,
iconPath: iconPath,
decimals: decimal,
isPotentialScam: isPotentialScam,
);
Erc20Token.copyWith(Erc20Token other, String? icon, String? tag)
: this.name = other.name,
@ -50,6 +55,7 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
this._enabled = other.enabled,
this.tag = tag,
this.iconPath = icon,
this.isPotentialScam = other.isPotentialScam,
super(
name: other.name,
title: other.symbol.toUpperCase(),
@ -57,6 +63,7 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
tag: tag,
iconPath: icon,
decimals: other.decimal,
isPotentialScam: other.isPotentialScam,
);
static const typeId = ERC20_TOKEN_TYPE_ID;

View file

@ -115,6 +115,7 @@ class EthereumWallet extends EVMChainWallet {
enabled: token.enabled,
tag: token.tag ?? "ETH",
iconPath: iconPath,
isPotentialScam: token.isPotentialScam,
);
}

View file

@ -626,13 +626,13 @@ abstract class EVMChainWalletBase
Future<void> addErc20Token(Erc20Token token) async {
String? iconPath;
if (token.iconPath == null || token.iconPath!.isEmpty) {
if ((token.iconPath == null || token.iconPath!.isEmpty) && !token.isPotentialScam) {
try {
iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath;
} catch (_) {}
} else {
} else if (!token.isPotentialScam) {
iconPath = token.iconPath;
}

View file

@ -68,6 +68,7 @@ class PolygonWallet extends EVMChainWallet {
enabled: token.enabled,
tag: token.tag ?? "MATIC",
iconPath: iconPath,
isPotentialScam: token.isPotentialScam,
);
}

View file

@ -6,6 +6,7 @@ part 'spl_token.g.dart';
@HiveType(typeId: SPLToken.typeId)
class SPLToken extends CryptoCurrency with HiveObjectMixin {
@override
@HiveField(0)
final String name;
@ -24,12 +25,18 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
@HiveField(5)
final String mint;
@override
@HiveField(6)
final String? iconPath;
@override
@HiveField(7)
final String? tag;
@override
@HiveField(8, defaultValue: false)
final bool isPotentialScam;
SPLToken({
required this.name,
required this.symbol,
@ -39,6 +46,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
this.iconPath,
this.tag = 'SOL',
bool enabled = true,
this.isPotentialScam = false,
}) : _enabled = enabled,
super(
name: mint.toLowerCase(),
@ -47,6 +55,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
tag: tag,
iconPath: iconPath,
decimals: decimal,
isPotentialScam: isPotentialScam,
);
factory SPLToken.fromMetadata({
@ -55,6 +64,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
required String symbol,
required String mintAddress,
String? iconPath,
bool isPotentialScam = false,
}) {
return SPLToken(
name: name,
@ -63,28 +73,14 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
decimal: 0,
mint: mint,
iconPath: iconPath,
isPotentialScam: isPotentialScam,
);
}
factory SPLToken.cryptoCurrency({
required String name,
required String symbol,
required int decimals,
required String iconPath,
required String mint,
}) {
return SPLToken(
name: name,
symbol: symbol,
decimal: decimals,
mint: mint,
iconPath: iconPath,
mintAddress: '',
);
}
@override
bool get enabled => _enabled;
@override
set enabled(bool value) => _enabled = value;
SPLToken.copyWith(SPLToken other, String? icon, String? tag)
@ -96,6 +92,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
mint = other.mint,
tag = other.tag,
iconPath = icon,
isPotentialScam = other.isPotentialScam,
super(
title: other.symbol.toUpperCase(),
name: other.symbol.toLowerCase(),
@ -103,6 +100,7 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
fullName: other.name,
tag: other.tag,
iconPath: icon,
isPotentialScam: other.isPotentialScam,
);
static const typeId = SPL_TOKEN_TYPE_ID;

View file

@ -25,10 +25,13 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
@HiveField(5)
final String? iconPath;
@HiveField(6)
final String? tag;
@HiveField(7, defaultValue: false)
final bool isPotentialScam;
bool get enabled => _enabled;
set enabled(bool value) => _enabled = value;
@ -41,14 +44,17 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
bool enabled = true,
this.iconPath,
this.tag = 'TRX',
this.isPotentialScam = false,
}) : _enabled = enabled,
super(
name: symbol.toLowerCase(),
title: symbol.toUpperCase(),
fullName: name,
tag: tag,
iconPath: iconPath,
decimals: decimal);
name: symbol.toLowerCase(),
title: symbol.toUpperCase(),
fullName: name,
tag: tag,
iconPath: iconPath,
decimals: decimal,
isPotentialScam: isPotentialScam,
);
TronToken.copyWith(TronToken other, String? icon, String? tag)
: name = other.name,
@ -58,6 +64,7 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
_enabled = other.enabled,
tag = tag ?? other.tag,
iconPath = icon ?? other.iconPath,
isPotentialScam = other.isPotentialScam,
super(
name: other.name,
title: other.symbol.toUpperCase(),
@ -65,6 +72,7 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
tag: tag ?? other.tag,
iconPath: icon ?? other.iconPath,
decimals: other.decimal,
isPotentialScam: other.isPotentialScam,
);
static const typeId = TRON_TOKEN_TYPE_ID;

View file

@ -509,11 +509,15 @@ abstract class TronWalletBase
Future<void> addTronToken(TronToken token) async {
String? iconPath;
try {
iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath;
} catch (_) {}
if ((token.iconPath == null || token.iconPath!.isEmpty) && !token.isPotentialScam) {
try {
iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath;
} catch (_) {}
} else if (!token.isPotentialScam) {
iconPath = token.iconPath;
}
final newToken = TronToken(
name: token.name,
@ -523,6 +527,7 @@ abstract class TronWalletBase
enabled: token.enabled,
tag: token.tag ?? "TRX",
iconPath: iconPath,
isPotentialScam: token.isPotentialScam,
);
await tronTokensBox.put(newToken.contractAddress, newToken);

View file

@ -99,6 +99,7 @@ class CWSolana extends Solana {
mint: token.name.toUpperCase(),
enabled: token.enabled,
iconPath: token.iconPath,
isPotentialScam: token.isPotentialScam,
);
await (wallet as SolanaWallet).addSPLToken(splToken);

View file

@ -217,12 +217,13 @@ class _EditTokenPageBodyState extends State<EditTokenPageBody> {
bool isPotentialScam = hasPotentialError;
final tokenSymbol = _tokenSymbolController.text.toUpperCase();
// check if the token symbol is the same as any of the base currencies symbols (ETH, SOL, POL, TRX, etc):
// if it is, then it's probably a scam unless it's in the whitelist
final baseCurrencySymbols =
CryptoCurrency.all.map((e) => e.title.toUpperCase()).toList();
if (baseCurrencySymbols.contains(tokenSymbol) && !isWhitelisted) {
if (baseCurrencySymbols.contains(tokenSymbol.trim().toUpperCase()) &&
!isWhitelisted) {
isPotentialScam = true;
}

View file

@ -16,7 +16,6 @@ import 'package:cw_core/unspent_coin_type.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:cake_wallet/themes/theme_base.dart';
class BalanceRowWidget extends StatelessWidget {
BalanceRowWidget({
@ -66,8 +65,6 @@ class BalanceRowWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
bool brightThemeType = false;
if (dashboardViewModel.settingsStore.currentTheme.type == ThemeType.bright) brightThemeType = true;
return Column(
children: [
Container(
@ -221,7 +218,33 @@ class BalanceRowWidget extends StatelessWidget {
),
],
),
//),
if (currency.isPotentialScam)
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
margin: EdgeInsets.only(top: 4),
decoration: BoxDecoration(
color: Colors.red[800],
borderRadius: BorderRadius.circular(8),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.warning_amber_outlined,
size: 16,
color: Colors.white,
),
const SizedBox(width: 4),
Text(
S.of(context).potential_scam,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w700,
),
),
],
),
),
if (frozenBalance.isNotEmpty)
Column(
crossAxisAlignment: CrossAxisAlignment.start,

View file

@ -84,6 +84,7 @@ class CWTron extends Tron {
decimal: token.decimals,
enabled: token.enabled,
iconPath: token.iconPath,
isPotentialScam: token.isPotentialScam,
);
await (wallet as TronWallet).addTronToken(tronToken);
}

View file

@ -229,7 +229,7 @@ abstract class BalanceViewModelBase with Store {
formattedAssetTitle: _formatterAsset(key)));
}
final fiatCurrency = settingsStore.fiatCurrency;
final price = fiatConvertationStore.prices[key] ?? 0;
final price = key.isPotentialScam ? 0.0 : fiatConvertationStore.prices[key] ?? 0;
// if (price == null) {
// throw Exception('Price is null for: $key');

View file

@ -83,6 +83,7 @@ abstract class HomeSettingsViewModelBase with Store {
decimal: token.decimals,
contractAddress: contractAddress,
iconPath: token.iconPath,
isPotentialScam: token.isPotentialScam,
);
await ethereum!.addErc20Token(_balanceViewModel.wallet, erc20token);
@ -95,6 +96,7 @@ abstract class HomeSettingsViewModelBase with Store {
decimal: token.decimals,
contractAddress: contractAddress,
iconPath: token.iconPath,
isPotentialScam: token.isPotentialScam,
);
await polygon!.addErc20Token(_balanceViewModel.wallet, polygonToken);
}

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "الرجاء محاولة الاتصال بعقدة أخرى",
"please_wait": "انتظر من فضلك",
"polygonscan_history": "ﻥﺎﻜﺴﻧﻮﺠﻴﻟﻮﺑ ﺦﻳﺭﺎﺗ",
"potential_scam": "عملية احتيال محتملة",
"powered_by": "بدعم من ${title}",
"pre_seed_button_text": "انا أفهم. أرني سييد الخاص بي",
"pre_seed_description": "في الصفحة التالية ستشاهد سلسلة من الكلمات ${words}. هذه هي سييد الفريدة والخاصة بك وهي الطريقة الوحيدة لاسترداد محفظتك في حالة فقدها أو عطلها. تقع على عاتقك مسؤولية تدوينها وتخزينها في مكان آمن خارج تطبيق Cake Wallet.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Моля, опитайте се да се свържете към друг node.",
"please_wait": "Моля Изчакай",
"polygonscan_history": "История на PolygonScan",
"potential_scam": "Потенциална измама",
"powered_by": "Powered by ${title}",
"pre_seed_button_text": "Разбирам. Покажи seed",
"pre_seed_description": "На следващата страница ще видите поредица от ${words} думи. Това е вашият таен личен seed и е единственият начин да възстановите портфейла си. Отговорността за съхранението му на сигурно място извън приложението на Cake Wallet е изцяло ВАША.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Zkuste se prosím připojit k jinému uzlu",
"please_wait": "Prosím, čekejte",
"polygonscan_history": "Historie PolygonScan",
"potential_scam": "Potenciální podvod",
"powered_by": "Zajišťuje ${title}",
"pre_seed_button_text": "Rozumím. Ukaž mi můj seed.",
"pre_seed_description": "Na následující stránce uvidíte sérii ${words} slov. Je to váš tzv. seed a je to JEDINÁ možnost, jak můžete později obnovit svou peněženku v případě ztráty nebo poruchy. Je VAŠÍ zodpovědností zapsat si ho a uložit si ho na bezpečném místě mimo aplikaci Cake Wallet.",

View file

@ -533,13 +533,14 @@
"please_choose_one": "Bitte wählen Sie einen",
"please_fill_totp": "Bitte geben Sie den 8-stelligen Code ein, der auf Ihrem anderen Gerät vorhanden ist",
"please_make_selection": "Bitte treffen Sie unten eine Auswahl zum Erstellen oder Wiederherstellen Ihrer Wallet.",
"Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.",
"please_reference_document": "Bitte verweisen Sie auf die folgenden Dokumente, um weitere Informationen zu erhalten.",
"Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.",
"please_select": "Bitte auswählen:",
"please_select_backup_file": "Bitte wählen Sie die Sicherungsdatei und geben Sie das Sicherungskennwort ein.",
"please_try_to_connect_to_another_node": "Bitte versuchen Sie, sich mit einem anderen Knoten zu verbinden",
"please_wait": "Warten Sie mal",
"polygonscan_history": "PolygonScan-Verlauf",
"potential_scam": "Potenzieller Betrug",
"powered_by": "Ermöglicht durch ${title}",
"pre_seed_button_text": "Verstanden. Zeig mir meinen Seed",
"pre_seed_description": "Auf der nächsten Seite sehen Sie eine Reihe von ${words} Wörtern. Dies ist Ihr einzigartiger und privater Seed und der EINZIGE Weg, um Ihre Wallet im Falle eines Verlusts oder einer Fehlfunktion wiederherzustellen. Es liegt in IHRER Verantwortung, ihn aufzuschreiben und an einem sicheren Ort außerhalb der Cake Wallet-App aufzubewahren.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "Please try to connect to another node",
"please_wait": "Please wait",
"polygonscan_history": "PolygonScan history",
"potential_scam": "Potential Scam",
"powered_by": "Powered by ${title}",
"pre_seed_button_text": "I understand. Show me my seed",
"pre_seed_description": "On the next page you will see a series of ${words} words. This is your unique and private seed and it is the ONLY way to recover your wallet in case of loss or malfunction. It is YOUR responsibility to write it down and store it in a safe place outside of the Cake Wallet app.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "Intenta conectarte a otro nodo",
"please_wait": "Espera por favor",
"polygonscan_history": "Historial de PolygonScan",
"potential_scam": "Estafa potencial",
"powered_by": "Posible gracias a ${title}",
"pre_seed_button_text": "Entiendo. Muéstrame mi semilla",
"pre_seed_description": "En la página siguiente verás una serie de ${words} palabras. Esta es su semilla única y privada y es la ÚNICA forma de recuperar tu billetera en caso de pérdida o mal funcionamiento. Es TU responsabilidad escribirla y guardarla en un lugar seguro fuera de la aplicación Cake Wallet.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Merci d'essayer la connexion vers un autre nœud",
"please_wait": "Merci de patienter",
"polygonscan_history": "Historique de PolygonScan",
"potential_scam": "Arnaque potentielle",
"powered_by": "Proposé par ${title}",
"pre_seed_button_text": "J'ai compris. Montrez moi ma phrase secrète (seed)",
"pre_seed_description": "Sur la page suivante vous allez voir une série de ${words} mots. Ils constituent votre phrase secrète (seed) unique et privée et sont le SEUL moyen de restaurer votre portefeuille (wallet) en cas de perte ou de dysfonctionnement. Il est de VOTRE responsabilité d'écrire cette série de mots et de la stocker dans un lieu sûr en dehors de l'application Cake Wallet.",

View file

@ -541,6 +541,7 @@
"please_try_to_connect_to_another_node": "Don Allah yi ƙoƙarin haɗa da wani node",
"please_wait": "Don Allah a rufe",
"polygonscan_history": "PolygonScan tarihin kowane zamani",
"potential_scam": "M zamba",
"powered_by": "An ƙarfafa shi ta ${title}",
"pre_seed_button_text": "Ina fahimta. Nuna mini seed din nawa",
"pre_seed_description": "A kan shafin nan za ku ga wata ƙungiya na ${words} kalmomi. Wannan shine tsarin daban-daban ku kuma na sirri kuma shine hanya ɗaya kadai don mai da purse dinku a cikin yanayin rasa ko rashin aiki. Yana da damar da kuke a cikin tabbatar da kuyi rubuta shi kuma kuyi ajiye shi a wuri na aminci wanda ya wuce wurin app na Cake Wallet.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "कृपया दूसरे नोड से कनेक्ट करने का प्रयास करें",
"please_wait": "कृपया प्रतीक्षा करें",
"polygonscan_history": "पॉलीगॉनस्कैन इतिहास",
"potential_scam": "संभावित घोटाला",
"powered_by": "द्वारा संचालित ${title}",
"pre_seed_button_text": "मै समझता हुँ। मुझे अपना बीज दिखाओ",
"pre_seed_description": "अगले पेज पर आपको ${words} शब्दों की एक श्रृंखला दिखाई देगी। यह आपका अद्वितीय और निजी बीज है और नुकसान या खराबी के मामले में अपने बटुए को पुनर्प्राप्त करने का एकमात्र तरीका है। यह आपकी जिम्मेदारी है कि इसे नीचे लिखें और इसे Cake Wallet ऐप के बाहर सुरक्षित स्थान पर संग्रहीत करें।",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Molimo pokušajte se spojiti na drugi node.",
"please_wait": "Molimo pričekajte",
"polygonscan_history": "Povijest PolygonScan",
"potential_scam": "Potencijalna prijevara",
"powered_by": "Omogućio ${title}",
"pre_seed_button_text": "Razumijem. Prikaži mi moj pristupni izraz",
"pre_seed_description": "Na sljedećoj ćete stranici vidjeti niz ${words} riječi. Radi se o Vašem jedinstvenom i tajnom pristupnom izrazu koji je ujedno i JEDINI način na koji možete oporaviti svoj novčanik u slučaju gubitka ili kvara. VAŠA je odgovornost zapisati ga te pohraniti na sigurno mjesto izvan Cake Wallet aplikacije.",

View file

@ -538,6 +538,7 @@
"please_try_to_connect_to_another_node": "Խնդրում ենք փորձել միանալ այլ հանգույցի",
"please_wait": "Խնդրում ենք սպասել",
"polygonscan_history": "PolygonScan պատմություն",
"potential_scam": "Հնարավոր խաբեություն",
"powered_by": "${title} կողմից ապահովված",
"pre_seed_button_text": "Ես հասկանում եմ։ Ցույց տվեք իմ սերմը",
"pre_seed_description": "Հաջորդ էջում դուք կտեսնեք ${words} բառերի շարք։ Սա ձեր յուրահատուկ և գաղտնի սերմն է, որը ձեր դրամապանակը վերականգնելու միակ միջոցն է կորուստի կամ սխալ գործարքի դեպքում։ Դուք պատասխանատու եք այն գրառել և ապահով վայրում պահել Cake Wallet հավելվածից դուրս",

View file

@ -541,6 +541,7 @@
"please_try_to_connect_to_another_node": "Silakan coba untuk terhubung ke node lain",
"please_wait": "Harap tunggu",
"polygonscan_history": "Sejarah PolygonScan",
"potential_scam": "Penipuan potensial",
"powered_by": "Didukung oleh ${title}",
"pre_seed_button_text": "Saya mengerti. Tampilkan seed saya",
"pre_seed_description": "Di halaman berikutnya Anda akan melihat serangkaian kata ${words}. Ini adalah seed unik dan pribadi Anda dan itu SATU-SATUNYA cara untuk mengembalikan dompet Anda jika hilang atau rusak. Ini adalah TANGGUNG JAWAB Anda untuk menuliskannya dan menyimpan di tempat yang aman di luar aplikasi Cake Wallet.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "Gentilmente prova a connetterti ad un altro nodo",
"please_wait": "Attendere prego",
"polygonscan_history": "Cronologia PolygonScan",
"potential_scam": "Potenziale truffa",
"powered_by": "Sviluppato da ${title}",
"pre_seed_button_text": "Ho capito. Mostrami il seme",
"pre_seed_description": "Nella pagina seguente ti sarà mostrata una serie di parole ${words}. Questo è il tuo seme unico e privato ed è l'UNICO modo per recuperare il tuo portafoglio in caso di perdita o malfunzionamento. E' TUA responsabilità trascriverlo e conservarlo in un posto sicuro fuori dall'app Cake Wallet.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "別のノードに接続してみてください",
"please_wait": "お待ちください",
"polygonscan_history": "ポリゴンスキャン履歴",
"potential_scam": "潜在的な詐欺",
"powered_by": "搭載 ${title}",
"pre_seed_button_text": "わかります。 種を見せて",
"pre_seed_description": "次のページでは、一連の${words}語が表示されます。 これはあなたのユニークでプライベートなシードであり、紛失や誤動作が発生した場合にウォレットを回復する唯一の方法です。 それを書き留めて、Cake Wallet アプリの外の安全な場所に保管するのはあなたの責任です。",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "다른 노드에 연결을 시도하십시오",
"please_wait": "기다리세요",
"polygonscan_history": "다각형 스캔 기록",
"potential_scam": "잠재적 사기",
"powered_by": "에 의해 구동 ${title}",
"pre_seed_button_text": "이해 했어요. 내 씨앗을 보여줘",
"pre_seed_description": "다음 페이지에서 ${words} 개의 단어를 볼 수 있습니다. 이것은 귀하의 고유하고 개인적인 시드이며 분실 또는 오작동시 지갑을 복구하는 유일한 방법입니다. 기록해두고 Cake Wallet 앱 외부의 안전한 장소에 보관하는 것은 귀하의 책임입니다.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "အခြား node သို့ ချိတ်ဆက်ရန် ကြိုးစားပါ။",
"please_wait": "ကျေးဇူးပြုပြီးခဏစောင့်ပါ",
"polygonscan_history": "PolygonScan မှတ်တမ်း",
"potential_scam": "အလားအလာရှိသောလိမ်လည်မှု",
"powered_by": "${title} မှ ပံ့ပိုးပေးသည်",
"pre_seed_button_text": "ကျွန်တော်နားလည်ပါတယ်။ ငါ့အမျိုးအနွယ်ကို ပြလော့",
"pre_seed_description": "နောက်စာမျက်နှာတွင် ${words} စကားလုံးများ အတွဲလိုက်ကို တွေ့ရပါမည်။ ၎င်းသည် သင်၏ထူးခြားပြီး သီးသန့်မျိုးစေ့ဖြစ်ပြီး ပျောက်ဆုံးခြင်း သို့မဟုတ် ချွတ်ယွင်းမှုရှိပါက သင့်ပိုက်ဆံအိတ်ကို ပြန်လည်ရယူရန် တစ်ခုတည်းသောနည်းလမ်းဖြစ်သည်။ ၎င်းကို Cake Wallet အက်ပ်၏အပြင်ဘက်တွင် လုံခြုံသောနေရာတွင် သိမ်းဆည်းရန်မှာ သင်၏တာဝန်ဖြစ်သည်။",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Probeer verbinding te maken met een ander knooppunt",
"please_wait": "Even geduld aub",
"polygonscan_history": "PolygonScan-geschiedenis",
"potential_scam": "Potentiële zwendel",
"powered_by": "Aangedreven door ${title}",
"pre_seed_button_text": "Ik begrijp het. Laat me mijn zaad zien",
"pre_seed_description": "Op de volgende pagina ziet u een reeks van ${words} woorden. Dit is uw unieke en persoonlijke zaadje en het is de ENIGE manier om uw portemonnee te herstellen in geval van verlies of storing. Het is JOUW verantwoordelijkheid om het op te schrijven en op een veilige plaats op te slaan buiten de Cake Wallet app.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Spróbuj połączyć się z innym węzłem",
"please_wait": "Proszę czekać",
"polygonscan_history": "Historia PolygonScan",
"potential_scam": "Potencjalne oszustwo",
"powered_by": "Obsługiwane przez ${title}",
"pre_seed_button_text": "Rozumiem. Pokaż mi moją fraze seed",
"pre_seed_description": "Na następnej stronie zobaczysz serię ${words} słów. To jest Twoja unikalna i prywatna fraza seed i jest to JEDYNY sposób na odzyskanie portfela w przypadku utraty lub awarii telefonu. Twoim obowiązkiem jest zapisanie go i przechowywanie w bezpiecznym miejscu (np. na kartce w sejfie).",

View file

@ -541,6 +541,7 @@
"please_try_to_connect_to_another_node": "Por favor, tente conectar-se a outro nó",
"please_wait": "Por favor, aguarde",
"polygonscan_history": "História do PolygonScan",
"potential_scam": "Golpe potencial",
"powered_by": "Troca realizada por ${title}",
"pre_seed_button_text": "Compreendo. Me mostre minha semente",
"pre_seed_description": "Na próxima página, você verá uma série de ${words} palavras. Esta é a sua semente única e privada e é a ÚNICA maneira de recuperar sua carteira em caso de perda ou mau funcionamento. É SUA responsabilidade anotá-lo e armazená-lo em um local seguro fora do aplicativo Cake Wallet.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "Пожалуйста, попробуйте подключиться к другой ноде",
"please_wait": "Пожалуйста, подождите",
"polygonscan_history": "История PolygonScan",
"potential_scam": "Потенциальная афера",
"powered_by": "Используя ${title}",
"pre_seed_button_text": "Понятно. Покажите мнемоническую фразу",
"pre_seed_description": "На следующей странице вы увидите серию из ${words} слов. Это ваша уникальная и личная мнемоническая фраза, и это ЕДИНСТВЕННЫЙ способ восстановить свой кошелек в случае потери или неисправности. ВАМ необходимо записать ее и хранить в надежном месте вне приложения Cake Wallet.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "โปรดลองเชื่อมต่อกับโหนดอื่น",
"please_wait": "โปรดรอ",
"polygonscan_history": "ประวัติ PolygonScan",
"potential_scam": "การหลอกลวงที่มีศักยภาพ",
"powered_by": "พัฒนาขึ้นโดย ${title}",
"pre_seed_button_text": "ฉันเข้าใจ แสดง seed ของฉัน",
"pre_seed_description": "บนหน้าถัดไปคุณจะเห็นชุดของคำ ${words} คำ นี่คือ seed ของคุณที่ไม่ซ้ำใดๆ และเป็นความลับเพียงของคุณ และนี่คือเพียงวิธีเดียวที่จะกู้กระเป๋าของคุณในกรณีที่สูญหายหรือมีปัญหา มันเป็นความรับผิดชอบของคุณเพื่อเขียนมันลงบนกระดาษและจัดเก็บไว้ในที่ปลอดภัยนอกแอป Cake Wallet",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Pakisubukang kumonekta sa iba pang node",
"please_wait": "Mangyaring maghintay",
"polygonscan_history": "Kasaysayan ng PolygonScan",
"potential_scam": "Potensyal na scam",
"powered_by": "Pinapagana ng ${title}",
"pre_seed_button_text": "Naiintindihan ko. Ipakita sa akin ang aking binhi",
"pre_seed_description": "Sa susunod na pahina makikita mo ang isang serye ng mga ${words} na mga salita. Ito ang iyong natatangi at pribadong binhi at ito ang tanging paraan upang mabawi ang iyong pitaka kung sakaling mawala o madepektong paggawa. Responsibilidad mong isulat ito at itago ito sa isang ligtas na lugar sa labas ng cake wallet app.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Lütfen farklı düğüme bağlanmayı dene",
"please_wait": "Lütfen bekleyin",
"polygonscan_history": "PolygonScan geçmişi",
"potential_scam": "Potansiyel aldatmaca",
"powered_by": "${title} tarafından desteklenmektedir",
"pre_seed_button_text": "Anladım. Bana tohumumu göster.",
"pre_seed_description": "Bir sonraki sayfada ${words} kelime göreceksin. Bu senin benzersiz ve özel tohumundur, kaybetmen veya silinmesi durumunda cüzdanını kurtarmanın TEK YOLUDUR. Bunu yazmak ve Cake Wallet uygulaması dışında güvenli bir yerde saklamak tamamen SENİN sorumluluğunda.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "Будь ласка, спробуйте підключитися до іншого вузлу",
"please_wait": "Будь ласка, зачекайте",
"polygonscan_history": "Історія PolygonScan",
"potential_scam": "Потенційна афера",
"powered_by": "Використовуючи ${title}",
"pre_seed_button_text": "Зрозуміло. Покажіть мнемонічну фразу",
"pre_seed_description": "На наступній сторінці ви побачите серію з ${words} слів. Це ваша унікальна та приватна мнемонічна фраза, і це ЄДИНИЙ спосіб відновити ваш гаманець на випадок втрати або несправності. ВАМ необхідно записати її та зберігати в безпечному місці поза програмою Cake Wallet.",

View file

@ -541,6 +541,7 @@
"please_try_to_connect_to_another_node": "براہ کرم کسی دوسرے نوڈ سے جڑنے کی کوشش کریں۔",
"please_wait": "برائے مہربانی انتظار کریں",
"polygonscan_history": "ﺦﯾﺭﺎﺗ ﯽﮐ ﻦﯿﮑﺳﺍ ﻥﻮﮔ ﯽﻟﻮﭘ",
"potential_scam": "ممکنہ گھوٹالہ",
"powered_by": "${title} کے ذریعے تقویت یافتہ",
"pre_seed_button_text": "میں سمجھتا ہوں۔ مجھے میرا بیج دکھاؤ",
"pre_seed_description": "اگلے صفحے پر آپ کو ${words} الفاظ کا ایک سلسلہ نظر آئے گا۔ یہ آپ کا انوکھا اور نجی بیج ہے اور یہ آپ کے بٹوے کو ضائع یا خرابی کی صورت میں بازیافت کرنے کا واحد طریقہ ہے۔ اسے لکھنا اور اسے کیک والیٹ ایپ سے باہر کسی محفوظ جگہ پر اسٹور کرنا آپ کی ذمہ داری ہے۔",

View file

@ -537,6 +537,7 @@
"please_try_to_connect_to_another_node": "Vui lòng thử kết nối với một nút khác",
"please_wait": "Vui lòng chờ",
"polygonscan_history": "Lịch sử PolygonScan",
"potential_scam": "Lừa đảo tiềm năng",
"powered_by": "Được cung cấp bởi ${title}",
"pre_seed_button_text": "Tôi hiểu. Hiển thị hạt giống của tôi",
"pre_seed_description": "Trên trang tiếp theo, bạn sẽ thấy một chuỗi ${words} từ. Đây là hạt giống riêng tư và duy nhất của bạn và là CÁCH DUY NHẤT để khôi phục ví của bạn trong trường hợp mất hoặc hỏng hóc. Đây là TRÁCH NHIỆM của bạn để ghi lại và lưu trữ nó ở một nơi an toàn ngoài ứng dụng Cake Wallet.",

View file

@ -540,6 +540,7 @@
"please_try_to_connect_to_another_node": "Ẹ jọ̀wọ́, gbìyànjú dárapọ̀ mọ́ apẹka mìíràn yí wọlé",
"please_wait": "Jọwọ saa",
"polygonscan_history": "PolygonScan itan",
"potential_scam": "Egan ti o ni agbara",
"powered_by": "Láti ọwọ́ ${title}",
"pre_seed_button_text": "Mo ti gbọ́. O fi hóró mi hàn mi",
"pre_seed_description": "Ẹ máa wo àwọn ọ̀rọ̀ ${words} lórí ojú tó ń bọ̀. Èyí ni hóró aládàáni yín tó kì í jọra. Ẹ lè fi í nìkan dá àpamọ́wọ́ yín padà sípò tí àṣìṣe tàbí ìbàjẹ́ bá ṣẹlẹ̀. Hóró yín ni ẹ gbọ́dọ̀ kọ sílẹ̀ àti pamọ́ síbí tó kò léwu níta Cake Wallet.",

View file

@ -539,6 +539,7 @@
"please_try_to_connect_to_another_node": "请尝试连接到其他节点",
"please_wait": "请稍等",
"polygonscan_history": "多边形扫描历史",
"potential_scam": "潜在骗局",
"powered_by": "Powered by ${title}",
"pre_seed_button_text": "我明白。 查看种子",
"pre_seed_description": "在下一页上,您将看到${words}个文字。 这是您独有的种子,是丟失或出现故障时恢复钱包的唯一方法。 您有必须将其写下并储存在Cake Wallet应用程序以外的安全地方。",