jueves, julio 23, 2026
domingo, julio 05, 2026
"pxpipe" Un proxy para insertar Prompts y Contexto en imágenes y ahorrar (muchos) costes en tokens de Claude [u otros]
Publicado por
Chema Alonso
a las
7:01 a. m.
0
comentarios
Etiquetas: AI, Artificial Intelligence, Claude, cloudflare, Hacking, IA, Inteligencia Artificial, LLM, LLMs, Proxy, token, tokens
viernes, marzo 28, 2025
Tu WebSite con Smart Honeypots contra el WebScrapping usando AI Labyrinth de Cloudflare
En este contexto, no es simplemente un malentendido técnico, sino una decisión consciente de ignorar los deseos expresos de los creadores de contenido. Esta situación ha llevado a numerosas demandas legales contra empresas de IA por parte de creadores de contenido, desde periódicos hasta artistas visuales, alegando violaciones de derechos de autor.
Además, para los administradores de sitios Web, los procesos de Webscraping no autorizados aumentan los costos de hosting, ralentiza el rendimiento del sitio y, quizás lo más importante, permite que otras entidades se apropien de contenido original sin permiso para entrenar sus modelos comerciales de IA.
En este contexto, Cloudflare ha lanzado este mes de marzo una solución que pretende paliar estos daños: AI Labyrinth. Esta herramienta no bloquea a los rastreadores no autorizados (lo que simplemente les alertaría de que han sido detectados), sino que los invita a adentrarse en un laberinto interminable de contenido generado por IA—una trampa digital donde los bots pueden deambular eternamente, consumiendo sus recursos sin obtener nada de valor a cambio.
Métodos tradicionales de protección y sus limitaciones
Antes de soluciones como AI Labyrinth, los sitios web han recurrido a métodos tradicionales para combatir el webscraping no autorizado, pero estos resultan ineficaces contra rastreadores de IA avanzados. El bloqueo de direcciones IP es una estrategia limitada, ya que los operadores de scraping pueden rotar direcciones o utilizar redes de proxies, lo que vuelve el proceso en una batalla interminable.
- ReCaptchav2 de Google con Cognitive Services
- Captcha Cognitivo de Twitter (X) con GPT4-Vision & Gemini
- Captcha Cognitivo de Twitter (X) con Anthropic Claude 3.0 Opus
- Captcha Cognitivo de Twitter (X) con GPT-4o
- Captcha Cognitivo de Administración Pública con ChatGPT
- Captcha Cognitivo de la mano y la plancha en HBO max
- Captcha Story X: I am not a Robot, I am a GenAI Multimodal Agent
- Reto hacking con un Captcha Cognitivo para romper con GenAI
- Solución al Reto de Hacking de un Captcha Cognitivo Visual
- Anthropic Claude 3.5 Sonnet & Cognitive Captchas
- Captcha Cognitivo de HBO max de reconocer de sonidos con ML & GPT4-o
- LinkedIN + ChatGPT: El Captcha Cognitivo del Objeto Descolocado
- Captcha Cognitivo de Twitter / X de Sentar Personas Correctamente: Probando con ChatGPT & Gemini
Este enfrentamiento perpetuo consume recursos y beneficia a las grandes empresas de IA con capacidad para sortear estas defensas. Por ello lo que hace Cloudflare plantea un enfoque diferente: en lugar de bloquear el acceso y advertir al adversario, lo desvía de manera imperceptible hacia rutas que parecen productivas pero resultan inútiles para sus propósitos.
Implementación técnica
El primer desafío técnico que enfrentó Cloudflare fue generar contenido convincente a escala, ya que producir contenido falso pero plausible en tiempo real para cada solicitud sospechosa podía consumir excesivos recursos y ralentizar la experiencia general; para abordar esto, Cloudflare emplea su servicio Workers AI con un modelo de código abierto que pre-genera un corpus diverso de contenido HTML sobre temas variados, como ciencias (biología, física o matemáticas), utilizando un enfoque donde primero se crean temas diversos y luego contenido específico y coherente para cada uno, logrando resultados factuales y técnicamente correctos, aunque irrelevantes para el sitio web protegido, en lugar de depender de una generación puramente aleatoria.
Posteriormente sanitizan el contenido pre-generado para eliminar vulnerabilidades XSS, lo almacena en R2 para servirlo rápidamente sin cargar los servidores de origen y lo integra en sitios protegidos mediante un proceso HTML personalizado que oculta enlaces al laberinto con CSS, usando metadirectivas para evitar indexación por buscadores y proteger el SEO; además, distingue usuarios legítimos de rastreadores sospechosos analizando patrones de navegación, velocidad, User-Agents y comportamientos a nivel de red, redirigiendo a estos últimos al laberinto antes de que lleguen al servidor, aliviando así la infraestructura del cliente.
Para los administradores de sitios web, usar AI Labyrinth es muy sencillo, activando una opción en el panel de control de Cloudflare, en la parte de gestión de bots. Por detrás, cuando un rastreador cae en el laberinto, se recogen datos sobre cómo actúa, los usa para entrenar sus modelos de aprendizaje automático y así afinar la detección de bots maliciosos, de modo que cada sitio protegido ayuda a mejorar la seguridad de los demás.
Conclusiones
Esta innovadora solución de Cloudflare sacude la dinámica entre creadores de contenido y empresas de IA que recolectan datos masivamente sin permiso. Al usar contenido generado por IA para confundir rastreadores, cuestiona la noción de que internet es un recurso gratuito para tomar datos a voluntad, y sus efectos podrían sentirse en varios frentes.
Obviamente las empresas de IA no se quedarán quietas, y probablemente desarrollen formas de detectar y evitar estos trucos, iniciando una especie de carrera tecnológica. Esto no es nuevo en ciberseguridad: estas competencias suelen traer avances para ambos lados, con ideas que luego se usan en otros campos.
Un saludo,
Publicado por
Chema Alonso
a las
6:01 a. m.
0
comentarios
Etiquetas: AI, Artificial Intelligence, Captchas, Cloud, Cloud computing, GenAI, Generative-AI, GenerativeAI, IA, Inteligencia Artificial, LLM, LLMs, Proxy, robots
sábado, septiembre 10, 2022
BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
Claro ahora podrías pensar:
“Oye, pero si la gracia de los SmartContracts estaba en que estos eran inmutables y no se puede alterar ni sus valores ni funcionamiento, ahora se pueden manipular a gusto propio".
Pero aun así la descentralización se puede mantener, hasta ahora el concepto de descentralización y seguridad que hemos visto que tienen los SmartContracts reside en el hecho de que estos son inmutables y se ejecutan en la Blockchain. Con los proxies pasamos esa seguridad a una entidad central encargada de actualizar los contratos, sin embargo ese poder se puede distribuir entre la comunidad de personas que los usan, relegando así a la comunidad usuaria de estos el derecho a actualizarlos mediante por ejemplo sistemas de votación con tokens, NFTs, reputación…
![]() |
| Figura 2: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo en 0xWord |
1. El exchange: que sirve para hacer swapping entre diferentes tokens y aportar liquidez.
2. El sistema de gobernanza del protocolo: un conjunto de SmartContracts que junto con el token $UNI conforman el control del protocolo. El funcionamiento de este sistema de gobernanza es bastante complejo y daría para un artículo bastante largo, por lo que podemos dejarlo en que se vota y propone usando $UNI.
3. La DAO de la comunidad de Uniswap: aunque la mayoría de las acciones que se hacen son off-chain todo el sistema de proponer cambios se hace a través del sistema de votación on-chain.
Esta es una de las maneras en las que se puede mantener la “descentralización” en un protocolo pero hay otras muchas con sus ventajas e inconvenientes pero lo que sí que podéis tener claro es que si veis alguno que no tiene sistema de gobernanza pero sus SmartContracts son actualizables huid de él porque en cualquier momento pueden robar los fondos, manipular los datos…
¿Cómo implementan los proxies los protocolos y DAOs?
Al final el patrón proxy es el patrón más usado para actualizar la lógica de los SmartContracts, implementarlo a mano puede ser tedioso y complejo dado que hay que tener en cuenta cosas como las colisiones de almacenamiento…(en el anterior artículo lo tratamos en mayor profundidad) y por ello es que se han creado herramientas y librerías que nos facilitan la vida a los desarrolladores solucionando en parte problemas de los que hablamos antes.
Os voy a mostrar dos formas de hacerlo; una fácil desde el punto de vista de implementación que solo requerirá de un par de cambios en nuestro SmartContract y otra más complicada que exigirá más cambios. Os voy a mostrar las dos porque la primera de ellas nos va a dar un control muy vago de lo que está sucediendo y la última nos permite visualizar de manera más clara lo que estamos haciendo.
1.- Forma “fácil”:
Esta manera es “sencilla” de cara a que no tenemos que hacer nada más que cambiar un par de variables, todo nos lo va ha hacer un módulo de Openzeppelin montado sobre la herramienta de Hardhat, veamos un ejemplo simple.
Para el ejemplo crearemos un proyecto nuevo de JavaScript con Yarn, Npm, Pnpm… u otro gestor de paquetes de NodeJs, e instalamos las siguientes dependencias, dentro de la consola:
“”” yarn init -y yarn add hardhat @openzeppelin/contracts @openzeppelin/hardhat-upgrades yarn hardhat “”Ahora seleccionaremos las siguientes opciones en la consola:
- “Create a JavaScript project”
- Le damos a “y” a todo lo que nos pregunte HardHat
“
pragma solidity ^0.8.0;
contract Box {
uint256 private _value;
event ValueChanged(uint256 value);
function store(uint256 value) public {
_value = value;
emit ValueChanged(value);
}
function retrieve() public view returns (uint256) {
return _value;
}
}
“
A continuación creamos un script de JavaScript para desplegar el contrato, vamos a modificar un poco el típico script que nos da Hardhat por defecto, dentro del ejemplo que nos da Hardhat escribimos lo siguiente:
“
const { ethers, upgrades } = require("hardhat");
async function main() {
const Box = await ethers.getContractFactory("Box");
console.log("Deploying Box...");
const box = await upgrades.deployProxy(Box, [42], { initializer: "store" });
await box.deployed();
console.log("Box deployed to:", box.address);
}
main();
“
Lanzamos el siguiente comando y copiamos el address que nos muestra la consola.
“ yarn hardhat node (en una nueva consola) yarn hardhat run [nombreScritp].js --network localhost ”Ahora tenemos el contrato desplegado mediante un Proxy sin que tengamos que haber hecho nada especial más que instalar un par de librerías, guay eh, pues ahora vamos a actualizar mediante ese Proxy el contrato, para ello creamos una nueva versión del SmartContract y del Script. Al nuevo SmartContract lo podemos llamar “Box2” ya que es la segunda versión y este ahora más que guardar un solo valor le vamos a permitir cambiar ese valor incrementándolo al llamar a una función “storeIncrement”.
“
pragma solidity ^0.8.0;
contract Box2{
uint256 private _value;
uint256 private _increments;
event ValueChanged(uint256 value);
function store(uint256 value) public {
_value = value;
emit ValueChanged(value);
}
function storeIncrement(uint256 value) public {
_increments = value;
}
function retrieveIncrement() public view returns (uint256) {
return _increments;
}
function retrieve() public view returns (uint256) {
return _value;
}
function increment() public {
_value = _value + 1;
emit ValueChanged(_value);
}
}
”
Y dentro del script nuevo insertamos:“
const { ethers, upgrades } = require("hardhat");
async function main() {
const BoxV2 = await ethers.getContractFactory("Box2");
console.log("Upgrading Box...");
await upgrades.upgradeProxy(
"[addressContratoDesplegado]",
BoxV2
);
console.log("Box upgraded");
}
main();
”
Simplemente tenemos que lanzar el siguiente comando y ya tendremos actualizado nuestro SmartContract.
“ yarn hardhat run upgrade_box.js --network localhost ”Como veis es una forma relativamente sencilla de actualizar un SmartContract sin tener que cambiar nada de este y sin siquiera saber que es un Proxy en la EVM, pero esto lleva consigo unos contras como por ejemplo no llevar el control real del “layout” del almacenamiento del contrato lo que puede ser catastrófico a la hora de actualizar el contrato a una nueva versión.
2.- Forma difícil:
La anterior herramienta nos ofrece muchas facilidades para actualizar nuestros SmartContracts sin embargo en grandes proyectos necesitamos tener un mayor control y conocimiento sobre el SmartContract y no usar una herramienta que “hace magia” para actualizar los SmartContracts. La solución es utilizar librerías de Solidity que solo añaden código y no modifican nuestro SmartContract. Para después ser nosotros quien realice el despliegue y las actualizaciones para saber en todo momento qué es lo que ocurre.
“
pragma solidity ^0.8.0;
contract Box {
uint256 private _value = 54;
// … rest go above
}
“Podríamos observar que configuramos una variable con un valor por defecto. Lo que hace el compilador a la hora de transformar nuestro SmartContract en Bytecode es añadir una función, llamémosla “firstInit”, que se ejecutará al subir este contrato a la cadena de Blockchain actualizando el valor de las variables al que hayamos especificado, lo mismo sucede con las variables en las que definamos un valor en el constructor.
Ahora os pregunto, imaginando que ya tenemos una versión v1 de nuestro SmartContract desplegado mediante un proxy, si al actualizar el SmartContract (de la lógica, es decir, éste) subiendo uno nuevo que añade otros valores en el constructor, ¿estos nuevos valores tendrán efecto en el proxy que guarda todo el almacenamiento o en el contrato de la lógica en el que no sirve de nada guardar valores dado que estos no se van a usar?
La respuesta es la segunda, estos valores se guardarán en el contrato de la lógica lo que no tiene sentido hacer porque entonces nunca usaremos estas variables, es por ello que a la hora de escribir SmartContracts que van a desplegarse mediante proxy hay que eliminar todas las variables que iniciemos en el constructor o en el cuerpo del contrato. Podemos crear una función que actualice esos valores y llamarla a través del proxy una vez se haya actualizado el contrato para que este tenga efecto:
“
pragma solidity ^0.8.0;
contract Box {
uint256 private _value;
function initialize(){
private_value = 54;
}
}
“
Y lo mismo tenemos que hacer con los contratos grandes. Si usamos estándares ya definidos como el ERC20 o el ERC721 ya existen versiones de estos con los cambios necesarios para actualizarlos mediante proxies, las librerías de Openzeppelin son un buen punto de partida. Si queréis ver cómo se implementan estás aquí os dejo un tutorial.Como podéis ver, el patrón proxy es un patrón complejo que aporta mucha utilidad, pero que para poder mantener esa descentralización es necesario que una comunidad respalde por detrás el proyecto. Nos vemos en los siguientes artículos, pero tienes muchos más artículos sobre este mundo Web3 aquí mismo:
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las "Proof-of-work": Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat "fuera de juego"
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
Publicado por
Chema Alonso
a las
10:26 a. m.
0
comentarios
Etiquetas: bitcoin, criptomonedas, ethereum, fan Tokens, Proxy, SmartContracts, tokenomics, tokens, Web3
lunes, julio 18, 2022
Blockchain & SmartContracts: Actualizar SmartContracts con Patrones Proxy
Pero hoy nos vamos a centrar en los Proxies, que son un patrón que nos permite actualizar completamente la lógica de nuestros contratos usando solamente dos contratos diferentes, cabe destacar que estos dos contratos son inmutables, pero combinándolos podremos actualizar su funcionamiento. La idea básica de su funcionamiento es la siguiente:
Tenemos dos contratos diferentes, el primero el Proxy o Storage que se encargará de guardar en la Blockchain todos los datos del SmartContract. Este contrato siempre será el mismo y nunca cambiará, esto es así dado que mover los datos de un contrato a otro es muy costoso. El segundo el contrato de la lógica, como su nombre nos indica este se encargará de manejar la lógica por la que se regirá el SmartContract, este irá cambiando con el tiempo oséa que crearemos nuevos contratos y cambiaremos éste por los nuevos.
Ahora, en cada interacción que el usuario haga la hará con el contrato Storage y esté a su vez le pasará la llamada al contrato que guarda la lógica y éste modificará la memoria del contrato Storage y no la suya. Ahora imaginemos que queremos actualizar el contrato que utiliza el usuario, pues simplemente subimos un nuevo contrato a la Blockchain que tenga esta lógica nueva y cambiamos en el contrato storage el puntero que redirigía al contrato anterior por el nuevo.
Funcionamiento del Patrón Proxy
Acabamos de ver la idea general y básica sobre cómo funcionan los sistemas proxies en los contratos basados en la EVM, veamos ahora cómo convertir esta idea en algo real. En la EVM (Ethereum Virtual Machine) existe una instrucción llamada delegatecall que funciona de la siguiente manera.
“”” delegatecall(gas, _impl, ptr, calldatasize, 0, 0) “””Cabe notar que en Ethereum las instrucciones de código ensamblador se usan como si fueran funciones y no como “ add bx, 5; “ usado por la mayoría de lenguajes de ensamblador. Esta instrucción nos permite llamar a un contrato externo, igual que la instrucción “ call “. Bien pero, ¿qué diferencia hay entre estas instrucciones? Pues que delegatecall no solamente llama a la función de un contrato externo sino que además pasa todo el contenido guardado en msg.data (parámetros de llamada) y msg.value (ETH enviado).
Además teniendo la peculiaridad de que todas las modificaciones que haga el contrato al que se le delega la llamada no se reflejará en el propio contrato sino que lo hará en aquel que haya ejecutado delegatecall. La instrucción delegatecall recibe cinco parámetros:
- gas: El gas del que va a disponer el contrato al que se le delega la llamada. No siempre este es el máximo posible porque a veces antes de delegar la llamada primero evaluamos unas ciertas condiciones que gastan el gas inicial, por ello es importante calcularlo adecuadamente.
- _impl: El address del contrato hacia el cual delegamos la llamada. En el patrón proxy se le suele llamar implementación.
- prt: Los datos del msg.data que se pasan al nuevo contrato, puede bastar con pasar msg.data en vez de ptr, pero puede que primero necesitemos procesar los datos de entrada. El msg.data acabará convirtiendose en los parámetros que le lleguen al contrato final.
- calldatasize: El valor en bytes de la longitud de memoria que ocupa el msg.data.
- últimos 2 parámetros: Estos dos últimos parámetros no son importantes, solo sirven para que el valor devuelto por el contrato al que se delegue sea acotado entre el rango provisto en esos dos valores.
Implementación en Solidity
Toda esta teoría está muy bien pero veamos cómo podemos implementar todo esto en Solidity. Para ello vamos ha hacer uso de él “inline-assembly” que nos ofrece Solidity para así poder escribir ensamblador dentro del propio código de Solidity.
Antes de explicar que ocurre dentro de la función veamos el contexto de porque esa función. Si nos fijamos bien veremos que no estamos definiendo una función normal, sino una “fallback” esta función tiene un rol muy importante dentro de los SmartContracts basados en EVM, ésta se ejecutará siempre que se llame a un contrato y la función a la que se está llamando no exista en el propio contrato. Si queréis entender en profundidad cómo funciona este sistema de llamadas os recomiendo leer este artículo sobre los selectores de las funciones en la EVM.
Explicacion del codigo:
Lo primero que hacemos es reservar en memoria un espacio en el que poder guardar los datos que se envían junto con la función como parámetros, etcétera. Y ahora os preguntaréis ¿Y cómo accedemos a ellos si no están declarados en la función? Pues en la EVM todos los datos que se envían a una función están guardados dentro de una variable global llamada calldata. Después copiamos al espacio reservado en memoria los datos guardados en calldata. Esto es necesario ya que calldata es un tipo de memoria que no se puede ni modificar ni pasar a otras funciones como parámetros.
Luego delegamos la llamada a un address llamado _impl y le pasamos el calldata que escribimos en memoria, delegatecall nos devolverá un valor boolean que debemos guardar. Y también guardamos en memoria la longitud de la respuesta del delegatecall. Una vez hecho eso, copiamos el espacio reservado en 0 los valores devueltos por 2 y evaluamos si la llamada delegada fue exitosa o no. En caso de que no devolvemos el error que nos tiró el contrato de lógica, sino devolvemos los valores.
Problemas que pueden surgir
Una cosa muy importante a tener en cuenta es cómo se guarda el nuevo almacenamiento que creamos al añadir lógica a un contrato. Veamos primero cómo transforma Solidity su código a instrucciones.
“””
contract storage{
uint256 age = 12;// transforms to sstore(0x00,0xC)
uint256 other = 1; // transforms to sstore (0x40, 0x1)
function modify() external{
age = 13; // transforms to sstore(0x00,0xD)
other = 2; // transforms to sstore(0x40, 0x2)
}
}
“””
A la hora de actualizar este contrato tenemos que tener mucho cuidado de no hacer override de estas variables o podríamos tener un problema bastante serio, miremos el siguiente ejemplo para ver a lo que me refiero.“””
contract storageV2{
uint256 score = 100; // transforms to sstore(0x00,0x64)
uint256 age; // setted in V1 as 0x00 but not is 0x40
uint256 other; // we setted in V1 0x40 but now is in position 0x60
function modify() external{
age = 13; // now it stores age in other slot
other = 2; // now it stores other in a new slot
score = 75; // stores it in the age slot
}
}
“””
Este contrato que trata de actualizar la lógica del contrato anterior está mal, porque lleva a una colisión de almacenamiento. Esto es que cuando tratemos de leer lo que había en age v1 estaremos leyendo lo que había en otro v1 y si leemos other obtendremos 0 dado que no hay datos guardados en el slot nuevo. De manera visual la colisión sería la siguiente:
Y los datos los podemos seguir leyendo porque aunque estén cambiados a fin de cuentas un uint256 es 32bytes con lo que se lee de la misma manera, pero si estuviésemos leyendo un mapping o un string los datos que leeremos no tendrían siquiera sentido alguno. También existen otros tipos de problemas como el de la transparencia para el usuario, control de acceso y actualización. Estos se resuelven de manera un poco más compleja.
¿Descentralización y transparencia?
Es verdad que es muy útil el poder actualizar la lógica de tus contratos por si acaso algún día se encuentra una vulnerabilidad en tu código o simplemente necesitas extender su funcionalidad, pero esto rompe un poco con los principios de inmutabilidad y transparencia. ¿Pero es esto una carencia? ¿De verdad rompe con la descentralización? Os voy adelantando que no, existen mecanismos para mantener descentralizada la propiedad del contrato y sus actualizaciones, pero esto no lo veremos hoy.
![]() |
| Figura 7: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo |
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las "Proof-of-work": Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat "fuera de juego"
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- Blockchain & SmartContracts: Actualizar SmartContracts con Patrones Proxy
Publicado por
Chema Alonso
a las
6:01 a. m.
0
comentarios
Etiquetas: bitcoin, Blockchain, criptomonedas, ethereum, fan Tokens, Proxy, Smart Contracts, SmartContracts, tokenomics, tokens, Web 3
Entrada destacada
Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord
Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...
Entradas populares
-
Un informe de Tech Transparency Project, después del lío con el Jailbreak del Bikini en Twitter/X , y de la masificación de DeepFakes en el...
-
Circula por la red un truco que llegó a mí de casualidad , donde se explica cómo conseguir ver más de una vez - e incluso capturar - las fot...
-
Las técnicas de OSINT son aquellas que te permiten buscar información en fuentes abiertas. O lo que es lo mismo, sacar datos de plataformas...
-
La computación cuántica está avanzando hacia un modelo de consumo en el que la mayoría de los usuarios accederán a los recursos cuánticos a ...
-
Hace mucho tiempo, cuando se creo el " Modo Incógnito " de los navegadores, que algunos llamaron también " Modo Privado ...
-
Continuando con el contenido de la primera parte de este artículo que puedes leer aquí: " Blind Quantum Computing (1) " vamos a ve...
-
Llegados a este punto del artículo, tras lo que se ha tratado en la primera y segunda parte de este artículo , Blind Quantum Computing pu...
-
Ayer publiqué un post que tiene ver con las opciones de privacidad de Facebook asociadas a los correos electrónicos , y mañana sacaré la se...
-
La noticia del 21 de Julio - que ya me pilló con el post de ayer publicado - fue la del incidente de seguridad reportado por OpenAI y Huggi...
-
Hay gente que cree que Google ha alcanzado la perfección con su buscador, pero la realidad es que tienen que mejorar mucho a varios niveles....





DragonJAR
8.8 Chile
Ekoparty
e-Hack MX
AREA 51
Comunidad Dojo Panamá
ARPAHE SOLUTIONS 












































