<strong>Block Explorer URL (Optional):</strong> <a href="https://testnet-algorand-rollup.a1.milkomeda.com" target="_blank" rel="noopener noreferrer">https://testnet-algorand-rollup.a1.milkomeda.com</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-dummy-evm-account-to-test">Create a Dummy EVM Account To Test<a class="hash-link" href="#create-a-dummy-evm-account-to-test" title="Direct link to heading"></a></h2><p>To test the bridging of wrapped ALGOs to Milkomeda, let’s create a dummy EVM account with a simple Python snippet.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> secrets</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> sha3 </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> keccak_256</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> coincurve </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> PublicKey</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">private_key </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> keccak_256</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">secrets</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">token_bytes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">32</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">digest</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">public_key </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> PublicKey</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">from_valid_secret</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">private_key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">format</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">compressed</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">addr </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> keccak_256</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">public_key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">digest</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'private_key:'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> private_key</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">hex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'eth addr: 0x'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> addr</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">hex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This will generate a private key which you can now use to import the account into Metamask.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p><strong>Important:</strong> Please do not use an account generated like this for real funds. The randomness of the proposed process is insufficient to ensure the security of your funds.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="bridge-testnet-algo-to-milkomeda-a1">Bridge Testnet ALGO to Milkomeda A1<a class="hash-link" href="#bridge-testnet-algo-to-milkomeda-a1" title="Direct link to heading"></a></h2><p>Go to the <a href="https://algorand-bridge-dev.milkomeda.com/" target="_blank" rel="noopener noreferrer">Milkomeda A1 bridge DApp</a> and follow these steps:</p><blockquote><ol><li>Select “Devnet” in top right select box</li><li>On Network Origin, select “Algorand to Milkomeda”</li><li>On Token, select “ALGO” and enter desired amount</li><li>Click “Connect Wallet” Algorand, select Pera Wallet and enter your password</li><li>Click “Connect Wallet” Metamask to connect to your EVM address on A1</li><li>Click “Next,” then “Sign and Send”</li><li>Enter your “Pera Wallet” password again to sign the transaction</li></ol></blockquote><p>Assuming the previous steps were executed successfully, you should now be able to see your bridged ALGOs in Metamask. Following the link will show the transaction on the <a href="https://bridge-explorer.milkomeda.com/algorand-devnet" target="_blank" rel="noopener noreferrer">A1 Bridge Explorer</a>.</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image3-9a2b39d3732261b1af1f280dc381452c.png" class="img-full img_ev3q" alt="Confirmation"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="compile-and-deploy-to-milkomeda-a1-a-simplestorage-contract-written-in-solidity-using-brownie">Compile and Deploy to Milkomeda A1 a SimpleStorage Contract Written in Solidity Using Brownie<a class="hash-link" href="#compile-and-deploy-to-milkomeda-a1-a-simplestorage-contract-written-in-solidity-using-brownie" title="Direct link to heading"></a></h2><p>Assuming one doesn’t have Brownie installed, create a virtual environment and install Brownie by:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">python -m venv venv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">source</span><span class="token plain"> venv/bin/activate</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> eth-brownie</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Initialize a brownie project in a new working directory:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie init milkomeda </span><span class="token operator" style="color:#393A34">&&</span><span class="token plain"> </span><span class="token builtin class-name">cd</span><span class="token plain"> milkomeda</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Now let’s create a very simple Solidity contract. In the contracts folder, create a file called Storage.sol, and add the following solidity code:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// SPDX-License-Identifier: GPL-3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pragma solidity ^0.8.0;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">contract Storage {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> uint256 number;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> function store(uint256 num) public {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> number = num;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> function retrieve() public view returns (uint256){</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> return number;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Run the following command from the root of the created working directory to compile the contract:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie compile</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>To check the available networks that are configured in your brownie installation, run:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie networks list</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><img loading="lazy" src="/milkomeda-documentation/assets/images/image4-975ba5c35d8c61e4c87674b7f5bc0c30.png" class="img-full img_ev3q" alt="Network List"><p>Milkomeda A1 will not be available by default, so we need to add it. To do that, either edit the file ~/.brownie/network-config.yaml and add the following lines:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- name: Milkomeda</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> networks:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> - name: Algorand Testnet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> id: milkomeda-algorand-testnet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> host: https://rpc-devnet-algorand-rollup.a1.milkomeda.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> chainid: 200202</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> explorer: https://testnet-algorand-rollup.a1.milkomeda.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>OR use the brownie CLI:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie networks </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> Milkomeda milkomeda-algorand-testnet </span><span class="token assign-left variable" style="color:#36acaa">chainid</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">200202</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">explorer</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">https://testnet-algorand-rollup.a1.milkomeda.com </span><span class="token assign-left variable" style="color:#36acaa">host</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">https://rpc-devnet-algorand-rollup.a1.milkomeda.com </span><span class="token assign-left variable" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Milkomeda Testnet"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If successful, one should now see it in the list, which can be queried with complete details by:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie networks list </span><span class="token boolean" style="color:#36acaa">true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><img loading="lazy" src="data:image/png;base64,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" class="img-full img_ev3q" alt="Pera Wallet"><p>We will add the private key to use the created (EVM) account. Create a file called brownie-config.yml in the root directory, and point to a private key from a .env file.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">dotenv: .env</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wallets:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> - dummy: ${PRIVATE_KEY}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Now, we have everything ready to deploy our Storage smart contract on Milkomeda A1.** </p><p>In the scripts folder, create a file named deploy.py, and add the following code:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> brownie </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Storage</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> accounts</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> signer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> accounts</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"wallets"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"dummy"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Storage</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">deploy</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"from"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> signer</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>From brownie, we are importing Storage to be able to use the compiled contract, accounts so we can add the account by private key and config to be able to access the key/value pairs stored in the brownie-config.yml file.</p><p>Then, we can create the signer account and deploy the contract in the main function.</p><p>We can now deploy the contract on Milkomeda A1 by running the script from the terminal and indicating the A1 network:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie run scripts/deploy.py --network milkomeda-algorand-testnet</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The output should be:</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image6-730bf35c88f91b62df1c00242f83286b.png" class="img-full img_ev3q" alt="Contract Deployment"><p>The contract has been deployed, and you can check the transaction on the <a href="https://explorer-devnet-algorand-rollup.a1.milkomeda.com/tx/0x881eaedcdbe6b965d77bf84383d5e4235bb46aeeaaedffddc385ed4ed1b59909" target="_blank" rel="noopener noreferrer">A1 Milkomeda Devnet EVM Explorer</a>:</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image7-65fdba487d9b82bdb5e4ef47614f10e9.png" class="img-full img_ev3q" alt="Explorer"><p>To interact with the smart contract, let’s create a separate file called <strong>call.py</strong> in the scripts directory and add the following code:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> brownie </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Storage</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Contract</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> accounts</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">signer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> accounts</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"wallets"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"dummy"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> contract_address </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0xE389A7d21a98497d953a3fc3bf283BF5107fc621"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> storage </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Contract</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">from_abi</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Storage"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> abi</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">Storage</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">abi</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> address</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">contract_address</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> stored_value </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> storage</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">retrieve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Current value is:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> stored_value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> storage</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">stored_value </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"from"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> signer</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> stored_value </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> storage</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">retrieve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Current value is:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> stored_value</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The only new import here is the <strong>Contract</strong> class to create the contract object by calling the <strong>.from_abi</strong> method, which takes name, abi, and contract address as inputs. The contract address was copied from the deployment output and hard coded here.</p><p>We then call the retrieve method on our contract to read the stored value in the <strong>number</strong> variable. Then we store a new value and read it again. To call this script from the terminal, run the following in the terminal:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">brownie run scripts/call.py --network milkomeda-algorand-testnet</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The expected output will resemble the following format:</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image8-d4502531f859a2edf7bb6757254485c4.png" class="img-full img_ev3q" alt="Call Contract"><p><strong>Congratulations, the contract deployment and interaction on Milkomeda A1 have been completed successfully. This way, we have been able to utilize an EVM-based smart contract on the Algorand blockchain.</strong></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="bonus---compile-the-same-contract-using-vyper-and-deploy-using-web3py">Bonus - Compile the Same Contract Using Vyper and Deploy Using web3py<a class="hash-link" href="#bonus---compile-the-same-contract-using-vyper-and-deploy-using-web3py" title="Direct link to heading"></a></h2><p>We can now look at an example of deploying the same smart contract but written in Vyper, using only web3py.</p><p>First, we will need the abi and bytecode of the contract:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> vyper</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c"># @version ^0.3.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">val: public(uint256) # 0 to 2 ** 256 - 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">@external</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">def __init__():</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c"> self.val = 0</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">@external</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">@view</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">def retrieve() -> uint256:</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c"> return self.val</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">@external</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">def store(_val: uint256) -> uint256:</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c"> self.val = _val</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c"> return self.val</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">compiled </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> vyper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">compile_code</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">source</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> output_formats</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'abi'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'bytecode'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">abi </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> compiled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'abi'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bytecode </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> compiled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'bytecode'</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Now let’s connect to the Milkomeda A1 through the RPC URL.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> web3 </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Web3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">rpc_url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://rpc-devnet-algorand-rollup.a1.milkomeda.com"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">chain_id </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">200202</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">web3 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Web3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">HTTPProvider</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rpc_url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Connected to Milkomeda:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">isConnected</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Set up the account </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> the generated private key </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">assuming it’s </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> the </span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">env </span><span class="token builtin">file</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> eth_account </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Account</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> eth_account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">signers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">local </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> LocalAccount</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> dotenv </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> dotenv_values</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> dotenv_values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">".env"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">private_key </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> config</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'PRIVATE_KEY'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> LocalAccount </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">from_key</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">private_key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Your wallet address is </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">account</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">address</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">balance </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get_balance</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">address</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Balance: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">web3</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">fromWei</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">balance</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">,</span><span class="token string-interpolation interpolation"> </span><span class="token string-interpolation interpolation string" style="color:#e3116c">'ether'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">:</span><span class="token string-interpolation interpolation format-spec">,.5</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Create the contract instance from the abi and bytecode and call the constructor function to deploy the contract.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">contract </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contract</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">abi</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">abi</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> bytecode</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">bytecode</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">transaction </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> contract</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">build_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"from"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">address</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'nonce'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">getTransactionCount</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">address</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gas'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">90000</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gasPrice'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">toWei</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">50</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gwei'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'chainId'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> chain_id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">signed_tx </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sign_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">transaction</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> private_key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tx_hash </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">send_raw_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">signed_tx</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">rawTransaction</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Waiting for transaction </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">web3</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">toHex</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">tx_hash</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> to be included in a block..."</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">wait_for_transaction_receipt</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">toHex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tx_hash</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">contract_address </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'contractAddress'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Contract deployed at:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> contract_address</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Until this point, the code would produce the following output:</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image9-f19f8fcfdc199b7f732b04903701ff4a.png" class="img-full img_ev3q" alt="Deploy"><p>and we can look up the transaction or the deployed contract on the <a href="https://explorer-devnet-algorand-rollup.a1.milkomeda.com/address/0x39013492b1bC84D9dF64d79e67D99f71F71BDA8B" target="_blank" rel="noopener noreferrer">A1 Devnet EVM Explorer</a></p><p>Now to interact with the contract, we can call the retrieve function to get the stored value, change the value with the store function and then retrieve the value again.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">deployed_contract </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contract</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">abi</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">abi</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> address</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">contract_address</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">stored_value </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> deployed_contract</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">functions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">retrieve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Stored value in contract:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> stored_value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">new_value </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> stored_value </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Calling contract to store the value"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> new_value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">txn </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> deployed_contract</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">functions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">new_value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">build_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"from"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">address</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'nonce'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">getTransactionCount</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">address</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gas'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">90000</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gasPrice'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">toWei</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">50</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gwei'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">'chainId'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> chain_id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">signed_tx </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">account</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sign_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">txn</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> private_key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tx_hash </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">send_raw_transaction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">signed_tx</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">rawTransaction</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Waiting for transaction </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">web3</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">toHex</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">tx_hash</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> to be included in a block..."</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">eth</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">wait_for_transaction_receipt</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">web3</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">toHex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tx_hash</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">stored_value </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> deployed_contract</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">functions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">retrieve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"New stored value in contract:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> stored_value</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The expected output will resemble the following format:</p><img loading="lazy" src="/milkomeda-documentation/assets/images/image10-c05ac75390617cd47366dd3bd2668760.png" class="img-full img_ev3q" alt="Deploy Web3"><p>In this guide, we learned how to deploy a Solidity smart contract on Milkomeda A1, an EVM-compatible rollup on Algorand. First, we set up an Algorand wallet, obtained testnet ALGO, and bridged them to Milkomeda A1. Then, we compiled and deployed a simple Solidity contract called Storage to Milkomeda A1 using the Python-based development framework Brownie.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/milkomeda-documentation/category/guides-1"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guides</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/milkomeda-documentation/algorand/guides/add_subgraph_to_milkomeda"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Adding a subgraph to A1</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#setup-an-algorand-wallet" class="table-of-contents__link toc-highlight">Setup an Algorand Wallet</a></li><li><a href="#get-some-testnet-algo" class="table-of-contents__link toc-highlight">Get Some Testnet ALGO</a></li><li><a href="#add-the-milkomeda-algorand-testnet-to-metamask" class="table-of-contents__link toc-highlight">Add the Milkomeda Algorand Testnet to Metamask</a></li><li><a href="#create-a-dummy-evm-account-to-test" class="table-of-contents__link toc-highlight">Create a Dummy EVM Account To Test</a></li><li><a href="#bridge-testnet-algo-to-milkomeda-a1" class="table-of-contents__link toc-highlight">Bridge Testnet ALGO to Milkomeda A1</a></li><li><a href="#compile-and-deploy-to-milkomeda-a1-a-simplestorage-contract-written-in-solidity-using-brownie" class="table-of-contents__link toc-highlight">Compile and Deploy to Milkomeda A1 a SimpleStorage Contract Written in Solidity Using Brownie</a></li><li><a href="#bonus---compile-the-same-contract-using-vyper-and-deploy-using-web3py" class="table-of-contents__link toc-highlight">Bonus - Compile the Same Contract Using Vyper and Deploy Using web3py</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 Milkomeda Foundation. Built with Docusaurus.</div></div></div></footer></div>