😎 Solidity Tutorial - Transacciones - Smart Contracts en Ethereum

Поділитися
Вставка
  • Опубліковано 5 жов 2024
  • Aprende a programar SMART CONTRACTS con Solidity.
    En este tutorial programamos nuestro primer contrato inteligente (Smart Contract) para transferir dinero (ethers) entre distintas cuentas. Hacemos uso de variables globales de transacción y distintos métodos:
    msg.value
    msg.sender
    transfer
    payable
    etc ...

КОМЕНТАРІ • 51

  • @gonrivas
    @gonrivas 3 роки тому +14

    desde solidity 0.6.0 la solución al problema para poner la address a payable address es así:
    payable(msg.sender).transfer (address(this).balance);
    a mi así me funciona bien, no se si Alberto puede decir s es correcto o no...

    • @AlbertoLasa
      @AlbertoLasa  3 роки тому +2

      Correcto. Saludos

    • @oscarvallerivera72
      @oscarvallerivera72 3 роки тому +1

      Gracias Gonzalo después de tres horas buscando te leo y me dejo compilar, Gracias.

    • @omarrm8764
      @omarrm8764 3 роки тому +1

      gracias caballero!

  • @carlosguerra2853
    @carlosguerra2853 2 роки тому +1

    Muy bien el video en general. Solo veo algun detalle que tuve que cacharrear para entenderlo y que creo que hay alguna duda más en los comments. Creo, alomejor me equivoco, que habría que puntualizar lo siguiente
    1- Los contratos se pueden crear sin saldo. Cuando haces el despliegue del contrato le estas metiendo fracciones de Ether para que el contrato parta de base con un "saldo". Entiendo que el contrato lo puedes crear con o sin saldo. Si no le pones nada este se crea por defecto con 0 de balance.
    2- Después de desplegar el contrato invocas el método incrementBalance y creo que aqui diferenciaría en dos partes
    - Lugar donde pones el "saldo" que tomará del "Account" y sale del Account "personal" aunque en este caso es un Account de ejemplo.
    - Lugar donde indicas la cantidad que se mandará a través de la función del increment (que es indicativo para comprobar que es lo que debería llegar).
    Es por eso que hay que indicar dos veces el valor y deben ser iguales, uno es lo que vas a mandar del Account y lo otro es lo que indica que es lo que realmente debería llegar.
    A mí me quedó la duda de ¿Qué pasa si no se comprueba lo que se envía con lo que se fija en el Account? Respecto a esto estuve cacharreando y siempre predomina lo que se fija en en Account y no lo que llega por parámetro. Si no se incluye la comprobación puede ocasionar que al contrato se mande menos "ethers" que los que realmente se manden por parámetro
    Disculpa por la chapa.

  • @ArielRobottiMdP
    @ArielRobottiMdP 3 роки тому +6

    Genio!!! Gracias, estuve buscando algo así desde hace varias semanas, y llegué hoy de casualidad. 😁 Ahora a estudiar. Saludos desde Argentina

    • @seba23571
      @seba23571 2 роки тому +1

      una consulta a mi por ahora no me funciona he cambiado a la version pragma solidity ^0.4.0; y no hay caso como lo lograste ?

  • @danielalejandronavarroluna8374
    @danielalejandronavarroluna8374 3 роки тому +1

    Aqui iniciando para empezar a orientarme en este maravilloso mundo

  • @Velastroll
    @Velastroll 2 роки тому +2

    Eres un crack Alberto, tu contenido es oro. Muchas gracias por tus videos.

  • @isaiascobogalindo
    @isaiascobogalindo 2 роки тому +1

    Genial. Voy siguiendo.

  • @Javier_Banquez
    @Javier_Banquez 3 роки тому +1

    amigo eres un crack, espero poder aprender bastante con tus videos

  • @zabalasaintpaul
    @zabalasaintpaul 3 роки тому +1

    espectacular, tan simple para los pasos iniciales

  • @miguelangel8514
    @miguelangel8514 2 роки тому +2

    Genio sube un videito haciendo el set up que tienes de Remix, muy bueno el contenido.. Gracias Crack

  • @aarondv
    @aarondv 3 роки тому +1

    muchas gracias por el contenido...se agradecería si se pueden realizar un par de vídeos realizando estos ejemplos sencillo pero utilizando la librería Hardhat.

  • @joseluispelaez1902
    @joseluispelaez1902 2 роки тому

    Gran aportación, saludos desde Mexico

  • @diegoperez6575
    @diegoperez6575 3 роки тому +2

    Compilando en solidity 7 u 8 se necesita convertir el address del contrato a payable address. Esto se puede hacer así: address payable wallet = payable(address(this)); Y luego ya con esa variable wallet, se puede realizar la transferencia. No obstante el uso de send o transfer, parece que no es el recomendado y se recomienda usar call, quedando así: (bool sent, bytes memory data) = _to.call{value: wallet.balance}("");

    • @TheLantani
      @TheLantani 3 роки тому

      Con la primera opcion que comentas al ejecutar el contrato y querer incrementar el eth que tiene una cuenta no me lo suma.. Nose que puede ser el error

  • @victorgruszeczka9182
    @victorgruszeczka9182 3 роки тому

    ¡Muchas gracias!

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

    muchas gracias por la info

  • @manuonda
    @manuonda 2 роки тому

    muchas gracias!

  • @arepa-bitcoin
    @arepa-bitcoin Рік тому

    Buenas tardes hermano, tienes buen contenido en tu canal. Te estoy siguiendo desde ya. Hermano una pregunta quiero que mi Samart Contract pueda enviar y recibir BUSD que me recomiendas ver para hacer que mi contrato aplique esa función?

  • @aarondv
    @aarondv 2 роки тому

    Gracias por el material, Alberto. Consulta, en el min 14.20 donde ingresas in valor para el campo "value" como funciona esto si estuviera en un entorno más real (usando Metamask) porque no entiendo porque dentro del REMIX existe este campo adicional al que genera el IDE para usar la función "incrementBalance". Ya que por lo que entiendo al final la función se puede manipular por estas dos partes (y es por eso que haces la validación dentro de la función). Gracias por la respuesta de ante mano. Saludos.

  • @mendezfloresmiguelangel8483
    @mendezfloresmiguelangel8483 3 роки тому +1

    Eres un crack

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

    Como creo una instancia de un contrato ya creado? resulta que hay contratos que pueden estar en uso antes del lanzamiento oficial, mediante paginas web

  • @sebastianandressanchezherr2432
    @sebastianandressanchezherr2432 4 роки тому +1

    Mi estimado que buena enserio ;)

  • @christianosorio7473
    @christianosorio7473 3 роки тому +1

    A partir de la versión 0.5 de Solidity hay dos tipos de address:
    address: permite almacenar un valor de 20bytes que corresponde al largo de una dirección de Ethereum.
    address payable: es lo mismo que adress pero permite usar los métodos send() y transfer()
    Según la doc de Solidity está distinción se hace para que con una se pueda enviar ether (adress payable) mientras que con la otra no (adress). Entonces para que la función withdrawBalance() no genere un error y compile el código debemos hacer lo siguiente:
    payable(msg.sender).transfer(address(this).balance);
    De esta manera transformamos el tipo de dato address a address payable

  • @enriquesanchez5562
    @enriquesanchez5562 3 роки тому +2

    Coloca las letras mucho mas grandes.

  • @pachuchebreli754
    @pachuchebreli754 2 роки тому

    Hola alberto. Me podrias comentar de donde sale la variable balance? porque no veo donde esta definida y me confunde un poco

  • @ReyJesus2008
    @ReyJesus2008 4 роки тому

    Gracias por tus aportes. Viendo el video muy educativo. Me gustaría contactarte acerca de unos proyectos de blockchain. Dejame algun correo o algo así

  • @hackeloff7800
    @hackeloff7800 3 роки тому

    Tengo una duda, la funcion "IncrementBalance", al setearle la prop "PAYABLE", esta hace que el input amount se le reste luego de la wallet del que ejecute esa funcion? Porque no veo la logica de restarle el monto al emisor, supongo que estará todo incorporado en PAYABLE.

  • @martinpratto1475
    @martinpratto1475 5 років тому

    Queria felicitarte por el video aunque hay algo conceptual que no logro comprender: de donde sacas el monto de dinero para transferir a otra cuenta? o sea la cuenta de origen cual es? porque veo el incremento en la adress transfer pero no logro ver de donde sale el monto. Gracias por todo y felicitaciones por la excelente explicacion!

    • @AlbertoLasa
      @AlbertoLasa  5 років тому +1

      Gracias por tus ánimos. El monto sale del contrato, cada Smart Contract puede guardar un saldo en ethers al igual que una cuenta de una persona. El creador del contrato puede transferir (depositar) ethers al contrato, o si el código del contrato lo permite podrían hacerlo otros usuarios. "address(this).balance" hace referencia al saldo del contrato y este siempre debe ser como mínimo igual o superior al monto a transferir hacia un usuario externo.

    • @martinpratto1475
      @martinpratto1475 5 років тому

      @@AlbertoLasa muchisimas gracias Alberto y nuevamente felicitaciones por tu ayuda en la capacitacion. Un abrazo

  • @tradingcrypthor5683
    @tradingcrypthor5683 2 роки тому

    cuando en incrementBalance pongo 9000000 y en value 0, anda bien aunque no sale que tranfiere nada

  • @manuelabreu6428
    @manuelabreu6428 6 місяців тому

    Hola, hice uno y el deposito del contrato no se vio reflejado, que puedo hacer? ayuda

  • @diegoesquiviarodriguez5902
    @diegoesquiviarodriguez5902 2 роки тому

    Hola, es posible contactarte de alguna forma?

  • @tradingcrypthor5683
    @tradingcrypthor5683 2 роки тому

    me compila perfecto pero cuando quiero transferir me sale ese error y pongo todo tal cual, pero en compilacion va perfecto.

  • @WizardMoDz
    @WizardMoDz 4 роки тому

    👍

  • @akiraannaisha5667
    @akiraannaisha5667 5 років тому

    Alberto, si quisiera añadir a este contrato la funcionalidad de ver el balance del contrato actualizado, es decir, el dinero que contiene en cada momento de forma automática, cómo lo haría?

    • @AlbertoLasa
      @AlbertoLasa  5 років тому +1

      Tendrías que hacer una función de tipo getter con un return de address(this).balance.

    • @denianf
      @denianf 3 роки тому

      @@AlbertoLasa Hola Alberto primero felicitarte y dar las gracias por estas clases, me imagino que ya Akira resolvió como hacer la función pero la dejo acá por si alguien más tiene esta duda en el futuro
      function showBalance() public view returns(uint256){
      uint256 currentBalance = address(this).balance;
      return currentBalance;
      }

  • @artistasamerica3948
    @artistasamerica3948 5 років тому

    Se podria generar contratos documentales con blockchain? solidity?

    • @AlbertoLasa
      @AlbertoLasa  5 років тому +1

      No sé que es exactamente un contrato documental, pero con un Smart Contract en principio puedes plasmar cualquier contrato. Un contrato no es mas que un conjunto cláusulas que se activan en base eventos. En ciertas ocasiones también podemos usar oraculos para inyectar información del exterior a la blockchain.

  • @vicente258
    @vicente258 4 роки тому

    Hola Alberto estoy siguiendo tus tutoriales soy programador pero estoy teniendo problemas con la version ya que no encuentro las opciones para hacer Deployed

    • @eduardo6573
      @eduardo6573 4 роки тому +3

      Hola Vicente. Acabo de ver tu duda y aunque me imagino que ya la habrás resuelto la voy a dejar respondida por si alguien más tiene el mismo problema. Actualmente la nueva versión de remix tiene una interfaz ligeramente distinta a la que aquí maneja Alberto. Todas las opciones para hacer el deployed las tienes en la parte izquierda de la pantalla en una barra verical desplegable.
      Un saludo.

  • @davidgarciahz
    @davidgarciahz 2 роки тому

    Este video te ha quedado pelín confuso