<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>0xMarko</title>
        <link>https://paragraph.com/@0xmarko</link>
        <description>Co-founder &amp; CTO of Blank.

Building software and helping companies enter web3.</description>
        <lastBuildDate>Sat, 08 Aug 2026 01:53:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0xMarko</title>
            <url>https://storage.googleapis.com/papyrus_images/3b4b3555550d6e37bf5cffec1cd1a6eb5ca5a3b402f4088a038ba20597c87b75.jpg</url>
            <link>https://paragraph.com/@0xmarko</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Staying safe in web3]]></title>
            <link>https://paragraph.com/@0xmarko/staying-safe-in-web3</link>
            <guid>OlF4qB6k3LKKlF6didHG</guid>
            <pubDate>Sat, 15 Apr 2023 12:18:33 GMT</pubDate>
            <description><![CDATA[As an NFT collector, securing your valuable digital assets is critical. In this post, I&apos;ll explain best practices for protecting your NFTs, focusing on wallet types, avoiding scams, and staying vigilant.Wallet typesUnderstanding wallet types is key to NFT security, as each type offers unique advantages and trade-offs. Here are three wallet types:Cold WalletsHot WalletsWarm Wallets🥶 Cold WalletsOffline storage, providing maximum security. No direct connection to the internet, keeping you...]]></description>
            <content:encoded><![CDATA[<p>As an NFT collector, securing your valuable digital assets is critical. In this post, I&apos;ll explain best practices for protecting your NFTs, focusing on wallet types, avoiding scams, and staying vigilant.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bebc37ccaa764a9daa268110d9428b47938fbc4313af8d5a0f865ee758ad181d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-wallet-types" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Wallet types</h2><p>Understanding wallet types is key to NFT security, as each type offers unique advantages and trade-offs.</p><p>Here are three wallet types:</p><ul><li><p>Cold Wallets</p></li><li><p>Hot Wallets</p></li><li><p>Warm Wallets</p></li></ul><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><h3 id="h-cold-wallets" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🥶 Cold Wallets</h3><p>Offline storage, providing maximum security.</p><p>No direct connection to the internet, keeping your private keys and assets safe from hackers. Ideal for long-term storage or large asset holdings.</p><p>Examples: Ledger, Trezor.</p><h3 id="h-hot-wallets" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🔥 Hot Wallets</h3><p>Online storage, making them more convenient for frequent transactions.</p><p>Easier to access and use, but more vulnerable to hacks and phishing attacks.</p><p>Good for day-to-day transactions, but not for storing significant value.</p><p>Examples: MetaMask, Rainbow.</p><h3 id="h-warm-wallets" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🌡️ Warm Wallets</h3><p>A hybrid of cold &amp; hot wallets, balancing security &amp; accessibility.</p><p>Private keys are offline, but accessed via secure software when needed.</p><p>Suitable for moderate investments &amp; regular transactions.</p><p>Example: Connect Ledger to MetaMask.</p><h2 id="h-ledger-as-a-cold-wallet" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">❄️ Ledger as a Cold Wallet</h2><p>Use a Ledger hardware wallet for cold storage.</p><p>It securely stores private keys offline, keeping them away from hackers.</p><p>Safeguard your seed phrase - it&apos;s crucial for asset recovery if the device is lost or damaged.</p><p>I&apos;m using Ledger Nano X.</p><h2 id="h-ledger-as-a-warm-wallet" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">🔥 Ledger as a Warm Wallet</h2><p>Connect your Ledger wallet to a trusted platform like MetaMask, you can use it as a warm wallet.</p><p>This setup allows for more accessibility while maintaining a high level of security.</p><p>Just be cautious of the websites you interact with.</p><h2 id="h-beware-of-random-discord-invites" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">🕵️ Beware of Random Discord Invites</h2><p>Avoid joining random Discord servers asking for message signing.</p><p>Scammers use this tactic to trick you into granting them access to your wallet.</p><p>Verify server legitimacy &amp; admins before joining.</p><p>Example: RTFKT Alpha Group scam.</p><h2 id="h-be-cautious-of-closed-alpha-p2e-games" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">🎮 Be Cautious of closed alpha P2E Games</h2><p>Avoid participating in closed alpha play-to-earn (P2E) games without researching the game and the development team behind it.</p><p>Scammers may use fake P2E games to steal your assets and install malware on your computer.</p><h2 id="h-verify-what-youre-signing" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">✍️ Verify What You&apos;re Signing</h2><p>Always double-check the content of transactions before signing.</p><p>If you don&apos;t understand what you&apos;re signing, don&apos;t proceed.</p><p>Educate yourself on the implications of signing various types of transactions. and messages.</p><h2 id="h-double-check-website-urls" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">🔎 Double-Check Website URLs</h2><p>Always double-check website URLs when trading NFTs.</p><p>Scammers often create fake websites with similar URLs to trick users.</p><p>Ensure the domain name is spelled correctly.</p><p>Good idea is to bookmark the correct URLs and access from there.</p><h2 id="h-use-protective-apps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">🛡️ Use Protective Apps</h2><p>Apps like Wallet Guard can provide an extra layer of security for your wallet.</p><p>They can protect against phishing attempts, low-trust websites, unverified marketplaces, and scams.</p><p>An app like this can provide human-readable insight on every transaction.</p><p>Conclusion</p><p>Read those tips, decide what&apos;s best for you, protect your assets &amp; stay vigilant. Share knowledge, keep learning, and always double-check everything. Trust no one offering your free fortune.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Transactions 101]]></title>
            <link>https://paragraph.com/@0xmarko/transactions-101</link>
            <guid>MS8F2YQbUBhrqH0GRmJ9</guid>
            <pubDate>Sat, 15 Apr 2023 12:12:47 GMT</pubDate>
            <description><![CDATA[Let&apos;s dive into Ethereum transactions, gas limits, and network capacity.How do transactions work?Transactions are cryptographically signed data messages that contain a set of instructions. They enable the transfer of value and execution of smart contracts. It&apos;s a powerful concept that enables users to interact on the Ethereum network. Users initiate transactions through wallets or dApps, which generate a data structure containing the transaction details. The data is signed with the ...]]></description>
            <content:encoded><![CDATA[<p>Let&apos;s dive into Ethereum transactions, gas limits, and network capacity.</p><h2 id="h-how-do-transactions-work" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How do transactions work?</h2><p>Transactions are cryptographically signed data messages that contain a set of instructions. They enable the transfer of value and execution of smart contracts. It&apos;s a powerful concept that enables users to interact on the Ethereum network.</p><p>Users initiate transactions through wallets or dApps, which generate a data structure containing the transaction details. The data is signed with the sender&apos;s private key, ensuring authenticity.</p><p>Validators choose transactions in the mempool when creating new blocks, prioritizing those with higher gas prices.</p><p>The mempool (memory pool) is a temporary storage area for pending transactions waiting to be included in a block.</p><p>Mempool visualization - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/TM3hQfMfzh">https://txstreet.com/v/eth-btc</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2db97e49ad100302347b6cd64ecdf2677a7c376175771ba8e054e35f77ef12c8.png" alt="Mempool" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Mempool</figcaption></figure><p>Once a transaction is confirmed on the Ethereum blockchain, it&apos;s irreversible.</p><p>However, there are ways to replace a transaction by sending another transaction with the same nonce, but only if the initial transaction hasn&apos;t been confirmed yet.</p><p>The nonce is crucial for transaction processing. It prevents double-spending and ensures transactions from an address are executed in the correct order. Each transaction from an address must have a unique nonce, incrementing sequentially.</p><h2 id="h-what-transaction-types-exist" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What transaction types exist?</h2><p>• Regular</p><p>• Contract deployment</p><p>• Contract execution</p><p><strong>Regular transactions</strong> transfer ETH between accounts. Nothing special here, we all do this through our Metamask when sending funds between accounts.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a0a3fd0f721c02a6350150b8aed231f1e492257d95ae8462a79a18c4319b779e.png" alt="Metamask sign" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Metamask sign</figcaption></figure><p><strong>Contract deployment</strong> transaction creates a new contract with a unique address. This type of transaction has a zero address for the recipient (0x0000...0000) and the data field has to contain a contract bytecode.</p><p><strong>Contract execution</strong> transaction interact with deployed contracts. The recipient is the address of the smart contract, and the transaction data field holds encoded information about the function to be executed.</p><p>Below is an example of a CloneX transfer:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0x704887d812d3c5a65ec7de5165d7f506c27a1fca25461699cce89f2189b52c31">https://etherscan.io/tx/0x704887d812d3c5a65ec7de5165d7f506c27a1fca25461699cce89f2189b52c31</a></p><h2 id="h-what-is-gas" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What is gas?</h2><p>It&apos;s important to understand the concept of gas in Ethereum transactions. Gas measures the computational work needed for a transaction or smart contract execution. Each operation within a transaction consumes a specific amount of gas.</p><p>The gas cost is determined by multiplying the gas used by the gas price set by the sender. The total gas cost is paid by the sender in ETH, incentivizing validators to execute the transaction.</p><p>You can check gas prices on Etherscan at any time:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/gastracker">https://etherscan.io/gastracker</a></p><p>Validators typically prioritize transactions with higher gas prices, as it increases their potential rewards. This leads to a competitive market for gas prices, which fluctuates based on network demand. Users can adjust their gas price to balance transaction speed and cost.</p><p>For faster transaction confirmations, users can set a higher gas price, making their transaction more attractive to validators. But be cautious, setting a gas price too low may result in a long wait time or even no confirmation at all.</p><p>Transactions can be sped up or canceled by sending another transaction with the same nonce but a higher gas price. This replaces the initial transaction in the mempool, as validators are more likely to process the transaction with the higher fee.</p><h2 id="h-what-are-the-possible-states-for-a-transaction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What are the possible states for a transaction?</h2><p>• <strong>Pending</strong> - Awaiting confirmation in the mempool</p><p>• <strong>Queued</strong> - Cannot be mined yet due to another pending transaction</p><p>• <strong>Successful</strong> - A transaction has been confirmed and processed</p><p>• <strong>Cancelled</strong> - Can no longer be mined, replaced by a transaction with a higher gas fee, same nonce, and a null value for the data and/or value field</p><p>• <strong>Failed</strong> - A transaction failed due to insufficient gas, incorrect data, or other issues</p><p>Common reasons for a <strong>failed transaction</strong> status are:</p><p>• Insufficient gas limit</p><p>• Insufficient balance in the sender&apos;s account</p><p>• Invalid transaction data</p><p>• Reverted smart contract execution due to internal errors or conditions not met</p><h2 id="h-transaction-throughput" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Transaction throughput</h2><p>Ethereum&apos;s transaction throughput is limited by the block gas limit, which is the maximum amount of gas that can be included in a single block. This limit is determined by validators and can be adjusted over time to improve network capacity.</p><h2 id="h-security" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Security</h2><p>It&apos;s important to be aware of security when dealing with Ethereum transactions. Always double-check the recipient&apos;s address, ensure your private key is secure, and be cautious of signing random stuff.</p><p>Here is my thread about staying safe in web3:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xMarko/status/1638541332036591618">https://twitter.com/0xMarko/status/1638541332036591618</a></p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>Understanding basic concepts like Ethereum transactions is vital for using the network effectively.</p><p>Keep exploring and stay informed!</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Smart contracts 101]]></title>
            <link>https://paragraph.com/@0xmarko/smart-contracts-101</link>
            <guid>Dpgzn805qIDETA36pFNA</guid>
            <pubDate>Sat, 15 Apr 2023 12:05:34 GMT</pubDate>
            <description><![CDATA[I&apos;ve noticed that smart contracts can be confusing, even for developers diving into web3. Let&apos;s go back to the basics and explore how Ethereum smart contracts are created, deployed, and executed.What are smart contracts?Smart contracts are just programs on the Ethereum blockchain. It&apos;s a collection of code (its functions) and data (its state) that resides at a specific address on the Ethereum blockchain. Data = how many NFTs I have Code = how to transfer NFT from A to BHow are ...]]></description>
            <content:encoded><![CDATA[<p>I&apos;ve noticed that smart contracts can be confusing, even for developers diving into web3.</p><p>Let&apos;s go back to the basics and explore how Ethereum smart contracts are created, deployed, and executed.</p><h2 id="h-what-are-smart-contracts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What are smart contracts?</h2><p>Smart contracts are just programs on the Ethereum blockchain. It&apos;s a collection of code (its functions) and data (its state) that resides at a specific address on the Ethereum blockchain.</p><p>Data = how many NFTs I have</p><p>Code = how to transfer NFT from A to B</p><h2 id="h-how-are-smart-contracts-created" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How are smart contracts created?</h2><p>To create a smart contract, developers usually write code in a programming language called Solidity. It&apos;s a high-level language designed specifically for Ethereum, inspired by C++, Python, and JavaScript.</p><p>You&apos;ll also see terms like Hardhat and Foundry when talking about smart contracts development. Those are special development environments that simplify the process of building, deploying, and testing smart contracts.</p><p>In Solidity, when we compile the code, we get bytecode and ABI.</p><p>Bytecode is the machine-readable format that the Ethereum Virtual Machine (EVM) can understand and execute. Bytecode consists of concise numeric codes, constants, and various data elements.</p><p>ABIs are application binary interfaces. They define the variables and methods that are available in a smart contract. Thanks to ABI, we know how to interact with that smart contract.</p><p>ABIs are represented as JSON and can look like this:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a57668628e8e120a22635ec0e0c46c827802cb964fcb7ae588f14e64b9f91541.png" alt="ABI" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">ABI</figcaption></figure><h2 id="h-how-are-smart-contracts-deployed" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How are smart contracts deployed?</h2><p>After the contract is compiled, it&apos;s time for deployment. Deployment means sending the contract to the Ethereum blockchain. It&apos;s done by creating a special transaction with the contract bytecode as data and no recipient address.</p><p>The contract is officially deployed when the deployment transaction is included in a block. The contract gets its own unique address on the blockchain, derived from the sender&apos;s address and nonce (number of transactions sent from a given address).</p><p>Fun facts:</p><ul><li><p>You can calculate a smart contract address before deployment.</p></li><li><p>You can deploy a smart contract to multiple EVM chains to the same address.</p></li></ul><p>Here is a Clone X contract deployment transaction. Notice the absence of a &quot;To&quot; address – this indicates that a new contract is being created (RTFKT: CloneX Token). The Input Data contains a lengthy string, which is the source code of the contract.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/37c21b4b19d8e6818c13f9902f4954e9a38dcb50a89f856093f0bbfde6cecfc4.png" alt="Deployment transaction" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Deployment transaction</figcaption></figure><h2 id="h-how-to-interact-with-smart-contracts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How to interact with smart contracts?</h2><p>Now that the contract is deployed, anyone can interact with it through its functions.</p><p>There are two types of functions:</p><ul><li><p>write functions that require transaction and cost gas</p></li><li><p>read functions that are free and don&apos;t require transaction</p></li></ul><p>Write functions modify the contract state. These changes need to be propagated across the network, verified, and stored by validators in a new block. Validators require compensation for their work, which is why gas fees are associated with write functions.</p><p>Read functions don&apos;t require any changes to the blockchain state; they only access the current data. Since they don&apos;t involve modifying the blockchain, they can be executed locally on any node without needing a transaction or consensus. This makes them free of cost.</p><p>Validators pick up the transaction, execute the function within the EVM, and include the transaction in a block. The results of the function execution are recorded in the blockchain as part of the transaction receipt.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>I hope this info helps demystify Ethereum smart contracts a bit. As smart contracts become more vital in shaping our digital future, it&apos;s important to understand how they work. Keep exploring and stay informed!</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Use proxies]]></title>
            <link>https://paragraph.com/@0xmarko/use-proxies</link>
            <guid>4U0RM5wSmVp6uvD6nNjL</guid>
            <pubDate>Wed, 15 Mar 2023 07:11:18 GMT</pubDate>
            <description><![CDATA[Deploying multiple identical contracts costs a lot of gas. Want to save gas? Consider using Proxies! Here&apos;s how: ⚡Create implementation contact ⚡Create a Proxy contract that points to the implementation contract ⚡Deploy multiple proxy contracts when needed The implementation contract is one that contains all the necessary logic for your app. It may include numerous features, particularly if you are creating an NFT collection with several stages of minting and claiming. The number of feat...]]></description>
            <content:encoded><![CDATA[<p>Deploying multiple identical contracts costs a lot of gas.</p><p>Want to save gas? Consider using Proxies! </p><p>Here&apos;s how:</p><p>⚡Create implementation contact</p><p>⚡Create a Proxy contract that points to the implementation contract</p><p>⚡Deploy multiple proxy contracts when needed</p><p>The implementation contract is one that contains all the necessary logic for your app.</p><p>It may include numerous features, particularly if you are creating an NFT collection with several stages of minting and claiming.</p><p>The number of features in a smart contract implementation is directly proportional to the size of the bytecode, which, in turn, increases the gas required for deploying the contract.</p><p>We can reduce the deployment cost of new smart contracts by utilizing the Proxy contract.</p><p>The Proxy contract is a compact contract that utilizes the EVM instruction &apos;delegatecall&apos; to delegate all function calls to another contract through its fallback function.</p><p>The Proxy contract stores the state variables and the logic contract stores the implementation code.</p><p>Check out this Proxy contract implementation I used for my ERC721 collection.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e4dfb14025b07e611367fd6e4f70c013bfebadf18696ea33f5094e644dba0a45.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>It delegates all calls to a hardcoded implementation contract address and initializes the state with an &apos;initialize&apos; method that takes the collection name and symbol on deployment.</p><p>Btw, don&apos;t forget to initialize your implementation contract upon deployment.</p><p>It&apos;s a common mistake made by developers, and it can result in someone else taking ownership of the contract.</p><p>While it&apos;s generally not harmful, it depends on the type of proxy used to call it.</p><p>To learn about the various types of proxies, be sure to check out the documentation available on OpenZeppelin.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.openzeppelin.com/contracts/4.x/api/proxy">https://docs.openzeppelin.com/contracts/4.x/api/proxy</a></p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[NFT provenance hash]]></title>
            <link>https://paragraph.com/@0xmarko/nft-provenance-hash</link>
            <guid>cm6UEQOvWeL3tC6gqYQE</guid>
            <pubDate>Wed, 22 Feb 2023 13:14:02 GMT</pubDate>
            <description><![CDATA[Are you familiar with the concept of NFT provenance hash? Without a provenance hash, projects have the ability to manipulate the metadata of an NFT to their advantage once the minting process has been completed. The sequence in which NFT tokens are assigned to the metadata is important. If the order of assignment is undisclosed before the mint, buyers of the NFTs have no assurance that the project team will not modify the assignment after the mint to benefit themselves. To address this issue,...]]></description>
            <content:encoded><![CDATA[<p>Are you familiar with the concept of NFT provenance hash?</p><p>Without a provenance hash, projects have the ability to manipulate the metadata of an NFT to their advantage once the minting process has been completed.</p><p>The sequence in which NFT tokens are assigned to the metadata is important. If the order of assignment is undisclosed before the mint, buyers of the NFTs have no assurance that the project team will not modify the assignment after the mint to benefit themselves.</p><p>To address this issue, projects require a way to demonstrate that the metadata order was established before the mint and was not modified afterward.</p><p>The provenance hash provides an elegant solution to this problem.</p><p>The provenance hash is created in a few steps:</p><ol><li><p>Create a hash for each image in the collection.</p></li><li><p>Concatenate the hashes in the order in which the images will be minted to create a large combined string.</p></li><li><p>Hash the combined string to obtain a provenance hash.</p></li></ol><p>The best way to share the provenance hash with the community is by storing it in the collection&apos;s smart contract. This should only be done once before the mint. Updating it after the mint can be interpreted as a sign of potential manipulation.</p><p>The Bored Ape Yacht Club is a prime illustration of a project that utilizes a provenance hash. Anyone can go to Etherscan and read the BAYC provenance hash that is stored in the smart contract.</p><p>BAYC also created a UI to showcase how the provenance hash is calculated - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/NZ90hnOtkF">https://boredapeyachtclub.com/#/provenance</a></p><p>So the question is, do you care about the provenance hash?</p><p>Does it concern you whether the metadata has been modified after the minting process or not?</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[NatSpec comments for smart contracts]]></title>
            <link>https://paragraph.com/@0xmarko/natspec-comments-for-smart-contracts</link>
            <guid>jQmXmu65hYY3sQF8ixvd</guid>
            <pubDate>Wed, 15 Feb 2023 13:59:15 GMT</pubDate>
            <description><![CDATA[Good code is self-documenting. However, adding documentation to the code is well worth it, especially for smart contracts. Let’s see what is NatSpec is and how to utilize it for smart contract documentation. NatSpec is a special documentation format for Solidity smart contracts. While good contracts can be self-documenting, including NatSpec enables developers to easily share and export documentation. The NatSpec format consists of specially formatted comments within the Solidity code. NatSpe...]]></description>
            <content:encoded><![CDATA[<p>Good code is self-documenting. However, adding documentation to the code is well worth it, especially for smart contracts.</p><p>Let’s see what is NatSpec is and how to utilize it for smart contract documentation.</p><p>NatSpec is a special documentation format for Solidity smart contracts. While good contracts can be self-documenting, including NatSpec enables developers to easily share and export documentation.</p><p>The NatSpec format consists of specially formatted comments within the Solidity code. NatSpec comments start with `///` for single or `/**` ending with `*/` for multi-line comments. You are probably familiar with this syntax if you read contracts on Etherscan.</p><p>NatSpec supports different optional tags that indicate what type of information is provided. Functions usually have multiple tags attached to them, like notice, dev, params, and return.</p><p>Here is an example contract from the official Solidity documentation.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4c1797b11e2bbeefbca96494169032749ebeabc22e2538795278daea1e411574.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Here is a cheat sheet from the official Solidity docs that explains the purpose of each tag and where it may be used.</p><p>Once you&apos;ve written tags a few times, they become familiar and you won&apos;t need to consult the cheat sheet anymore.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/399f2bd51fffa1649eafb4dbbd1d2837fd870edca981ee0e5d94712e7daf90c5.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>If no tags are used, then the Solidity compiler will interpret `///` or `/**` comments in the same way as if they were tagged with the notice tag. Nice default right there.</p><p>If you are using HardHat, then NatSpec documentation can be easily exported and updated on each compile. You&apos;ll have to add and configure `hardhat-docgen` plugin that does the magic. Plugin has different options so set it up as you like.</p><p>A good rule of thumb is to always add NatSpec for all public interfaces (everything in the ABI). Exported documentation can be easily understood by your frontend &amp; backend teams that have to integrate smart contracts in the app.</p><p>Thanks for reading.</p><p>Follow me on Twitter for more!</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xMarko/status/1625840520219041793">https://twitter.com/0xMarko/status/1625840520219041793</a></p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Are you using the `ìndexed` keyword when writing events in Solidity?]]></title>
            <link>https://paragraph.com/@0xmarko/are-you-using-the-ndexed-keyword-when-writing-events-in-solidity</link>
            <guid>rmkoT3ENFT7R2id0hcSF</guid>
            <pubDate>Fri, 10 Feb 2023 14:41:49 GMT</pubDate>
            <description><![CDATA[Let&apos;s see what it actually does.Transfer eventFirst, let’s take a step back to understand the events and how they are stored. Events in Solidity serve as a mechanism for smart contracts to emit information. They are triggered by functions within the contract and can be monitored by external applications. An event log is a record of an event that has been triggered and recorded on the blockchain in a form of a special data structure. Event logs are a more economically friendly method for ...]]></description>
            <content:encoded><![CDATA[<p>Let&apos;s see what it actually does.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d88f7653484ee74858a894f59eecb4c264c38834d18c38100b5b9e7fe2500e2a.png" alt="Transfer event" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Transfer event</figcaption></figure><p>First, let’s take a step back to understand the events and how they are stored.</p><p>Events in Solidity serve as a mechanism for smart contracts to emit information. They are triggered by functions within the contract and can be monitored by external applications.</p><p>An event log is a record of an event that has been triggered and recorded on the blockchain in a form of a special data structure.</p><p>Event logs are a more economically friendly method for storing data that is not required for smart contracts to function properly.</p><p>Logs require 8 gas per byte while smart contract storage requires 20k gas per 32 bytes. However, it is essential to note that logs are not accessible by smart contracts.</p><p>Each event log contains information about the event, an array of topics, and data.</p><p>Topics are used to describe the event. The maximum number of topics we can store in a log is 4.</p><p>The first topic usually consists of the signature of the event name, including the types of its parameters. This signature is not included as the first topic when emitting anonymous events.</p><p>Topics can only hold a maximum of 32 bytes of data, so things like arrays or strings cannot be stored correctly. If you try to store data bigger than 32 bytes, the topic will be hashed instead.</p><p>But, arrays and strings can be stored as event data. Event data is not limited to 4x32 byes like topics, which means it can store more complex data.</p><p>It&apos;s important to note that topics are searchable, but data is not. That means you can filter event logs by topic values. On the other hand, including data is a lot cheaper than including topics.</p><p>Event parameters that are marked as `indexed` will be included as additional topics in the topics array of the event log. The rest of the event parameters will still be available in event data, but you won&apos;t be able to filter logs by those values.</p><p>Event logs can be read using Ethereum client libraries or any specialized library such as ethers.js.</p><p>To read an event log, you need to know the contract address, contract ABI, the event name, and the block range in which the event was triggered.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/34dbafc6b3c89b01c93a4fb63348f342e48ad175c62c50a0f7c8721e7765a3d3.png" alt="Example of logs query" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Example of logs query</figcaption></figure><p>The `indexed` keyword allows us to optimize the way event data is stored on the blockchain, making it easier to retrieve as needed.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Will the use of Bitcoin NFTs result in a more centralized network over time?]]></title>
            <link>https://paragraph.com/@0xmarko/will-the-use-of-bitcoin-nfts-result-in-a-more-centralized-network-over-time</link>
            <guid>2f98Ra5aPibvGeDYCDdS</guid>
            <pubDate>Sun, 05 Feb 2023 17:00:42 GMT</pubDate>
            <description><![CDATA[The crypto community is divided over whether the launch of the Ordinal protocol on the Bitcoin mainnet will have a positive impact on the Bitcoin ecosystem. Ordinal NFTs (aka digital artifacts or inscriptions) allow users to mint non-fungible tokens onto Bitcoin&apos;s blockchain. Ordinals take advantage of Taproot & Segwit witness data to store JPEGs, videos, games, etc. Ordinal Theory is the fundamental idea behind Ordinals. It allows for the creation of Bitcoin-native digital artifacts, "i...]]></description>
            <content:encoded><![CDATA[<p>The crypto community is divided over whether the launch of the Ordinal protocol on the Bitcoin mainnet will have a positive impact on the Bitcoin ecosystem.</p><p>Ordinal NFTs (aka digital artifacts or inscriptions) allow users to mint non-fungible tokens onto Bitcoin&apos;s blockchain.</p><p>Ordinals take advantage of Taproot &amp; Segwit witness data to store JPEGs, videos, games, etc.</p><p>Ordinal Theory is the fundamental idea behind Ordinals.</p><p>It allows for the creation of Bitcoin-native digital artifacts, &quot;inscribed&quot; to individual Satoshis.</p><p>This allows for non-fungible characteristics to be imbued in these Satoshis, similar to traditional NFTs.</p><p>Inscriptions leverage capabilities based on Taproot Bitcoin soft fork to store content in Taproot script-path spend scripts.</p><p>These scripts have fewer limitations, allowing for the inclusion of content in Taproot outputs.</p><p>Inscription data is always stored on-chain and cannot reference any off-chain content.</p><p>This feature of inscriptions results in increased durability, as the content cannot be lost, and scarcity, as creators must pay fees that are proportional to the size of the content.</p><p>Inscription data is extra non-financial data and will be forever included in the blockchain.</p><p>Adding unique traits to Satoshis may harm Bitcoin&apos;s privacy and fungibility in the long run.</p><p>Inscribed Satoshis will forever differ from those without inscriptions.</p><p>If NFTs were to take off on Bitcoin, the increased storage and bandwidth requirements could lead to higher technical requirements for running a full node.</p><p>This can result in a potential centralization of the network.</p><p>Ordinal protocol has the potential to change the way people interact with the Bitcoin network and make Bitcoin more appealing to the NFT community.</p><p>Excited to see where it goes from here. 🚀</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1dd5776f68051e07c670dac6e3aef6c67e639dc8cf04ef1887a86502a583967e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Bored Ape Yacht Club: Smart Contract Breakdown]]></title>
            <link>https://paragraph.com/@0xmarko/bored-ape-yacht-club-smart-contract-breakdown</link>
            <guid>ghHczoLiQ6vDLc8gWRya</guid>
            <pubDate>Sat, 04 Feb 2023 18:42:34 GMT</pubDate>
            <description><![CDATA[Bored Ape Yacht Club (BAYC) is a popular NFT collection created by Yuga Labs. In this post, we’ll go over BAYC smart contract code. The source code is available on EtherScan.ERC721BAYC is implemented as an ERC721 token, a standard that defines a set of functions that a smart contract must implement in order to be considered a compliant ERC721 token. These functions include the ability to transfer tokens, approve other addresses to manage your tokens, and check token ownership.ERC721 interface...]]></description>
            <content:encoded><![CDATA[<p>Bored Ape Yacht Club (BAYC) is a popular NFT collection created by Yuga Labs.</p><p>In this post, we’ll go over BAYC smart contract code. The source code is available on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d#code">EtherScan</a>.</p><h2 id="h-erc721" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ERC721</h2><p>BAYC is implemented as an ERC721 token, a standard that defines a set of functions that a smart contract must implement in order to be considered a compliant ERC721 token.</p><p>These functions include the ability to transfer tokens, approve other addresses to manage your tokens, and check token ownership.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bce60f6c6415cb795ed495b573a46d92948aac8183f8c73d22a64cd331c2e410.png" alt="ERC721 interface" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">ERC721 interface</figcaption></figure><p>BAYC uses a standard basic implementation of ERC721.</p><h2 id="h-ownable-contract" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ownable contract</h2><p>The contract inherits the <strong>Ownable</strong> contract which provides basic authorization control functions. It also provides <strong>_onlyOwner</strong> modifier which restricts certain functions or methods within a smart contract to be executed only by the contract owner.</p><p>The owner of a contract is set during the contract deployment and can only be changed by the current owner.</p><h2 id="h-safemath-library" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">SafeMath library</h2><p>The contract also uses the <strong>SafeMath</strong> library. When writing smart contracts, it&apos;s important to handle mathematical operations carefully. A single overflow or underflow can result in the loss of funds, data corruption, or other severe issues. For example, an overflow can occur when the result of a mathematical operation exceeds the maximum possible value that can be stored in a variable. In such a case, the result &quot;wraps around&quot; to a negative number and the smart contract will continue to execute with incorrect results.</p><p>The SafeMath library provides a simple solution to this problem by checking the result of each mathematical operation and ensuring that it is within the acceptable range. If an overflow or underflow occurs, the library will revert the transaction, preventing the smart contract from executing with incorrect results.</p><p>Since Solidity 0.8, the overflow/underflow check is implemented on the language level. Validation is added to the bytecode during compilation. <strong>You don&apos;t need the SafeMath library for Solidity 0.8+.</strong></p><h2 id="h-variables" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Variables</h2><p>BAYC smart contract has several important variables:</p><ul><li><p><strong>BAYC_PROVENANCE</strong>: a string variable that stores the provenance hash of the token. The NFT Provenance Hash ensures the fairness of a project’s NFT distribution during and post-mint.</p></li><li><p><strong>MAX_APES</strong>: a variable that stores the maximum number of Bored Ape tokens that can be minted</p></li><li><p><strong>REVEAL_TIMESTAMP</strong>: a variable that stores the reveal timestamp for the token sale</p></li><li><p><strong>startingIndexBlock</strong>: a variable that stores the block number of the starting index for the collection</p></li><li><p><strong>startingIndex</strong>: a variable that stores the starting index of the collection</p></li><li><p><strong>apePrice</strong>: a constant that stores the price of each Bored Ape token in wei</p></li><li><p><strong>maxApePurchase</strong>: a constant that stores the maximum number of tokens that can be purchased at one time</p></li><li><p><strong>saleIsActive</strong>: a boolean variable that indicates whether the sale of Bored Ape tokens is active</p></li></ul><h2 id="h-functions" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Functions</h2><p><strong>withdraw</strong>:</p><p>This function allows the owner to transfer the balance of the smart contract to their own wallet. This function can only be called by the owner.</p><p><strong>reserveApes</strong>:</p><p>This function allows the owner to reserve a set number of Bored Apes. The number of Apes that can be reserved is defined as 30. This function can only be called by the owner.</p><p><strong>setRevealTimestamp</strong>:</p><p>This function allows the owner to set the reveal timestamp for the Bored Ape Yacht Club smart contract. The reveal timestamp is used to determine when the sales of Apes will start. This function can only be called by the owner.</p><p><strong>setProvenanceHash</strong>:</p><p>This function allows the owner to set the provenance hash for the Bored Ape Yacht Club smart contract. This function can only be called by the owner.</p><p><strong>setBaseURI</strong>:</p><p>This function allows the owner to set the base URI for the Bored Ape Yacht Club smart contract. The base URI is used to provide a unique identifier for the Bored Apes. This function can only be called by the owner.</p><p><strong>flipSaleState</strong>:</p><p>This function allows the owner to pause or activate the sale of Bored Apes. When the sale is active, Bored Apes can be minted. When the sale is paused, Bored Apes cannot be minted. This function can only be called by the owner.</p><p><strong>mintApe</strong>:</p><p>This function allows a user to mint Bored Apes. To mint Apes, the sale must be active and the user must send the correct amount of ether. The maximum number of Apes that can be minted in a single transaction is defined as 20. This function is payable, which means it requires a payment to be made in ether.</p><p><strong>setStartingIndex</strong>:</p><p>This function sets the starting index for the collection of Bored Apes. The starting index is used to determine the order in which the Bored Apes will be collected. This function can only be called once and the starting index block must be set before this function can be called.</p><p><strong>emergencySetStartingIndexBlock</strong>:</p><p>This function allows the owner to set the starting index block for the collection of Bored Apes in an emergency situation. It can only be called by the owner and is used in the event that the starting index block has not been set.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[What is AI-generated art?]]></title>
            <link>https://paragraph.com/@0xmarko/what-is-ai-generated-art</link>
            <guid>99CNwlyiS7ANHcH9m5aA</guid>
            <pubDate>Wed, 01 Feb 2023 09:47:37 GMT</pubDate>
            <description><![CDATA[AI art has been around for 50 years, but it recently became a buzzword. What is it exactly and why is it useful?Young man drinking coffee in anime styleAI-generated art is a game changer in the world of digital art. Algorithms analyze existing styles, images, & data to create new pieces of art. Algorithms can also mimic a specific artistic style for a consistent, recognizable look & feel for brands or projects. AI-generated art enables experimentation & exploration of new styles & techniques ...]]></description>
            <content:encoded><![CDATA[<p>AI art has been around for 50 years, but it recently became a buzzword.</p><p>What is it exactly and why is it useful?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1556ffaa4ac959d2802f089ebdb60950dd5a383634330b9d920f8c94bb7dc5e4.png" alt="Young man drinking coffee in anime style" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Young man drinking coffee in anime style</figcaption></figure><p>AI-generated art is a game changer in the world of digital art. Algorithms analyze existing styles, images, &amp; data to create new pieces of art. Algorithms can also mimic a specific artistic style for a consistent, recognizable look &amp; feel for brands or projects.</p><p>AI-generated art enables experimentation &amp; exploration of new styles &amp; techniques that may not have been possible with traditional methods. It has the potential to revolutionize the way we create &amp; consume art, making it more accessible, efficient &amp; exciting!</p><p>Why would you generate art?</p><ul><li><p>Low cost &amp; quick production of high-quality art makes it accessible to a wider range of people &amp; applications.</p></li><li><p>Automates repetitive tasks, freeing up artists to focus on creative &amp; strategic aspects of their work.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/99f9d0ac9dc06a4177ab7f21875cfc880528b8f19fa6a618d294fbfb643ca03d.png" alt="Portals" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Portals</figcaption></figure><p><strong>How to generate art?</strong></p><p>There are many tools, but I really like <strong>Midjourney</strong>. Midjourney is an independent AI art generator that is open for public use and free to join with a Discord account. Simply enter a few words as a prompt in the channel, and let Midjourney do the rest.</p><p>AI and machine learning will create a unique image just for you.</p><p>Once you’re satisfied with what the bot returns, you can upscale the image and download it or send it to yourself. Plus, you can also explore a gallery of amazing images created by other users.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d05f49e90f631335d46a6f62db8b983669340e3416f126bc1d9902f3bee3b5df.png" alt="AI-generated different variations" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">AI-generated different variations</figcaption></figure><p>Here is a quick start guide for Midjourney</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/aIpzOIayh3">https://t.co/aIpzOIayh3</a></p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[What are some cool things about NEAR Protocol?]]></title>
            <link>https://paragraph.com/@0xmarko/what-are-some-cool-things-about-near-protocol</link>
            <guid>P4eBG7ylc2ygkwpFZZfA</guid>
            <pubDate>Tue, 31 Jan 2023 09:28:23 GMT</pubDate>
            <description><![CDATA[NEAR is a Proof-of-Stake blockchain that uses sharding technology to achieve scalability. NEAR uses an election mechanism called Thresholded PoS (TPoS). The general idea is to have a deterministic way to have a large number of participants that are maintaining the network. NEAR&apos;s mission is to remove all barriers to Web3 with the goal of onboarding 1 billion users in the first five years. Accounts NEAR accounts have human-readable names (eg. marko.near). Top-level accounts are created by...]]></description>
            <content:encoded><![CDATA[<p>NEAR is a Proof-of-Stake blockchain that uses sharding technology to achieve scalability. NEAR uses an election mechanism called Thresholded PoS (TPoS).</p><p>The general idea is to have a deterministic way to have a large number of participants that are maintaining the network.</p><p>NEAR&apos;s mission is to remove all barriers to Web3 with the goal of onboarding 1 billion users in the first five years.</p><p><strong>Accounts</strong></p><p>NEAR accounts have human-readable names (eg. marko.near). Top-level accounts are created by the registrar (.near). near can create bob.near, and bob.near can create app.bob.near. All accounts can be smart contracts.</p><p>The NEAR wallet is the quickest way to set up a new account. It supports 2FA and a Ledger hardware wallet. Staking is built right into the wallet, making it simple to stake NEAR and receive rewards. You can also browse your NFTs there very easily.</p><p>NEAR Accounts have the unique feature of holding multiple public/private key pairs, called Access Keys, each with its own set of permissions. Access Keys enable you to grant limited access over your account to third parties. Access Keys can be Full Access or Function Keys.</p><p><strong>Access Keys</strong></p><p>Access Keys provide several advantages.</p><p>You may securely pass the key to an app, allowing it to sign app-related transactions without interrupting you on the UI for each transaction (for example web3 games).</p><p>Access keys can be simply replaced if they are compromised. You may also set up a key-recovery contract in your account and allow a trusted third party to retrieve keys.</p><p><strong>Full Access keys</strong> have full control of an account and they can perform:</p><ul><li><p>CreateAccount</p></li><li><p>DeployContract</p></li><li><p>FunctionCall</p></li><li><p>Transfer</p></li><li><p>Stake</p></li><li><p>AddKey</p></li><li><p>DeleteKey</p></li><li><p>DeleteAccount</p></li></ul><p>If you hand a FullAccess to someone, they will have total control over the account.</p><p><strong>FunctionCall keys</strong> can only be used to call non-payable methods on contracts, i.e. methods that do not require you to attach NEAR Ⓝ.</p><p>The main purpose is to be handed to apps, so they can make contact calls in your name.</p><p><strong>Gas</strong></p><p>Gas is an interesting topic in NEAR. Transaction fees are measured in gas units but paid in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/search?q=%24NEAR&amp;src=cashtag_click">$NEAR</a>. Validators receive their reward independent from the gas fees.</p><p>30% of the fee goes to the contract as a development incentive, while the remaining 70% gets burned.</p><p>Contract developers can prepay gas for their users, allowing them to use the contract without paying any transaction fees.</p><p>Gas price variates smoothly from block to block. There are no gas wars and the extra attached gas will be refunded.</p><p><strong>Smart contracts</strong></p><p>NEAR smart contracts are pieces of executable code stored in the account&apos;s state that have their own storage, and perform transactions in the account&apos;s name.</p><p>When you deploy a smart contract to NEAR, you pay for the storage that this contract requires (1 Ⓝ ~ 100kb).</p><p>You can write NEAR smart contracts in Javascript or Rust. I would suggest Rust since SDK is more mature and there are a lot of good examples online.</p><p>Contracts are compiled by NEAR SDK into WASM, a binary instruction format for a stack-based virtual machine.</p><p><strong>Aurora</strong></p><p>One more interesting thing about the NEAR ecosystem is Aurora. It’s an EVM running on top of the NEAR protocol. It’s implemented as a NEAR smart contract. Aurora has its ecosystem of apps and it aims to be fully compatible with Ethereum.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/r6YMQazFSo">https://t.co/r6YMQazFSo</a></p><p><strong>Conclusion</strong></p><p>NEAR is not going anywhere. Technology is fantastic, as is the community that surrounds it. Create a wallet and join the community!</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Mint150 gas puzzle]]></title>
            <link>https://paragraph.com/@0xmarko/mint150-gas-puzzle</link>
            <guid>udtCMkYgBnr9aRdauy9w</guid>
            <pubDate>Tue, 31 Jan 2023 09:22:55 GMT</pubDate>
            <description><![CDATA[Some time ago @RareSkills_io on Twitter posted a fun gas puzzle called Mint150. The goal of this puzzle is to mint 150 #NFTs for yourself in one transaction while staying under a certain gas limit. Smart contract code: https://t.co/TLGP8W1LbY Test code: https://t.co/CPXHadkgNX Rules are simple:You may not create more accounts. You may only use the attacker account.Since the mint has to be done in one transaction, everything should be implemented in the constructor.You may not modify the victi...]]></description>
            <content:encoded><![CDATA[<p>Some time ago @RareSkills_io on Twitter posted a fun gas puzzle called Mint150.</p><p>The goal of this puzzle is to mint 150 #NFTs for yourself in one transaction while staying under a certain gas limit.</p><p>Smart contract code: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/TLGP8W1LbY">https://t.co/TLGP8W1LbY</a> Test code: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/CPXHadkgNX">https://t.co/CPXHadkgNX</a></p><p>Rules are simple:</p><ul><li><p>You may not create more accounts. You may only use the attacker account.</p></li><li><p>Since the mint has to be done in one transaction, everything should be implemented in the constructor.</p></li><li><p>You may not modify the victim contract</p></li></ul><p>Let&apos;s go over the implementation👇</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fc34fc2fa4a4f929165893cb65cabf36bcaa3859e4d6a5fbb6c15ce411507a73.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>Line 7</strong> initializes ERC721 which we have to exploit.</p><p><strong>Lines 9-11</strong> determine which token IDs will be minted. This is required since the test performs a random number of mints during setup to prevent test fitting. We can determine loop bounds after we get our initial token ID.</p><p>The goal of the loop is to mint and transfer 150 tokens. Because our account starts with a token balance of zero, minting and transferring a token immediately changes our balance from 0 to 1 and then back to 0. Because of the way the SSTORE opcode works, this uses a lot of gas. SSTORE is expensive, and the price is determined by a variety of factors.</p><p>Here is the cost breakdown:</p><ul><li><p>If the value of the slot changes from 0 to any non-zero value, the cost is 20000</p></li><li><p>If the value of the slot changes from 1 to any non-zero value, the cost is 5000</p></li><li><p>If the value of the slot changes from any non-zero value to 0, the cost is 5000</p></li></ul><p>In our situation, this means that each time the loop iterates, we will have to pay 25000 gas for updating our balance from 0 to 1 and then back to 0.</p><p>One clever approach we may do is to &quot;premint&quot; 1 #NFT before the loop, which will cause our balance to switch between 1 and 2 in the loop. Gas cost will significantly drop as a result. Premint is on line 13.</p><p><strong>Line 15 - 22</strong> is our loop that mints and transfers 150 tokens from the contracts to the initial caller account.</p><p><strong>Line 24</strong> transfers preminted NFT and that’s it.</p><p>Additionally, the reentrancy attack with the callback function onERC721Received on ERC 721 can be used to solve this challenge since Mint150 contract uses _safeMint and has no reentrancy guard.</p><p>However, the onERC721Received callback won’t be triggered if the mint function is called from the constructor, since the method which checks if the caller is a contract (EXTCODESIZE) returns 0 if it is called from the constructor of a contract.</p><p>To work around the EXTCODESIZE problem, deploy a new contract from the Attacker contract.</p><p>The biggest take from this puzzle is to understand how SSTORE opcode works and how to use it to your advantage.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[How to become a Solidity developer?]]></title>
            <link>https://paragraph.com/@0xmarko/how-to-become-a-solidity-developer</link>
            <guid>BvRkzSPbhvtrOBXTU4vu</guid>
            <pubDate>Tue, 31 Jan 2023 09:18:34 GMT</pubDate>
            <description><![CDATA[Bear (BUILD) market is a perfect time to FOCUS and LEARN new skills. Here is a roadmap you can take NOW to become a Solidity developer or improve your existing skills. Knowing programming languages such as JavaScript or Python will make this much easier. Here&apos;s what you can do:Read Mastering Ethereum bookComplete several Udemy coursesRead existing smart contractsMastering Ethereum book is offering a guide to the operation and use of Ethereum and other compatible EVM-based open blockchain...]]></description>
            <content:encoded><![CDATA[<p>Bear (BUILD) market is a perfect time to FOCUS and LEARN new skills. Here is a roadmap you can take NOW to become a Solidity developer or improve your existing skills.</p><p>Knowing programming languages such as JavaScript or Python will make this much easier.</p><p>Here&apos;s what you can do:</p><ul><li><p>Read Mastering Ethereum book</p></li><li><p>Complete several Udemy courses</p></li><li><p>Read existing smart contracts</p></li></ul><p><strong>Mastering Ethereum book</strong> is offering a guide to the operation and use of Ethereum and other compatible EVM-based open blockchains. The book provides detailed technical breakdowns and introductions to high and low-level Ethereum concepts.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/fXpnhqOsVm">https://t.co/fXpnhqOsVm</a></p><p><strong>Ethereum and Solidity: The Complete Developer&apos;s Guide</strong> course on Udemy, by Stephen Grider.</p><p>By the end of the course, you should be able to:</p><ul><li><p>Write Solidity</p></li><li><p>Understand smart contracts</p></li><li><p>Use smart contracts to build apps based on the blockchain</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/ugq0zcSGMj">https://t.co/ugq0zcSGMj</a></p><p><strong>Master Ethereum &amp; Solidity Programming From Scratch</strong> course on Udemy, by Andre Dumitrescu.</p><p>The course comes with over 40 downloadable resources and 20 articles.</p><p>You’ll build 5 smart contracts:</p><ul><li><p>Token</p></li><li><p>ICO</p></li><li><p>Lottery</p></li><li><p>Auction</p></li><li><p>Crowdfunding</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/xi1r8GMj12">https://t.co/xi1r8GMj12</a></p><p><strong>The Complete NFT Web Development Course - Zero To Expert</strong> course on Udemy teaches you how to build an NFT Marketplace with Solidity And React.</p><p>It goes through the ERC721 standard and shows how to build basic NFT smart contracts.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/233SGnq5f7">https://t.co/233SGnq5f7</a></p><p><strong>Advanced Solidity: Understanding and Optimizing Gas Costs</strong> Udemy course by Jeffrey Scholz.</p><p>You will learn how:</p><ul><li><p>the EVM sets the gas prices</p></li><li><p>to improve the gas price of your code</p></li><li><p>to debug execution costs</p></li><li><p>to write gas-efficient smart contracts</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/ra8ZIJUZH5">https://t.co/ra8ZIJUZH5</a></p><p><strong>Advanced Solidity: Yul and Assembly</strong> Udemy course by Jeffrey Scholz. You will learn how Solidity works behind the scenes and how to write Smart Contracts in assembly. This is very useful if you like gas puzzles and want to dig deeper into Solidity.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/7Ffe15Uygp">https://t.co/7Ffe15Uygp</a></p><p><strong>Spend some time reading the contracts on Etherscan</strong>. You will discover how experienced developers write code, find some interesting solutions, and improve your Solidity skills.</p><p>Those were interesting to me:</p><ul><li><p>WETH</p></li><li><p>Uniswap v2</p></li><li><p>Clone X &amp; Clone X Mint Vial</p></li><li><p>Azuki</p></li><li><p>Nouns</p></li></ul><p>Solidity is a very fun language, and the possibilities for smart contracts are limitless.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Awesome Solidity VSCode extensions]]></title>
            <link>https://paragraph.com/@0xmarko/awesome-solidity-vscode-extensions</link>
            <guid>HVirQuIu0tnJwpH4GF2d</guid>
            <pubDate>Tue, 31 Jan 2023 09:12:56 GMT</pubDate>
            <description><![CDATA[Are you writing Solidity in Visual Studio Code? Here are three helpful extensions to make your coding experience better. Solidity Visual Developer Supports developers in writing secure and well-understood code. It supports you with the following features:Advanced Solidity Language SupportCode AugmentationSource ExplorationVisual Security Lintinghttps://t.co/dmw2Zw8uZy ETHover Enables you to hover over an Ethereum address and:Open it in etherscanShow $ETH balanceDownload the bytecode and disas...]]></description>
            <content:encoded><![CDATA[<p>Are you writing Solidity in Visual Studio Code?</p><p>Here are three helpful extensions to make your coding experience better.</p><p><strong>Solidity Visual Developer</strong></p><p>Supports developers in writing secure and well-understood code.</p><p>It supports you with the following features:</p><ul><li><p>Advanced Solidity Language Support</p></li><li><p>Code Augmentation</p></li><li><p>Source Exploration</p></li><li><p>Visual Security Linting</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/dmw2Zw8uZy">https://t.co/dmw2Zw8uZy</a></p><p><strong>ETHover</strong></p><p>Enables you to hover over an Ethereum address and:</p><ul><li><p>Open it in etherscan</p></li><li><p>Show <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/search?q=%24ETH&amp;src=cashtag_click">$ETH</a> balance</p></li><li><p>Download the bytecode and disassemble it</p></li><li><p>Show reconstructed contract source</p></li><li><p>Show verified contract source</p></li><li><p>+ much more</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/eBiI2YyDOA">https://t.co/eBiI2YyDOA</a></p><p><strong>Slither</strong></p><p>Offers integration for Slither, a Solidity static analysis framework.</p><p>It enables you to run a set of vulnerability detectors on your Solidity smart contracts in order to annotate potentially risky code and obtain recommended changes.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Ethereum vanity addresses]]></title>
            <link>https://paragraph.com/@0xmarko/ethereum-vanity-addresses</link>
            <guid>3gH4ykDfKBsOUURFIkqD</guid>
            <pubDate>Tue, 31 Jan 2023 08:54:43 GMT</pubDate>
            <description><![CDATA[Ethereum vanity address is a one-of-a-kind customized address that has portions of it chosen rather than being created at random. Why would you create a vanity address? First of all, it looks cool. The second thing it can help you with is to reinforce your brand and make you more noticeable. How to generate your own vanity address? Creating a vanity address is a straightforward trial-and-error process. When performing high-risk cryptographic operations, such as private key creation, it is imp...]]></description>
            <content:encoded><![CDATA[<p>Ethereum vanity address is a one-of-a-kind customized address that has portions of it chosen rather than being created at random.</p><p><strong>Why would you create a vanity address?</strong></p><p>First of all, it looks cool. The second thing it can help you with is to reinforce your brand and make you more noticeable.</p><p><strong>How to generate your own vanity address?</strong></p><p>Creating a vanity address is a straightforward trial-and-error process. When performing high-risk cryptographic operations, such as private key creation, it is important to use trusted and audited tools.</p><p>The best thing is to run generator software on a secure machine that is not connected to the internet. One example of the tool you can download is - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/EhI4Qa0DqD">https://github.com/10gic/vanityge</a></p><p>You can also use online tools like VANITY-ETH. It’s less secure since PK is generated in the browser. Vanity-ETH is an open-source tool using your web browser to generate Ethereum vanity addresses - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.co/gjNUXlzcTP">https://vanity-eth.tk</a>.</p><p>Enter the prefix/suffix of your choice, and click ‘generate’. Your browser will generate lots of random addresses until one matches your input. Once an address is found, you can reveal the private key, or click the &apos;save&apos; button to download a password-encrypted keystore file.</p><p><strong>How long does it take to generate an address?</strong></p><p>The time to generate an address depends on how long is the desired prefix/suffix.</p><p>A popular vanity address is 0x000000000000000000000000000000000000dead (with &apos;dead&apos; at the end), used instead of the default NULL address. Generating the private key for this address would take thousands of years.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Tight variable packing in Solidity]]></title>
            <link>https://paragraph.com/@0xmarko/tight-variable-packing-in-solidity</link>
            <guid>ZU2bftmgEwVcp0pzSxQC</guid>
            <pubDate>Tue, 31 Jan 2023 08:50:55 GMT</pubDate>
            <description><![CDATA[Have you ever heard of tight variable packing in Solidity? It&apos;s a technique that allows you to save gas when deploying a smart contract and storing or loading statically-sized variables. Tight variable packing involves carefully arranging your contract&apos;s data structures and variables in a way that maximizes the use of available storage space. This means that you can store more information in the same amount of storage space, reducing the amount of gas required for deployment. To ach...]]></description>
            <content:encoded><![CDATA[<p>Have you ever heard of tight variable packing in Solidity?</p><p>It&apos;s a technique that allows you to save gas when deploying a smart contract and storing or loading statically-sized variables.</p><p>Tight variable packing involves carefully arranging your contract&apos;s data structures and variables in a way that maximizes the use of available storage space. This means that you can store more information in the same amount of storage space, reducing the amount of gas required for deployment.</p><p>To achieve tight variable packing, you need to pay attention to the order and size of your variables. For example, larger variables should be placed before smaller ones.</p><p>Tight variable packing is especially important for large and complex contracts, where the savings can be significant.</p><p>If you&apos;re interested in learning more about tight variable packing, check out this post with code examples-</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fravoll.github.io/solidity-patterns/tight_variable_packing.html">https://fravoll.github.io/solidity-patterns/tight_variable_packing.html</a></p><p>Don&apos;t forget to consider tight variable packing when designing your next Solidity contract! It could save a lot of gas in the long run</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Tips to get you started with  smart contract development]]></title>
            <link>https://paragraph.com/@0xmarko/tips-to-get-you-started-with-smart-contract-development</link>
            <guid>S7vHQDAHPfgEnh91TXSY</guid>
            <pubDate>Tue, 31 Jan 2023 08:49:14 GMT</pubDate>
            <description><![CDATA[Here are a couple of tips to get started with Solidity and smart contract development:Start by familiarizing yourself with the basics of the Solidity programming language and its syntax.Practice writing simple smart contracts and deploying them on a blockchain testnet to gain hands-on experience.Take advantage of online tutorials and resources to deepen your understanding of Solidity and its features.Use debugging tools like Remix and Truffle to test and troubleshoot your contracts before dep...]]></description>
            <content:encoded><![CDATA[<p>Here are a couple of tips to get started with Solidity and smart contract development:</p><ol><li><p>Start by familiarizing yourself with the basics of the Solidity programming language and its syntax.</p></li><li><p>Practice writing simple smart contracts and deploying them on a blockchain testnet to gain hands-on experience.</p></li><li><p>Take advantage of online tutorials and resources to deepen your understanding of Solidity and its features.</p></li><li><p>Use debugging tools like Remix and Truffle to test and troubleshoot your contracts before deploying them on the mainnet.</p></li><li><p>Join the Solidity community and participate in online forums and discussions to learn from experienced developers.</p></li><li><p>Always follow best practices and security measures to ensure the integrity and security of your smart contracts.</p></li></ol>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[Want to become a better software engineer?]]></title>
            <link>https://paragraph.com/@0xmarko/want-to-become-a-better-software-engineer</link>
            <guid>u85UO7AhowZJlmLDOLFD</guid>
            <pubDate>Tue, 31 Jan 2023 08:46:57 GMT</pubDate>
            <description><![CDATA[Here are 6 quick tips to help you do that:Keep learning and never stop growing your knowledge and skill set.Stay up to date with industry trends and new technologies. Experiment with new tools and languages.Always strive for quality in your code. Write clean, readable, and well-documented code.Always stay one foot outside of your comfort zone. Don&apos;t be afraid to tackle tough and challenging problems.Collaborate with other software engineers and learn from their experiences. Attend meetup...]]></description>
            <content:encoded><![CDATA[<p>Here are 6 quick tips to help you do that:</p><ol><li><p>Keep learning and never stop growing your knowledge and skill set.</p></li><li><p>Stay up to date with industry trends and new technologies. Experiment with new tools and languages.</p></li><li><p>Always strive for quality in your code. Write clean, readable, and well-documented code.</p></li><li><p>Always stay one foot outside of your comfort zone. Don&apos;t be afraid to tackle tough and challenging problems.</p></li><li><p>Collaborate with other software engineers and learn from their experiences. Attend meetups and conferences to network and expand your knowledge.</p></li><li><p>Never stop seeking feedback and constructive criticism. This will help you identify areas for improvement and growth.</p></li></ol>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[5 daily habits for a better life]]></title>
            <link>https://paragraph.com/@0xmarko/5-daily-habits-for-a-better-life</link>
            <guid>xJF3dHGKYYyXMC2HkMew</guid>
            <pubDate>Tue, 31 Jan 2023 08:44:36 GMT</pubDate>
            <description><![CDATA[As we head into the new year, it&apos;s a great time to reflect on the habits that we have and consider how we can make small changes to improve the quality of our lives. Here are 5 daily habits that can have a big impact:Start your day with a healthy breakfast. Fueling your body with nutrients in the morning can help set the tone for the rest of the day.Get moving. Incorporating physical activity into your routine can help improve your physical and mental health. Aim for at least 3 training ...]]></description>
            <content:encoded><![CDATA[<p>As we head into the new year, it&apos;s a great time to reflect on the habits that we have and consider how we can make small changes to improve the quality of our lives.</p><p>Here are 5 daily habits that can have a big impact:</p><ol><li><p>Start your day with a healthy breakfast. Fueling your body with nutrients in the morning can help set the tone for the rest of the day.</p></li><li><p>Get moving. Incorporating physical activity into your routine can help improve your physical and mental health. Aim for at least 3 training sessions per week</p></li><li><p>Establish healthy habits like eating nutritious meals, getting enough sleep, and staying hydrated. These small actions can make a big difference in your overall well-being</p></li><li><p>Set boundaries and say no to things that don&apos;t align with your values or goals. This will help you feel more in control of your time and energy and allow you to focus on what truly matters to you.</p></li><li><p>Set small, achievable goals for yourself. Whether it&apos;s learning a new skill or simply making your bed every morning, setting goals can give you a sense of accomplishment and help you make progress towards larger aspirations.</p></li></ol><p>By incorporating these daily habits into your routine, you can improve your life quality and set yourself up for success in the new year.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
        <item>
            <title><![CDATA[ EIP vs ERC]]></title>
            <link>https://paragraph.com/@0xmarko/eip-vs-erc</link>
            <guid>ZBqJ7t9cPZL9zfZLaycu</guid>
            <pubDate>Mon, 30 Jan 2023 15:10:13 GMT</pubDate>
            <description><![CDATA[In the Ethereum world, EIP and ERC phrases come up quite often. What exactly is the difference between the two? EIP stands for Ethereum Improvement Proposal. It is a design document that outlines a proposed change or improvement to Ethereum. Once an EIP has been authorized and confirmed by a committee, it becomes an ERC. ERC stands for Ethereum Request for Comment. It is a protocol for proposing and implementing new Ethereum-based tokens, smart contracts, and other related features. EIPs can ...]]></description>
            <content:encoded><![CDATA[<p>In the Ethereum world, EIP and ERC phrases come up quite often. What exactly is the difference between the two?</p><p>EIP stands for Ethereum Improvement Proposal. It is a design document that outlines a proposed change or improvement to Ethereum. Once an EIP has been authorized and confirmed by a committee, it becomes an ERC.</p><p>ERC stands for Ethereum Request for Comment. It is a protocol for proposing and implementing new Ethereum-based tokens, smart contracts, and other related features.</p><p>EIPs can cover a wide range of topics, such as new features for the Ethereum Virtual Machine (EVM), updates to the Ethereum network, or changes to the Ethereum protocol itself.</p><p>ERCs, on the other hand, are specifically focused on creating new Ethereum-based tokens or standards for smart contracts. Some examples of ERCs include ERC-20 (a standard for creating tokens) and ERC-721 (a standard for creating non-fungible tokens).</p><p>In summary, EIPs are proposals for improving or changing Ethereum, while ERCs are proposals for creating new Ethereum-based standards or tokens. Both play important roles in the development and evolution of the Ethereum ecosystem.</p>]]></content:encoded>
            <author>0xmarko@newsletter.paragraph.com (0xMarko)</author>
        </item>
    </channel>
</rss>