├── requirements.txt ├── setup.sh ├── scrapper.py └── README.md /requirements.txt: -------------------------------------------------------------------------------- 1 | playwright==1.45.0 -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Install dependencies from requirements.txt 4 | pip install -r requirements.txt 5 | 6 | # Install Playwright browsers 7 | python -m playwright install 8 | 9 | # Run the main script 10 | python scrapper.py -------------------------------------------------------------------------------- /scrapper.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from playwright.async_api import async_playwright 3 | 4 | async def fetch_blog_posts(page): 5 | await page.goto("https://www.rareskills.io/blog") 6 | 7 | last_scroll_height = 0 8 | current_scroll_height = await page.evaluate("document.body.scrollHeight") 9 | 10 | print("Wait! Determining the total scroll height...") 11 | while last_scroll_height < current_scroll_height: 12 | last_scroll_height = current_scroll_height 13 | await page.evaluate("window.scrollTo(0, document.body.scrollHeight)") 14 | await page.wait_for_timeout(4000) 15 | current_scroll_height = await page.evaluate("document.body.scrollHeight") 16 | print("Total scroll height check completed!") 17 | 18 | posts = await page.evaluate('''() => { 19 | const items = Array.from(document.querySelectorAll('.iSTCpN.TBrkhx.post-list-item-wrapper.blog-post-homepage-description-font.blog-post-homepage-description-color.blog-post-homepage-description-fill')); 20 | return items.map(item => { 21 | const titleElement = item.querySelector('.T5UMT5.fcPJ4D.blog-hover-container-element-color.WD_8WI.post-title.blog-post-homepage-title-color.blog-post-homepage-title-font'); 22 | const authorElement = item.querySelector('.tQ0Q1A.user-name.mJ89ha.blog-post-homepage-description-color.blog-post-homepage-description-font.blog-post-homepage-link-hashtag-hover-color'); 23 | const dateElement = item.querySelector('.post-metadata__date.time-ago'); 24 | const readTimeElement = item.querySelector('.post-metadata__readTime'); 25 | const linkElement = item.querySelector('a'); 26 | 27 | return { 28 | title: titleElement?.innerText, 29 | author: authorElement?.innerText, 30 | published_date: dateElement?.innerText, 31 | reading_time: readTimeElement?.innerText, 32 | link: linkElement?.href, 33 | }; 34 | }); 35 | }''') 36 | return posts 37 | 38 | def generate_readme(posts): 39 | readme_content = "# Everything Rareskills\n\n" 40 | readme_content += "This README file includes all the [blog posts](https://www.rareskills.io/blog) references from Rareskills.\n\n" 41 | readme_content += "## Getting Started\n\n" 42 | readme_content += "To set up the project, run the following commands:\n\n" 43 | readme_content += "```bash\n" 44 | readme_content += "chmod +x setup.sh\n" 45 | readme_content += "./setup.sh\n" 46 | readme_content += "```\n\n" 47 | readme_content += "| Title | Author | Published Date | Reading Time | Link | Read |\n" 48 | readme_content += "|-------|--------|----------------|--------------|------|------|\n" 49 | 50 | for post in posts: 51 | read_status = "[ ]" # All posts are unread by default 52 | readme_content += f"| {post['title']} | {post['author']} | {post['published_date']} | {post['reading_time']} | [Link]({post['link']}) | {read_status} |\n" 53 | 54 | with open("README.md", "w") as f: 55 | f.write(readme_content) 56 | 57 | async def main(): 58 | async with async_playwright() as p: 59 | browser = await p.chromium.launch() 60 | page = await browser.new_page() 61 | posts = await fetch_blog_posts(page) 62 | generate_readme(posts) 63 | await browser.close() 64 | 65 | if __name__ == "__main__": 66 | asyncio.run(main()) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Everything Rareskills 2 | 3 | This README file includes all the [blog posts](https://www.rareskills.io/blog) references from Rareskills. 4 | 5 | ## Getting Started 6 | 7 | To set up the project, run the following commands: 8 | 9 | ```bash 10 | chmod +x setup.sh 11 | ./setup.sh 12 | ``` 13 | 14 | | Title | Author | Published Date | Reading Time | Link | Read | 15 | |-------|--------|----------------|--------------|------|------| 16 | | AliasCheck and Num2Bits_strict in Circomlib | Jeffrey Scholz | 22 hours ago | 4 min | [Link](https://www.rareskills.io/post/circom-aliascheck) | [ ] | 17 | | The initializable smart contract design pattern | João Paulo Morais | 6 days ago | 10 min | [Link](https://www.rareskills.io/post/initializable-solidity) | [ ] | 18 | | ERC-7201 Storage Namespaces Explained | Team RareSkills | Jun 13 | 8 min | [Link](https://www.rareskills.io/post/erc-7201) | [ ] | 19 | | Fixed Point Arithmetic in Solidity (Using Solady, Solmate, and ABDK as Examples) | Jeffrey Scholz | Jun 10 | 8 min | [Link](https://www.rareskills.io/post/solidity-fixed-point) | [ ] | 20 | | The Transparent Upgradeable Proxy Pattern Explained in Detail | Jeffrey Scholz | Jun 4 | 7 min | [Link](https://www.rareskills.io/post/transparent-upgradeable-proxy) | [ ] | 21 | | Understanding ABI encoding for function calls | Team RareSkills | May 29 | 15 min | [Link](https://www.rareskills.io/post/abi-encoding) | [ ] | 22 | | Cross Program Invocation in Anchor | Jeffrey Scholz | May 17 | 4 min | [Link](https://www.rareskills.io/post/cross-program-invocation) | [ ] | 23 | | Nodelegatecall Explained | Jeffrey Scholz | May 11 | 2 min | [Link](https://www.rareskills.io/post/nodelegatecall) | [ ] | 24 | | Reading Another Anchor Program’s Account Data On Chain | Jeffrey Scholz | May 7 | 5 min | [Link](https://www.rareskills.io/post/anchor-read-account) | [ ] | 25 | | Delegatecall: The Detailed and Animated Guide | Team RareSkills | May 3 | 15 min | [Link](https://www.rareskills.io/post/delegatecall) | [ ] | 26 | | Low Level Call vs High Level Call in Solidity | Team RareSkills | May 1 | 3 min | [Link](https://www.rareskills.io/post/low-level-call-solidity) | [ ] | 27 | | Finite Fields for Arithmetic Circuits | Jeffrey Scholz | Apr 29 | 23 min | [Link](https://www.rareskills.io/post/finite-fields) | [ ] | 28 | | Arithmetic Circuits for ZK | Jeffrey Scholz | Apr 23 | 22 min | [Link](https://www.rareskills.io/post/arithmetic-circuit) | [ ] | 29 | | Uniswap V2: Calculating the Settlement Price of an AMM Swap | Team RareSkills | Apr 17 | 5 min | [Link](https://www.rareskills.io/post/uniswap-v2-price-impact) | [ ] | 30 | | P vs NP and its application to zero knowledge proofs | Jeffrey Scholz | Apr 10 | 20 min | [Link](https://www.rareskills.io/post/p-vs-np) | [ ] | 31 | | #[derive(Accounts)] in Anchor: different kinds of accounts | Jeffrey Scholz | Apr 6 | 4 min | [Link](https://www.rareskills.io/post/anchor-account-types) | [ ] | 32 | | Three ways to detect if an address is a smart contract | Jeffrey Scholz | Apr 5 | 5 min | [Link](https://www.rareskills.io/post/solidity-code-length) | [ ] | 33 | | ERC-1363 Standard Explained | Jeffrey Scholz | Apr 4 | 8 min | [Link](https://www.rareskills.io/post/erc-1363) | [ ] | 34 | | Creating Raw Ethereum Interactions in Go: Blob Transactions, Tracing Transactions, and Others. | Team RareSkills | Apr 3 | 21 min | [Link](https://www.rareskills.io/post/ethclient-golang) | [ ] | 35 | | Understanding the Function Selector in Solidity | Jeffrey Scholz | Mar 30 | 4 min | [Link](https://www.rareskills.io/post/function-selector) | [ ] | 36 | | How ERC721 Enumerable Works | Team RareSkills | Mar 27 | 8 min | [Link](https://www.rareskills.io/post/erc-721-enumerable) | [ ] | 37 | | Checklist for Technical Writing | Jeffrey Scholz | Mar 25 | 6 min | [Link](https://www.rareskills.io/post/technical-writing-checklist) | [ ] | 38 | | Hacking Underconstrained Circom Circuits With Fake Proofs | Jeffrey Scholz | Mar 18 | 4 min | [Link](https://www.rareskills.io/post/underconstrained-circom) | [ ] | 39 | | Deleting and Closing Accounts and Programs in Solana | Jeffrey Scholz | Mar 12 | 4 min | [Link](https://www.rareskills.io/post/solana-close-account) | [ ] | 40 | | Owner vs Authority in Solana | Jeffrey Scholz | Mar 11 | 6 min | [Link](https://www.rareskills.io/post/solana-authority) | [ ] | 41 | | Multicall in Solana: Batching Transactions and Transaction Size Limit | Jeffrey Scholz | Mar 10 | 3 min | [Link](https://www.rareskills.io/post/solana-multiple-transactions) | [ ] | 42 | | Init_if_needed in Anchor and the Reinitialization Attack | Jeffrey Scholz | Mar 8 | 6 min | [Link](https://www.rareskills.io/post/init-if-needed-anchor) | [ ] | 43 | | Understanding Account Ownership in Solana: Transferring SOL out of a PDA | Jeffrey Scholz | Mar 7 | 6 min | [Link](https://www.rareskills.io/post/solana-account-owner) | [ ] | 44 | | PDA (Program Derived Address) vs Keypair Account in Solana | Jeffrey Scholz | Mar 6 | 6 min | [Link](https://www.rareskills.io/post/solana-pda) | [ ] | 45 | | Modifying accounts using different signers | Jeffrey Scholz | Mar 5 | 7 min | [Link](https://www.rareskills.io/post/anchor-signer) | [ ] | 46 | | Transferring SOL and building a payment splitter: "msg.value" in Solana | Jeffrey Scholz | Mar 2 | 4 min | [Link](https://www.rareskills.io/post/anchor-transfer-sol) | [ ] | 47 | | Function modifiers (view, pure, payable) and fallback functions in Solana: why they don't exist | Jeffrey Scholz | Mar 1 | 3 min | [Link](https://www.rareskills.io/post/solidity-function-types-solana) | [ ] | 48 | | Reading an account balance in Anchor: address(account).balance in Solana | Jeffrey Scholz | Feb 29 | 3 min | [Link](https://www.rareskills.io/post/solana-get-account-balance) | [ ] | 49 | | Cost of storage, maximum storage size, and account resizing in Solana | Jeffrey Scholz | Feb 28 | 5 min | [Link](https://www.rareskills.io/post/solana-account-rent) | [ ] | 50 | | Creating “mappings” and “nested mapping” in Solana | Jeffrey Scholz | Feb 27 | 4 min | [Link](https://www.rareskills.io/post/solana-solidity-mapping) | [ ] | 51 | | Read account data with Solana web3 js and Anchor | Jeffrey Scholz | Feb 26 | 4 min | [Link](https://www.rareskills.io/post/solana-read-account-data) | [ ] | 52 | | Solana counter tutorial: reading and writing data to accounts | Jeffrey Scholz | Feb 25 | 4 min | [Link](https://www.rareskills.io/post/solana-counter-program) | [ ] | 53 | | Zero Knowledge Addition | Jeffrey Scholz | Feb 25 | 2 min | [Link](https://www.rareskills.io/post/zk-add) | [ ] | 54 | | Initializing Accounts in Solana and Anchor | Jeffrey Scholz | Feb 24 | 8 min | [Link](https://www.rareskills.io/post/solana-initialize-account) | [ ] | 55 | | Introduction to Solana Compute Units and Transaction Fees | Jeffrey Scholz | Feb 23 | 7 min | [Link](https://www.rareskills.io/post/solana-compute-unit-price) | [ ] | 56 | | Tx.origin, msg.sender, and onlyOwner in Solana: identifying the caller | Jeffrey Scholz | Feb 21 | 5 min | [Link](https://www.rareskills.io/post/msg-sender-solana) | [ ] | 57 | | Solana logs, “events,” and transaction history | Jeffrey Scholz | Feb 20 | 3 min | [Link](https://www.rareskills.io/post/solana-logs-transaction-history) | [ ] | 58 | | Solana Sysvars Explained | Jeffrey Scholz | Feb 19 | 8 min | [Link](https://www.rareskills.io/post/solana-sysvar) | [ ] | 59 | | The Solana clock and other "block" variables | Jeffrey Scholz | Feb 18 | 4 min | [Link](https://www.rareskills.io/post/solana-clock) | [ ] | 60 | | Visibility and "inheritance" in Rust and Solana | Jeffrey Scholz | Feb 17 | 5 min | [Link](https://www.rareskills.io/post/rust-function-visibility) | [ ] | 61 | | Rust Structs and Attribute-like and Custom Derive Macros | Jeffrey Scholz | Feb 16 | 6 min | [Link](https://www.rareskills.io/post/rust-attribute-derive-macro) | [ ] | 62 | | Rust function-like procedural Macros | Jeffrey Scholz | Feb 15 | 2 min | [Link](https://www.rareskills.io/post/rust-function-like-macro) | [ ] | 63 | | The unusual syntax of Rust | Jeffrey Scholz | Feb 14 | 7 min | [Link](https://www.rareskills.io/post/the-unusual-syntax-of-rust) | [ ] | 64 | | Basic Rust for Solidity Developers | Jeffrey Scholz | Feb 13 | 6 min | [Link](https://www.rareskills.io/post/rust-basic-syntax) | [ ] | 65 | | Solana programs are upgradeable and do not have constructors | Jeffrey Scholz | Feb 12 | 3 min | [Link](https://www.rareskills.io/post/solana-anchor-deploy) | [ ] | 66 | | Require, Revert, and Custom Errors in Solana | Jeffrey Scholz | Feb 11 | 4 min | [Link](https://www.rareskills.io/post/solana-require-macro) | [ ] | 67 | | Solana Anchor Program IDL | Jeffrey Scholz | Feb 10 | 5 min | [Link](https://www.rareskills.io/post/anchor-idl) | [ ] | 68 | | Arithmetic and Basic Types in Solana and Rust | Jeffrey Scholz | Feb 9 | 5 min | [Link](https://www.rareskills.io/post/rust-arithmetic-operators) | [ ] | 69 | | Solana Hello World (Installation and Troubleshooting) | Jeffrey Scholz | Feb 8 | 5 min | [Link](https://www.rareskills.io/post/hello-world-solana) | [ ] | 70 | | Layer 2 Calldata Gas Optimization | Rati Montreewat | Jan 30 | 6 min | [Link](https://www.rareskills.io/post/l2-calldata) | [ ] | 71 | | How Chainlink Price Feeds Work | Jeffrey Scholz | Jan 11 | 3 min | [Link](https://www.rareskills.io/post/chainlink-price-feed-contract) | [ ] | 72 | | How Compound V3 Allocates COMP Rewards | Jeffrey Scholz | Jan 10 | 5 min | [Link](https://www.rareskills.io/post/compound-v3-rewards) | [ ] | 73 | | Bulkers in Compound V3 | Jeffrey Scholz | Jan 9 | 3 min | [Link](https://www.rareskills.io/post/compound-v3-bulker) | [ ] | 74 | | Understanding Collateral, Liquidations, and Reserves in Compound V3 | Jeffrey Scholz | Jan 8 | 7 min | [Link](https://www.rareskills.io/post/compound-finance-liquidation) | [ ] | 75 | | cUSDC V3 (Compound V3) as a non-standard Rebasing Token, CometExt.sol | Jeffrey Scholz | Jan 7 | 4 min | [Link](https://www.rareskills.io/post/cusdc-v3-compound) | [ ] | 76 | | DeFi Interest Rate Indexes: Principal value and Present Value in Compound V3 | Jeffrey Scholz | Jan 5 | 5 min | [Link](https://www.rareskills.io/post/defi-interest-rate-indexes) | [ ] | 77 | | Compound V3 Interest Per Second | Jeffrey Scholz | Jan 4 | 4 min | [Link](https://www.rareskills.io/post/compound-finance-interest-rate-model) | [ ] | 78 | | The Architecture of the Compound V3 Smart Contract | Jeffrey Scholz | Jan 3 | 7 min | [Link](https://www.rareskills.io/post/compound-v3-contracts-tutorial) | [ ] | 79 | | DeFi Lending: Liquidations and Collateral | Jeffrey Scholz | Dec 30, 2023 | 8 min | [Link](https://www.rareskills.io/post/defi-liquidations-collateral) | [ ] | 80 | | The Fallback Extension Pattern | Jeffrey Scholz | Dec 28, 2023 | 2 min | [Link](https://www.rareskills.io/post/fallback-extension-pattern) | [ ] | 81 | | EIP 1967 Storage Slots for Proxies | Jeffrey Scholz | Dec 20, 2023 | 4 min | [Link](https://www.rareskills.io/post/erc1967) | [ ] | 82 | | The interest rate model of AAVE V3 and Compound V2 | Jeffrey Scholz | Dec 1, 2023 | 5 min | [Link](https://www.rareskills.io/post/aave-interest-rate-model) | [ ] | 83 | | The second preimage attack for Merkle Trees in Solidity | Jeffrey Scholz | Nov 24, 2023 | 3 min | [Link](https://www.rareskills.io/post/merkle-tree-second-preimage-attack) | [ ] | 84 | | The staking algorithm of Sushiswap MasterChef and Synthetix | Jeffrey Scholz | Nov 21, 2023 | 8 min | [Link](https://www.rareskills.io/post/staking-algorithm) | [ ] | 85 | | Uniswap V2 Architecture: An Introduction to Automated Market Makers | Jeffrey Scholz | Nov 15, 2023 | 6 min | [Link](https://www.rareskills.io/post/uniswap-v2-tutorial) | [ ] | 86 | | How Uniswap V2 computes the mintFee | Jeffrey Scholz | Nov 14, 2023 | 4 min | [Link](https://www.rareskills.io/post/uniswap-v2-mintfee) | [ ] | 87 | | Uniswap v2 router code walkthrough | Jeffrey Scholz | Nov 10, 2023 | 6 min | [Link](https://www.rareskills.io/post/uniswap-v2-router) | [ ] | 88 | | Top Smart Contract Audit Firms with Interesting Value Propositions | Jeffrey Scholz | Nov 9, 2023 | 3 min | [Link](https://www.rareskills.io/post/smart-contract-audit-firms) | [ ] | 89 | | A comprehensive guide to the ERC 721 standard and related security issues | Jeffrey Scholz | Nov 8, 2023 | 9 min | [Link](https://www.rareskills.io/post/erc721) | [ ] | 90 | | Flash Loans and how to hack them: a walk through of ERC 3156 | Jeffrey Scholz | Nov 7, 2023 | 8 min | [Link](https://www.rareskills.io/post/erc-3156) | [ ] | 91 | | UniswapV2Library Code Walkthrough | Jeffrey Scholz | Nov 6, 2023 | 2 min | [Link](https://www.rareskills.io/post/uniswap-v2-library) | [ ] | 92 | | How the TWAP Oracle in Uniswap v2 Works | - | Nov 3, 2023 | 6 min | [Link](https://www.rareskills.io/post/twap-uniswap-v2) | [ ] | 93 | | Checklist for building a Uniswap V2 clone | - | Nov 1, 2023 | 2 min | [Link](https://www.rareskills.io/post/build-your-own-uniswap) | [ ] | 94 | | Uniswap V2 Mint and Burn Functions Explained | Jeffrey Scholz | Oct 30, 2023 | 6 min | [Link](https://www.rareskills.io/post/uniswap-v2-mint-and-burn) | [ ] | 95 | | Breaking Down the Uniswap V2 Swap Function | Jeffrey Scholz | Oct 28, 2023 | 6 min | [Link](https://www.rareskills.io/post/uniswap-v2-swap-function) | [ ] | 96 | | How arithmetic circuits are used to verify zero knowledge proofs | Jeffrey Scholz | Oct 18, 2023 | 9 min | [Link](https://www.rareskills.io/post/zk-circuits) | [ ] | 97 | | What are Pedersen Commitments and How They Work | Jeffrey Scholz | Oct 13, 2023 | 8 min | [Link](https://www.rareskills.io/post/pedersen-commitment) | [ ] | 98 | | Circom language tutorial with circomlib walkthrough | Jeffrey Scholz | Sep 26, 2023 | 21 min | [Link](https://www.rareskills.io/post/circom-tutorial) | [ ] | 99 | | Elliptic Curves over Finite Field | Jeffrey Scholz | Sep 19, 2023 | 17 min | [Link](https://www.rareskills.io/post/elliptic-curves-finite-fields) | [ ] | 100 | | R1CS to Quadratic Arithmetic Program over a Finite Field in Python | Jeffrey Scholz | Sep 17, 2023 | 5 min | [Link](https://www.rareskills.io/post/r1cs-to-qap) | [ ] | 101 | | Ten beginner project ideas after you learn Solidity | Jeffrey Scholz | Sep 10, 2023 | 5 min | [Link](https://www.rareskills.io/post/beginner-solidity-projects) | [ ] | 102 | | The RareSkills Book of Solidity Gas Optimization: 80+ Tips | Jeffrey Scholz | Sep 7, 2023 | 49 min | [Link](https://www.rareskills.io/post/gas-optimization) | [ ] | 103 | | Elliptic Curve Point Addition | - | Sep 1, 2023 | 10 min | [Link](https://www.rareskills.io/post/elliptic-curve-addition) | [ ] | 104 | | Groth16 Explained | Jeffrey Scholz | Aug 31, 2023 | 8 min | [Link](https://www.rareskills.io/post/groth16) | [ ] | 105 | | Encrypted Evaluation of a Quadratic Arithmetic Program | - | Aug 28, 2023 | 4 min | [Link](https://www.rareskills.io/post/elliptic-curve-qap) | [ ] | 106 | | Building a Zero Knowledge Proof from an R1CS | Jeffrey Scholz | Aug 26, 2023 | 4 min | [Link](https://www.rareskills.io/post/r1cs-zkp) | [ ] | 107 | | Quadratic Arithmetic Programs | Jeffrey Scholz | Aug 23, 2023 | 20 min | [Link](https://www.rareskills.io/post/quadratic-arithmetic-program) | [ ] | 108 | | Connect Wagmi to localhost: testing dapps with Hardhat and Anvil | Jeffrey Scholz | Aug 22, 2023 | 3 min | [Link](https://www.rareskills.io/post/wagmi-localhost) | [ ] | 109 | | Rings and Fields: A programmer's perspective | Jeffrey Scholz | Aug 18, 2023 | 7 min | [Link](https://www.rareskills.io/post/rings-and-fields) | [ ] | 110 | | Solidity Coding Standards | Jeffrey Scholz | Aug 12, 2023 | 5 min | [Link](https://www.rareskills.io/post/solidity-style-guide) | [ ] | 111 | | Viem React Js Example: Transfer, Mint, and View Blockchain State | Jeffrey Scholz | Aug 10, 2023 | 12 min | [Link](https://www.rareskills.io/post/viem-ethereum) | [ ] | 112 | | Elementary Group Theory for Programmers | Jeffrey Scholz | Aug 1, 2023 | 11 min | [Link](https://www.rareskills.io/post/group-theory-and-coding) | [ ] | 113 | | Encrypted Polynomial Evaluation | Jeffrey Scholz | Jul 26, 2023 | 5 min | [Link](https://www.rareskills.io/post/encrypted-polynomial-evaluation) | [ ] | 114 | | Elementary Set Theory and Abstract Algebra for Programmers | Jeffrey Scholz | Jul 25, 2023 | 21 min | [Link](https://www.rareskills.io/post/set-theory) | [ ] | 115 | | Why elliptic curve point addition in prime finite fields always lands on integers | Jeffrey Scholz | Jul 22, 2023 | 3 min | [Link](https://www.rareskills.io/post/closed-elliptic-curves) | [ ] | 116 | | Bilinear Pairings in Python, Solidity, and the EVM | Jeffrey Scholz | Jul 18, 2023 | 12 min | [Link](https://www.rareskills.io/post/bilinear-pairing) | [ ] | 117 | | Converting Algebraic Circuits to R1CS (Rank One Constraint System) | Jeffrey Scholz | Jul 11, 2023 | 13 min | [Link](https://www.rareskills.io/post/rank-1-constraint-system) | [ ] | 118 | | An comprehensive overview of smart contract audit tools | Jeffrey Scholz | Jul 4, 2023 | 31 min | [Link](https://www.rareskills.io/post/smart-contract-audit-tools) | [ ] | 119 | | How Tornado Cash Works (Line by Line for Devs) | Jeffrey Scholz | Jun 27, 2023 | 24 min | [Link](https://www.rareskills.io/post/how-does-tornado-cash-work) | [ ] | 120 | | Getting a smart contract audit: what you need to know | Jeffrey Scholz | Jun 24, 2023 | 10 min | [Link](https://www.rareskills.io/post/smart-contract-audit) | [ ] | 121 | | ZK-addition-dapp with Noir and Nextjs | tanim0la | May 28, 2023 | 6 min | [Link](https://www.rareskills.io/post/zk-addition-dapp-with-noir-and-nextjs) | [ ] | 122 | | Web3.js Example. Latest version 4.x. Transfer, Mint and Query the Blockchain | - | May 26, 2023 | 10 min | [Link](https://www.rareskills.io/post/web3-js-tutorial) | [ ] | 123 | | Understanding smart contract metadata | - | May 25, 2023 | 4 min | [Link](https://www.rareskills.io/post/solidity-metadata) | [ ] | 124 | | Solidity Interview Questions | Jeffrey Scholz | May 22, 2023 | 7 min | [Link](https://www.rareskills.io/post/solidity-interview-questions) | [ ] | 125 | | Smart Contract Security | Jeffrey Scholz | May 5, 2023 | 39 min | [Link](https://www.rareskills.io/post/smart-contract-security) | [ ] | 126 | | Invariant testing in foundry | Jeffrey Scholz | Apr 28, 2023 | 16 min | [Link](https://www.rareskills.io/post/invariant-testing-solidity) | [ ] | 127 | | Wagmi + ReactJS Example: Transfer Crypto and Mint an NFT | Jeffrey Scholz | Apr 24, 2023 | 3 min | [Link](https://www.rareskills.io/post/wagmi-react-example) | [ ] | 128 | | A free solidity tutorial for experienced programmers | Jeffrey Scholz | Apr 20, 2023 | 1 min | [Link](https://www.rareskills.io/post/free-solidity-tutorial-for-experienced-programmers) | [ ] | 129 | | Ethereum precompiled contracts | Jeffrey Scholz | Apr 16, 2023 | 5 min | [Link](https://www.rareskills.io/post/solidity-precompiles) | [ ] | 130 | | Solidity Mutation Testing | Jeffrey Scholz | Apr 14, 2023 | 5 min | [Link](https://www.rareskills.io/post/solidity-mutation-testing) | [ ] | 131 | | Solidity Signed Integer | Jeffrey Scholz | Apr 11, 2023 | 5 min | [Link](https://www.rareskills.io/post/signed-int-solidity) | [ ] | 132 | | Foundry Unit Tests | Jeffrey Scholz | Apr 11, 2023 | 12 min | [Link](https://www.rareskills.io/post/foundry-testing-solidity) | [ ] | 133 | | Solidity Staticcall EIP 214 | Jeffrey Scholz | Apr 10, 2023 | 3 min | [Link](https://www.rareskills.io/post/solidity-staticcall) | [ ] | 134 | | Openzeppelin Ownable: Use Ownable2Step Instead | Jeffrey Scholz | Apr 8, 2023 | 1 min | [Link](https://www.rareskills.io/post/openzeppelin-ownable2step) | [ ] | 135 | | Solidity test internal function | Jeffrey Scholz | Apr 6, 2023 | 3 min | [Link](https://www.rareskills.io/post/solidity-test-internal-function) | [ ] | 136 | | Uint256 max value | Jeffrey Scholz | Apr 2, 2023 | 2 min | [Link](https://www.rareskills.io/post/uint-max-value-solidity) | [ ] | 137 | | Solidity Events | Jeffrey Scholz | Apr 1, 2023 | 8 min | [Link](https://www.rareskills.io/post/ethereum-events) | [ ] | 138 | | EIP-2930 - Ethereum access list | Jeffrey Scholz | Mar 27, 2023 | 6 min | [Link](https://www.rareskills.io/post/eip-2930-optional-access-list-ethereum) | [ ] | 139 | | EIP-150 and the 63/64 Rule for Gas | Jeffrey Scholz | Mar 23, 2023 | 4 min | [Link](https://www.rareskills.io/post/eip-150-and-the-63-64-rule-for-gas) | [ ] | 140 | | Verify Signature Solidity in Foundry | Jeffrey Scholz | Mar 8, 2023 | 1 min | [Link](https://www.rareskills.io/post/openzeppelin-verify-signature) | [ ] | 141 | | Convert gas to USD (Ethereum) | Jeffrey Scholz | Mar 7, 2023 | 3 min | [Link](https://www.rareskills.io/post/convert-gas-to-usd-ethereum) | [ ] | 142 | | EIP-3448 MetaProxy Standard: Minimal Proxy with support for immutable metadata | Jeffrey Scholz | Mar 3, 2023 | 7 min | [Link](https://www.rareskills.io/post/erc-3448-metaproxy-clone) | [ ] | 143 | | Governance Contract in Solidity | Jeffrey Scholz | Feb 27, 2023 | 5 min | [Link](https://www.rareskills.io/post/governance-contract-solidity) | [ ] | 144 | | ERC20 Votes: ERC5805 and ERC6372 | Jeffrey Scholz | Feb 23, 2023 | 4 min | [Link](https://www.rareskills.io/post/erc20-votes-erc5805-and-erc6372) | [ ] | 145 | | ERC20 Snapshot | Jeffrey Scholz | Feb 22, 2023 | 5 min | [Link](https://www.rareskills.io/post/erc20-snapshot) | [ ] | 146 | | EIP-1167: Minimal Proxy Standard with Initialization (Clone pattern) | Jeffrey Scholz | Feb 21, 2023 | 5 min | [Link](https://www.rareskills.io/post/eip-1167-minimal-proxy-standard-with-initialization-clone-pattern) | [ ] | 147 | | A bootcamp with a job guarantee is a bad idea | Jeffrey Scholz | Feb 20, 2023 | 6 min | [Link](https://www.rareskills.io/post/job-guarantee-bootcamp) | [ ] | 148 | | ERC4626 Interface Explained | Jeffrey Scholz | Feb 17, 2023 | 9 min | [Link](https://www.rareskills.io/post/erc4626) | [ ] | 149 | | What makes blockchain immutable? | Jeffrey Scholz | Feb 10, 2023 | 5 min | [Link](https://www.rareskills.io/post/what-makes-blockchain-immutable) | [ ] | 150 | | Mastering Solidity: Master the Computer Science Fundamentals First | Jeffrey Scholz | Feb 8, 2023 | 15 min | [Link](https://www.rareskills.io/post/mastering-solidity-master-the-computer-science-fundamentals-first) | [ ] | 151 | | Foundry forge coverage | Jeffrey Scholz | Feb 8, 2023 | 1 min | [Link](https://www.rareskills.io/post/foundry-forge-coverage) | [ ] | 152 | | Ethereum smart contract creation code | Jeffrey Scholz | Feb 6, 2023 | 11 min | [Link](https://www.rareskills.io/post/ethereum-contract-creation-code) | [ ] | 153 | | Solidity Gasleft | Jeffrey Scholz | Feb 4, 2023 | 5 min | [Link](https://www.rareskills.io/post/solidity-gasleft) | [ ] | 154 | | Generate Ethereum Address from Private Key Python | Jeffrey Scholz | Jan 30, 2023 | 3 min | [Link](https://www.rareskills.io/post/generate-ethereum-address-from-private-key-python) | [ ] | 155 | | Smart contract creation cost | Jeffrey Scholz | Dec 31, 2022 | 5 min | [Link](https://www.rareskills.io/post/smart-contract-creation-cost) | [ ] | 156 | | Web3 Careers Websites | Jeffrey Scholz | Dec 25, 2022 | 4 min | [Link](https://www.rareskills.io/post/web3-career-websites) | [ ] | 157 | | Zero knowledge programming languages | - | Dec 22, 2022 | 8 min | [Link](https://www.rareskills.io/post/zero-knowledge-programming-language) | [ ] | 158 | | Where to find solidity reentrancy attacks | - | Dec 16, 2022 | 7 min | [Link](https://www.rareskills.io/post/where-to-find-solidity-reentrancy-attacks) | [ ] | 159 | | Leetcode problems and questions - the best 50 | nathan6119 | Dec 8, 2022 | 3 min | [Link](https://www.rareskills.io/post/best-50-leetcode-questions-to-start) | [ ] | 160 | | Solidity RSA signatures for aidrops and presales: Beating ECDSA and Merkle Trees in Gas Efficiency | Suthan Somadeva | Dec 7, 2022 | 8 min | [Link](https://www.rareskills.io/post/solidity-rsa-signatures-for-aidrops-and-presales-beating-ecdsa-and-merkle-trees-in-gas-efficiency) | [ ] | 161 | | You don’t need Solidity to work in web3 | - | Dec 6, 2022 | 7 min | [Link](https://www.rareskills.io/post/you-don-t-need-solidity-to-work-in-web3) | [ ] | 162 | | Generate a random number with Solidity on the blockchain | - | Dec 2, 2022 | 4 min | [Link](https://www.rareskills.io/post/generate-a-random-number-with-solidity-on-the-blockchain) | [ ] | 163 | | Solana Smart Contract Programming Language | Jeffrey Scholz | Dec 1, 2022 | 5 min | [Link](https://www.rareskills.io/post/solana-smart-contract-language) | [ ] | 164 | | The Solidity Engineer Salary is a Myth | Jeffrey Scholz | Nov 30, 2022 | 17 min | [Link](https://www.rareskills.io/post/don-t-study-blockchain-if-you-want-a-high-salary) | [ ] | 165 | | 9 Biggest Gas Guzzlers in Solidity on Ethereum | Jeffrey Scholz | Nov 30, 2022 | 4 min | [Link](https://www.rareskills.io/post/9-biggest-gas-guzzlers-in-solidity-on-ethereum) | [ ] | 166 | | Solidity vs Rust | Jeffrey Scholz | Nov 24, 2022 | 5 min | [Link](https://www.rareskills.io/post/solidity-vs-rust) | [ ] | 167 | | Blockchain - Top Web3 Job List | Jeffrey Scholz | Nov 21, 2022 | 5 min | [Link](https://www.rareskills.io/post/blockchain-job-tier-list) | [ ] | 168 | | The fastest and most efficient way to learn Solana (for Solidity developers) | Jeffrey Scholz | Nov 17, 2022 | 4 min | [Link](https://www.rareskills.io/post/the-fastest-and-most-efficient-way-to-learn-solana-for-solidity-developers) | [ ] | 169 | | The blockchain shortage of developers is not real. | Jeffrey Scholz | Nov 11, 2022 | 5 min | [Link](https://www.rareskills.io/post/the-blockchain-developer-shortage-is-not-real) | [ ] | 170 | | Learn Solidity: Easy to Learn, Hard to Master? | Jeffrey Scholz | Nov 8, 2022 | 3 min | [Link](https://www.rareskills.io/post/solidity-easy-to-learn-hard-to-master) | [ ] | 171 | | 11 Reasons you should sign up for RareSkills bootcamp (as a developer) | Jeffrey Scholz | Oct 17, 2022 | 5 min | [Link](https://www.rareskills.io/post/11-reasons-you-should-sign-up-for-rareskills-bootcamp-as-a-developer) | [ ] | 172 | | Is web3 a fad? 5 reasons blockchain is a real innovation. | Jeffrey Scholz | Oct 14, 2022 | 5 min | [Link](https://www.rareskills.io/post/is-web3-a-fad-5-reasons-blockchain-is-a-real-innovation) | [ ] | 173 | | Three reasons learning web3 programming will make you a better web2 developer | Jeffrey Scholz | Oct 11, 2022 | 2 min | [Link](https://www.rareskills.io/post/thee-reasons-learning-web3-programming-will-make-you-a-better-web2-developer) | [ ] | 174 | | When does learning become mastery? | Jeffrey Scholz | Oct 9, 2022 | 2 min | [Link](https://www.rareskills.io/post/when-does-learning-become-mastery) | [ ] | 175 | --------------------------------------------------------------------------------