diff --git a/android/app/build.gradle b/android/app/build.gradle
index ee68ec0db..3251a6e96 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -71,8 +71,9 @@ android {
        release {
             signingConfig signingConfigs.release
 
-            minifyEnabled true
-            useProguard true
+            shrinkResources false
+            minifyEnabled false
+            useProguard false
 
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
@@ -85,8 +86,9 @@ flutter {
 
 dependencies {
     testImplementation 'junit:junit:4.12'
-    androidTestImplementation 'androidx.test:runner:1.1.1'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+    androidTestImplementation 'androidx.test:runner:1.3.0'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+    implementation 'com.unstoppabledomains:resolution:1.13.0'
     implementation 'com.google.firebase:firebase-core:19.0.0'
     implementation 'com.google.firebase:firebase-messaging:19.0.0'
 }
diff --git a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java
index 26cc56187..3afdc111e 100644
--- a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java
+++ b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java
@@ -10,14 +10,19 @@ import io.flutter.plugin.common.MethodCall;
 import io.flutter.plugin.common.MethodChannel;
 
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 
+import com.unstoppabledomains.resolution.DomainResolution;
+import com.unstoppabledomains.resolution.Resolution;
+
 import java.security.SecureRandom;
 
 public class MainActivity extends FlutterFragmentActivity {
     final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
-    
+    final int UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK = 24;
+
     @Override
     public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
         GeneratedPluginRegistrant.registerWith(flutterEngine);
@@ -33,17 +38,44 @@ public class MainActivity extends FlutterFragmentActivity {
         Handler handler = new Handler(Looper.getMainLooper());
 
         try {
-            if (call.method.equals("sec_random")) {
-                int count = call.argument("count");
-                SecureRandom random = new SecureRandom();
-                byte bytes[] = new byte[count];
-                random.nextBytes(bytes);
-                handler.post(() -> result.success(bytes));
-            } else {
-                handler.post(() -> result.notImplemented());
+            switch (call.method) {
+                case "sec_random":
+                    int count = call.argument("count");
+                    SecureRandom random = new SecureRandom();
+                    byte bytes[] = new byte[count];
+                    random.nextBytes(bytes);
+                    handler.post(() -> result.success(bytes));
+                    break;
+                case "getUnstoppableDomainAddress":
+                    int  version = Build.VERSION.SDK_INT;
+                    if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) {
+                        getUnstoppableDomainAddress(call, result);
+                    } else {
+                        handler.post(() -> result.success(""));
+                    }
+                    break;
+                default:
+                    handler.post(() -> result.notImplemented());
             }
         } catch (Exception e) {
             handler.post(() -> result.error("UNCAUGHT_ERROR", e.getMessage(), null));
         }
     }
-}
+
+    private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
+        DomainResolution resolution = new Resolution();
+        Handler handler = new Handler(Looper.getMainLooper());
+        String domain = call.argument("domain");
+        String ticker = call.argument("ticker");
+
+        AsyncTask.execute(() -> {
+            try {
+                String address = resolution.getAddress(domain, ticker);
+                handler.post(() -> result.success(address));
+            } catch (Exception e) {
+                System.out.println("Expected Address, but got " + e.getMessage());
+                handler.post(() -> result.success(""));
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 0d11c6b94..39e58da44 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.5.4'
+        classpath 'com.android.tools.build:gradle:4.1.3'
         classpath 'com.google.gms:google-services:4.3.8'
     }
 }
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 296b146b7..b7ca2e6de 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jun 23 08:50:38 CEST 2017
+#Mon Apr 19 18:19:26 EEST 2021
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
diff --git a/ios/Podfile b/ios/Podfile
index 3cfff7b1d..3c8f789c9 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,5 +1,5 @@
 # Uncomment this line to define a global platform for your project
-platform :ios, '9.0'
+platform :ios, '11.0'
 source 'https://github.com/CocoaPods/Specs.git'
 
 # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
@@ -36,6 +36,7 @@ target 'Runner' do
 
   # Cake Wallet (Legacy)
   pod 'CryptoSwift'
+  pod 'UnstoppableDomainsResolution', '~> 0.3.6'
   pod 'Firebase/Messaging', '6.33.0'
 end
 
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 50f9b20d2..4be2c24bc 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -3,6 +3,7 @@ PODS:
     - Flutter
     - MTBBarcodeScanner
     - SwiftProtobuf
+  - BigInt (5.2.0)
   - connectivity (0.0.1):
     - Flutter
     - Reachability
@@ -59,6 +60,8 @@ PODS:
     - SwiftyGif
   - esys_flutter_share (0.0.1):
     - Flutter
+  - EthereumAddress (1.3.0):
+    - CryptoSwift (~> 1.0)
   - file_picker (0.0.1):
     - DKImagePickerController/PhotoGallery
     - Flutter
@@ -150,6 +153,10 @@ PODS:
     - Flutter
   - SwiftProtobuf (1.12.0)
   - SwiftyGif (5.3.0)
+  - UnstoppableDomainsResolution (0.3.6):
+    - BigInt
+    - CryptoSwift (~> 1.0)
+    - EthereumAddress (~> 1.3)
   - url_launcher (0.0.1):
     - Flutter
   - webview_flutter (0.0.1):
@@ -174,14 +181,17 @@ DEPENDENCIES:
   - permission_handler (from `.symlinks/plugins/permission_handler/ios`)
   - share (from `.symlinks/plugins/share/ios`)
   - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
+  - UnstoppableDomainsResolution (~> 0.3.6)
   - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
   - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
 
 SPEC REPOS:
   https://github.com/CocoaPods/Specs.git:
+    - BigInt
     - CryptoSwift
     - DKImagePickerController
     - DKPhotoGallery
+    - EthereumAddress
     - Firebase
     - FirebaseCore
     - FirebaseCoreDiagnostics
@@ -198,6 +208,7 @@ SPEC REPOS:
     - SDWebImage
     - SwiftProtobuf
     - SwiftyGif
+    - UnstoppableDomainsResolution
 
 EXTERNAL SOURCES:
   barcode_scan:
@@ -239,6 +250,7 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479
+  BigInt: f668a80089607f521586bbe29513d708491ef2f7
   connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
   CryptoSwift: 093499be1a94b0cae36e6c26b70870668cb56060
   cw_monero: 78f369253cc913efc23db9cf6be81a11eaf40fe1
@@ -246,6 +258,7 @@ SPEC CHECKSUMS:
   DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
   DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
   esys_flutter_share: 403498dab005b36ce1f8d7aff377e81f0621b0b4
+  EthereumAddress: 39fe8e11cf04e4e9902b55ae653dbc4e0aee5f30
   file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
   Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
   firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
@@ -273,9 +286,9 @@ SPEC CHECKSUMS:
   shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
   SwiftProtobuf: 4ef85479c18ca85b5482b343df9c319c62bda699
   SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40
+  UnstoppableDomainsResolution: 63abb84858d3e91eb838a5bfa6f7e3c0e0593f24
   url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
   webview_flutter: 9f491a9b5a66f2573946a389b2677987b0ff8c0b
 
-PODFILE CHECKSUM: f316539722a6f9dbb0d0f1065a27fa7ea38c6f88
 
-COCOAPODS: 1.9.3
+COCOAPODS: 1.10.1
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 2a3505ef9..50b6e39dd 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,8 +1,13 @@
 import UIKit
 import Flutter
+import UnstoppableDomainsResolution
 
 @UIApplicationMain
 @objc class AppDelegate: FlutterAppDelegate {
+    lazy var resolution : Resolution? =  {
+               return try? Resolution()
+            }()
+    
     override func application(
         _ application: UIApplication,
         didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
@@ -70,6 +75,27 @@ import Flutter
                 }
 
                 result(secRandom(count: count))
+            case "getUnstoppableDomainAddress":
+                guard let args = call.arguments as? Dictionary<String, String>,
+                      let domain = args["domain"],
+                      let ticker = args["ticker"],
+                      let resolution = self?.resolution else {
+                    result(nil)
+                    return
+                }
+                        
+                resolution.addr(domain: domain, ticker: ticker) { addrResult in
+                  var address : String = ""
+                    
+                  switch addrResult {
+                      case .success(let returnValue):
+                        address = returnValue
+                      case .failure(let error):
+                        print("Expected Address, but got \(error)")
+                    }
+                    
+                    result(address)
+                }
             default:
                 result(FlutterMethodNotImplemented)
             }
diff --git a/lib/entities/parse_address_from_domain.dart b/lib/entities/parse_address_from_domain.dart
new file mode 100644
index 000000000..45571e358
--- /dev/null
+++ b/lib/entities/parse_address_from_domain.dart
@@ -0,0 +1,47 @@
+import 'package:cake_wallet/entities/openalias_record.dart';
+import 'package:cake_wallet/entities/parsed_address.dart';
+import 'package:cake_wallet/entities/unstoppable_domain_address.dart';
+
+const topLevelDomain = 'crypto';
+
+Future<ParsedAddress> parseAddressFromDomain(
+    String domain, String ticker) async {
+  try {
+    final formattedName = OpenaliasRecord.formatDomainName(domain);
+    final domainParts = formattedName.split('.');
+    final name = domainParts.last;
+
+    if (domainParts.length <= 1 || domainParts.first.isEmpty || name.isEmpty) {
+      return ParsedAddress(address: domain);
+    }
+
+    if (name.contains(topLevelDomain)) {
+      final address =
+        await fetchUnstoppableDomainAddress(domain, ticker);
+
+      if (address?.isEmpty ?? true) {
+        return ParsedAddress(address: domain);
+      }
+
+      return ParsedAddress(
+          address: address,
+          name: domain,
+          parseFrom: ParseFrom.unstoppableDomains);
+    }
+
+    final record = await OpenaliasRecord.fetchAddressAndName(formattedName);
+
+    if (record == null || record.address.contains(formattedName)) {
+      return ParsedAddress(address: domain);
+    }
+
+    return ParsedAddress(
+        address: record.address,
+        name: record.name,
+        parseFrom: ParseFrom.openAlias);
+  } catch (e) {
+    print(e.toString());
+  }
+
+  return ParsedAddress(address: domain);
+}
\ No newline at end of file
diff --git a/lib/entities/parsed_address.dart b/lib/entities/parsed_address.dart
new file mode 100644
index 000000000..91fec6750
--- /dev/null
+++ b/lib/entities/parsed_address.dart
@@ -0,0 +1,12 @@
+enum ParseFrom {unstoppableDomains, openAlias, notParsed}
+
+class ParsedAddress {
+  ParsedAddress({
+    this.address = '',
+    this.name = '',
+    this.parseFrom = ParseFrom.notParsed});
+
+  final String address;
+  final String name;
+  final ParseFrom parseFrom;
+}
\ No newline at end of file
diff --git a/lib/entities/unstoppable_domain_address.dart b/lib/entities/unstoppable_domain_address.dart
new file mode 100644
index 000000000..792f9a348
--- /dev/null
+++ b/lib/entities/unstoppable_domain_address.dart
@@ -0,0 +1,22 @@
+import 'package:flutter/services.dart';
+
+const channel = MethodChannel('com.cake_wallet/native_utils');
+
+Future<String> fetchUnstoppableDomainAddress(String domain, String ticker) async {
+  var address = '';
+
+  try {
+    address = await channel.invokeMethod(
+        'getUnstoppableDomainAddress',
+        <String, String> {
+          'domain' : domain,
+          'ticker' : ticker
+        }
+    );
+  } catch (e) {
+    print('Unstoppable domain error: ${e.toString()}');
+    address = '';
+  }
+
+  return address;
+}
\ No newline at end of file
diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart
index 6b4e9e3cb..727630f50 100644
--- a/lib/src/screens/exchange/exchange_page.dart
+++ b/lib/src/screens/exchange/exchange_page.dart
@@ -1,7 +1,9 @@
 import 'dart:ui';
+import 'package:cake_wallet/entities/parsed_address.dart';
 import 'package:cake_wallet/entities/sync_status.dart';
 import 'package:cake_wallet/entities/wallet_type.dart';
-import 'package:cake_wallet/exchange/changenow/changenow_exchange_provider.dart';
+import 'package:cake_wallet/entities/parse_address_from_domain.dart';
+import 'package:cake_wallet/src/screens/send/widgets/parse_address_from_domain_alert.dart';
 import 'package:cake_wallet/src/widgets/standard_checkbox.dart';
 import 'package:dotted_border/dotted_border.dart';
 import 'package:flutter/cupertino.dart';
@@ -9,8 +11,6 @@ import 'package:flutter/material.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
 import 'package:keyboard_actions/keyboard_actions.dart';
 import 'package:mobx/mobx.dart';
-import 'package:cake_wallet/exchange/exchange_provider.dart';
-import 'package:cake_wallet/core/execution_state.dart';
 import 'package:cake_wallet/exchange/exchange_template.dart';
 import 'package:cake_wallet/exchange/exchange_trade_state.dart';
 import 'package:cake_wallet/exchange/limits_state.dart';
@@ -23,7 +23,6 @@ import 'package:cake_wallet/utils/show_pop_up.dart';
 import 'package:cake_wallet/routes.dart';
 import 'package:cake_wallet/generated/i18n.dart';
 import 'package:cake_wallet/entities/crypto_currency.dart';
-import 'package:cake_wallet/exchange/xmrto/xmrto_exchange_provider.dart';
 import 'package:cake_wallet/src/screens/exchange/widgets/exchange_card.dart';
 import 'package:cake_wallet/src/widgets/primary_button.dart';
 import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
@@ -42,7 +41,9 @@ class ExchangePage extends BasePage {
   final checkBoxKey = GlobalKey<StandardCheckboxState>();
   final _formKey = GlobalKey<FormState>();
   final _depositAmountFocus = FocusNode();
+  final _depositAddressFocus = FocusNode();
   final _receiveAmountFocus = FocusNode();
+  final _receiveAddressFocus = FocusNode();
   var _isReactionsSet = false;
 
   @override
@@ -171,6 +172,7 @@ class ExchangePage extends BasePage {
                                     .calculateDepositAllAmount()
                                     : null,
                                 amountFocusNode: _depositAmountFocus,
+                                addressFocusNode: _depositAddressFocus,
                                 key: depositKey,
                                 title: S.of(context).you_will_send,
                                 initialCurrency:
@@ -223,6 +225,15 @@ class ExchangePage extends BasePage {
                                     type: exchangeViewModel.wallet.type),
                                 addressTextFieldValidator: AddressValidator(
                                     type: exchangeViewModel.depositCurrency),
+                                onPushPasteButton: (context) async {
+                                  final domain =
+                                      exchangeViewModel.depositAddress;
+                                  final ticker = exchangeViewModel
+                                      .depositCurrency.title.toLowerCase();
+                                  exchangeViewModel.depositAddress =
+                                    await applyOpenaliasOrUnstoppableDomains(
+                                        context, domain, ticker);
+                                },
                               ),
                             ),
                           ),
@@ -232,6 +243,7 @@ class ExchangePage extends BasePage {
                             child: Observer(
                                 builder: (_) => ExchangeCard(
                                   amountFocusNode: _receiveAmountFocus,
+                                  addressFocusNode: _receiveAddressFocus,
                                   key: receiveKey,
                                   title: S.of(context).you_will_get,
                                   initialCurrency:
@@ -268,6 +280,15 @@ class ExchangePage extends BasePage {
                                   AddressValidator(
                                       type: exchangeViewModel
                                           .receiveCurrency),
+                                  onPushPasteButton: (context) async {
+                                    final domain =
+                                        exchangeViewModel.receiveAddress;
+                                    final ticker = exchangeViewModel
+                                        .receiveCurrency.title.toLowerCase();
+                                    exchangeViewModel.receiveAddress =
+                                      await applyOpenaliasOrUnstoppableDomains(
+                                          context, domain, ticker);
+                                  },
                                 )),
                           )
                         ],
@@ -371,7 +392,7 @@ class ExchangePage extends BasePage {
                                           from: template.depositCurrency,
                                           to: template.receiveCurrency,
                                           onTap: () {
-                                            applyTemplate(
+                                            applyTemplate(context,
                                                 exchangeViewModel, template);
                                           },
                                           onRemove: () {
@@ -472,8 +493,8 @@ class ExchangePage extends BasePage {
         ));
   }
 
-  void applyTemplate(
-      ExchangeViewModel exchangeViewModel, ExchangeTemplate template) {
+  void applyTemplate(BuildContext context,
+      ExchangeViewModel exchangeViewModel, ExchangeTemplate template) async {
     exchangeViewModel.changeDepositCurrency(
         currency: CryptoCurrency.fromString(template.depositCurrency));
     exchangeViewModel.changeReceiveCurrency(
@@ -491,6 +512,16 @@ class ExchangePage extends BasePage {
     exchangeViewModel.receiveAddress = template.receiveAddress;
     exchangeViewModel.isReceiveAmountEntered = false;
     exchangeViewModel.isFixedRateMode = false;
+
+    var domain = template.depositAddress;
+    var ticker = template.depositCurrency.toLowerCase();
+    exchangeViewModel.depositAddress =
+      await applyOpenaliasOrUnstoppableDomains(context, domain, ticker);
+
+    domain = template.receiveAddress;
+    ticker = template.receiveCurrency.toLowerCase();
+    exchangeViewModel.receiveAddress =
+      await applyOpenaliasOrUnstoppableDomains(context, domain, ticker);
   }
 
   void _setReactions(
@@ -657,6 +688,26 @@ class ExchangePage extends BasePage {
       }
     });
 
+    _depositAddressFocus.addListener(() async {
+      if (!_depositAddressFocus.hasFocus &&
+          depositAddressController.text.isNotEmpty) {
+        final domain = depositAddressController.text;
+        final ticker = exchangeViewModel.depositCurrency.title.toLowerCase();
+        exchangeViewModel.depositAddress =
+          await applyOpenaliasOrUnstoppableDomains(context, domain, ticker);
+      }
+    });
+
+    _receiveAddressFocus.addListener(() async {
+      if (!_receiveAddressFocus.hasFocus &&
+          receiveAddressController.text.isNotEmpty) {
+        final domain = receiveAddressController.text;
+        final ticker = exchangeViewModel.receiveCurrency.title.toLowerCase();
+        exchangeViewModel.receiveAddress =
+          await applyOpenaliasOrUnstoppableDomains(context, domain, ticker);
+      }
+    });
+
     _receiveAmountFocus.addListener(() {
       if (_receiveAmountFocus.hasFocus && !exchangeViewModel.isFixedRateMode) {
         showPopUp<void>(
@@ -728,4 +779,28 @@ class ExchangePage extends BasePage {
       key.currentState.addressController.text = null;
     }
   }
+
+  Future<String> applyOpenaliasOrUnstoppableDomains(
+      BuildContext context, String domain, String ticker) async {
+    final parsedAddress = await parseAddressFromDomain(domain, ticker);
+
+    switch (parsedAddress.parseFrom) {
+      case ParseFrom.unstoppableDomains:
+        showAddressAlert(
+            context,
+            S.of(context).address_detected,
+            S.of(context).address_from_domain(parsedAddress.name));
+        break;
+      case ParseFrom.openAlias:
+        showAddressAlert(
+            context,
+            S.of(context).openalias_alert_title,
+            S.of(context).openalias_alert_content(parsedAddress.name));
+        break;
+      case ParseFrom.notParsed:
+        break;
+    }
+
+    return parsedAddress.address;
+  }
 }
diff --git a/lib/src/screens/exchange/exchange_template_page.dart b/lib/src/screens/exchange/exchange_template_page.dart
index c978a535f..fb90f5966 100644
--- a/lib/src/screens/exchange/exchange_template_page.dart
+++ b/lib/src/screens/exchange/exchange_template_page.dart
@@ -150,9 +150,8 @@ class ExchangeTemplatePage extends BasePage {
                               .color,
                           currencyValueValidator: AmountValidator(
                               type: exchangeViewModel.wallet.type),
-                          addressTextFieldValidator: AddressValidator(
-                              type:
-                              exchangeViewModel.depositCurrency),
+                          //addressTextFieldValidator: AddressValidator(
+                          //    type: exchangeViewModel.depositCurrency),
                         ),
                       ),
                     ),
@@ -190,8 +189,8 @@ class ExchangeTemplatePage extends BasePage {
                                 .decorationColor,
                             currencyValueValidator: AmountValidator(
                                 type: exchangeViewModel.wallet.type),
-                            addressTextFieldValidator: AddressValidator(
-                                type: exchangeViewModel.receiveCurrency),
+                            //addressTextFieldValidator: AddressValidator(
+                            //    type: exchangeViewModel.receiveCurrency),
                           )),
                     )
                   ],
diff --git a/lib/src/screens/exchange/widgets/exchange_card.dart b/lib/src/screens/exchange/widgets/exchange_card.dart
index 7af57e28b..f534cccad 100644
--- a/lib/src/screens/exchange/widgets/exchange_card.dart
+++ b/lib/src/screens/exchange/widgets/exchange_card.dart
@@ -28,8 +28,10 @@ class ExchangeCard extends StatefulWidget {
       this.currencyValueValidator,
       this.addressTextFieldValidator,
       this.amountFocusNode,
+      this.addressFocusNode,
       this.hasAllAmount = false,
-      this.allAmount})
+      this.allAmount,
+      this.onPushPasteButton})
       : super(key: key);
 
   final List<CryptoCurrency> currencies;
