Flashy Chat

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) : GM for yourself, then scroll up and down to watch the money arrive and leave.
  • The contract — the recursion described above is _loanNextToken and onMorphoFlashLoan in FlashLoanManagerV2.

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

  1. The transaction on Basescan
  2. The event log for the same transaction
  3. The Flashy Chat V2 contract on Base
  4. Morpho Blue — the lender every one of these loans came from

Last checked:

Keep reading