27 | )
28 | }
29 |
--------------------------------------------------------------------------------
/content/books/build-a-blockchain-from-scratch-in-go.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Build a Blockchain from Scratch in Go"
3 | description: "Follow the story of a software developer who is looking to revolutionize his local bar by implementing blockchain technology for its payment system."
4 | authors: ["@Web3Coach"]
5 | tags: ["Cryptography"]
6 | languages: ["Go"]
7 | url: "https://web3coach.gumroad.com/l/build-a-blockchain-from-scratch-in-go"
8 | dateAdded: 2021-08-19
9 | level: "Beginner"
10 | date: 2020-06-01
11 | ---
12 |
13 | What will you build?
14 | 1) You will build a peer-to-peer system from scratch
15 | 2) You will secure the system with a day-to-day practical cryptography
16 | 3) You will implement Bitcoin and Ethereum backend components
17 | 4) You will write unit tests and integration tests for all core components
18 |
--------------------------------------------------------------------------------
/content/tutorials/tips-and-tricks-to-save-gas.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Tips and tricks to save gas"
3 | description: "Solidity tips and tricks to save gas and reduce bytecode size"
4 | authors: ["@mudit__gupta"]
5 | tags: ["Smart Contracts","EVM"]
6 | languages: ["Solidity"]
7 | url: "https://mudit.blog/solidity-tips-and-tricks-to-save-gas-and-reduce-bytecode-size/"
8 | dateAdded: 2021-09-01
9 | level: "Intermediate"
10 | date: 2019-02-16
11 | ---
12 |
13 | Solidity is a special language with many little quirks. A lot of things behave differently in Solidity than most other languages as Solidity is created to work on the EVM with its limited feature set. I wrote a blog post with ten tips to save gas in Solidity a few months back and it got a great response. Since then, I have gathered more tips and tricks to share with you all.
--------------------------------------------------------------------------------
/content/tutorials/github-in-remix-ide.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "GitHub in Remix IDE"
3 | description: "Remix release v0.18.0 now includes full support for a plugin called dGIT that allows you to interact with GitHub as if you were doing it on your terminal or in VSCode."
4 | authors: ["@EthereumRemix","@bunsenstraat"]
5 | tags: ["DevEx"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/remix-ide/github-in-remix-ide-356de378f7da"
8 | dateAdded: 2021-09-25
9 | level: "Intermediate"
10 | date: 2021-09-17
11 | ---
12 |
13 | It supports cloning, pushing ( with pushing with force), pulling, using branches, working with remotes & checking out previous commits & files. It also includes a nifty diff viewer.
14 |
15 | The app does not handle more advanced tasks such as rebasing, squashing and the like. But you should find the basics to be ample.
--------------------------------------------------------------------------------
/src/components/donate.tsx:
--------------------------------------------------------------------------------
1 | import { usePlausible } from 'next-plausible'
2 | import React from 'react'
3 | import styles from './donate.module.scss'
4 | import { Link } from './link'
5 |
6 | interface Props {
7 | className?: string
8 | }
9 |
10 | export function Donate(props: Props) {
11 | let className = `${styles.container}`
12 | if (props.className) className += ` ${props.className}`
13 |
14 | return (
15 |
16 |
💰 Support us 💰
17 |
18 | Enjoy useWeb3? Please consider donating on Gitcoin Grants.
19 |
20 | Your donation helps to keep this site running. Thank you!
21 |
22 |
23 | )
24 | }
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # useWeb3
2 |
3 | useWeb3 is a learning platform for developers to explore and learn about Web3. Whether you’re a new dev getting your hands dirty for the first time, or a seasoned developer making the transition into the Web3 space.
4 |
5 | Explore the latest resources, tutorials, challenges, tools, courses and boilerplates and start learning. Once you’re ready, browse the job board to land a job at some of the leading companies that work on core, open-source infrastructure, products, tools, frameworks, DAO's, etc.
6 |
7 | Explore. Learn. Build.
8 |
9 | https://www.useweb3.xyz/
10 |
11 | # Development
12 |
13 | First, install all packages `yarn install` and then run the development server:
14 |
15 | ```bash
16 | yarn dev
17 | ```
18 |
19 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
--------------------------------------------------------------------------------
/src/components/link.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from 'react'
2 | import { default as NextLink } from 'next/link'
3 |
4 | interface LinkProps {
5 | href: string
6 | className?: string
7 | children: ReactNode
8 | }
9 |
10 | export function Link(props: LinkProps) {
11 | const className = props.className ?? ''
12 | const isExternal = props.href.match(/^([a-z0-9]*:|.{0})\/\/.*$/)
13 |
14 | if (isExternal) {
15 | return (
16 |
22 | {props.children}
23 |
24 | )
25 | }
26 |
27 | return (
28 |
29 | {props.children}
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/content/movies/trust-machine-the-story-of-blockchain.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Trust Machine: The Story of Blockchain"
3 | description: "TRUST MACHINE is the first blockchain-funded, blockchain-distributed, and blockchain-focused documentary, from entertainment tech company SingularDTV and Futurism Studios."
4 | authors: ["Alex Winter"]
5 | tags: []
6 | languages: []
7 | url: "https://www.imdb.com/title/tt7407496/"
8 | dateAdded: 2021-11-05
9 | level: "All"
10 | ---
11 |
12 | TRUST MACHINE is the first blockchain-funded, blockchain-distributed, and blockchain-focused documentary, from entertainment tech company SingularDTV and Futurism Studios. The feature documentary explores the evolution of cryptocurrency, blockchain and decentralization, including the technology's role in addressing important real-world problems, such as world hunger and income inequality.
--------------------------------------------------------------------------------
/src/utils/helpers.ts:
--------------------------------------------------------------------------------
1 | import { DEFAULT_REVALIDATE_PERIOD } from "./constants"
2 |
3 | export function getLevelStyle(tag: string) {
4 | if (tag === 'All') return 'info'
5 | if (tag === 'Beginner') return 'success'
6 | if (tag === 'Intermediate') return 'warning'
7 | if (tag === 'Advanced') return 'error'
8 |
9 | return undefined
10 | }
11 |
12 | export function isCacheExpired(map: Map, key: string) {
13 | const [, timestamp] = map.get(key)
14 |
15 | return (Date.now() - timestamp) / 1000 > DEFAULT_REVALIDATE_PERIOD
16 | }
17 |
18 | export function removeHtml(value: string) {
19 | if (!value) return value
20 |
21 | // removes html. breaks/newlines. replaces multiple spaces with a single space.
22 | return value.replace(/<[^>]*>?/gm, '').replace(/(\r\n|\n|\r)/gm, ' ').replace(/\s\s+/g, ' ')
23 | }
--------------------------------------------------------------------------------
/content/podcasts/signal.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "SIGNAL"
3 | description: "a podcast to empower the technology ecosystem through stories from the people that are participating in the next generation of the internet."
4 | authors: ["@ConsenSys"]
5 | tags: ["Web3"]
6 | languages: ["Solidity"]
7 | url: "https://signal-by-consensys.simplecast.com/"
8 | dateAdded: 2021-08-18
9 | level: "All"
10 | ---
11 |
12 | ConsenSys, the market-leading blockchain technology company, presents "SIGNAL," a podcast to empower the technology ecosystem through stories from the people that are participating in the next generation of the internet. Hear from the most captivating Ethereum insiders—from technologists and entrepreneurs to designers and creatives from all around the world—and join us for inspiring conversations on the future of finance, crypto, and what's making the Web3 world.
--------------------------------------------------------------------------------
/content/tutorials/understanding-solidity-design-patterns.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Understanding Solidity Design Patterns"
3 | description: "In this tutorial series we'll talk about design patterns in solidity, where to use them."
4 | authors: ["@__tirtha__"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://hackernoon.com/solidity-tutorial-understanding-design-patterns-part-1"
8 | dateAdded: 2021-10-09
9 | level: "Intermediate"
10 | date: 2021-10-07
11 | ---
12 |
13 | With the rising demand of blockchain developers, developers want to master the art of smart contracts. In this tutorial series we'll talk about design patterns in solidity, where to use them. In this first part, our focus is on "Authorization Patterns". To make sure unwanted parties don't access important features on your smart contract, we'll learn four popular ways to do that.
--------------------------------------------------------------------------------
/content/starter-kits/usedapp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "useDapp"
3 | description: "Framework for rapid Dapp development. Simple. Robust. Extendable. Testable"
4 | authors: ["@ethworks"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://github.com/EthWorks/useDApp"
8 | featured: true
9 | dateAdded: 2021-09-16
10 | level: "All"
11 | ---
12 |
13 | Introduces great features:
14 |
15 | - React hooks - Uses React hooks as your primary building ingredient
16 | - Auto refresh - Refreshes on a new block, wallet change or network change
17 | - Multicall - Combines multiple blockchain calls into a single multicall
18 |
19 | Combines the best practices:
20 | - Modern stack - Employs ethers.js, web3-react, multicall & waffle
21 | - Extendability - Extends easily with custom hooks
22 | - Testability - Simple integration tests for UI and blockchain
--------------------------------------------------------------------------------
/content/tutorials/arbitrum-tutorials.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Arbitrum Tutorials"
3 | description: "This monorepo will help you get started with building on Arbitrum. It provides various simple demos showing and explaining how to interact with Arbitrum"
4 | authors: ["@arbitrum"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: []
7 | url: "https://github.com/OffchainLabs/arbitrum-tutorials"
8 | dateAdded: 2022-01-15
9 | level: "Intermediate"
10 | ---
11 |
12 | This monorepo will help you get started with building on Arbitrum. It provides various simple demos showing and explaining how to interact with Arbitrum — deploying and using contracts directly on L2, moving Ether and tokens betweens L1 and L2, and more.
13 |
14 | We show how you can use broadly supported Ethereum ecosystem tooling (Hardhat, Ethers-js, etc.) as well as our special arb-ts library for convenience.
--------------------------------------------------------------------------------
/content/tutorials/deposit-and-withdrawal-on-optimistic-ethereum.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Deposit and withdrawal on Optimistic Ethereum"
3 | description: "This tutorial demonstrates how you can use existing Standard bridge infrastructure to deposit and withdraw ERC20 balance between the layers."
4 | authors: ["@optimismPBC"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: ["JavaScript"]
7 | url: "https://github.com/ethereum-optimism/optimism-tutorial/tree/main/l1-l2-deposit-withdrawal"
8 | dateAdded: 2022-01-15
9 | level: "Intermediate"
10 | ---
11 |
12 | This tutorial demonstrates how you can use existing Standard bridge infrastructure to deposit and withdraw ERC20 balance between the layers. For the purpose we are making use of the Standard Bridge architecture and creating a sample ERC20 on L1 and its respective representation using the standard token L2StandardERC20 on L2.
--------------------------------------------------------------------------------
/content/tutorials/a-python-guide-to-ethereum-pt-1.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "A Python Guide to Ethereum, Pt. 1"
3 | description: "This post will cover some blockchain basics, then get you interacting with a simulated Ethereum node using Python"
4 | authors: ["@wolovim"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","Python"]
7 | url: "https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | date: 2020-09-08
11 | ---
12 |
13 | So, you’ve heard about this Ethereum thing and are ready to venture down the rabbit hole? This post will quickly cover some blockchain basics, then get you interacting with a simulated Ethereum node – reading block data, checking account balances, and sending transactions. Along the way, we’ll highlight the differences between traditional ways of building apps and this new decentralized paradigm.
--------------------------------------------------------------------------------
/src/components/featured.tsx:
--------------------------------------------------------------------------------
1 | import { ReactNode } from 'react'
2 | import styles from './featured.module.scss'
3 | import { Link } from './link'
4 |
5 | interface Props {
6 | title?: string
7 | link?: string
8 | type?: 'grid' | 'rows'
9 | className?: string
10 | children: ReactNode
11 | }
12 |
13 | export function Featured(props: Props) {
14 | let className = `${styles.container}`
15 | if (props.className) className += ` ${props.className}`
16 | let type = styles.grid
17 | if (props.type) type = styles[props.type]
18 |
19 | return (
20 |
21 |
22 | {props.title &&
{props.title}
}
23 | {props.link && view all}
24 |
25 |
{props.children}
26 |
27 | )
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/newsletter.module.scss:
--------------------------------------------------------------------------------
1 | @use 'assets/styles/variables.scss' as *;
2 |
3 | .container {
4 | h3 {
5 | margin-bottom: $gap-16;
6 | }
7 |
8 | border-radius: $gap-8;
9 | background: $color-primary-100;
10 | padding: $gap-16 $gap-40;
11 | text-align: center;
12 |
13 | @media (max-width: $screen-640) {
14 | padding: $gap-16 $gap-16;
15 | }
16 |
17 | .row {
18 | display: flex;
19 | justify-content: center;
20 | flex-wrap: nowrap;
21 |
22 | input {
23 | padding: $gap-8;
24 | margin-right: $gap-8;
25 | width: 100%;
26 | outline: none;
27 | }
28 |
29 | @media (max-width: $screen-480) {
30 | flex-wrap: wrap;
31 |
32 | input {
33 | margin-right: 0;
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/hooks/useOnOutsideClick.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect, RefObject } from 'react'
2 |
3 | type AnyEvent = MouseEvent | TouchEvent
4 |
5 | export const useOnOutsideClick = (ref: RefObject, handler: (event: AnyEvent) => void) => {
6 | useEffect(() => {
7 | const listener = (event: AnyEvent) => {
8 | const el = ref?.current
9 | if (!el || el.contains(event.target as Node)) {
10 | return
11 | }
12 |
13 | handler(event)
14 | }
15 |
16 | document.addEventListener(`mousedown`, listener)
17 | document.addEventListener(`touchstart`, listener)
18 |
19 | return () => {
20 | document.removeEventListener(`mousedown`, listener)
21 | document.removeEventListener(`touchstart`, listener)
22 | }
23 | }, [ref, handler])
24 | }
25 |
--------------------------------------------------------------------------------
/content/tutorials/deploy-a-contract-with-brownie.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Deploy a contract with Brownie"
3 | description: "How to deploy a smart contract with Brownie"
4 | authors: ["@sensahil","@QuickNode"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity","Python"]
7 | url: "https://www.quicknode.com/guides/web3-sdks/how-to-deploy-a-smart-contract-with-brownie"
8 | dateAdded: 2021-08-20
9 | level: "Beginner"
10 | date: 2021-07-24
11 | ---
12 |
13 | Python is one of the most versatile programming languages; from researchers running their test models to developers using it in heavy production environments, it has use cases in every possible technical field. In today's guide, we will learn about Brownie, a Python-based tool used to write and deploy smart contracts.
14 |
15 | Prerequisites
16 | - Python3 installed
17 | - Ethereum node
18 | - Text editor
19 | - Command-line
20 | - Love for brownies
--------------------------------------------------------------------------------
/.github/workflows/random-resource.yml:
--------------------------------------------------------------------------------
1 | name: Random Resource tweet
2 |
3 | on:
4 | schedule:
5 | - cron: "30 15 * * *"
6 |
7 | jobs:
8 | build:
9 | name: Tweet random resource
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout Repo
13 | uses: actions/checkout@master
14 | - name: Use Node.js
15 | uses: actions/setup-node@v1
16 | with:
17 | node-version: '16.x'
18 | - name: Install Dependencies
19 | run: yarn install
20 | - name: Run Twitter bot
21 | run: yarn twitter:random
22 | env:
23 | TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
24 | TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
25 | TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
26 | TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
27 |
--------------------------------------------------------------------------------
/content/starter-kits/next-web3-boilerplate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Next Web3 boilerplate"
3 | description: "Slightly opinionated Web3 boilerplate based on Next.js and SWR"
4 | authors: ["@mirshko"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://github.com/mirshko/next-web3-boilerplate"
8 | dateAdded: 2021-09-16
9 | level: "All"
10 | ---
11 |
12 | This is a default Next.js project bootstrapped with create-next-app, customized as the default boilerplate for new Web3 projects.
13 |
14 | Features
15 | - Separate packages from ethers.js for improved tree-shaking, often only ethers Contracts
16 | - Hooks-first approach to fetching and caching data from Contracts and memoization for performance with SWR
17 | - web3-react for ease of connecting to Web3 providers with a solid API
18 | - Auto-generates types for the contract ABIs in the /contracts folder via TypeChain
--------------------------------------------------------------------------------
/content/videos/how-to-write-a-solidity-contract-pt1.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "How To Write a Solidity Contract pt1"
3 | description: "This is a step-by-step introductory tutorial that will teach you how to create and deploy a smart contract on Ethereum"
4 | authors: ["@AlchemyPlatform","@thatguyintech"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://youtu.be/g73EGNKatDw"
8 | dateAdded: 2021-10-16
9 | level: "Beginner"
10 | date: 2021-10-12
11 | ---
12 |
13 | If you are new to blockchain development and don’t know where to start, or if you just want to understand how to deploy and interact with smart contracts, this guide is for you. We will walk through creating and deploying a simple smart contract on the Ropsten test network using a virtual wallet (Metamask), Solidity, Hardhat and Truffle, and Alchemy (don’t worry if you don’t understand what any of this means yet, we will explain it!).
--------------------------------------------------------------------------------
/content/videos/integrate-react-js-with-smart-contracts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Integrate React.js with Smart Contracts"
3 | description: "Learn how to read and display data from smart contracts, issue or sign new transactions and listen to events."
4 | authors: ["@ArtiChmaro"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://youtu.be/38WUVVoMZKM"
8 | dateAdded: 2021-11-22
9 | level: "Intermediate"
10 | date: 2021-11-21
11 | ---
12 |
13 | 0:00:00 - Intro
14 | 0:02:00 - ERC20 deploy
15 | 0:06:00 - What is ABI?
16 | 0:08:00 - Read data from smart contract (ethers)
17 | 0:15:00 - Run contract function from React.js app
18 | 0:20:10 - Listen to events emitted from contract
19 | 0:25:00 - Use same code for other contract (DAI)
20 |
21 |
22 | In this video, I used ERC20 as an example. You can find code here:
23 | https://codesandbox.io/s/react-write-read-smart-contracts-shtjf
24 |
25 |
--------------------------------------------------------------------------------
/content/tutorials/how-to-wrap-your-ethers-contracts-in-svelte-stores-.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "How to wrap your ethers contracts in svelte stores."
3 | description: "This week I tried to find the best way to interact with ethers contract. I think I kinda find the sweet spot."
4 | authors: ["@chiuzon"]
5 | tags: ["Dapp"]
6 | languages: []
7 | url: "https://chiuzon.medium.com/how-to-wrap-your-ethers-contracts-in-svelte-stores-7ce81d6234b3"
8 | dateAdded: 2021-11-25
9 | level: "Beginner"
10 | date: 2021-11-25
11 | ---
12 |
13 | This week I tried to find the best way to interact with ethers contract. I think I kinda find the sweet spot.
14 |
15 | For instancing I found that derived stores are the best, in theory your store is going to subscribe to your provider store and when the provider updates the contract is going to be re instanced with the signer instead of the json provider, if you don’t need to login with Metamask...
--------------------------------------------------------------------------------
/content/tutorials/the-complete-guide-to-full-stack-ethereum-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "The Complete Guide to Full Stack Ethereum Development"
3 | description: "Building Full Stack dApps with React, Ethers.js, Solidity, and Hardhat"
4 | authors: ["@dabit3"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13"
8 | featured: true
9 | dateAdded: 2021-08-17
10 | level: "Beginner"
11 | date: 2021-04-09
12 | ---
13 |
14 | I recently joined Edge & Node as a Developer Relations Engineer and have been diving deeper into smart contract development with Ethereum. I have settled upon what I think is the best stack for building full stack dApps with Solidity:
15 |
16 | ▶︎ Client Framework - React
17 | ▶︎ Ethereum development environment - Hardhat
18 | ▶︎ Ethereum Web Client Library - Ethers.js
19 | ▶︎ API layer - The Graph Protocol
--------------------------------------------------------------------------------
/content/tutorials/lessons-from-creating-a-web3-app.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Lessons from creating a Web3 app"
3 | description: "An introduction to blockchain, smart contracts, and decentralized apps."
4 | authors: ["@camiinthisthang"]
5 | tags: ["Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://camiinthisthang.hashnode.dev/wthisweb3"
8 | dateAdded: 2021-10-02
9 | level: "Beginner"
10 | date: 2021-09-28
11 | ---
12 |
13 | I'd been hearing a lot about Web3 and reluctantly did a deep dive on it over the weekend. What really caught my eye is the idea of decentralizing the control and ownership that currently only a few companies have.
14 |
15 | In the Web3 world, this wouldn't happen because of the decentralized nature of Web3 applications, no single entity on the network can block anyone from submitting transactions, taking away control to dictate what is and isn't allowed away from payment processors and the entities that govern them.
--------------------------------------------------------------------------------
/content/books/hands-on-smart-contract-development-with-solidity-and-ethereum-from-fundamentals-to-deployment.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Hands-On Smart Contract Development with Solidity and Ethereum: From Fundamentals to Deployment"
3 | description: "It's the perfect resource for people who want to break into the smart contract field but don't know where to start."
4 | authors: ["@Kevinsolorio","@randallkanna"]
5 | tags: ["Smart Contracts","Dapp","EVM"]
6 | languages: []
7 | url: "https://amzn.to/3Fai5Tq"
8 | dateAdded: 2021-12-31
9 | level: "Beginner"
10 | date: 2016-09-23
11 | ---
12 |
13 | Ready to dive into smart contract development for the blockchain? With this practical guide, experienced engineers and beginners alike will quickly learn the entire process for building smart contracts for Ethereum--the open source blockchain-based distributed computing platform. You'llget up to speed with the fundamentals and quickly move into builder mode.
--------------------------------------------------------------------------------
/content/tutorials/learn-x-in-y-minutes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Learn X in Y minutes"
3 | description: "Where X=Solidity"
4 | authors: ["@nemild"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://learnxinyminutes.com/docs/solidity/"
8 | dateAdded: 2021-09-20
9 | level: "Beginner"
10 | ---
11 |
12 | Solidity lets you program on Ethereum, a blockchain-based virtual machine that allows the creation and execution of smart contracts, without requiring centralized or trusted parties.
13 |
14 | Solidity is a statically typed, contract programming language that has similarities to Javascript and C. Like objects in OOP, each contract contains state variables, functions, and common data types. Contract-specific features include modifier (guard) clauses, event notifiers for listeners, and custom global variables.
15 |
16 | Some Ethereum contract examples include crowdfunding, voting, decentralized finance, and blind auctions.
--------------------------------------------------------------------------------
/content/tutorials/hello-world-smart-contract.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Hello World Smart Contract"
3 | description: "This is a step-by-step introductory tutorial that will teach you how to create and deploy a smart contract on Ethereum"
4 | authors: ["@AlchemyPlatform","@thatguyintech","@0xElan"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/"
8 | dateAdded: 2021-10-16
9 | level: "Beginner"
10 | date: 2021-10-12
11 | ---
12 |
13 | If you are new to blockchain development and don’t know where to start, or if you just want to understand how to deploy and interact with smart contracts, this guide is for you. We will walk through creating and deploying a simple smart contract on the Ropsten test network using a virtual wallet (Metamask), Solidity, Hardhat and Truffle, and Alchemy (don’t worry if you don’t understand what any of this means yet, we will explain it!).
--------------------------------------------------------------------------------
/content/starter-kits/create-eth-app.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Create Eth App"
3 | description: "Create Ethereum-powered apps with one command"
4 | authors: ["@PaulRBerg","@TomFrench_eth","@0xKaden"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://github.com/paulrberg/create-eth-app"
8 | featured: true
9 | dateAdded: 2021-09-16
10 | level: "All"
11 | ---
12 |
13 | Create Eth App supports multiple frontend frameworks. It comes with a host of decentralized finance templates pre-filled with contract ABIs, addresses and subgraphs. Everything you need to build a modern Ethereum-powered single-page app.
14 |
15 | - Learning how to write Ethereum-powered apps in a comfortable and feature-rich development environment.
16 | - Starting new Ethereum-powered single-page React applications without wasting time on copy-pasting boilerplates
17 | - Creating examples with React for your Ethereum-related libraries and components.
--------------------------------------------------------------------------------
/content/books/building-ethereum-dapps-decentralized-applications-on-the-ethereum-blockchain.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Building ethereum dapps decentralized applications on the ethereum blockchain"
3 | description: "In this book, you'll learn the principles of Dapps development by rolling up your sleeves and actually building a few!"
4 | authors: ["@Robertinfante"]
5 | tags: ["Dapp","Smart Contracts"]
6 | languages: []
7 | url: "https://amzn.to/3f22DhQ"
8 | dateAdded: 2021-12-31
9 | level: "All"
10 | date: 2017-02-10
11 | ---
12 |
13 | Building Ethereum Dapps teaches Dapps development on the Ethereum blockchain platform. You'll begin with a mental model of how Dapps operate, and then dive into designing and implementing smart contracts in Ethereum's Solidity language. You'll explore Ethereum smart contract development tools, like Truffle and Web3, and pick up best practices for design and security. Practical exercises throughout give you valuable hands-on experience.
--------------------------------------------------------------------------------
/content/courses/chainshot.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "ChainShot"
3 | description: "Fast-track your Ethereum Developer career in an instructor-led and challenging bootcamp focused on discussion and application!"
4 | authors: ["@TeamChainShot"]
5 | tags: ["Smart Contracts","Dapp","EVM"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://www.chainshot.com/"
8 | featured: true
9 | dateAdded: 2021-08-11
10 | level: "Beginner"
11 | ---
12 |
13 | Blockchain is an exciting new discipline in Computer Science. It combines a wide array of skills from math and cryptography to social sciences and understanding organizations. Understanding blockchain decentralization and how/where to apply it is a brand new skill that very few have mastered.
14 |
15 | You will build your skills from the ground up with strong fundamentals that will provide you with the ability to adapt in this rapidly evolving ecosystem.
16 |
17 | Choose From Multiple Paths to Begin Your Ethereum Coding Journey.
--------------------------------------------------------------------------------
/content/tutorials/smtchecker-almost-practical-superpower.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "SMTChecker: (almost) practical superpower"
3 | description: "A tool that performs formal verification of your contract: you define a specification and SMTChecker formally proves that the contract conforms to the spec."
4 | authors: ["@owpckcr"]
5 | tags: ["Security","Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/@sblowpckcr/smtchecker-almost-practical-superpower-5a3efdb3cf19"
8 | dateAdded: 2021-09-01
9 | level: "Advanced"
10 | date: 2021-08-31
11 | ---
12 |
13 | Would you bet your firstborn that the contract you just deployed doesn’t have critical vulnerabilities? If you’re like me, the answer is a resounding ‘no’.
14 | I’ve seen enough hacks in traditional software engineering to know that you can never be 100% sure. That is scary, but a combination of different techniques can get us pretty close to the desired level of confidence. SMTChecker is one of them.
--------------------------------------------------------------------------------
/.github/workflows/top-resources.yml:
--------------------------------------------------------------------------------
1 | name: Top Resources tweet
2 |
3 | on:
4 | schedule:
5 | - cron: "0 15 * * 5"
6 |
7 | jobs:
8 | build:
9 | name: Tweet most popular resources
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout Repo
13 | uses: actions/checkout@master
14 | - name: Use Node.js
15 | uses: actions/setup-node@v1
16 | with:
17 | node-version: '16.x'
18 | - name: Install Dependencies
19 | run: yarn install
20 | - name: Run Twitter bot
21 | run: yarn twitter:top
22 | env:
23 | PLAUSIBLE_API_KEY: ${{ secrets.PLAUSIBLE_API_KEY }}
24 | TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
25 | TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
26 | TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
27 | TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
28 |
--------------------------------------------------------------------------------
/.github/workflows/most-popular.yml:
--------------------------------------------------------------------------------
1 | name: Most Popular tweet
2 |
3 | on:
4 | schedule:
5 | - cron: "0 15 * * 0"
6 |
7 | jobs:
8 | build:
9 | name: Tweet most popular categories
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout Repo
13 | uses: actions/checkout@master
14 | - name: Use Node.js
15 | uses: actions/setup-node@v1
16 | with:
17 | node-version: '16.x'
18 | - name: Install Dependencies
19 | run: yarn install
20 | - name: Run Twitter bot
21 | run: yarn twitter:popular
22 | env:
23 | PLAUSIBLE_API_KEY: ${{ secrets.PLAUSIBLE_API_KEY }}
24 | TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
25 | TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
26 | TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
27 | TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
28 |
--------------------------------------------------------------------------------
/src/components/authors.tsx:
--------------------------------------------------------------------------------
1 | import styles from './authors.module.scss'
2 | import { Link } from './link'
3 |
4 | interface Props {
5 | authors: Array
6 | className?: string
7 | }
8 |
9 | export function Authors(props: Props) {
10 | let className = `${styles.container}`
11 | if (props.className) className += ` ${props.className}`
12 |
13 | return (
14 |
27 | )
28 | }
29 |
--------------------------------------------------------------------------------
/src/components/dropdown.module.scss:
--------------------------------------------------------------------------------
1 | @use 'assets/styles/variables.scss' as *;
2 |
3 | .container {
4 | position: relative;
5 | z-index: 2;
6 | margin: 0;
7 | padding: 0;
8 |
9 | .selected {
10 | display: flex;
11 | justify-content: space-between;
12 | margin: 4px $gap-8;
13 |
14 | p {
15 | margin: 0;
16 | padding: 0;
17 | }
18 | }
19 |
20 | .dropdown {
21 | list-style-type: none;
22 | position: absolute;
23 | width: 100%;
24 | background: #FFFFFF;
25 | border: 2px solid var(--block-text-color);
26 | border-radius: $gap-8;
27 | margin-top: $gap-8;
28 |
29 | li {
30 | padding: $gap-8;
31 | position: relative;
32 |
33 | &:hover {
34 | background: $color-neutral-100;
35 | border-radius: $gap-8;
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/content/tutorials/get-to-know-ethereum-calldata.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Get to know Ethereum Calldata"
3 | description: "This article explain what Ethereum Calldata is and how it's structured."
4 | authors: ["@jeantnd"]
5 | tags: ["Dapp","Smart Contracts","EVM"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/laika-lab/get-to-know-ethereum-calldata-72f65e8bffef"
8 | dateAdded: 2022-01-13
9 | level: "Intermediate"
10 | date: 2022-01-14
11 | ---
12 |
13 | Have you ever wondered what lies under the hood of the Ethereum network? How the transaction is made. How the data was passing around. And what is it made of?
14 |
15 | This blog is intended to be a very basic introduction to how to look at Ethereum Calldata (Or any other EVM based Calldata) we're going to look at how it structures, what it keeps, and how it can be categorized into what ways.
16 |
17 | The highlight of this article is we will also be revealing how to generate Ethereum Calldata without writing a single line of code - the Laika🐶 way!
--------------------------------------------------------------------------------
/content/tutorials/optimizing-your-contracts-gas-usage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Optimizing your contract’s gas usage"
3 | description: "We will look into tuning and optimizing our Solidity contract to minimize the amount of gas required."
4 | authors: ["@cipherzzz"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/coinmonks/optimizing-your-solidity-contracts-gas-usage-9d65334db6c7"
8 | dateAdded: 2021-09-01
9 | level: "Intermediate"
10 | date: 2018-04-05
11 | ---
12 |
13 | As everyone in the Ethereum community knows, Gas is a necessary evil for the execution of smart contracts. If you specify too little, your transaction may not get picked up for processing in a timely manner — or, die in the middle of processing a smart contract action. That being said, a smart contract should not be greedy or loose with the valuable resources that the users entrust to them. It is for this reason that we will look into tuning and optimizing our contract to minimize the amount of gas required.
--------------------------------------------------------------------------------
/content/videos/using-and-building-on-arbitrum.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Using and building on Arbitrum"
3 | description: "Arbitrum is a L2 scaling solution for Ethereum. In this tutorial we will be looking at how optimistic roll ups work, deploying a contract and then carrying out a swap on L2."
4 | authors: ["@james_bachini"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://youtu.be/d4EgugQLZqs"
8 | dateAdded: 2022-01-15
9 | level: "Intermediate"
10 | ---
11 |
12 | Arbitrum is a layer 2 scaling solution for the Ethereum network. In this tutorial we will be looking at how optimistic roll ups work, deploying a smart contract to Arbitrum and then carrying out a token swap on layer 2 using Uniswap.
13 |
14 | 00:00 What Is Arbitrum?
15 | 00:23 How Optimistic Rollups Work
16 | 02:00 Arbitrum Rinkeby
17 | 02:48 Arbitrum Token Bridge
18 | 04:44 Setting Up Truffle
19 | 06:54 Deploy To Arbitrum
20 | 07:36 Developer Notes
21 | 08:26 Uniswap On Arbitrum
22 | 09:33 Conclusion
--------------------------------------------------------------------------------
/content/videos/ultimate-introduction-to-ethereum-dapp-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Ultimate Introduction to Ethereum Ðapp Development"
3 | description: "A 24 part screencast series outlining everything you need to know in order to get started building Ðapps in Ethereum."
4 | authors: ["@AlwaysBCoding"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://www.youtube.com/playlist?list=PLV1JDFUtrXpFh85G-Ddyy2kLSafaB9biQ"
8 | dateAdded: 2021-08-16
9 | level: "Beginner"
10 | date: 2016-11-16
11 | ---
12 |
13 | A 24 part screencast series outlining everything you need to know in order to get started building Ðapps in Ethereum. The series covers creating an Ethereum development environment, how to use various Javascript libraries to interact with the Ethereum protocol, simple ways to send transactions to the main Ethereum network, how to write and test smart contracts, how to run your own Ethereum node, how to mine Ether, adventures into undergraduate computer science, and more.
--------------------------------------------------------------------------------
/content/tutorials/starks-scaling-decentralized-games.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "STARKs: Scaling decentralized games"
3 | description: "Verifying complex auto battler calculation on Ethereum"
4 | authors: ["@Qhuesten"]
5 | tags: ["Smart Contracts","Scalability","Cryptography"]
6 | languages: ["Cairo"]
7 | url: "https://killari.medium.com/starks-verifying-a-complex-auto-battler-calculation-on-ethereum-d8698f29808d"
8 | dateAdded: 2021-11-23
9 | level: "Advanced"
10 | date: 2021-10-06
11 | ---
12 |
13 | Executing complex functions on chain Ethereum has always been a big no-no, something that you should never do. Blockchain computation is very expensive as all the nodes are needed to execute the same calculation to verify its correctness.
14 |
15 | StarkWare is one of the Ethereum scaling services that is attempting to scale Ethereum using STARKs (Scalable Transparent ARgument of Knowledge) proofs. I will not go too deep into how STARKs work in this blogpost, but I am going to give a practical overview on how they can be used in practice.
--------------------------------------------------------------------------------
/content/tutorials/recovering-assets-with-flashbots.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Recovering Assets with Flashbots"
3 | description: "Flashbots Auction is awesome. It allows advanced Ethereum users to do things that were once practically impossible"
4 | authors: ["@KaneWallmann"]
5 | tags: ["Smart Contracts","Security","MEV"]
6 | languages: []
7 | url: "https://medium.com/@kanewallmann_71759/recovering-assets-from-a-hacked-account-with-flashbots-bfe920435fb6"
8 | dateAdded: 2021-11-20
9 | level: "Advanced"
10 | date: 2021-11-13
11 | ---
12 |
13 | Flashbots Auction is awesome. It allows advanced Ethereum users to do things that were once practically impossible (at least for those of us who don’t operate several large Ethereum mining pools). With all the attention around MEV extraction bots, I’d forgive you for thinking that’s the only thing it’s good for. But this week I used it to recover a bag of ENS tokens (worth around $13k USD at the time) from a hacked account and returned them to their rightful owner. Sound like fun? Here’s how I did it.
--------------------------------------------------------------------------------
/content/tutorials/eip-2535-diamond-standard.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "EIP-2535 Diamond standard"
3 | description: "EIP-2535: A standard for organizing and upgrading a modular smart contract system."
4 | authors: ["@gorgos"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://soliditydeveloper.com/eip-2535"
8 | dateAdded: 2021-10-24
9 | level: "Advanced"
10 | date: 2021-10-16
11 | ---
12 |
13 | The EIP-2535 standard has several projects already using it, most notably Aavegotchi holding many millions of dollars.
14 |
15 | What is it and should you use it instead of the commonly used proxy upgrade pattern?
16 |
17 | We're not talking about diamond programmer hands here of course. A diamond refers to a smart contract system where functionality and storage is split up into separate contracts. You might already be familiar with the upgrade proxy pattern. It shares some similarities to a diamond. In short to fix the problem of smart contracts not being upgradable due to their immutability, a proxy pattern deploys two contracts.
--------------------------------------------------------------------------------
/content/courses/get-started-with-blockchain-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Get started with blockchain development"
3 | description: "This learning path introduces you to blockchain and development on Ethereum. Discover what skills are necessary to learn to begin building your own blockchain networks at scale."
4 | authors: ["@Microsoft"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://docs.microsoft.com/en-us/learn/paths/ethereum-blockchain-development/"
8 | dateAdded: 2021-08-18
9 | level: "Beginner"
10 | ---
11 |
12 | This learning path introduces you to blockchain and development on the Ethereum platform. Discover what skills are necessary to learn to begin building your own blockchain networks at scale.
13 |
14 | In this learning path, you will:
15 |
16 | - Learn the foundations of blockchain and how blockchain technology works.
17 | - Gain an understanding of the tools to develop on the Ethereum blockchain.
18 | - Create smart contracts and decentralized applications.
19 | - Deploy to local and test Ethereum networks.
--------------------------------------------------------------------------------
/content/tutorials/become-a-smart-contract-auditor.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Become a smart contract auditor"
3 | description: "This guide provides a path on how to get started as a smart contract security auditor."
4 | authors: ["@cmichelio"]
5 | tags: ["Smart Contracts","Security","EVM"]
6 | languages: []
7 | url: "https://cmichel.io/how-to-become-a-smart-contract-auditor/"
8 | dateAdded: 2021-11-15
9 | level: "Intermediate"
10 | date: 2021-10-30
11 | ---
12 |
13 | From time to time, I receive messages asking me for advice on how to get started as a smart contract security auditor. While there are already articles written about this topic, most of them are just a collection of security-related articles which they throw at beginners, overwhelming them. I’ll provide a path that I would take if I had to do it all over again. This will be ETH specific (or more general EVM-specific) as most auditing work is currently still in this ecosystem.
14 |
15 | At the end, I’ll also go over frequently asked questions that are related to auditing and getting your first job.
--------------------------------------------------------------------------------
/content/movies/the-infinite-machine-movie.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "The Infinite Machine - movie"
3 | description: "The Infinite Machine tells the riveting true story of the creation of Ethereum, the second-largest cryptocurrency and most active blockchain network"
4 | authors: ["@CamiRusso"]
5 | tags: []
6 | languages: []
7 | url: "https://www.theinfinitemachinemovie.com/"
8 | dateAdded: 2021-11-30
9 | level: "All"
10 | ---
11 |
12 | The Ethereum movie will leverage Ethereum technology, more specifically, non-fungible tokens, to help finance the film and transform its audience from passive expectators, into active participants.
13 |
14 | 40 emerging artists from developing nations where crypto is life-changing have come together to showcase their interpretation of the Ethereum logo for a collection of 10,499 unique NFTs, to be sold in the coming weeks.
15 |
16 | NFT holders will be bound by the token, forming a community that is united by the belief in a more decentralized future powered by ETH. Token holders will get access to exclusive perks and further drops.
--------------------------------------------------------------------------------
/content/tutorials/making-dapps-using-svelteweb3.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Making DAPPs using SvelteWeb3"
3 | description: "My web3 experience started from Svelte but because I didn’t know how to use the window[‘ethereum’] global had to move to React so I could use the web3-react library."
4 | authors: ["@chiuzon"]
5 | tags: ["Dapp"]
6 | languages: ["Vyper"]
7 | url: "https://chiuzon.medium.com/enjoy-making-dapps-using-svelteweb3-b78dfea1d902"
8 | dateAdded: 2021-11-15
9 | level: "Intermediate"
10 | date: 2021-11-14
11 | ---
12 |
13 | My web3 experience started from Svelte but because I didn’t know how to use the window[‘ethereum’] global had to move to React so I could use the web3-react library. I got tired of writing useEffect() so I taught how hard will be to make a library like web3-react but for svelte. It wasn’t exactly that hard, I don’t know why no one did it before me.
14 |
15 | SvelteWeb3 is an adapter for web3-react connectors, at first I wanted to make my own connectors but after some thinking I realized that would be useless and it would add more dependencies.
--------------------------------------------------------------------------------
/content/tutorials/erc20-token-standard.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "ERC20 token standard"
3 | description: "Understand the ERC20 token smart contract"
4 | authors: ["@ethereumdevio"]
5 | tags: ["DeFi","Smart Contracts"]
6 | languages: []
7 | url: "https://ethereumdev.io/understand-the-erc20-token-smart-contract/"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | date: 2020-04-05
11 | ---
12 |
13 | One of the most significant smart contract standard on Ethereum is known as ERC-20, which has emerged as the technical standard used for all smart contracts on the Ethereum blockchain for fungible token implementations.
14 |
15 | The ERC-20 defines a common list of rules that all Ethereum tokens must adhere to. Consequently, this token standard empowers developers of all types to accurately predict how new tokens will function within the larger Ethereum system. This simplifies and eases developers’ tasks, because they can proceed with their work, knowing that each and every new project won’t need to be redone every time a new token is released, as long as the token follows the rules.
--------------------------------------------------------------------------------
/src/components/fab.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import styles from "./fab.module.scss";
3 | export interface IFabProps {
4 | className?: string;
5 | }
6 |
7 | export default function Fab(
8 | props: IFabProps &
9 | React.DetailedHTMLProps<
10 | React.ButtonHTMLAttributes,
11 | HTMLButtonElement
12 | >
13 | ) {
14 | const { className, ...rest } = props;
15 | let className_ = `block ${styles.fab}`;
16 | if (className) className_ += ` ${className}`;
17 |
18 | return (
19 |
36 | );
37 | }
38 |
--------------------------------------------------------------------------------
/content/tutorials/events-logging-in-solidity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Events & Logging in solidity"
3 | description: "Solidity events are integral for smart contract devs, allowing smart contracts to be tested for specific variables, frontends to be changed in an automated manner, and much more."
4 | authors: ["@PatrickAlphaC"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://blog.chain.link/events-and-logging-in-solidity/"
8 | dateAdded: 2021-11-30
9 | level: "Beginner"
10 | date: 2021-11-22
11 | ---
12 |
13 | Solidity events are integral for smart contract developers, allowing smart contracts to be tested for specific variables, frontends to be changed in an automated manner, and much more. In general, knowing how to use events in Solidity makes smart contract development a whole lot easier.
14 |
15 | In this post, we’ll look into the logging and events feature of the Ethereum Virtual Machine (EVM) from a smart contract developer’s perspective, covering what logging and events are used for, indexed events, and how to use logging and events in Hardhat and Brownie.
--------------------------------------------------------------------------------
/src/components/link-button.tsx:
--------------------------------------------------------------------------------
1 | import styles from './link-button.module.scss'
2 | import { Link } from './link'
3 |
4 | interface Props {
5 | href: string
6 | text: string
7 | type?: 'primary' | 'secondary' | 'twitter' | 'github' | 'website'
8 | className?: string
9 | }
10 |
11 | export function LinkButton(props: Props) {
12 | let className = `accent block ${styles.container} ${styles[props.type ?? 'primary']}`
13 | if (props.className) className += ` ${props.className}`
14 |
15 | let icon = <>>
16 | if (props.type === 'twitter') {
17 | icon =
18 | }
19 | if (props.type === 'github') {
20 | icon =
21 | }
22 | if (props.type === 'website') {
23 | icon =
24 | }
25 |
26 | return (
27 |
28 |
29 | {icon}
30 | {props.text}
31 |
32 |
33 | )
34 | }
35 |
--------------------------------------------------------------------------------
/content/courses/consensys-academy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "ConsenSys Academy"
3 | description: "ConsenSys Academy’s mission is to develop the global blockchain ecosystem by bridging the Ethereum knowledge gap, and revolutionizing education through blockchain technology."
4 | authors: ["@ConsenSys"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://consensys.net/academy/"
8 | dateAdded: 2021-08-11
9 | level: "All"
10 | ---
11 |
12 | Become a certified blockchain developer
13 |
14 | Blockchain Developer Online Bootcamp
15 |
16 | Get the skills you need to become an industry-leading Ethereum developer with our flagship Blockchain Developer Bootcamp! In our cohort-based bootcamp, you'll join a robust community of other students and developers and learn fundamental Ethereum concepts, key tools, security best practices, and smart contract/dApp development. You'll work in teams and have live access to Academy Ethereum experts through our online portal and office hours. You also get lifetime access to the community and one free year of access to the course materials through our alumni program.
--------------------------------------------------------------------------------
/content/tutorials/create-an-erc20-token-payment-splitting-smart-contract.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Create an ERC20 token payment splitting smart contract"
3 | description: "Today we will learn how to create our own ERC20 token payment splitter that can be incorporated into any project!"
4 | authors: ["@Martin_Lastname"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/coinmonks/create-an-erc20-token-payment-splitting-smart-contract-c79436470ccc"
8 | dateAdded: 2021-09-18
9 | level: "Intermediate"
10 | date: 2021-09-16
11 | ---
12 |
13 | Payments are a reoccurring topic across pretty much every area of crypto, specifically providing payments to multiple stakeholders. For instance, a DAO wants to provide funding to multiple initiatives, a DEX want to consolidate and distribute trading fees to certain participants, or a team wants to distribute tokens to team members as a monthly paycheck.
14 |
15 | Smart contracts allow us to automate these type of payment functions, which limits potential mistakes caused by manually managing payments and allows us to spend our valuable time on other productive tasks.
--------------------------------------------------------------------------------
/content/tutorials/staking-dapp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Staking dApp"
3 | description: "The end goal of the project is to mimic the Ethereum 2.0 staking contract using scaffold-eth."
4 | authors: ["@StErMi"]
5 | tags: ["Dapp","Smart Contracts"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://stermi.medium.com/how-to-write-your-first-decentralized-app-scaffold-eth-challenge-1-staking-dapp-b0b6a6f4d242"
8 | dateAdded: 2021-09-01
9 | level: "Intermediate"
10 | date: 2021-08-31
11 | ---
12 |
13 | In this blog post, I’m going to cover the first scaffold-eth speed run project: creating a Staking dApp. If you want to know more about scaffold-eth and my current journey in the web3 world you should read my previous article: My journey in Web3 development: scaffold-eth.
14 |
15 | The goal of the dApp
16 | The end goal of the project is to mimic the Ethereum 2.0 staking contract. The requirements are pretty simple:
17 | - allow anyone to stack ether and track their balance
18 | - if a time and stack amount deadline have reached don’t allow - users to withdraw their fund (those found are used for a future project, like the Ethereum PoS)
--------------------------------------------------------------------------------
/content/courses/blockchain-berkeley.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Blockchain @ Berkeley"
3 | description: "Join over 150,000 students in earning our renowned BerkeleyX Blockchain Fundamentals Professional Certificate, with our free online course series."
4 | authors: ["@CalBlockchain"]
5 | tags: ["Smart Contracts","Dapp","EVM"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://blockchain.berkeley.edu/courses/"
8 | dateAdded: 2021-08-11
9 | level: "All"
10 | ---
11 |
12 | In October 2016, the Berkeley Bitcoin Association, a group of about a dozen members, founded Blockchain at Berkeley, an organization dedicated to becoming the blockchain hub of the East Bay. They also debuted the world’s first undergraduate university-accredited blockchain course, Blockchain Fundamentals, taught to about 50 students. Alongside Blockchain at Berkeley’s education team grew a consultancy that aimed to bridge the gap between geeky bitcoin enthusiasts and technovative early-adopters in the industry to develop Proof-of-Concepts for disruptive blockchain use cases. Since then, as a result of other ambitious B@B members, R&D and Design departments have also emerged.
--------------------------------------------------------------------------------
/src/assets/styles/globals.scss:
--------------------------------------------------------------------------------
1 | @use './variables' as *;
2 |
3 | @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap');
4 | @import url('https://unpkg.com/blocks.css/dist/blocks.min.css');
5 |
6 | html,
7 | body {
8 | margin: 0 auto;
9 | padding: 0;
10 | font-family: $font-primary;
11 | font-weight: $font-normal;
12 | font-size: $size-16;
13 | color: $color-neutral;
14 | --block-accent-color: #EBA134; // secondary
15 | overflow: hidden;
16 | }
17 |
18 | * {
19 | padding: 0;
20 | margin: 0;
21 | border: 0;
22 | box-sizing: border-box;
23 | min-height: 0;
24 | min-width: 0;
25 | }
26 |
27 | a {
28 | color: inherit;
29 | text-decoration: none;
30 |
31 | &:hover {
32 | color: $color-neutral-500;
33 | }
34 | }
35 |
36 | .truncate {
37 | white-space: nowrap;
38 | overflow: hidden;
39 | text-overflow: ellipsis;
40 | }
41 |
42 | h1, .h1 {
43 | font-size: $size-h1;
44 | }
45 |
46 | h2, .h2 {
47 | font-size: $size-h2;
48 | }
49 |
50 | h3, .h3 {
51 | font-size: $size-h3;
52 | }
53 |
54 | .p, p,
55 | .article, article {
56 | margin-bottom: $gap-16;
57 | }
58 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Wesley
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/content/tutorials/hardhat-tutorial-for-beginners.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Hardhat's tutorial for beginners"
3 | description: "A beginners guide to Ethereum contracts and dApp development"
4 | authors: ["@NomicLabs"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://hardhat.org/tutorial/"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | date: 2020-03-25
11 | ---
12 |
13 | Welcome to our beginners guide to Ethereum contracts and dApp development. This tutorial is aimed at hackathon participants who are getting setup to quickly build something from scratch.
14 |
15 | To orchestrate this process we're going to use Hardhat, a development environment that facilitates building on Ethereum. It helps developers manage and automate the recurring tasks that are inherent to the process of building smart contracts and dApps, as well as easily introducing more functionality around this workflow. This means compiling and testing at the very core.
16 |
17 | Hardhat also comes built-in with Hardhat Network, a local Ethereum network designed for development. It allows you to deploy your contracts, run your tests and debug your code.
--------------------------------------------------------------------------------
/content/tutorials/introduction-to-ethereum-rollups.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Introduction to Ethereum Rollups"
3 | description: "In this guide, we will go over some Ethereum scaling solutions and deep dive into rollups."
4 | authors: ["@sensahil","@QuickNode"]
5 | tags: ["Scalability"]
6 | languages: []
7 | url: "https://www.quicknode.com/guides/infrastructure/introduction-to-ethereum-rollups"
8 | dateAdded: 2022-01-10
9 | level: "Beginner"
10 | date: 2021-12-29
11 | ---
12 |
13 | Ethereum, the most popular blockchain, has seen scaling issues for quite a long time now. With high gas fees due to congestion being the primary pain point. With the increasing cost to use the network, a plethora of scaling solutions have emerged. Today in this guide, we will go over some Ethereum scaling solutions and deep dive into rollups.
14 |
15 | Ethereum Scaling solutions
16 | The main goal of all the Ethereum scaling solutions is to increase transaction speed and throughput without compromising the decentralized nature of the blockchain.
17 |
18 | There are two main directions in which these scaling solutions are being explored:
19 | - On-chain Scaling
20 | - Off-chain Scaling
--------------------------------------------------------------------------------
/content/tutorials/on-chain-generative-nfts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "On-chain, generative NFTs"
3 | description: "Contract development of Buddy Buddy Tags — fun, completely on-chain, generative NFTs for interpreting friendships🤝"
4 | authors: ["@BeautifoolData"]
5 | tags: ["Smart Contracts","NFT"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/@beautifooldata/contract-development-of-buddy-buddy-tags-fun-completely-on-chain-generative-nfts-for-be9766bb680d"
8 | dateAdded: 2021-10-02
9 | level: "Intermediate"
10 | date: 2021-09-26
11 | ---
12 |
13 | buddy buddy tag NFTs are a brand new project put together to experiment with completely on-chain generative development. you get one for yourself, for your friend, forever😹. as of this point, there are 13 minted tags, with 7 of them confirmed!
14 |
15 | What does that mean? well, buddy buddy tags are on-chain, generative NFTs that require a minter to submit a buddy’s address when minting. the minter receives a randomized set of emojis along with his wallet address and his buddies. think of it like a fortune cookie, you don’t know what you’ll draw, and the interpretation is up to the minter and his buddy.
--------------------------------------------------------------------------------
/content/tutorials/voting-system-in-cairo.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Voting system in Cairo"
3 | description: "In this guide we will write Cairo code for a small voting system, which can be used, for example, to run a secure (non-private) voting with a lot of voters."
4 | authors: ["@CairoLang"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: ["Cairo"]
7 | url: "https://www.cairo-lang.org/docs/hello_cairo/voting.html"
8 | dateAdded: 2022-01-15
9 | level: "Intermediate"
10 | ---
11 |
12 | In this section we will write Cairo code for a small voting system. This voting system can be used, for example, to run a secure (non-private) voting with a lot of voters on a blockchain. We will assume that each voter has a pair of private and public keys (for the ECDSA signature scheme) and that the list of voters’ public keys is fixed. Each voter may vote “Yes” (1) or “No” (0). The system will not guarantee anonymity.
13 |
14 | This section assumes some basic knowledge of cryptographic primitives such as hash functions, digital signatures and Merkle trees. In addition, if you haven’t already read the previous parts of the “Hello, Cairo” tutorial, you are encouraged to do so before reading this part.
--------------------------------------------------------------------------------
/content/websites/cairo-by-example.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Cairo by example"
3 | description: "Cairo is programming language that can be used to write blockchain applications. The language is novel in that it converts program logic into STARK proofs."
4 | authors: ["@eth_worm"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: ["Cairo"]
7 | url: "https://perama-v.github.io/cairo/by-example/"
8 | dateAdded: 2022-01-15
9 | level: "Beginner"
10 | ---
11 |
12 | First setup using Nile which makes managing files and command line calls to StarkNet simple.
13 | Second have a look at how pytest works
14 | After you have set everything up, to run the examples:
15 | - Open two terminals in the project folder and run source env/bin/activate
16 | - In one run nile node to start a local devnet.
17 | - In the other run the commands in the examples.
18 |
19 | Examples of different elements in Cairo and StarkNet.
20 | - Hello, World!
21 | - First application
22 | - Array
23 | - Data types
24 | - Variables
25 | - Read and write values
26 | - Read and write tuples
27 | - Currency
28 | - Constructor
29 | - Custom imports
30 | - Contract calls
31 | - Array argument
32 | - Array returns
33 | - Struct returns
--------------------------------------------------------------------------------
/content/books/lexon-digital-contracts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Lexon: Digital Contracts"
3 | description: "In non-technical terms, this book explains Digital Con-tracts: legally enforceable smart contracts that anyone can read."
4 | authors: ["@hdiedrich"]
5 | tags: ["Smart Contracts"]
6 | languages: []
7 | url: "https://amzn.to/34pfBUE"
8 | dateAdded: 2022-01-09
9 | level: "All"
10 | date: 2019-10-05
11 | ---
12 |
13 | In non-technical terms, this book explains Digital Con-tracts: legally enforceable smart contracts that anyone can read.
14 |
15 | You do NOT need prior knowledge about blockchains.
16 |
17 | The book outlines the concept, gives examples, provides links to online tools that help to write, sign, deploy and manage digital contracts on the blockchain. Lexon’s grammar, vocabulary and document structure are illustrated. Lex-on's paradigm is explained, including how it differs from other programming languages, staying closer to human thought. Lexon’s relationship to Computational Law and AI is discussed and applications and benefits are detailed. The appendix lists notable steps towards human-readability by other programming languages, complemented with notes on constructed human languages.
--------------------------------------------------------------------------------
/content/books/mastering-ethereum.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Mastering Ethereum"
3 | description: "A guide to the operation and use of Ethereum and other EVM-compatible blockchains."
4 | authors: ["@aantonop","@gavofyork"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://amzn.to/3onZcId"
8 | featured: true
9 | dateAdded: 2021-08-11
10 | level: "Beginner"
11 | date: 2018-11-13
12 | alternateUrl: "https://github.com/ethereumbook/ethereumbook"
13 | ---
14 |
15 | Ethereum represents the gateway to a worldwide, decentralized computing paradigm. This platform enables you to run decentralized applications (DApps) and smart contracts that have no central points of failure or control, integrate with a payment network, and operate on an open blockchain. With this practical guide, Andreas M. Antonopoulos and Gavin Wood provide everything you need to know about building smart contracts and DApps on Ethereum and other virtual-machine blockchains.
16 |
17 | Discover why IBM, Microsoft, NASDAQ, and hundreds of other organizations are experimenting with Ethereum. This essential guide shows you how to develop the skills necessary to be an innovator in this growing and exciting new industry.
--------------------------------------------------------------------------------
/content/videos/building-on-defi-with-solidity-hardhat.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Building On DeFi With Solidity & Hardhat"
3 | description: "In this intermediate solidity tutorial I'll be building on the lego bricks of DeFi using Solidity and Hardhat."
4 | authors: ["@james_bachini"]
5 | tags: ["Smart Contracts","DeFi","Security"]
6 | languages: ["Solidity"]
7 | url: "https://youtu.be/R91Uhw07W3U"
8 | dateAdded: 2022-01-15
9 | level: "Intermediate"
10 | ---
11 |
12 | In this intermediate solidity tutorial I'll be building on the lego bricks of DeFi using Solidity and Hardhat. I'll be looking at how to interact with external contracts such as chainlink oracles and how to carry out swaps/trades on Uniswap v3. Then we will look at testing and deploying the contracts to the Ethereum kovan testnet.
13 |
14 | There is more deatails and a full tutorial at https://jamesbachini.com/intermediate-solidity-tutorial/
15 |
16 | The code from this tutorial is open-sourced at: https://github.com/jamesbachini/myVault/
17 |
18 | 00:00 Solidity Tutorial Intro
19 | 00:34 Hardhat & Dev Environment
20 | 02:38 Solidity Code
21 | 017:59 Hardhat Testing
22 | 21:33 Solidity Security
23 | 24:52 Hardhat Deployment
24 | 29:58 Conclusion
--------------------------------------------------------------------------------
/content/tutorials/fetch-data-from-ethereum-with-swr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Fetch data from Ethereum with SWR"
3 | description: "How to Fetch and Update Data From Ethereum with React and SWR"
4 | authors: ["@aboutlo"]
5 | tags: ["Dapp"]
6 | languages: ["JavaScript"]
7 | url: "https://consensys.net/blog/developers/how-to-fetch-and-update-data-from-ethereum-with-react-and-swr/"
8 | dateAdded: 2021-08-17
9 | level: "Intermediate"
10 | date: 2020-06-18
11 | ---
12 |
13 | Ethereum allows us to build decentralized applications (dapps). The main difference between a typical application and a dapp is that you don’t need to deploy a backend—at least as long as you take advantage of the other smart contracts deployed on the Ethereum mainnet.
14 |
15 | Because of that, the frontend plays a major role. It is in charge of marshaling and unmarshaling the data from the smart contracts, handling the interactions with the wallet (hardware or software) and, as usual, managing the UX. Not only that, by design, a dapp uses JSON-RPC calls and it can open a socket connection to receive updates.
16 |
17 | As you can see there are a few things to orchestrate but don’t worry, the ecosystem has matured quite a lot in the last few months.
--------------------------------------------------------------------------------
/content/courses/developer-bootcamp-with-solidity-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Developer Bootcamp with Solidity (2021)"
3 | description: "Become An Ethereum Blockchain Developer With One Course. Master Solidity, Web3.JS, Truffle, Metamask, Remix & More!"
4 | authors: ["Ravinder Deol","@thinkingassets","Martin Sterlicchi"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://www.udemy.com/course/blockchain-developer/"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | ---
11 |
12 | Welcome to the Ethereum Blockchain Developer Bootcamp With Solidity. The only course you'll need to become an Ethereum blockchain developer.
13 |
14 | With over 1,900 ⭐️⭐️⭐️⭐️⭐️ reviews, this course is one of the highest-rated Ethereum blockchain development courses online.
15 |
16 | Updated video tutorials, practical projects, and fast support in the discussion board are how you master Ethereum blockchain development.
17 |
18 | At 13+ hours, this Ethereum blockchain development course is undoubtedly the most comprehensive course of its kind anywhere online.
19 |
20 | Even if you have zero or limited programming experience, this course will take you from beginner to Ethereum blockchain developer.
--------------------------------------------------------------------------------
/content/tutorials/clean-contracts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Clean Contracts"
3 | description: "A guide on smart contract patterns & practices"
4 | authors: ["@wslyvh"]
5 | tags: ["Smart Contracts","Security"]
6 | languages: ["Solidity"]
7 | url: "https://www.wslyvh.com/clean-contracts/"
8 | dateAdded: 2021-08-29
9 | level: "Intermediate"
10 | date: 2020-07-30
11 | ---
12 |
13 | Blockchain and smart contract development are still relatively new and highly experimental. They require a different engineering mindset than traditional web, or app development where ‘move fast and break things’ has become the norm.
14 |
15 | Blockchain development is much more like hardware, or financial service development. Smart contracts are complex instruments that offer the possibility to have self-enforcing contracts including transparent, tamper-proof, and immutable information. They have the authority to allocate high-value resources between complex systems. Often working autonomously. With huge financial loss at risk. This makes smart contracts critical components in these systems. Development of such components requires more investment, design, and effort upfront. Solid engineering practices, rigorous testing, and a strong security mindset.
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "use-web3",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint --fix",
10 | "tools:migrate": "ts-node src/migrate",
11 | "twitter:popular": "ts-node src/twitter-popular",
12 | "twitter:random": "ts-node src/twitter-random",
13 | "twitter:top": "ts-node src/twitter-top"
14 | },
15 | "dependencies": {
16 | "airtable": "^0.11.1",
17 | "bootstrap-icons": "^1.7.2",
18 | "dayjs": "^1.10.7",
19 | "gray-matter": "^4.0.3",
20 | "he": "^1.2.0",
21 | "marked": "^4.0.1",
22 | "next": "^12.0.3",
23 | "next-pagination": "^3.1.0",
24 | "next-plausible": "^2.1.1",
25 | "react": "17.0.2",
26 | "react-dom": "17.0.2",
27 | "sass": "^1.41.1",
28 | "slugify": "^1.6.1",
29 | "twit": "^2.2.11"
30 | },
31 | "devDependencies": {
32 | "@types/he": "^1.1.2",
33 | "@types/marked": "^4.0.0",
34 | "@types/react": "17.0.14",
35 | "cross-fetch": "^3.1.5",
36 | "dotenv": "^10.0.0",
37 | "eslint": "7.30.0",
38 | "eslint-config-next": "11.0.1",
39 | "ts-node": "^10.4.0",
40 | "typescript": "4.3.5"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/content/tutorials/starknet-cairo-101.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "StarkNet Cairo 101"
3 | description: "Get started with Cairo with this simple tutorial. Complete the puzzles, get points and learn about StarkNet smart contracts!"
4 | authors: ["@HenriLieutaud"]
5 | tags: ["Smart Contracts","Scalability"]
6 | languages: ["Cairo"]
7 | url: "https://github.com/l-henri/starknet-cairo-101"
8 | dateAdded: 2022-01-15
9 | level: "Beginner"
10 | ---
11 |
12 | This workshop is a set of smart contracts deployed on StarkNet Alpha on testnet. Each smart contract is an exercice/puzzle; each one outlines a feature of the Cairo Smart contract language. Completing the exercice will credit you with points, in the form of an ERC20 token.
13 |
14 | This workshop focuses on reading Cairo code and StarkNet smart contracts, in order to understand its syntax. You don't need to code or install anything on your machine in order to follow and complete it. Getting started (doing the first two exercises) will take you some time, in order to get into the tutorial. Hang on! Once there, things will flow more easily. You're learning!
15 |
16 | This workshop is the first in a serie that will cover broad smart contract concepts (writing and deploying ERC20/ERC721, bridging assets, L1 <-> L2 messaging...).
--------------------------------------------------------------------------------
/content/tutorials/ethereum-private-keys-attacks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Ethereum private keys attacks"
3 | description: "This article is an introduction to possible attacks against cryptography algorithms used in blockchains and is to arouse your curiosity about cryptography."
4 | authors: ["@pierre_ia"]
5 | tags: ["Cryptography","Security"]
6 | languages: []
7 | url: "https://medium.com/@pierreia/quick-tour-on-ethereum-private-keys-attacks-3082846b7632"
8 | dateAdded: 2022-01-10
9 | level: "Intermediate"
10 | date: 2021-12-26
11 | ---
12 |
13 | Your entire Ethereum (and almost every other blockchains) wallet is accessible by your private key, which is basically a random 256 bits long number. In fact, you could enter any 32 hex characters long key, and import an account to your Metamask for example. If you want to try this out, there are two ways: some websites like https://keys.lol/ allow you to see random private keys, and even compute their balance. However, I’d be tempted to think that if you use such websites to compute a private key, you’ll probably won’t be able to withdraw from one whose balance is not zero, as there’s a high chance the website installed a bot that filters the latter and instantly transfers the funds to another address, such as the website owner’s.
--------------------------------------------------------------------------------
/content/courses/hyperledger-university-course.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Enterprise Blockchain Technologies'
3 | description: 'This free, open-source course aims at providing a reliable basis for university students to get started in enterprise blockchain.
4 | '
5 | authors: ['Rafael Belchior and contributors']
6 | level: [Intermediate, Advanced]
7 | tags: ['Smart Contracts','Dapp','Enterprise']
8 | languages: ['Python','JavaScript']
9 | dateAdded: 2022-01-18
10 | url: 'https://github.com/hyperledger-labs/university-course'
11 | ---
12 |
13 | This course contains the practical part of a university course on enterprise blockchain technologies. Typically, a university course is divided into theory and laboratory classes. The theory explains the theoretical foundations behind what is learned in the laboratories. At the end of this course, you will:
14 |
15 | 1. Understand the theory on blockchain: what is it (Lab 1, Lab2), and which problems it can solve (Lab 3)
16 |
17 | 2. Get to know Hyperledger Fabric's components in detail, such as architecture and transactional model (Lab 4), chaincode (Lab 5), network, and how to develop an enterprise full-stack blockchain decentralized application (Lab 6)
18 |
19 | 3. Leverage Hyperledger Umbra to study advanced topics on Fabric (Lab 7, Lab 8)
--------------------------------------------------------------------------------
/content/tutorials/optimizing-attack-parameters.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Optimizing Attack Parameters"
3 | description: "How to Get a Bigger Bounty by Optimizing Attack Parameters"
4 | authors: ["@bobface16","@immunefi"]
5 | tags: ["Security","DeFi"]
6 | languages: []
7 | url: "https://medium.com/immunefi/how-to-get-a-bigger-bounty-by-optimizing-attack-parameters-a51b144f5cc2"
8 | dateAdded: 2021-09-24
9 | level: "Advanced"
10 | date: 2021-09-15
11 | ---
12 |
13 | Imagine the following scenario: you just found a critical vulnerability that allows funds in a smart contract to be drained. The exploit, however, is complicated and requires multiple payload parameters to be set correctly for it to be effective or even profitable at all.
14 |
15 | It quickly turns out that calculating optimal parameters by hand is infeasible, due to the complex nature of the exploit. And yet, you want to responsibly disclose a Proof of Concept (PoC) that maximizes the amount of funds that can be drained from the contract. Why? Because it’s often true that the greater the funds at risk, the higher the bug bounty reward.
16 |
17 | In such a situation, linear programming can be an exceptionally helpful tool. This is an advanced tutorial for whitehats who are looking to take their hacking skills to the next level.
--------------------------------------------------------------------------------
/content/tutorials/mapping-vs-array-in-solidity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Mapping vs. Array in Solidity"
3 | description: "There are some key differences between mapping and array in Solidity that are important to understand as you progress in your journey as a smart contract developer."
4 | authors: ["@znwhite_"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://www.devtwins.com/blog/understanding-mapping-vs-array-in-solidity"
8 | dateAdded: 2021-11-30
9 | level: "Intermediate"
10 | date: 2021-11-23
11 | ---
12 |
13 | If you already have some experience as a developer, many of the terms and concepts you encounter when first diving into Solidity will hopefully be familiar to you, such as Solidity's Array type, which is very similar to arrays found in other programming languages.
14 |
15 | However, Solidity also has a Mapping type, which may seem similar to an array at first since it is also used to store a group of data.
16 |
17 | However, there are some key differences between mapping and array in Solidity that are important to understand as you progress in your journey as a smart contract developer.
18 |
19 | In this article, we'll be taking a look at both types and discussing their differences, and explaining (with examples) when to use one instead of the other.
--------------------------------------------------------------------------------
/content/tutorials/set-up-a-solidity-project.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Set up a Solidity project"
3 | description: "How to set up a Solidity project and create your first smart contract"
4 | authors: ["@oliverjumpertz"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://blog.oliverjumpertz.dev/how-to-set-up-a-solidity-project-and-create-your-first-smart-contract"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | date: 2021-06-14
11 | ---
12 |
13 | There are many programming languages out there. But there are not many that were created solely to create smart contracts. Those programs that run on the blockchain. Programs that create crypto coins, NFTs, or whole decentralized exchanges (DEX).
14 |
15 | If you ever wanted to get into smart contract development with Solidity, then this article is for you. Well, even if you never heard of Solidity and smart contracts before, following this article might perhaps inspire you to dig a little deeper and perhaps even create your own crypto coin or DEX.
16 |
17 | This article is a guide and aims to help you to set up your first Solidity project. You will learn how to set up Visual Studio Code for Solidity, install Hardhat as a local development environment, write your first lines of Solidity, test your contract, and then deploy it to a local testnet.
--------------------------------------------------------------------------------
/content/tutorials/learn-cryptography.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Learn Cryptography"
3 | description: "This tutorial covers the basics of the science of cryptography."
4 | authors: ["@tutorialspoint"]
5 | tags: ["Cryptography","Security"]
6 | languages: []
7 | url: "https://www.tutorialspoint.com/cryptography/"
8 | dateAdded: 2021-08-17
9 | level: "Intermediate"
10 | date: 2015-07-01
11 | ---
12 |
13 | This tutorial covers the basics of the science of cryptography. It explains how programmers and network professionals can use cryptography to maintain the privacy of computer data. Starting with the origins of cryptography, it moves on to explain cryptosystems, various traditional and modern ciphers, public key encryption, data integration, message authentication, and digital signatures.
14 |
15 | This tutorial is meant for students of computer science who aspire to learn the basics of cryptography. It will be useful for networking professionals as well who would like to incorporate various cryptographic algorithms to ensure secure data communication over their networks.
16 |
17 | This tutorial has been prepared with the view to make it useful for almost anyone who is curious about cryptography. A basic knowledge of computer science and a secondary level of mathematics knowledge is sufficient to make the most of this tutorial.
--------------------------------------------------------------------------------
/content/tutorials/learning-blockchain-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Learning Blockchain Development"
3 | description: "A Guide for Developers Interested in Learning Blockchain Development"
4 | authors: ["@william94029369"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://www.linumlabs.com/articles/a-guide-for-developers-interested-in-learning-blockchain-development"
8 | dateAdded: 2021-08-17
9 | level: "Beginner"
10 | date: 2020-11-24
11 | ---
12 |
13 | I was recently asked in an online forum for my recommendations on resources for developers looking to learn blockchain development, and I started writing an answer, but it sort of kept on going and going. The results are the article in front of you.
14 |
15 | This isn’t an article about the advantages and disadvantages of building on a blockchain. It’s just a guide about the things you’ll need to learn once you’ve decided to learn blockchain, and what the steps of making a blockchain application look like. Not everything should be on a blockchain.
16 |
17 | There are a lot of different resources out there, and as with any tech stack choices, things can get opinionated. There is still a need, especially with regards newcomers in the field, to direct to the right tools. I'll try to find a middle ground in between my opinions and a general list.
--------------------------------------------------------------------------------
/content/tutorials/how-to-save-50-on-gas-costs.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "How To Save 50% on Gas Costs"
3 | description: "When we built the first version of Goldfinch, we did not really pay attention to gas costs. This resulted in even basic actions being insanely expensive on our protocol."
4 | authors: ["@_blakewest"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/goldfinch-fi/solidity-learnings-how-to-save-50-on-gas-costs-5e598c364ab2"
8 | dateAdded: 2021-08-17
9 | level: "Intermediate"
10 | date: 2021-05-18
11 | ---
12 |
13 | When we built the first version of Goldfinch, we did not really pay attention to gas costs. This resulted in even basic actions being insanely expensive on our protocol. Borrowing money cost $250+ at high gas times 😟. So the first improvement we made was to see how we could reduce gas costs. We spent hours profiling, researching, and going through our code, more or less line by line, to figure out how we could cut gas. Along the way we learned a lot of really useful rules of thumb. These are high level concepts you can always keep in the back of your mind while writing Solidity, both for what adds gas, and what doesn’t add gas, which is not always intuitive. Following these, we were able to cut costs of most functions by 30–50%, without sacrificing much in terms of readability.
--------------------------------------------------------------------------------
/content/tutorials/uniswap-v2-code-walk-through.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Uniswap v2 Code walk-through"
3 | description: "Uniswap v2 can create an exchange market between any two ERC-20 tokens. In this article we will go over the source code for the contracts that implement this protocol."
4 | authors: ["@ori_pomerantz"]
5 | tags: ["DeFi","Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://ethereum.org/en/developers/tutorials/uniswap-v2-annotated-code/"
8 | dateAdded: 2021-11-15
9 | level: "Intermediate"
10 | date: 2021-05-01
11 | ---
12 |
13 | Basically, there are two types of users: liquidity providers and traders.
14 |
15 | The liquidity providers provide the pool with the two tokens that can be exchanged (we'll call them Token0 and Token1). In return, they receive a third token that represents partial ownership of the pool called a liquidity token.
16 |
17 | Traders send one type of token to the pool and receive the other (for example, send Token0 and receive Token1) out of the pool provided by the liquidity providers. The exchange rate is determined by the relative number of Token0s and Token1s that the pool has. In addition, the pool takes a small percent as a reward for the liquidity pool.
18 |
19 | When liquidity providers want their assets back they can burn the pool tokens and receive back their tokens, including their share of the rewards.
--------------------------------------------------------------------------------
/content/tutorials/become-a-blockchain-engineer.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Become a Blockchain Engineer"
3 | description: "Become a blockchain, solidity, and smart contract engineer by following these steps"
4 | authors: ["@PatrickAlphaC"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: []
7 | url: "https://betterprogramming.pub/how-to-become-a-blockchain-engineer-fa4386a0504f"
8 | featured: true
9 | dateAdded: 2021-11-15
10 | level: "Beginner"
11 | date: 2021-11-08
12 | ---
13 |
14 | Becoming a blockchain engineer is the most fun, rewarding, and exhilarating choice I’ve and my colleagues have ever made. And we’ve already blazed the trail for you to get started! In this article, we will show you exactly how to learn to become a blockchain engineer, from beginner to professional.
15 |
16 | Spoiler alert, here is the exact blueprint we are going to cover to get you to a successful blockchain engineer:
17 |
18 | 1. Understand why you should become a blockchain engineer
19 | 2. Take a Blockchain Course
20 | 3. Join a Hackathon, the Community, & Build
21 | 4. Start your own protocol, Take a job, Freelance & Contribute
22 |
23 | If you make it this far, you’ve done it! Although, I’ll add a bonus step 5 that we will talk about soon.
24 |
25 | 5. You’ve made it! Keep learning!
26 |
27 | That’s it! These are the exact steps you need to take to become a blockchain engineer!
--------------------------------------------------------------------------------
/content/courses/questbook.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Questbook"
3 | description: "Self paced tutorials to learn Web3 by building"
4 | authors: ["@questbookapp","@madhavanmalolan"]
5 | tags: ["Smart Contracts","Dapp","EVM"]
6 | languages: ["Solidity"]
7 | url: "https://www.questbook.app/"
8 | dateAdded: 2021-09-21
9 | level: "All"
10 | ---
11 |
12 | Questbook is a decentralized university where learning is always free. We enable with our cryptoeconomics and a native erc20 coin that powers the ecosystem.
13 |
14 | Wikipedia is where the world collaborates on facts, StackOverflow is where the world collaborates on technical question answers, but where does the world collaborate on great tutorials? That is the gap that Questbook fills. All the content is created collaboratively by the community and contributors are compensated by tokens from Questbook and other retroactive grants.
15 |
16 | Questbook will train the next 10 Million web3 developers not only with bite sized content created by the community but also by making it accessible on a mobile phone. Users will be able to learn and write web3 programming directly from a mobile phone. No need for a laptop. This unlocks a huge market in India, Southeast Asia, Africa and Latin America where many people don’t have access to a laptop - but have a mobile phone. But, it also allows those with access to be able to learn on the go.
--------------------------------------------------------------------------------
/content/websites/best-practices-for-smart-contract-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Best Practices for Smart Contract Development"
3 | description: "This guide summarizes the lessons I’ve learned from writing smart contracts, building decentralized applications, and open source projects in the Ethereum ecosystem."
4 | authors: ["@yosriady"]
5 | tags: ["Smart Contracts","Security"]
6 | languages: ["Solidity"]
7 | url: "https://yos.io/2019/11/10/smart-contract-development-best-practices/"
8 | dateAdded: 2021-08-29
9 | level: "Intermediate"
10 | ---
11 |
12 | The history of software development spans decades. We benefit from the best practices, design patterns, and nuggets of wisdom that has accumulated over half a century.
13 |
14 | In contrast, smart contract development is just getting started. Ethereum and Solidity launched in 2015, only a handful of years ago.
15 |
16 | The crypto space is an ever-growing uncharted territory. There’s no definitive stack of tools to build decentralized apps. There are no developer handbooks like Design Patterns or Clean Code for smart contracts. Information about tools and best practices are scattered all over the place.
17 |
18 | You’re reading the missing guide I wish existed. It summarizes the lessons I’ve learned from writing smart contracts, building decentralized applications, and open source projects in the Ethereum ecosystem.
--------------------------------------------------------------------------------
/src/assets/styles/variables.scss:
--------------------------------------------------------------------------------
1 | // Fonts
2 | $font-primary: 'JetBrains Mono', 'Courier New', monospace;
3 |
4 | // Weight
5 | $font-normal: 400;
6 | $font-bold: 700;
7 |
8 | // Colors
9 | $color-primary: #000D99;
10 | $color-primary-500: #004FFF;
11 | $color-primary-100: #99CCFF;
12 |
13 | $color-secondary: #EBA134;
14 | $color-secondary-500: #FAC748;
15 | $color-secondary-100: #FFE3B2;
16 |
17 | $color-neutral: #151A26;
18 | $color-neutral-500: #6A707F;
19 | $color-neutral-100: #E9ECF1;
20 |
21 | // Error, warning, succes, info colors
22 | $color-info: #d0f0fd;
23 | $color-info-dark: #04283f;
24 | $color-success: #d1f7c4;
25 | $color-success-dark: #0b1d05;
26 | $color-warning: #ffeab6;
27 | $color-warning-dark: #3b2501;
28 | $color-error: #ffdce5;
29 | $color-error-dark: #4c0c1c;
30 |
31 | // Sizes
32 | $size-12: 0.75rem; // 12px
33 | $size-16: 1rem; // 16px
34 | $size-20: 1.25rem; // 20px
35 |
36 | // Headings
37 | $size-h1: 2rem; // 32px
38 | $size-h2: 1.75rem; // 28px
39 | $size-h3: 1.5rem; // 24px
40 |
41 | // Gaps
42 | $gap-8: 8px;
43 | $gap-16: 16px;
44 | $gap-24: 24px;
45 | $gap-32: 32px;
46 | $gap-40: 40px;
47 |
48 | // Screens
49 | $screen-360: 360px;
50 | $screen-480: 480px;
51 | $screen-640: 640px;
52 | $screen-768: 768px;
53 | $screen-1024: 1024px;
54 | $screen-1280: 1280px;
55 |
56 | // Content
57 | $max-content-width: $screen-1280 + (24px * 2);
--------------------------------------------------------------------------------
/content/courses/blockchain-and-money.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Blockchain and Money"
3 | description: "This course is for students wishing to explore blockchain technology's potential use—by entrepreneurs and incumbents—to change the world of money and finance."
4 | authors: ["MIT"]
5 | tags: ["Web3","DeFi"]
6 | languages: []
7 | url: "https://ocw.mit.edu/courses/sloan-school-of-management/15-s12-blockchain-and-money-fall-2018/"
8 | dateAdded: 2021-08-11
9 | level: "All"
10 | ---
11 |
12 | This course is for students wishing to explore blockchain technology’s potential use—by entrepreneurs & incumbents—to change the world of money and finance.
13 |
14 | Kicking off with a review of the technology’s initial application, the cryptocurrency Bitcoin, students will gain an understanding of the commercial, technical and public policy fundamentals of blockchain technology, distributed ledgers and smart contracts in both open sourced and private applications.
15 |
16 | The class will then turn to current and potential blockchain applications in the financial sector. This will include reviews of potential use cases for payment systems, central banking, venture capital, secondary market trading, trade finance, commercial banking, post trade possessing and digital ID.
17 |
18 | Along the way, we will explore the markets and regulatory landscape for cryptocurrencies, initial coin offerings, other tokens and crypto derivatives.
--------------------------------------------------------------------------------
/src/components/row.module.scss:
--------------------------------------------------------------------------------
1 | @use 'assets/styles/variables.scss' as *;
2 |
3 | .card {
4 | font-family: $font-primary;
5 | font-weight: $font-normal;
6 | font-size: $size-16;
7 | line-height: 1.25rem;
8 | color: $color-neutral;
9 |
10 | display: flex;
11 | flex-direction: column;
12 |
13 | .title {
14 | color: $color-neutral;
15 | padding: $gap-8 0;
16 | border-bottom: 3px dotted $color-primary-100;
17 | white-space: nowrap;
18 | overflow: hidden;
19 | text-overflow: ellipsis;
20 |
21 | &:hover {
22 | color: $color-neutral-500;
23 | }
24 | }
25 |
26 | .logo {
27 | padding-top: 8px;
28 |
29 | img {
30 | border-radius: 50%;
31 | }
32 | }
33 |
34 | .body {
35 | display: flex;
36 | align-items: flex-end;
37 | justify-content: space-between;
38 | gap: $gap-8;
39 | }
40 |
41 | .description {
42 | flex-grow: 4;
43 | white-space: nowrap;
44 | overflow: hidden;
45 | text-overflow: ellipsis;
46 | }
47 |
48 | .date {
49 | flex-shrink: 0;
50 | }
51 |
52 | .url {
53 | flex-shrink: 0;
54 | }
55 |
56 | .author {
57 | margin-right: $gap-8;
58 | }
59 |
60 | .muted {
61 | color: $color-neutral-500;
62 | font-size: smaller;
63 | }
64 | }
--------------------------------------------------------------------------------
/content/courses/code-with-ethereum-solidity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Code with Ethereum & Solidity"
3 | description: "Use Ethereum, Solidity, and Smart Contracts to build production-ready apps based on the blockchain"
4 | authors: ["@ste_grider"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://www.udemy.com/course/ethereum-and-solidity-the-complete-developers-guide/"
8 | dateAdded: 2021-08-16
9 | level: "Beginner"
10 | ---
11 |
12 | Smart Contracts? They're here. The Ethereum Blockchain? Covered. Solidity? Yep!
13 |
14 | There can be no understating it: Ethereum and Blockchain technology is the most disruptive force in years. Companies cannot hire developers who understand blockchain technologies fast enough, but there are a tiny number of resources published to help you truly understand what blockchains are used for, let alone build apps with them. That's the purpose of this course: to be the best resource online for learning about Ethereum, blockchains, and how to build apps with this new technology.
15 |
16 | The development community is still figuring out the best way to use Ethereum in the creation of new and exciting apps. I spent a tremendous amount of time to research and create best practice for interfacing with Ethereum from Javascript. I can't overstate it enough; this course will show you the best and most easily repeatable patterns for creating production-ready apps with Ethereum.
--------------------------------------------------------------------------------
/src/components/card.module.scss:
--------------------------------------------------------------------------------
1 | @use 'assets/styles/variables.scss' as *;
2 |
3 | .card {
4 | font-family: $font-primary;
5 | font-weight: $font-normal;
6 | font-size: $size-16;
7 | line-height: 1.25rem;
8 | color: $color-neutral;
9 |
10 | .title {
11 | color: $color-neutral;
12 | padding: $gap-8 0;
13 | border-bottom: 3px dotted $color-primary-100;
14 | white-space: nowrap;
15 | overflow: hidden;
16 | text-overflow: ellipsis;
17 |
18 | &:hover {
19 | color: $color-neutral-500;
20 | }
21 | }
22 |
23 | .description {
24 | margin-top: $gap-8;
25 |
26 | height: 1.25rem * 4;
27 | -webkit-line-clamp: 4;
28 |
29 | display: -webkit-box;
30 | -webkit-box-orient: vertical;
31 | overflow: hidden;
32 | text-overflow: ellipsis;
33 | }
34 |
35 | .author {
36 | color: $color-neutral-500;
37 | font-size: smaller;
38 | }
39 |
40 | .footer {
41 | display: flex;
42 | justify-content: space-between;
43 | align-items: center;
44 | }
45 |
46 | .details {
47 | font-size: smaller;
48 | color: $color-neutral;
49 | }
50 | }
51 |
52 | .small {
53 | @extend .card;
54 | line-height: 1.5rem;
55 |
56 | .description {
57 | height: 1.5rem * 2;
58 | -webkit-line-clamp: 2;
59 | }
60 |
61 | }
--------------------------------------------------------------------------------
/content/courses/nft-school.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "NFT School"
3 | description: "Community education platform for developers in the non-fungible token space."
4 | authors: ["@protocollabs"]
5 | tags: ["Web3"]
6 | languages: []
7 | url: "https://nftschool.dev/"
8 | dateAdded: 2021-10-09
9 | level: "All"
10 | ---
11 |
12 | What does it mean to own a piece of the internet? Can you sell a meme to the highest bidder? Is the metaverse finally happening? Let's find out together!
13 |
14 | Welcome to NFT School, a collective of web developers and technology enthusiasts here to figure out what's going on with non-fungible tokens, or NFTs. In the past few years, NFTs have gone from a niche concern within the blockchain world to a cultural phenomenon that has captured the imagination of artists, technologists, and the mass media.
15 |
16 | As builders, we'll be exploring NFTs from the technical side, taking them apart, and seeing how they work. We'll also take a look at some of the use cases for NFTs, so that we can help build new experiences around them.
17 |
18 | We'll be building on a background of modern web development, with a focus on JavaScript. Along the way, we'll get familiar with the core technologies that make NFTs possible, like smart contracts and content-addressed storage. If you're a newcomer to the space and find yourself confused, we want to know about it! Please open an issue (opens new window)with any suggestions for how to make this content more accessible.
--------------------------------------------------------------------------------
/content/courses/blockchain-specialization.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Blockchain Specialization"
3 | description: "Innovate with the Next Frontier in Technology. Learn how the blockchain is leading to a paradigm shift in decentralized application programming"
4 | authors: ["@BinaUB"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity"]
7 | url: "https://www.coursera.org/specializations/blockchain"
8 | dateAdded: 2021-08-17
9 | level: "Intermediate"
10 | ---
11 |
12 | This specialization introduces blockchain, a revolutionary technology that enables peer-to-peer transfer of digital assets without any intermediaries, and is predicted to be just as impactful as the Internet. More specifically, it prepares learners to program on the Ethereum blockchain. The four courses provide learners with (i) an understanding and working knowledge of foundational blockchain concepts, (ii) a skill set for designing and implementing smart contracts, (iii) methods for developing decentralized applications on the blockchain, and (iv) information about the ongoing specific industry-wide blockchain frameworks.
13 |
14 | The specialization covers a range of essential topics, from the cryptographic underpinnings of blockchain technology to enabling decentralized applications on a private Ethereum blockchain platform.
15 |
16 | It is ideal for programmers and designers involved in developing and implementing blockchain applications, and anyone who is interested in understanding its potential.
--------------------------------------------------------------------------------
/content/tutorials/how-to-poc-your-bug-leads.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "How to PoC your Bug Leads"
3 | description: "In this tutorial you’ll learn how to use a forked environment via Hardhat, to write a PoC for the Alchemix Access Control Exploit."
4 | authors: ["@immunefi"]
5 | tags: ["Smart Contracts","Security"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/immunefi/how-to-poc-your-bug-leads-5ec76abdc1d8"
8 | dateAdded: 2021-10-24
9 | level: "Advanced"
10 | date: 2021-10-12
11 | ---
12 |
13 | Picture this scenario: you’ve spent the entire day fruitlessly examining smart contract code. And now you’ve stumbled across a snippet of code that makes your Spidey-Senses tingle. You get excited. Could this be the bug that makes you a million dollars, turns you into a hall of fame legendary hacker, and changes your life forever?
14 |
15 | But you’re not 100% sure. How can you tell if that potential vulnerability you just found is critical or non-critical?
16 |
17 | You need to know if there’s a real issue at hand. You don’t want to sound the alarm bell for a false positive.
18 |
19 | Enter the proof-of-concept (PoC). If the bug is valid, a PoC quickly confirms this.
20 |
21 | Having a PoC will also make your bug report easier to follow and much more likely for the project to take it seriously. Not only do they know that the exploit is definitely real, but a PoC often demonstrates the magnitude of the potential damage, which helps to get bug hunters much, much larger rewards.
--------------------------------------------------------------------------------
/content/tutorials/state-state-variables.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "State & State Variables"
3 | description: "Solidity Basics: An Introduction To State In Solidity And How To Change It"
4 | authors: ["@paul_can_code"]
5 | tags: ["Smart Contracts"]
6 | languages: ["Solidity"]
7 | url: "https://blog.paulmcaviney.ca/state-variables"
8 | dateAdded: 2021-11-15
9 | level: "Beginner"
10 | date: 2021-11-06
11 | ---
12 |
13 | One of the great things about blockchains are their ability to store data in their distributed ledger systems. This is typically done through transactions, and once accepted, they form part of a block and then permanently become part of the blockchain. When the information is part of the blockchain it is immutable, meaning there is a permanent record of that transaction that can never be deleted or modified.
14 |
15 | The Ethereum Blockchain however is more advanced than this. It can store blocks of code called smart contracts and through the Ethereum Virtual Machine (EVM) can execute the code stored in these contracts. This effectively allows for the modification of the EVM's state from block to block. Due to the immutability aspect, the previous state is still in the records of the blockchain, albeit in the form of hexadecimal hashes instead of human-readable text.
16 |
17 | In this article we will write a simple smart contract with a function we can use to change its state. Before we get into coding though, it is important to understand a few concepts around contract state and transactions.
--------------------------------------------------------------------------------
/src/components/dropdown.tsx:
--------------------------------------------------------------------------------
1 | import { useRef, useState } from 'react'
2 | import { useOnOutsideClick } from 'hooks/useOnOutsideClick'
3 | import styles from './dropdown.module.scss'
4 |
5 | interface Props {
6 | items: Array
7 | className?: string
8 | onSelect: (value: string) => void // eslint-disable-line no-unused-vars
9 | }
10 |
11 | export function Dropdown(props: Props) {
12 | const ref = useRef(null)
13 | const [open, setOpen] = useState(false)
14 | const [selected, setSelected] = useState(props.items[0])
15 | useOnOutsideClick(ref, () => setOpen(false))
16 |
17 | let className = `block round ${styles.container}`
18 | if (props.className) className += ` ${props.className}`
19 |
20 | function onSelect(value: string) {
21 | if (value !== selected) {
22 | setSelected(value)
23 | props.onSelect(value)
24 | }
25 | }
26 |
27 | return (
28 |
42 |
43 | )
44 | }
45 |
--------------------------------------------------------------------------------
/content/tutorials/a-guide-for-reusing-test-code-to-validate-smart-contract-exploits.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "A guide for reusing test code to validate smart contract exploits"
3 | description: "This step-by-step guide will help you use developmental test code to validate smart contract exploits"
4 | authors: ["@lucash_dev","@immunefi"]
5 | tags: ["Smart Contracts","Security"]
6 | languages: ["Solidity"]
7 | url: "https://medium.com/immunefi/a-step-by-step-guide-for-reusing-development-test-code-to-validate-smart-contract-exploits-31ffb1afd044"
8 | dateAdded: 2021-10-09
9 | level: "Advanced"
10 | date: 2021-10-04
11 | ---
12 |
13 | Using the project’s code base and test frameworks for trying exploits, written as unit tests.
14 |
15 | This method has a few advantages:
16 | - Sometimes contracts are deployed, but there isn’t solid info on finding them. Using the development team’s code base makes things easier because you don’t have to interact with deployed contracts.
17 | - You can easily test contracts that are in scope for the bounties but haven’t been deployed yet. Forking the mainnet wouldn’t help you here.
18 | - Sometimes project code bases already have tons of tests and scenarios ready. You just need to tweak a few lines of a unit test to test an exploit.
19 | - Project development teams are familiar with their unit tests. A new unit test using the same practices is easier for them to validate than a stand-alone PoC (proof of concept).
20 |
21 | Being able to quickly modify an existing test and check if an exploit works is a valuable asset to have in your toolkit.
--------------------------------------------------------------------------------
/content/starter-kits/create-react-native-dapp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "create-react-native-dapp"
3 | description: "create-react-native-dapp is an npx utility to help quickly bootstrap React Native applications with access to the Ethereum Blockchain."
4 | authors: ["@cawfree"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript","React-Native"]
7 | url: "https://github.com/cawfree/create-react-native-dapp"
8 | dateAdded: 2021-09-16
9 | level: "All"
10 | ---
11 |
12 | Our goal is to help create a sustainable open source ecosystem for Web3 in React Native by providing a dependable common runtime which we can buidl upon and extend together.
13 |
14 | Features
15 | - Bootstrapped by Expo.
16 | - Easily take advantage of Expo's high quality, well-supported and well-documented library architecture.
17 | - Supports Android, iOS and the Web.
18 |
19 | - Served with Hardhat.
20 | - Your generated app comes with a simple example contract which you can deploy, test and interact with directly.
21 |
22 | - Powered by WalletConnect.
23 | - Connect to secure wallets such as Rainbow out of the box!
24 |
25 | - It's typed, and pretty.
26 | - It comes pre-configured with TypeScript to help write applications that scale.
27 | - It's integrated with prettier and husky to ensure coding standards are enforced right from the beginning.
28 |
29 | - And it's ready to go.
30 | - Built applications come pre-packaged with .env support using react-native-dotenv and companion tests for your contracts.
31 | - Projects are initialized using deep linking so external navigation is a breeze.
--------------------------------------------------------------------------------
/content/videos/the-complete-guide-to-full-stack-ethereum-development.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "The Complete Guide to Full Stack Ethereum Development"
3 | description: "In this video you’ll learn how to build a modern full stack dApp on the Ethereum blockchain with React, Solidity, Hardhat, and Ethers.js."
4 | authors: ["@dabit3"]
5 | tags: ["Smart Contracts","Dapp"]
6 | languages: ["Solidity","JavaScript"]
7 | url: "https://youtu.be/a0osIaAOFSE"
8 | dateAdded: 2021-08-16
9 | level: "Beginner"
10 | date: 2021-04-15
11 | ---
12 |
13 | In this video you’ll learn how to build a modern full stack dApp on the Ethereum blockchain with React, Solidity, Hardhat, and Ethers.js. We’ll start from scratch, creating a React application, installing the dependencies, and initializing a new local Hardhat Ethereum environment.
14 |
15 | Next, we’ll create a couple of different smart contracts in Solidity, compile them, and deploy them to a local blockchain node that we will also initialize using Hardhat. We’ll then learn how to deploy the smart contracts to a real live test network.
16 |
17 | We’ll then connect the React front end to allow users to read data from the blockchain as well as create transactions with MetaMask using test Ether that we create using accounts created by our local test environment.
18 |
19 | Finally, we’ll learn how to create and mint real ERC20 tokens, as well as how to rapidly prototype smart contracts using the Remix IDE.
20 |
21 | By the end of this guide, you should have a good understanding of how to build modern dApps with React and Solidity on the Ethereum blockchain.
--------------------------------------------------------------------------------
/content/videos/solidity-blockchain-and-smart-contract-course-–-beginner-to-expert-python-tutorial.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial"
3 | description: "This course will give you a full introduction into all of the core concepts in blockchain, smart contracts, solidity, NFTs/ERC721s, upgrades, and more."
4 | authors: ["@PatrickAlphaC"]
5 | tags: ["DeFi","NFT","Dapp","Cryptography","Smart Contracts","UX & Design","Storage"]
6 | languages: ["Solidity","Python"]
7 | url: "https://www.youtube.com/watch?v=M576WGiDBdQ"
8 | featured: true
9 | dateAdded: 2021-09-10
10 | level: "Beginner"
11 | date: 2021-09-09
12 | ---
13 |
14 | https://www.youtube.com/watch?v=M576WGiDBdQ
15 |
16 | This course will give you a full introduction into all of the core concepts in blockchain, smart contracts, solidity, NFTs/ERC721s, ERC20s, Coding Decentralized Finance (DeFi), python and solidity, Chainlink, Ethereum, upgradable smart contracts, and full stack blockchain development.
17 |
18 | Some of the technologies covered are:
19 | - BrownieEth
20 | - solidity
21 | - IPFS
22 | - AlchemyPlatform
23 | - Infura
24 | - MetaMask
25 | - Etherscan
26 | - EthereumRemix
27 | - Chainlink
28 | - web3.py
29 | - Ganache
30 | - AaveAave
31 | - OpenZeppelin
32 | - NFT
33 | - ERC20
34 | - Opensea
35 | - Pinatacloud
36 | And more!
37 |
38 | Follow along with the videos and you'll be a blockchain wizard in no time! 💻 The repository with helpful links to all code, resources, and support forums is located here: https://github.com/smartcontractkit/full-blockchain-solidity-course-py.
--------------------------------------------------------------------------------
/content/tutorials/flavours-of-on-chain-svg-nfts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Flavours of On-Chain SVG NFTs"
3 | description: "Store NFT visuals as SVG in the data URI, so it does not need ancillary infrastructure to support it."
4 | authors: ["@simondlr"]
5 | tags: ["Smart Contracts","NFT"]
6 | languages: ["Solidity"]
7 | url: "https://blog.simondlr.com/posts/flavours-of-on-chain-svg-nfts-on-ethereum"
8 | dateAdded: 2021-09-24
9 | level: "Intermediate"
10 | date: 2021-08-25
11 | ---
12 |
13 | NFTs, as unique items on the blockchain, has a URI that points to data containing the metadata & the corresponding visuals. This URI can be an HTTP link, pointing to a video or image hosted on a normal server, or other services like IPFS (hash-based addresses), or Arweave (incentivized hosting of hash-based content).
14 |
15 | There is another way, however, a format that's become increasingly popular: the usage of a data URI. These URIs contain all the information within it. There is thus no server at the other end. Using data URIs has allowed NFT creators to experiment with putting all the content related to an NFT 'on-chain'. It adds a vector of permanence to the art. If Ethereum continues, it does not need ancillary infrastructure to support it. A common format, currently, is to store the NFT visuals as SVG in the data URI, since most browsers are able to natively parse it.
16 |
17 | It's fun, and due to some of the constraints of smart contract coding (limited execution & expensive storage), it becomes in itself a game of gas golf, trying to pack as much as one can into the architecture to create dynamic art that will live (currently) forever on Ethereum.
--------------------------------------------------------------------------------