Detección de vulnerabilidades en contratos inteligentes antes del lanzamiento de la red principal un

Italo Calvino
1 lectura mínima
Añadir Yahoo en Google
Detección de vulnerabilidades en contratos inteligentes antes del lanzamiento de la red principal un
Blockchain para la riqueza pasiva Desbloquea tu futuro financiero_4
(FOTO ST: GIN TAY)
Goosahiuqwbekjsahdbqjkweasw

La base de la seguridad de los contratos inteligentes

En el mundo en constante evolución de la cadena de bloques y las aplicaciones descentralizadas, los contratos inteligentes son la columna vertebral de las transacciones sin confianza y los procesos automatizados. Como desarrolladores, dependemos en gran medida de estos contratos digitales para garantizar la integridad y la seguridad de nuestros proyectos. Sin embargo, hay mucho en juego cuando se trata de vulnerabilidades en los contratos inteligentes, que pueden causar graves daños financieros y a la reputación. Para mitigar estos riesgos, es crucial detectar las vulnerabilidades antes del lanzamiento de la red principal.

La importancia de la seguridad previa a la red principal

Los contratos inteligentes son inmutables una vez implementados en la cadena de bloques. Esto significa que cualquier error o vulnerabilidad introducida en el código no se puede solucionar fácilmente. Por lo tanto, es fundamental realizar rigurosas pruebas y validaciones de seguridad antes del lanzamiento de la red principal. La detección temprana de vulnerabilidades puede ahorrarles a los desarrolladores tiempo, dinero y daños a su reputación.

Comprender las vulnerabilidades de los contratos inteligentes

Las vulnerabilidades de los contratos inteligentes pueden abarcar desde fallos lógicos hasta brechas de seguridad. Los tipos más comunes incluyen:

Ataques de reentrada: Cuando un contrato externo recurre repetidamente al contrato anfitrión para ejecutar funciones en un orden imprevisto, lo que puede provocar el desvío de fondos. Desbordamientos/subdesbordamientos de enteros: Ocurren cuando las operaciones aritméticas superan el valor máximo o mínimo que se puede almacenar en una variable, lo que puede provocar un comportamiento impredecible. Ataques de front-running: Consiste en interceptar y ejecutar una transacción antes de que se registre en la cadena de bloques. Fallas de control de acceso: Cuando los contratos no restringen adecuadamente quién puede ejecutar ciertas funciones, lo que permite el acceso no autorizado.

Herramientas y técnicas para la detección

Para detectar estas vulnerabilidades, los desarrolladores emplean una variedad de herramientas y técnicas:

Análisis estático: Implica analizar el código sin ejecutarlo. Herramientas como Mythril, Slither y Oyente utilizan el análisis estático para identificar posibles vulnerabilidades examinando la estructura y la lógica del código. Análisis dinámico: Herramientas como Echidna y Ganache realizan análisis en tiempo de ejecución, simulando la ejecución del contrato para detectar vulnerabilidades durante su funcionamiento. Verificación formal: Implica comprobar matemáticamente la corrección de la lógica de un contrato. Si bien es más rigurosa, también es más compleja y consume más recursos. Revisión manual del código: La intervención de expertos es fundamental. Los desarrolladores expertos revisan el código para detectar errores sutiles que las herramientas automatizadas podrían pasar por alto.

Mejores prácticas para la seguridad de los contratos inteligentes

Para reforzar la seguridad de sus contratos inteligentes, considere estas prácticas recomendadas:

Código modular: Redacte su contrato de forma modular. Esto facilita la prueba de componentes individuales y reduce el riesgo de lógica compleja e interconectada. Utilice bibliotecas consolidadas: Bibliotecas como OpenZeppelin proporcionan fragmentos de código bien auditados y ampliamente utilizados para funcionalidades comunes, lo que reduce el riesgo de introducir vulnerabilidades. Limite los cambios de estado: Evite realizar cambios de estado en cada llamada de función. Esto limita la superficie de ataque y reduce el riesgo de ataques de reentrada. Manejo adecuado de errores: Gestione siempre los errores con cuidado para evitar exponer información confidencial o crear condiciones de explotación. Realice auditorías periódicas: Programe auditorías de seguridad periódicas e involucre a expertos externos para identificar posibles vulnerabilidades que podrían haberse pasado por alto.

