I learned finance in the wrong order
I learned to use wallets, swaps and bridges years before I ever sent a bank wire. This month I tried both, within two days: a Swiss bank froze a ten-euro transfer, a tokenised Nvidia share quoted $77 in fees on the wrong network, and a bridge page tried to send my dollars to the wrong kind of address, so I didn't sign. What each system charges, and what each one checks.
Most people learn finance in the obvious order: a bank account, a card, maybe a brokerage, and much later, if ever, crypto. I did it the other way round. I made my first swap on a decentralised exchange in 2020, before I had ever sent money abroad from a bank. This month I had to do both within two days, and the comparison was so lopsided that I want to write it down while I’m still annoyed.
The bank
I had a small position in US stocks at Swissquote, a Swiss online bank and broker, and wanted to move most of it out. The first problem was the payment form. Its field for the beneficiary bank’s address stopped at 35 characters, the line width of the SWIFT payment message [1], which is not enough for an address in Singapore. The second problem was the price. An outgoing payment in euros cost a flat ten euros [2], so the habit I have from crypto, sending a small test first, made no sense; a ten-euro test would have cost as much again in fees. Even a small sale of shares came with a commission of more than one percent [3].
So I tried the smallest thing I could: moving ten euros internally, from my trading account to an account at the same bank. It was put on hold for “incorrect beneficiary details”.
Meanwhile, at home, a transfer between two Singapore banks is free and arrives in seconds [4]. The cross-border system is not slow because moving money is hard. It is slow because each payment carries a message from bank to bank, usually directly or through one intermediary, and every bank that handles it checks it, can charge for it and can stop it. Swift’s own figures say most payments now reach the recipient’s bank within an hour, but far fewer reach the customer’s account that fast [5], and the World Bank’s latest count puts the average cost of sending $200 abroad at 6.35%, or 12.66% through a bank [6].
The chain
The next evening I did the on-chain half: moving dollars I held as USDC between networks, and looking at a tokenised share of Nvidia as an alternative to buying it through a broker.
The first thing I noticed was that the fees were printed in front of me. My wallet, Rabby, charges 0.25% on swaps and says so on the screen, next to MetaMask’s 0.875% [7] [8]. A bridge aggregator, LI.FI, quoted a route from Optimism to Arbitrum through Circle’s Cross-Chain Transfer Protocol, CCTP, with a cost of one cent and an estimate of 25 minutes. CCTP does not wrap anything. It burns USDC on one chain and Circle mints the same amount on the other, so there is no intermediary token that can depeg [9].
Tokenised stocks were less impressive. Dinari sells tokenised US shares on Ethereum and on layer-2 networks such as Arbitrum, paid for in USDC, and only issues them while the US market is open [10]. Its quote screen for Nvidia, before I had even typed an amount, listed an estimated service fee of 50 USDC and a network fee of almost 27 more. I had left my wallet on Ethereum, the wrong network, and those are the Ethereum numbers: Dinari’s own table charges $50 plus 0.5% per order there, against $0.20 plus 0.5% on Arbitrum [10]. On Ethereum that is not cheaper than a broker. On Arbitrum it undercuts Swissquote’s tariff on small orders, before gas [3]. Either way it works like a broker, with a blockchain at the end.
The signature I didn’t give
Then I tried to bridge USDC from Optimism to my Solana wallet, using Jupiter’s CCTP bridge page. When the signing screen came up, the receiver was not my Solana address. It was an Ethereum address, and Rabby flagged it in its Danger row: “Unknown address”. That is the screenshot at the top of this post, with the address blurred.
I didn’t sign. It took me a couple of minutes to work out what had happened. My Solana wallet, Phantom, also holds an Ethereum address [11], and the bridge page had picked that one up as the destination. A Solana address and an Ethereum address are different things: one is a 32-byte public key written in base58, the other 20 bytes written in hexadecimal [12], and dollars sent to the wrong one on the wrong chain would not have been easy to get back. The bridge would have done exactly what I told it. Nothing checked whether I meant it, except the warning in my wallet and my own habit of reading the receiver line.
So I went to the Portal bridge, built on Wormhole, which offers a CCTP route to Solana, where CCTP has been live since March [13], and asks for the destination wallet explicitly. I connected the right Solana wallet and watched it complete.
What each system checks
The two evenings were not really a contest between fast and slow.
First, the bank checks everything except what I want. My ten euros were stopped for a formatting problem in a beneficiary field, between two accounts of the same bank. The bridge checked nothing about the beneficiary at all.
Second, on-chain, the checking is my job. The bridge would have sent my money to an address I didn’t intend, and the only things standing in the way were a wallet warning and my reading of one line. I now read the receiver of every signature as carefully as I read the amount.
Third, the costs are visible on-chain and hidden in the bank. A quarter of a percent, one cent, 25 minutes, all on the screen before I sign. The bank’s fees were in a tariff document, and the real cost was the test transfer I couldn’t afford to make.
Fourth, tokenising an asset doesn’t remove the intermediary. The tokenised Nvidia share came with broker fees and market hours, because there is a broker behind it.
Learning crypto first made me impatient with banks. It also gave me a habit that banks never taught me, because they never needed to: read the address before you sign, because nobody else will.
References
- SWIFT MT103 field specifications: beneficiary and account-with-institution fields of 4 lines of 35 characters. iotafinance.com.
- Swissquote. Payment fees. Archived copy: 23 June 2024.
- Swissquote. Stock trading fees. Archived copy: 14 September 2024.
- The Association of Banks in Singapore. FAST and PayNow.
- Swift. Swift's cross-border payments processing speed surpasses G20 target. 22 August 2023. Archived copy: swift.com.
- World Bank. Remittance Prices Worldwide, issue 49, Q1 2024. PDF.
- Rabby Wallet. Announcement of a 0.25% swap fee. X, 5 July 2024. x.com.
- MetaMask. Swaps. Archived copy: 17 September 2024.
- Circle. Circle delivers USDC interoperability across ecosystems with mainnet launch of Cross-Chain Transfer Protocol. 26 April 2023. circle.com.
- Dinari. User guide: FAQ and fees. Archived copies: FAQ, 19 September 2024; fees, 8 August 2024.
- TechCrunch. Crypto wallet Phantom to release public multichain support for Ethereum and Polygon. 26 April 2023. techcrunch.com.
- Ethereum.org, Ethereum accounts; Solana, accounts.
- LI.FI. Circle CCTP is live on Solana. 1 April 2024. lifi.substack.com.