Pendle LDB Analysis

Pendle Team
Pendle
Published in
7 min readMay 5, 2021

--

Last week we conducted our Liquidity Drop Bootstrapping event. Our LDB was designed to ensure that early participants in the pool would not get punished for mistiming their purchases. This was accomplished by adding single-sided PENDLE liquidity to a balancer pool at random times over the course of 6 hours. This approach left price discovery to the market while providing discount opportunities throughout the course of the bootstrapping event.

But… Ethereum is a dark forest full of monsters that come in the form of bots seeking to exploit smart contracts for profit.

In theory, back-running MEV (miner-extractable value) bots could still potentially order their transactions right after each liquidity drop was made, thus profiting from the discount opportunities.

To fight these dark monsters, we built a monster of our own.

Introducing: Flashbots.

Flashbots

Flashbots is a research and development organization working on mitigating the negative externalities of current MEV extraction techniques and avoiding the existential risks MEV could cause to state-rich blockchains like Ethereum. Their primary focus is to enable a permissionless, transparent, and fair ecosystem for MEV extraction. It falls under three goals: Democratizing Access to MEV Revenue, Bringing Transparency to MEV Activity and Redistributing MEV Revenue.

How it basically works is that users (termed searchers in Flashbots) send one or several transactions (a bundle) to an MEV-Relay, which is then forwarded to miners participating in the Flashbots initiative. The bundle includes a sealed tip paid by the searcher directly to the miner of the bundle via a smart contract call to block.coinbase.transfer().

In addition, we took advantage of the following properties of a Flashbots bundle:

  • Flashbots bundles will always be at the top slot of a block (txIndex 0).
  • Bundles bypass the Ethereum mempool, which helps us avoid our drop strategy leaking before it is mined on-chain.

Using Flashbots, our hope was that no generalized MEV bot could front-run or back-run our liquidity drops as our transactions were hidden from the mempool, and the liquidity drop information would only be made known after the fact that it had been mined. In theory, this would level the playing field for participants in the bootstrapping event.

Post Analysis

While no strategy can ever be perfect, we are happy to share that our strategy worked as intended. The average transaction size was 5.2 ETH and the average gas price observed during the entire bootstrapping event was in the ~150 gwei range.

We achieved our overarching objective of preventing front/back running bots in the same block while maintaining a bootstrapping structure that did not punish early participants. The spread of liquidity also ensured that later participants were not priced out.

All bots and other EOAs that used high gas prices would only enter at the next block after the liquidity drop was mined. All transactions that occurred at the same block as the liquidity drop were purely coincidental and/or very lucky.

After the review, the team is satisfied with the overall outcome of the approach.

Aside from an imperfect pool opening, we can conclude that our Flashbots strategy for the liquidity drops worked as intended.

Read the drop-by-drop analysis of our LDB below.

Pool Opening

  • Tx Hash: 0x3fd2dea75b8497ada0187341311cd1414c2f061ebd12c4f3cb46e1fac3964831
  • Block Number: 12328820

Pool opening was a normal transaction and the timing was made public prior. Only 1 BUY transaction was found on the same block as the pool opening. A bot was able to find this (0xa23fbbd99c8f256598ea0e4afab6d4554e8321f29d20a24ba1df0b539506d6dd), and thus was able to be the first tx in the pool opening. In hindsight, the pool opening should have been done using a Flashbots bundle as well.

One benefit of spreading the liquidity out over time was that no bot or whale could have scooped up the entire pool as we’ve seen in other bootstrapping events. In our case, 202,000 out of the 16,582,875 PENDLE made available (1.2%) was bought in that opening tx.

Drop #1

  • Tx Hash: 0x913bfe00018e2babc6406866f10ba74f8023ed0f1ecd4808b31473997e2069f9
  • Block Number: 12328829
  • Drop Tx Index: 0
  • Drop Amount: 1185000 PENDLE

