
    <rss 
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:typefully="https://typefully.com/profile"
      version="2.0">
      <channel>
        <title>cal 🎾 (zk/acc) (@calummoore)</title>
        <link>https://typefully.com/calummoore</link>
        <description>cto @payy_link, building a bank on crypto rails and using zk for you know, privacy.</description>
        <pubDate>Wed, 11 May 2022 16:46:32 GMT</pubDate>
        <lastBuildDate>Wed, 11 May 2022 16:46:32 GMT</lastBuildDate>
        <generator>Typefully</generator>
        <image>https://screenshots.typefully.com/screenshot?size=1200x640&amp;url=https://typefully.com/calummoore/card</image>
        <atom:link href="https://typefully.com/calummoore" rel="self" type="application/rss+xml"/>
        
    <item>
      <guid>https://typefully.com/calummoore/developer-intro-to-web3-fCUJS7r</guid>
      <title>Developer intro to Web3</title>
      <description>Developers: now is the best time to learn web3, but it can be overwhelming. Here&#39;s some tips to get started. 

A thread 🧵 Don&#39;t worry if not everything is 100% web3 at the beginning. Build something, you can always make it more web3 later. Build the frontend in a language you already know, you can …</description>
      <link>https://typefully.com/calummoore/developer-intro-to-web3-fCUJS7r</link>
      <pubDate>Wed, 11 May 2022 16:46:32 GMT</pubDate>
      <content:encoded><![CDATA[Developers: now is the best time to learn web3, but it can be overwhelming. Here's some tips to get started. <br><br>A thread 🧵<br><br>Don't worry if not everything is 100% web3 at the beginning. Build something, you can always make it more web3 later.<br><br>Build the frontend in a language you already know, you can interact with (deploy, call, read) smart contracts and the blockchain in almost any language.<br><br>Smart contracts are essentially a set of lambdas/functions, with the bonus that any code that updates state, does so in a transaction safe way. Each smart contract has its own state/data that these functions can update. Anyone can view a contracts state.<br><br>You can add any write permissions you like to your smart contract using code, by simply checking the account key that is calling the function, and then using code to decide whether that account is allowed.<br><br>An account on the blockchain is a kind of identity, but you don't have to be limited to one (similar to how you can have multiple accounts on Twitter). Each account has a private key, that is used to sign transactions to prove they are legit. Never share your private key.<br><br>You can interact with smart contracts in any language, but to create your own you will need to learn either solidity (similar to JS) or rust. Don't worry, smart contract code is usually only a small part of your dapp, and the language is easy to pick up.<br><br>It's actually best practice to keep your contract code short and concise, as the more code, the more open to vulnerabilities it is. <br><br>Remember, anyone can read your smart contract, and people actively look to exploit them.<br><br>For solidity, consider using <a class="tweet-url username" href="https://twitter.com/0xPolygon" data-screen-name="0xPolygon" target="_blank" rel="nofollow">@0xPolygon</a> instead of <a class="tweet-url username" href="https://twitter.com/ethereum" data-screen-name="ethereum" target="_blank" rel="nofollow">@ethereum</a> for your first project, it's 100% compatible but with lower fees. For rust, try <a class="tweet-url username" href="https://twitter.com/Polkadot" data-screen-name="Polkadot" target="_blank" rel="nofollow">@Polkadot</a>.<br><br><a class="tweet-url username" href="https://twitter.com/openzeppelin" data-screen-name="openzeppelin" target="_blank" rel="nofollow">@openzeppelin</a> can help reduce the boilerplate for your solidity smart contracts. It's a library you can import that handles lots of common use cases (e.g. ERC-20 tokens, NFTs, permissions).<br><br>There are a bunch of other developer tools to help with developing your smart contracts locally on your machine - here are two great options:<br><br><a class="tweet-url username" href="https://twitter.com/HardhatHQ" data-screen-name="HardhatHQ" target="_blank" rel="nofollow">@HardhatHQ</a> - <a href="https://hardhat.org/" target="_blank" rel="nofollow">https://hardhat.org/</a><br>Foundry - <a href="https://github.com/foundry-rs/foundry" target="_blank" rel="nofollow">https://github.com/foundry-rs/foundry</a> - <br><br>For live, use <a class="tweet-url username" href="https://twitter.com/AlchemyPlatform" data-screen-name="AlchemyPlatform" target="_blank" rel="nofollow">@AlchemyPlatform</a> or <a class="tweet-url username" href="https://twitter.com/POKTnetwork" data-screen-name="POKTnetwork" target="_blank" rel="nofollow">@POKTnetwork</a> for your connection to the blockchain. Don't try and host your own node.<br><br>Use <a class="tweet-url username" href="https://twitter.com/magic_labs" data-screen-name="magic_labs" target="_blank" rel="nofollow">@magic_labs</a> for login and authentication<br><br>Use <a class="tweet-url username" href="https://twitter.com/ipfs" data-screen-name="ipfs" target="_blank" rel="nofollow">@ipfs</a> + <a class="tweet-url username" href="https://twitter.com/Filecoin" data-screen-name="Filecoin" target="_blank" rel="nofollow">@Filecoin</a> or <a class="tweet-url username" href="https://twitter.com/arweaveteam" data-screen-name="arweaveteam" target="_blank" rel="nofollow">@arweaveteam</a> for web3 file/data storage (e.g. where you would normally use AWS S3)<br><br>Use <a class="tweet-url username" href="https://twitter.com/graphprotocol" data-screen-name="graphprotocol" target="_blank" rel="nofollow">@graphprotocol</a> if you need to query data from the blockchain at speed (especially if that data is historic).<br><br>To deploy your smart contract, you need to buy your blockchain's currency, and have access to the public and private key to the account that you deposit to.<br><br>Avoid buying from Coinbase, as that will mean you have to pay twice (once to buy, and again to transfer to a wallet).<br><br>If you like online courses, then I have personally taken this course, and found it to be very helpful - <a href="https://www.udemy.com/course/ethereum-and-solidity-the-complete-developers-guide/" target="_blank" rel="nofollow">https://www.udemy.com/course/ethereum-and-solidity-the-complete-developers-guide/</a><br><br>Or if you'd prefer not to pay, this is another great course (although I haven't taken it myself): <a href="https://github.com/smartcontractkit/full-blockchain-solidity-course-py" target="_blank" rel="nofollow">https://github.com/smartcontractkit/full-blockchain-solidity-course-py</a><br><br>If you want to understand more of the core concepts of the blockchain and different protocols, then I recommend this YouTube channel - <a href="https://www.youtube.com/c/Finematics" target="_blank" rel="nofollow">https://www.youtube.com/c/Finematics</a><br><br>Also checkout this blockchain demo to get an intuitive understanding of how blockchain works - <a href="https://andersbrownworth.com/blockchain/" target="_blank" rel="nofollow">https://andersbrownworth.com/blockchain/</a><br><br><br>Most important of all, have fun. And remember, the web3 community is here to help you! 🎉<br><br>You can read the unrolled version of this thread here: <a href="https://typefully.com/calummoore/fCUJS7r" target="_blank" rel="nofollow">https://typefully.com/calummoore/fCUJS7r</a>]]></content:encoded>
      <typefully:post_id>fCUJS7r</typefully:post_id>
      <typefully:post_type>thread</typefully:post_type>
      <typefully:pinned>false</typefully:pinned>
      null
    </item>
  
      </channel>
    </rss>
  