NEAR-Ethereum Bridge Tests

(14 nL)
18 min read
To Share and +4 nLEARNs

Test #1. Transfer from NEAR to Ethereum by Fast Rainbow.

First, needs to say that currently the fast bridge support only 3 tokens, USDC, WBTC and Aurora, in compare with the old regular Rainbow bridge, which supports 30+ tokens including ETH &NEAR ERC20. But let’s hope that is because of the early beginning stage and they will add more tokens soon. However, the info about what tokens available for fast bringing is missing at the front page of Rainbow App, there is only a link to a blog’s article and in the middle of it’s long text you may find it. This is not so convenient for a user, a trader for instance – he comes to make a fast swap, not to browse long articles, so he needs brief full info in front of eyes, not on other 3rd site’s pages. Of course, this is not a big problem. Please, consider this notice just like a wish for future UI improvements.

So, I have selected USDC token for this test as the most popular among those 3 available, then have exchanged previously some NEAR to USDC.e at Reffinance. This calculation appeared after i connected wallets, selected tokens&chains and typed a wished amount at previous tabs:

Here I like that the cost of Fast transfer is more predictable in comparison with the old Regular transfer, which is fully depends on the gas price in Ethereum and nobody knows how much it becomes after 4-8 hours. For the Fast option the bridge’s fee always calculates as $20 basic + 0.1% of amount.

But I would like to point out that in general a such fee remains too high for small amounts. On my mind, a total fee should not exceed 1%-2% of the amount, so Fast Rainbow could be affordable for swaps $1000 and higher, but smaller users should look for other solutions of exchange. Of course, this is just my opinion, everyone decides by himself.

After pressing ‘confirm’ button below the tab on pic. above and approval transaction by NEAR wallet, i received USDC ERC20 to my Ethereum address in ~1 minute. It is Fast indeed!

Notice that the fee has been paid by currency I swap from, i.e. USDC.e NEAR. It doesn’t need to have some ETH for gas, and this is a big plus for those who have only NEAR and tokens in NEAR chain but has no ETH yet.

* Approval transaction in NEAR chain also consumes some gas, as well as transaction of exchange NEAR-to- USDC.e at Reffinance. But those fees on NEAR side are too small in compare with bridge’s fee, it is less 0.005 NEAR( <$0.01) each. So, here and below I don’t count those gas fees on NEAR side.

Some suggestions how the bridge’s UI could be improved:

1. Now there is only the ‘continue’ button to navigate across these tabs, from the start to the final calculation. It would be nice to have ‘back’ button also, in order to return back 1 step only(if i need just to edit amount for instance) instead of to return to the start and begin all again – select tokens, type amounts, etc. as it’s now.

2. Now I can select a token & get this estimated calculation only if I already have that tokens at the balance of my wallet. It means first i need to buy some tokens somewhere (at Reffinance for example) and only then i would be able to see how much it will cost to swap it at the bridge. But if the bridge fee(or processing time ) would not satisfy me, that means i have exchanged these tokens (NEAR to USDC.e for instance) just for nothing, just wasted some time and a small NEAR for gas. So, it would be nice to allow to select&get calculation for any available at bridge token, doesn’t depend on if I have it at my wallet or have no yet. It’s easy, just don’t allow to confirm the transaction at the last step if the wallet’s balance is less than the amount typed in the form, instead of don’t allow to select&calculate at all.

And, I would like to notice a good level of Rainbow’s support and say thanks to them. They answer quickly in TG group, explain in detail all I might ask. This is a very positive factor for this project, i think so.

Test #2. Transfer from NEAR to Ethereum by ZK bridge ElectronLabs.

Frankly, I’m not sure if regular mass users, such as traders, or gamers, etc., really need ZK proofs for all their daily transactions. But ok, everyone can decide for himself.

Let’s go to simple matters, but those are more interesting for everybody: costs, fees, processing time, etc.

