Faucet Smart Contract Tutorial | Solidity Tutorial

2022 ж. 16 Қыр.
13 798 Рет қаралды

In this faucet smart contract tutorial we build a faucet smart contract to give away ERC20 tokens on Ethereum to anyone who requests them. Topics covered in this video include Solidity interfaces, events, working with time and sending and receiving tokens.
Project repo:
github.com/jspruance/erc20-tu...
Goerli testnet faucet:
goerlifaucet.com/
Install MetaMask:
metamask.io/
Remix IDE:
remix.ethereum.org/

Пікірлер
  • Super useful videos! Thanks for sharing them with us!

    @alexeitarasov1920@alexeitarasov192023 күн бұрын
  • Thanks, dude! I'm working on my graduation project and you helped me so much

    @riyadhalkhanin8484@riyadhalkhanin8484 Жыл бұрын
    • That's awesome! Glad it was helpful.

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
  • Excellent video, thanks 👍🏼

    @adamoc@adamoc Жыл бұрын
  • Great content , thanks for sharing

    @user-yg1su9dr1x@user-yg1su9dr1x Жыл бұрын
  • thank you so much, it is so helpful for my

    @thocodeditrade@thocodeditrade Жыл бұрын
  • Another very informative video! Is there any chance you can create future content that focuses on emit/event/indexed? Also, there was a typo on line 5 of the deploy file so I was expecting an error to be thrown but it worked ok. Was the line skipped?

    @jims7089@jims7089 Жыл бұрын
    • I'll add that to my list of videos to make. I think I fixed it off screen since it was a spelling mistake that other people probably didn't make. Good catch! : )

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
  • Thank you....!!!!!

    @kpxiong3377@kpxiong3377 Жыл бұрын
  • I think you might have a reentrancy attack opening on your faucet and all the tokens could be drained from the balance. Maybe not a big deal, because it would only take what you put in???

    @gooblio@gooblio Жыл бұрын
  • You are a smart guy.i wished i could take you to lunch.

    @dekonfrost7@dekonfrost73 ай бұрын
  • do you prefer truffle or hardhat? I think you have tutorials for both.

    @f_ftactics7928@f_ftactics7928 Жыл бұрын
  • keep on the great content!

    @baselkelziye4552@baselkelziye4552 Жыл бұрын
    • Thanks!

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
  • thanks alot man

    @bestzenyatta3362@bestzenyatta3362 Жыл бұрын
  • Thanks for this great and helpful video...I request you to make videos on building DeFi applications pls...thanks again

    @zakisiddiqui9527@zakisiddiqui9527 Жыл бұрын
    • I will be doing some DeFi videos soon. Thanks!

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
  • Interesting!

    @sukiratwarring6219@sukiratwarring6219 Жыл бұрын
  • Awesome! Could u pls make a video about vault smart contract with some advanced features

    @daniel7007@daniel7007 Жыл бұрын
    • Sure. I was thinking about something like that - a treasury or vault contract. Putting it on my list of videos to make - thanks for the suggestion.

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
    • @@BlockExplorerMedia appreciate🙏

      @daniel7007@daniel7007 Жыл бұрын
  • question please: Is there any difference in Solidity between 10**18 and 1e18 ?

    @Imperial_Dynamics@Imperial_Dynamics Жыл бұрын
    • They are the same.

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
  • Hey, I have deployed Token contract and Faucet contract on mumbai. When I check my address it's says I have deployed Token contract but Faucet contract is missing. on remix When I paste Faucet contract and code. Functions gives correct outputs, but I cant transfer OCT token to Faucet contract. metamask is failing transactions. any solution

    @irakli4797@irakli4797 Жыл бұрын
  • ​ @Block Explorer What is need of inerface IERC20 here I don't understand, We are niether inheritng it nor implenting their functions transfer and balanceOf ?

    @adityasingh11156@adityasingh11156 Жыл бұрын
    • hey Aditya, the reason the interface is needed here is to communicate with other smart contracts. the pattern is to define an interface including the methods being used on the external smart contract and then instantiate a local instance of that contract by passing in the address of that contract (see line ~27 in the constructor - 'token = IERC20(tokenAddress);'). then we can call methods on that remote contract via our local instance such as 'token.transfer' (line 47) and 'token.balanceOf' (line 55). there we are interacting with the remote token smart contract, from our smart contract. does that help clarify?

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
    • Oh and basically the reason it's needed is so that the compiler knows what those methods on the remote contract looks like (input, output, return value, etc) since it has no way of knowing otherwise at compile time.

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
    • @@BlockExplorerMedia Ok Thanks 😊 Now I understand.

      @adityasingh11156@adityasingh11156 Жыл бұрын
    • @@BlockExplorerMedia hey is this IERC20 interface which is written in this local smart contract different from the openzeppelin one ? or they work same once the token variable is instantiated i m getting confused in that

      @thinkingmad1685@thinkingmad1685 Жыл бұрын
  • Hi about your previous video about AWS serverless Web application i done all post,get,patch but only delete is showing 502 internal server error what should I do

    @lucifer2416@lucifer2416 Жыл бұрын
    • Execution log for request e34860bf-0f0e-456f-abf7-4f83a5b454ad Thu Sep 15 06:14:36 UTC 2022 : Starting execution for request: e34860bf-0f0e-456f-abf7-4f83a5b454ad Thu Sep 15 06:14:36 UTC 2022 : HTTP Method: DELETE, Resource Path: /products/-id Thu Sep 15 06:14:36 UTC 2022 : Method request path: {} Thu Sep 15 06:14:36 UTC 2022 : Method request query string: {} Thu Sep 15 06:14:36 UTC 2022 : Method request headers: {"Content-Type"="application/json"} Thu Sep 15 06:14:36 UTC 2022 : Method request body before transformations: Thu Sep 15 06:14:36 UTC 2022 : Request validation succeeded for content type application/json Thu Sep 15 06:14:36 UTC 2022 : Endpoint request URI: lambda.ap-south-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-south-1:628942436337:function:hexaldelete/invocations Thu Sep 15 06:14:36 UTC 2022 : Endpoint request headers: {X-Amz-Date=20220915T061436Z, x-amzn-apigateway-api-id=04rn5os185, Accept=application/json, User-Agent=AmazonAPIGateway_04rn5os185, Host=lambda.ap-south-1.amazonaws.com, X-Amz-Content-Sha256=d1633ffa0a94a6f97e61e364580cb4e929d57bb498e3fb2f45e8132a0f9f0f13, X-Amzn-Trace-Id=Root=1-6322c2cc-9e58ffc793b3a4897f4ac801, x-amzn-lambda-integration-tag=e34860bf-0f0e-456f-abf7-4f83a5b454ad, Authorization=**********************************************************************************************************************************************************************************************************************************************************************************************************************************************0fcf9c, X-Amz-Source-Arn=arn:aws:execute-api:ap-south-1:628942436337:04rn5os185/test-invoke-stage/DELETE/products/-id, X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDUaCmFwLXNvdXRoLTEiRzBFAiBNI6sDFnw5zpxwM1PQ0+Y16Ij34Bdypj8j8Tt5ce/zMwIhAInVpklx3FeV6ATpx2LUWU8xLLBqRAHSBRTBCct [TRUNCATED] Thu Sep 15 06:14:36 UTC 2022 : Endpoint request body after transformations: {"resource":"/products/-id","path":"/products/-id","httpMethod":"DELETE","headers":{"\"Content-Type\"":"\"application/json\""},"multiValueHeaders":{"\"Content-Type\"":["\"application/json\""]},"queryStringParameters":null,"multiValueQueryStringParameters":null,"pathParameters":null,"stageVariables":null,"requestContext":{"resourceId":"shm2so","resourcePath":"/products/-id","httpMethod":"DELETE","extendedRequestId":"YfNf9GD7BcwFT4w=","requestTime":"15/Sep/2022:06:14:36 +0000","path":"/products/-id","accountId":"628942436337","protocol":"HTTP/1.1","stage":"test-invoke-stage","domainPrefix":"testPrefix","requestTimeEpoch":1663222476391,"requestId":"e34860bf-0f0e-456f-abf7-4f83a5b454ad","identity":{"cognitoIdentityPoolId":null,"cognitoIdentityId":null,"apiKey":"test-invoke-api-key","principalOrgId":null,"cognitoAuthenticationType":null,"userArn":"arn:aws:iam::628942436337:root","apiKeyId":"test-invoke-api-key-id","userAgent":"aws-internal/3 aws-sdk-java/1.12.239 Linux/ [TRUNCATED] Thu Sep 15 06:14:36 UTC 2022 : Sending request to lambda.ap-south-1.amazonaws.com/2015-03-31/functions/arn:aws:lambda:ap-south-1:628942436337:function:hexaldelete/invocations Thu Sep 15 06:14:36 UTC 2022 : Received response. Status: 200, Integration latency: 40 ms Thu Sep 15 06:14:36 UTC 2022 : Endpoint response headers: {Date=Thu, 15 Sep 2022 06:14:36 GMT, Content-Type=application/json, Content-Length=353, Connection=keep-alive, x-amzn-RequestId=d2d56d25-84ab-4487-b78c-3fdb9b5e60d9, X-Amz-Function-Error=Unhandled, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X-Amzn-Trace-Id=root=1-6322c2cc-9e58ffc793b3a4897f4ac801;sampled=0} Thu Sep 15 06:14:36 UTC 2022 : Endpoint response body before transformations: {"errorType":"TypeError","errorMessage":"Cannot destructure property 'id' of 'event.pathParameters' as it is null.","trace":["TypeError: Cannot destructure property 'id' of 'event.pathParameters' as it is null."," at Runtime.exports.handler (/var/task/index.js:10:11)"," at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1028:29)"]} Thu Sep 15 06:14:36 UTC 2022 : Lambda execution failed with status 200 due to customer function error: Cannot destructure property 'id' of 'event.pathParameters' as it is null.. Lambda request id: d2d56d25-84ab-4487-b78c-3fdb9b5e60d9 Thu Sep 15 06:14:36 UTC 2022 : Method completed with status: 502

      @lucifer2416@lucifer2416 Жыл бұрын
    • What should I do

      @lucifer2416@lucifer2416 Жыл бұрын
    • Iam also facing same problem please solve it!!

      @aurobindonayak7128@aurobindonayak7128 Жыл бұрын
    • kzhead.info/sun/q66vlsefcJaNZ40/bejne.html

      @lucifer2416@lucifer2416 Жыл бұрын
    • About that video

      @lucifer2416@lucifer2416 Жыл бұрын
  • or just delete my comment instead of help, that works 2 haha

    @josephdelgiorgio3997@josephdelgiorgio3997 Жыл бұрын
    • no worries, I figured it out

      @josephdelgiorgio3997@josephdelgiorgio3997 Жыл бұрын
    • hey Joseph! I only delete spam or offensive comments. Did I miss something? : )

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
    • @@BlockExplorerMedia haha its ok! I posted help a comment with an error message that easily could've looked like spam. I appreciate your videos they are very helpful as im teaching myself via KZhead.

      @josephdelgiorgio3997@josephdelgiorgio3997 Жыл бұрын
    • *posted a help comment

      @josephdelgiorgio3997@josephdelgiorgio3997 Жыл бұрын
    • Oh sorry about that!! I promise it wasn't intentional. If you ever have a question that doesn't get answered feel free to ping me directly. I try to get to as many as possible! Thanks for your support.

      @BlockExplorerMedia@BlockExplorerMedia Жыл бұрын
KZhead