# <svg class="" fill="#e6007a" width="23" height="25" viewBox="0 -5 50 45" xmlns="http://www.w3.org/2000/svg"><path d="m21.1695 9.42485c4.4769 0 8.1062-2.10983 8.1062-4.71243s-3.6293-4.71242-8.1062-4.71242c-4.477 0-8.1063 2.10982-8.1063 4.71242s3.6293 4.71243 8.1063 4.71243z"></path><path d="m40.6292 24.3756c-2.3277-1.3674-5.9251.8139-8.1063 4.6636-2.23 3.8497-2.3277 8.0575 0 9.376 2.3277 1.3673 5.8763-.8139 8.1063-4.7125 2.23-3.8008 2.3277-8.0086 0-9.3271z"></path><path d="m21.1695 45c4.4769 0 8.1062-2.1098 8.1062-4.7124s-3.6293-4.7124-8.1062-4.7124c-4.477 0-8.1063 2.1098-8.1063 4.7124s3.6293 4.7124 8.1063 4.7124z"></path><path d="m1.70935 24.3756c-2.327703 1.3185-2.230038 5.5263 0 9.3271 2.23003 3.8986 5.77854 6.0798 8.10624 4.7125 2.32771-1.3185 2.23001-5.5263 0-9.376-2.1812-3.8497-5.77855-6.031-8.10624-4.6636z"></path><path d="m9.82353 6.58455c-2.3277-1.36734-5.87622.81389-8.10625 4.66355-2.230032 3.8497-2.327698 8.0575 0 9.376 2.32769 1.3674 5.92505-.8138 8.10625-4.7124 2.23007-3.8008 2.32767-8.00865 0-9.32715z"></path><path d="m32.5229 6.58455c-2.3277 1.3185-2.23 5.52635 0 9.32715 2.1812 3.8986 5.7786 6.0798 8.1063 4.7124 2.3277-1.3185 2.23-5.5263 0-9.376-2.23-3.84966-5.7786-6.03089-8.1063-4.66355z"></path></svg> Additional info ## CONTEXT ### [Codename "Plaza"](https://www.rob.tech/blog/plaza/) > The city needs to grow outwards from the center, and that center should be the Plaza (= the New York City, Dubai, London, or Shenzhen of the Polkadot continent, the first megacity of many and a precursor to greater expansion) [www.rob.tech/blog/plaza](https://www.rob.tech/blog/plaza/) --- <h3>The State of Polkadot</h3> <ol> <li><span class="marker">1. </span> Scalability Groundwork has been laid for Polkadot's scalable multi chain world</li> <li><span class="marker">2. </span>Polkadot has so-far relatively uncoordinated actions and is fragmented into many chains which create the need for users, apps & wallets to coordinate</li> <li><span class="marker">3. </span>While many projects currently benefit from having their own chain, and despite the hard work of Wallet and Frontend Developers, the long tail of contract developers and users must spend a lot of time, money & effort to coordinate difficult async interaction, juggling composability of assets, accounts and state across a complex multi chain landscape. Developers also have high time & money costs for building chains, like for example coordinating collator sets and handling block explorers, indexing, bridging, exchange integrations and other overhead.</li> <li><span class="marker">4. </span>Those costs are worthwhile and necessary once scaling capabilities are needed</li> <li><span class="marker">5. </span>Even a single chain can use a large number of cores to process transactions, logically sequential, synchronously composable and validated in parallel across many cores utilizing <a href="https://wiki.polkadot.network/docs/learn-elastic-scaling">elastic scaling</a>. It scales to thousands of TPS today and much further over time. Conservatively, even a single chain scales up to tens of millions of daily users.</li> <li><span class="marker">6. </span>But for lack of real users, there is no scaling pressure currently to merit the level of ecosystem fragmentation.</li> <li><span class="marker">7. </span>Ethereum has the largest user base and those could be funneled to Polkadot by migrating beloved and popular ethereum dapps onto polkadot. This can be achieved by giving them the same interfaces and UX while providing cheaper and faster execution layer with additional functionality from polkadot's unique cross-chain interactions like XCM and bridges. Migrating ethereum dapps means migrating their users to the polkadot ecosystem. The biggest problem is user inertia, so the less changes for a users basic journey experience, the better for winning them over.</li> <li><span class="marker">8. </span>As an ecosystem we should work together and use this to our advantage to build a batteries-included single chain "hub" and focus on scaling it up until this single chain system hits its scaling limits. This is helped by providing most value and lowest switching costs for ethereum builders.</li> <li><span class="marker">9. </span>Only when organic pressure reaches the point of bursting, we should relieve the pressure by utilizing multi chain capabilities and spinning out apps, users, and system functionality, which is enabled by easy migration of contracts to dedicated chains in order to save costs. This behavior can already be observed by ethereum dapps migrating to Ethereums Layer 2 solutions today.</li> </ol> <hr> <h3>Crucial Missing Feature: "Smart Contract Capabilities"</h3> <p> Polkadots core features are asset issuance (currently on AssetHub), staking (currently on RelayChain), bridging and apps. They would all benefit from simple generalizable programmability, but smart contracts are currently mostly lacking from the polkadot landscape and often live in different chains altogether from the assets or systems they aim to interact with. Additionally over time, tightening integration with assets, integrating polkadot identity and adding polkadot governance functionality can enhance polkadot by making scripting and automation primitives more powerful and broadening the usage. For example, leveraging smart contract capabilities to allow custom rewards in restaking protocols and permissionless programmable opengov (potentially enabled by tornado core protocol inspired private voting) is one of the many ideas that could turbocharge innovation. <a href="https://www.youtube.com/live/MU7tCyhBU7g?t=2089s"><img src="https://i.imgur.com/roSuozH.jpeg"></a> </p> <hr> <h3>The Plaza</h3> <p> Starting today, the ecosystem should coordinate behind building one single batteries-included highly-scalable Polkadot system chain, to serve as a "hub" for users, developers, liquidity and apps by focusing 100% of resources and energy on strategically concentrating developer efforts to integrate all of Polkadot's core features with: <uL> <li><b>new "Smart Contract Capabilities"</b></li> <li>and <b>exceptional UX and overall usability</b></li> </uL> </p> <p> The long tail of users and developers are both better served by smart contract platforms, but Polkadot actually has enough cores to support both: smart contract builders and chain builders. </p> <hr> <h3>The Plan</h3> <ol> <li><span class="marker">1. </span>Change the name of AssetHub to reflect the broader purpose as an ecosystem hub, as it already has wallet, bridging and tooling integrations</li><br> <li><span class="marker">2. </span>Make this new "Plaza System Chain" (=former AssetHub) a key focus of marketing, developer relations and developer education programs</li><br> <li><span class="marker">3. </span>Add synchronous smart contract scripting and execution capabilities (enabled by Rust and EVM via RISC-V/PolkaVM) to the "Plaza System Chain" to gain support for new languages like ink! as well as interpreted EVM languages like solidity and more in the future to turbo charge Polkadots core features via: <ul> <li><a href="https://forum.polkadot.network/t/announcing-polkavm-a-new-risc-v-based-vm-for-smart-contracts-and-possibly-more/3811">polkaVM (forum post 3811)</a></li> <li><a href="https://forum.polkadot.network/t/contracts-update-solidity-on-polkavm/6949">solidity revive compiler based on polkaVM (forum post 6949)</a></li> <li><a href="https://forum.polkadot.network/t/ethereum-rpc-compatibility-for-polkadot-smart-contracts/7375">EthRPC (forum post 7375)</a></li> <li><a href="https://polkadot.polkassembly.io/referenda/723">EthRPC (proposal 723)</a></li> <li><a href="https://polkadot.polkassembly.io/referenda/885">evm compatible contracts on AssetHub (proposal 885)</a></li> </ul> </li><br> <li><span class="marker">4. </span>Create exceptional tooling for supporting existing and new smart contract developers to build on "Plaza System Chain" utilizing all new capabilities </li><br> <li><span class="marker">5. </span>Reduce "Plaza System Chain" fees to minimum posssible sustainable quantity</li><br> <li><span class="marker">6. </span> Introduce priority-fee mechanism to "Plaza System Chain" as route to capture value</li><br> <li><span class="marker">7. </span> Focus on scaling "Plaza System Chain" as far as possible using polkadot cores without compromising full node capabilities</li><br> </ol> <b>This plan can be implement eagerly, knowing that when the Plaza is saturated, Polkadot (or JAM) has the raw validated compute power needed to handle that expansion.</b> ------------------------------------------------------------------- ## VISION <h3>Developer Experience for Plaza and Jam</h3> <blockquote> <b>Lets Integrate Polkadot into the web3 ecosystem marketing funnel.</b><br><br> From a developer experience perspective, we have been in the shadows of Ethereum, Solana and others for too long. Ethereum because they are older and Solana because they have better tooling and UX. Now that we have figured out how to make tech scale, it is time to step out of that shadow and finally up our game and stop piggy backing on outdated tooling from our competitors and build the lighthouses on our shores to begin onramping people to Polkadot, <b>focusing on the Plaza</b>. </blockquote> <hr> <h3>The web3 ecosystem marketing funnel</h3> <p> Over the past decade, web3 has expanded into a vast ecosystem with various blockchain platforms catering to different audiences. Polkadot stands out as the most technically advanced, occupying a crucial position towards the end of the web3 funnel. </p> <p> Sadly, so far the gap between smart contracts and parachains has been too wide, which might have contributed to the many layer 2 solutions around Ethereum. Also smart contract parachains, such as Moonbeam, Astar and others, maybe because the lack of polkadot native tooling or being hidden behind the main Polkadot brand, could not change that trend yet. Ethereum and the EVM is now widely used in the web3 ecosystem and Solidity is the industry standard and widely adopted and supported as the main smart contract language. </p> <p> Smart contract platforms are easier to get started with and cheaper to build & deploy than a parachain, thus Ethereum and other smart contract-based dapp platforms naturally precede Polkadot in the web3 funnel, therefor it is sensible to bridge to Ethereum by adding smart contracts as a first class citizen on Polkadot to attract the large pool of projects for which contracts suffice. </p> <p> Focusing on the "Plaza System Chain" to feature solidity smart contracts will create a place most similar to Ethereum, but with all the upsides of Polkadot and no downside. The PolkaVM integration and EVM/YUL to PolkaVM recompiler (revive) can provide a significant performance improvements over Ethereum or existing Polkadot smart contract execution environments (like Frontier and pallet-contracts) at much lower transaction costs. The revive compiler can also be re-used on top of JAM, which formally defines Layer-0 sync execution at the protocol level via <a href="https://graypaper.com/">JAM graypaper</a>. </p> <p> This could finally open the floodgates and unclog the funnel for users to be able to flood into Polkadot where they can start to leverage the advanced tech stack. It also allows Polkadot to leverage the vast knowledge and tooling around Solidity and the EVM as a starting point to populate the "Plaza System Chain". </p> <p> If built right the light of Polkadot-first developer tooling can serve as a lighthouse on the shore of Polkadot to shine so bright, it will be visible to developers in blockchain ecosystems outside of Polkadot in the web3 funnel, such as Ethereum or Solana. The first light visible in other ecosystems can come from marketing stunts such as integrating Polkadot technology into EVM based tooling like Remix or Hardhat and with this allowing users and developers to familiarize with the benefits of Polkadot from the comfort of their familiar environments. </p> <p> The next logical step for developers from there is to explore the shores of Polkadot and the many additional advanced features and capabilities PolkaVM offers and which didn't exist or weren't feasible on Ethereum. It is therfore important to have exceptional Polkadot first tooling ready to serve as lighthouses and guide users and developers to our shores. </p> ------------------------------------------------------------------- <!-- # FAQ <ol> <li> <span class="marker">1.</span> Why focus on solidity over ink!? </li> <li> <span class="marker">2.</span> Why is the ask so high and not broken down into multiple stages? </li> <li> <span class="marker">3.</span> Do you plan to fork Remix and adapt it to Polkadot? </li> <li> <span class="marker">4.</span> Why do we need an IDE, wouldn't a Remix and Hardhat plugin be enough? </li> <li> <span class="marker">5.</span> Isn't POP Network already working on smart contracts in this ecosystem? </li> <li> <span class="marker">6.</span> Isn't a new IDE project a massive undertaking? </li> </ol> <hr> --> <!-- <hr> <h1> Remix Commit History</h1> <details> <summary>👉 (click to see remix git history)</summary> <hr> <ul> <li> <b>first commit (Jul 2015) - uses emscripten transpiled compiler to compile solidity from editor</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/ed6f3caf55f95d90a0f546c52b53522b5ee268aa">create basic editor + transpiled compiler</a></li> </ul> </li> <li>next commits optimize compiler API and structure output in frontend and outputs json and show formatted assembly in dom</li> <li> <b>added ethereujs-vm transpiled to execute compiled solidity</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/b09870d6d9220bba2cfc50f7e9c1fd9067e6ce92">add browser evm</a></li> </ul> </li> <li> <b>added first udapp version + map compiler output ABI to web3js</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/dc166a2bee346871b5b05462980f8004baa69588">udapp + web3js</a></li> </ul> </li> <li> <b>deploy from browser to testnet using geth</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/b82177eaaf76b84205d1ca98c55af53924ac5eb8">geth deploy</a></li> </ul> </li> <li>next commits improve udapp, editor and general UX</li> <li>show runtime bytecode</li> <li> <b>start versioning compiler (Sep 2015)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/2ed2a1c0fec4e901f6cf3b3ab4facecc24ec4121">compiler version</a></li> <li><a href="https://github.com/ethereum/remix-ide/commit/3f881d9dbe9c4432c13fbeb215273fb477c59b43">version list</a></li> </ul> </li> <li> <b>highlight errors in editor</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/1581a4c74efaff963b8107a347cd1d5500e454fc">editor errors</a></li> <li><a href="https://github.com/ethereum/remix-ide/commit/3f881d9dbe9c4432c13fbeb215273fb477c59b43">october 2015 - multiple file tabs</a></li> </ul> </li> <li> <b>allow compiler hook for solidity imports</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/9a3352aa34a027597f2459c84e087beef7e46a16">recursive import hooks</a></li> </ul> </li> <li> <b>autodeploy and link bytecode (Oct 2015)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/c6062c5355e3daec6cc9730c675d2f424c4ebf4e">deploy+link</a></li> </ul> </li> <li> <b>use webworkers (Oct 2015)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/2b6b02a769062351fb1b18697ebce3e6fd31495c">webworker</a></li> </ul> </li> <li> <b>update compiler import callback (Jan 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/3e834239158a117086936e8e9ecdea1ea96a49af">compiler callback</a></li> </ul> </li> <li> <b>add multi account to compiler</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/2d8ed0b5d52a308be485e379da1f5d7b89a94661">multiaccount</a></li> </ul> </li> <li> <b>add transaction browser (april 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/6490717a980cc92aad5e54aa6a9ca4af55c68cb2">txbrowser</a></li> </ul> </li> <li> <b>start debugger development (april 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/6490717a980cc92aad5e54aa6a9ca4af55c68cb2">debugger panels</a></li> </ul> </li> <li> <b>add some tests (jun 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/f81756a44ccc926183410b58e3e72365aa7410bb">tape tests</a></li> </ul> </li> <li> <b>add first debugger (july 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/f81756a44ccc926183410b58e3e72365aa7410bb">initial debugger</a></li> </ul> </li> <li> <b>start formal verification of solidity (july 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/519dbe2d4a1536568b98df8b4cd9f9763dc7687f">formal verify</a></li> </ul> </li> <li>many commits to turn editor into IDE with communicating components</li> <li>many commits to improve debugger and other details and testing</li> <li> <b>add dissassembler (Oct 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/64b8bbf4b822f83285326c125415af46ff690958">disassembler</a></li> </ul> </li> <li> <b>start static analysis module (Nov 2016)</b> <ul> <li><a href="https://github.com/ethereum/remix-ide/commit/88df6c9f59f64ce7429f3fedfa897ef6531a9f47">staticAnalysis</a></li> </ul> </li> <li>many commits to refactor/improve/refine debugger and other modules</li> <li>many commits to improve debugger</li> </ul> </details> --> <style> /* Use https://unbounded.polkadot.network/ */ #doc, body { --brightpink: hsla(328, 100%, 55%, 1); --background: #181a1b; --boxes: hsla(328, 100%, 20%, 1); --titles: #e6007a; --text: #ddd; --tablehead: hsla(328, 100%, 30%, 1); --tablecells: hsla(328, 100%, 10%, 1); --tablecells: var(--background); --links: hsla(328, 100%, 55%, 1); --listnumbers: var(--titles); --quotes: #999; } #doc blockquote, .ui-content blockquote { color: var(--quotes) !important; } #doc h1, #doc h2, #doc h3, #doc strong, .ui-content h1, .ui-content h2, .ui-content h3, .ui-content strong { color: var(--titles) !important; letter-spacing: -.02em !important; } body, .ui-view-area, .ui-content, #meta-title-tags > div { background-color: var(--background) !important; } #doc, .ui-content { color: var(--text) !important; } #doc summary, .ui-content summary { cursor: default !important; margin: 0 !important; padding: 0 !important; } #doc details, .ui-content details { background-color: var(--boxes) !important; background-color: var(--background) !important; border-radius: 10px !important; padding-left: 30px; padding-right: 30px; padding-top: 0px; padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; } #doc summary::marker, .ui-content summary::marker { content: ''; } #doc a, #doc a:hover, .ui-content a, .ui-content a:hover { color: var(--links) !important; } #doc table, .ui-content table { border: 0 !important; background-color: var(--background) !important; } #doc thead { border: 2px solid var(--brightpink) !important; border-radius: 10px !important; border-bottom: 1px solid black !important; } #doc tbody, .ui-content tbody { border: 2px solid var(--brightpink) !important; border-top: 1px solid black !important; } #doc th, .ui-content th { border: 1px solid black !important; background-color: var(--tablehead) !important; } #doc td, .ui-content td { border: 1px solid black !important; background-color: var(--tablecells) !important; } #doc ul, #doc ol, .ui-content ul, .ui-content ol { list-style: none !important; } #doc .marker, .ui-content .marker { color: var(--listnumbers) !important; } #doc ul li::before, .ui-content ul li::before { content: "•"; color: white; display: inline-block; width: 1em; margin-left: -1em } </style>