Currently ZK bridge has only one token available, USDC.e, there is nothing else to choose.

But they just started on the mainnet a few days ago, even the protocol didn’t pass audit yet.

So, let’s hope they improve the list of available tokens in future.

The swap from Near to Ethereum is going in 2 steps.

First you swap a regular USDC.e token to zkUSDC.e . This is their own service token, there is a liquidity pool USDC.e /zkUSDC.e and the rate is always 1:1.

This transaction is going in NEAR chain, after approval by wallet it takes a few seconds and consumes a small gas like almost NEAR transactions, nothing special. Also, ZK bridge takes a few cents of fee, not too much at this step.

This step 1 could be passed if you already have zkUSDC tokens in your wallet. Then you should select zkUSDC in Send string and go directly to step 2.


At the 2nd step this zkUSDC.e is swapping to USDC ERC20(Ethereum)

The first impression is that the bridge fee is too high! x2 -x3 times higher than in Rainbow.

Obviously, this service is not for a regular user, those usually operate by much smaller

amounts. Even exchange NEAR to ETH or to any ERC20 by using a CEX will cost less in total.

So, decide yourself please if zk proof is worth such expenses.

Regarding the processing time, it took about 7-8 minutes to receive 3.12 USDC to my Ethereum address after I hit ‘Transfer’ button and approved transaction by NEAR wallet. This is a bit longer than Fast Rainbow, but 7-8 minutes could be as acceptable time.

And of course, it’s out of logic to pay $52 to send 3.12 USDC even with super-duper zk proof. I have made this transaction as for the test only.

The fee has been paid in zkUSDC.e(NEAR chain), it doesn’t require to have ETH for gas and approve anything by metamask at Ethereum site. The same as with Rainbow.

Also, I dislike that the ZK bridge’s fee is dynamically changing, very often and in very wide range. At the screenshot above you see ~$52, but during the test i have seen different values from $52 up to $85.

Here is one example:

It can even change while you swap USDC.e to zkUSDC at 1st step, so then you may face on that the amount of your just swapped zkUSDC is not enough to pay higher fee, or otherwise you have more of zkUSDC than need for the moment. This happened to me, but luckily the fee went lower.

The algorithm of those changes remains unknown, there is no exact formula like in Rainbow. So, the swap cost is much more unpredictable in comparison with Rainbow.

But obviously I like more how their calculation work. You don’t need to have any tokens in your wallet or exchange something at first. You just type wished values in the form and see estimated calculation (if don’t count the often changes of fee). So you can take a decision either to swap here or look for other exchange because of the high fee. That is how Rainbow should make their UI.

Also, I strongly suggest to check USDC.e /zkUSDC.e pool before to make any action

Currently the TVL is about $10k as total for both tokens. It’s not too much, any large swap may dry the liquidity and the next user will have a risk of not getting the necessary amount.

Seems like their pool is not protected against rebalancing: anyone can deposit or withdraw both tokens in any proportion, either 1:10 or 1:100, but the app always uses the swap rate 1:1. It’s unclear who and how takes care in case of negative rebalancing. So be careful, check TVL before.

So, I have tested Near to Ethereum transfers by 2 bridges, and as result Fast Rainbow is faster and much cheaper. Frankly, I do not operate with millions daily yet, it is not my league, so don’t see any need to pay much more for zk proof. Maybe I’ll change my opinion in future, but for now the cost is as the main factor.

Another important conclusion is that I got USDC erc20 tokens in Ethereum successfully, but those USDC are died there let’s say, useless, until I have no ETH for a gas. I can do nothing with these USDC without ETH, either move to exchange or to other address, etc.

The old regular Rainbow bridge supports the swap of ETH(NEAR token) to ETH (Ethereum), but this way requires to have some ETH at the destination address in order to finalize transaction. But what if I have not it yet? So it’s a dead end too.