There were a total of 10 BUY transactions in the same block as the liquidity drop, all from 10 different EOAs. The first buy in the pool in the same block was at index 4. A previously failed tx was done to the pool at a previous block. It is important to note that all 10 transactions in this block submitted with gas prices of ~300 gwei and above. We hypothesize that during the opening minutes of the pool, participants were rushing in while the token price was attractive.

Lastly, 9 other BUY transactions were detected in the next block (12328830) after the liquidity drop.

Drop #2

  • Tx Hash: 0x5ffa7bff81aeaf05a02c7a90cf15f9ddbd7922dbe15ca940298d7a5df5c73f54
  • Block Number: 12328858
  • Drop Tx Index: 0
  • Drop Amount: 1100000 PENDLE

There were a total of 8 BUY transactions in the same block as the liquidity drop, all from 8 different EOAs. No proof of bots on this round as all 8 transactions were using average gas prices and were just lucky enough to be included in this liquidity drop.

16 other BUY transactions were detected in the next block (12328859) after the liquidity drop.

Interestingly enough, another Flashbots transaction was detected (0xab544036aade665ef13a61152ac9cb432ffc2ada49f8e8d0093d44d1742f1b67), but was only mined 2 blocks after the liquidity drop.

Drop #3

  • Tx Hash: 0x46daf740f8bb5d0836881fd513d53dec2b9cc76823638ab2d99442b1d25eec78
  • Block Number: 12328944
  • Drop Tx Index: 0
  • Drop Amount: 270000 PENDLE

There was only 1 BUY transaction of 1 ETH in the same block as the liquidity drop using normal gas prices. A lucky trader.

7 other BUY transactions were detected in the next block (12328945) after the liquidity drop.

Drop #4

  • Tx Hash: 0x2ff021f23a075c27c39e1ba36da5e125901ef2648423dc60c740211de67f1685
  • Block Number: 12329023
  • Drop Tx Index: 0
  • Drop Amount: 650000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

4 other BUY transactions were detected in the next block (12329024) after the liquidity drop.

Another Flashbots transaction was detected (0x037874e7d4be6982a46a185a7771bf8714746d75dc0b6d40f913b82043a8c580), but was only mined 80 blocks after the liquidity drop.

Drop #5

  • Tx Hash: 0xb7a1912bb25280cd13d4fe027ffdbec96ea94160e7592e3aefcea951c601353b
  • Block Number: 12329098
  • Drop Tx Index: 0
  • Drop Amount: 280000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

2 other BUY transactions were detected in the next block (12329099) after the liquidity drop.

Drop #6

  • Tx Hash: 0x41691e5d284a364d25a0dc97cf7bea3e1b325cdd24acd6003c5de17c5a44740e
  • Block Number: 12329186
  • Drop Tx Index: 0
  • Drop Amount: 770000 PENDLE

There was only 1 BUY transaction of 1 ETH in the same block as the liquidity drop using normal gas prices. Another lucky trader.

24 other BUY transactions were detected in the next block (12329187) after the liquidity drop.

Drop #7

  • Tx Hash: 0xd096530e89f41cd6088045ff49624ec4b1a2aeb4f59e2bfa121b8be0d34874ac
  • Block Number: 12329297
  • Drop Tx Index: 0
  • Drop Amount: 250000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

5 other BUY transactions were detected in the next block (12329298) after the liquidity drop.

Drop #8

  • Tx Hash: 0x6ec6b80f88112756125865c34d0929995312a35863153f847bb53ff3cdbaa9b8
  • Block Number: 12329371
  • Drop Tx Index: 0
  • Drop Amount: 337875 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

2 other BUY transactions were detected in the next block (12329372) after the liquidity drop.

Drop #9

  • Tx Hash: 0x018f7b038943b14342a1f3faca47d365fb104368957ff03cc4cca2a63b4081e6
  • Block Number: 12329425
  • Drop Tx Index: 0
  • Drop Amount: 880000 PENDLE

There was 1 BUY transaction of 1 ETH in the same block as the liquidity drop using normal gas prices.