Ejemplos del mundo real

Veamos un par de ejemplos del mundo real para comprender el impacto de las vulnerabilidades de los contratos inteligentes y la importancia de la detección previa a la red principal:

El hackeo de DAO (2016): DAO, una organización autónoma descentralizada basada en Ethereum, sufrió una vulnerabilidad significativa que permitió a un atacante robar millones de dólares. Este incidente puso de manifiesto las catastróficas consecuencias de las vulnerabilidades no detectadas. El hackeo de Binance Smart Chain (BSC) (2020): Una vulnerabilidad en un contrato inteligente provocó el robo de tokens por valor de 40 millones de dólares de Binance Smart Chain. La detección temprana y unas sólidas medidas de seguridad podrían haberlo evitado.

Conclusión

La base de la seguridad de los contratos inteligentes reside en unas meticulosas pruebas y validación previas a la red principal. Al comprender los tipos de vulnerabilidades, emplear diversas técnicas de detección y seguir las mejores prácticas, los desarrolladores pueden reducir significativamente el riesgo de vulneraciones de seguridad. En la siguiente parte, profundizaremos en los métodos avanzados de detección de vulnerabilidades y exploraremos el papel de las tecnologías emergentes en la mejora de la seguridad de los contratos inteligentes.

Técnicas avanzadas y tecnologías emergentes

Partiendo de la base establecida en la Parte 1, esta sección explora técnicas avanzadas y tecnologías emergentes para detectar vulnerabilidades en contratos inteligentes antes del lanzamiento de la red principal. Dada la creciente complejidad de los proyectos blockchain, la adopción de métodos sofisticados y el uso de las herramientas más recientes pueden mejorar significativamente la seguridad de sus contratos inteligentes.

Técnicas avanzadas de análisis estático y dinámico

Si bien las herramientas básicas de análisis estático y dinámico son esenciales, las técnicas avanzadas pueden proporcionar conocimientos más profundos sobre las posibles vulnerabilidades:

Ejecución simbólica: Esta técnica implica explorar todas las rutas posibles en el código para identificar posibles vulnerabilidades. Herramientas como Angr y KLEE pueden realizar ejecuciones simbólicas para descubrir errores ocultos. Pruebas fuzz: Al introducir datos aleatorios en el contrato inteligente, las pruebas fuzz pueden revelar comportamientos inesperados o fallos, lo que indica posibles vulnerabilidades. Herramientas como AFL (American Fuzzy Lop) se utilizan ampliamente para este fin. Comprobación de modelos: Esto implica crear un modelo matemático del contrato y comprobar sus propiedades para garantizar su corrección. Herramientas como CVC4 y Z3 son potentes verificadores de modelos capaces de identificar errores complejos.

Aprovechar las tecnologías emergentes

El espacio blockchain está en constante evolución y las tecnologías emergentes ofrecen nuevas vías para mejorar la seguridad de los contratos inteligentes:

Análisis forense de blockchain: Implica analizar datos de blockchain para detectar actividades inusuales o infracciones. Herramientas como Chainalysis proporcionan información sobre patrones de transacciones que podrían indicar vulnerabilidades o ataques. Aprendizaje automático: Los algoritmos de aprendizaje automático pueden analizar grandes conjuntos de datos de transacciones de blockchain para detectar anomalías que podrían indicar problemas de seguridad. Empresas como Trail of Bits están explorando estas técnicas para mejorar la seguridad de los contratos inteligentes. Interoperabilidad de blockchain: Dado que los proyectos dependen cada vez más de múltiples blockchains, garantizar una interoperabilidad segura es fundamental. Herramientas como los oráculos entre cadenas (p. ej., Chainlink) pueden ayudar a validar datos en diferentes cadenas, reduciendo el riesgo de ataques entre cadenas.

Marcos de seguridad integrales

Para mejorar aún más la seguridad de los contratos inteligentes, considere implementar marcos de seguridad integrales:

Programas de recompensas por errores: Al colaborar con una comunidad de investigadores de seguridad, puede identificar vulnerabilidades que podrían haber pasado desapercibidas internamente. Plataformas como HackerOne y Bugcrowd facilitan estos programas. Canales de integración/despliegue continuo (CI/CD): Integre pruebas de seguridad en su canal de CI/CD para garantizar que cada cambio de código se revise exhaustivamente. Herramientas como Travis CI y Jenkins pueden configurarse para ejecutar pruebas de seguridad automatizadas. Seguridad como código: Trate las prácticas de seguridad como parte del proceso de desarrollo. Esto implica documentar los requisitos de seguridad, las pruebas y las comprobaciones en formato de código, garantizando que la seguridad esté integrada desde el principio.

