CursosEmpresasBlogLiveConfPrecios

Uso de la herencia en Solidity

Clase 17 de 21 • Curso de Introducción a Solidity

Clase anteriorSiguiente clase

Contenido del curso

Por qué debes aprender Solidity
  • 1
    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    01:24
  • 2
    Programación en Solidity para Contratos Inteligentes en Blockchain

    Programación en Solidity para Contratos Inteligentes en Blockchain

    03:23
Introducción a la programación con Solidity
  • 3
    Estructura Básica de Contratos en Solidity

    Estructura Básica de Contratos en Solidity

    10:29
  • 4
    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    12:38
  • 5
    Estructuras y Arrays en Contratos Inteligentes

    Estructuras y Arrays en Contratos Inteligentes

    09:20
  • 6
    Estructuras de datos en Solidity: Mappings y enums

    Estructuras de datos en Solidity: Mappings y enums

    11:53
  • 7
    Estructuras de control en Solidity

    Estructuras de control en Solidity

    10:48
  • 8
    Manejo de Eventos con Solidity

    Manejo de Eventos con Solidity

    05:29
Programación de Funciones en Solidity
  • 9
    Cómo implementar funciones en Solidity

    Cómo implementar funciones en Solidity

    09:13
  • 10
    Uso de Modificadores en Solidity

    Uso de Modificadores en Solidity

    08:41
  • 11
    Manejo de errores

    Manejo de errores

    07:35
Gestionando costos de gas y comisiones
  • 12
    Tipos de almacenamiento

    Tipos de almacenamiento

    05:17
  • 13
    Manejo del gas y comisiones

    Manejo del gas y comisiones

    08:37
  • 14
    Transferencias de ether desde un contrato

    Transferencias de ether desde un contrato

    09:47
  • 15
    Recibir ether desde un contrato

    Recibir ether desde un contrato

    11:50
Conceptos avanzados de Solidity
  • 16
    Manejo de dependencias y librerías

    Manejo de dependencias y librerías

    08:12
  • 17
    Uso de la herencia en Solidity

    Uso de la herencia en Solidity

    14:41
  • 18
    Polimorfismo en contratos inteligentes

    Polimorfismo en contratos inteligentes

    09:05
  • 19
    Tokens

    Tokens

    13:34
  • 20
    Application Binary Interface (ABI)

    Application Binary Interface (ABI)

    06:50
