Warping solidity contracts to cairo on windows

StarkNet is a permissionless decentralized ZK-Rollup. It operates as an L2 network over Ethereum, enabling any dApp to achieve unlimited scale for its computation – without compromising Ethereum's composability and security.

On StarkNet, developers can easily deploy any business logic using StarkNet Contracts. StarkNet provides Ethereum-level composability – facilitating easy development and innovation. While Cairo is the native language for a StarkNet contract that fully optimizes the scaling potential of StarkNet, teams are developing transpilers to Cairo from Solidity and other programming languages. These transpilers will allow for a quick deployment on StarkNet. The warp command provides this functionality to convert solidity contracts to cairo.

While Warp is easy to install on Ubuntu and MacOS, it gets tricky for windows users. Being a software engineer/researcher on Windows I'm often told off for staying on windows. This is to help those of you like me!

You can go the hard way of installing a Linux VM on your machine or spinning a Linux server on the cloud but trust me this is way easier. You will need something called WSL. WSL stands for windows subsystem for Linux. WSL enables you to use Linux tools, like Bash or Grep, completely integrated with Windows tools, like PowerShell or Visual Studio Code, with no need to dual-boot. You must be running Windows 10 version 2004 and higher (Build 19041 and higher) or Windows 11.

One way of installing WSL is typing "PowerShell" on ur start bar and opening the app in admin mode. You can then run the command

wsl --install

An easier way is to go to Microsoft Store and get prebuilt ubuntu set up, I have tried this on Ubuntu 20.4.x. You can directly open this app after its installation and you have a new Linux system ready for our purpose. Note that this may take a while to boot. Go ahead and install some dependencies needed for warp such as Python (I recommend 3.7/3.8), node, npm, pip, and yarn via npm through the following commands:

sudo apt update
sudo apt install libz3-dev libgmp3-dev
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.8

check if the installation is done correctly by running

python3.8 --version

you can install node and the package manager npm via

sudo apt install nodejs
sudo apt install npm

Make sure to verify the correct installation by running:

node -v
npm --version

Now you can install yarn.

npm install -g yarn
yarn --version
export PATH="$PATH:$(yarn global bin)"

If you have done all this correctly, you are ready to install warp. You can clone this git repo and run the following commands from the root folder

yarn global add @nethermindeth/warp
warp version
warp install --verbose
warp install --python <path/to/python3.8> --verbose

Now you are all set to wrap and transpile your contracts on starknet. An example ERC20 solidity contract is given in the folder "example_contracts". you can cd into it and run

warp transpile ERC20.sol

If it went right, you should now have a warp_output/example_contracts folder in the root warp folder containing the cairo file. Enjoy converting all your solidity contracts easily into cairo for starknet!