Block: 119

Timestamp: 01:11:01

AuditProfile

Security blog

A call, a precompile and a compiler walk into a bar

After 5 years of reading and writing Solidity, I thought I knew how external calls worked.

After 5 years of reading and writing Solidity, I should have known better.

It all started when I faced an impossible piece of Solidity code in a new L2.

It just couldn't work. If all I knew about Solidity was right, then the contract JUST. COULDN'T. WORK. Plain and simple. All of it was so obviously broken. Yet somehow, it wasn't.

Tests were green. A dummy testnet had been running for weeks. The system had undergone many security reviews. Shouldn't such a broken code have been reported and fixed already? Even another more popular L2 was using similar code.

Everywhere I looked contradicted what I knew about Solidity external calls. Could I be so wrong?

My debugging skills failed me. There were so many moving pieces. If you've ever tried to debug a transaction hitting a predeploy calling a custom precompile that ABI-decodes stuff in a custom version of geth of a L2 that forked another L2's code, you feel me.

Disbelief evolved into hopelessness. The temptation of blind faith intensified. But I wouldn't give in! Luckily, because I was only hours away from sudden enlightenment, understanding and relief.

Some people find revealing truth in a religious book. Others skimming self-help books in airport lounges. I found it in line 2718 of a C++ file.

Read the full article here:

Link: https://blog.theredguild.org/a-call-a-precompile-and-a-compiler-walk-into-a-bar/

#call

#precompile

Connent with me:

Регистрация прошла успешно! Спасибо за внимание!

loader