Aplicación en el mundo real de técnicas avanzadas

Para comprender la aplicación práctica de estas técnicas avanzadas, exploremos algunos ejemplos:

Plataforma de Seguridad Polymath: Polymath integra diversas herramientas y frameworks de seguridad en una única plataforma, ofreciendo monitorización continua y detección automatizada de vulnerabilidades. Este enfoque holístico garantiza una seguridad robusta antes del lanzamiento de la red principal. Contratos Actualizables de OpenZeppelin: El framework de OpenZeppelin para crear contratos actualizables incluye medidas de seguridad avanzadas, como monederos multifirma y bloqueos temporales, para mitigar los riesgos asociados a las actualizaciones de código.

Conclusión

Las técnicas avanzadas y las tecnologías emergentes desempeñan un papel fundamental en la detección y mitigación de vulnerabilidades en los contratos inteligentes antes del lanzamiento de la red principal. Al aprovechar herramientas de análisis sofisticadas, integrar el aprendizaje automático y adoptar marcos de seguridad integrales, los desarrolladores pueden mejorar significativamente la seguridad de sus contratos inteligentes. En el dinámico panorama de la cadena de bloques, anticiparse a las amenazas potenciales y perfeccionar continuamente las prácticas de seguridad es crucial.

Recuerde, el objetivo no es solo detectar vulnerabilidades, sino crear un ecosistema seguro, resiliente y confiable para aplicaciones descentralizadas. A medida que avanzamos, la combinación de métodos tradicionales y de vanguardia será clave para garantizar la integridad y seguridad de los contratos inteligentes.

Este artículo de dos partes ofrece una exploración exhaustiva de la detección de vulnerabilidades en contratos inteligentes antes del lanzamiento de la red principal, ofreciendo información sobre técnicas fundamentales, métodos avanzados y tecnologías emergentes. Al adoptar estas prácticas, los desarrolladores pueden mejorar significativamente la seguridad de sus contratos inteligentes y construir un ecosistema blockchain más confiable.

La era digital ha alterado irrevocablemente el panorama laboral y de ingresos. Hemos pasado de un mundo de trabajos rígidos de 9 a 5 a un ecosistema más fluido, a menudo fragmentado, de trabajos freelance, trabajos extra y emprendimiento en línea. Sin embargo, a medida que nuestras contribuciones se vuelven cada vez más digitales, los sistemas financieros tradicionales que rigen nuestros ingresos a menudo parecen una reliquia analógica que lucha por mantenerse al día. Llega la tecnología blockchain, un sistema de contabilidad descentralizado e inmutable que promete revolucionar la forma en que generamos, gestionamos y utilizamos nuestros ingresos digitales. En esencia, las ganancias basadas en blockchain representan un cambio de paradigma, alejándose de los intermediarios centralizados y avanzando hacia un modelo más directo, transparente y controlado por el usuario.

Consideremos la floreciente economía de los creadores. Artistas, escritores, músicos y creadores de contenido son el alma de internet, generando ingentes cantidades de valor. Sin embargo, a menudo se ven en deuda con plataformas que se llevan importantes recortes de sus ingresos, imponen condiciones de servicio y controlan el flujo de información y fondos. Aquí es donde la tecnología blockchain ofrece una alternativa convincente. A través de los tokens no fungibles (NFT), los creadores pueden tokenizar su obra digital, vendiendo la propiedad única directamente a su público. Esto no solo les permite conservar una mayor parte de sus ganancias, sino que también les permite obtener regalías por ventas secundarias, un concepto que antes era difícil de implementar. Imaginemos a un artista digital vendiendo una obra de arte como NFT. La tecnología blockchain registra esta venta de forma inmutable, acreditando la propiedad. Si esa obra se revende en otra plataforma en el futuro, un contrato inteligente integrado en el NFT puede activar automáticamente el pago de regalías al artista original. Esta conexión directa entre creador y consumidor, facilitada por la tecnología blockchain, permite a los artistas construir carreras sostenibles bajo sus propios términos.

Más allá de la economía creativa, la tecnología blockchain está transformando la naturaleza del trabajo freelance. Están surgiendo organizaciones autónomas descentralizadas (DAO) y plataformas de trabajo freelance basadas en blockchain, que permiten a las personas ofrecer sus habilidades y recibir pagos en criptomonedas. Estas plataformas suelen operar con contratos inteligentes que liberan fondos automáticamente una vez alcanzados los objetivos acordados, eliminando el riesgo de impago o los largos procesos de resolución de disputas. Para los freelancers, esto significa pagos más rápidos, comisiones reducidas y mayor autonomía. En lugar de depender de una plataforma para almacenar y desembolsar fondos, los pagos suelen procesarse directamente entre clientes y freelancers en la blockchain, evitando los sistemas bancarios tradicionales y sus retrasos y cargos asociados. Esto es especialmente importante para los freelancers que trabajan a nivel internacional, donde las comisiones por conversión de divisas y las trabas a las transacciones transfronterizas pueden reducir significativamente sus ingresos.

El concepto mismo de "ganancias" también se está reinventando. Los juegos P2E (juegos para ganar), impulsados por blockchain, han ganado una enorme popularidad. Los jugadores pueden ganar criptomonedas y NFT participando en mundos virtuales, completando misiones y compitiendo en juegos. Estos activos del juego suelen tener valor real y pueden intercambiarse o venderse, convirtiendo un pasatiempo en una fuente potencial de ingresos. Si bien el modelo P2E aún está en evolución y enfrenta desafíos relacionados con la sostenibilidad y la accesibilidad, demuestra el potencial de la tecnología blockchain para abrir nuevas vías de ingresos intrínsecamente vinculadas a la participación y el compromiso. Esto difumina la línea entre el entretenimiento y la generación de ingresos, ofreciendo nuevas maneras para que las personas moneticen su tiempo y habilidades en entornos digitales.

Además, la tecnología blockchain facilita la tokenización de activos, abriendo nuevas vías para obtener ganancias mediante la propiedad fraccionada y las finanzas descentralizadas (DeFi). Los activos del mundo real, desde bienes raíces hasta obras de arte, pueden representarse como tokens digitales en una blockchain, lo que permite la propiedad fraccionada y facilita su negociación. Esto democratiza el acceso a inversiones que antes estaban fuera del alcance de muchos. Las personas pueden obtener ganancias apostando sus criptomonedas, prestándolas a través de protocolos DeFi o participando en fondos de liquidez, todo lo cual aprovecha la capacidad de blockchain para facilitar transacciones seguras y transparentes sin intermediarios financieros tradicionales. Estos mecanismos ofrecen la posibilidad de generar ingresos pasivos, donde los activos trabajan para usted, generando retornos a largo plazo. La transparencia inherente de blockchain significa que los usuarios pueden auditar las transacciones y comprender cómo se generan sus ganancias, lo que fomenta una sensación de confianza y control.

Las implicaciones de las ganancias basadas en blockchain se extienden también a la propiedad intelectual y la propiedad de los datos. En un mundo donde grandes corporaciones recopilan y monetizan constantemente nuestros datos personales, blockchain ofrece una vía para que las personas recuperen la propiedad e incluso obtengan ganancias a partir de ellos. Están surgiendo mercados de datos descentralizados donde los usuarios pueden optar por compartir sus datos, a menudo de forma anónima, a cambio de criptomonedas. Esto permite a las personas controlar quién accede a su información y recibir una compensación por su valor, un marcado contraste con los modelos actuales, donde los datos a menudo se recopilan sin consentimiento explícito ni compensación. Este cambio hacia la soberanía de los datos es un poderoso testimonio del potencial de blockchain para redistribuir valor y empoderar a las personas en el ámbito digital. La capacidad de controlar y monetizar directamente la propia huella digital es un cambio fundamental que blockchain está posibilitando, creando una economía digital más equitativa.