0 other BUY transactions were detected in the next block (12329426) after the liquidity drop.

Drop #10

  • Tx Hash: 0xc9a058fa11edd3b538c9c8e629bd759a4a7b35e14a6d220cb75b1fd286a6c885
  • Block Number: 12329532
  • Drop Tx Index: 0
  • Drop Amount: 690000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

2 other BUY transactions were detected in the next block (12329533) after the liquidity drop.

Drop #11

  • Tx Hash: 0xc32cd7fbd92be4e6c666bd61cdc2417c0aca8f9aa4cf538b096fb721571ad2e9
  • Block Number: 12329620
  • Drop Tx Index: 0
  • Drop Amount: 420000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

0 other BUY transactions were detected in the next block (12329621) after the liquidity drop.

Drop #12

  • Tx Hash: 0x915046dfbab4dfe2c496eec6fab9e520d7ed67851dff16519ccd12ceb3040308
  • Block Number: 12329682
  • Drop Tx Index: 0
  • Drop Amount: 950000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

2 other BUY transactions were detected in the next block (12329683) after the liquidity drop.

Drop #13

  • Tx Hash: 0xb98e5700e85c2401fbe2753fa0770236d5365bfa1be0944c1cf6ecc7b5716543
  • Block Number: 12329767
  • Drop Tx Index: 0
  • Drop Amount: 900000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

2 other BUY transactions were detected in the next block (12329768) after the liquidity drop.

Another Flashbots transaction was detected (0x13752a43854a12d79350a97cca656d9db3826529ef94d916412ba34dd151ca10) on this block, but was only mined 1 block after the liquidity drop.

Drop #14

  • Tx Hash: 0x35ef1532ccf2670fb37433e025e73a59ec34fc54043f7c6f42c92b10d808bcf4
  • Block Number: 12329875
  • Drop Tx Index: 0
  • Drop Amount: 1600000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

1 other BUY transactions were detected in the next block (12329876) after the liquidity drop.

Another Flashbots transaction was detected (0x1afc92b680c9bf20f56dfca9affb94c45c8a5e392fdb0b83f15d56c36ce938bd) on this block, but was only mined 4 blocks after the liquidity drop.

Drop #15

  • Tx Hash: 0xd7751d93753a9820c6073827b704fb7e9308416338b93c7d6b19866bb8c3e44e
  • Block Number: 12329953
  • Drop Tx Index: 0
  • Drop Amount: 800000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

4 other BUY transactions were detected in the next block (12329954) after the liquidity drop.

Drop #16

  • Tx Hash: 0xd7a6b2d4901cd14bf782fde713d9ef9d013b09ffb66ac1f954517bc20a78a7d0
  • Block Number: 12330074
  • Drop Tx Index: 0
  • Drop Amount: 2000000 PENDLE

There was only 1 BUY transaction of 1 ETH in the same block as the liquidity drop using normal gas prices. Nothing unusual here as well, just a lucky chap.

6 other BUY transactions were detected in the next block (12330075) after the liquidity drop.

Drop #17

  • Tx Hash: 0x72c11c88b0e80e1bb385b11775db4854ef3dc7c3cef3528585b0bd1a6718763c
  • Block Number: 12330204
  • Drop Tx Index: 0
  • Drop Amount: 920000 PENDLE

There were 0 BUY transactions in the same block as the liquidity drop.

1 other BUY transaction was detected in the next block (12330205) after the liquidity drop.

Drop #18

  • Tx Hash: 0xc9088c32601bbd639857caddeab18bfebd5e1e1e104af59d3404e20e966910d7
  • Block Number: 12330305
  • Drop Tx Index: 0
  • Drop Amount: 579999.999999999970506255 PENDLE

There was only 1 BUY transaction of 1.768 ETH in the same block as the liquidity drop using normal gas prices. Nothing out of the ordinary.

0 other BUY transactions were detected in the next block (12330306) after the liquidity drop.

--

--