Tooling and APIs
Tooling for EVM/Solidity
EVM has been around for a while and has built a comprehensive library of tools and utilities to interact with the network and contracts. We can categorize the most important tools in various sections and provide the equivalent for IOTA Move in the next section.
Building, testing, interacting, and deploying
There have been various tools in the past to deal with the developer process of building, testing, interacting with, and deploying smart contracts. While you can do everything on a low level as well, interacting with the JSON/RPC API and compiling with solc
is very cumbersome, so some abstractions have been built to make this easier. While there are several options, the most used tool today is Hardhat. Hardhat is a command-line toolkit for EVM development based on TypeScript. It allows you to create new projects, build them, test them with TypeScript tests, run scripts against them (to deploy or interact with these projects), and more. It has a comprehensive set of plugins to get more out of it, such as verifying smart contracts against block explorers or estimating gas prices for the contract you are developing. It's a mature toolkit that comes in very handy for every dApp developer. You can do some of this as well with the web-based Remix - It's more user-friendly for beginners, but it has limited capabilities.
SDKs
Deploying and testing a contract from the command line is one thing, but having a dApp interact with smart contracts is another. In order to do this without doing very cumbersome manual JSON-RPC calls, you need an SDK to abstract this complexity. This is where web3.js and ethers.js come in. Both are targeted towards JS/TS usage and have similar functionality, but usage depends on developer preference. These are the most important SDKs, given most dApp interactions take place using a web browser. There are various other SDKs available for all kinds of languages. There likely is one available for your desired language of choice. Interaction with your contracts depends on using so-called ABI
's, which describe the functions and arguments that can be called on your contract. These are generated and provided to you during compilation by, for example, Hardhat.
Wallets
There are wallets in all sizes and shapes for the EVM ecosystem. The most used and most popular one (but not without its flaws) is Metamask, available as a web browser plugin or mobile application. Metamask is easily integrated directly with web3 dApps, allowing quick and easy interaction between the dApp and your wallet. Newer alternatives have been gaining some traction, but the common denominator is that the popular ones all support easy dApp integration. WalletConnect is another tool in the wallet category that conveniently connects wallets to dApps through a common protocol to avoid the need for a different implementation for each dApp for each wallet. A popular EVM-based product to manage multi-sig wallets is Safe (previously Gnosis safe), which allows multi-part approval of transfers and commands where each individual uses its own signing method (through Metamask, Ledger, or another wallet through WalletConnect) and if a majority is reached the transfer/command is executed.
APIs
The most commonly used API within the EVM ecosystem is the JSON-RPC API exposed by the node you are connecting to. This API is often available in both HTTP and WebSocket form, and the methods exposed can differ slightly depending on the node implementation used.
Editors
Solidity is supported by many editors who are aware of the Solidity syntax and support functionality like syntax checks and linting. While any editor can be used to create Solidity smart contracts, VSCode seems to be quite popular when combined with the Hardhat plugin. This combination allows you to use a modern, Hardhat-aware editor that supports autocompletion, inline code validation, quick go-to functionality, and more.
Tooling for IOTA Move
Building, testing, interacting, and deploying
Unlike with EVM, where open-source third parties create the most used tooling, the tooling to do the most important interactions with an IOTA Move-based chain and smart contracts is actually part of the IOTA Move core. The most essential tool available is the iota
CLI utility, which offers functionality similar to Hardhat. The CLI utility allows you to create new projects, build, test (using Move code, not TypeScript like with Hardhat), and deploy them. Next to that, the CLI tool is also used to interact with the chain(s) it is connected to with access to owned objects and the possibility to call arbitrary smart contract functionality without needing an ABI. While the CLI doesn't have all the functionality Hardhat has, it does function very well. It provides everything you need to get started creating Move code.
SDKs
IOTA Move comes with a convenient Rust and TypeScript SDK right out of the box as part of the IOTA Move core. Next to that, a dApp toolkit is also offered by default, which provides several React components to more easily integrate your IOTA Move contract interaction within your dApp. While TypeScript covers most dApp requirements for an SDK, there might not be an SDK available for your language of choice at the moment. However, You can use one of the APIs directly on a lower level.
Wallets
IOTA Move has an official Browser Extension Wallet supporting direct dApp interaction similar to MetaMask. While the wallet ecosystem is very young, we encourage other wallets to join our efforts. Any new browser-extension-based wallets utilizing the Wallet Standard can be used directly with any dApp made for IOTA Move instead of needing a custom integration.
APIs
IOTA Move comes with a comprehensive JSON-RPC API, similar to the ones offered for EVM. It supports various commands, including commands prefixed with iotax_
, which take advantage of the Indexer to query the requested data. In addition, a newer, more flexible GraphQL-based API is offered, allowing you to create more efficient, complex queries.
Editors
Like with Solidity and Hardhat, you can write IOTA Move code in any editor, in combination with the CLI utilities, But the recommended editor to get the most out of the experience is VSCode as well in combination with the Move extension. This will add language support for Move to VSCode, allowing you to instantly see any mistakes made with inline code validation, go-to support, and more, offering a similar editor experience to the one for EVM.
Conclusion
IOTA Move is quite new compared to the EVM ecosystem, and this is reflected in the amount of tooling available. The tooling available, though, is often offered as part of the core software, is of high quality, and offers everything you need to develop, interact with, and manage your dApps successfully.