{"id":14958583,"url":"https://github.com/bokkypoobah/getstartedwithdevelopinginethereum","last_synced_at":"2025-09-05T01:49:29.314Z","repository":{"id":252616415,"uuid":"840952441","full_name":"bokkypoobah/GetStartedWithDevelopingInEthereum","owner":"bokkypoobah","description":"Getting Started In Ethereum, with an interactive ERC-20, ERC-721 and ERC-1155 token contract explorer dapp","archived":false,"fork":false,"pushed_at":"2024-08-15T04:02:42.000Z","size":29532,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T01:51:18.193Z","etag":null,"topics":["approvals","balances","erc-1155","erc-20","erc-721","ethereum","events","token-explorer"],"latest_commit_sha":null,"homepage":"https://bokkypoobah.github.io/GetStartedWithDevelopingInEthereum/","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bokkypoobah.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-11T07:39:07.000Z","updated_at":"2025-01-09T19:22:02.000Z","dependencies_parsed_at":"2024-09-29T06:18:59.666Z","dependency_job_id":null,"html_url":"https://github.com/bokkypoobah/GetStartedWithDevelopingInEthereum","commit_stats":{"total_commits":147,"total_committers":1,"mean_commits":147.0,"dds":0.0,"last_synced_commit":"7298dba739cec4370687c8f1527c0aa0449568d2"},"previous_names":["bokkypoobah/gettingstartedinethereum","bokkypoobah/getstartedwithdevelopinginethereum"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bokkypoobah/GetStartedWithDevelopingInEthereum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokkypoobah%2FGetStartedWithDevelopingInEthereum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokkypoobah%2FGetStartedWithDevelopingInEthereum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokkypoobah%2FGetStartedWithDevelopingInEthereum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokkypoobah%2FGetStartedWithDevelopingInEthereum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bokkypoobah","download_url":"https://codeload.github.com/bokkypoobah/GetStartedWithDevelopingInEthereum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bokkypoobah%2FGetStartedWithDevelopingInEthereum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273699717,"owners_count":25152285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["approvals","balances","erc-1155","erc-20","erc-721","ethereum","events","token-explorer"],"created_at":"2024-09-24T13:17:27.072Z","updated_at":"2025-09-05T01:49:24.293Z","avatar_url":"https://github.com/bokkypoobah.png","language":"Solidity","readme":"# Get Started With Developing In Ethereum\n\nMaterials prepared for [ETHSydney August - Get started with developing in Ethereum](https://lu.ma/42iq2h0p), Tuesday Aug 13 2024.\n\nIf you like this, please share it.\n\n##### Aim\n* Have the capabilities to launch your own **sh*tcoin** within minutes!\n\n    You can do this on Ethereum mainnet for the cost of ~600k gas or ~USD 3, at time of writing. As well as most \"EVM\" (Ethereum Virtual Machine) [compatible chains](https://l2beat.com/scaling/summary) like Arbitrum, Base or Optimism.\n* Demystify ERC-20s\n\n    An ERC-20 token contract is a little bit like a database table with two columns - owner and balance. And with stored procedures to implement transfer rules.\n\n    **balances:** section in the ERC-20 browser.\n\n    \u003ckbd\u003e\u003cimg src=\"images/ERC-20-Balance-1.png\" /\u003e\u003c/kbd\u003e\n\n    With events logs recording the transfers\n\n    **events:** section in the ERC-20 browser.\n\n    \u003ckbd\u003e\u003cimg src=\"images/ERC-20-Balance-2.png\" /\u003e\u003c/kbd\u003e\n\n    Token amounts are stored as raw numbers with a specified number of `decimals`, `18` in this case.\n\n##### Steps\n* Deploy your own ERC-20 token contract - [contracts/ERC20Token.sol](contracts/ERC20Token.sol) (Sepolia [0x1e5D...4D59](https://sepolia.etherscan.io/address/0x1e5Df6dB242d07cc40a37b634022c02F73A74D59#code)) or [contracts/FixedSupplyToken.sol](contracts/FixedSupplyToken.sol) (Sepolia [0x8fAF...d093](https://sepolia.etherscan.io/address/0x8fAF86fa6B137B316D699e23Ae1DcA3C12e7d093#code)).\n* Interact with your own ERC-20 token contract\n* Deploy a simple vault that operates with your ERC-20 token contract - [contracts/SimpleVault.sol](contracts/SimpleVault.sol)\n* Interact with your simple vault\n\n##### Outcome\nOn completion of Exercises 1 \u0026 2, you will have deployed and interacted with your first ERC-20 token contract on the Ethereum Sepolia testnet\n\n##### ERC-20 Token Browser\n* https://bokkypoobah.github.io/GetStartedWithDevelopingInEthereum/\n\nI built a simple tool to inspect and interact with ERC-20 token contracts. The main source code file is [docs/index.html](docs/index.html). View the developer pane when running this tool to see the simple interactions required between your web browser and the blockchain.\n\nThis tool can also be run locally by executing e.g. [anywhere](https://www.npmjs.com/package/anywhere?activeTab=readme) in the [docs/](docs/) folder of this GitHub repository downloaded onto your local machine\n\n##### Requirements\n* Web browser, with the MetaMask https://metamask.io/, or Rabby https://rabby.io/ browser plug-in\n* Sepolia testnet ethers in your MetaMask account. Try https://www.alchemy.com/faucets, https://www.infura.io/faucet/sepolia, https://sepolia-faucet.pk910.de/ or https://cloud.google.com/application/web3/faucet/ethereum/sepolia\n* For developing and testing on your local computer, familiarity with the Linux, MacOS or Windows command line. And [npx](https://docs.npmjs.com/cli/v10/commands/npx) to run commands from Node packages.\n\n##### TODO\n* Contents and UI for ERC-721 and ERC-1155\n\n\u003cbr /\u003e\n\n---\n\n## Table Of Contents\n\n* [Overview](#overview)\n* [Exercise 1 - Deploy Your Own ERC-20 Token Contract](#exercise-1---deploy-your-own-erc-20-token-contract)\n* [Exercise 2 - Interact With Your ERC-20 Token Contract](#exercise-2---interact-with-your-erc-20-token-contract)\n\n\u003cbr /\u003e\n\n---\n\n## Overview\n\u003ckbd\u003e\u003cimg src=\"images/Overview.png\" /\u003e\u003c/kbd\u003e\n\n\n\u003cbr /\u003e\n\n---\n\n## Exercise 1 - Deploy Your Own ERC-20 Token Contract\n\nGo to https://remix.ethereum.org/. In the `FILE EXPLORER` tab, create a new `ERC20Token.sol` document under `default_workspace` -\u003e `contracts`. Copy the content from [contracts/ERC20Token.sol](contracts/ERC20Token.sol) or , or [contracts/FixedSupplyToken.sol](contracts/FixedSupplyToken.sol) and paste into your newly created `ERC20Token.sol` document.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-1.png\" /\u003e\u003c/kbd\u003e\n\nChange the `_name` and `_symbol` on lines 80 and 81. Save and you should have a green tick below the third icon on the sidebar.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-2.png\" /\u003e\u003c/kbd\u003e\n\nSwitch to the `SOLIDITY COMPILER` tab. Note the `COMPILER` version, `0.8.26+commit.8a87fa7a` in this case. Check that `Enable optimisation` is ticked and the number beside it set to `200`.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-3.png\" /\u003e\u003c/kbd\u003e\n\nSwitch to the `DEPLOY \u0026 RUN TRANSACTIONS` tab. Set `ENVIRONMENT` to `Injected Provider - MetaMask` and your MetaMask account should appear under the `ACCOUNT` label.\n\nSelect `CONTRACT` to be `ERC20Token - contracts/ERC20Token.sol`.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-4.png\" /\u003e\u003c/kbd\u003e\n\nClick [Deploy], and [Confirm] your transaction in MetaMask.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-5.png\" /\u003e\u003c/kbd\u003e\n\nIn the bottom pane, you will see your completed transaction and newly created `contract address`. `0xac09587d186d70d93dd9b16328c2e4fa845cc9cf` in my case.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-6.png\" /\u003e\u003c/kbd\u003e\n\nThe contract can be viewed at https://sepolia.etherscan.io/address/0xac09587d186d70d93dd9b16328c2e4fa845cc9cf, in my case.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-7.png\" /\u003e\u003c/kbd\u003e\n\nSwitch to the `Contract` tab.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-8.png\" /\u003e\u003c/kbd\u003e\n\nClick on [Verify and Publish] to upload the source code for your ERC-20 token contract. Select the `Compiler Type` of `Solidity(Single file)`. Select the `Compiler Version` to compiler version you compiled your contract with, `0.8.26+commit.8a87fa7a` currently. Select the `Open Source License Type` of `3) MIT License (MIT)`. Click [Continue].\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-9.png\" /\u003e\u003c/kbd\u003e\n\nPaste the contents of ERC20Token.sol from Remix into the text box under `Enter the Solidity Contract Code below`.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-10.png\" /\u003e\u003c/kbd\u003e\n\nSet `Optimization` to `Yes` and `Runs` to `200`, matching the same parameters in Remix above.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-11.png\" /\u003e\u003c/kbd\u003e\n\nClick [Verify and Publish].\n\n**CONGRATULATIONS** You have published your ?first contract!\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-12.png\" /\u003e\u003c/kbd\u003e\n\nThe newly deployed contract code can be viewed at https://sepolia.etherscan.io/address/0xac09587d186d70d93dd9b16328c2e4fa845cc9cf#code, in my case.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-13.png\" /\u003e\u003c/kbd\u003e\n\nThe ERC-20 token transactions can be viewed at https://sepolia.etherscan.io/token/0xac09587d186d70d93dd9b16328c2e4fa845cc9cf, in my case. You can see `1,000,000` tokens being minted from address `0x0000...0000` to deploying address.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-14.png\" /\u003e\u003c/kbd\u003e\n\nClick on the [Holders] tab to view the account holdings.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-DeployERC20-15.png\" /\u003e\u003c/kbd\u003e\n\n\u003cbr /\u003e\n\n---\n\n## Exercise 2 - Interact With Your ERC-20 Token Contract\n\nView your ERC-20 token contract on https://bokkypoobah.github.io/GetStartedWithDevelopingInEthereum/.\n\nUsing my newly deployed ERC-20 token contract `0xAC09587d186D70d93dd9B16328C2E4fA845cC9CF`, you can see the initially minted `1,000,000` `TOOSEXY` tokens transferred to my account when my ERC-20 token contract was deployed.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-1.png\" /\u003e\u003c/kbd\u003e\n\nIf required, create your second MetaMask account and transfers some Sepolia testnet ethers to it.\n\nIn the **transfer:** block, set `to:` to your second MetaMask account, and `tokens:` to `10`. Click [Transfer], then confirm the transaction in MetaMask.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-2.png\" /\u003e\u003c/kbd\u003e\n\nAfter MetaMask sends your transaction, you should see your `txHash:`. Click on the link to `View in explorer` if you want to view your transaction.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-3.png\" /\u003e\u003c/kbd\u003e\n\nClick [Retrieve], and you can see the new transaction of `10` tokens, and 3 rows in the **balances:** table.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-4.png\" /\u003e\u003c/kbd\u003e\n\nExecute a second transfer of `1` token to your second account.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-5.png\" /\u003e\u003c/kbd\u003e\n\nClick [Retrieve] at the top of the page, and you can see the new transaction of `1` token, and **balances:** table updated appropriately.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-6.png\" /\u003e\u003c/kbd\u003e\n\nIn the **approve:** block, set `spender:` to your second MetaMask account, and `tokens:` to `100`. Click [Approve], then confirm the transaction in MetaMask.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-7.png\" /\u003e\u003c/kbd\u003e\n\nAfter MetaMask sends your transaction, you should see your `txHash:`. Click on the link to `View in explorer` if you want to view your transaction.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-8.png\" /\u003e\u003c/kbd\u003e\n\nClick [Retrieve] at the top of the page, and you can see the new `Approval` transaction of `100` token, and **allowances:** table updated appropriately.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-9.png\" /\u003e\u003c/kbd\u003e\n\nIn the **allowance:** block, you can check the allowance just set.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-10.png\" /\u003e\u003c/kbd\u003e\n\nSwitch to your second account in MetaMask.\n\nIn the **transferFrom:** block, set `from:` to be your first account, and `tokens:` to be `0.12345`. Click [Transfer From], then confirm the transaction in MetaMask.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-11.png\" /\u003e\u003c/kbd\u003e\n\nClick [Retrieve] at the top of the page, and you can see the new `Transfer` transaction of `0.12345` token, and **balances:** table updated appropriately.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-12.png\" /\u003e\u003c/kbd\u003e\n\nIn the **allowance:** block, you can see that the allowance of `100` that you set has now been reduced to `99.87655`, as account2 has used `0.12345` of their allowance.\n\n\u003ckbd\u003e\u003cimg src=\"images/Exercise-ExplorerERC20-13.png\" /\u003e\u003c/kbd\u003e\n\n\u003cbr /\u003e\n\n---\n\n## Exercise 3 - SimpleVault Gadget for ERC-20s\n\nTODO\n\n##### Aim\n* Deploy and interact with a simple gadget that uses the ERC-20 basic building block\n\n##### Steps\n1. Set up the Hardhat testing environment - https://hardhat.org/docs\n2. Modify [contracts/SimpleVault.sol](contracts/SimpleVault.sol) to break the functionality and confirm with the tests\n3. Deploy your own SimpleVault to the Sepolia testnet\n4. Send and withdraw some of your very own ERC-20 tokens created in Exercise 1\n\n#### Exercise 1 - Step 1 - Hardhat Testing Environment\n\n```bash\nnpm install --save-dev hardhat\n\n# Run test\nnpx hardhat test\n\n# Or run test and save output in ./testIt.out\n./10_testIt.sh\n#  00_test_0\n#    Deployment\n#        Signers\n#        * owner: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\n#        * otherAccount: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8\n#        Deploying ERC20\n#        * symbol: MYSYMBOL\n#        * name: My Name\n#        * decimals: 18\n#        * totalSupply: 1000000000000000000000000\n#        Deploying SimpleVault\n#        * owner: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\n#      ✔ ERC20 token should have the correct symbol, name, decimals and totalSupply (548ms)\n#      ✔ ERC20 token should emit an event on transfers and balanceOf adds up\n#      ✔ SimpleVault should process token deposits and withdrawals correctly\n#\n#\n#  3 passing (581ms)\n```\n\n\u003cbr /\u003e\n\n---\n\n## Building Blocks - Tokens\n\n### ERC-20 Fungible Tokens - \"Coins\"\n\ne.g., Bank balance, Opal card balance, transfers\n\n\u003ckbd\u003e\u003cimg src=\"images/Overview-ERC-20.png\" /\u003e\u003c/kbd\u003e\n\n* [contracts/ERC20Token.sol](contracts/ERC20Token.sol)\n\n### ERC-721 Non-Fungible Tokens - \"Pictures\"\n\ne.g., Bank account number, Opal card number, drivers license, registry item\n\n\u003ckbd\u003e\u003cimg src=\"images/Overview-ERC-721.png\" /\u003e\u003c/kbd\u003e\n\n* [contracts/ERC721Token.sol](contracts/ERC721Token.sol)\n\n### ERC-1155 Non-Fungible Tokens - \"Coins \u0026 Pictures\"\n\ne.g., Game items\n\n\u003ckbd\u003e\u003cimg src=\"images/Overview-ERC-1155.png\" /\u003e\u003c/kbd\u003e\n\n* [contracts/ERC1155Token.sol](contracts/ERC1155Token.sol)\n\n\u003cbr /\u003e\n\n---\n\n\u003c!--\n## Screenshots of ERC-20 Explorer\n\n[https://bokkypoobah.github.io/GetStartedWithDevelopingInEthereum/](https://bokkypoobah.github.io/GetStartedWithDevelopingInEthereum/)\n\n### ERC-20 Explorer on Sepolia\n\n\u003ckbd\u003e\u003cimg src=\"images/Explore-ERC-20-1.png\" /\u003e\u003c/kbd\u003e\n\u003ckbd\u003e\u003cimg src=\"images/Explore-ERC-20-2.png\" /\u003e\u003c/kbd\u003e\n\u003ckbd\u003e\u003cimg src=\"images/Explore-ERC-20-3.png\" /\u003e\u003c/kbd\u003e\n\u003ckbd\u003e\u003cimg src=\"images/Explore-ERC-20-4.png\" /\u003e\u003c/kbd\u003e\n\u003ckbd\u003e\u003cimg src=\"images/Explore-ERC-20-5.png\" /\u003e\u003c/kbd\u003e\n\n\u003cbr /\u003e\n\n---\n\n--\u003e\n\n## Resources\n\n### Solidity\n\n* Solidity compiler and deployer - [https://remix.ethereum.org/](https://remix.ethereum.org/)\n* Solidity Documentation - [https://docs.soliditylang.org/](https://docs.soliditylang.org/)\n* OpenZeppelin Contracts - [https://github.com/OpenZeppelin/openzeppelin-contracts](https://github.com/OpenZeppelin/openzeppelin-contracts)\n* Hardhat development environment - [https://hardhat.org/](https://hardhat.org/)\n\n### Other\n\n* [mindmap/GetStartedWithDevelopingInEthereum-202408.mm](mindmap/GetStartedWithDevelopingInEthereum-202408.mm) that can be viewed in [FreePlane](https://docs.freeplane.org/)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nEnjoy!\n\n(c) BokkyPooBah / Bok Consulting Pty Ltd 2024. The MIT Licence.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbokkypoobah%2Fgetstartedwithdevelopinginethereum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbokkypoobah%2Fgetstartedwithdevelopinginethereum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbokkypoobah%2Fgetstartedwithdevelopinginethereum/lists"}