@@ -49,8 +51,10 @@ class ExchangeCard extends StatefulWidget {
   final FormFieldValidator<String> currencyValueValidator;
   final FormFieldValidator<String> addressTextFieldValidator;
   final FocusNode amountFocusNode;
+  final FocusNode addressFocusNode;
   final bool hasAllAmount;
-  Function allAmount;
+  final Function allAmount;
+  final Function(BuildContext context) onPushPasteButton;
 
   @override
   ExchangeCardState createState() => ExchangeCardState();
@@ -288,6 +292,7 @@ class ExchangeCardState extends State<ExchangeCard> {
             ? Padding(
                 padding: EdgeInsets.only(top: 20),
                 child: AddressTextField(
+                  focusNode: widget.addressFocusNode,
                   controller: addressController,
                   placeholder: widget.hasRefundAddress
                       ? S.of(context).refund_address
@@ -311,6 +316,7 @@ class ExchangeCardState extends State<ExchangeCard> {
                           .decorationColor),
                   buttonColor: widget.addressButtonsColor,
                   validator: widget.addressTextFieldValidator,
+                  onPushPasteButton: widget.onPushPasteButton,
                 ),
               )
             : Padding(
diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart
index eb4153676..aae86483c 100644
--- a/lib/src/screens/send/send_page.dart
+++ b/lib/src/screens/send/send_page.dart
@@ -1,6 +1,8 @@
 import 'dart:ui';
-import 'package:cake_wallet/entities/monero_transaction_priority.dart';
+import 'package:cake_wallet/entities/parsed_address.dart';
 import 'package:cake_wallet/entities/transaction_priority.dart';
+import 'package:cake_wallet/entities/parse_address_from_domain.dart';
+import 'package:cake_wallet/src/screens/send/widgets/parse_address_from_domain_alert.dart';
 import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
 import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
 import 'package:cake_wallet/src/widgets/picker.dart';
@@ -40,7 +42,7 @@ class SendPage extends BasePage {
         _addressFocusNode = FocusNode() {
     _addressFocusNode.addListener(() {
       if (!_addressFocusNode.hasFocus && _addressController.text.isNotEmpty) {
-        getOpenaliasRecord(_addressFocusNode.context);
+        applyOpenaliasOrUnstoppableDomains(_addressFocusNode.context);
       }
     });
   }
@@ -173,6 +175,9 @@ class SendPage extends BasePage {
                                         .headline
                                         .decorationColor),
                                 validator: sendViewModel.addressValidator,
+                                onPushPasteButton: (context) {
+                                  applyOpenaliasOrUnstoppableDomains(context);
+                                },
                               ),
                               Observer(
                                   builder: (_) => Padding(
@@ -518,7 +523,7 @@ class SendPage extends BasePage {
                                           template.address;
                                       _cryptoAmountController.text =
                                           template.amount;
-                                      getOpenaliasRecord(context);
+                                      applyOpenaliasOrUnstoppableDomains(context);
                                     },
                                     onRemove: () {
                                       showPopUp<void>(
@@ -733,26 +738,6 @@ class SendPage extends BasePage {
     _effectsInstalled = true;
   }
 
-  Future<void> getOpenaliasRecord(BuildContext context) async {
-    final record =
-        await sendViewModel.decodeOpenaliasRecord(_addressController.text);
-
-    if (record != null) {
-      _addressController.text = record.address;
-
-      await showPopUp<void>(
-          context: context,
-          builder: (BuildContext context) {
-            return AlertWithOneAction(
-                alertTitle: S.of(context).openalias_alert_title,
-                alertContent:
-                    S.of(context).openalias_alert_content(record.name),
-                buttonText: S.of(context).ok,
-                buttonAction: () => Navigator.of(context).pop());
-          });
-    }
-  }
-
   Future<void> _setTransactionPriority(BuildContext context) async {
     final items = priorityForWalletType(sendViewModel.walletType);
     final selectedItem = items.indexOf(sendViewModel.transactionPriority);
@@ -770,4 +755,28 @@ class SendPage extends BasePage {
             ),
         context: context);
   }
+
+  void applyOpenaliasOrUnstoppableDomains(BuildContext context) async {
+    final domain = _addressController.text;
+    final ticker = sendViewModel.currency.title.toLowerCase();
+    final parsedAddress = await parseAddressFromDomain(domain, ticker);
+    _addressController.text = parsedAddress.address;
+
+    switch (parsedAddress.parseFrom) {
+      case ParseFrom.unstoppableDomains:
+        showAddressAlert(
+            context,
+            S.of(context).address_detected,
+            S.of(context).address_from_domain(parsedAddress.name));
+        break;
+      case ParseFrom.openAlias:
+        showAddressAlert(
+            context,
+            S.of(context).openalias_alert_title,
+            S.of(context).openalias_alert_content(parsedAddress.name));
+        break;
+      case ParseFrom.notParsed:
+        break;
+    }
+  }
 }
diff --git a/lib/src/screens/send/send_template_page.dart b/lib/src/screens/send/send_template_page.dart
index c71b60803..3880bd2fb 100644
--- a/lib/src/screens/send/send_template_page.dart
+++ b/lib/src/screens/send/send_template_page.dart
@@ -145,7 +145,7 @@ class SendTemplatePage extends BasePage {
                                     .primaryTextTheme
                                     .headline
                                     .decorationColor),
-                            validator: sendViewModel.addressValidator,
+                            //validator: sendViewModel.addressValidator,
                           ),
                         ),
                         Observer(builder: (_) {
diff --git a/lib/src/screens/send/widgets/parse_address_from_domain_alert.dart b/lib/src/screens/send/widgets/parse_address_from_domain_alert.dart
new file mode 100644
index 000000000..760091611
--- /dev/null
+++ b/lib/src/screens/send/widgets/parse_address_from_domain_alert.dart
@@ -0,0 +1,17 @@
+import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
+import 'package:cake_wallet/utils/show_pop_up.dart';
+import 'package:flutter/material.dart';
+import 'package:cake_wallet/generated/i18n.dart';
+
+void showAddressAlert(BuildContext context, String title, String content) async {
+  await showPopUp<void>(
+      context: context,
+      builder: (BuildContext context) {
+
+        return AlertWithOneAction(
+            alertTitle: title,
+            alertContent: content,
+            buttonText: S.of(context).ok,
+            buttonAction: () => Navigator.of(context).pop());
+      });
+}
\ No newline at end of file
diff --git a/lib/src/widgets/address_text_field.dart b/lib/src/widgets/address_text_field.dart
index 8e2c069f1..130912a2f 100644
--- a/lib/src/widgets/address_text_field.dart
+++ b/lib/src/widgets/address_text_field.dart
@@ -24,7 +24,8 @@ class AddressTextField extends StatelessWidget {
       this.iconColor,
       this.textStyle,
       this.hintStyle,
-      this.validator});
+      this.validator,
+      this.onPushPasteButton});
 
   static const prefixIconWidth = 34.0;
   static const prefixIconHeight = 34.0;
@@ -43,6 +44,7 @@ class AddressTextField extends StatelessWidget {
   final TextStyle textStyle;
   final TextStyle hintStyle;
   final FocusNode focusNode;
+  final Function(BuildContext context) onPushPasteButton;
 
   @override
   Widget build(BuildContext context) {
@@ -225,5 +227,7 @@ class AddressTextField extends StatelessWidget {
     if (address?.isNotEmpty ?? false) {
       controller.text = address;
     }
+
+    onPushPasteButton?.call(context);
   }
 }
diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart
index 689032223..3fdcbc526 100644
--- a/lib/view_model/send/send_view_model.dart
+++ b/lib/view_model/send/send_view_model.dart
@@ -1,7 +1,6 @@
 import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart';
 import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart';
 import 'package:cake_wallet/bitcoin/electrum_wallet.dart';
-import 'package:cake_wallet/entities/balance_display_mode.dart';
 import 'package:cake_wallet/entities/calculate_fiat_amount_raw.dart';
 import 'package:cake_wallet/entities/transaction_description.dart';
 import 'package:cake_wallet/entities/transaction_priority.dart';
@@ -10,7 +9,6 @@ import 'package:cake_wallet/view_model/settings/settings_view_model.dart';
 import 'package:hive/hive.dart';
 import 'package:intl/intl.dart';
 import 'package:mobx/mobx.dart';
-import 'package:cake_wallet/entities/openalias_record.dart';
 import 'package:cake_wallet/entities/template.dart';
 import 'package:cake_wallet/store/templates/send_template_store.dart';
 import 'package:cake_wallet/core/template_validator.dart';
@@ -20,7 +18,6 @@ import 'package:cake_wallet/core/pending_transaction.dart';
 import 'package:cake_wallet/core/validator.dart';
 import 'package:cake_wallet/core/wallet_base.dart';
 import 'package:cake_wallet/core/execution_state.dart';
-import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart';
 import 'package:cake_wallet/bitcoin/bitcoin_transaction_credentials.dart';
 import 'package:cake_wallet/monero/monero_wallet.dart';
 import 'package:cake_wallet/monero/monero_transaction_creation_credentials.dart';
@@ -264,13 +261,6 @@ abstract class SendViewModelBase with Store {
   void setTransactionPriority(TransactionPriority priority) =>
       _settingsStore.priority[_wallet.type] = priority;
 
-  Future<OpenaliasRecord> decodeOpenaliasRecord(String name) async {
-    final record = await OpenaliasRecord.fetchAddressAndName(
-        OpenaliasRecord.formatDomainName(name));
-
-    return record.name != name ? record : null;
-  }
-
   @action
   void _updateFiatAmount() {
     try {
diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb
index e2d835f70..b2d0b807a 100644
--- a/res/values/strings_de.arb
+++ b/res/values/strings_de.arb
@@ -481,7 +481,10 @@
   "buy_bitcoin" : "Bitcoin kaufen",
   "buy_with" : "Kaufen mit",
   "moonpay_alert_text" : "Der Wert des Betrags muss größer oder gleich ${minAmount} ${fiatCurrency} sein",
-  
+
   "outdated_electrum_wallet_receive_warning": "Wenn diese Brieftasche einen 12-Wort-Seed hat und in Cake erstellt wurde, zahlen Sie KEINE Bitcoins in diese Brieftasche ein. Alle auf diese Wallet übertragenen BTC können verloren gehen. Erstellen Sie eine neue 24-Wort-Wallet (tippen Sie auf das Menü oben rechts, wählen Sie Wallets, wählen Sie Neue Wallet erstellen und dann Bitcoin) und verschieben Sie Ihre BTC SOFORT dorthin. Neue (24-Wort-)BTC-Wallets von Cake sind sicher",
-  "do_not_show_me": "Zeig mir das nicht noch einmal"
+  "do_not_show_me": "Zeig mir das nicht noch einmal",
+
+  "address_detected" : "Adresse erkannt",
+  "address_from_domain" : "Sie haben die Adresse von der unaufhaltsamen Domain ${domain} erhalten"
 }
diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb
index adb82ecb2..922e00f6a 100644
--- a/res/values/strings_en.arb
+++ b/res/values/strings_en.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Value of the amount must be more or equal to ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "If this wallet has a 12-word seed and was created in Cake, DO NOT deposit Bitcoin into this wallet. Any BTC transferred to this wallet may be lost. Create a new 24-word wallet (tap the menu at the top right, select Wallets, choose Create New Wallet, then select Bitcoin) and IMMEDIATELY move your BTC there. New (24-word) BTC wallets from Cake are secure",
-  "do_not_show_me": "Do not show me this again"
+  "do_not_show_me": "Do not show me this again",
+
+  "address_detected" : "Address detected",
+  "address_from_domain" : "You got address from unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb
index e54a997a4..a1abff41f 100644
--- a/res/values/strings_es.arb
+++ b/res/values/strings_es.arb
@@ -472,7 +472,7 @@
   "submit_request" : "presentar una solicitud",
 
   "buy_alert_content" : "Actualmente solo apoyamos la compra de Bitcoin y Litecoin. Para comprar Bitcoin o Litecoin, cree o cambie a su billetera Bitcoin o Litecoin.",
-  
+
   "outdated_electrum_wallet_description" : "Las nuevas carteras de Bitcoin creadas en Cake ahora tienen una semilla de 24 palabras. Es obligatorio que cree una nueva billetera de Bitcoin y transfiera todos sus fondos a la nueva billetera de 24 palabras, y deje de usar billeteras con una semilla de 12 palabras. Haga esto de inmediato para asegurar sus fondos.",
   "understand" : "Entiendo",
 
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "El valor de la cantidad debe ser mayor o igual a ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Si esta billetera tiene una semilla de 12 palabras y se creó en Cake, NO deposite Bitcoin en esta billetera. Cualquier BTC transferido a esta billetera se puede perder. Cree una nueva billetera de 24 palabras (toque el menú en la parte superior derecha, seleccione Monederos, elija Crear nueva billetera, luego seleccione Bitcoin) e INMEDIATAMENTE mueva su BTC allí. Las nuevas carteras BTC (24 palabras) de Cake son seguras",
-  "do_not_show_me": "no me muestres esto otra vez"
+  "do_not_show_me": "no me muestres esto otra vez",
+
+  "address_detected" : "Dirección detectada",
+  "address_from_domain" : "Tienes la dirección de unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb
index 7ef15cc8e..3fda80af5 100644
--- a/res/values/strings_hi.arb
+++ b/res/values/strings_hi.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "राशि का मूल्य अधिक है या करने के लिए बराबर होना चाहिए ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "अगर इस वॉलेट में 12 शब्दों का बीज है और इसे केक में बनाया गया है, तो इस वॉलेट में बिटकॉइन जमा न करें। इस वॉलेट में स्थानांतरित किया गया कोई भी बीटीसी खो सकता है। एक नया 24-शब्द वॉलेट बनाएं (ऊपर दाईं ओर स्थित मेनू पर टैप करें, वॉलेट चुनें, नया वॉलेट बनाएं चुनें, फिर बिटकॉइन चुनें) और तुरंत अपना बीटीसी वहां ले जाएं। केक से नए (24-शब्द) बीटीसी वॉलेट सुरक्षित हैं",
-  "do_not_show_me": "मुझे यह फिर न दिखाएं"
+  "do_not_show_me": "मुझे यह फिर न दिखाएं",
+
+  "address_detected" : "पता लग गया",
+  "address_from_domain" : "आपको अजेय डोमेन ${domain} से पता मिला है"
 }
\ No newline at end of file
diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb
index 100311903..b9cb2cc19 100644
--- a/res/values/strings_hr.arb
+++ b/res/values/strings_hr.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Vrijednost iznosa mora biti veća ili jednaka ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Ako ovaj novčanik sadrži sjeme od 12 riječi i stvoren je u Torti, NEMOJTE polagati Bitcoin u ovaj novčanik. Bilo koji BTC prebačen u ovaj novčanik može se izgubiti. Stvorite novi novčanik od 24 riječi (taknite izbornik u gornjem desnom dijelu, odaberite Novčanici, odaberite Stvori novi novčanik, a zatim odaberite Bitcoin) i ODMAH premjestite svoj BTC tamo. Novi BTC novčanici (s 24 riječi) tvrtke Cake sigurni su",
-  "do_not_show_me": "Ne pokazuj mi ovo više"
+  "do_not_show_me": "Ne pokazuj mi ovo više",
+
+  "address_detected" : "Adresa je otkrivena",
+  "address_from_domain" : "Dobili ste adresu od unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb
index 2ce76646e..50386e901 100644
--- a/res/values/strings_it.arb
+++ b/res/values/strings_it.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Il valore dell'importo deve essere maggiore o uguale a ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Se questo portafoglio ha un seme di 12 parole ed è stato creato in Cake, NON depositare Bitcoin in questo portafoglio. Qualsiasi BTC trasferito su questo portafoglio potrebbe andare perso. Crea un nuovo portafoglio di 24 parole (tocca il menu in alto a destra, seleziona Portafogli, scegli Crea nuovo portafoglio, quindi seleziona Bitcoin) e sposta IMMEDIATAMENTE lì il tuo BTC. I nuovi portafogli BTC (24 parole) di Cake sono sicuri",
-  "do_not_show_me": "Non mostrarmelo di nuovo"
+  "do_not_show_me": "Non mostrarmelo di nuovo",
+
+  "address_detected" : "Indirizzo rilevato",
+  "address_from_domain" : "Hai l'indirizzo da unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb
index 0702398a7..bda73c110 100644
--- a/res/values/strings_ja.arb
+++ b/res/values/strings_ja.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "金額の値は以上でなければなりません ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "このウォレットに 12 ワードのシードがあり、Cake で作成された場合、このウォレットにビットコインを入金しないでください。 このウォレットに転送された BTC は失われる可能性があります。 新しい 24 ワードのウォレットを作成し (右上のメニューをタップし、[ウォレット]、[新しいウォレットの作成]、[ビットコイン] の順に選択)、すぐに BTC をそこに移動します。 Cake の新しい (24 ワード) BTC ウォレットは安全です",
-  "do_not_show_me": "また僕にこれを見せないでください"
+  "do_not_show_me": "また僕にこれを見せないでください",
+
+  "address_detected" : "アドレスが検出されました",
+  "address_from_domain" : "あなたはからアドレスを得ました unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb
index 0659b7fbc..6c38b569d 100644
--- a/res/values/strings_ko.arb
+++ b/res/values/strings_ko.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "금액은 다음보다 크거나 같아야합니다 ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "이 지갑에 12 단어 시드가 있고 Cake에서 생성 된 경우이 지갑에 비트 코인을 입금하지 마십시오. 이 지갑으로 전송 된 모든 BTC는 손실 될 수 있습니다. 새로운 24 단어 지갑을 생성하고 (오른쪽 상단의 메뉴를 탭하고 지갑을 선택한 다음 새 지갑 생성을 선택한 다음 비트 코인을 선택하십시오) 즉시 BTC를 그곳으로 이동하십시오. Cake의 새로운 (24 단어) BTC 지갑은 안전합니다",
-  "do_not_show_me": "나를 다시 표시하지 않음"
+  "do_not_show_me": "나를 다시 표시하지 않음",
+
+  "address_detected" : "주소 감지",
+  "address_from_domain" : "주소는 unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb
index 2e6459d25..045540fdb 100644
--- a/res/values/strings_nl.arb
+++ b/res/values/strings_nl.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Waarde van het bedrag moet meer of gelijk zijn aan ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Als deze portemonnee een seed van 12 woorden heeft en is gemaakt in Cake, stort dan GEEN Bitcoin in deze portemonnee. Elke BTC die naar deze portemonnee is overgebracht, kan verloren gaan. Maak een nieuwe portemonnee van 24 woorden (tik op het menu rechtsboven, selecteer Portefeuilles, kies Nieuwe portemonnee maken en selecteer vervolgens Bitcoin) en verplaats je BTC ONMIDDELLIJK daar. Nieuwe (24-woorden) BTC-portefeuilles van Cake zijn veilig",
-  "do_not_show_me": "laat me dit niet opnieuw zien"
+  "do_not_show_me": "laat me dit niet opnieuw zien",
+
+  "address_detected" : "Adres gedetecteerd",
+  "address_from_domain" : "Je adres is van unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb
index e28bad8dc..3119e241a 100644
--- a/res/values/strings_pl.arb
+++ b/res/values/strings_pl.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Wartość kwoty musi być większa lub równa ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Jeśli ten portfel ma 12-wyrazowy seed i został utworzony w Cake, NIE Wpłacaj Bitcoina do tego portfela. Wszelkie BTC przeniesione do tego portfela mogą zostać utracone. Utwórz nowy portfel z 24 słowami (dotknij menu w prawym górnym rogu, wybierz Portfele, wybierz Utwórz nowy portfel, a następnie Bitcoin) i NATYCHMIAST przenieś tam swoje BTC. Nowe (24 słowa) portfele BTC firmy Cake są bezpieczne",
-  "do_not_show_me": "Nie pokazuj mi tego ponownie"
+  "do_not_show_me": "Nie pokazuj mi tego ponownie",
+
+  "address_detected" : "Wykryto adres",
+  "address_from_domain" : "Dostałeś adres od unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb
index 872a102e4..3123a953a 100644
--- a/res/values/strings_pt.arb
+++ b/res/values/strings_pt.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "O valor do montante deve ser maior ou igual a ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Se esta carteira tiver uma semente de 12 palavras e foi criada no Cake, NÃO deposite Bitcoin nesta carteira. Qualquer BTC transferido para esta carteira pode ser perdido. Crie uma nova carteira de 24 palavras (toque no menu no canto superior direito, selecione Carteiras, escolha Criar Nova Carteira e selecione Bitcoin) e mova IMEDIATAMENTE seu BTC para lá. As novas carteiras BTC (24 palavras) da Cake são seguras",
-  "do_not_show_me": "não me mostre isso novamente"
+  "do_not_show_me": "não me mostre isso novamente",
+
+  "address_detected" : "Endereço detectado",
+  "address_from_domain" : "Você obteve o endereço de unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb
index 1828c36c3..1c827f019 100644
--- a/res/values/strings_ru.arb
+++ b/res/values/strings_ru.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Сумма должна быть больше или равна ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Если этот кошелек имеет мнемоническую фразу из 12 слов и был создан в Cake, НЕ переводите биткойны на этот кошелек. Любые BTC, переведенные на этот кошелек, могут быть потеряны. Создайте новый кошелек с мнемоническои фразы из 24 слов (коснитесь меню в правом верхнем углу, выберите «Кошельки», выберите «Создать новый кошелек», затем выберите «Bitcoin») и НЕМЕДЛЕННО переведите туда свои BTC. Новые (24 слова) кошельки BTC от Cake безопасны",
-  "do_not_show_me": "Не показывай мне это больше"
+  "do_not_show_me": "Не показывай мне это больше",
+
+  "address_detected" : "Обнаружен адрес",
+  "address_from_domain" : "Вы получили адрес из unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb
index 2becc69ab..7cca940d5 100644
--- a/res/values/strings_uk.arb
+++ b/res/values/strings_uk.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "Значення суми має бути більшим або дорівнювати ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "Якщо цей гаманець має мнемонічну фразу з 12 слів і був створений у Cake, НЕ переводьте біткойни на цей гаманець. Будь-які BTC, переведений на цей гаманець, можуть бути втраченими. Створіть новий гаманець з мнемонічною фразою з 24 слів (торкніться меню у верхньому правому куті, виберіть Гаманці, виберіть Створити новий гаманець, потім виберіть Bitcoin) і НЕГАЙНО переведіть туди свії BTC. Нові (з мнемонічною фразою з 24 слів) гаманці BTC від Cake надійно захищені",
-  "do_not_show_me": "Не показуй мені це знову"
+  "do_not_show_me": "Не показуй мені це знову",
+
+  "address_detected" : "Виявлено адресу",
+  "address_from_domain" : "Ви отримали адресу від unstoppable domain ${domain}"
 }
\ No newline at end of file
diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb
index af19ca386..d7867ca4f 100644
--- a/res/values/strings_zh.arb
+++ b/res/values/strings_zh.arb
@@ -483,5 +483,8 @@
   "moonpay_alert_text" : "金额的价值必须大于或等于 ${minAmount} ${fiatCurrency}",
 
   "outdated_electrum_wallet_receive_warning": "如果这个钱包有一个 12 字的种子并且是在 Cake 中创建的,不要将比特币存入这个钱包。 任何转移到此钱包的 BTC 都可能丢失。 创建一个新的 24 字钱包(点击右上角的菜单,选择钱包,选择创建新钱包,然后选择比特币)并立即将您的 BTC 移到那里。 Cake 的新(24 字)BTC 钱包是安全的",
-  "do_not_show_me": "不再提示"
+  "do_not_show_me": "不再提示",
+
+  "address_detected" : "檢測到地址",
+  "address_from_domain" : "您有以下地址 unstoppable domain ${domain}"
 }
\ No newline at end of file