# Polkadot CLI CLI name: `dot` Example command: ```shell dot serve ``` Will spin up Polkadot Solidity development environment locally. ## CLI Purpose Develop and deploy on Polkadot. # Milestone 1 There is a strong emphasis on the outcome of this milestone being a production-ready deployment of a Solidity contract to Polkadot Hub on Polkadot. ### Spin up Polkadot Solidity development environment - (Relay Chain + Polkadot Hub + Tangerine) - Should be cross-chain compatible - Should be configurable e.g. Polkadot Hub + Parachain A + Parachain B - Define our own template that can be used to spin up networks which ultimately translates to a Zombienet network configuration behind the scenes - Allow for multiple Solidity contracts to be pre-deployed for development purposes - Deploy a Solidity contract to Polkadot Hub (using Talisman) - Deploy to Westend Polkadot Hub - Deploy to Polkadot Hub on Polkadot ### Education - Workshops - How to develop & deploy a Solidty smart contract on Polkadot - How to do cross-chain Solidity-to-Solidity calls - e.g. Polkadot Hub <--> Tangerine - How to use the Polkadot Hub precompiles ## Technical - Strong emphasis on unit testing and e2e test coverage - Use [Codecov](https://codecov.io) and maintain above 85% percent coverage. - Use Rust, use omni-node, look into zombienet-sdk, chain-spec-builder - Adhere to best practices - `master` branch protected - Cannot directly commit to `master` - Pull request everything - 1 member code review required for PR to be merged - I (bruno) would like to review all PRs in the early stages of development to ensure we coding and architecting according to best practices - Rust Docs for code - The CLI should be built in the form of an SDK so that later we can slap a UI over it and have developers build and deploy on Polkadot using the UI ### TODO - Compile a Solidity contract from the command-line using revive compiler - Define CLI syntax for milestone 1 ``` dot ... ``` Will spin up the Polkadot Solidity development enviroment. - Use [shuttle.dev](https://www.shuttle.dev) and other well-established CLI’s as inspiration for DevX and syntax ### Tangerine A PVM/Solidity development parachain with useful, experimental features e.g. ISMP - One main purpose of Tangerine will be to test cross-chain Solidity-to-Solidity use cases. ## Future - CLI will widen its scope to include JAM dApp/service development and deployment. - The CLI will have templates for unique Polkadot Solidity use cases and JAM services. - template generation can either be static - or preferably leveraging AI to generate the templates ## Assumptions - Developers will want to build on Polkadot - Building a blockchain is *more* rare - Developers want to quickly build on Polkadot - Developers will want to spin up a development network to deploy Solidity contracts to - Developers will want to spin up Polkadot Hub + other parachains to deploy Solidity contracts that leverage cross-chain capabilities - Developers will want to deploy a Solidity contract on Polkadot - Developers will want to develop JAM services - Developers will want to deploy JAM services ## Further development of Tangerine ### Governance - A governance chain that dApps can leverage to build their DAOs. - A UI to instantiate your own DAO, pay fee, interact with the DAO - Teams can pick different categories of DAOs - Collectives / Membership - Gov v1 - Gov v2 - PVM/Solidity layer for customization of DAO - “Hooks” for developers to add customization to DAO logic - The Tangerine core team can add additional logic - Assets Pallet - e.g. Mint asset on Polkadot Hub, make it accessible on this chain for voting purposes ## Polkadot Dev CLI CLI name: `core` Example syntax ```shell core lint ``` Will lint the project in the current directory ## CLI Purpose Core protocol development whether it is Polkadot SDK protocol development, parachain runtime development, pallet development, or JAM protocol development.