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.
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.
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...
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?
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}("");
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
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.
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
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
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.
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!
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.
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 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; }
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.
Hola Alberto estoy siguiendo tus tutoriales soy programador pero estoy teniendo problemas con la version ya que no encuentro las opciones para hacer Deployed
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.
Genial. Voy siguiendo.
Aqui iniciando para empezar a orientarme en este maravilloso mundo
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.
Eres un crack Alberto, tu contenido es oro. Muchas gracias por tus videos.
¡Muchas gracias!
Genio!!! Gracias, estuve buscando algo así desde hace varias semanas, y llegué hoy de casualidad. 😁 Ahora a estudiar. Saludos desde Argentina
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 ?
muchas gracias por la info
Gran aportación, saludos desde Mexico
espectacular, tan simple para los pasos iniciales
muchas gracias!
amigo eres un crack, espero poder aprender bastante con tus videos
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.
Genio sube un videito haciendo el set up que tienes de Remix, muy bueno el contenido.. Gracias Crack
Mi estimado que buena enserio ;)
Eres un crack
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...
Correcto. Saludos
Gracias Gonzalo después de tres horas buscando te leo y me dejo compilar, Gracias.
gracias caballero!
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?
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}("");
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
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.
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
Hola alberto. Me podrias comentar de donde sale la variable balance? porque no veo donde esta definida y me confunde un poco
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
Correcto. Saludos
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.
Hola, es posible contactarte de alguna forma?
Hola, hice uno y el deposito del contrato no se vio reflejado, que puedo hacer? ayuda
cuando en incrementBalance pongo 9000000 y en value 0, anda bien aunque no sale que tranfiere nada
👍
me compila perfecto pero cuando quiero transferir me sale ese error y pongo todo tal cual, pero en compilacion va perfecto.
Coloca las letras mucho mas grandes.
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!
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.
@@AlbertoLasa muchisimas gracias Alberto y nuevamente felicitaciones por tu ayuda en la capacitacion. Un abrazo
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?
Tendrías que hacer una función de tipo getter con un return de address(this).balance.
@@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;
}
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í
Se podria generar contratos documentales con blockchain? solidity?
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.
Hola Alberto estoy siguiendo tus tutoriales soy programador pero estoy teniendo problemas con la version ya que no encuentro las opciones para hacer Deployed
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.
Este video te ha quedado pelín confuso
Ok, se tendrá en cuenta :)