Blog · · 6 min read
A GM, sandwiched by $4 billion
On 4 September 2026, at 11:55:39 UTC, block 50866796 on Base recorded a transaction containing the following message, in full:
GM
Two characters. To get them on-chain, that transaction borrowed four billion seven million dollars, held all of it simultaneously, and gave it back.
Nobody was defrauded. Nothing was traded. No position was opened, and the sender's wallet was never richer or poorer than it started. This is simply what sending a message here does, and this transaction is a good one to look at because the event log happens to be the tidiest explanation of a flash loan we have.
What the transaction actually contains
The receipt has 51 logs. Stripped of the lender's own bookkeeping, they run in this order:
log 216 PresentBy("https://flashy.chat")
log 218 Transfer Morpho -> FlashyChat 37,228.8866 cbBTC
log 220 Transfer Morpho -> FlashyChat 191,498,636.8277 USDC
log 222 Transfer Morpho -> FlashyChat 77,154.4302 WETH
... 13 more, one per token
log 248 Transfer Morpho -> FlashyChat 21,282.5143 WELL
log 249 MessageSent(0x8348…65Ae, 0, "GM") <-- the message
log 250 Transfer FlashyChat -> Morpho 21,282.5143 WELL
log 251 Transfer FlashyChat -> Morpho 759.6262 weETH
... 13 more
log 266 Transfer FlashyChat -> Morpho 37,228.8866 cbBTC
Everything above line 249 is money arriving. Everything below it is the same money leaving. The word GM is the filling.
The detail that gives the game away
Look at the order of the repayments.
The borrows go cbBTC, USDC, WETH, … , WELL. The repayments go WELL, …, WETH, USDC, cbBTC. Exactly backwards. We checked all sixteen pairs: every repayment matches the borrow in the mirrored position, to the wei.
That reversal is not a stylistic choice. It is the fingerprint of a stack.
If the contract borrowed and repaid each token in turn — take cbBTC, give it back, take USDC, give it back — the repayments would come out in the same order as the borrows, and at no point would it hold more than one token. That is not what happened, and the log proves it.
What the contract actually does is call Morpho for the first token and, from inside Morpho's callback, call Morpho again for the second token. From inside that callback it calls for the third. Sixteen frames deep, nothing has been repaid and every token is still held. That is the bottom of the nest, and it is the only place in the whole transaction where all sixteen loans exist at the same moment.
So that is where the message goes.
flashLoan(cbBTC) ────────────────────────────────┐
flashLoan(USDC) ──────────────────────────────┐│
flashLoan(WETH) ────────────────────────────┤│
… thirteen more frames … ││
┌─────────────────────────────────────┐ ││
│ all 16 tokens held · $4,007,067,393│ ││
│ emit MessageSent(you, 0, "GM") │ ││
└─────────────────────────────────────┘ ││
… unwinding, repaying on the way out … ││
repay WETH ─────────────────────────────────┤│
repay USDC ───────────────────────────────────┘│
repay cbBTC ─────────────────────────────────────┘
A stack unwinds last-in-first-out. That is why WELL — the last token borrowed — is the first one repaid, and why cbBTC — the first borrowed — is the last to go home. The reversal in the log is the nesting, visible from the outside.
The full bill
Every token the message borrowed, priced at the block it happened in:
| Token | Amount borrowed | Value |
|---|---|---|
| cbBTC | 37,228.8866 | $3,026,267,754.10 |
| USDe | 345,403,034.5549 | $345,342,819.97 |
| WETH | 77,154.4302 | $194,873,080.99 |
| USDC | 191,498,636.8277 | $191,490,433.25 |
| cbXRP | 96,670,707.6648 | $140,384,438.29 |
| cbETH | 19,630.4467 | $56,413,196.08 |
| wstETH | 5,010.4812 | $15,721,135.30 |
| SOL | 142,735.0134 | $14,891,440.89 |
| cbADA | 40,926,731.6698 | $9,073,892.63 |
| cbDOGE | 71,720,545.8482 | $6,280,383.42 |
| weETH | 759.6262 | $2,116,443.65 |
| cbLTC | 38,217.8527 | $1,959,582.91 |
| uniBTC | 16.1059 | $1,300,489.55 |
| yoUSD | 596,705.1330 | $633,749.13 |
| wsuperOETHb | 114.1124 | $318,512.83 |
| WELL | 21,282.5143 | $40.50 |
| Total | 16 tokens | $4,007,067,393.52 |
Thirty-seven thousand Bitcoin. A hundred and ninety-one million dollars of USDC. Enough SOL to notice.
And then, at the bottom of the table, the innermost loan of the entire transaction: 21,282 WELL, worth forty dollars and fifty cents.
It is worth being precise about what that means. WELL was the sixteenth and last token borrowed, so its frame is the deepest one — the one wrapped tightest around the message. Three billion dollars of Bitcoin is the outermost layer of this sandwich. Forty dollars fifty of a Base governance token is the layer actually touching the GM.
What it cost
Nothing, more or less.
- Message fee: 0 ETH. This one was sent by the contract's owner, and the contract waives the fee for the owner. Everybody else pays the message fee, which is 0.005 ETH at the time of writing — and which the contract will tell you itself if you ask it, since the owner can change it.
- Gas: 0.00000991 ETH, all in, for 1,639,144 gas on Base. At the ETH price in that block ($2,525.22), exactly two and a half cents.
Two and a half cents to move four billion dollars and say hello. The borrowing is free because it is repaid in the same breath; the only thing anyone actually pays for is the arithmetic.
Forever, though
The other half of the joke is the part that does not unwind.
The four billion dollars was borrowed and returned inside a single transaction. It existed as debt for the width of one log index. By log 266 it was as if it had never happened, and Morpho's balance sheet agrees.
The GM is still there.
It is log 249 of block 50866796, and it will be log 249 of block 50866796 for as long as anyone runs a Base node. There is no database row to drop, no account to delete, no moderator to appeal to. Someone spent two and a half cents, briefly owed four billion dollars, and permanently wrote the word GM into a public ledger — and of those three facts, the only one with any staying power is the greeting.
Check it
Do not take our word for any of this. The whole point of putting a message in an event log is that you can go and read it:
- The transaction — 32 ERC-20 transfers, status Success.
- The event log
— find log 249 and read
content (string) : GMfor yourself, then scroll up and down to watch the money arrive and leave. - The contract
— the recursion described above is
_loanNextTokenandonMorphoFlashLoaninFlashLoanManagerV2.
The homepage carries a live version of this same trace, running against whatever Morpho is holding right now. The numbers will be different. The shape will not.
Sources
Last checked: