%global _empty_manifest_terminate_build 0 Name: python-sol-warp Version: 1.2.0 Release: 1 Summary: A Solidity to Cairo Transpiler License: Apache 2.0 URL: https://github.com/NethermindEth/warp Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e9/ac/c5f6d6f82e29403060d4a3b4d87e1c3ad1bc8fc58c6ca8ffc39a0d171499/sol-warp-1.2.0.tar.gz BuildArch: noarch Requires: python3-pytest Requires: python3-pytest-check Requires: python3-pytest-xdist Requires: python3-cairo-lang Requires: python3-web3 Requires: python3-eth-abi Requires: python3-click Requires: python3-importlib_resources Requires: python3-black %description # Warp Warp brings Solidity to StarkNet, making it possible to transpile Ethereum smart contracts to Cairo, and use them on StarkNet. ## Table of Contents :clipboard: - [NOTE](#note) - [Warp](#warp) - [Table of Contents :clipboard:](#table-of-contents-clipboard) - [Installation :gear:](#installation-gear) - [Setting up autocompletion](#setting-up-autocompletion) - [Usage :computer:](#usage-computer) - [Solidity Constructs Currently Not Supported](#solidity-constructs-currently-not-supported) - [Want to contribute? :thumbsup:](#want-to-contribute-thumbsup) - [License](#license) ## Installation :gear: Prerequisites: Make sure your Solidity compiler version is >= 0.8.0 Linux: ``` sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install -y python3.7 sudo apt install -y python3.7-dev sudo apt install -y libgmp3-dev sudo apt install -y libboost-all-dev sudo apt-get install -y python3.7-venv python3.7 -m venv ~/warp source ~/warp/bin/activate pip install z3-solver ``` MacOs: ``` brew install python@3.7 brew install gmp brew install boost brew install z3 python3.7 -m venv ~/warp source ~/warp/bin/activate ``` Install Warp: ``` pip install sol-warp ``` ## Setting up autocompletion Warp comes with support for command line completion in bash, zsh, and fish for bash: ``` eval "$(_WARP_COMPLETE=bash_source warp)" >> ~/.bashrc ``` for zsh: ``` eval "$(_WARP_COMPLETE=zsh_source warp)" >> ~/.zshrc ``` for fish: ``` _WARP_COMPLETE=fish_source warp > ~/.config/fish/completions/warp.fish ``` ## Usage :computer: You can transpile your Solidity contracts with: ``` warp transpile FILE_PATH CONTRACT_NAME ``` To see the cairo output of the transpilation process: ``` warp transpile FILE_PATH CONTRACT_NAME --cairo-output ``` `CONTRACT_NAME` is the name of the primary contract (non-interface, non-library, non-abstract contract) that you wish to transpile To deploy the transpiled program to Starknet use: ``` warp deploy CONTRACT.json ``` To invoke a public/external method use: ``` warp invoke --program CONTRACT.json --address ADDRESS --function FUNCTION_NAME --inputs 'INPUTS' ``` Here's an example that shows you the format of the inputs for `inputs`: Let's say we want to call the following Solidity function in a contract that we've transpiled & deployed on StarkNet: ```solidity struct Person { uint age; uint height; } function validate(address _ownerCheck, Person calldata _person, uint _ownerCellNumberCheck) public view returns (bool) { return (owner == _ownerCheck && ownerAge == _person.age && ownerCellNumber == _ownerCellNumberCheck); } ``` The command to call this function would be: ```bash warp invoke --program CONTRACT.json --address ADDRESS --function validate \ --inputs '[0x07964d2123425737cd3663bec47c68db37dc61d83fee74fc192d50a59fb7ab56, (26, 200), 7432533831]' ``` The `--inputs` flag, if not empty, should always be an 'array'. As you can see, we have passed the struct fields as a tuple, their order should be the same as their declaration order (i.e `age` first, `person` second). If the first argument to the `validate` function was an array of uint's, then we'd pass it in as you'd expect: ```bash --inputs = '[[42,1722,7], (26, 200), 7432533831]' ``` If you're passing in the `bytes` Solidity type as an argument, use the python syntax, for example: ```bash --inputs = '[[10,20], b"\x01\x02"]' ``` You can check the status of your transaction with: ``` warp status TX_HASH ``` ## Testing with Warp You'll find an example of how to write tests in your solidity contract, and then call `warp test` to run them in `src/warp/test_tool/example`. For the tests to work, you'll need to run `warp test` from a parent directory where your solidity contracts are in a directory named `contracts`, as per the example mentioned above. ## Solidity Constructs Currently Not Supported | Support Status | Symbol | | :-----------------------------: | :---------------: | | Will likely never be supported | :x: | | Support will land soon | :hammer_and_pick: | | Will be supported in the future | :exclamation: | | Currently Unknown | :question: |
| Solidity | Support Status | | :---------------: | :------------: | | try/catch | :question: | | msg.value | :x: | | tx.origin | :exclamation: | | tx.gasprice | :question: | | block.basefee | :x: | | block.chainid | :exclamation: | | block.coinbase | :question: | | block.difficulty | :x: | | block.gaslimit | :question: | | gasleft() | :question: | | functions as data | :x: | | precompiles | :exclamation: | | create/create2 | :exclamation: | | Selfdestruct | :x: | | BlockHash | :exclamation: | | Yul | Support Status | | :----------: | :------------: | | linkersymbol | :question: | | codeCopy | :question: | | codeSize | :question: | Run `solc --optimize --ir-optimized ` to see if your Solidity results in any of these YUL constructs.
## Want to contribute? :thumbsup: Your contributions are always welcome, see [contribution guidelines](CONTRIBUTING.md). ## License [Apache License](LICENSE) Version 2.0, January 2004. %package -n python3-sol-warp Summary: A Solidity to Cairo Transpiler Provides: python-sol-warp BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-sol-warp # Warp Warp brings Solidity to StarkNet, making it possible to transpile Ethereum smart contracts to Cairo, and use them on StarkNet. ## Table of Contents :clipboard: - [NOTE](#note) - [Warp](#warp) - [Table of Contents :clipboard:](#table-of-contents-clipboard) - [Installation :gear:](#installation-gear) - [Setting up autocompletion](#setting-up-autocompletion) - [Usage :computer:](#usage-computer) - [Solidity Constructs Currently Not Supported](#solidity-constructs-currently-not-supported) - [Want to contribute? :thumbsup:](#want-to-contribute-thumbsup) - [License](#license) ## Installation :gear: Prerequisites: Make sure your Solidity compiler version is >= 0.8.0 Linux: ``` sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install -y python3.7 sudo apt install -y python3.7-dev sudo apt install -y libgmp3-dev sudo apt install -y libboost-all-dev sudo apt-get install -y python3.7-venv python3.7 -m venv ~/warp source ~/warp/bin/activate pip install z3-solver ``` MacOs: ``` brew install python@3.7 brew install gmp brew install boost brew install z3 python3.7 -m venv ~/warp source ~/warp/bin/activate ``` Install Warp: ``` pip install sol-warp ``` ## Setting up autocompletion Warp comes with support for command line completion in bash, zsh, and fish for bash: ``` eval "$(_WARP_COMPLETE=bash_source warp)" >> ~/.bashrc ``` for zsh: ``` eval "$(_WARP_COMPLETE=zsh_source warp)" >> ~/.zshrc ``` for fish: ``` _WARP_COMPLETE=fish_source warp > ~/.config/fish/completions/warp.fish ``` ## Usage :computer: You can transpile your Solidity contracts with: ``` warp transpile FILE_PATH CONTRACT_NAME ``` To see the cairo output of the transpilation process: ``` warp transpile FILE_PATH CONTRACT_NAME --cairo-output ``` `CONTRACT_NAME` is the name of the primary contract (non-interface, non-library, non-abstract contract) that you wish to transpile To deploy the transpiled program to Starknet use: ``` warp deploy CONTRACT.json ``` To invoke a public/external method use: ``` warp invoke --program CONTRACT.json --address ADDRESS --function FUNCTION_NAME --inputs 'INPUTS' ``` Here's an example that shows you the format of the inputs for `inputs`: Let's say we want to call the following Solidity function in a contract that we've transpiled & deployed on StarkNet: ```solidity struct Person { uint age; uint height; } function validate(address _ownerCheck, Person calldata _person, uint _ownerCellNumberCheck) public view returns (bool) { return (owner == _ownerCheck && ownerAge == _person.age && ownerCellNumber == _ownerCellNumberCheck); } ``` The command to call this function would be: ```bash warp invoke --program CONTRACT.json --address ADDRESS --function validate \ --inputs '[0x07964d2123425737cd3663bec47c68db37dc61d83fee74fc192d50a59fb7ab56, (26, 200), 7432533831]' ``` The `--inputs` flag, if not empty, should always be an 'array'. As you can see, we have passed the struct fields as a tuple, their order should be the same as their declaration order (i.e `age` first, `person` second). If the first argument to the `validate` function was an array of uint's, then we'd pass it in as you'd expect: ```bash --inputs = '[[42,1722,7], (26, 200), 7432533831]' ``` If you're passing in the `bytes` Solidity type as an argument, use the python syntax, for example: ```bash --inputs = '[[10,20], b"\x01\x02"]' ``` You can check the status of your transaction with: ``` warp status TX_HASH ``` ## Testing with Warp You'll find an example of how to write tests in your solidity contract, and then call `warp test` to run them in `src/warp/test_tool/example`. For the tests to work, you'll need to run `warp test` from a parent directory where your solidity contracts are in a directory named `contracts`, as per the example mentioned above. ## Solidity Constructs Currently Not Supported | Support Status | Symbol | | :-----------------------------: | :---------------: | | Will likely never be supported | :x: | | Support will land soon | :hammer_and_pick: | | Will be supported in the future | :exclamation: | | Currently Unknown | :question: |
| Solidity | Support Status | | :---------------: | :------------: | | try/catch | :question: | | msg.value | :x: | | tx.origin | :exclamation: | | tx.gasprice | :question: | | block.basefee | :x: | | block.chainid | :exclamation: | | block.coinbase | :question: | | block.difficulty | :x: | | block.gaslimit | :question: | | gasleft() | :question: | | functions as data | :x: | | precompiles | :exclamation: | | create/create2 | :exclamation: | | Selfdestruct | :x: | | BlockHash | :exclamation: | | Yul | Support Status | | :----------: | :------------: | | linkersymbol | :question: | | codeCopy | :question: | | codeSize | :question: | Run `solc --optimize --ir-optimized ` to see if your Solidity results in any of these YUL constructs.
## Want to contribute? :thumbsup: Your contributions are always welcome, see [contribution guidelines](CONTRIBUTING.md). ## License [Apache License](LICENSE) Version 2.0, January 2004. %package help Summary: Development documents and examples for sol-warp Provides: python3-sol-warp-doc %description help # Warp Warp brings Solidity to StarkNet, making it possible to transpile Ethereum smart contracts to Cairo, and use them on StarkNet. ## Table of Contents :clipboard: - [NOTE](#note) - [Warp](#warp) - [Table of Contents :clipboard:](#table-of-contents-clipboard) - [Installation :gear:](#installation-gear) - [Setting up autocompletion](#setting-up-autocompletion) - [Usage :computer:](#usage-computer) - [Solidity Constructs Currently Not Supported](#solidity-constructs-currently-not-supported) - [Want to contribute? :thumbsup:](#want-to-contribute-thumbsup) - [License](#license) ## Installation :gear: Prerequisites: Make sure your Solidity compiler version is >= 0.8.0 Linux: ``` sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install -y python3.7 sudo apt install -y python3.7-dev sudo apt install -y libgmp3-dev sudo apt install -y libboost-all-dev sudo apt-get install -y python3.7-venv python3.7 -m venv ~/warp source ~/warp/bin/activate pip install z3-solver ``` MacOs: ``` brew install python@3.7 brew install gmp brew install boost brew install z3 python3.7 -m venv ~/warp source ~/warp/bin/activate ``` Install Warp: ``` pip install sol-warp ``` ## Setting up autocompletion Warp comes with support for command line completion in bash, zsh, and fish for bash: ``` eval "$(_WARP_COMPLETE=bash_source warp)" >> ~/.bashrc ``` for zsh: ``` eval "$(_WARP_COMPLETE=zsh_source warp)" >> ~/.zshrc ``` for fish: ``` _WARP_COMPLETE=fish_source warp > ~/.config/fish/completions/warp.fish ``` ## Usage :computer: You can transpile your Solidity contracts with: ``` warp transpile FILE_PATH CONTRACT_NAME ``` To see the cairo output of the transpilation process: ``` warp transpile FILE_PATH CONTRACT_NAME --cairo-output ``` `CONTRACT_NAME` is the name of the primary contract (non-interface, non-library, non-abstract contract) that you wish to transpile To deploy the transpiled program to Starknet use: ``` warp deploy CONTRACT.json ``` To invoke a public/external method use: ``` warp invoke --program CONTRACT.json --address ADDRESS --function FUNCTION_NAME --inputs 'INPUTS' ``` Here's an example that shows you the format of the inputs for `inputs`: Let's say we want to call the following Solidity function in a contract that we've transpiled & deployed on StarkNet: ```solidity struct Person { uint age; uint height; } function validate(address _ownerCheck, Person calldata _person, uint _ownerCellNumberCheck) public view returns (bool) { return (owner == _ownerCheck && ownerAge == _person.age && ownerCellNumber == _ownerCellNumberCheck); } ``` The command to call this function would be: ```bash warp invoke --program CONTRACT.json --address ADDRESS --function validate \ --inputs '[0x07964d2123425737cd3663bec47c68db37dc61d83fee74fc192d50a59fb7ab56, (26, 200), 7432533831]' ``` The `--inputs` flag, if not empty, should always be an 'array'. As you can see, we have passed the struct fields as a tuple, their order should be the same as their declaration order (i.e `age` first, `person` second). If the first argument to the `validate` function was an array of uint's, then we'd pass it in as you'd expect: ```bash --inputs = '[[42,1722,7], (26, 200), 7432533831]' ``` If you're passing in the `bytes` Solidity type as an argument, use the python syntax, for example: ```bash --inputs = '[[10,20], b"\x01\x02"]' ``` You can check the status of your transaction with: ``` warp status TX_HASH ``` ## Testing with Warp You'll find an example of how to write tests in your solidity contract, and then call `warp test` to run them in `src/warp/test_tool/example`. For the tests to work, you'll need to run `warp test` from a parent directory where your solidity contracts are in a directory named `contracts`, as per the example mentioned above. ## Solidity Constructs Currently Not Supported | Support Status | Symbol | | :-----------------------------: | :---------------: | | Will likely never be supported | :x: | | Support will land soon | :hammer_and_pick: | | Will be supported in the future | :exclamation: | | Currently Unknown | :question: |
| Solidity | Support Status | | :---------------: | :------------: | | try/catch | :question: | | msg.value | :x: | | tx.origin | :exclamation: | | tx.gasprice | :question: | | block.basefee | :x: | | block.chainid | :exclamation: | | block.coinbase | :question: | | block.difficulty | :x: | | block.gaslimit | :question: | | gasleft() | :question: | | functions as data | :x: | | precompiles | :exclamation: | | create/create2 | :exclamation: | | Selfdestruct | :x: | | BlockHash | :exclamation: | | Yul | Support Status | | :----------: | :------------: | | linkersymbol | :question: | | codeCopy | :question: | | codeSize | :question: | Run `solc --optimize --ir-optimized ` to see if your Solidity results in any of these YUL constructs.
## Want to contribute? :thumbsup: Your contributions are always welcome, see [contribution guidelines](CONTRIBUTING.md). ## License [Apache License](LICENSE) Version 2.0, January 2004. %prep %autosetup -n sol-warp-1.2.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-sol-warp -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 1.2.0-1 - Package Spec generated