Let’s say, both bridges don’t work for those who have enough of NEAR and NEAR tokens but have no ETH at all. And a good question appears: if I need first to go to CEX in any way, to exchange some of my NEAR coins to ETH for a gas, why should I return then back to the bridge in order to swap USDC or any other tokens? I can do this at the same CEX as well, it would be easier and most probably even cheaper (in compare to ZK bridge a CEX is cheaper for sure, Fast Rainbow -depends which CEX).

So, I would suggest to both bridges to add first the NEAR-to-ETH swap (or USDC.e to ETH, or any other, doesn’t matter), but take a fee only in currency which I exchange, without a need to have some coins for a gas at the destination address. That is exactly what CEXes do for us. Decentralized bridges should provide the same function to users if they really want to replace centralized exchanges in future. Otherwise, they have a risk of remaining just like a beautiful toy. Sorry if this doesn’t sound so happy optimistic, but this is just true.

Test #3. Swap NEAR(NEAR chain) to ETH(Ethereum) by Rainbow bridge.

USDC tokens, those i have transfered to Ethereum in previous tests, are useless without ETH because any action with ERC20 tokens requires gas in Ethereum chain.

So, let’s try to swap some NEAR to ETH using old(regular) Rainbow bridge. Unfortunately, the new Fast Rainbow doesn’t support this token yet.

First, we need to swap NEAR to a required amount of ETH token(NEAR chain), at Reffinance for instance. Then, we go to Rainbow, select the exchange direction, token ETH and type a wished amount. After that we can see an estimated time 4-8 hours and estimated cost $ 9.10 (it depends from the gas price in Ethereum network at the final stage of transfer)

After confimation by NEAR wallet (it costs < 0.001 NEAR) we can check the progress of a pending transfer. It displays hours remained to complete in real time:

For me it took about 7 hours until it completed and asks to finalize transfer:

I faced on a ‘surprise’ after hit ‘Finalize Transfer’. It requires to confirm a transaction in Ethereum network via Metamask , i.e. you must have some ETH at your Ethereum address in order to finalize bridge’s transaction. It means that as for ETH bridging you should pay the bridge’s fee in ETH cryptocurrency, not in NEAR. For this test it is about 0.006 ETH (or ~$11 for ETH price at transfer finalize time)

After confirmation in Metamask, 0.016 ETH came to my ethereum address in 20-30 seconds, i.e. as soon as the transaction has been confirmed in Ethereum network.

So, total time of bridging process was about 7+ hours. The total cost was ~0.006 ETH (or ~$11 at test’s time). It’s a bit higher than estimated $9.10 at the begining, but a such difference could happen due to a high volatility of Ethereum’s gas price & ETH price, it’s acceptable as a normal.


* This way doesn’t work for those have not yet ETH at all or use a blank Ethereum address, because you must have some ETH at the destination address in order to pay bridge’s fee & finalize transfer.

Frankly, I don’t understand a logic of a such concept. Usually everywhere fees are extracting from the amount which you exchange, means in the same currency which you have on hand and want to exchange to other one. What is a sense to ask me to pay fee in the currency which i should get as a result of this exchange? And, on the other hand, if i would find another place where to exchange some of my NEAR to ETH in order to pay gas for finalization transfer, why couldn’t i exchange the rest of wished amount at that place too? Why should i go to Rainbow bridge instead of that?

* The processing time 7 hours is too long. It’s absolutely not acceptable as a solution of exchange, just because a high volatility of ETH as well as NEAR. The price of both may change too much within 7-8 hours, so the exchange, based on a calculation at a certain moment & some plans, may lose a sense after 7-8 hours. Moreover, there many CEXs around where NEAR-to-ETH exchange takes minutes, not hours, and withdrawal fees are comparable or lower. So, there is no sense to wait longer.

Only a zero fee could be as a reason to wait so long time, if Rainbow could offer this.

Or, they should add ETH token to Fast Rainbow asap.

