DISCLAIMER
I’ve been accused of using ChatGPT to generate my replies in this post. Just to be crystal clear: every idea, argument, and point made in my responses is mine. I do use ChatGPT to help me rephrase my thoughts, not to generate them. English isn’t my first language, and I tend to write in a very direct, to-the-point, and sometimes confrontational way that some people perceive as aggressive.
Frankly, I use ChatGPT to soften the tone so that oversensitive people (aka “snowflakes”) can focus on the what instead of getting distracted by the how.
If tone matters to you more than substance, then feel free to copy-paste what’s coming below into ChatGPT and ask:
“Can you rephrase this so that it doesn’t come across as aggressive?”
That’s literally what I’ve been doing.
You’ve been warned. If you choose not to do that, please don’t come back whining about tone. Let’s keep the focus where it belongs: on the actual arguments.
This right here is the heart of the problem. If you’re not willing to think like the people who actually use what you are building, then you’re building in a vacuum. From your ivory tower it might feel like you’re crafting a masterpiece, but without walking a mile in a DApp developer’s shoes, you’re almost guaranteed to miss the mark.
Put simply: stop designing for hypotheticals and start designing for your users. If you can’t (or won’t) empathize with the builders, then don’t be surprised when your “solutions” end up gathering dust.
I surely can! Gosh, I’m glad you asked…
Step one (and this really shouldn’t be controversial) is to define the scope of what should realistically be achievable using only Ethereum tooling and Solidity smart contracts. Because let’s be honest: an Ethereum DApp built with Ethereum tools alone (and using their wallets) is never going be able to leverage the full potential of Polkadot.
And there’s one especially glaring limitation that comes to mind: multi-chain DApps.
You see, Ethereum tooling was never designed with multi-chain DApps in mind. I’m sure you’ve tried your fair share of Ethereum DApps (like me) and you’ve probably noticed the moment your wallet isn’t connected to the “right” network, the DApp immediately nags you to switch.
That’s not a coincidence. Most Ethereum DApps rely on wallets as their primary JSON-RPC provider, and those wallets follow the EIP-1193 spec, which includes things like the chainChanged
event. In practice, this means your provider is tied to a single chain at any given moment.
Now, sure technically you could build a multi-chain DApp with Ethereum tooling. You’d spin up multiple providers, use custom infrastructure, and juggle a few headaches. But when it’s time to actually sign a transaction… ups! you’re back to using the wallet provider… and that’s where things become a massive PITA.
Anyhow, all of that is actually a moot point. Because realistically, not every Polkadot parachain is going to implement pallet-revive
, spin up the extra infrastructure needed to support the Ethereum JSON-RPC endpoints, and expose a full set of Solidity precompiles tailored to their own custom runtime logic. So let’s be real: this isn’t happening in the foreseeable future.
Also worth noting: no one in Ethereum land is working on multi-chain DApp tooling either.
So yeah, I think it’s fair to draw the line and say: multi-chain DApps are out of scope for anything that sticks to Ethereum tooling. If you’re targeting cross-chain functionality: Coretime, Hydration, People Chain, AssetHub… you name it, then you’re gonna need Polkadot-specific tools. Period.
Let that sink in for a second.
If you’re building a DApp that touches multiple parachains, you’re already forced to reach for Polkadot-specific tools. At that point, why bother dragging Ethereum tooling into the mix? It becomes pure overhead.
And yes, eventually PAPI will offer a Solidity SDK, the same way we have Ink! SDK. But let’s be honest -if I were building a serious multi-chain DApp, I’d much rather use Ink! contracts. So, I think that it’s a bit sad that Ink! is being treated as a second class citizen, but I digress, sorry.
So, I think it’s safe to say we’ve ruled out multi-chain DApps. Which brings us to the next obvious question:
What else should be out of scope?
Excellent question, @pierreaubert. So glad you asked!
It’s pretty obvious to me that anything outside of asset management should be completely out of scope. At least for now. For real: keep the API surface of these precompiles as small as humanly possible.
I strongly recommend excluding everything that isn’t directly tied to asset handling. Focus only on making Polkadot assets compliant with established Ethereum standards like ERC-20, ERC-721, etc. Nothing else. Pick the standards you want to support, and then very carefully implement the minimal interface required to meet those standards, and only those standards.
Once that’s done, the next step isn’t “what else can we cram in?”—it’s proving that this minimal approach actually works. And please, for the love of all that is modular, don’t try to expand anything until you’ve validated that core hypothesis.
But how do we prove it worked?
I’m so glad you asked, @pierreaubert. You’re really on a roll today.
Here’s one idea: deploy a well-known Ethereum DApp as-is, without any rewrites, on Westend AssetHub. Pick something that’s asset-heavy and leans fully into the standards you’ve chosen to support. A perfect example would be deploying the open-source contracts and frontend of Uniswap into Westend AH.
Have someone at Parity do it (or better yet, outsource it to a real-world Ethereum team to get a more honest take on DX and compatibility). If that DApp can be deployed and used without major compromises, then… CONGRATS! you’ve got a win. Only then should expanding the precompiles even be on the table.
But of course, that leads to the real question:
How should precompiles that touch the rest of Polkadot’s core functionality be designed?
Yet another great question, @pierreaubert! You’re on fire today.
Let’s be honest: these precompiles are going to have far-reaching consequences. Once introduced, they will severely constrain how things can evolve, because backwards compatibility becomes a hard requirement.
Given that, I’m afraid that there’s only one sane path forward:
Start by carefully and methodically defining a set of standardized interfaces, based on real, long-term use cases… interfaces that are thoughtfully discussed, scrutinized, and agreed upon by the community of experts (and just to be super clear: I’m not referring to protocol developers at Parity living in their comfy ivory towers).
And look, I’ll just say it: this is something that Polkadot has historically struggled with. We’ve never had a strong culture of defining durable, community-driven standards. I genuinely wish we had a Foundation that excelled at promoting standards, but sadly: we don’t.
That said, this is an incredible opportunity to start changing that. A moment to build some real muscle around open standards.
So, please: don’t waste time and resources rushing out precompiles that no one’s sure how to use, when to use, or whether they’ll even survive runtime upgrades. First, define the flows and interfaces that are built to last. Once we have that clarity, then and only then should we start thinking about how those standards could map onto minimal Solidity-facing precompiles.
The last step would be to deliver an Ethereum DApp on Polkadot that showcases the success of these new standards and contracts (eg a fully fledged Staking DApp)
So, to summarize, here’s what I believe should happen in order of priority (as you asked
):
-
Define a clear scope and set of realistic expectations. Understand both the limitations and possibilities of Ethereum-based DApps on Polkadot. Don’t overpromise what can’t be delivered.
-
Build only the essential precompiles, those strictly needed to comply with established, widely adopted Ethereum standards (e.g., ERC-20, ERC-721) that AssetHub should support out of the gate.
-
Prove it works. Deploy a real, standard Ethereum DApp on Westend AssetHub using those precompiles (Uniswap, Aave, SushiSwap, whatever). No shortcuts. No “hello world” demos. Show the thing actually running.
-
If -and only if- that works, begin designing standards for other parts of the Polkadot ecosystem like staking and governance. But do so with a deep awareness that these areas are evolving, and any standards must leave room for growth.
-
Craft minimal, durable precompiles based on those standards.
-
Showcase success again: this time with a full-fledged DApp that exercises those new interfaces. A proper staking dashboard, for example, that actually works using just the Ethereum tooling and the new precompiles.
Honestly, I’d be shocked if we even make it to step 3 before the year is over. And frankly, even if we do, I’d be extremely cautious about pushing beyond that. Like it or not, the Ethereum tooling stack will never unlock the full potential of Polkadot, not without major compromises.
That said, I genuinely love what’s happening on AssetHub -especially the idea of having contracts available out of the box. I just wish those contracts could also power the real-world use cases we actually need… like the concrete example that kicked off this forum post.
I think that Ink! supports upgradable/versioned contracts, and from what @Daanvdplas has shared, Pop-API has been working on another approach. But if everything is coupled to minimalist Solidity precompiles, we’re screwed. Maybe I’m missing something-but until there’s a path for more sophisticated flows, we’ll keep bumping against the same limitations.
Bottom line: I love AssetHub’s momentum, but please let’s deliver contracts that aren’t just a comfort blanket for Ethereum devs, let’s build something that solves our real problems, too.