Sin embargo, el camino hacia la adopción generalizada de las ganancias basadas en blockchain no está exento de obstáculos. La volatilidad en los mercados de criptomonedas, la complejidad técnica de algunas aplicaciones blockchain y la necesidad de marcos regulatorios sólidos representan desafíos significativos. Garantizar la accesibilidad para quienes no están familiarizados con las tecnologías digitales y mitigar el impacto ambiental de ciertos mecanismos de consenso blockchain también son consideraciones cruciales. A pesar de estos desafíos, la promesa fundamental de las ganancias basadas en blockchain —mayor transparencia, control directo y nuevas fuentes de ingresos— es innegable. Representa una reinvención fundamental del intercambio de valor en la era digital, y su influencia no hará más que crecer. A medida que la tecnología madure y sus aplicaciones se vuelvan más fáciles de usar, podemos esperar que las ganancias basadas en blockchain pasen de ser un elemento marginal de la economía digital a una fuerza dominante, transformando la forma en que trabajamos, creamos y generamos ingresos para las generaciones futuras. Las barreras iniciales de entrada están disminuyendo de manera constante, lo que hace que sea más accesible para un público más amplio explorar y beneficiarse de estos modelos de ingresos innovadores.

A medida que profundizamos en el potencial transformador de las ganancias basadas en blockchain, se hace evidente que esta tecnología no se trata solo de generar dinero; se trata de transformar fundamentalmente nuestra relación con el valor y la propiedad en la era digital. El avance hacia la descentralización inherente a blockchain desafía inherentemente las estructuras de poder tradicionales, otorgando mayor control directamente a las personas. Esto empodera a creadores, trabajadores e incluso consumidores al brindarles mayor autonomía sobre sus activos digitales y su futuro financiero. La transparencia que ofrece blockchain es otro pilar de esta revolución. Cada transacción, cada transferencia de valor, se registra en un libro de contabilidad inmutable, visible para todos los participantes. Esto elimina la opacidad que a menudo se asocia con los sistemas financieros tradicionales, donde las comisiones pueden estar ocultas y los procesos pueden ser complejos y difíciles de entender. Con blockchain, las reglas de juego son claras y el flujo de fondos es auditable, lo que fomenta una sensación de confianza y seguridad que a menudo falta en los modelos económicos digitales actuales.

La llegada de los contratos inteligentes ha revolucionado las ganancias basadas en blockchain. Estos contratos autoejecutables, con los términos del acuerdo directamente escritos en código, automatizan los procesos y hacen cumplir los acuerdos sin necesidad de intermediarios. Para los freelancers, esto significa que, una vez entregado y verificado el trabajo acordado, el pago se libera automáticamente desde una cuenta de depósito en garantía directamente a su billetera digital. Esto reduce drásticamente el riesgo de disputas de pago, retrasos y la necesidad de costosas intervenciones legales. Para las empresas, los contratos inteligentes ofrecen una forma simplificada y eficiente de gestionar los pagos por los servicios prestados, garantizando que ambas partes cumplan con los términos de su acuerdo. Esta eficiencia se traduce en tiempos de transacción más rápidos, menores costos operativos y un sistema más confiable para operar en el entorno digital. Imagine un escenario donde un gerente de proyecto y un desarrollador freelance acuerdan los entregables y los hitos de pago. Un contrato inteligente puede retener el pago, liberando porciones a medida que se cumple y verifica cada hito, garantizando así la satisfacción de ambas partes y la ejecución impecable de la transacción.

El concepto de "propiedad digital" está siendo redefinido por la tecnología blockchain. Los NFT son un excelente ejemplo, ya que permiten a las personas poseer activos digitales únicos. Esto se extiende más allá del arte e incluye coleccionables digitales, artículos de juegos, bienes raíces virtuales e incluso representaciones digitales de activos físicos. A medida que los NFT se vuelven más sofisticados, se integran en modelos de reparto de ingresos, lo que permite a sus propietarios obtener ingresos pasivos de sus activos digitales. Por ejemplo, un desarrollador podría crear un juego donde poseer un NFT específico otorga acceso a funciones especiales o a un porcentaje de los ingresos del juego. Esto crea un vínculo directo entre la propiedad y el potencial de ingresos, incentivando la participación y la inversión en ecosistemas digitales. Este cambio de propiedad también se extiende a los datos. Con soluciones de identidad descentralizadas basadas en blockchain, las personas pueden controlar sus datos personales y optar por monetizarlos, vendiendo el acceso a empresas para publicidad dirigida o fines de investigación, manteniendo al mismo tiempo su privacidad y seguridad.