* The bridge’s fee is too high as for small amounts. No sense to bridge 0.016 ETH ( ~$30) and pay 0.006 ETH(~$11) of fee. A such fee could be affordable for much larger amounts only.

And, there are many other services or CEXs(i.e. competitors) those offer much lower fee. For example, Huobi takes a withdrawal fee 0.0012 ETH for any amount starting from 0.01 ETH(minimum).

Or, another example, I have exchanged 12 NEAR to 0.0079 ETH for the finalization fee of this test by using ChangeNow service:

It took a few minutes only, costs ~$0.70 (fee included in NEAR/ETH rate, different from market avg) and of course doesn’t require to have ETH at the destination address!

This one could be as a good sample of exchange speed & fee & user-friendly UI where Rainbow bridge should go to.

Test #4. Transfer USDC from Ethereum to NEAR by Fast Rainbow.

Here we will try Fast Rainbow bridge to transfer USDC tokens(ERC20, Ethereum chain ) to NEAR chain. I already have USDC at my ethereum address, they have been transferred in test #1 above.

So I need just to select chains & wished token & type a wished amount in the form, and then approve transfer:

Approval means that i have to give an allowance to Rainbow’s smart contract to spend a certain amount of my USDC tokens. On click ‘Approve Transfer’ Metamask’s window appears, where i need to set the maximum of allowed to spend amount & send ethereum transaction.

It costs ~ 0.0012 ETH (~$2.43) at the time of test, but depends from current gas price in Ethereum network & current ETH price):

Normally Ethereum network confirms a such transaction within 15 -30 seconds if we leave gas price as Metamask offers by default. As soon as transaction confirmed, the next tab asks to confirm tokens transfer and also you can see estimate time until bridging completed (20 min for this test) :

Then i need to confirm this transaction via Metamask. It costs ~0.0011 ETH(~$2.02) at the moment of test :

Let’s say, these 2 steps above are a very similar to what we do when swap any tokens at any other Ethereum DEX, it’s clear & easy & nothing complicated.

As soon as the last transaction confirmed, i can see a bridging progress at the next tab. A timer displays the time remained to complete. The smart contract should send USDC.e automatically to my NEAR address when the timer ends:

It took ~20 minutes until i get tokens to my NEAR wallet, maybe even a bit less, i.e. almost as estimated.

I can say that a such processing time is not so fast, some other CEXs may process withdrawals faster.

Let’s say, this result takes a middle place among other, but it is fully acceptable for a work

I was really surprised by the total cost of this transfer. I paid about 0.0023 ETH(~$4.45) as fees. I fully satisfied by a such level of fee, it is more or less the same as other exchanges offer, not higher. And, this is much lower than i paid for the same tokens transfer from NEAR to Ethereum in test #1($20+). It would be nice if Rainbow will apply a such low fee to NEAR-Ethereum fast transfers too.

In UI i dislike only that i can’t see the estimation of the total cost before start a approval&confirmation steps, i.e. before i start to spend ETH . It would be nice if they add a such estimate calculation before the token approval step. All rest is clear & user friendly enough.

Test #5. Transfer USDC from Ethereum to NEAR by ElectronLabs ZK bridge.

In general the bridging procedure is the same as in the previous test #4 with Fast Rainbow.

I have to type data into the form, which instantly calculates estimated time & bridge fee:

Then, on subsequent tabs, I need to confirm 2 Ethereum transactions via Metamask: approve tokens spend by smart contract and initiate transfer.

In total i have paid ~0.0038 ETH(~ $7.09) . This is a bit higher than Rainbow takes for the same, but probably it is due to ETH price & gas price change. In any way this is not too high cost as for Ethereum transactions in avg. So, it’s acceptable.

Also they take a bridge fee in USDC , in addition to the cost of those Ethereum transactions. Probably it’s a specific of ZK proofs protocol, more actions requires. But it is just $0.11 for my amount or ~0.2%, not too many.

