<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>NodeInt</title><generator>teletype.in</generator><description><![CDATA[Educational channel about testnets, nodes, and terms of reference.
Medium Channel:  https://medium.com/@Upnode
Telegram : https://t.me/Up_Node_group]]></description><image><url>https://img3.teletype.in/files/ef/c6/efc62fa1-4dd6-4171-81e2-0d7f0629b41f.png</url><title>NodeInt</title><link>https://teletype.in/@nodeint</link></image><link>https://teletype.in/@nodeint?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/nodeint?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/nodeint?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 05 Apr 2026 06:05:10 GMT</pubDate><lastBuildDate>Sun, 05 Apr 2026 06:05:10 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@nodeint/Native_staking_with_Aleo</guid><link>https://teletype.in/@nodeint/Native_staking_with_Aleo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Native_staking_with_Aleo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Native Staking on Aleo Network</title><pubDate>Fri, 01 Nov 2024 00:31:50 GMT</pubDate><description><![CDATA[<img src="https://img4.teletype.in/files/35/85/3585931a-cfd4-4fd5-9287-19a79634f3a6.png"></img>The current estimated reward rate of Aleo is 31.11%. This means that, on average, stakers of Aleo are earning about 31.11% if they hold an asset for 365 days. 24 hours ago the reward rate for Aleo was 29.30%. 30 days ago, the reward rate for Aleo was 19.68%. Today, the staking ratio, or the percentage of eligible tokens currently being staked, is 507.16%. In other words, there are 545.5M of Aleo staked, which means that Aleo has a staking market cap of CA$1.1B. This is compared to a total asset market cap of CA$215.4M.]]></description><content:encoded><![CDATA[
  <figure id="KMgV" class="m_column">
    <img src="https://img4.teletype.in/files/35/85/3585931a-cfd4-4fd5-9287-19a79634f3a6.png" width="423" />
  </figure>
  <p id="YZj9">The current estimated reward rate of Aleo is 31.11%. This means that, on average, stakers of Aleo are earning about 31.11% if they hold an asset for 365 days. 24 hours ago the reward rate for Aleo was 29.30%. 30 days ago, the reward rate for Aleo was 19.68%. Today, the staking ratio, or the percentage of eligible tokens currently being staked, is 507.16%. In other words, there are 545.5M of Aleo staked, which means that Aleo has a staking market cap of CA$1.1B. This is compared to a total asset market cap of CA$215.4M.</p>
  <h3 id="8ERF">What is Native Staking</h3>
  <p id="ZB1v">Native staking is the process of locking up (or &quot;staking&quot;) a blockchain&#x27;s native cryptocurrency to support its network operations, such as transaction validation, network security, and governance. In return for staking, participants (often called &quot;delegators&quot; or &quot;validators&quot;) receive rewards, typically in the form of the same cryptocurrency they have staked. <br /><br />One can participate in the consensus of the Aleo network by Native Staking or by liquid staking.  In this technical article we will be discussing how to stake natively on the Aleo network. Below are the key aspects involved in staking natively on the Aleo network.</p>
  <ol id="3zXe">
    <li id="zMrG"><strong>Native Cryptocurrency</strong>: To participate in Native staking specifically involves the Aleo  blockchain’s native token ($ALEO). This token is used within the network for staking and rewards.</li>
    <li id="0X0c"><strong>Proof of Stake (PoS) Consensus</strong>: Native staking is fundamental to Proof of Stake (PoS) or its variations. The network delegators are responsible for helping validate blocks, which is a central feature of PoS networks. To protect the integrity of the Aleo blockchain, the PoS consensus is adopted. </li>
    <li id="bOIz"><strong>Rewards and Incentives</strong>: Delegators who participates in the native staking often receive rewards in proportion to their staked amount. This can come in the form of newly minted tokens, providing an incentive to participate in network security.</li>
    <li id="SUsD"><strong>Security and Governance</strong>: By participating in Native staking, delegators helps protect the Aleo network from attacks. Delegators in the network also have governance rights, allowing them to vote on changes to network protocols.</li>
  </ol>
  <h3 id="ExvC">Benefits and Risks:</h3>
  <ul id="N8Rm">
    <li id="ZCBF"><strong>Benefits</strong>: Stakers earn passive income and contribute to network security. It’s less resource-intensive compared to Proof of Work (PoW).</li>
    <li id="IUFb"><strong>Risks</strong>: Staked assets may be locked, reducing liquidity. If validators behave maliciously, they may lose part of their staked funds (a penalty known as &quot;slashing&quot;).</li>
  </ul>
  <h3 id="70I5">Steps to Native stake your Aleo token</h3>
  <p id="V917">At the moment there is no available way to easily participate in native staking through interacting with a simple UI design. The only available way to participate in native staking on the Aleo network is through the Command Line Interface (CLI). </p>
  <p id="yIPb"><strong>1. Requirement </strong></p>
  <p id="Ywfl">to stake natively on the Aleo natework, you would need a minimum of 10, 000 Aleo credits. </p>
  <p id="u4lS"><strong>2. Choosing a Validator: A </strong>delegator would needto choose which validator to delegate tokens to. At the moment there are 16 Aleo validators and 188 delegators. Here are the list of <a href="https://mainnet.aleo123.io/validators" target="_blank">validators</a>. When selecting a validator, consider the following:</p>
  <ul id="Wgkv">
    <li id="XxB0"><strong>Performance.</strong> High uptime and reliable performance are crucial.</li>
    <li id="Paee"><strong>Contributions.</strong> Validators that contribute to the ecosystem through tools, communities, or public RPC endpoints.</li>
    <li id="EeE6"><strong>Commissions.</strong> Reasonable commission rates for sustainable operations.</li>
    <li id="iPyF"><strong>Decentralization.</strong> Avoid validators with overly concentrated stake to maintain network resilience.</li>
    <li id="J0mh"><strong>Reputation.</strong> Track record in other ecosystems can indicate future performance on Aleo.</li>
  </ul>
  <p id="ViDt"><strong>3. Guide</strong><br />Since there is no UI for easily staking in Aleo, we will be using the Leo CLI to complete this process. Below is the guide to set up and stake natively on the Aleo network. </p>
  <p id="T4yD"><strong>Install Leo and other dependences</strong><br />First, we need to get the</p>
  <p id="OpFL">— Follow the guide here to install Leo and other dependables <a href="https://developer.aleo.org/leo/installation/" target="_blank">here</a> </p>
  <p id="gZtr">— On you CLI run <code>leo --version</code> to confirm your Leo CLI version </p>
  <h3 id="FgeB"><strong>Bonding</strong></h3>
  <p id="ByIA">— To bond to a validator run: </p>
  <blockquote id="kaiw"><code>leo execute --program credits.aleo --network mainnet --endpoint <a href="https://node.puzzle.online" target="_blank">https://node.puzzle.online</a> --private-key {PRIVATE_KEY} -b bond_public {VALIDATOR_ADDRESS} {WITHDRAWAL_ADDRESS} {AMOUNT}</code> </blockquote>
  <p id="jOwQ"><code>PRIVATE_KEY</code> is the private key of the account that has the funds </p>
  <p id="L8fk"><code>VALIDATOR_ADDRESS </code>is the address of the validator you want to bond to </p>
  <p id="BQFi"><code>WITHDRAWAL_ADDRESS</code> is the address of the account you want to use that the credits will be sent to when you decide to unbond this can be the same as the account that currently has the ALEO, but you may want to separate out for security</p>
  <p id="BWQQ"><code>endpoint</code> are the specific digital location where requests or API calls for information are sent by the delegator program to retrieve the digital resource that exist in the validator. Here, we used the puzzle wallet wnd point.</p>
  <p id="mgXj"><code>AMOUNT</code> is the amount (in microcredits) of ALEO you want to stake — for example: 1 ALEO is 1000000u64 10,000 ALEO is 10000000000u64 </p>
  <p id="KDJG">— so if you wanted to bond 11,111 ALEO, you would have something like </p>
  <blockquote id="PP1T"><code>leo execute --program credits.aleo --network mainnet --endpoint <a href="https://node.puzzle.online" target="_blank">https://node.puzzle.online</a> --private-key {PRIVATE_KEY} -b bond_public {VALIDATOR_ADDRESS} {WITHDRAWAL_ADDRESS} 11111000000u64</code> </blockquote>
  <p id="ccZX">The leo cli will then show you the fee breakdown of the transaction and ask you to confirm the execution (to confirm, just enter y) </p>
  <p id="ZgNU">— Then go to <a href="https://aleoscan.io/" target="_blank">aleoscan</a> , input your wallet address and search, check the &quot;Lifetime stake reward&quot; field on aleoscan to see how much you have accrued as staking reward. </p>
  <p id="EyQA"></p>
  <h3 id="FsE3"><strong>Unstaking</strong></h3>
  <p id="u9M7">Unstaking is a two-step process. First delegators must initiate unstaking of any desired amount. Then, after a certain processing period, they are able to claim their unbonded token, transferring them back to their public balance. This lock-up period is specified by the network&#x27;s protocol, 360 blocks (about 3 hours), to ensure stability. You can check out the remaining time by visiting the Unstake tab anytime.These conditions are designed to prevent sudden changes in the network&#x27;s stake distribution that could affect its operation and security.</p>
  <ul id="4CsW">
    <li id="I2cn">The first step involves unbonding the staked token </li>
    <li id="ewZz">The second step involves withdrawing the unstaked tokens into the withdrawal wallet address</li>
  </ul>
  <p id="L3Cv"><strong>Unbonding </strong></p>
  <p id="pEGr">This involves unbonding or unstaking the token from the validator delegation.  </p>
  <blockquote id="JZ8S">leo execute unbond_public <code>{WITHDRAWAL_ADDRESS} {Amount}</code> --program credits.aleo --network mainnet --endpoint <a href="https://node.puzzle.online" target="_blank">https://node.puzzle.online</a>  --private-key  {WITHDRAWAL_PRIVATE_KEY} --broadcast</blockquote>
  <p id="G8Yr"></p>
  <p id="gqE5"><strong>Withdrawal</strong></p>
  <p id="9UvG">After the unbonding transaction is confirmed, you must wait the 360 blocks (about 3 hours) lock-up period protecting the network. Next, we transfer the credits to the withdrawal address. </p>
  <blockquote id="C39H">leo execute claim_unbond_public <code>{WITHDRAWAL_ADDRESS}</code> --program credits.aleo --network mainnet --endpoint <a href="https://node.puzzle.online" target="_blank">https://node.puzzle.online</a>  --private-key  {<code>WITHDRAWAL_PRIVATE_KEY</code>} --broadcast</blockquote>
  <p id="MO7v">Press y and proceed with the transaction. Here, </p>
  <p id="mc6V"><code>WITHDRAWAL_ADDRESS</code> this should be the wallet you assigned as your withdrawal wallet during your bonding stage. </p>
  <p id="5Wfj"><code>WITHDRAWAL_PRIVATE_KEY</code> This is the private key to the withdrawal wallet. </p>
  <p id="5VGE">This will withdraw the amount into your account. You have finally been able to participate in native staking on the Aleo network. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/liquid-stake-Aleo</guid><link>https://teletype.in/@nodeint/liquid-stake-Aleo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/liquid-stake-Aleo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Liquid Staking on Aleo Network</title><pubDate>Wed, 30 Oct 2024 23:06:07 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/49/92/4992e788-b697-457c-82c9-30aefa32b97f.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/44/ca/44ca08e7-f8ad-40f8-abdc-1a9cce3c2058.png"></img>In this article, I’ll provide a step-by-step guide on how to securely liquid-stake Aleo. Aleo is a layer 1 blockchain that uses zero knowledge proofs to power private applications.]]></description><content:encoded><![CDATA[
  <figure id="81ms" class="m_column">
    <img src="https://img1.teletype.in/files/44/ca/44ca08e7-f8ad-40f8-abdc-1a9cce3c2058.png" width="423" />
  </figure>
  <p id="fa4d">In this article, I’ll provide a step-by-step guide on how to securely liquid-stake Aleo. Aleo is a layer 1 blockchain that uses zero knowledge proofs to power private applications. </p>
  <p id="xCOU">The crucial tasks in the aleo network are the </p>
  <blockquote id="x5a0">Provers</blockquote>
  <blockquote id="253z">The provers in the aleo network create the cryptographic proof of transaction without revealing the meta data associated with the transaction. </blockquote>
  <p id="TZpm"></p>
  <blockquote id="axOi">2. Validators</blockquote>
  <blockquote id="ZoRs">To secure the Aleo consensus, the validators form consensus on new blocks and block history. The validators need to stake Aleo native token to become actve. The minimum stake to become a validator in the Aleo network is 10,000,000 Aleo credits. Validators can also receive stake from other token holders in the form of delegations.</blockquote>
  <p id="Rt4R"></p>
  <blockquote id="juio">3. Delegators</blockquote>
  <blockquote id="ccVN">There are the person or institutions who would love to participate in keeping the protocol secure, however, they do not wish to run your own validator or could not meet up with the high credit requirement to become a validator. They can opt to become a delegator by delegating their Aleo credit to another validator. Delegating is non-custodial, meaning you retain full control of your funds. As a delegator you earn some Aleo staking rewards.  There are two types of delegation in Aleo</blockquote>
  <p id="Vv83">Liquid staking and Ntive staking; <strong>Native staking</strong> locks tokens directly in a blockchain network, making them temporarily inaccessible, while <strong>liquid staking</strong> allows users to stake tokens while receiving tradable &quot;liquid&quot; tokens that represent their staked assets, maintaining flexibility and liquidity.</p>
  <blockquote id="0hoY">3a. Liquid Staking</blockquote>
  <blockquote id="uCHd">To  start staking for the first time as a first-time staker, you must stake at least 10 Aleo. However, if you are staking again to add to your stake (returning staker), you can stake a minimum of 1 Aleo. In liquid staking, the liquid stake provider (pondo) takes some percentage of reward for providing the staking services. Staking rewards are earned every block and are directly added to your staking balance, compounding your rewards. </blockquote>
  <blockquote id="kIWH">3b. Native Staking</blockquote>
  <blockquote id="Zcid">To stake natively on the Aleo network as a delegator, you need a minimum of 10000 Aleo. Also, Staking rewards are earned every block and are directly added to your staking balance, compounding your rewards. With native stking, you will need to choose the validator to stake with. </blockquote>
  <p id="JCbC">We will be taking about Liquid Staking on the Aleo networking using the the staking.xyz UI interface. </p>
  <h2 id="qvWa" data-align="center"><strong>How to stake - Liquid Staking</strong></h2>
  <p id="cQ4F"></p>
  <h3 id="1811">Setting up Puzzle wallet</h3>
  <ul id="XJBl">
    <li id="eb83">Install Puzzle wallet’s browser extension from <a href="https://chromewebstore.google.com/detail/puzzle-aleo-wallet/fdchdcpieegfofnofhgdombfckhbcokj" target="_blank">https://chromewebstore.google.com/detail/puzzle-aleo-wallet/fdchdcpieegfofnofhgdombfckhbcokj</a>. Please note that Puzzle wallet is supported on Chrome or Brave browsers.</li>
  </ul>
  <figure id="Jphp" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/1*aX0UO5UINY9QqiNCx4nC9A.png" width="700" />
  </figure>
  <ul id="RMgU">
    <li id="3b57">Select whether you would like to create a new wallet or import an existing wallet.</li>
  </ul>
  <figure id="l1M5" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/1*GBruwrpj8Pp97lA3CCCy9w.png" width="700" />
  </figure>
  <ul id="GshK">
    <li id="66db">Set a password to use to unlock your wallet.</li>
  </ul>
  <figure id="sI7e" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/1*3e4JIFvmK-LKzT8-3DlJ6A.png" width="700" />
  </figure>
  <ul id="melT">
    <li id="a5c1">After creating your wallet, please visit the <strong>Seed phrase</strong> section under <strong>Settings</strong> and write down your 12 word seed phrase. Safeguard this phrase as it will be the only way to regain access to your wallet if you ever lose access.</li>
  </ul>
  <figure id="jBmy" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/1*lKYixDhpBRmL2gcve58C0g.png" width="700" />
  </figure>
  <p id="btsL"><strong>Step-by-step guide to staking on Staking.xyz:</strong></p>
  <p id="61c6"><strong>2) Visit </strong><a href="http://staking.xyz/" target="_blank">Staking.xyz</a> to start managing your staking. Connect your wallet. At the moment the Puzzle wallet, Avail wallet and the Leo wallet are available options to use. Also, ensure you have your Aleo in this wallet. </p>
  <p id="nB4x"> </p>
  <figure id="ne05" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/0*g-d0ZAhT1qOwtW_4" width="700" />
  </figure>
  <p id="3e0d"><strong>2) Select Validator and Amount.</strong>  First, Navigate to the liquid staking and input the amount of ALEO you want to stake. Next, you click stake to stake the quantity of Aleo you want. From the validator list choose a validator of your choice, and click on the select validator button.</p>
  <figure id="uj5u" class="m_retina">
    <img src="https://img2.teletype.in/files/5d/78/5d7805f1-fd57-4370-b335-89916a7ea58c.png" width="297.5" />
  </figure>
  <p id="bcd9">You get a pop out, that require that you sign with your wallet. Click on the proceed in the wallet key</p>
  <figure id="innD" class="m_retina">
    <img src="https://img3.teletype.in/files/ab/ee/abeeaf27-32fe-49b9-8132-67418364ae56.png" width="325.5" />
  </figure>
  <p id="YNwZ">Your wallet would require you accept the transaction. Accept and si</p>
  <figure id="5Qzw" class="m_retina">
    <img src="https://img4.teletype.in/files/76/7a/767a071c-c957-4404-8b83-1326ba9fa39c.png" width="236" />
  </figure>
  <p id="Zmx8">Wait for the transaction to complete<br /></p>
  <figure id="kNsp" class="m_retina">
    <img src="https://img4.teletype.in/files/f3/b2/f3b2abad-e848-4108-8860-8d0fe5e065f6.png" width="276.5" />
  </figure>
  <p id="ZD5d">Liquid staking done. You can click wiew activity to show your transaction detail and rewards.</p>
  <figure id="bF2j" class="m_retina">
    <img src="https://img2.teletype.in/files/15/d4/15d42deb-0be6-42b4-a060-b1f37093e23c.png" width="259.5" />
  </figure>
  <p id="D0sY">You get a pAleo token equivalent to the quantity of Aleo you staked. <br /></p>
  <figure id="H5iv" class="m_retina">
    <img src="https://img4.teletype.in/files/73/cf/73cf2dc2-7faa-4b73-b50f-e8f272121771.png" width="275" />
  </figure>
  <p id="Tqjk">you need to wait for 1 hour before transferring your ALEO.</p>
  <h3 id="8050">Begin unstaking using Staking.xyz</h3>
  <ul id="Nj4a">
    <li id="aec2">Visit the Unstake tab and connect your wallet.</li>
    <li id="YwzG">The unstaking takes an approximately 3 days to complete</li>
    <li id="u7cT">Input the amount you want to unstake. Check out the details of your unstaking transaction. If everything looks good, proceed by clicking on the “Unstake” button and signing the transaction.</li>
  </ul>
  <figure id="ucmP" class="m_retina">
    <img src="https://img4.teletype.in/files/bb/5b/bb5b30ef-334b-4c5f-ad35-290406b61ee5.png" width="293" />
  </figure>
  <ul id="M7jn">
    <li id="40f7">Once unstaking is complete, you will need to withdraw your unstaked Aleo Credits. After withdrawing, you can begin transferring your Aleo Credits. </li>
  </ul>
  <p id="b117"><strong>Important considerations for staking:</strong></p>
  <ul id="X1XK">
    <li id="64f5"><strong>Delegators:</strong></li>
    <li id="d671">Need a minimum of 10,000 Aleo Credits to start earning rewards.</li>
    <li id="114f">Rewards are earned after 1–2 blocks and compound automatically.</li>
    <li id="fcdf"><strong>Validators:</strong></li>
    <li id="4f03">Must have at least 10,000,000 Aleo Credits staked to be active.</li>
    <li id="1c12">Cannot exit the active set if they have any active delegators.</li>
  </ul>
  <p id="1e9d"><strong>Staking rewards and protocols:</strong></p>
  <ul id="sQJK">
    <li id="631a"><strong>Rewards:</strong></li>
    <li id="26eb">Protocol issues 5% of the starting total supply as staking rewards.</li>
    <li id="9a5d">Coinbase rewards are distributed to Aleo stakers, with a third going to include solutions provided by Aleo provers.</li>
    <li id="51a3"><strong>ARC Proposals:</strong></li>
    <li id="591b"><em>ARC-0037: Allows separate worker and withdrawal addresses.</em></li>
  </ul>
  <p id="bf0b"><em>ARC-0038: Validators can collect commissions from delegators.</em></p>
  <p id="097c"><em>ARC-0041: Enables validators to activate without directly owning 10 million Aleo Credits.</em></p>
  <figure id="qDXI" class="m_custom">
    <img src="https://miro.medium.com/v2/resize:fit:1050/0*-612ElaJpuTVxqvv.jpg" width="700" />
  </figure>
  <p id="59be">Staking on Aleo involves careful consideration and due diligence. Always research validators and understand the staking mechanics before committing your ALEO. Stay updated with the latest developments as Aleo moves closer to its mainnet launch.</p>
  <p id="47e9">By following this guide, you can effectively participate in the staking process on Staking.xyz, contributing to the network’s security and earning rewards in the process.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/initia</guid><link>https://teletype.in/@nodeint/initia?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/initia?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Initia</title><pubDate>Wed, 15 May 2024 12:25:43 GMT</pubDate><category>Active</category><description><![CDATA[<img src="https://img1.teletype.in/files/8d/d8/8dd80232-4235-4efa-89a8-8c0139594d1d.png"></img>Nodeint]]></description><content:encoded><![CDATA[
  <figure id="AF7B" class="m_custom">
    <img src="https://img1.teletype.in/files/8d/d8/8dd80232-4235-4efa-89a8-8c0139594d1d.png" width="447" />
  </figure>
  <h2 id="7Fmk" data-align="center">Stake with Our Validator</h2>
  <h3 id="e5Ya">Moniker: </h3>
  <p id="OCZn"><code>Nodeint</code></p>
  <h3 id="yPIm">Account Address: </h3>
  <p id="hrb3"><code>init13v87veezdsuzp7g3w0wxw0xt3u97ayscnfndst</code></p>
  <h3 id="MCeF">Operator_address: </h3>
  <p id="7gt7"><code>initvaloper13v87veezdsuzp7g3w0wxw0xt3u97aysc8v257m</code></p>
  <h2 id="yvHY" data-align="center"><strong>Project Information</strong></h2>
  <p id="Oh9Q" data-align="right"><em>Back to content</em></p>
  <p id="m8bj">Official Information:</p>
  <ul id="IILF">
    <li id="AsnZ"><a href="https://initia.xyz/" target="_blank">Official site</a></li>
    <li id="PlAw"><a href="https://medium.com/@initiafdn" target="_blank">Blog</a></li>
    <li id="ltNi"><a href="https://discord.com/invite/initia" target="_blank">Discord</a></li>
    <li id="Npm0"><a href="https://github.com/initia-labs" target="_blank">Github</a></li>
  </ul>
  <p id="DjkE" data-align="center"><strong>DESCRIPTION</strong></p>
  <p id="dOcn"><strong><a href="https://initia.xyz/" target="_blank">Initia</a></strong> is a pioneering network for interwoven rollups, revolutionizing blockchain by simplifying complexity and providing a unified platform akin to using your favorite smartphone, inspired by Apple&#x27;s design philosophy.</p>
  <hr />
  <h2 data-align="center" id="DdAX"><strong>Server Requirements</strong></h2>
  <p id="dZwE" data-align="right"><em>Back to content</em></p>
  <pre id="lyeE">- Memory: 16 GB RAM
- CPU: 4 cores
- Disk: 1 TB SSD
- Bandwidth: 1 Gbps
- Linux amd64 arm64 (Ubuntu LTS release)</pre>
  <p id="lV46"></p>
  <h2 id="0mPW"><strong>Installation guide </strong></h2>
  <p id="sYrb"></p>
  <h3 id="3peY">1. Install required packages</h3>
  <pre id="xeoH">sudo apt update &amp;&amp; \
sudo apt install curl git jq build-essential gcc unzip wget lz4 -y</pre>
  <h3 id="YcK7">2. Install Go</h3>
  <pre id="3Ha3">cd $HOME &amp;&amp; \
ver=&quot;1.22.0&quot; &amp;&amp; \
wget &quot;https://golang.org/dl/go$ver.linux-amd64.tar.gz&quot; &amp;&amp; \
sudo rm -rf /usr/local/go &amp;&amp; \
sudo tar -C /usr/local -xzf &quot;go$ver.linux-amd64.tar.gz&quot; &amp;&amp; \
rm &quot;go$ver.linux-amd64.tar.gz&quot; &amp;&amp; \
echo &quot;export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin&quot; &gt;&gt; $HOME/.bash_profile &amp;&amp; \
source $HOME/.bash_profile &amp;&amp; \
go version</pre>
  <h3 id="KA8w">3. Install <code>initia</code> binary</h3>
  <pre id="41MD">git clone https://github.com/initia-labs/initia.git
cd initia
git checkout v0.2.15
make install
initiad version</pre>
  <h3 id="iodB">4. Set up variables</h3>
  <p id="Mzad">replace &quot;My_Node&quot; with the name you would wish to call your node</p>
  <pre id="BNUN"># Customize if you need
echo &#x27;export MONIKER=&quot;NodeInt&quot;&#x27; &gt;&gt; ~/.bash_profile
echo &#x27;export CHAIN_ID=&quot;initiation-1&quot;&#x27; &gt;&gt; ~/.bash_profile
echo &#x27;export WALLET_NAME=&quot;wallet&quot;&#x27; &gt;&gt; ~/.bash_profile
echo &#x27;export RPC_PORT=&quot;26657&quot;&#x27; &gt;&gt; ~/.bash_profile
source $HOME/.bash_profile</pre>
  <h3 id="ZLSI">5. Initialize the node</h3>
  <pre id="kiCj">cd $HOME
initiad init $MONIKER --chain-id $CHAIN_ID
initiad config set client chain-id $CHAIN_ID
initiad config set client node tcp://localhost:$RPC_PORT
initiad config set client keyring-backend os # You can set it to &quot;test&quot; so you will not be asked for a password</pre>
  <h3 id="e5xR">6. Download genesis.json</h3>
  <pre id="wI4M">wget https://initia.s3.ap-southeast-1.amazonaws.com/initiation-1/genesis.json -O $HOME/.initia/config/genesis.json</pre>
  <h3 id="Aj9P">7. Add Peers to the config.toml</h3>
  <pre id="cwvP"># Endpoint URL
URL=&quot;https://initia-rpc.stake2earn.com/net_info&quot; 

# Fetch data from the endpoint 
response=$(curl -s $URL) 

