Faucet Smart Contract Tutorial | Solidity Tutorial

Поділитися
Вставка
  • Опубліковано 16 вер 2022
  • 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/
  • Наука та технологія

КОМЕНТАРІ • 46

  • @riyadhalkhanin8484
    @riyadhalkhanin8484 Рік тому +4

    Thanks, dude! I'm working on my graduation project and you helped me so much

  • @alexeitarasov1920
    @alexeitarasov1920 Місяць тому

    Super useful videos! Thanks for sharing them with us!

  • @adamoc
    @adamoc Рік тому

    Excellent video, thanks 👍🏼

  • @thocodeditrade
    @thocodeditrade Рік тому

    thank you so much, it is so helpful for my

  • @baselkelziye4552
    @baselkelziye4552 Рік тому +1

    keep on the great content!

  • @user-yg1su9dr1x
    @user-yg1su9dr1x Рік тому

    Great content , thanks for sharing

  • @jims7089
    @jims7089 Рік тому +2

    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?

    • @BlockExplorerMedia
      @BlockExplorerMedia  Рік тому +2

      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! : )

  • @zakisiddiqui9527
    @zakisiddiqui9527 Рік тому +2

    Thanks for this great and helpful video...I request you to make videos on building DeFi applications pls...thanks again

  • @dekonfrost7
    @dekonfrost7 4 місяці тому

    You are a smart guy.i wished i could take you to lunch.

  • @kpxiong3377
    @kpxiong3377 Рік тому

    Thank you....!!!!!

  • @gooblio
    @gooblio Рік тому +2

    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???

  • @bestzenyatta3362
    @bestzenyatta3362 Рік тому

    thanks alot man

  • @f_ftactics7928
    @f_ftactics7928 Рік тому

    do you prefer truffle or hardhat? I think you have tutorials for both.

  • @sukiratwarring6219
    @sukiratwarring6219 Рік тому

    Interesting!

  • @daniel7007
    @daniel7007 Рік тому +1

    Awesome!
    Could u pls make a video about vault smart contract with some advanced features

    • @BlockExplorerMedia
      @BlockExplorerMedia  Рік тому +1

      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.

    • @daniel7007
      @daniel7007 Рік тому

      @@BlockExplorerMedia appreciate🙏

  • @Imperial_Dynamics
    @Imperial_Dynamics Рік тому +1

    question please: Is there any difference in Solidity between 10**18 and 1e18 ?

  • @irakli4797
    @irakli4797 Рік тому

    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

  • @adityasingh11156
    @adityasingh11156 Рік тому

    ​ @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 ?

    • @BlockExplorerMedia
      @BlockExplorerMedia  Рік тому

      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.

    • @adityasingh11156
      @adityasingh11156 Рік тому

      @@BlockExplorerMedia Ok Thanks 😊 Now I understand.

    • @thinkingmad1685
      @thinkingmad1685 Рік тому

      @@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

  • @lucifer2416
    @lucifer2416 Рік тому +1

    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

    • @aurobindonayak7128
      @aurobindonayak7128 Рік тому

      Iam also facing same problem please solve it!!

    • @lucifer2416
      @lucifer2416 Рік тому

      ua-cam.com/video/xJvfcg9dW4U/v-deo.html

    • @lucifer2416
      @lucifer2416 Рік тому

      About that video

  • @josephdelgiorgio3997
    @josephdelgiorgio3997 Рік тому

    or just delete my comment instead of help, that works 2 haha

    • @josephdelgiorgio3997
      @josephdelgiorgio3997 Рік тому

      no worries, I figured it out

    • @BlockExplorerMedia
      @BlockExplorerMedia  Рік тому +1

      hey Joseph! I only delete spam or offensive comments. Did I miss something? : )

    • @josephdelgiorgio3997
      @josephdelgiorgio3997 Рік тому

      @@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 UA-cam.

    • @josephdelgiorgio3997
      @josephdelgiorgio3997 Рік тому

      *posted a help comment

    • @BlockExplorerMedia
      @BlockExplorerMedia  Рік тому +1

      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.