Cómo continuar mi camino desarrollando en Blockchain
  • 21
    Cómo continuar mi camino con Solidity

    Cómo continuar mi camino con Solidity

    01:58
    Pepe Sosa

    Pepe Sosa

    student•
    hace 4 años

    Hola, para aclarar que Solidity sí es un lenguaje orientado a objetos, en la documentación oficial lo definen así:

    Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behaviour of accounts within the Ethereum state.

    Fuente: Documentación oficial

      Franklin Gil

      Franklin Gil

      student•
      hace 4 años

      Cuando escuché eso de "Orientado a contratos" me parecio raro. Seria bueno poner en el Top este aporte para que no se haga eco de tecnicismo incorectos.

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Yo antes ya había escuchado el concepto de "Orientado a contratos", no se sorprendan porque la verdad es que es muy utilizado.

    Luis Dotto

    Luis Dotto

    student•
    hace 4 años

    17 - Herencia

    "No hay que reinvetar la rueda"

    Utilizamos la Herencia para reutilizar codigo en nuevos contratos. Solidity no es POO, pero se comporta similar. Solidity es orientado a contratos. Identificaremos con la sentencia is. Si un contrato tiene un constructor con parametros, debemos indicar que valores debe tomar ese constructor para poder derivarse.

    Entonces, se busca generar una relacion entre contratos para reutilizar el codigo mediante la Herencia. Por lo que la capacidad de agregar/modificar una funcion ya escrita en el contrato anterior nos sera de mucha utilidad.

    Las funciones virtuales son funciones definidas para que se puedan reescrbir por las funciones override. Para esto debemos establecer una relacion de Herencia. Si una funcion virtual no define implementacion, el contrato se convierte en un contrato abstracto. Tambien hay contratos abstractos que usamos como moldes vacios para usar en futuros contratos.

    Las interfaces no van a tener codigo. su funcion es indicarnos un comportamiento que queremos que tenga un contrato. Solo tiene declaraciones (definiciones de funciones) sin codigo.

    • super (sentencia) nos sirve para hacer referencia a una funcion de clase superior.

    Ejemplo practico: Buscamos 2 funciones virtuales en Modificadores📗 e Interface📘 para colocar en nuestro archivo/contrato de Herencia 📕📘📗.

    Vamos a tener que importar el directorio de los demas contratos, en este caso se encuentran en la misma carpeta los contratos. Coloco los emojis de libros para hacer referencia a un contrato, si hay varios libros es porque es una Herencia que contiene otros contratos.

    • Herencia.sol 📕📘📗
    // SPDX-Licence-Identifier: UNLICENSED pragma solidity >=0.7.0 < 0.9.0; import "./Interface.sol"; import "./Modificadores.sol"; contract Herencia is Suma, Modificadores { constructor(string memory nombreNuevo) Modificadores(nombreNuevo) { } function sumar(uint numero1, uint numero2) public override EsOwner() view returns(uint) { return numero1 + numero2; } }

    Es buena practica traer todo el encabezado de la funcion de "Interface", por lo que es recomendable copiar y pegar "function sumar(uint numero1, uint numero2)"

    • Interface.sol 📘
    // SPDX-Licence-Identifier: UNLICENSED pragma solidity >=0.7.0 < 0.9.0; interface Suma { function sumar(uint numero1, uint numero2) external returns (uint); }
    • Modificadores.sol 📗
    // SPDX-Licence-Identifier: UNLICENSED pragma solidity >=0.4.0 < 0.9.0; contract Modificadores { address private owner; string private nombreOwner; constructor(string memory nombre { owner = msg.sender; nombreOwner = nombre; } function Suma(uint numero1, uint numero2) public view EsOwner() returns (uint) { return numero1 + numero2; } modifier EsOwner() { if (msg.sender != owner) revert(); _; } }
      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Gracias por los apuntes!

      Pepe Sosa

      Pepe Sosa

      student•
      hace 4 años

      Hola, solo aclarar que Solidity sí es un lenguaje orientado a objetos, en tus notas veo que enfatizaste lo que dijo el profe pero está errado, la misma documentación oficial lo describe como orientado a objetos de alto nivel. No existe tal cosa como "orientado a contratos". Saludos.

    Marcos Plata

    Marcos Plata

    student•
    hace 4 años

    Es muy importante comprender los conceptos de POO para poder sacarle el maximo provecho a solidity, recomiendo tomar cualquier curso de programación orientada a objetos en platzi para poder entenderlos a profundidad, o si no, el libro "Análisis y Diseño Orientado a Objetos" de Graady Booch.

      Guillermo Leonardo Rossi

      Guillermo Leonardo Rossi

      student•
      hace 4 años

      Gran libro!

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Grande tu aporte, ese libro es fenomenal.

    Edgar Oswaldo Vargas Jara

    Edgar Oswaldo Vargas Jara

    student•
    hace 4 años

    Muy parecido a los conceptos de Java. Quien sabe de POO puede entender esto facilmente

      Pepe Sosa

      Pepe Sosa

      student•
      hace 4 años

      Eso es porque Solidity sí es un lenguaje orientado a objetos, su misma documentación oficial lo define literalmente así.

    Jimmy Buriticá Londoño

    Jimmy Buriticá Londoño

    student•
    hace 4 años

    Solidity es un lenguaje orientado a "contratos".

      Pepe Sosa

      Pepe Sosa

      student•
      hace 4 años

      No, no lo es. No existe tal cosa como "orientado a contratos".

      Solidity is an object-oriented, high-level language for implementing smart contracts.

      Fuente: Documentación oficial Solidity

    Dany R

    Dany R

    student•
    hace 3 años

    Entiendo que el profesor quiere decir que Solidity NO es un lenguaje de programacion orientado objetos "TRADICIONAL", en otros lenguajes el manejo de clases y objetos es practicamente la misma, pero solidity tiene ciertas diferencias, incluso en alguna documentacion oficial de solidity lo definen como orientado a objetos y en otra como orientado a contratos.

    Andrés Muñoz

    Andrés Muñoz

    student•
    hace 4 años

    Es posible cambiar a tipo private o internal la función heredada Suma en mi contracto para que no aparezca o pueda ser usada por fuera ?

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 4 años

      Hola Andrés, se puede siempre y cuando la función del contrato superior sea virtual. En ese caso le haces override a la función y ahí le modificas la visibilidad.

    Marco Antonio Olmos a.k.a. Marco Antonio Vazquez-O

    Marco Antonio Olmos a.k.a. Marco Antonio Vazquez-O

    student•
    hace 3 años

    Las FUNCIONES dentro de las INTERFACES por Defecto (Default) son EXTERTERNAL (EXTERNAS) & VIRTUAL (VIRTUALES) aunque NO le pongamos la palabra VIRTUAL.

    Abidan Triguero Calle

    Abidan Triguero Calle

    student•
    hace 3 años

    RESUMEN CLASE 17: HERENCIA

    I.- HERENCIA

    • El concepto es similar al de la programación orientada a objetos y la identificaremos con la sentencia “is”.

    • Si un contrato tienen un constructor con parámetros debemos indicar qué valores debe tomar ese constructor para poder derivarse.

    II.- OVERRIDE

    • Podemos definir funciones de tipo “virtual” para indicar que pueden ser redefinidas en sus contratos derivados.

    • Cuando se redefine una función se debe indicar el tipo “override” en su declaración.

    • Si una función virtual no define implementación, el contrato se convierte en un contrato abstracto.

    III.- INTERFACES

    • Nos permiten definir el comportamiento que queremos que tenga un contrato.

    • Se implementa igual que la herencia de contratos.

    • Sus funciones no tienen implementación, solo encabezados.

    IV.- SUPER

    Podemos hacer referencia a algún elemento o función de la clase superior por medio de la sentencia “super”.

    REMIX:

    CLASE 17 Imagen1Herencia.png

    Herencia.sol

    // SPDX-License-Identifier: GLP-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; import "./Modificadores.sol"; contract Herencia is Suma, Modificadores { constructor(string memory nombreNuevo) Modificadores(nombreNuevo) { } function sumar(uint numero1, uint numero2) public override esOwner() view returns(uint) { return numero1+numero2; } }
    Pro Code

    Pro Code

    student•
    hace 3 años

    Ejemplos de usar "virtual" en una función:

    function sumar(uint numero1, uint numero2) virtual public{} function utterance() public virtual returns (bytes32);

    Esta última (utterance) exige anteponer "abstract" a la declaración del contrato y a esto es lo que se refiere el profe con Contrato Abstracto:

    abstract contract Herencia is Suma, Modificadores("Abc") {
    Dany R

    Dany R

    student•
    hace 3 años

    Dentro del Contrato Modificadores, no se uso “virtual” pero de todas maneras su funcion Suma, y el contructor, se pudieron usar en el Contrato Herencia, entonces ¿en que caso, si es necesario usar “virtual”?

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 3 años

      "virtual" lo utilizaremos cuando deseamos que esa función pueda ser redefinida, o sea que otro usuario (o nosotros) en los contratos que hereden del nuestro puedan sobrescribir la lógica de esa función.

      Si la función no es virtual, la pueden llamar y utilizar, pero no podrán redefinirla/reescribirla.

    Gustavo Javier Flores

    Gustavo Javier Flores

    student•
    hace 3 años

    extends = is?

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 2 años

      Lo que en otros lenguajes es "extends" en Solidity es "is" :)

    Carlos Rodríguez

    Carlos Rodríguez

    student•
    hace 3 años

    Buenísima clase, esto tiene un valor intrínseco muy grande ya que es sumamente utilizado en la creación de contratos.

    Jose Fernando Peréz

    Jose Fernando Peréz

    student•
    hace 3 años

    Una Empresa es una serie de Contratos Comerciales de ahora en adelante y no se si para siempre, pero en futuro a corto y mediano plazo será una empresa su andamiaje central CORE o CPU una serie de Smartcontracts que SE HEREDAN por el esencial motivo de identidad, eficiencia, optimización y seguridad.

    Solo me queda decir, los quiero mucho Platzi

    Un agradecimiento al profe Uruguayo, voy a migrar a ese país, que es el mejor de LATAM, siempre agradecido master.

    Bramucci Candela

    Bramucci Candela

    student•
    hace 3 años

    Herencia

    Es la habilidad de usar la lógica escrita en otros contratos en nuestro propio contrato. Se hace por medio de la palabra is:

    @import program/example contract MyProgram is example{}

    Si un contrato tiene un constructor con parámetros debemos indicar qué valores debe tomar ese constructor para poder derivarse. .

    Override

    Podemos definir funciones del tipo virtual para indicar que pueden ser redefinidas en sus contratos derivados.

    Cuando se redefine una función se debe indicar el tipo override en su declaración.

    Si una función no define implementación (esto es si la función está vacía), el contrato se convierte en un contrato abstracto. .

    Interfaces

    Nos permiten definir el comportamiento que queremos que tenga un contrato

    Se implementa igual que la herencia de contratos.

    Sus funciones no tienen implementación, solo encabezados. .

    Super

    Podemos hacer referencia a algún elemento o función de la clase superior por medio de la sentencia super. .

    Ejemplo

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; import "./Modificadores.sol"; contract Herencia is Suma, Modificadores { constructor(string memory nombreNuevo) Modificadores(nombreNuevo) } function sumar(uint numero1, uint numero2) public override EsOwner() view returns(uint) { return numero1 + numero2; } }
    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; interface Suma { function sumar(uint numero1, uint numero2) external returns (uint); }
    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; contract Modificadores { address private owner; string private nombreOwner; constructor(string memory nombre) { owner = msg.sender; nombreOwner = nombre; } function Resta(uint numero1, uint numero2) public view EsOwner() returns (uint) { return numero1 - numero2; } modifier EsOwner() { if (msg.sender != owner) revert(); _; } }
    Marco Palmieri

    Marco Palmieri

    student•
    hace 4 años

    No me queda muy claro para qué sirven las interfaces, si lo unico que tienen es una función pero sin ninguna funcionalidad, por lo que pude ver en la clase

      Dagoberto Porras Plata

      Dagoberto Porras Plata

      student•
      hace 4 años

      se utiliza para obligar un comportamiento en el contrato que vaya a heredar la interfaz. En otras palabras y como lo entiendo, es como una plantilla que sirve para que los programadores que quieran implementar la interfaz se le exija definir e implementar las funciones de la plantilla. Así que no se debe ver desde el aspecto funcional sino comportamental.

    Rafael Mosquera

    Rafael Mosquera

    student•
    hace 4 años

    Solidity es un lenguaje de alto nivel orientado a objetos para implementar contratos inteligentes. Los contratos inteligentes son programas que rigen el comportamiento de las cuentas dentro del estado Ethereum.

    Josue Martin Chi Perera

    Josue Martin Chi Perera

    student•
    hace 4 años

    Creo que para personas que conocen más del entorno esto les serviría mucho para optimizar sus tiempos y códigos ya que solo hay que realizar algunas modificaciones🧐

    Luis Alejandro Vera Hernandez

    Luis Alejandro Vera Hernandez

    student•
    hace 4 años

    Excelente clase, muy entendible todo

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads