# Vortex

## Problem

To accept crypto payments, crypto exchanges and other crypto-friendly services usually allocate a unique proxy wallet (aka deposit address) for each end-user. Due to architecture of EVM blockchains, all assets deposited by end-users into proxy wallets must be forwarded to the Omnibus wallet for further management.

Although exchanges do not charge end-users any fees for incoming payments, exchanges and any other custodial service incur a base cost to transfer assets to the Omnibus (Hot Wallet), accepting crypto payments.

The well-established implementations of crypto processing typically costs between **63,000** to **120,000** Gas for each incoming token payment.

{% hint style="warning" %}
Gas usage is just one of the issues with this commonly used approach.&#x20;

Managing residue on proxy wallets, maintaining infrastructure, estimating gas costs, implementing custom refund rules, supporting new tokens and asset standards, and many other challenges require businesses to either develop complex in-house infrastructure or incur high fees for third-party services to make it work.
{% endhint %}

## Solution overview

We started Curra with an idea of creating solution to accept crypto payments without intermediaries, thus we pioneered new approach to make in non-custodial.

Through smart contracts within the Vortex, we guarantee that all the proxy wallets and assets on them belongs solely to you with no intermediaries involved.

To achieve this we created architecture that consist of:

* [Ownership NFT](/curra-documentation/vortex/ownership-nft.md)
* [Rules smart contract](/curra-documentation/vortex/rules.md)
* [Gas Pump](/curra-documentation/vortex/gas-pump.md)

### Efficient Gas consumption

Along with non-custodial nature of Vortex, this architecture allowed us to create the most gas-efficient solution on the market.

{% hint style="success" %}
Solidity Assembly, bundled transactions, and contract factories at Vortex provides up to **75000 Gas** savings on each incoming transaction.&#x20;

Which saves **\~$63,300** in equivalent of ETH for each 10,000 incoming payments.

[Detailed overview ->](/curra-documentation/vortex/gas-pump.md)

[Video overview ->](https://youtube.com)
{% endhint %}

With Vortex we offer a cost-effective, non-custodial, and flexible solution to manage incoming payments and proxy wallets.

| Service    | Gas Usage                                                      | Cost of incoming payment                                |
| ---------- | -------------------------------------------------------------- | ------------------------------------------------------- |
| **Curra**  | <mark style="color:green;">**\~ 11,000 Gas**</mark> :thumbsup: | <mark style="color:green;">**$ 0.95**</mark> :thumbsup: |
| Binance    | \~ 63,000 Gas                                                  | $ 5.46                                                  |
| Fireblocks | \~86,000 Gas                                                   | $ 7.28                                                  |
| Bitgo      | \~120,000 Gas                                                  | $ 10.40                                                 |

Calculations made with ETH Price of **$ 2160.00** and Gas Price of **32 Gwei** and [bundle size](/curra-documentation/vortex/gas-pump.md#enable-bundles) of 20 transactions from activated wallets.

## Security

{% hint style="info" %}
**TL;DR** You deploy `Rule.sol` smart contract, which consist of set of rules, that allows Curra to make few actions with your proxy wallets:

* Deploy Forwarder implementation to your proxy wallets
* Transfer assets only to your whitelisted wallets, specified at `Rule.sol`.
  {% endhint %}

Every transaction that violates `Rule.sol` will simply be **rejected** by blockchain, that is your main security layer.

It makes Vortex - the **first-ever payment processing tool that doesn't require direct access to your assets** for processing.

1. You mint [Ownership NFT](/curra-documentation/vortex/ownership-nft.md), which is used as a key to deploy `Rule.sol`.
2. You deploy `Rule.sol` smart contract with whitelisted destinations (your Omnibus wallets), allowing Curra to deploy specific contracts (Forwarder) and transfer assets solely to your whitelisted addresses.
3. You precalculate address of the proxy wallets with Curra derivation scheme, using CREATE2 algorithm.
4. Curra makes everything work.

**You can find detailed explanation here:**

{% content-ref url="/pages/KA6DJV1IPmfzYwshFHuF" %}
[Ownership NFT](/curra-documentation/vortex/ownership-nft.md)
{% endcontent-ref %}

{% content-ref url="/pages/GRolTxRRZpRQqv09ybfE" %}
[Rules](/curra-documentation/vortex/rules.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.curra.io/curra-documentation/vortex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