I can see a progress by stages after the transfer initiated. This is a very comfortable option

I started the transfer about ~35 hours ago. Unluckily, i see at this tab that my transfer is still pending till now, despite the estimated time was ~25 minutes. It went to the stage ‘Sending on NEAR’ and don’t move ahead :

So, I’m unable to determine the processing time as the transfer hasn’t been completed yet for the moment of writing this, i have not received yet these 5 USDC.e to my NEAR wallet.

Obviously, 35 hours of pending vs 25 minutes estimated means that something went wrong.


After a series of tests above, I can assume:

  • Both bridges support only a few of coins/tokens for the moment, and only 2 chains, Ethereum & NEAR, among a huge number of chains & coins those exist currently. So, a user is a very limited in choice what to swap, in comparison with centralized exchanges those offer much wider choice of tokens & chains.
  • The cost of the cross-chain bridging is high enough vs centralized exchange services, at least for a relatively small amounts. Fees are in the range from $4.5 up to $52(or could be even higher) for each single transfer, and mainly it depends from the direction of swap. Totally by these 5 tests above i have transferred between NEAR&Ethereum chains a pure amount ~$32.5, that is equal to ~36.2 NEAR( at test’s time) previously converted to USDC.e & ETH(NEAR chain), and in the same time i have spent about $93 for fees as the total, that is equal to ~79 NEAR( at test’s time), i.e. almost x3 more that pure amount transferred. Obviously, a bridge usage has no any sense in real life with a such ratio between amounts transferred and fees paid. Maybe this problem doesn’t exist for a large transfers( >1000 NEAR), but much smaller users can’t take it as comfortable service vs centralized exchanges with much lower fees.
  • A lion share of those high fees takes place because of a high cost of transactions in Ethereum chain, which is permanently high and moreover, it is a very unpredictable because of high volatility of gas price & ETH price. I would suggest bridge’s teams to pay more attention at L2 Ethereum chains, such as Arbitrum, Optimism, etc. They are gaining more popularity in the last time, a certain share of ETH users prefer them for a work  instead of Ethereum genuine chain because of much lower fees, approx x10 lower, so people migrate to L2 from the native ETH. Maybe it’s worth also to provide bridging to these chains, as people are interested in it. This would allow to reduce bridge’s fee too, that makes a bridge usage as much more attractive for wider range of users.
  • The bridging time also might be better. Currently both bridges provide a fully convenient processing time such as a few minutes only for a very limited number of tokens (ETH is not included)  and only for one swap direction ‘NEAR to Ethereum’. But transfers of the rest of tokens (including the most important ETH) and all transfers for the direction ‘Ethereum to NEAR’ may take from 25 minutes up to some hours.  We could take 25 minutes as not the best processing time, but more or less acceptable. But some hours of waiting is absolutely not acceptable, finally it makes a such bridge transfer absolutely useless when received, in almost cases when people need a such swap between chains, just because of a high price volatility of involved cryptocurrencies. And, a such long processing time can’t compete vs centralized exchanges those provide much shorter time of withdrawal to chain address (and with lower fee, btw). So, it’s a matter to improve asap.
  • I should mention that several issues&bugs may take place during bridging process, it could make the processing time much more longer, fully unpredictable and may require a help of support to complete the transfer, and no guarantee if they do successfully. I faced on a such problem with ZK Electron bridge, my transaction was pending about 3 days, until the support fixed the issue.
  • Let’s hope this took place because the bridge appeared very recently, even has not passed audit yet, so not all bugs has been fixed yet at the early beginning stage. So, let’s give them some time to improve before the final judge.

But we should always keep the mind a possibility of issues unknown before. So, use bridges at your own risk only.


1 thought on “NEAR-Ethereum Bridge Tests”

Leave a Comment

To leave a comment you should to:

Scroll to Top
Report a bug👀