# Parse JSON and construct PEERS string using jq  
PEERS=$(echo $response | jq -r &#x27;.result.peers[] | &quot;\(.node_info.id)@\(.remote_ip):&quot; + (.node_info.listen_addr | capture(&quot;(?&lt;ip&gt;.+):(?&lt;port&gt;[0-9]+)$&quot;).port)&#x27; | paste -sd &quot;,&quot; -) 

# Display the PEERS string 
echo &quot;PEERS=\&quot;$PEERS\&quot;&quot; 

# Set the peers 
sed -i &#x27;s|^persistent_peers *=.*|persistent_peers = &quot;&#x27;$PEERS&#x27;&quot;|&#x27; $HOME/.initia/config/config.toml</pre>
  <p id="U0VH"></p>
  <h3 id="eeQc">Configuration set up</h3>
  <pre id="ykzY">sed -i -e &quot;s/^indexer *=.*/indexer = \&quot;null\&quot;/&quot; $HOME/.initia/config/config.toml
sed -i -e &quot;s/^log_level *=.*/log_level = \&quot;main:info,state:info,statesync:info,*:error\&quot;/&quot; $HOME/.initia/config/config.toml
sed -i -e &quot;s/^max_num_inbound_peers *=.*/max_num_inbound_peers = 300/&quot; $HOME/.initia/config/config.toml
sed -i -e &quot;s/^max_num_outbound_peers *=.*/max_num_outbound_peers = 300/&quot; $HOME/.initia/config/config.toml</pre>
  <p id="qlNK"></p>
  <h3 id="XoYI">8. Change ports (Optional)</h3>
  <pre id="YZUN"># Customize if you need
EXTERNAL_IP=$(wget -qO- eth0.me) \
PROXY_APP_PORT=26658 \
P2P_PORT=26656 \
PPROF_PORT=6060 \
API_PORT=1317 \
GRPC_PORT=9090 \
GRPC_WEB_PORT=9091</pre>
  <pre id="2FFd">sed -i \
    -e &quot;s/\(proxy_app = \&quot;tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$PROXY_APP_PORT\&quot;/&quot; \
    -e &quot;s/\(laddr = \&quot;tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$RPC_PORT\&quot;/&quot; \
    -e &quot;s/\(pprof_laddr = \&quot;\)\([^:]*\):\([0-9]*\).*/\1localhost:$PPROF_PORT\&quot;/&quot; \
    -e &quot;/\[p2p\]/,/^\[/{s/\(laddr = \&quot;tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$P2P_PORT\&quot;/}&quot; \
    -e &quot;/\[p2p\]/,/^\[/{s/\(external_address = \&quot;\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$P2P_PORT\&quot;/; t; s/\(external_address = \&quot;\).*/\1${EXTERNAL_IP}:$P2P_PORT\&quot;/}&quot; \
    $HOME/.initia/config/config.toml</pre>
  <pre id="W2vY">sed -i \
    -e &quot;/\[api\]/,/^\[/{s/\(address = \&quot;tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\&quot;.*\)/\1\2:$API_PORT\4/}&quot; \
    -e &quot;/\[grpc\]/,/^\[/{s/\(address = \&quot;\)\([^:]*\):\([0-9]*\)\(\&quot;.*\)/\1\2:$GRPC_PORT\4/}&quot; \
    -e &quot;/\[grpc-web\]/,/^\[/{s/\(address = \&quot;\)\([^:]*\):\([0-9]*\)\(\&quot;.*\)/\1\2:$GRPC_WEB_PORT\4/}&quot; \
    $HOME/.initia/config/app.toml</pre>
  <h3 id="mmGb">9. Configure prunning to save storage (Optional)</h3>
  <pre id="gWpp">sed -i \
    -e &quot;s/^pruning *=.*/pruning = \&quot;custom\&quot;/&quot; \
    -e &quot;s/^pruning-keep-recent *=.*/pruning-keep-recent = \&quot;100\&quot;/&quot; \
    -e &quot;s/^pruning-interval *=.*/pruning-interval = \&quot;10\&quot;/&quot; \
    &quot;$HOME/.initia/config/app.toml&quot;</pre>
  <h3 id="L6VJ">10. Set min gas price</h3>
  <pre id="kb6m">sed -i -e &quot;s/^minimum-gas-prices *=.*/minimum-gas-prices = \&quot;0.15uinit,0.01uusdc\&quot;/&quot; $HOME/.initia/config/app.toml</pre>
  <h3 id="FBoI">11. Enable indexer (Optional)</h3>
  <pre id="cXZi">sed -i &quot;s/^indexer *=.*/indexer = \&quot;kv\&quot;/&quot; $HOME/.initia/config/config.toml</pre>
  <h3 id="F79c">12. Create a service file</h3>
  <pre id="wxWY">sudo tee /etc/systemd/system/initiad.service &gt; /dev/null &lt;&lt;EOF
[Unit]
Description=Initia Node
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=$(which initiad) start --home $HOME/.initia
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF</pre>
  <h3 id="g7Ho">13. Start the node</h3>
  <p id="phVo">Run tmux to open a virtual space</p>
  <p id="9TJQ"><code>tmux</code></p>
  <p id="VKXH">Then start the daemon to run the node</p>
  <pre id="1ssn">sudo systemctl daemon-reload &amp;&amp; \
sudo systemctl enable initiad &amp;&amp; \
sudo systemctl restart initiad &amp;&amp; \
sudo journalctl -u initiad -f -o cat</pre>
  <h3 id="kS8Q"></h3>
  <h3 id="UfPe">14. Get your public RPC end point on your validator node</h3>
  <p id="RKlC">In another window run this</p>
  <p id="Ybvg"><strong>Fetch your IP and RPC port</strong> (It will print your RPC url)</p>
  <pre id="e5vq">RPC=&quot;http://$(wget -qO- eth0.me)$(grep -A 3 &quot;\[rpc\]&quot; $HOME/.initia/config/config.toml | egrep -o &quot;:[0-9]+&quot;)&quot; &amp;&amp; echo $RPC</pre>
  <p id="ZZWx"><strong>Check if it&#x27;s responding</strong></p>
  <pre id="TSpY">curl $RPC/status</pre>
  <p id="SHcp">If you are getting <code>Connection refused</code> , you need to make it accessible to the Internet:</p>
  <p id="uZAU"><strong>Edit config</strong></p>
  <pre id="Ntvs">sed -i &#x27;/\[rpc\]/,/\[/{s/^laddr = &quot;tcp:\/\/127\.0\.0\.1:/laddr = &quot;tcp:\/\/0.0.0.0:/}&#x27; $HOME/.initia/config/config.toml</pre>
  <p id="Ed3I"><strong>Restart your node</strong></p>
  <pre id="yzGJ">sudo systemctl restart initiad</pre>
  <p id="CWoq"><strong>Ensure logs are good</strong></p>
  <pre id="rhFv">sudo journalctl -u initiad -f -o cat --no-hostname</pre>
  <p id="Iu3K"><strong>Check if RPC is responding once again</strong></p>
  <pre id="FmAE">curl $RPC/status</pre>
  <p id="cgcz"><strong>To Output your PUBLIC RPC URL again</strong></p>
  <pre id="goeP">echo $RPC</pre>
  <p id="trTH"><em>You can also paste this URL into your browser and ensure it works :)</em> ---</p>
  <p id="JxYy">If you are still getting <code>Connection refused</code> and you have <strong>ufw </strong>firewall you need to open it</p>
  <p id="SChs"><strong>Fetch RPC port. Make sure output is not empty </strong></p>
  <pre id="Ctdc">PORT=$(grep -A 3 &quot;\[rpc\]&quot; $HOME/.initia/config/config.toml | egrep -o &quot;:[0-9]+&quot;) &amp;&amp; \
PORT=${PORT#:} &amp;&amp; \
echo $PORT</pre>
  <p id="GLrh"><strong>Add the rule</strong></p>
  <pre id="jl6k">sudo ufw allow $PORT</pre>
  <p id="aS4e"><strong>Reload ufw</strong></p>
  <pre id="Fb89">sudo ufw reload</pre>
  <h3 id="tQQF"></h3>
  <h3 id="Sjoy"><strong>15. Ensuring Faster syncing</strong></h3>
  <p id="KOt2">press ctrl + c to stop the process then do the following</p>
  <p id="qw4z"><strong>Download latest snapshot and update your peers</strong></p>
  <pre id="2TMI">wget -O initia_latest.tar.lz4 https://storage.crouton.digital/testnet/initia/snapshots/initia_latest.tar.lz4
sudo systemctl stop initiad
cp $HOME/.initia/data/priv_validator_state.json $HOME/.initia/priv_validator_state.json.backup
initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book
lz4 -c -d initia_202803.tar.lz4  | tar -x -C $HOME/.initia
mv $HOME/.initia/priv_validator_state.json.backup $HOME/.initia/data/priv_validator_state.json
sudo systemctl restart initiad &amp;&amp; sudo journalctl -u initiad -f -o cat </pre>
  <p id="EifP"><strong>Update your peers</strong></p>
  <pre id="djBH">PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused &quot;https://rpc-initia-testnet.trusted-point.com/peers.txt&quot;)
if [ -z &quot;$PEERS&quot; ]; then
    echo &quot;No peers were retrieved from the URL.&quot;
else
    echo -e &quot;\nPEERS: &quot;$PEERS&quot;&quot;
    sed -i &quot;s/^persistent_peers *=.*/persistent_peers = \&quot;$PEERS\&quot;/&quot; &quot;$HOME/.initia/config/config.toml&quot;
    echo -e &quot;\nConfiguration file updated successfully.\n&quot;
fi</pre>
  <p id="SLMZ"><strong>Stop the node</strong></p>
  <pre id="iFmX">sudo systemctl stop initiad</pre>
  <p id="FgjD"><strong>Backup priv_validator_state.json</strong></p>
  <pre id="jJhY">cp $HOME/.initia/data/priv_validator_state.json $HOME/.initia/priv_validator_state.json.backup</pre>
  <p id="cEDd"><strong>Reset DB</strong></p>
  <pre id="B32S">initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book</pre>
  <p id="G13w"><strong>Extract files fromt the arvhiv</strong>e</p>
  <pre id="SwQi">lz4 -d -c ./latest_snapshot.tar.lz4 | tar -xf - -C $HOME/.initia</pre>
  <p id="e5rm"><strong>Move priv_validator_state.json back</strong></p>
  <pre id="OPMX">mv $HOME/.initia/priv_validator_state.json.backup $HOME/.initia/data/priv_validator_state.json</pre>
  <h3 id="Ayo9">Restart the node</h3>
  <pre id="hquL">sudo systemctl restart initiad &amp;&amp; sudo journalctl -u initiad -f -o cat</pre>
  <p id="eP56"><strong>Check the synchronization status</strong></p>
  <p id="3Isa">Do this on another window</p>
  <pre id="vouk">initiad status | jq -r .sync_info</pre>
  <p id="CJGC"></p>
  <h3 id="DdBb">16. Run the Oracle</h3>
  <p id="k3Kc">Clone the slinky repository, change into the directory and get the latest version</p>
  <pre id="bd7p">git clone https://github.com/skip-mev/slinky.git &amp;&amp; cd slinky &amp;&amp; git checkout v0.4.4 </pre>
  <p id="gRcO">Build out the slinky</p>
  <pre id="Mjlh">make build</pre>
  <p id="HdVu">Move the slinky folder</p>
  <pre id="6iTg">mv build/slinky /usr/local/bin/ </pre>
  <p id="m0T8"></p>
  <pre id="OAoS">sed -i &#x27;/^\[oracle\]/,/^$/ s/^enabled = &quot;.*&quot;/enabled = &quot;true&quot;/&#x27; 
$HOME/.initia/config/app.toml </pre>
  <p id="LNSk"></p>
  <pre id="2Os2">sed -i &#x27;s|^oracle_address = &quot;.*&quot;|oracle_address = &quot;0.0.0.0:8080&quot;|g&#x27; 
$HOME/.initia/config/app.toml</pre>
  <p id="t396">c</p>
  <pre id="UW3E">sed -i &#x27;s/^client_timeout = &quot;.*&quot;/client_timeout = &quot;500ms&quot;/&#x27; 
$HOME/.initia/config/app.toml</pre>
  <p id="wArd"></p>
  <pre id="WK3Y">sed -i &#x27;s/^metrics_enabled = &quot;.*&quot;/metrics_enabled = &quot;true&quot;/&#x27; 
$HOME/.initia/config/app.toml</pre>
  <p id="xARz"><strong>Enable the service file</strong></p>
  <pre id="wYri">sudo tee /etc/systemd/system/oracle.service &gt; /dev/null &lt;&lt;EOF 
cd [Unit] 
Description=Initia Oracle 
After=network.target [Service] 
User=$USER 
Type=simple 
ExecStart=$(which slinky) --oracle-config-path 
root/slinky/config/core/oracle.json 
Restart=on-failure
LimitNOFILE=65535 
[Install] 
WantedBy=multi-user.target 
EOF </pre>
  <p id="1oZC"><strong>Restart the oracle</strong></p>
  <pre id="olU2">sudo systemctl daemon-reload 
sudo systemctl enable oracle.service 
sudo systemctl restart oracle.service 
sudo journalctl -u oracle.service -o cat -f</pre>
  <p id="LU5u"></p>
  <h2 id="ZSIB">Wallet </h2>
  <p id="iYzB"><strong>Create a wallet</strong></p>
  <pre id="XRV8">initiad keys add $WALLET_NAME</pre>
  <p id="gdhn">Ensure to save your wallet informations like address, passphrase, public key. </p>
  <p id="8kcG">Next, you will need some init token to set up a validator. </p>
  <p id="ujjK">Go to the <a href="https://faucet.testnet.initia.xyz/" target="_blank"><strong>FAUCET</strong></a> site, copy and paste your wallet address and click submit. <br /></p>
  <figure id="MMgE" class="m_column">
    <img src="https://img4.teletype.in/files/36/cb/36cb6a42-a043-4a6e-93a4-0f6aad9c449b.png" width="957" />
  </figure>
  <h4 id="reC9">To restore your keys you have created, do this</h4>
  <pre id="Zsxn">initiad keys add $WALLET_NAME --recover</pre>
  <h4 id="kUyZ">Save wallet and validator address</h4>
  <pre id="8hDi">WALLET_ADDRESS=$(initiad keys show $WALLET_NAME -a) 
VALOPER_ADDRESS=$(initiad keys show $WALLET_NAME --bech val -a) 
echo &quot;export WALLET_ADDRESS=&quot;$WALLET_ADDRESS &gt;&gt; $HOME/.bash_profile 
echo &quot;export VALOPER_ADDRESS=&quot;$VALOPER_ADDRESS &gt;&gt; $HOME/.bash_profile 
source $HOME/.bash_profile</pre>
  <h4 id="auK5">Check sync status, once your node is fully synced, the output from above will print &quot;false&quot;</h4>
  <pre id="1Sfv">initiad status 2&gt;&amp;1 | jq </pre>
  <h4 id="hqsU">After creating a validator, make sure the fund has been funded sucessfully</h4>
  <pre id="uWpS">initiad query bank balances $WALLET_ADDRESS</pre>
  <p id="jg0Y"></p>
  <h2 id="XxEi">Create a validator</h2>
  <p id="HQP6">Run the command below on a new window. </p>
  <pre id="eiJV">initiad tx mstaking create-validator \
  --amount=1000000uinit \
  --pubkey=$(initiad tendermint show-validator) \
  --moniker=$MONIKER \
  --chain-id=$CHAIN_ID \
  --commission-rate=0.05 \
  --commission-max-rate=0.10 \
  --commission-max-change-rate=0.01 \
  --from=$WALLET_NAME \
  --identity=&quot;&quot; \
  --website=&quot;&quot; \
  --details=&quot;Initia to the moon!&quot; \
  --gas=2000000 --fees=300000uinit \
  -y</pre>
  <p id="P84X">Get the content of the validator private key, ensure to save it in a safe place</p>
  <pre id="BpEs">cd $HOME/.initia/config/
cat priv_validator_key.json</pre>
  <p id="guAp">Check your validator here but it takes some time be appear there </p>
  <figure id="VMgX" class="m_column">
    <img src="https://img1.teletype.in/files/09/da/09daf66c-7777-48a0-b70b-c781d479017b.png" width="2476" />
  </figure>
  <p id="WBHf">If you can&#x27;t find your validator. you can check your validator directly on the api</p>
  <pre id="rtgt">initiad q mstaking validator $(initiad keys show $WALLET_NAME --bech val -a)cd </pre>
  <h2 id="RgPI">Upgrading to the latest version</h2>
  <p id="SSRu">Only do this when a new version is announced and requires validators to upgrade</p>
  <pre id="9Ait">cd $HOME
rm -rf initia
git clone https://github.com/initia-labs/initia.git
cd initia
git checkout #version
make install</pre>
  <pre id="HNdL">initiad version</pre>
  <pre id="P5V2">sudo systemctl restart initiad</pre>
  <p id="y6LL"></p>
  <h2 id="qPRD">Useful commands</h2>
  <h3 id="zvsI">Check node status</h3>
  <pre id="koHW">initiad status | jq</pre>
  <h3 id="kdJI">Delegate 1 INIT to yourself (change <code>&lt;wallet_name&gt;</code>):</h3>
  <pre id="kzKy">initiad tx mstaking delegate $(initiad keys show &lt;wallet_name&gt; --bech val -a) 1000000uinit --from &lt;wallet_name&gt; --chain-id initiation-1 --gas-adjustment 1.4 --gas=2000000 --fees=563000move/944f8dd8dc49f96c25fea9849f16436dcfa6d564eec802f3ef7f8b3ea85368ff -y</pre>
  <h3 id="6va1">Delegate 1 INIT to another validator (change <code>&lt;valoper&gt;</code>):</h3>
  <pre id="gwHB">initiad tx mstaking delegate &lt;valoper&gt; 1000000uinit --from &lt;wallet_name&gt; --chain-id initiation-1 --gas-adjustment 1.4 --gas=2000000 --fees=563000move/944f8dd8dc49f96c25fea9849f16436dcfa6d564eec802f3ef7f8b3ea85368ff -y</pre>
  <p id="l2Q6"></p>
  <h3 id="0ZQM">Check block Height</h3>
  <pre id="tGac">llocal_height=$(initiad status | jq -r .sync_info.latest_block_height); network_height=$(curl -s https://initia-testnet-rpc.polkachu.com/status | jq -r .result.sync_info.latest_block_height); blocks_left=$((network_height - local_height)); echo &quot;Your node height: $local_height&quot;; echo &quot;Network height: $network_height&quot;; echo &quot;Blocks left: $blocks_left&quot;</pre>
  <h3 id="m49F">Edit validator information</h3>
  <pre id="l6KA">initiad tx mstaking edit-validator --moniker=&quot;&lt;NEW_MONIKER&gt;&quot; --from=wallet_name --gas=2000000 --fees=300000uinit -y</pre>
  <pre id="FXSx">initiad tx mstaking edit-validator --website=&quot;&lt;NEW_WEBSITE&gt;&quot; --from=$WALLET_NAME --gas=2000000 --fees=300000uinit --node https://initia-testnet-rpc.kzvn.xyz/ --chain-id initiation-1 -y</pre>
  <h3 id="eqoY">Query your validator</h3>
  <pre id="5SLK">initiad q mstaking validator $(initiad keys show $WALLET_NAME --bech val -a) </pre>
  <h3 id="RDkv">Query missed blocks counter &amp; jail details of your validator</h3>
  <pre id="8RKd">initiad q slashing signing-info $(initiad tendermint show-validator)</pre>
  <h3 id="lxja">Unjail your validator</h3>
  <pre id="Ozbt">initiad tx slashing unjail --from $WALLET_NAME --gas=2000000 --fees=300000uinit -y</pre>
  <h3 id="eEe4">Delegate tokens to your validator</h3>
  <pre id="hdgJ">initiad tx mstaking delegate $(initiad keys show $WALLET_NAME --bech val -a)  &lt;AMOUNT&gt;uinit --from $WALLET_NAME --gas=2000000 --fees=300000uinit -y</pre>
  <h3 id="nIlv">Get your p2p peer address</h3>
  <pre id="QIKS">initiad status | jq -r &#x27;&quot;\(.NodeInfo.id)@\(.NodeInfo.listen_addr)&quot;&#x27;</pre>
  <h3 id="diHN">Edit your validator</h3>
  <pre id="cgbI">initiad tx mstaking edit-validator --website=&quot;&lt;WEBSITE&gt;&quot; --details=&quot;&lt;DESCRIPTION&gt;&quot; --moniker=&quot;&lt;NEW_MONIKER&gt;&quot; --from=$WALLET_NAME --gas=2000000 --fees=300000uinit -y</pre>
  <h3 id="xdfC">Send tokens between wallets</h3>
  <pre id="UzRe">initiad tx bank send $WALLET_NAME &lt;TO_WALLET&gt; &lt;AMOUNT&gt;uinit --gas=2000000 --fees=300000uinit -y</pre>
  <h3 id="ayQ1">Query your wallet balance</h3>
  <pre id="105S">initiad q bank balances $WALLET_NAME</pre>
  <h3 id="K0sc">Monitor server load</h3>
  <pre id="gcSG">sudo apt update
sudo apt install htop -y
htop</pre>
  <h3 id="9bkI">Query active validators</h3>
  <pre id="eomp">initiad q mstaking validators -o json --limit=1000 \
| jq &#x27;.validators[] | select(.status==&quot;BOND_STATUS_BONDED&quot;)&#x27; \
| jq -r &#x27;.voting_power + &quot; - &quot; + .description.moniker&#x27; \
| sort -gr | nl</pre>
  <h3 id="nVdV">Query inactive validators</h3>
  <pre id="l7Jd">initiad q mstaking validators -o json --limit=1000 \
| jq &#x27;.validators[] | select(.status==&quot;BOND_STATUS_UNBONDED&quot;)&#x27; \
| jq -r &#x27;.voting_power + &quot; - &quot; + .description.moniker&#x27; \
| sort -gr | nl</pre>
  <h3 id="qJhO">Check logs of the node</h3>
  <pre id="FT2a">sudo journalctl -u initiad -f -o cat</pre>
  <h3 id="S3CL">Restart the node</h3>
  <pre id="dgqz">sudo systemctl restart initiad</pre>
  <h3 id="pU8O">Stop the node</h3>
  <pre id="XDxz">sudo systemctl stop initiad</pre>
  <h3 id="gl1i">Delete the node from the server</h3>
  <pre id="XmuM"># !!! IF YOU HAVE CREATED A VALIDATOR, MAKE SURE TO BACKUP &#x60;priv_validator_key.json&#x60; file located in $HOME/.initia/config/ 
sudo systemctl stop initiad
sudo systemctl disable initiad
sudo rm /etc/systemd/system/initiad.service
rm -rf $HOME/.initia
sudo rm /usr/local/bin/initiad</pre>
  <h3 id="vxgX">Example gRPC usage</h3>
  <pre id="GB37">wget https://github.com/fullstorydev/grpcurl/releases/download/v1.7.0/grpcurl_1.7.0_linux_x86_64.tar.gz
tar -xvf grpcurl_1.7.0_linux_x86_64.tar.gz
chmod +x grpcurl
./grpcurl  -plaintext  localhost:$GRPC_PORT list
### MAKE SURE gRPC is enabled in app.toml
# grep -A 3 &quot;\[grpc\]&quot; $HOME/.initia/config/app.toml</pre>
  <h3 id="GKbs">Example REST API query</h3>
  <pre id="WIDZ">curl localhost:$API_PORT/cosmos/mstaking/v1beta1/validators
### MAKE SURE API is enabled in app.toml
# grep -A 3 &quot;\[api\]&quot; $HOME/.initia/config/app.toml</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Massa_mainnet</guid><link>https://teletype.in/@nodeint/Massa_mainnet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Massa_mainnet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Massa | Mainnet 1.0</title><pubDate>Mon, 08 Jan 2024 22:16:33 GMT</pubDate><category>Active</category><description><![CDATA[<img src="https://img3.teletype.in/files/a1/3e/a13e394c-11c8-4f9a-b325-4461ac7b132c.png"></img>The Decentralized and Scaled network with a throughput of 10'000 tr/sec and 1000+ Nakamoto Coefficient.]]></description><content:encoded><![CDATA[
  <figure id="iXw2" class="m_original">
    <img src="https://img3.teletype.in/files/a1/3e/a13e394c-11c8-4f9a-b325-4461ac7b132c.png" width="888" />
    <figcaption>UpNode!</figcaption>
  </figure>
  <p id="nYCF">The Decentralized and Scaled network with a throughput of 10&#x27;000 tr/sec and 1000+ Nakamoto Coefficient.</p>
  <section>
    <h2 id="1ebh" data-align="center">Table of Content</h2>
  </section>
  <p id="EeR0"><strong><a href="/@upnode/Massa#1ebh">Content</a></strong></p>
  <p id="hl2U"><strong><a href="/@upnode/Massa#yvHY">Project Information</a></strong></p>
  <blockquote id="5KUa"><a href="/@upnode/Massa#DjkE">Description</a></blockquote>
  <p id="WAnI"><a href="/@upnode/Massa#DdAX"><strong>Server Requirements</strong></a></p>
  <p id="qnGE"><a href="/@upnode/Massa#UF8m"><strong>What is being installed?</strong></a></p>
  <p id="1fB0"><a href="/@upnode/Massa#3i3e"><strong>Launch</strong></a></p>
  <blockquote id="uf8y"><a href="/@upnode/Massa#pPiJ">1. Preparation</a></blockquote>
  <blockquote id="lJyf"><a href="/@upnode/Massa#u7X3">2. Run your Massa Node</a></blockquote>
  <blockquote id="HsXd"><a href="/@upnode/Massa#sT63">3. Create your Massa Wallet</a></blockquote>
  <blockquote id="gbOA"><a href="/@upnode/Massa#0Tur">4. Configuration</a></blockquote>
  <blockquote id="iWq4"><a href="/@upnode/Massa#k1Hq">5. Faucet your wallet</a></blockquote>
  <blockquote id="O9xU"><a href="/@upnode/Massa#8KzO">6. Staking</a></blockquote>
  <blockquote id="QzeK"><a href="/@upnode/Massa#TNu9">7. Register your node</a></blockquote>
  <blockquote id="2b1N"><a href="/@upnode/Massa#UKzr">8. Update your Node</a></blockquote>
  <p id="trpC"><a href="/@upnode/Massa#zjnh"><strong>Congratulations</strong></a></p>
  <p id="2l6W"><strong><a href="/@upnode/Massa#DVhC">Extra</a> </strong></p>
  <blockquote id="CDYq"><a href="/@upnode/Massa#r3R2">Community Contribution</a></blockquote>
  <p id="cg2R"><a href="/@upnode/Massa#aOwj"><strong>Useful Links</strong></a></p>
  <hr />
  <h2 id="yvHY" data-align="center"><strong>Project Information</strong></h2>
  <p id="Oh9Q" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <p id="m8bj">Official Information:</p>
  <ul id="IILF">
    <li id="AsnZ"><a href="https://massa.net/" target="_blank">Official site</a></li>
    <li id="PlAw"><a href="https://massa.net/blog/post/0/" target="_blank">Blog</a></li>
    <li id="ltNi"><a href="https://arxiv.org/pdf/1803.09029.pdf" target="_blank">White paper</a></li>
    <li id="Npm0"><a href="https://massa.net/testnet" target="_blank">live testnet at massa.net/testnet</a></li>
  </ul>
  <p id="vXji">Unofficial Information</p>
  <ul id="wyEi">
    <li id="iLQ9"><a href="https://massadopted.com/" target="_blank">Massa adopted</a></li>
  </ul>
  <p id="DjkE" data-align="center"><strong>DESCRIPTION</strong></p>
  <p id="ilod">Current blockchains that scale to high transaction throughputs are either centralized or unsafe. Massa is designing a new architecture, called the Blockclique, that scales transaction throughput up to 10,000 transactions per second without sacrificing decentralization nor security. Massa&#x27;s architecture is based on transaction sharding in a multithreaded block graph. Massa is a Proof-of-stake blockchain.</p>
  <hr />
  <h2 data-align="center" id="DdAX"><strong>Server Requirements</strong></h2>
  <p id="dZwE" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <p id="UOUD">⠀Recommendations from the team (VPS/VDS/DS): <br />8 cores, 16 GB RAM, 1TB disk and a decent internet connection.</p>
  <hr />
  <h2 data-align="center" id="UF8m">What is being installed?</h2>
  <p id="KqoV" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <p id="GXH7">⠀ The project consists of several applications:</p>
  <ul id="rnV0">
    <li id="TNRV">Node - creates blocks, is launched by a service file for smooth operation;</li>
    <li id="XsxA">Client - allows you to interact with the wallet and the network using various commands. Runs when needed during a running node.</li>
  </ul>
  <hr />
  <h2 data-align="center" id="3i3e">launch</h2>
  <p id="w1T0" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <p id="ywL9">⠀ Each subsection is a separate type of installation, you need to choose one of them.</p>
  <hr />
  <section>
    <h3 id="pPiJ" data-align="center"><strong>1. Preparation</strong></h3>
  </section>
  <p id="M8Qq" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <hr />
  <p id="Fy7O">Update packages</p>
  <pre data-lang="bash" id="zkCA">sudo  apt update &amp;&amp;  sudo  apt upgrade -y</pre>
  <p id="0Fnu">Open your ports</p>
  <pre data-lang="bash" id="N9Ry">sudo ufw allow 31244 &amp;&amp; sudo ufw allow 31245 &amp;&amp; sudo ufw allow 22</pre>
  <p id="OL4F">Enable your firewalls</p>
  <pre data-lang="bash" id="9ZVk">sudo ufw enable &amp;&amp; sudo ufw status</pre>
  <p id="VQo2">Install required packages</p>
  <pre data-lang="bash" id="wq8Q">sudo apt install pkg-config curl git build-essential libssl-dev libclang-dev cmake</pre>
  <p id="c8IQ">Install rustup and configure your path</p>
  <pre data-lang="bash" id="wX2q">curl --proto &#x27;=https&#x27; --tlsv1.2 -sSf https://sh.rustup.rs | sh</pre>
  <p id="4XUS">Follow the instruction and press 1 to install.</p>
  <pre data-lang="bash" id="fy0N">source $HOME/.cargo/env</pre>
  <p id="EoBY">Install nightly and set it as default</p>
  <p id="po9q">rustup default 1.74.1</p>
  <pre data-lang="bash" id="RYUI">rustup toolchain install 1.74.1 &amp;&amp; rustup default 1.74.1</pre>
  <p id="CW8o">Check rust version</p>
  <pre data-lang="bash" id="HBAL">rustc --version</pre>
  <p id="ijaY">Clone the massa repo</p>
  <pre data-lang="bash" id="H51T">git clone https://github.com/massalabs/massa.git</pre>
  <hr />
  <section>
    <h3 id="u7X3" data-align="center"><strong>2. Run your Massa Node</strong></h3>
  </section>
  <hr />
  <p id="Yho8" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <hr />
  <p id="kXxd"><strong>Start the node:</strong></p>
  <pre data-lang="bash" id="fSHO">cd massa/massa-node/ &amp;&amp; tmux</pre>
  <p id="DKLl">Launch the node, on Ubuntu:</p>
  <p id="qbJp">./massa-node -p &lt;PASSWORD&gt; |&amp; tee logs.txt</p>
  <pre data-lang="bash" id="jrKE">RUST_BACKTRACE=full cargo run --release -- -p &lt;PASSWORD&gt; |&amp; tee logs.txt</pre>
  <p id="Ajqw">change &lt;PASSWORD&gt; with a password of your choosing<br />Your node should be up now, you can close the window</p>
  <ul id="hxl1">
    <li id="bwo3"><strong>Open Another Window</strong></li>
  </ul>
  <p id="2CrP"><strong>Start the client:</strong></p>
  <pre data-lang="bash" id="SOxZ">cd massa/massa-client/ &amp;&amp; cargo run --release -- -p &lt;PASSWORD&gt;</pre>
  <p id="guut">Your client should be running now, you can close your client type.</p>
  <p id="jIaI">Replace &lt;PASSWORD&gt; with your password<br />type <code>ctrl + c</code> to leave</p>
  <hr />
  <section>
    <h3 id="sT63" data-align="center"><strong>3. Create your wallet </strong></h3>
  </section>
  <p id="Ron0" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <hr />
  <p id="hMlT">Still on the same window,</p>
  <hr />
  <p id="807x"><strong>A.</strong> Start the Client</p>
  <p id="ACr5">Start the interactive Client and load a wallet file:</p>
  <pre data-lang="bash" id="6e14">cargo run --release — -p &lt;PASSWORD&gt;</pre>
  <p id="bRhF">replace &lt;PASSWORD&gt; with your password</p>
  <figure id="tS82" class="m_retina">
    <img src="https://img2.teletype.in/files/d0/e8/d0e89890-6171-408d-8801-5e9f15226b29.png" width="618.5" />
  </figure>
  <section>
    <p id="85dR"><em><strong><u>If you are running Massa node for the first time;</u></strong></em></p>
  </section>
  <p id="Ygz2">Generate a new private key 🗝 and associated public key/ address; run the code below in the command prompt</p>
  <pre data-lang="bash" id="mgtZ">wallet_generate_secret_key</pre>
  <figure id="6BRL" class="m_retina">
    <img src="https://img2.teletype.in/files/14/32/14322e73-217a-4403-8f9e-70503da2f290.png" width="660" />
    <figcaption>generate private key</figcaption>
  </figure>
  <hr />
  <p id="POik" data-align="center"><strong>OR</strong></p>
  <hr />
  <section>
    <p id="Y2kw"><u><strong><em>If you already have one from a previous wallet;</em></strong></u></p>
  </section>
  <p id="wf31">If you are using BearBy wallet:</p>
  <blockquote id="xpdQ">log into you account</blockquote>
  <blockquote id="6BqM">Click on the Setting icon below the page as show in image</blockquote>
  <figure id="xp7k" class="m_retina">
    <img src="https://img1.teletype.in/files/c8/65/c865133a-bdcc-4fd1-8d1e-21017828b82e.png" width="681" />
  </figure>
  <blockquote id="P0cz">click on security and Privacy</blockquote>
  <blockquote id="ke75">Export Private key</blockquote>
  <figure id="iu68" class="m_retina">
    <img src="https://img3.teletype.in/files/61/e5/61e576eb-7833-482e-a583-edd6d745c78c.png" width="380.5" />
  </figure>
  <figure id="V1Rr" class="m_retina">
    <img src="https://img4.teletype.in/files/b5/cb/b5cbe5a3-3c03-4d3b-bb37-6229c766b2c5.png" width="395" />
  </figure>
  <blockquote id="8vJS">Impute your wallet password</blockquote>
  <blockquote id="ugaq">Click on the export key</blockquote>
  <figure id="xmjB" class="m_retina">
    <img src="https://img2.teletype.in/files/16/eb/16eb4c5f-a7dd-43b7-9505-52ee1ae31c1d.png" width="414.5" />
  </figure>
  <blockquote id="y4Xn">your private key gets revealed</blockquote>
  <blockquote id="7zBg">Copy your private key</blockquote>
  <figure id="inRg" class="m_retina">
    <img src="https://img3.teletype.in/files/2e/24/2e241cac-2f0e-405c-85b4-9021311d158b.png" width="384.5" />
  </figure>
  <section>
    <p id="NT9f"><strong>replace &lt;your_private_key&gt; with your save wallet private key.</strong></p>
  </section>
  <p id="W9m9">you can add manually an existing private key:</p>
  <pre id="hsbi">wallet_add_secret_keys &lt;your_private_key&gt;</pre>
  <hr />
  <hr />
  <p id="vkAN"><strong>B.</strong> View your Massa wallet details</p>
  <p id="l1bS">The list of addresses and keys of your wallet can be accessed with:</p>
  <pre data-lang="bash" id="Lv1s">wallet_info</pre>
  <figure id="iHOg" class="m_retina">
    <img src="https://img1.teletype.in/files/c2/7e/c27e9a5f-f8c3-4080-b677-b7126ebd0bdc.png" width="578" />
  </figure>
  <p id="pvmj"><strong>C. </strong>Register your wallet private key to your node;</p>
  <p id="6WC4">node_start_staking</p>
  <pre data-lang="bash" id="T9rZ">node_start_staking &lt;your_wallet_address&gt;</pre>
  <section>
    <p id="44eS"><strong>Very Important:</strong> Ensure to save these keys (private and public keys) and also your address; if you lose it you have lost control of your wallet; protect it</p>
  </section>
  <p id="yG46">You can always close your client with the command</p>
  <p id="qpxk"><code>CTRL + C</code></p>
  <hr />
  <section>
    <h3 id="0Tur" data-align="center"><strong>4. Configuration </strong></h3>
  </section>
  <p id="eVEL" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <hr />
  <p id="kp4r">Nodes in the Massa network need to establish connections between them to communicate, propagate blocks and operations, and maintain consensus and synchrony all together.</p>
  <p id="R674">In Massa, nodes are non-routable by default and require a manual operation to be made routable. To do this you need to configure your node</p>
  <pre data-lang="bash" id="Kl2e">cd &amp;&amp; cd massa/massa-node/config</pre>
  <pre data-lang="bash" id="rwPJ">vim config.toml</pre>
  <p id="NWCR">then press <code><em>i</em></code> on your keyboard; this creates and input mode. Copy and paste this</p>
  <pre data-lang="bash" id="YcSv">[network]
routable_ip = &quot;AAA.BBB.CCC.DDD&quot;</pre>
  <p id="qMs9">replace <code>AAA.BBB.CCC.DDD</code> with your ip-address</p>
  <p id="ev8w">After editing the config.toml file, press <code>esc</code> button on your keyboard, then type <code>:wq</code> to exit and save your changes. </p>
  <p id="mu2y"></p>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="W5js"><strong>Next, Restart your node to effect the configuration update</strong></p>
  </section>
  <p id="IQaA"></p>
  <h2 id="zjnh" data-align="center"><strong>Congratulations!!! you have just set up and registered your Massa Mainnet node</strong></h2>
  <hr />
  <h3 id="aOwj" data-align="center">useful links</h3>
  <p id="Rg16" data-align="right"><em><a href="/@letskynode/Massa#DIMN">Back to content</a></em></p>
  <p data-align="center" id="Pxv8"><a href="https://massa.net/" target="_blank">Official site of the project</a> | <a href="https://t.me/massanetwork" target="_blank">Official Telegram group</a></p>
  <p data-align="center" id="7M9c"><a href="https://t.me/massa_latest_news" target="_blank">Telegram announcement channel</a> |<a href="https://twitter.com/massalabs" target="_blank">Twitter</a> </p>
  <p id="fiJz" data-align="center"><a href="https://discord.com/invite/TnsJQzXkRN" target="_blank">Discord</a> | <a href="https://www.reddit.com/r/massanet" target="_blank">reddit</a> | <a href="https://github.com/massalabs/" target="_blank">GitHub</a> |</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/zkml_transpiler</guid><link>https://teletype.in/@nodeint/zkml_transpiler?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/zkml_transpiler?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Decision Tree with Leo Transpiler: Demonstration</title><pubDate>Sat, 28 Oct 2023 13:45:16 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/98/ae/98ae166b-b298-445c-bbb6-cdc269b96dc9.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/f0/e1/f0e13924-0bcc-4257-ba4f-7b6f535a8eca.png"></img>In this blog we will be demonstration the use of Leo transpiler using the Iris flower dataset.]]></description><content:encoded><![CDATA[
  <figure id="s5mB" class="m_original">
    <img src="https://img4.teletype.in/files/f0/e1/f0e13924-0bcc-4257-ba4f-7b6f535a8eca.png" width="784" />
  </figure>
  <h2 id="kIk2">Introduction </h2>
  <p id="IEpw">In this blog we will be demonstration the use of Leo transpiler using the Iris flower dataset. </p>
  <p id="w4eJ">The Iris dataset was used in R.A. Fisher&#x27;s classic 1936 paper, <a href="http://rcs.chemometrics.ru/Tutorials/classification/Fisher.pdf" target="_blank">The Use of Multiple Measurements in Taxonomic Problems</a>, and can also be found on the <a href="http://archive.ics.uci.edu/ml/" target="_blank">UCI Machine Learning Repository</a>.</p>
  <p id="LVTL">It includes three iris species with 50 samples each as well as some properties about each flower. One flower species is linearly separable from the other two, but the other two are not linearly separable from each other.</p>
  <figure id="jtvd" class="m_column">
    <img src="https://img2.teletype.in/files/d6/1b/d61b3789-96d8-4097-8333-ff8fb93842e6.png" width="1011" />
  </figure>
  <p id="3nS7">The columns in this dataset are:</p>
  <ul id="ea3H">
    <li id="hRHN"><em><code>Id </code></em></li>
    <li id="nxOA"><em><code>SepalLengthCm</code></em></li>
    <li id="q6PS"><em><code>SepalWidthCm</code></em></li>
    <li id="HTbu"><em><code>PetalLengthCm</code></em></li>
    <li id="DQql"><em><code>PetalWidthCm</code></em></li>
    <li id="GZrj"><em><code>Species</code></em></li>
  </ul>
  <p id="JQKM">Python a programming language that is used greatly in the machine learning, AI and data science world, there need to be a way to bridge the gap and allow python developers to create smart contracts and decentralized applications on the Aleo blockchain. The Leo transpiler functions to transforms or convert python codes into formats compatible and suitable for the Aleo virtual machine. </p>
  <p id="OQPm">The<a href="https://github.com/AleoHQ/python-sdk/tree/master/zkml" target="_blank"> zkML transpiler</a> is an open-source SDK that bridges Python — one of the most popular programming languages for machine learning developers — and zero-knowledge cryptography.</p>
  <p id="PknF">Developers can train their machine learning model as normal, then use the transpiler to convert the model into Leo, a ZK-friendly programming language compatible with Aleo’s zero-knowledge layer 1 solution.</p>
  <p id="AX3U">The transpiler is currently implemented for decision tree models, a common type of machine learning algorithm that can create both classification and regression models. Eventually, it may be expanded to include random forest ML models, simple neural networks, linear regression models, and others.</p>
  <p id="efOz">We will be demonstrating the implementation of decision tree model using the Leo transpiler. </p>
  <p id="1P5B"></p>
  <h2 id="Load-the-Iris-dataset-and-explore-the-data">Load the Iris dataset and explore the data</h2>
  <p id="YaJZ">We need to load and visualize our dataset that we would be using for this demonstration. this dataset is built into the sklearn library </p>
  <pre id="aHWb" data-lang="python"># import the key libraries
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
import logging
import os
from leotranspiler import LeoTranspiler

# Load the iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# take a look at the data
print(f&quot;Data shape: {X.shape}&quot;)
print(f&quot;Feature names: {iris.feature_names}&quot;)
print(f&quot;Label names: {iris.target_names}&quot;)
print(f&quot;First row: {X[0]}&quot;)
print(f&quot;First label: {y[0]}&quot;)</pre>
  <p id="pqyr">The output will look like this </p>
  <figure id="JQfW" class="m_column">
    <img src="https://img3.teletype.in/files/65/c8/65c82ca4-280d-4c23-bb08-f0565c04b377.png" width="817" />
  </figure>
  <h3 id="zuXO">Split the data</h3>
  <p id="UNWC">Split the data into train and test sets in a ratio of 80:20</p>
  <pre id="6lBk" data-lang="python"># Split the dataset into a training and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)</pre>
  <p id="jMZ6"></p>
  <h3 id="fjb4">Create the decision tree classifier</h3>
  <pre id="0G5B" data-lang="python">
# Create and train a decision tree classifier
clf = DecisionTreeClassifier(random_state=0)
clf.fit(X_train, y_train)</pre>
  <p id="I0yj">Output will look like this </p>
  <figure id="OZOB" class="m_column">
    <img src="https://img2.teletype.in/files/15/49/1549873f-714b-41c5-98f2-55a1f7d9a50e.png" width="342" />
  </figure>
  <h3 id="X0u5">Visualize the decision tree </h3>
  <p id="jwlR">Here we try to visualize the decision tree </p>
  <pre id="kJZX" data-lang="python"># visualize the decision tree
plt.figure(figsize=(15, 7.5))
plot_tree(
    clf,
    filled=True,
    feature_names=iris.feature_names,
    class_names=iris.target_names.tolist(),
)
plt.show()</pre>
  <p id="4hU9">Output will look like this</p>
  <figure id="ahLo" class="m_column">
    <img src="https://img2.teletype.in/files/16/f0/16f0a766-11ff-414d-aa47-ffbe80e3c7e4.png" width="1101" />
  </figure>
  <h3 id="BMjh">Transpile the Python code into Leo code </h3>
  <p id="rs6q">First we need to set the logger and then transpiler the decision tree into leo code </p>
  <pre id="bG0m" data-lang="python"># Set the logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Transpile the decision tree into Leo code
lt = LeoTranspiler(model=clf, validation_data=X_train)
leo_project_path = os.path.join(os.getcwd(), &quot;tmp&quot;)
leo_project_name = &quot;tree1&quot;
lt.to_leo(path=leo_project_path, project_name=leo_project_name)</pre>
  <p id="UF5S">Output will look like this</p>
  <figure id="rGz8" class="m_column">
    <img src="https://img3.teletype.in/files/25/c5/25c5ae8a-9b8d-454c-88fc-3af1a133ce19.png" width="889" />
  </figure>
  <h3 id="voTt">Checkout the transpiled leo code </h3>
  <p id="wDGO">Try to visualize the transpiled python code </p>
  <pre id="YEox" data-lang="python"># take a look at the transpiled code
leo_code_path = os.path.join(
    (os.path.join(leo_project_path, leo_project_name, &quot;src&quot;, &quot;main.leo&quot;))
)
with open(leo_code_path, &quot;r&quot;) as f:
    leo_code = f.read()
print(leo_code)</pre>
  <p id="zGWe">Output will look like this</p>
  <figure id="XJCw" class="m_column">
    <img src="https://img1.teletype.in/files/8f/d5/8fd520e9-d742-4d0f-955b-603986182043.png" width="941" />
  </figure>
  <h3 id="He3P">Prove and compare the different predictions </h3>
  <p id="5R7Q">Let&#x27;s try one instance of the data on Leo and python models and compare the predictions and labels </p>
  <p id="5sxV"><strong>For Leo model </strong></p>
  <p id="Mjo4">We first perfect the prove and prediction using leo </p>
  <pre id="Xgwv" data-lang="python"># prove and compare the Leo prediction with the Python prediction and the label
zkp = lt.execute(input_sample=X_test[0])
python_prediction = clf.predict([X_test[0]])

print(f&quot;Circuit constraints: {zkp.circuit_constraints}&quot;)
print(f&quot;Leo prediction in fixed-point notation: {zkp.output[0]}&quot;)
print(f&quot;Leo prediction in decimal notation: {zkp.output_decimal[0]}&quot;)
print(f&quot;Python prediction: {python_prediction[0]}&quot;)
print(f&quot;Label: {y_test[0]}&quot;)
print(f&quot;Proof: {zkp.proof}&quot;)</pre>
  <p id="a1nK">Output will look like this</p>
  <figure id="mmOC" class="m_original">
    <img src="https://img3.teletype.in/files/28/67/28675e94-d959-4c25-94f9-cd21c77b5300.png" width="1093" />
  </figure>
  <p id="GjDf">Next compute the accuracy</p>
  <pre id="NNOi" data-lang="python"># Compute the accuracy of the Leo program on the test set
num_test_samples = len(X_test)
leo_predictions = np.zeros(num_test_samples)
for i in range(num_test_samples):
    leo_predictions[i] = lt.run(input_sample=X_test[i]).output_decimal[0]

# The leo accuracy 
leo_accuracy = np.sum(leo_predictions == y_test) / num_test_samples</pre>
  <p id="RlqD"><strong>For Python model </strong></p>
  <p id="SOdo">Then, we make the prediction using python:</p>
  <pre id="ZNcy" data-lang="python"># make the prediction using python 
python_predictions = clf.predict(X_test)
# The python accuracy 
python_accuracy = np.sum(python_predictions == y_test) / num_test_samples
</pre>
  <p id="oi1K"><strong>Compare the two accuracies</strong></p>
  <pre id="w8oQ" data-lang="python">print(f&quot;Leo accuracy: {100*leo_accuracy} %&quot;)
print(f&quot;Python accuracy: {100*python_accuracy} %&quot;)</pre>
  <p id="Al8W">Output will look like this</p>
  <figure id="0mxX" class="m_column">
    <img src="https://img1.teletype.in/files/c9/18/c918ee41-dcca-4adc-bed7-74bf6346a26d.png" width="773" />
  </figure>
  <p id="U0ea">Thank you for following through with this demonstration </p>
  <p id="d49y" data-align="center">Website: <a href="https://www.aleo.org/" target="_blank">https://www.aleo.org/</a></p>
  <p id="vpcF" data-align="center">T <a href="https://twitter.com/AleoHQ" target="_blank">witter</a> : <a href="https://twitter.com/AleoHQ" target="_blank">https://twitter.com/AleoHQ</a></p>
  <p id="Iliv" data-align="center">G <a href="https://github.com/AleoHQ" target="_blank">ithub</a> : <a href="https://github.com/AleoHQ" target="_blank">https://github.com/AleoHQ</a></p>
  <p id="trPh" data-align="center">D <a href="https://discord.com/invite/aleohq" target="_blank">iscord</a> : <a href="https://discord.com/invite/aleohq" target="_blank">https://discord.com/invite/aleohq</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Aleo_zkML_2</guid><link>https://teletype.in/@nodeint/Aleo_zkML_2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Aleo_zkML_2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Aleo ZKML on the Boston Housing dataset [PART 2] </title><pubDate>Sat, 28 Oct 2023 12:49:31 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/4e/b7/4eb775b0-14f8-46f0-9a0d-05962291c8f9.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/be/80/be80b446-fb56-44f1-8675-ad1590e7c5f6.png"></img>This blog is a continuation of th Aleo ZKML on the Boston Housing dataset series. Please follow the link to check out the first part]]></description><content:encoded><![CDATA[
  <figure id="PGgk" class="m_original">
    <img src="https://img4.teletype.in/files/be/80/be80b446-fb56-44f1-8675-ad1590e7c5f6.png" width="677" />
  </figure>
  <p id="eBzE">This blog is a continuation of th Aleo ZKML on the Boston Housing dataset series. Please follow the <a href="https://teletype.in/@upnode/Aleo_zkML_I" target="_blank">link</a> to check out the first part </p>
  <p id="NL1H">In this blog we will be going further with aim of this blog to train the boston housing dataset using Aleo in order to preserve privacy of machine learning training. </p>
  <h3 id="ROmV">Get Started</h3>
  <p id="WKAJ">Import the necessary libraries which you will need for your analysis</p>
  <pre data-lang="python" id="a4Xt">from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd</pre>
  <h3 id="gkvN">Build the function to load data and split the data into test and train datasets </h3>
  <p id="pWJi">Build a function to load in the data to your work space</p>
  <pre data-lang="python" id="aANt">def load_data():
  data = pd.read_csv(&#x27;./BostonHousing.csv&#x27;)
  X = data.drop(&#x27;medv&#x27;, axis=1)    
  y = data[&#x27;medv&#x27;]    
  X = np.round(X).astype(int)    
  y = np.round(y).astype(int)
  return X, y</pre>
  <p id="AvmX">Load the data and return X and y</p>
  <pre data-lang="python" id="wbwu">X, y = load_data()</pre>
  <p id="SrT5">Split the data into train and test sets in a ratio of 80:20</p>
  <pre id="Nhd5" data-lang="python">X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)</pre>
  <p id="ZWJr"></p>
  <p id="3sZB">Convert the train data to a list</p>
  <pre data-lang="python" id="ZiqK">X_train_leo = X_train.values.tolist()
y_train_leo = y_train.values.tolist()</pre>
  <p id="iu0x">Next we obtain our lineal regression model and fit the model to our train data</p>
  <pre data-lang="python" id="FuBc">model = LinearRegression()
model.fit(X_train, y_train)</pre>
  <p id="AqUH">Next we get the model weights and intercepts and assign them to the variable weights and bias</p>
  <pre data-lang="python" id="sf95">weights = model.coef_
bias = model.intercept_</pre>
  <h3 id="cZsz">Scale the weights</h3>
  <p id="ZEBT">We need to convert the weights and biases into integer, this will scale these parameters and our model. </p>
  <pre id="TnLY" data-lang="python"># Scale weights and bias
weights_scaled = [int(w) for w in weights]
bias_scaled = int(bias)</pre>
  <h3 id="zLg2">Build the linear function </h3>
  <p id="YPvu">Build the prediction function for linear regression</p>
  <pre data-lang="python" id="ZDnv"># Perform the linear prediction
def linear_regression_predict(weights, features, bias):
    prediction = 0    
    for i in range(len(weights)):        
    prediction += weights[i] * features[i]    
    prediction += bias    
    return prediction
    </pre>
  <h3 id="3QDj">Feature scaling </h3>
  <p id="uedE">Next we need to get the columns that have been scaled that is columns with weights = 0, then drop these columns from the X_test dataset, then convert it to a list. Also we need to get the weights that are not scaled that is weights that are not equal to 0 </p>
  <pre id="4Col" data-lang="python">zero_weight_columns = X.columns[np.array(weights_scaled) == 0]
# Scale features for prediction
X_test = X_test.drop(zero_weight_columns, axis=1)
X_test_scaled = X_test.applymap(float_to_int).values.tolist()
weights_scaled = [weight for weight in weights_scaled if weight != 0]</pre>
  <h3 id="C2Ex">Linear Regression with Aleo </h3>
  <p id="jW7b">Build the function that generates Aleo code for linear regression </p>
  <pre id="QL7d" data-lang="python">#Utils function for generate aleo code linear_regression
def generate_aleo_code(weights, integer_type=&#x27;i32&#x27;):    
    num_features = len(weights)    
    function_str = &quot;transition linear_regression_predict(&quot;    
    # Add weight and feature arguments    
    for i in range(num_features):        
        function_str += f&quot;weight{i}: {integer_type}, feature{i}: {integer_type}, &quot;    # Add bias argument    function_str += f&quot;bias: {integer_type}) -&gt; {integer_type} {{\n&quot;
    # Add body of function    
    function_str += f&quot;let prediction: {integer_type} = &quot;    
    for i in range(num_features):        
        function_str += f&quot;weight{i} * feature{i} + &quot;    
    function_str += &quot;bias;\n&quot;
    
    function_str += &quot;return prediction;\n&quot;    
    function_str += &quot;}&quot;
    return function_str</pre>
  <p id="5KlR">Generate new project </p>
  <pre id="zWJA" data-lang="bash">#generate new project aleo
!./leo new linear_regression</pre>
  <figure id="Wuou" class="m_column">
    <img src="https://img4.teletype.in/files/71/4f/714faf59-874c-46c0-8da9-45ed4ce01507.png" width="811" />
  </figure>
  <p id="Nfmu">Next we replace the linear_regression.aleo program with our Aleo code generator function you earlier defined and write this into a file called content_program_aleo and save in the directory path <em>&#x27;linear_regression/src/main.leo&#x27;</em></p>
  <pre id="XiKJ" data-lang="python">#Fill code in main.leo
content_program_aleo = &quot;program linear_regression.aleo { %code% }&quot;.replace(&#x27;%code%&#x27;, generate_aleo_code(weights_scaled))
with open(&#x27;linear_regression/src/main.leo&#x27;, &#x27;w&#x27;) as file:    
    file.write(content_program_aleo)</pre>
  <p id="vnuU">Import the necessary libraries </p>
  <pre id="Upvu" data-lang="python">import os
from interp_leo.leo_uitls import convert_from_leo_type
from interp_leo.leo_program import LeoProgram</pre>
  <h3 id="Y5bQ">Train the Model </h3>
  <p id="sxJc">Here, we try to train the model through 102 iterations to obtain the predicted value for the target variable. </p>
  <pre id="RqlO" data-lang="python">leo_program = LeoProgram(path=os.getcwd() + &#x27;/linear_regression&#x27;)
y_pred_scaled = []
iter = 1
for x in X_test_scaled:  
    print(&#x27;iteration&#x27;, f&quot;{iter}/{len(X_test_scaled)}&quot;)  
    value = leo_program.linear_regression_predict(*([val for pair in zip(weights_scaled, x) for val in pair] + [bias_scaled]))  
    y_pred_scaled.append(convert_from_leo_type(value))  
    iter += 1</pre>
  <figure id="t4HO" class="m_column">
    <img src="https://img4.teletype.in/files/35/8b/358b0804-60d4-4f94-836d-5d2a56d79d2d.png" width="601" />
  </figure>
  <p id="ryWY">Visualize our predicted values. </p>
  <pre id="ouL7">y_pred_scaled</pre>
  <figure id="nyaR" class="m_column">
    <img src="https://img2.teletype.in/files/57/32/5732b70b-c5fc-4010-b517-17f22c0976c8.png" width="721" />
  </figure>
  <p id="q3ow">Convert our y_pred_scaled back to numpy array </p>
  <pre id="uecc" data-lang="python">y_pred = np.array(y_pred_scaled)</pre>
  <h2 id="oXT1">Evaluation</h2>
  <p id="fuKq">Next we will be evaluating our model using the metric root mean squared error [RMSE]</p>
  <p id="vCz1">Build the RMSE function</p>
  <pre data-lang="python" id="L34u">def rmse(y_true, y_pred):    
    &#x27;&#x27;&#x27;    
    Compute Root Mean Square Percentage Error between two arrays.    
    &#x27;&#x27;&#x27;    
    loss = np.sqrt(np.mean(np.square(((y_true - y_pred) / y_true)), axis=0))
    return loss</pre>
  <p id="ILNN">Print the RMSE error value</p>
  <pre data-lang="python" id="RbeV">import numpy as np
y_test = np.array(y_test.apply(float_to_int))
print(&#x27;🔥 RMSE error:&#x27;, rmse(y_test, y_pred))</pre>
  <figure id="kfP7" class="m_column">
    <img src="https://img3.teletype.in/files/2c/26/2c2665a2-7269-4cce-8c41-ed3fe77372c4.png" width="750" />
  </figure>
  <p id="VYLW">From the image we can see that our RMSE error is 0.43035</p>
  <p id="3oFz">This is lower than what we got from Part 1 with RMSE error of 0.28489. There are continuous improvements and update of Aleo ZKML initiative. </p>
  <p id="dbhz">Thank you for following through with this write-up on Aleo ZKML </p>
  <hr />
  <p id="d49y" data-align="center">Website: <a href="https://www.aleo.org/" target="_blank">https://www.aleo.org/</a></p>
  <p id="vpcF" data-align="center">T <a href="https://twitter.com/AleoHQ" target="_blank">witter</a> : <a href="https://twitter.com/AleoHQ" target="_blank">https://twitter.com/AleoHQ</a></p>
  <p id="Iliv" data-align="center">G <a href="https://github.com/AleoHQ" target="_blank">ithub</a> : <a href="https://github.com/AleoHQ" target="_blank">https://github.com/AleoHQ</a></p>
  <p id="trPh" data-align="center">D <a href="https://discord.com/invite/aleohq" target="_blank">iscord</a> : <a href="https://discord.com/invite/aleohq" target="_blank">https://discord.com/invite/aleohq</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Aleo_zkML_I</guid><link>https://teletype.in/@nodeint/Aleo_zkML_I?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Aleo_zkML_I?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Aleo ZKML on the Boston Housing dataset [PART 1]</title><pubDate>Sat, 28 Oct 2023 11:47:56 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/4e/b7/4eb775b0-14f8-46f0-9a0d-05962291c8f9.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/be/80/be80b446-fb56-44f1-8675-ad1590e7c5f6.png"></img>Zero-knowledge machine learning (ZKML) is a relatively new field that focuses on training machine learning models without revealing the underlying data. For providing frameworks with inherent privacy-preserving properties in machine learning, Aleo can be used for this purpose especially in respect to ZKML.]]></description><content:encoded><![CDATA[
  <figure id="JPGn" class="m_original">
    <img src="https://img4.teletype.in/files/be/80/be80b446-fb56-44f1-8675-ad1590e7c5f6.png" width="677" />
  </figure>
  <h2 id="7g0V">Introduction </h2>
  <p id="69qM">Zero-knowledge machine learning (ZKML) is a relatively new field that focuses on training machine learning models without revealing the underlying data. For providing frameworks with inherent privacy-preserving properties in machine learning, Aleo can be used for this purpose especially in respect to ZKML. </p>
  <p id="IEpw">In this blog we will be explaining the application of Aleo in ZKML using the Boston housing dataset. This dataset has found wide use in statistics and machine learning. The Boston housing dataset contains different house features for houses in Boston, Massachusetts in the united States. With 506 data points, this dataset is usually used in regression tasks for predicting house prices based on the given features. </p>
  <p id="n8vK">We will be applying simple linear regression algorithm on the Boston dataset, this is used to establish a linear relationship between these features and the housing prices </p>
  <p id="yG32"></p>
  <h2 id="ZEP1">Pre-requisite</h2>
  <p id="mNNG">This project was done on jupyter note book </p>
  <h3 id="DpZk">Set up Aleo and Leo </h3>
  <p id="yMgz">You&#x27;ll need to install Aleo and Leo and then set up the required environment. This sets up our environment and downloads Aleo and leo into our system or server. </p>
  <p id="y5mA">run the code below;</p>
  <pre id="d0FP" data-lang="bash">!wget https://github.com/AleoHQ/leo/releases/download/v1.7.0/leo-v1.7.0-x86_64-unknown-linux-musl.zip
!unzip leo-v1.7.0-x86_64-unknown-linux-musl.zip
!rm -rf leo-v1.7.0-x86_64-unknown-linux-musl.zip</pre>
  <p id="aBey">wait for the process to complete, you will get an image like similar to this </p>
  <figure id="WJPj" class="m_column">
    <img src="https://img2.teletype.in/files/12/1a/121ab8da-d7b9-40f8-9146-6e3b9aa86b44.png" width="1146" />
  </figure>
  <h3 id="Km3J">Get the dataset </h3>
  <p id="nkh7">Obtain the Boston dataset which we will be using for processing. </p>
  <pre id="wOV6" data-lang="bash"># Get the boston housing data
!wget https://gist.githubusercontent.com/icodragon/63ede7ff4478c680049aa353d1cefb11/raw/3985fb403e3c0839000c62396b49116be7d67692/BostonHousing.csv</pre>
  <p id="5usB">Clone the Aleo zk-ML initiative</p>
  <pre id="qLae">!git clone https://github.com/stakemepro/aleo-zkml-initiative-1.git &amp;&amp; mv aleo-zkml-initiative-1/interp_leo interp_leo &amp;&amp; rm -rf aleo-zkml-initiative-1</pre>
  <h2 id="e7SI">Without ZK</h2>
  <p id="WKAJ">Import the necessary libraries which you will need for your analysis</p>
  <pre id="SnVb" data-lang="python">from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd
</pre>
  <p id="pWJi">Build a function to load in the data to your work space</p>
  <pre id="mdjm" data-lang="python">def load_data():
  data = pd.read_csv(&#x27;./BostonHousing.csv&#x27;)
  X = data.drop(&#x27;medv&#x27;, axis=1)    
  y = data[&#x27;medv&#x27;]    
  X = np.round(X).astype(int)    
  y = np.round(y).astype(int)
  return X, y</pre>
  <p id="AvmX">Load the data and return X and y </p>
  <pre id="Bl5a" data-lang="python">X, y = load_data()</pre>
  <p id="SrT5">Split the data into train and test sets in a ratio of 80:20</p>
  <pre id="7nXh" data-lang="python">X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)</pre>
  <p id="3sZB">Convert the train data to a list </p>
  <pre id="F4Vi" data-lang="python">X_train_leo = X_train.values.tolist()
y_train_leo = y_train.values.tolist()

print(X_train_leo)print(y_train_leo)</pre>
  <figure id="GQ3x" class="m_column">
    <img src="https://img4.teletype.in/files/3b/05/3b05d1c6-c037-43dc-87f8-e6179da4aba9.png" width="946" />
  </figure>
  <h3 id="zQpt">Model</h3>
  <p id="iu0x">We are using a simple linear model for our analysis here. So we get our model and fit our linear model on our train data (X_train, y_train)</p>
  <pre id="8H6W" data-lang="python">model = LinearRegression()
model.fit(X_train, y_train)</pre>
  <p id="AqUH">Next we get the model weights and intercepts and assign them to the variable weights and bias</p>
  <pre id="4B08" data-lang="python">weights = model.coef_
bias = model.intercept_</pre>
  <p id="QaYI">View the weights by calling the variable weights</p>
  <pre id="KfKC">weights</pre>
  <figure id="crIq" class="m_column">
    <img src="https://img2.teletype.in/files/1c/69/1c69d492-8780-4150-b5b3-a37bda70ce6b.png" width="713" />
  </figure>
  <h2 id="Wmy1">Prediction </h2>
  <p id="M3pa">Here, we make predictions using our linear model on the test dataset to obtain our predicted values for various values of y</p>
  <p id="YPvu">Build the prediction function for linear regression </p>
  <pre id="PYuz" data-lang="python"># Perform the linear prediction
def linear_regression_predict(weights, features, bias):
    prediction = 0    
    for i in range(len(weights)):        
    prediction += weights[i] * features[i]    
    prediction += bias    
    return prediction</pre>
  <p id="iOYd">Get the predicted values of y and assign the values as y_pred. </p>
  <pre id="DqaW" data-lang="python">y_pred = [linear_regression_predict(weights, x, bias) for x in X_test.values.tolist()]</pre>
  <p id="aqsu">Next visualize our y_pred </p>
  <pre id="0Mo2" data-lang="python">y_pred</pre>
  <figure id="RQVX" class="m_column">
    <img src="https://img1.teletype.in/files/c0/4d/c04d817a-255e-46b8-9c8d-6f471d7fed3d.png" width="374" />
  </figure>
  <h2 id="oXT1">Evaluation </h2>
  <p id="fuKq">Next we will be evaluating our model using the metric root mean squared error [RMSE]</p>
  <p id="vCz1">Build the RMSE function</p>
  <pre id="LZtI" data-lang="python">def rmse(y_true, y_pred):    
    &#x27;&#x27;&#x27;    
    Compute Root Mean Square Percentage Error between two arrays.    
    &#x27;&#x27;&#x27;    
    loss = np.sqrt(np.mean(np.square(((y_true - y_pred) / y_true)), axis=0))
    return loss</pre>
  <p id="ILNN">Print the RMSE error value</p>
  <pre id="GRKq" data-lang="python">import numpy as np
print(&#x27;🔥 RMSE error:&#x27;, rmse(np.array(y_test), np.array(y_pred)))</pre>
  <figure id="Wsuk" class="m_column">
    <img src="https://img1.teletype.in/files/8e/83/8e83f986-e87f-4920-8ab4-9bab0c1bff2e.png" width="793" />
  </figure>
  <p id="VYLW">From the image we can see that our RMSE error is 0.28489</p>
  <p id="KpIF"></p>
  <p id="dbhz">We will be continuing the Part II on the next update.</p>
  <p id="bKCE">Follow this <a href="https://teletype.in/@upnode/Aleo_zkML_2" target="_blank">link</a> to access the Part II</p>
  <hr />
  <p id="d49y" data-align="center">Website: <a href="https://www.aleo.org/" target="_blank">https://www.aleo.org/</a> </p>
  <p id="vpcF" data-align="center">T <a href="https://twitter.com/AleoHQ" target="_blank">witter</a> : <a href="https://twitter.com/AleoHQ" target="_blank">https://twitter.com/AleoHQ</a> </p>
  <p id="Iliv" data-align="center">G <a href="https://github.com/AleoHQ" target="_blank">ithub</a> : <a href="https://github.com/AleoHQ" target="_blank">https://github.com/AleoHQ</a> </p>
  <p id="trPh" data-align="center">D <a href="https://discord.com/invite/aleohq" target="_blank">iscord</a> : <a href="https://discord.com/invite/aleohq" target="_blank">https://discord.com/invite/aleohq</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Leo_contributor</guid><link>https://teletype.in/@nodeint/Leo_contributor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Leo_contributor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>Leo-Contributor: Starter Guide</title><pubDate>Sun, 22 Oct 2023 18:00:22 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f3/5a/f35a468c-d26a-4943-9b0b-028b1e15adbe.png"></media:content><category>Beginners</category><description><![CDATA[<img src="https://img2.teletype.in/files/5c/6e/5c6e6309-523b-4606-ad8e-9edfc5456d90.png"></img>Pre-requisites]]></description><content:encoded><![CDATA[
  <figure id="sxn7" class="m_column">
    <img src="https://img2.teletype.in/files/5c/6e/5c6e6309-523b-4606-ad8e-9edfc5456d90.png" width="1816" />
  </figure>
  <p id="TDTu">Pre-requisites </p>
  <p id="gxmJ">Important Notice: You need to have a github account. If you already have a github account, you can proceed , but if you do not please to continue, create a github account following the link <a href="https://github.com/" target="_blank">https://github.com/</a></p>
  <h3 id="rNGQ">Optional Pre requisite</h3>
  <p id="7wty">Though this step is optionally, but it&#x27;s advisable to go through with it cause this is best practice. </p>
  <p id="mPGn">Create a new user</p>
  <pre id="zPEb" data-lang="bash">useradd danke </pre>
  <p id="FNuX">You will be prompted to input your password, add your password</p>
  <p id="u2wa">Then other name values like Full Name, Room Number, Work Phone etc. will request an input. Press enter to use the default values</p>
  <p id="0q6c">Grant the user the permissions and switch to the user.</p>
  <pre id="5nOU" data-lang="bash">sudo usermod -aG sudo leo</pre>
  <p id="CMl7">Ensure to change to the user home directory</p>
  <pre id="bDiU" data-lang="bash">cd /home/danke</pre>
  <p id="W1b9">Update and install the necessary packages</p>
  <pre id="EpeO" data-lang="bash">sudo apt-get update &amp;&amp; sudo apt-get install unzip &amp;&amp; wget git -y</pre>
  <p id="4K9s"></p>
  <p id="ZQMS">Create an access Token: <br />Follow the link: <a href="https://github.com/settings/tokens/new" target="_blank">https://github.com/settings/tokens/new</a></p>
  <figure id="Bi0o" class="m_column">
    <img src="https://img1.teletype.in/files/84/f1/84f116ce-0fb7-44eb-b0f5-4132a561b38f.png" width="1892" />
  </figure>
  <p id="Cmu9">Scroll down </p>
  <figure id="21oZ" class="m_original">
    <img src="https://img2.teletype.in/files/d7/87/d787fa53-0c81-4040-a9cf-0db866b15174.png" width="863" />
  </figure>
  <p id="NQPQ">Click on generate token</p>
  <p id="ZlAl">Note: Please save your token securely and never revel it to anyone</p>
  <figure id="GuET" class="m_column">
    <img src="https://img4.teletype.in/files/f0/b7/f0b74abf-f69f-4284-bc6e-17448f9657b3.png" width="863" />
  </figure>
  <h3 id="P26b">Variables</h3>
  <p id="HqSX">Next Set your variables </p>
  <pre id="EERK" data-lang="bash">NICKNAME=&quot;Your_github_nickname&quot; 
EMAIL=&quot;Your_github_email&quot; 
TOKEN=&quot;Your_personal_access_token&quot;</pre>
  <p id="MDRk">Replace &quot;Your_github_nickname&quot;  with your github alias, replace &quot;Your_github_email&quot;  with your email, and &quot;Your_personal_access_token&quot; with your saved secured token. </p>
  <h3 id="tdun">Configuration</h3>
  <p id="DLyE">Next configure your git </p>
  <pre id="vxsC" data-lang="bash">git config --global credential.helper store</pre>
  <p id="LmGK">configure your username and email</p>
  <pre id="x9pp" data-lang="bash">git config --global user.name $NICKNAME</pre>
  <pre id="7nzc" data-lang="bash">git config --global user.email $EMAIL</pre>
  <pre id="e0Ba" data-lang="bash">git credential approve &lt; &lt;(echo &quot;protocol=https host=github.com username=$NICKNAME password=$TOKEN&quot;)</pre>
  <p id="PCXp"></p>
  <h3 id="movk">Download the Aleo and Leo Binary </h3>
  <pre id="0BBn" data-lang="bash">mkdir $HOME/aleo</pre>
  <pre id="jIf5" data-lang="bash">wget https://github.com/AleoHQ/leo/releases/download/v1.9.5/leo-v1.9.5-x86_64-unknown-linux-musl.zip</pre>
  <pre id="kBrs" data-lang="bash">unzip leo-v1.9.5-x86_64-unknown-linux-musl.zip -d $HOME/aleo</pre>
  <p id="taPN"></p>
  <h3 id="8mpu">Add to $PATH and check </h3>
  <pre id="v5hr" data-lang="bash">echo &#x27;export PATH=&quot;$HOME/aleo:$PATH&quot;&#x27; &gt;&gt; ~/.bashrc
source ~/.bashrc
leo --help</pre>
  <p id="0HS5">You will get an output like this: </p>
  <figure id="DMFu" class="m_column">
    <img src="https://img4.teletype.in/files/3d/52/3d525d2e-7794-490f-bdbb-25e591c144f3.png" width="980" />
  </figure>
  <h3 id="B7LF">Create the TicTacToe Game</h3>
  <p id="mxZs">Create the tictactoe game from the example given</p>
  <pre id="YYZO" data-lang="bash">leo example tictactoe</pre>
  <p id="3lQ9">Change into the tictactoe directory</p>
  <pre id="doRi" data-lang="bash">cd $HOME/tictactoe</pre>
  <p id="L8tj">Run a new game </p>
  <pre id="ONrt" data-lang="bash">leo run new</pre>
  <p id="yNzI">Make the script file executable</p>
  <pre id="TAFd" data-lang="bash">chmod +x run.sh</pre>
  <p id="JgfC">Start the game </p>
  <pre id="tA9y" data-lang="bash">./run.sh</pre>
  <p id="r3II"></p>
  <h3 id="0064">Repo Preparation</h3>
  <p id="E9Yc">Using git, prepare your repository </p>
  <pre id="d2tn" data-lang="bash">git init
git checkout -b main
git add .
git commit -m &quot;My first commit&quot;</pre>
  <p id="6xuT"></p>
  <h3 id="oQeh">Create a new Repository</h3>
  <p id="i4Uk">Follow this link <a href="https://github.com/new" target="_blank">https://github.com/new</a> </p>
  <p id="cK28">This repository should be empty without readme, license, gitignore files. Fill the repository name with any name you wish and then click on create repository </p>
  <figure id="bxlj" class="m_column">
    <img src="https://img1.teletype.in/files/c5/2c/c52c5276-2af8-47f7-ad4a-81c88c1cebaf.png" width="1418" />
  </figure>
  <p id="PRs8">Next assign your repository link to a variable called LINK</p>
  <pre id="fQmv" data-lang="bash">LINK=&quot;https://github.com/user/.../.git&quot;</pre>
  <p id="Jibg"></p>
  <h3 id="claim-your-badge">Claim your badge<a href="https://developer.aleo.org/testnet/getting_started/developer_toolkit/#claim-your-badge" target="_blank">​</a></h3>
  <ol id="rST9">
    <li id="zlV5">Go to the Leo repo <a href="https://github.com/AleoHQ/leo/issues" target="_blank">here</a></li>
    <li id="cAC5">Give the repo a ⭐</li>
    <li id="tRSA">Click &quot;New Issue&quot; in the top right corner</li>
    <li id="LwZw">Click &quot;Get started&quot; in the Leo Contributor Badge row</li>
    <li id="0xjl">Title your issue: &quot;Add &lt;your_github_username&gt; to contributors&quot;</li>
    <li id="09Zb">Enter the following as your issue description:</li>
  </ol>
  <pre id="vqwg">Hi Aleo team! I&#x27;m claiming my contributor badge for completing the New Developer Toolkit tutorial.Tutorial Repo: &lt;GITHUB_REPO_URL&gt;Requested badge: &lt;BADGE_TYPE</pre>
  <p id="Ifro">    7. Click &quot;Submit new issue&quot;</p>
  <p id="LVe3">    8. Once your issue is approved, we will add you to the <a href="https://github.com/AleoHQ/leo#%EF%B8%8F-contributors" target="_blank">Contributors section</a> of the Leo README.md file.</p>
  <h2 id="5wCv" data-align="center"><strong>Congratulations on becoming a Leo contributor!</strong></h2>
  <h3 id="VUkg" data-align="center"><strong>Website: <a href="https://www.aleo.org/" target="_blank">https://www.aleo.org/</a><br />T <a href="https://twitter.com/AleoHQ" target="_blank">witter</a> : <a href="https://twitter.com/AleoHQ" target="_blank">https://twitter.com/AleoHQ</a><br />G <a href="https://github.com/AleoHQ" target="_blank">ithub</a> : <a href="https://github.com/AleoHQ" target="_blank">https://github.com/AleoHQ</a><br />D <a href="https://discord.com/invite/aleohq" target="_blank">iscord</a> : <a href="https://discord.com/invite/aleohq" target="_blank">https://discord.com/invite/aleohq</a></strong></h3>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Fleek</guid><link>https://teletype.in/@nodeint/Fleek?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Fleek?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>FLEEK NETWORK Phase {1}</title><pubDate>Tue, 12 Sep 2023 20:13:29 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/29/99/29999006-c00c-4539-8d36-aae7adde6ac7.png"></media:content><category>Active</category><description><![CDATA[<img src="https://img3.teletype.in/files/61/ff/61fffd07-c721-4ef6-86a6-921e27d0559f.png"></img>Official Information:]]></description><content:encoded><![CDATA[
  <figure id="DdoM" class="m_column">
    <img src="https://img3.teletype.in/files/61/ff/61fffd07-c721-4ef6-86a6-921e27d0559f.png" width="743" />
  </figure>
  <hr />
  <h2 id="tW6i" data-align="center"><strong>Project Information</strong></h2>
  <hr />
  <p id="m8bj">Official Information:</p>
  <ul id="IILF">
    <li id="AsnZ"><a href="https://fleek.xyz/" target="_blank">Official site</a></li>
    <li id="PlAw"><a href="https://docs.fleek.xyz/docs" target="_blank">Documentation</a></li>
    <li id="ltNi"><a href="https://fleek.network/whitepaper.pdf" target="_blank">White paper</a></li>
    <li id="Npm0"><a href="https://blog.fleek.network/" target="_blank">Blog</a></li>
  </ul>
  <hr />
  <h2 id="DjkE" data-align="center"><strong>DESCRIPTION</strong></h2>
  <hr />
  <p id="ilod">Fleek Network is a decentralized edge platform designed to make it easier to create and run performant web services (CDN, serverless operations, and so on). Fleek Network&#x27;s globally distributed and autonomously controlled network of edge nodes enables developers to design and use a wide range of edge services with ease. These services inherit cryptographically and economically secure infrastructure, guaranteed node and geographic coverage, stable and predictable pricing, and uniform quality and performance across all network services. The purpose of Fleek Network is to provide a platform from which all Web3 protocols, middleware, services, and applications may further decentralize their stack without sacrificing cost, performance, complexity, or developer/end-user experience.<br /></p>
  <hr />
  <h2 id="6S75" data-align="center"><strong>Server Requirements</strong></h2>
  <hr />
  <p id="UOUD">Recommendations from the team (VPS/VDS/DS): <br />32 GB RAM, at least 20 GB SSD, Ubuntu 20.04</p>
  <p id="ditZ">⠀ Suitable servers:</p>
  <hr />
  <section>
    <h2 id="pPiJ" data-align="center"><strong>Preparation</strong></h2>
  </section>
  <p id="sxd3">Update the server</p>
  <pre id="OkiR" data-lang="bash">sudo apt update </pre>
  <p id="vndk">Open the ports </p>
  <pre id="ODiv" data-lang="bash">sudo ufw allow 4300:4399/udp &amp;&amp; sudo ufw allow 4200:4299/tcp</pre>
  <pre id="FMd1" data-lang="bash">ufw allow 22 &amp;&amp; ufw allow 4069 &amp;&amp; ufw allow 4200 &amp;&amp; ufw allow 6969 &amp;&amp; ufw allow 18000 &amp;&amp; ufw allow 18101 &amp;&amp; ufw allow 18102</pre>
  <pre id="tMnH" data-lang="bash">sudo ufw enable</pre>
  <p id="QW4H">Press y to accept and press enter</p>
  <pre id="YdgV" data-lang="bash">sudo ufw status </pre>
  <p id="ycHc">Create a non-root user with administrative privileges.</p>
  <p id="pqvy">Here, we used <code>danke</code>  you can use whatever name you want, just replace <code>danke</code> with your chosen name. </p>
  <pre id="w7Gl" data-lang="bash">adduser danke </pre>
  <p id="FNuX">You will be prompted to input your password, add your password </p>
  <p id="u2wa">Then other name values like Full Name, Room Number, Work Phone etc. will request an input. Press enter to use the default values </p>
  <p id="0q6c">Grant the user the permissions and switch to the user. </p>
  <pre id="t94G" data-lang="bash">usermod -aG sudo danke &amp;&amp; su danke</pre>
  <p id="CMl7">Ensure to change to the user home directory </p>
  <pre id="zF14">cd /home/danke</pre>
  <hr />
  <h2 id="Y2m4" data-align="center">Install Fleek </h2>
  <hr />
  <pre id="Xlux" data-lang="bash">curl https://get.fleek.network | bash</pre>
  <figure id="j4pX" class="m_column">
    <img src="https://img4.teletype.in/files/7b/ba/7bba8d6e-94e6-4c80-a172-975b4077c5dd.png" width="1243" />
  </figure>
  <p id="RWYa">You will be required to select how you would like to run the Fleek network: select natively by typing 1 and pressing enter</p>
  <figure id="zXpL" class="m_column">
    <img src="https://img1.teletype.in/files/03/86/03861014-7d85-4e8c-9fd9-64650a0fd5e2.png" width="661" />
  </figure>
  <p id="GV3F">type yes and press enter </p>
  <figure id="h0sf" class="m_column">
    <img src="https://img1.teletype.in/files/cb/ed/cbedc1f9-c061-4297-87d7-f64993eee683.png" width="1318" />
  </figure>
  <p id="UO3U">type in your password and press enter </p>
  <figure id="ualE" class="m_column">
    <img src="https://img4.teletype.in/files/f5/aa/f5aaad04-fb70-4738-bf44-b85569e24563.png" width="1319" />
  </figure>
  <p id="ftfZ">Then, allow your installation and compilation of Fleek to complete. </p>
  <figure id="PR7W" class="m_column">
    <img src="https://img4.teletype.in/files/b2/1c/b21c139d-a010-4561-824a-354e9953cdb7.png" width="1090" />
  </figure>
  <p id="eWnO">Press enter </p>
  <figure id="5hLD" class="m_column">
    <img src="https://img2.teletype.in/files/94/ca/94ca3698-3bcf-4815-bc5b-656a9a20897a.png" width="1388" />
  </figure>
  <p id="LusH">press enter to continue</p>
  <p id="8mo8">Then run this code to display you keys </p>
  <pre id="8Lpa" data-lang="bash">lgtn keys show</pre>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="nBHP"><strong>Note:</strong> Save your keys (Node public key and consensus public key) some where safe you will be needing them to fill out the participation form </p>
  </section>
  <p id="mjJd">Launch the Network node by running </p>
  <pre id="VKuY" data-lang="bash">sudo systemctl start lightning</pre>
  <p id="Rz5b">Check the status of the service </p>
  <pre id="7h4C" data-lang="bash">sudo systemctl status lightning</pre>
  <p id="mNId">press <code>shift + q</code> to exit </p>
  <hr />
  <h2 id="LLXb" data-align="center">Registration </h2>
  <hr />
  <p id="QpfW">Check the health status of your node</p>
  <pre id="7R0Y" data-lang="bash">curl -w &quot;\p&quot; localhost:4230/health</pre>
  <p id="ln8Q">Your will get an output running</p>
  <p id="iwjB">Head to metamask wallet</p>
  <ol id="5jXR">
    <li id="KDA1">Add Fleek Network as a custom network in Metamask.</li>
    <ul id="Q2Qt">
      <li id="UJJk">Network Name: Fleek Network</li>
      <li id="Ez4h">RPC URL: <u><a href="https://rpc.testnet.fleek.network/rpc/v0" target="_blank">https://rpc.testnet.fleek.network/rpc/v0</a></u></li>
      <li id="jS3U">Chain ID: 59330</li>
      <li id="tvvw">Currency symbol: tFLK</li>
    </ul>
  </ol>
  <p id="qrBk"></p>
  <p id="X1XV">go to <a href="https://faucet.testnet.fleek.network/" target="_blank">https://faucet.testnet.fleek.network/</a> connect your wallet and make sure your selected network is the Fleek Network and click on Mint FLK</p>
  <figure id="rmEQ" class="m_column">
    <img src="https://img3.teletype.in/files/60/83/60836218-28a5-49f0-b68b-2935511e2a19.png" width="1834" />
  </figure>
  <p id="6WO8">After a short while 1010FLK will appear in your wallet </p>
  <figure id="DlAo" class="m_column">
    <img src="https://img2.teletype.in/files/95/8e/958e7253-41bc-4553-b160-84537cd64dee.png" width="367" />
  </figure>
  <p id="Bilj">Next click on the Stake FLK and you will get a pop up like the image below. Fill in your details</p>
  <ul id="0kjH">
    <li id="Nwvr">The Node public key 🗝 </li>
    <li id="Crs7">The consensus Public key 🗝 </li>
    <li id="g1sh">your IP Address</li>
  </ul>
  <p id="hdMv">Then click on stake to proceed</p>
  <figure id="IYE1" class="m_column">
    <img src="https://img3.teletype.in/files/6f/75/6f755cbf-5fc6-409f-b03d-c3be78553bde.png" width="1618" />
  </figure>
  <p id="usUW">Confirm in your wallet. Then you get </p>
  <figure id="88QO" class="m_column">
    <img src="https://img3.teletype.in/files/6d/97/6d97a82d-ea82-4654-af23-d82db4681476.png" width="1568" />
  </figure>
  <p id="ZoKN">run this again, this time you get running and staked</p>
  <pre id="3bKA" data-lang="bash">curl -w &quot;\p&quot; localhost:4230/health</pre>
  <p id="L5Dp">To see the amount staked run, answer yes to the question prompts</p>
  <pre id="s0dR" data-lang="bash">curl https://get.fleek.network/node_details | bash</pre>
  <p id="QWVb">You can watch the Node output logs by running the command</p>
  <pre id="CnBo" data-lang="bash">tail -f /var/log/lightning/output.log</pre>
  <p id="BMkC">For diagnostics run the command:</p>
  <pre id="4CkC" data-lang="bash">tail -f /var/log/lightning/diagnostic.log</pre>
  <p id="qVxX">Run this script to get the health check overview:</p>
  <pre id="rVnJ" data-lang="bash">curl -sS https://get.fleek.network/healthcheck | bash</pre>
  <p id="8df6">enter yes for the answers to the prompt, output should look like this if everything works fine. </p>
  <figure id="psDG" class="m_column">
    <img src="https://img4.teletype.in/files/bf/7e/bf7e1a5b-6ef0-4f0a-8778-44e0c54490c5.png" width="1613" />
  </figure>
  <h2 id="k67L" data-align="center">Congratulations</h2>
  <hr />
  <h2 id="MWST" data-align="center">Update your node</h2>
  <hr />
  <p id="JrtE">To update your node, you need to log in as the user you registered , <code>danke</code> in my case</p>
  <pre id="Gqav" data-lang="bash">su danke</pre>
  <p id="JDrE">Then </p>
  <pre id="yIMd" data-lang="bash">cd ~/fleek-network/lightning </pre>
  <pre id="CxW9" data-lang="bash">git checkout testnet-alpha-0 &amp;&amp; git stash</pre>
  <pre id="MhGl" data-lang="bash">git pull origin testnet-alpha-0</pre>
  <p id="LFkK">Or run this script </p>
  <pre id="NkXq" data-lang="bash">curl -sS https://get.fleek.network/update | bash</pre>
  <hr />
  <h2 id="md4n" data-align="center">Extra</h2>
  <hr />
  <p id="PUnl">stop the Network Node by running</p>
  <pre id="mqIP" data-lang="bash">sudo systemctl stop lightning</pre>
  <p id="CPvX">Restart the network by running </p>
  <pre id="xlbg" data-lang="bash">sudo systemctl restart lightning</pre>
  <p id="hNIy">You can watch the Node output by running the command</p>
  <pre id="NewF" data-lang="bash">tail -f /var/log/lightning/output.log</pre>
  <p id="dIAj">For diagnostics run the command:</p>
  <pre id="a2Yc" data-lang="bash">tail -f /var/log/lightning/diagnostic.log</pre>
  <h2 id="kbAF" data-align="center"><br />GOOD LUCK</h2>
  <h3 id="JuQC" data-align="center">Social Media / Community</h3>
  <ul id="wyEi">
    <ul id="FL9l">
      <ul id="EfpX">
        <ul id="4SZI">
          <ul id="FfMb">
            <ul id="GEek">
              <ul id="FhXX">
                <ul id="t27I">
                  <li id="hUri"><a href="https://discord.gg/fleekxyz" target="_blank">Discord</a></li>
                  <li id="bsBU"><a href="https://discord.gg/fleekxyz" target="_blank">Github</a> </li>
                  <li id="VoP5"><a href="https://twitter.com/fleek_net" target="_blank">X</a></li>
                </ul>
              </ul>
            </ul>
          </ul>
        </ul>
      </ul>
    </ul>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodeint/Sui</guid><link>https://teletype.in/@nodeint/Sui?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint</link><comments>https://teletype.in/@nodeint/Sui?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodeint#comments</comments><dc:creator>nodeint</dc:creator><title>SUI </title><pubDate>Sun, 26 Feb 2023 13:48:45 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/08/2c/082c4c19-c790-4252-aa44-5c09f81ce45e.png"></media:content><category>Ended</category><description><![CDATA[<img src="https://img4.teletype.in/files/34/a8/34a8bbce-2be4-40cb-bd78-597effd3f429.png"></img>Sui is the first permissionless Layer 1 blockchain designed from the ground up to enable creators and developers to build experiences that cater to the next billion users in web3. It is a next-generation smart contract platform powered by Move, with high throughput, low latency, and an asset-oriented programming model.]]></description><content:encoded><![CDATA[
  <figure id="ew8d" class="m_original">
    <img src="https://img4.teletype.in/files/34/a8/34a8bbce-2be4-40cb-bd78-597effd3f429.png" width="676" />
  </figure>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="eR5X">ABOUT SUI</h2>
  </section>
  <p id="KxOO">Sui is the first permissionless Layer 1 blockchain designed from the ground up to enable creators and developers to build experiences that cater to the next billion users in web3. It is a next-generation smart contract platform powered by Move, with high throughput, low latency, and an asset-oriented programming model.</p>
  <p id="0d54">Sui uses the Move programming language to define assets as objects that may be owned by an address.</p>
  <p id="b463">Move programs define operations on these typed objects including custom rules for their creation, the transfer of these assets to new owners, and operations that mutate assets.</p>
  <p id="c1b5">A permissionless group of authority that function similarly to validators or miners in other blockchain systems maintain Sui Network.</p>
  <p id="63b4">In contrast to Byzantine agreement, it ensures lower latency and improved scalability by using a Byzantine consistent broadcast protocol between authorities to protect shared actions on assets.</p>
  <p id="PKnF"></p>
  <h2 id="rU1y" data-align="center">SETTING UP </h2>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="5zWb"><strong>1. Install the SUI Wallet Extension</strong> </h3>
  </section>
  <p id="5FYA">Use the link below to install the Sui wallet</p>
  <p id="LxTd"><a href="https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil" target="_blank">Sui wallet Extension</a></p>
  <p id="gINh"></p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="1HJA"><strong>2. Request Faucet </strong></h3>
  </section>
  <p id="xcvk">A. To be able to participate in the testing, you need to be in the Sui discord channel, join the SUI <a href="https://discord.gg/sui" target="_blank">discord server</a> using the link. </p>
  <p id="ESbW">B. Navigate to the <strong>“testnet-faucet”</strong> channel and paste your wallet address using this format: </p>
  <p id="vXCz">Note: replace <em>your_wallet_address</em> with you SUI wallet address you already installed earlier.</p>
  <p id="hltz"><code>!faucet your_wallet_address</code></p>
  <p id="IPdH"><em><code>(example: !faucet 0xc598c2730134f10e2ee02d992145bd25a89c5458)</code></em></p>
  <p id="vswZ">You will be credited with 0.5 SUI </p>
  <figure id="18Sz" class="m_column">
    <img src="https://img2.teletype.in/files/dc/b1/dcb1d900-456f-4928-8717-cf3a89552e60.png" width="1099" />
  </figure>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="B173">3. Staking </h3>
  </section>
  <ul id="4cUo">
    <li id="qRcF">Log into your Sui wallet</li>
    <li id="3tqt">Click on the <strong>“Stake &amp; Earn SUI”</strong> button.</li>
    <li id="FXHs">Select any validator from the list.</li>
    <li id="jDFR">Click <strong>“Select Amount”</strong></li>
    <li id="1ZDi">Enter the amount and click <strong>“Stake Now”.</strong></li>
    <li id="1Y5u">You can unstake your tokens only after 24 hours.</li>
  </ul>
  <p id="zYFj">You will be able to see your staked SUI and the APY on your wallet Dashboard. </p>
  <figure id="FYF7" class="m_retina">
    <img src="https://img4.teletype.in/files/79/31/793152e4-9e5a-419a-b277-f1a4610a0392.png" width="266.5" />
  </figure>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="UEmS">4. Mint NFT</h3>
  </section>
  <ul id="BNZE">
    <li id="85d8">Switch to <strong>“Apps”</strong> tab.</li>
    <li id="df62">Click on <strong>“Mint an NFT”</strong></li>
    <li id="312c">You can view your minted NFTs by clicking on the <strong>“NFT”</strong> tab.</li>
  </ul>
  <p id="Q6gX">Done!</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="5647">5.  To increase chance of airdrop eligibility with</h3>
  </section>
  <ul id="rQke">
    <li id="6988"><strong>Extra Mint NFT</strong></li>
  </ul>
  <blockquote id="AcLm"><a href="https://testnft.suiecosystem.top" target="_blank">https://testnft.suiecosystem.top</a><br /><a href="https://hanako.vercel.app" target="_blank">https://hanako.vercel.app</a><br /><a href="https://mint.vibrantpunks.xyz" target="_blank">https://mint.vibrantpunks.xyz</a><br /><a href="https://test-wizardland.vercel.app" target="_blank">https://test-wizardland.vercel.app</a></blockquote>
  <hr />
  <h3 id="aOwj" data-align="center">useful links</h3>
  <p data-align="center" id="Pxv8"><a href="https://sui.io/" target="_blank">Official site of the project</a> | <a href="https://medium.com/mysten-labs" target="_blank">Medium</a></p>
  <p data-align="center" id="7M9c"><a href="https://t.me/massa_latest_news" target="_blank">Telegram announcement channel</a> |<a href="https://twitter.com/SuiNetwork" target="_blank">Twitter </a>| <a href="https://discord.gg/sui" target="_blank">Discord </a>| <a href="https://forums.sui.io/" target="_blank">reddit</a> </p>
  <p data-align="center" id="ibjh"><a href="https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil" target="_blank">Link to web wallet</a></p>

]]></content:encoded></item></channel></rss>