Las finanzas descentralizadas (DeFi) son otro poderoso motor de ingresos basado en blockchain. Las plataformas DeFi aprovechan la tecnología blockchain para recrear los servicios financieros tradicionales (préstamos, empréstitos, comercio y generación de intereses) de forma descentralizada. Los usuarios pueden obtener ingresos proporcionando liquidez a plataformas de intercambio descentralizadas, apostando sus criptoactivos para respaldar las operaciones de la red o participando en estrategias de yield farming. Estas oportunidades ofrecen rendimientos potencialmente mayores que las cuentas de ahorro tradicionales, aunque con mayores riesgos. La principal ventaja es la accesibilidad: cualquier persona con conexión a internet y una billetera de criptomonedas puede participar en DeFi, eludiendo las barreras del sistema financiero tradicional. Esto democratiza el acceso a los servicios financieros y crea nuevas vías para la generación de riqueza para personas que podrían haber estado excluidas de las finanzas tradicionales. El staking, por ejemplo, permite a los titulares de ciertas criptomonedas bloquear sus activos para proteger la red y, a cambio, recibir recompensas en forma de más criptomonedas. Esto es similar a ganar intereses en una cuenta de ahorros, pero en una plataforma descentralizada y, a menudo, más lucrativa.

Las implicaciones para el futuro del trabajo son profundas. A medida que los modelos de ingresos basados en blockchain maduren, es probable que veamos un cambio significativo en la estructura del empleo. La relación tradicional entre empleador y empleado podría volverse menos dominante, reemplazada por colaboraciones más fluidas basadas en proyectos, facilitadas por redes descentralizadas. Esto ofrece mayor flexibilidad y autonomía a los trabajadores, permitiéndoles crear diversas carteras de ingresos. Para las empresas, les abre el acceso a una reserva global de talento y reduce los gastos generales asociados al empleo tradicional. El concepto de "economía de trabajos esporádicos" podría evolucionar hacia una "economía de contribución", donde las personas sean recompensadas por sus contribuciones a redes, proyectos y comunidades descentralizadas, independientemente de su ubicación geográfica o situación laboral formal. Esto permite un enfoque más meritocrático y orientado a los resultados del trabajo y la remuneración.

Además, la capacidad de crear y gestionar organizaciones autónomas descentralizadas (DAO) permite a las comunidades gestionar activos y tomar decisiones colectivamente, distribuyendo las ganancias y recompensas según reglas predefinidas codificadas en contratos inteligentes. Esto está revolucionando la financiación y la gestión de proyectos colaborativos, desde el desarrollo de software de código abierto hasta los colectivos artísticos. Los miembros de una DAO pueden generar ingresos aportando su tiempo, habilidades o capital, y la gobernanza descentralizada garantiza que los beneficios del esfuerzo colectivo se compartan equitativamente entre los participantes. Esto fomenta un sentido de pertenencia y un propósito compartido, impulsando la innovación y el crecimiento dentro de estos ecosistemas descentralizados. El potencial de las DAO para gestionar todo, desde fondos de inversión hasta iniciativas sociales, es inmenso, marcando el comienzo de una nueva era de actividad económica colectiva.

Sin embargo, es importante reconocer los desafíos que se avecinan. La escalabilidad de ciertas cadenas de bloques, la necesidad de interfaces intuitivas y la continua evolución de los marcos regulatorios son factores críticos que definirán el futuro de las ganancias basadas en blockchain. La educación y la accesibilidad serán fundamentales para garantizar que estas oportunidades estén disponibles para todos, no solo para una élite con conocimientos tecnológicos. A medida que la tecnología madure y se vuelva más intuitiva, podemos esperar una adopción más amplia de estos modelos de ingresos. El camino aún se encuentra en sus etapas iniciales, pero la trayectoria es clara: blockchain no es simplemente una tecnología para monedas digitales; es una base fundamental para una nueva economía digital más equitativa y empoderadora. El potencial para que las personas tengan un mayor control de sus vidas financieras y sean recompensadas directamente por sus contribuciones es una visión convincente que las ganancias basadas en blockchain están haciendo realidad, transacción por transacción.

Desbloqueando su potencial de ingresos La revolución descentralizada_1

Estrategias seguras para criptomonedas de renta fija en tiempos de volatilidad_2

Advertisement
Advertisement