gitextract_wpwvnkz8/ ├── LICENSE ├── README.md ├── projects.md ├── step00_hardhat_helloworld/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── Greeter.sol │ ├── hardhat.config.js │ ├── package.json │ ├── scripts/ │ │ └── sample-script.js │ └── test/ │ └── sample-test.js ├── step01_hardhat_typescript_helloworld/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── Greeter.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── sample-script.ts │ ├── test/ │ │ └── sample-test.ts │ └── tsconfig.json ├── step02_hardhat_simple_storage/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── SimpleStorage.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── sample-script.ts │ ├── test/ │ │ └── sample-test.ts │ └── tsconfig.json ├── step03_solidity_tutorial/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ ├── Demo1.sol │ │ ├── Greeter.sol │ │ ├── SolidityTest.sol │ │ ├── SolidityTest2.sol │ │ ├── SolidityTest3.sol │ │ ├── SolidityTest4.sol │ │ ├── SolidityTest5.sol │ │ ├── SolidityTest6.sol │ │ ├── SolidityTest7.sol │ │ ├── SolidityTest8.sol │ │ └── SolidityTest9.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ ├── deploy.ts │ │ └── sample-script.ts │ ├── test/ │ │ └── sample-test.ts │ └── tsconfig.json ├── step04A_chap2_textbook/ │ ├── .commitlintrc.yaml │ ├── .czrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.yaml │ ├── .github/ │ │ └── FUNDING.yaml │ ├── .gitignore │ ├── .husky/ │ │ ├── .gitignore │ │ ├── commit-msg │ │ └── pre-commit │ ├── .lintstagedrc │ ├── .prettierignore │ ├── .prettierrc.yaml │ ├── .solcover.js │ ├── .solhint.json │ ├── .solhintignore │ ├── .yarn/ │ │ ├── plugins/ │ │ │ └── @yarnpkg/ │ │ │ └── plugin-interactive-tools.cjs │ │ └── releases/ │ │ └── yarn-3.1.0.cjs │ ├── .yarnrc.yml │ ├── README.md │ ├── contracts/ │ │ ├── ABIEncodeExample.sol │ │ ├── AcceptEther.sol │ │ ├── AcceptEtherWithLog.sol │ │ ├── AccountContract.sol │ │ ├── ArraysExample.sol │ │ ├── CallExample.sol │ │ ├── EnumExample.sol │ │ ├── GasExample.sol │ │ ├── LoanStruct.sol │ │ ├── MappingExample.sol │ │ ├── Migrations.sol │ │ ├── OraclizeService.sol │ │ ├── SelectorExample.sol │ │ ├── SkipContract.sol │ │ ├── SpecialFunctions.sol │ │ ├── StringExample.sol │ │ ├── ThisExample.sol │ │ └── VariableStorage.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── tasks/ │ │ ├── accounts.ts │ │ └── deploy/ │ │ ├── greeter.ts │ │ └── index.ts │ ├── test/ │ │ ├── greeter/ │ │ │ ├── Greeter.behavior.ts │ │ │ └── Greeter.ts │ │ └── types.ts │ └── tsconfig.json ├── step04B_chap2_textbook/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .prettierignore │ ├── .solhint.json │ ├── .solhintignore │ ├── README.md │ ├── contracts/ │ │ ├── ABIEncodeExample.sol │ │ ├── CallFunctionDemo.sol │ │ ├── CallerDemo.sol │ │ ├── DemoLib.sol │ │ ├── Greeter.sol │ │ ├── RequestDemo.sol │ │ └── SecondContract.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ ├── deploy.ts │ │ ├── deploy2.ts │ │ ├── deploy3.ts │ │ └── deploy4.ts │ ├── test/ │ │ └── index.ts │ └── tsconfig.json ├── step05A_chap3_textbook/ │ ├── .commitlintrc.yaml │ ├── .czrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.yaml │ ├── .github/ │ │ └── FUNDING.yaml │ ├── .gitignore │ ├── .husky/ │ │ ├── .gitignore │ │ ├── commit-msg │ │ └── pre-commit │ ├── .lintstagedrc │ ├── .prettierignore │ ├── .prettierrc.yaml │ ├── .solcover.js │ ├── .solhint.json │ ├── .solhintignore │ ├── .yarn/ │ │ ├── plugins/ │ │ │ └── @yarnpkg/ │ │ │ └── plugin-interactive-tools.cjs │ │ └── releases/ │ │ └── yarn-3.1.0.cjs │ ├── .yarnrc.yml │ ├── README.md │ ├── contracts/ │ │ ├── AbstractDeposit.sol │ │ ├── ConstantExample.sol │ │ ├── ConstructorExample.sol │ │ ├── ControlledAddressList.sol │ │ ├── EventExample.sol │ │ ├── ExampleInterface.sol │ │ ├── GetterExample.sol │ │ ├── InternalConstructor.sol │ │ ├── MainContract.sol │ │ ├── Migrations.sol │ │ ├── ModifierExample.sol │ │ ├── MultiReturn.sol │ │ ├── TokenList.sol │ │ ├── VisibilityExample.sol │ │ ├── function/ │ │ │ ├── FallbackFuncExample.sol │ │ │ ├── FuncOverload.sol │ │ │ ├── FuncOverride.sol │ │ │ ├── PureFuncExample.sol │ │ │ └── ViewFuncExample.sol │ │ └── inheritance/ │ │ ├── InheritanceExample1.sol │ │ ├── InheritanceExample2.sol │ │ └── MyToken.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── tasks/ │ │ ├── accounts.ts │ │ └── deploy/ │ │ ├── greeter.ts │ │ └── index.ts │ ├── test/ │ │ ├── greeter/ │ │ │ ├── Greeter.behavior.ts │ │ │ └── Greeter.ts │ │ └── types.ts │ └── tsconfig.json ├── step05B_chap3_textbook/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .prettierignore │ ├── .solhint.json │ ├── .solhintignore │ ├── README.md │ ├── contracts/ │ │ ├── DemoConstant.sol │ │ ├── DemoInheritance.sol │ │ ├── Greeter.sol │ │ └── ValueStorage.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ ├── deploy.ts │ │ └── deploy2.ts │ ├── test/ │ │ └── index.ts │ └── tsconfig.json ├── step06A_chap7_erc20_token/ │ ├── .commitlintrc.yaml │ ├── .czrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.yaml │ ├── .github/ │ │ └── FUNDING.yaml │ ├── .gitignore │ ├── .husky/ │ │ ├── .gitignore │ │ ├── commit-msg │ │ └── pre-commit │ ├── .lintstagedrc │ ├── .prettierignore │ ├── .prettierrc.yaml │ ├── .solcover.js │ ├── .solhint.json │ ├── .solhintignore │ ├── .yarn/ │ │ ├── plugins/ │ │ │ └── @yarnpkg/ │ │ │ └── plugin-interactive-tools.cjs │ │ └── releases/ │ │ └── yarn-3.1.0.cjs │ ├── .yarnrc.yml │ ├── README.md │ ├── contracts/ │ │ ├── ERC20.sol │ │ ├── ERC20Advanced.sol │ │ ├── ERC20FullInterface.sol │ │ ├── ERC20Interface.sol │ │ ├── FirstCoin.sol │ │ └── Migrations.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── tasks/ │ │ ├── accounts.ts │ │ └── deploy/ │ │ ├── erc20.ts │ │ └── index.ts │ ├── test/ │ │ └── firstcoin-test.ts │ └── tsconfig.json ├── step06B_chap9_OpenZeppelin/ │ └── .gitignore ├── step06B_chap9_erc20_OpenZeppelin/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .prettierignore │ ├── .prettierrc │ ├── .solhint.json │ ├── .solhintignore │ ├── README.md │ ├── contracts/ │ │ ├── CrowdSale.sol │ │ └── MyToken.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── token-tests.ts │ └── tsconfig.json ├── step07_chap8_erc721_token/ │ ├── .commitlintrc.yaml │ ├── .czrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.yaml │ ├── .github/ │ │ └── FUNDING.yaml │ ├── .gitignore │ ├── .husky/ │ │ ├── .gitignore │ │ ├── commit-msg │ │ └── pre-commit │ ├── .lintstagedrc │ ├── .prettierignore │ ├── .prettierrc.yaml │ ├── .solcover.js │ ├── .solhint.json │ ├── .solhintignore │ ├── .yarn/ │ │ ├── plugins/ │ │ │ └── @yarnpkg/ │ │ │ └── plugin-interactive-tools.cjs │ │ └── releases/ │ │ └── yarn-3.1.0.cjs │ ├── .yarnrc.yml │ ├── README.md │ ├── contracts/ │ │ ├── ERC721.sol │ │ ├── ERC721Enumerable.sol │ │ ├── ERC721Full.sol │ │ ├── ERC721Metadata.sol │ │ ├── IERC721.sol │ │ ├── IERC721Enumerable.sol │ │ ├── IERC721Full.sol │ │ ├── IERC721Metadata.sol │ │ ├── IERC721Receiver.sol │ │ ├── Interfaces/ │ │ │ ├── ERC165.sol │ │ │ ├── ERC721.sol │ │ │ ├── ERC721Enumerable.sol │ │ │ ├── ERC721Metadata.sol │ │ │ └── ERC721TokenReceiver.sol │ │ ├── Migrations.sol │ │ ├── introspection/ │ │ │ ├── ERC165.sol │ │ │ └── IERC165.sol │ │ └── utils/ │ │ └── Address.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── tasks/ │ │ ├── accounts.ts │ │ └── deploy/ │ │ ├── erc20.ts │ │ └── index.ts │ ├── test/ │ │ └── firstcoin-test.ts │ └── tsconfig.json ├── step08A_nft_erc721_OpenZeppelin/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .prettierignore │ ├── .prettierrc │ ├── .solhint.json │ ├── .solhintignore │ ├── README.md │ ├── contracts/ │ │ └── ApartmentCollection.sol │ ├── dist/ │ │ ├── hardhat.config.d.ts │ │ ├── hardhat.config.js │ │ ├── scripts/ │ │ │ ├── deploy.d.ts │ │ │ └── deploy.js │ │ └── test/ │ │ ├── index.d.ts │ │ └── index.js │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── index.ts │ └── tsconfig.json ├── step08B_erc1155_Token/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── MultiTokenNFT.sol │ ├── hardhat.config.ts │ ├── metadata/ │ │ ├── 0.json │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ └── 5.json │ ├── package.json │ ├── scripts/ │ │ ├── deploy.ts │ │ ├── mint-token.ts │ │ └── read-token-info.ts │ ├── tasks/ │ │ ├── read-greeting.js │ │ └── set-greeting.js │ ├── test/ │ │ └── sample-test.ts │ └── tsconfig.json ├── step08C_erc1155_TokenFractions/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ ├── FractionalNFT.sol │ │ └── Greeter.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── tasks/ │ │ ├── read-greeting.js │ │ └── set-greeting.js │ ├── test/ │ │ └── sample-test.ts │ └── tsconfig.json ├── step09_withdrawal_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── Splitter.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── test.ts │ └── tsconfig.json ├── step10_access_restriction_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── AccessRestriction.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── access-test.ts │ └── tsconfig.json ├── step11_factory_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ ├── CloneFactory.sol │ │ ├── Factory1.sol │ │ ├── Factory2.sol │ │ └── Factory3.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── access-test.ts │ └── tsconfig.json ├── step12_state_machine_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── DepositLock.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── test.ts │ └── tsconfig.json ├── step13_fail_early_loud_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── FailEarly.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── test.ts │ └── tsconfig.json ├── step14_wrapped_token_design_pattern/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── WETH.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── test.ts │ └── tsconfig.json ├── step15_gnosis_safe/ │ └── README.md ├── step16_chainlink_random_number/ │ ├── .gitignore │ ├── README.md │ ├── contracts/ │ │ └── VRFD20.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ └── deploy.ts │ ├── test/ │ │ └── contract-test.ts │ └── tsconfig.json ├── step17_chainlink_starter_kit/ │ ├── .eslintrc.js │ ├── .gitattributes │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── contracts/ │ │ ├── APIConsumer.sol │ │ ├── KeepersCounter.sol │ │ ├── PriceConsumerV3.sol │ │ ├── RandomNumberConsumer.sol │ │ └── test/ │ │ ├── LinkToken.sol │ │ ├── MockOracle.sol │ │ ├── MockV3Aggregator.sol │ │ └── VRFCoordinatorMock.sol │ ├── deploy/ │ │ ├── 00_Deploy_Mocks.js │ │ ├── 01_Deploy_PriceConsumerV3.js │ │ ├── 02_Deploy_APIConsumer.js │ │ ├── 03_Deploy_RandomNumberConsumer.js │ │ ├── 04_Deploy_KeepersCounter.js │ │ └── 99_Setup_Contracts.js │ ├── hardhat.config.js │ ├── helper-hardhat-config.js │ ├── package.json │ ├── tasks/ │ │ ├── accounts.js │ │ ├── api-consumer/ │ │ │ ├── index.js │ │ │ ├── read-data.js │ │ │ └── request-data.js │ │ ├── balance.js │ │ ├── block-number.js │ │ ├── keepers/ │ │ │ ├── index.js │ │ │ └── read-keepers-counter.js │ │ ├── price-consumer/ │ │ │ ├── index.js │ │ │ ├── read-price-feed-ens.js │ │ │ └── read-price-feed.js │ │ ├── random-number-consumer/ │ │ │ ├── index.js │ │ │ ├── read-random-number.js │ │ │ └── request-random-number.js │ │ └── withdraw-link.js │ └── test/ │ ├── integration/ │ │ ├── APIConsumer_int_test.js │ │ └── RandomNumberConsumer_int_test.js │ └── unit/ │ ├── APIConsumer_unit_test.js │ ├── KeepersCounter_unit_test.js │ ├── PriceConsumerV3_unit_test.js │ └── RandomNumberConsumer_unit_test.js ├── step18_upgradable_contract_design_pattern/ │ ├── .gitignore │ ├── .openzeppelin/ │ │ └── unknown-31337.json │ ├── README.md │ ├── contracts/ │ │ ├── SimpleStorageUpgradeable.sol │ │ └── SimpleStorageUpgradeableV2.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ ├── deploy.ts │ │ └── upgrade.ts │ ├── test/ │ │ └── test.ts │ └── tsconfig.json ├── step19_dao/ │ └── readme.md ├── step20_real_estate_tokenization/ │ └── readme.md ├── step21_dapp_architecture/ │ └── readme.md ├── step21_helloworld_dapp/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── SimpleStorage.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ └── tsconfig.json ├── step22_node_providers/ │ └── readme.md ├── step23_the_graph_theory/ │ └── readme.md ├── step24_the_graph_example/ │ └── readme.md ├── stepxx_solana_development/ │ └── readme.md ├── stepxx_yield_farming/ │ └── README.md └── web3/ ├── readme.md ├── step00_node_getbalance/ │ ├── .gitignore │ ├── EthereumAccount.ts │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step01_smartcontract_read_data/ │ ├── .gitignore │ ├── SmartContract.ts │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step02_smartcontract_read_data_typechain/ │ ├── .gitignore │ ├── SmartContract.ts │ ├── abi/ │ │ └── dai.json │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step03_send_transaction_unlocked_account/ │ ├── .gitignore │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── transaction.ts │ ├── tsconfig.json │ └── tslint.json ├── step04_send_transaction_signed/ │ ├── .gitignore │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── signedTransaction.ts │ ├── tsconfig.json │ └── tslint.json ├── step05_deploy_contract/ │ ├── .gitignore │ ├── deploySmartContract.ts │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step06_invoke_smartContract_with_signed_functions/ │ ├── .gitignore │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── runSmartContract.ts │ ├── tsconfig.json │ └── tslint.json ├── step07_fetch_events/ │ ├── .gitignore │ ├── getEventsDai.ts │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step08_inspect_blocks/ │ ├── .gitignore │ ├── index.ts │ ├── inspectBlocks.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ └── tslint.json ├── step09_utils/ │ ├── .gitignore │ ├── index.ts │ ├── package.json │ ├── readme.md │ ├── tsconfig.json │ ├── tslint.json │ └── utils.ts ├── step10_metamask/ │ ├── step00_ethereum_connect/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src/ │ │ ├── App.css │ │ ├── App.jsx │ │ ├── App.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ ├── step01_ethereum_send_transaction/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src/ │ │ ├── App.css │ │ ├── App.jsx │ │ ├── App.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ ├── step02_web3_basic/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ └── tsconfig.json │ └── step03_web3_send_transaction/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ └── tsconfig.json ├── step11_react_examples/ │ ├── market_place/ │ │ ├── Readme.md │ │ ├── backend/ │ │ │ ├── build/ │ │ │ │ └── contracts/ │ │ │ │ ├── Marketplace.json │ │ │ │ └── Migrations.json │ │ │ ├── contracts/ │ │ │ │ ├── Marketplace.sol │ │ │ │ └── Migrations.sol │ │ │ ├── migrations/ │ │ │ │ ├── 1_initial_migration.js │ │ │ │ └── 2_deploy_contracts.js │ │ │ ├── package.json │ │ │ ├── test/ │ │ │ │ ├── .gitkeep │ │ │ │ └── Marketplace.test.js │ │ │ └── truffle-config.js │ │ └── frontend/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── Main.tsx │ │ │ ├── Navbar.tsx │ │ │ ├── global.d.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ └── web3-v1-contracts/ │ │ ├── Marketplace.d.ts │ │ ├── Migrations.d.ts │ │ └── types.d.ts │ ├── market_place_redux/ │ │ ├── Readme.md │ │ ├── backend/ │ │ │ ├── build/ │ │ │ │ └── contracts/ │ │ │ │ ├── Marketplace.json │ │ │ │ └── Migrations.json │ │ │ ├── contracts/ │ │ │ │ ├── Marketplace.sol │ │ │ │ └── Migrations.sol │ │ │ ├── migrations/ │ │ │ │ ├── 1_initial_migration.js │ │ │ │ └── 2_deploy_contracts.js │ │ │ ├── package.json │ │ │ ├── test/ │ │ │ │ ├── .gitkeep │ │ │ │ └── Marketplace.test.js │ │ │ └── truffle-config.js │ │ └── frontend/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── Main.tsx │ │ │ ├── Navbar.tsx │ │ │ ├── abis/ │ │ │ │ ├── Marketplace.json │ │ │ │ └── Migrations.json │ │ │ ├── global.d.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ ├── store/ │ │ │ │ ├── MarketplaceSlice.ts │ │ │ │ └── store.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── types/ │ │ └── web3-v1-contracts/ │ │ ├── Marketplace.d.ts │ │ ├── Migrations.d.ts │ │ └── types.d.ts │ ├── todo_app/ │ │ ├── .gitignore │ │ ├── blockchainBackend/ │ │ │ ├── README.md │ │ │ ├── contracts/ │ │ │ │ └── TodoList.sol │ │ │ ├── migrations/ │ │ │ │ └── 1_deploy_contract.js │ │ │ ├── test/ │ │ │ │ └── .gitkeep │ │ │ └── truffle-config.js │ │ └── frontend/ │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── abi/ │ │ │ │ └── todoList.json │ │ │ ├── config.ts │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ └── tsconfig.json │ └── todo_app_redux/ │ ├── .gitignore │ ├── blockchainBackend/ │ │ ├── README.md │ │ ├── contracts/ │ │ │ └── TodoList.sol │ │ ├── migrations/ │ │ │ └── 1_deploy_contract.js │ │ └── truffle-config.js │ └── frontend/ │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── abi/ │ │ │ └── todoList.json │ │ ├── config.ts │ │ ├── index.tsx │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ ├── setupTests.ts │ │ └── store/ │ │ ├── store.ts │ │ └── todoListSlice.ts │ ├── tsconfig.json │ └── types/ │ └── web3-v1-contracts/ │ └── types.d.ts └── step12_gatsby_examples/ ├── socialMediaPosts_app/ │ ├── .gitignore │ ├── README.md │ ├── backend/ │ │ ├── README.md │ │ ├── contracts/ │ │ │ ├── Migrations.sol │ │ │ └── socialMedia.sol │ │ ├── migrations/ │ │ │ ├── 1_initial_migration.js │ │ │ └── 2_socialMedia_migration.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── .gitkeep │ │ │ └── socialMedia.test.js │ │ └── truffle-config.js │ └── frontend/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── LICENSE │ ├── README.md │ ├── gatsby-browser.js │ ├── gatsby-config.js │ ├── gatsby-node.js │ ├── gatsby-ssr.js │ ├── package.json │ ├── src/ │ │ ├── abis/ │ │ │ ├── Migrations.json │ │ │ └── SocialMedia.json │ │ └── pages/ │ │ └── index.tsx │ ├── tsconfig.json │ ├── tslint.json │ └── types/ │ └── web3-v1-contracts/ │ ├── Election.d.ts │ ├── Migrations.d.ts │ └── types.d.ts └── voting_app/ ├── .gitignore ├── backend/ │ ├── README.MD │ ├── contracts/ │ │ ├── Election.sol │ │ └── Migrations.sol │ ├── migrations/ │ │ ├── 1_initial_migration.js │ │ └── 2_deploy_contracts.js │ ├── package.json │ ├── test/ │ │ ├── .gitkeep │ │ └── election.js │ └── truffle-config.js ├── frontend/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── LICENSE │ ├── README.md │ ├── gatsby-browser.js │ ├── gatsby-config.js │ ├── gatsby-node.js │ ├── gatsby-ssr.js │ ├── package.json │ ├── src/ │ │ ├── abis/ │ │ │ ├── Election.json │ │ │ └── Migrations.json │ │ ├── components/ │ │ │ ├── footer.tsx │ │ │ ├── global-styles.tsx │ │ │ ├── layout.tsx │ │ │ ├── logo.tsx │ │ │ └── seo.tsx │ │ ├── global.d.ts │ │ ├── modules/ │ │ │ ├── Election.tsx │ │ │ └── types.ts │ │ └── pages/ │ │ ├── 404.tsx │ │ ├── app.tsx │ │ ├── election.tsx │ │ └── index.tsx │ ├── tsconfig.json │ ├── tslint.json │ └── types/ │ └── web3-v1-contracts/ │ ├── Election.d.ts │ ├── Migrations.d.ts │ └── types.d.ts └── readme.md